최근 악성코드 중 인포스틸러
가 극성을 부리면서 암호화하여 저장되는 웹 브라우저의 계정정보를 탈취하는 형태를 띄고 있다.
Chrome Password Manager 는 비밀번호 저장여부 확인 및 자동 로그인 기능을비활성화하여 브라우저 내 중요정보가 저장되지 않도록 유도하여 PC 보안을 강화할 수 있다
다양한 환경에서 스크립트를 실행하기 위해 윈도우 배치파일을 제작하여 사용하는 경우가 많은데, 배치고사 스크립트 보면 머리가 어질어질해서 도무지 집중이 잘 안되더라..
이번 기회에 마음을 먹고 열심히 만들어봤는 Dict 타입
의 환경설정 파일은 부분 수정이 너무 어려웠다.
도저히 배치파일로는 못만들거 같아 Powershell로 하나씩 찾아가면서 만들어 보았다
윈도우 레지스트리
가장 먼저 접근한 방법은 tenforums 처럼 대부분 Windows Registry
값을 변경하면 된다고 나와있으며 11~15년도 게시글인 점, 현재의 Chrome 브라우저 레지스트리에 아래의 값은 존재하지 않았다.
▽ Disable Chrome Password Manager Registry
```
Registry 경로
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
PasswordManagerEnabled DWORD
delete = Enable (available)
0 = Disable
1 = Force
```
그럼 다른 레지스트리가 있나?
Regshot
과 Process Monitor
로 Chrome 설정 조작에 따라 변경되는 레지스트리가 있는지 확인해보았으나 복잡하게 꼬여만 갔다.
아래 이미지를 보면 \user_experience_metrics.stability.exited_cleany: 0x00000001
값의 변화를 추적하였으나 브라우저 종료 시 상태 값이 변경되는 것으로 확인했다.
레지스트리 값의 변경이 없다? 그럼 설정파일을 참조하나?
▽ 레지스트리 추적 로그
설정파일을 찾아라
영훈형이 보내준 링크 Batch to disable autofill and ask to save passwords in Chrome 글의 답변을 보면
I found a solution to my problem. It's a kind of work'a'round
First I disabled autofill and autosave password in chrome, and after that I saved the preference-file.
Now I just have to copy the preference-file to another chrome-installation.
즉 자동완성 기능이 비활성화된 preference-file
을 Copy/Paste하는 방법을 했으나 너무 불편해보였고;; 도대체 그 환경설정 파일은 어디서 찾아야 할까? 하며 삽질을 시작했다..
※ 브라우저 로그인하여 동기화 작업 시 설정파일을 호출할 수 있으나
오프라인 내보내기 기능은 제공하지 않는 것으로 보인다.
AppData 경로 이하 Chrome 관련 파일이 존재하지 않을까 추측하여 찾아본 결과
preference
파일을 찾을 수 있었다.
또한, 자동완성 기능을 On/Off 해가며 WinMerge
도구로 Preference 파일의 값을 비교하였고 마침내 찾아냈다.
1) credentials_enable_service
2) credentials_enable_autosignin
이제 이 값들을 바꿔주는 스크립트만 제작하면 끝이다!!
Chrome 동작확인
크롬이 실행되어 있을 경우 환경설정 파일이 변경되더라도 크롬 종료 시 상태값이 다시 바뀔 수 있으므로..
if(tasklist | findstr chrome){
Write-Host "[X] Chrome이 실행중입니다" -ForegroundColor red -BackgroundColor black
Start-Sleep -Seconds 2
Exit
}
바탕화면에서 실행
: 배치에서는 set user
로 USERNAME을 받을 수 있으나, Powershell에서는 quser
, Get-LocalUser
로 받긴 하는데 문자열 처리가 미숙하여 실행경로를 바탕화면 으로 지정했다.
if($path -like "*desktop*"){
Write-Host "[1] 프로그램을 시작합니다"
} else {
Write-Host "[X] 바탕화면에서 실행해주세요.."
Start-Sleep -Seconds 2
Exit
}
크롬 환경설정 파일
: AppData\Local\Google\Chrome\User Data\Default
경로에 Preferences
파일이 있으면 아래 두 기능의 Boolean 값을 True
→ False
로 변경한다.
if(Test-Path -Path '..\AppData\Local\Google\Chrome\User Data\Default\Preferences'){
$configFile = Get-Content $file `
| %{$_ -replace('"credentials_enable_service":true', '"credentials_enable_service":false')} `
| %{$_ -replace('"credentials_enable_autosignin":true', '"credentials_enable_autosignin":false')}
Set-Content -Path $file -Value $configFile -Encoding utf8
} else {
Write-Host "[X] Preferences 파일이 존재하지 않습니다" -ForegroundColor red -BackgroundColor black
Start-Sleep -Seconds 2
Exit
}
@echo off
FOR /F "tokens=2 delims='='" %%A IN ('set user ^| findstr USERNAME') do set PCNAME=%%A
SET PATH=C:\Users\%PCNAME%\AppData\Local\Google\Chrome\User Data\Default\
SET FILE=Preferences
CD %PATH%
ECHO %FILE%
ECHO.
IF EXIST %FILE% (
GOTO goTrue
) ELSE (
GOTO goFalse
)
:goTrue
ECHO 크롬 환경설정 파일이 존재합니다
FOR /F "tokens=24 delims=," %%i in (%FILE%) do echo 자동 로그인: %%i
FOR /F "tokens=25 delims=," %%t in (%FILE%) do echo 비밀번호 저장 여부 확인: %%t
ECHO 환경설정 치환 진행합니다
set configAutoSignin_true="credentials_enable_autosignin":true
set configAutoSignin_false="credentials_enable_autosignin":false
FOR /F %%B in (%FILE%) do (
FOR /F "tokens=24 delims=," %%C in (%FILE%) do (
if %%C equ %configAutoSignin_true% (
echo %configAutoSignin_false% >> ryu.txt
)
)
echo %%B >> ryu.txt
)
pause
:goFalse
ECHO 크롬 환경설정 파일이 존재하지 않습니다
EXIT