일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Injection
- pytest
- malware
- why error
- Ransomware
- idb2pat
- data distribution
- open office xml
- debugging
- x64
- h5py.File
- javascript
- error
- Python
- idapro
- ecma
- commandline
- MySQL
- ida
- NumPy Unicode Error
- mock.patch
- svn update
- error fix
- TensorFlow
- ida pro
- 포인터 매핑
- Analysis
- idapython
- hex-rays
- Rat
- Today
- Total
13 Security Lab
[스크랩] 악성코드가 이용하는 Windows Registry 정보 본문
[스크랩] 악성코드가 이용하는 Windows Registry 정보
Maj0r Tom 2014. 5. 24. 19:27원출처 : http://yeoungpc.tistory.com/18
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
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
- USB 같은 이동형 저장장치에 대해 Autorun 설정을 합니다. (0xFF로 설정 시 Block, 0x00으로 설정 시 모두 허용)
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 NT\CurrentVersion\Image File Execution\Options\calc.exe
Debugger = notepad.exe
- 계산기 실행 시 노트패드로 전환되어 실행. (AV 실행을 막거나, 포렌직 툴 실행을 막기위해 변조함)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer
DisableLocalMachineRunOnce=1:DWORD
DisableLocalMachineRun=1:DWORD
DisableCurrentUserRunOnce=1:DWORD
DisableLocalMachineRun=1:DWORD
- 이러한 키가 설정되면 시작프로그램에 등록된 프로그램이 실행이 안됨.
HKLM\SOFTWARE\Classes\exefile\shell\open\command
@="soundmix \"%1\" %*"
- soundmix 프로세스를 KILL 하여도 계속적으로 재실행
HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel
- 해당 키 안에 ResetWebSettings 값이나 HomePage 값이 있으면 시작 페이지 부분 비활성화. (재부팅이 필요 합니다)
[HKEY_CURRENT_USER\Software\Policies\Microsoft\internet explorer\restrictions]
"NoBrowserOptions"=dword:00000001
- 인터넷 옵션 실행불가 관련 레지스트리
[HKCU
"AdvancedTab"=dword:00000001
"PrivacyTab"=dword:00000001
"ProgramsTab"=dword:00000001
"ConnectionsTab"=dword:00000001
"ContentTab"=dword:00000001
"SecurityTab"=dword:00000001
"GeneralTab"=dword:00000001
- 역시 인터넷 옵션 실행불가 관련 레지스트리
HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\MaxUserPort
- 윈도우에서 허용하는 네트워크 연결 개수 수정(주로 Spamer가 변조)
[HKLM\SYSTEM\ControlSet001\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries\00000000000*]
"PackedCatalogItem" 이진값 문자열에 악성코드가 삽입되어 있을 경우 네트워크가 정상적으로 동작하지 않음.
netsh winsock show catalog 명령어로 확인 가능, 복구툴 : http://www.cexx.org/lspfix.htm
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
- 익명연결(널세션)에 해당 하는 값을 변경
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\policies\ActiveDesktop\
윈도우 시작시 자동실행 - Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ ”Attack” = “%System%\Attack.exe” ”Attack” = “%System%\Attack.exe” |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
==> 윈도우가 시작할때 동작할 수 있는 레지스트리.
윈도우 시작시 자동실행 - RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ ”Attack” = “%System%\Attack.exe” |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
==> 윈도우가 시작할때 동작할 수 있는 레지스트리.
윈도우 시작시 자동실행 - RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices\ ”Attack” = “c:\windows\Attack.exe” |
윈도우 시작시 자동실행 - Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ "Shell" = "Explorer.exe %System%\attack.exe" |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"Shell"
원래는 Explorer.exe 만 있는게 정상이다. explorer.exe 로 사용자와 컴퓨터간의 대화를 할 수 있게 한다.
여기에 악성코드 경로를 넣어주면, 사용자가 명령을 할 때마다 악성코드가 실행되는 것이다.
윈도우 시작시 자동실행 - Userinit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ "Userinit" = "%System%\userinit.exe, %System%\attack.exe" |
원래는 "%System%\userinit.exe만 있는게 정상이다.
부팅이 되고,, winlogon 이 실행되서 로그인을 하고 들어가면, userinit 가 실행이 되서 explorer.exe 를 실행하는 것이다.
요런 흐름인데 explorer.exe 가 실행되기 전에 악성코드가 실행되어 버리니..
백신도 진단을 못할 수도 있는법이다~
윈도우 시작시 자동실행 - Taskman
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ "Taskman" = "%SystemDrive%\RECYCLER\[SID]\attack.exe" |
원래는 Taskman 이라는 값이 없다.
윈도우 시작시 자동실행 - Active Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\ |
정상파일 : system32 폴더 ==> iedkcs32.dll /ie4uinit.exe / ieuddinit.exe / shmgrate.exe
advpack.dll / mscories.dll / themeui.dll / shell32.dll
c:\program files\outlook express\setup50.exe
c:\windows\inf\unregmp2.exe
{5Y99AE78-58TT-11dW-BE53-Y67078979Y} 는 악성코드..
DLL Injection 을 위한 변경 - AppInit_DLLs
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\ "AppInit_DLLs" = "악성코드경로\attack.dll" |
DLL Injection 이라는 것은 여러가지 방법이 있는데 그중 한 방법이다.
레지스트리에 위와 같이 등록이 된다면, 어떠한 프로세스에서 user32.dll (실행시 필요) 을 호출할 시에 user32.dll 은 LoadLibrary() 함수를 이용할 것이고, AppInit_DLLs 안에 지정된 DLL 들을 호출할 것이다.
LoadLibrary() 함수에는 인자값이 DLL_PROCESS_ATTACH 를 지정해 준다. 그러므로 중간에 끼어들어갈 수 있다.
DLL Injection - InprocServer32
HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\InprocServer32\ "기본값" = "....\attack.dll" |
이것은 attack.dll 에 있는 값을 얻어 컴포넌트 파일의 경로를 알아낸다.
즉.. LoadLibrary() 를 호출하면 (user32.dll 사용시) 클라이언트 프로세스 안에 DLL 컴포넌트를 로드시킨다.
DLL Injection - RemoteAccess
HKEY_LOCAL_MACHINE\System\CurrentControlSet\RemoteAccess\Parameters "ServiceDLL" = "....\attack.dll" |
서비스에서 Routing and Remote Access 를 가로챈다.
정상적인 값은 %SystemRoot%System32\mprdim.dll 이다.
윈도우 시작시 자동실행 - Active Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{12345678-1234-1234-1234-123456789101(임의의번호)}\ "StubPath" = "%SystemDrive%\RESTORE\[SID]\악성코드.exe" |
위의 경로에서 c:\RESTORE\[SID]\ 에는 Desktop.ini 가 같이 존재하여 두개가 유기적으로 동작한다.
서비스 변경
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\[Service Name]\ "Start" = 3 |
2 = 자동 / 3 = 수동 / 4 = 사용안함
정상적인 서비스의 레지스트리 값을 조정한다.
IFEO 값 변경
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\악성코드.exe\"Debugger" = "ntsd -d" |
프로그램이 실행되면 위 경로로 가기 때문에 파일들이 실행이 되지 않는다.
정상적인 것은 c:\windows\system32\ntsd.exe ..
나머지는 Debugger 값이 없다.
BHO 값 변경 - Browser Helper Objects
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\ [Random CLSID]\"기본값" = "%Windir%\attack.dll"
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\ [Random CLSID]\"기본값" = "%Windir%\attack.dll" |
BHO 는 개발자들이 인터넷 익스플로러를 제어하고 사용자가 원하는대로 바꾸도록 지원해 주는 것이다.
인터넷 익스플로러가 시작될 때, 레지스트리에서 BHO 를 찾고 자동으로 생성한다. 그러므로 이 특징을 이용해 악의적인 행위를 한다.
안전모드에서 부팅 못하게..
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\SafeBoot\ |
악성코드는 위의 키를 아예 삭제해 버린다.
방화벽 우회 - 방화벽 내리기
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001(&ControlSet002&CurrentControlSet)Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile "EnableFirewall" = 0 |
EnableFirewall 의 값은 원래부터 있는 값은 아니고, 윈도우 방화벽을 내리면 생기는 키값이다.
위의 방법으로 윈도우 방화벽을 우회한다.
다른 우회 방법도 있다. 아래를 참고하자.
방화벽 우회 - 악성코드 권한주기
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List\ %Windir%\system32\"attack.exe" = "%Windir%\system32\attack.exe:*:Enabled:@xpsp2res.dll,-22019" = "Explorer.exe %System%\attack_1.exe" |
ControlSet002 / CurrentControlSet 도 마찬가지 이다.
그리고 위에서는 보라색 글자와 같이 DomainProfile 에서 바꾸어 주었는데 이곳이 아닌 StandardProfile 에서도 바꾸어 준다.
뭐.... 워낙 영어에 취약한 지라.. 한글로 풀어써서 이해를 하였다.
서비스\공유접근\매개변수\방화벽정책\사용자프로파일\권한응용프로그램\목록\
오호~ 방화벽 정책에서 악성코드에 권한을 주는구만? 이라고.. 난 해석하였다.ㅋ
트레이의 말풍선 도움말 설정
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ "EnableBalloonTips" = "1" |
위의 내용은 허위로 안내 도움말을 하기 위해 켜놓은 것이다. 원래의 값은 0이다. 보통 허위안티바이러스에서 많이 사용을 한다.
사용자에게 지속적으로 감염되었다고 알려주어 겁주고 결제 요구한다...
EnableBalloonTips ==> 표시줄 트레이의 풍선 도움말
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
작업관리자 사용금지하게 하는 것
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\ "DisableTaskMgr" = "1" |
Task Manager 를 비활성화 시킨다. 이것은 우리가 흔히 알고 있는 작업관리자이다.
작업관리자(Ctrl+Alt+Del)가 뜨지 않는다면 요 레지스트리가 1로 되어있기 때문에 뜨지 않는 것이다.
악성코드들은 자기자신을 은폐하려 들기 때문에 작업관리자를 사용하지 못하도록 한다.
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
제어판 사용 금지
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ "NoControlPanel" = "1" |
NoControlPanel 은 제어판에 사용자가 접근하는 것을 제한하는 것이다.
이것을 1로 설정해 놓으면 제어판을 열수가 없다.
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.
레지스트리 사용 금지
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\ "DisableRegistryTools" = "1" |
Disable (무능력하게 하다) RegistryTools (레지스트리툴을)
레지스트리 툴 사용을 무능력하게 하여, 사용자의 접근을 막는다.
업데이트 사용 금지 - HKLM
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU\ "NoAutoUpdate" = "1" |
자동 업데이트를 막는다.
업데이트 사용 금지 - HKCU
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ "NoWindowsUpdate" = "1" |
보호된 운영체제 파일 숨기기 - 폴더 옵션
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden "Type" = "nonprintable characters" |
악성코드 자신을 보호하고 파일을 숨기면 사용자는 악성코드에 접근할 수 없다. 그러므로 이 레지스트리 값을 이용하여 자신에게 접근을 보호한다.
Type 값에 이상한 글자를 넣게 된다면.. 폴더 옵션에서 아예 메뉴가 나오지 않는다.
다운시 보안 팝업창 무력화
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download "CheckExeSignatures" = "no" |
인터넷에서 다운로드를 해 실행을 하면 경고창을 띄우는 것을 우리는 알고 있다.
그러나 위의 레지값을 변경하면 경고창 없이 설치가 되버린다.
exe 파일이 열리지 않을때 - 프로그램 선택하라는 창이 나올 때
HKEY_CLASSES_ROOT\exefile\shell\open\command\ "기본값" = ""악성코드경로" /START "%1" %*" | HKEY_CLASSES_ROOT\exefile\shell\open\command\ "기본값" = "%1" %* |
HKEY_CLASSES_ROOT\.exe\ "기본값" = "secfile" | HKEY_CLASSES_ROOT\.exe\ "기본값" = "exefile" |
secfile 값을 exefile 로 고쳐준다.
HKEY_CLASSES_ROOT\.exe\shell\open\command\ "기본값" = ""악성코드경로" /START "%1" %*" | HKEY_CLASSES_ROOT\.exe\shell\open\command\ "기본값" = "%1" %* |
키를 삭제해주어도 무방.
HKEY_CLASSES_ROOT\secfile\shell\open\command\ "기본값" = ""악성코드경로" /START "%1" %*" | HKEY_CLASSES_ROOT\secfile\shell\open\command\ "기본값" = "%1" %* |
키를 삭제해주어도 무방.
악성코드는 secfile 이라는 것을 만들어 exe 가 실행되면 자신이 만들어 놓은 레지스트리 대로 행동하게 한다.
오른쪽 값들처럼 복구를 해주어야 한다.
아래 표와 같이 레지스트리를 생성하는 경우도 있다. 그럴 때는 이 키들을 삭제해주어야 한다.
HKEY_CURRENT_USER\Software\Classes\.exe\shell\open\Command\ "기본값" = "악성코드 경로" /START "%1" %*
HKEY_CURRENT_USER\Software\Classes\secfile\shell\open\Command\ "기본값" = "악성코드 경로" /START "%1" %* |
간혹,,, 아래 표와같은 레지스트리 변경건도 있을 수 있다.
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\Command\ "기본값" = "악성코드 경로" /START "C:\Program File\MozillaFirefox\firefox.exe"
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\safemode\Command\ "기본값" = "악성코드 경로" /START "C:\Program File\MozillaFirefox\firefox.exe" -safe-mode
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\Command\ "기본값" = "악성코드 경로" /START "C:\Program File\InternetExplorer\iexplore.exe" -safe-mode |
위 레지스트리 값은 삭제해준다.
익스플로러 검색 기본값 변경
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\ "Default_Search_URL" = "정상적인 것은 microsoft 주소가 적혀 있어야함" |
익스플로러 검색 페이지 변경
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\ "Search page" = "정상적인 것은 microsoft 주소가 적혀 있어야함" |
익스플로러 시작 페이지 변경
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\ "Start Page" = "정상적인 것은 microsoft 주소가 적혀 있어야함" |