본문 바로가기
리버싱

악성코드가 사용하는 레지스트리 정보 (펌)

by dladbru 2018. 7. 23.

레지스트리란

레지스트리는 시스템, 사용자, 프로그램, 서비스, 드라이버 등 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 성격로드 순서
KnownDllssystem32->실행파일폴더
일반 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\DisableCMD HKLM\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 레지스트리를 접근해 값을 수정하기에 검색을 했었더니 이렇게 멋지게 정리해둔분의 자료가 있어서 퍼오게 되었다. 악성코드 분석가의 입장에서 아무리 분석을 잘해도 레지스트리를 모두다 기억하는것에는 무리가 있다..

반응형

댓글