레지스트리란
레지스트리는 시스템, 사용자, 프로그램, 서비스, 드라이버 등 PC 운용에 반드시 필요한 정보들을 저장해둔 일종의 설정값의 모임이라 볼 수 있다. 과거에는 .ini 파일을 사용하여 이런 설정 정보를 저장했는데 파일이 여러 곳에 나눠져 있어 한곳에 모을 필요가 있었고, 그에따라 생긴 기능이라고 한다.
<Figure 0. 레지스트리 편집기의 모양새와 줄일말>
흔히 regedit.exe 를 통해접근하는 윈도우 레지스트리는 실제론 하이브 파일에 저장되어있다. 하이브 파일은 여러 폴더에 분산 저장되어 있고, 휘발성 비휘발성 등 여러 특징들이 있다.
이 포스트에서는 여러 레지스트리 중, 악성코드들이 접근할 만한 레지스트리에 대해 중점적으로 다룬다.
레지스트리 표현 방법
regedit.exe 의 내보내기 기능을 활용하면 .reg 파일이 생성된다. 이 파일을 메모장으로 열어보면 아래와 같은 포맷을 확인할 수 있다.
[PATH\TO\MY\REGKEY]
"값이름"="값"
생성된 .reg 파일의 내용과 동일한 형식을 지킨다면, 메모장으로도 레지스트리를 수정하는 스크립트를 만들어 줄 수 있다. 예를들면 아래와 같다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\RouterManagers]
"Dllpath"="%WINDIR%\system32\abc.dll"
레지스트리는 폴더의 역할을 하는 Key와 해당 Key 안에 있는 파일 역할의 Value 로 이뤄져 있다. 많은사람이 Value 가 가진 이름을 Key 라고 착각하는 실수를 저지르지만. Value 는 데이터의 이름과 데이터 모두를 일컫는 말이다. 파일이 파일명과 파일 내용이 있는 것처럼, 파일명과 폴더명을 혼동하지 않는다면 Key와 Value도 이해하기 쉬울듯 하다.
단축 이름
보통 키 이름을 짧게 표현하기 위해 루트 키(최상위 키)이름을 많이 줄여서 사용한다. HKCR 같은 키가 보인다면, HKEY_CURRENT_USER 로 해석할 수 있다. 보다 자세한 사항은 MSDN 에서 확인할 수 있다.
DLL 로드순서 변경하기
HKLM\System\CurrentControlSet\Control\Session Manager\ExcludeFromKnownDlls
Dll 성격 | 로드 순서 |
---|---|
KnownDlls | system32->실행파일폴더 |
일반 Dll | 실행파일폴더->system32 |
JIT(Just In Time) 디버거 설정하기
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
디버깅 대상 프로세스 파일명으로 키 추가
“debugger(REG_SZ)” = “PATH\TO\DEBUGGER\debuger.exe”
탐색기 폴더 옵션의 파일 숨김 속성
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue
탐색기 보기옵션 체크박스 활성/비활성
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\UncheckedValue
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\CheckedValue
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\DefaultValue
Autorun.inf 설정
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
USB 같은 이동형 저장장치에 대한 Autorun 설정 (0xFF 는 Block, 0x00 는 모두허용)
확장자별 실행 프로그램 변경하기
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.txt
regedit.exe cmd.exe taskmgr.exe 실행 방지
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCMDHKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\”NoControlPanel” = “1”
제어판 관련
HKCU\Control Panel\don’t load\”access.cpl” = “No”
HKCU\Control Panel\don’t load\”appwiz.cpl” = “No”
HKCU\Control Panel\don’t load\”hdwwiz.cpl” = “No”
HKCU\Control Panel\don’t load\”inetcpl.cpl” = “No”
HKCU\Control Panel\don’t load\”intl.cpl” = “No”
HKCU\Control Panel\don’t load\”joy.cpl” = “No”
HKCU\Control Panel\don’t load\”main.cpl” = “No”
HKCU\Control Panel\don’t load\”ncpa.cpl” = “No”
HKCU\Control Panel\don’t load\”netcpl.cpl” = “No”
HKCU\Control Panel\don’t load\”nusrmgr.cpl” = “No”
HKCU\Control Panel\don’t load\”timedate.cpl” = “No”
HKCU\Control Panel\don’t load\”joy.cpl” = “No”
자동실행 관련
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\SOFTWARE\Classes\exefile\shell\open\command
@=”soundmix \”%1\” %*”
soundmix 프로세스를 KILL 하여도 계속적으로 재실행
바탕화면 wallpaper 관련
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\ActiveDesktop\
HKLM\SYSTEM\CurrentControlSet\services\AppMgmt\Parameters
“DLL” = “dll파일 경로”
자동실행 목적, 그룹정책을 통해 배포된 소프트웨어에 대한 설치, 제거 및 열거 요청을 하는 레지스트리(AppMgmt, Application Management 서비스)
수정 전 원래는 appmgmts.dll값이 있어야 한다
시작프로그램 관련
HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer
“DisableLocalMachineRunOnce” = “1” (DWORD)
“DisableLocalMachineRun” = “1” (DWORD)
“DisableCurrentUserRunOnce” = “1” (DWORD)
“DisableLocalMachineRun” = “1” (DWORD)
위의 키 설정시 시작프로그램에 등록된 프로그램이 실행이 안됨.
인터넷 익스플로러, IE
HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel
해당 키 안에 ResetWebSettings 값이나 HomePage 값이 있으면 시작 페이지 부분 비활성화 (재부팅 필요)
HKEY_CURRENT_USER\Software\Policies\Microsoft\internet explorer\restrictions
“NoBrowserOptions” = “1” (DWORD)
인터넷 옵션 실행불가 관련 레지스트리
HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel
“AdvancedTab”=dword:00000001
“PrivacyTab”=dword:00000001
“ProgramsTab”=dword:00000001
“ConnectionsTab”=dword:00000001
“ContentTab”=dword:00000001
“SecurityTab”=dword:00000001
“GeneralTab”=dword:00000001
역시 인터넷 옵션 실행불가 관련 레지스트리
HKLM\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy
보호모드에서 외부app이나 확장을 실행할때 경고창 안뜨게 한다
\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\
웹페이지 열때 해당 앱이 사용하는 에뮬레이션 모드를 지정한다(플래그값, MSDN 참조)
Software\Microsoft\Internet Explorer\TypedURLs
IE의 URL 캐쉬를 지운다
Router and Remote Access Service 서비스 실행모듈
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\RouterManagers\Ip
“Dllpath” = “PATH\TO\MALICIOUS\DLL\mal.dll” (REG_SZ)
PC가 라우터 기능을 수행하기 위한 모듈의 위치, PC가 서버군일 경우 라우팅 서비스를 감염시켜 파밍사이트로 유도가능
윈도우 보안 정책 관련
HKLM\SYSTEM\ControlSet001\Services\wscsvc\Start
wscsvc : 윈도우 시큐리티 보안센터, 윈도우 시큐리티 보안센터 시작을 꺼버린다
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\EnableLUA
윈도우 VISTA UAC 기능 무효화
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DoNotAllowExceptions
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
윈도우 방화벽 관련 정책 변경
HKLM\SOFTWARE\Microsoft\Ole\EnableDCOM
분산 컴포넌트 객체 모형에 해당하는 값을 변경 [DCOM, Distributed Component Object Model]
HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusDisableNotify
보안센터 바이러스 백신 경보에 해당하는 값을 변경
HKLM\SOFTWARE\Microsoft\Security Center\FirewallDisableNotify
보안센터 바이러스 사용자지정 백신에 해당하는 값을 변경
HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusOverride
보안센터 바이러스 방화벽 경보에 해당하는 값을 변경
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Start
연결공유서비스에 해당하는 값을 변경한다.
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous
익명연결(널세션)에 해당 하는 값을 변경
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
“NoWindowsUpdate” = “1”
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU\
“NoAutoUpdate” = “1”
자동 업데이트를 막는다.
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\SafeBoot\
안전모드 부팅
퍼온곳 링크: http://www.reversenote.info/
퍼오게 된 계기는 악성코드가 EnableLua 레지스트리를 접근해 값을 수정하기에 검색을 했었더니 이렇게 멋지게 정리해둔분의 자료가 있어서 퍼오게 되었다. 악성코드 분석가의 입장에서 아무리 분석을 잘해도 레지스트리를 모두다 기억하는것에는 무리가 있다..
'리버싱' 카테고리의 다른 글
멜론 dcf 파일 drm해제해서 mp3으로 변환했따. (16) | 2018.09.05 |
---|---|
운영체제에 따른 함수 호출 인자 정보 (0) | 2018.08.17 |
x32 themida binary debugging in x64 machine 2부 (14) | 2018.05.10 |
응용프로그램에서 출력되는 https 패킷 까기 (0) | 2018.03.07 |
D3D 후킹? 월핵? 원리가 뭔데? (4) | 2018.02.06 |
댓글