Chapter 4. Malware II
1. Registry
- Windows System에서 사용하는 System 구성 정보를 저장한 Database
- Windows Registry Editor : 실행 → 'regedit'
- Registry Editor의 Directory와 Windows Explorer의 비교
· KEY : Folder
· VALUE : File Name
· DATA : Data
- HIVE KEY
· Registry Editor에서 가장 상위에 있는 Key
· HIVE KEY의 종류
◦ HKEY_CLASSES_ROOT
▹ Windows 확장자 및 연결 Program 정보
◦ HKEY_CURRENT_USERHKEY_LOCAL_MACHINE
▹ Login한 사용자와 관련된 정보
◦ HKEY_LOCAL_MACHINE
▹ 현재 System에 대한 설정 정보
◦ HKEY_USERS
▹ System의 모든 사용자 계정에 대한 정보
◦ HKEY_CURRENT_CONFIG
▹ Hardware와 관련된 정보
2. Registry를 변경하는 Malware
- Malware를 실행 시 System의 Registry를 변경하는 원리의 Malware
- Registry 변경의 예
· System 시작 시 Program 실행
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\Current Version\Run or RunOnce
▹ 문자열 값(VALUE) 생성 : [Excute Program Name]
▸ 입력 값 : [실행하고자 하는 Program 경로]
▹ Run : System 시작 시 매번 Program 실행
▹ RunOnce : 설정 이후 System 시작 시 한번만 Program 실행
▹ 설정한 내용은 'msconfig'에서 확인할 수 있다.
▹ 실행하고자하는 Program 경로를 Malware Program으로 설정한다면 악성코드를 System이 시작할 때마다 실행시킬 수 있다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\Current Version\winlogon
▹ 문자열 값(VALUE) 편집 : Shell
▸ 입력 값 : Explorer [실행하고자 하는 Program 경로]
▹ 설정한 내용은 'Explorer'내에서 실행되기 때문에 'msconfig'에서 확인할 수 없다.
▹ 실행하고자하는 Program 경로를 Malware Program으로 설정한다면 악성코드를 System이 시작할 때마다 실행시킬 수 있다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\Current Version\winlogon
▹ 문자열 값(VALUE) 편집 : Userinit
▸ 입력 값 : C:\WINDOWS\system32\userinit.exe,[실행하고자 하는 Program 경로]
▹ 실행하고자하는 Program 경로를 Malware Program으로 설정한다면 악성코드를 System이 시작할 때마다 실행시킬 수 있다.
▹ Data에 넣어둔 실행 File이 먼저 실행되고 그 Program이 종료되야 바탕화면이 나타난다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components
▹ 새 KEY 생성
▸ {[8자리]-[4자리]-[4자리]-[4자리]-[12자리]}
▸ 생성 예시 : {12345678-1234-1234-1234-123456789012}
▹ 생성한 KEY 내에 문자열 값(VALUE) 추가 : StubPath
▸ 입력 값 : [실행하고자 하는 Program 경로]
· 안전모드 Boot 차단
◦ ControlSet001과 ControlSet002의 'Saftyboot'를 모두 삭제 시 안전모드 Boot가 차단된다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\ControlSet001\Saftyboot
▹ Saftyboot KEY 삭제
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\ControlSet002\Saftyboot
▹ Saftyboot KEY 삭제
· 방화벽 사용 해제
◦ 경로 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
▹ DWORD 값(VALUE) 생성 : EnableFirewall
▸ 입력 값 : 0
◦ 경로 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess
▹ 이진 값(VALUE) 편집 : start
▸ 입력값
▫ 2 : 자동
▫ 3 : 수동
▫ 4 : 사용안함
· 방화벽 예외 등록
◦ 경로 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedAPP
▹ 문자열 값(VALUE) 생성 : [실행하고자 하는 Program 경로]
▸ 입력 값
▫ [경로] : [범위] : [예외 지정 Class] : [Service Name]
▪ 경로 : 실행하고자하는 File의 경로를 입력
▪ 범위 : 방화벽 예외를 적용시킬 범위(All : *)
▪ 예외 지정 Class : 방화벽 예외를 지정할 Class(ex. Enable)
▪ Service Name : Program을 실행 시 Process의 이름으로 사용할 Service Name
▫ 입력 값 예 : 'c:\attack.exe' : * : Enable : Attack
· 말풍선 없애기
◦ 경로 : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
▹ DWORD 값(VALUE) 생성 : EnableBalloonTips
▸ 입력 값 : 0
· Program 차단
◦ HKEY_CURRENT_USER와 HKEY_LOCAL_MACHINE의 'Polices' Key 내에 값을 모두 생성해야한다.
◦ 경로 : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
▹ DWORD 값으로 생성해야하며 각 Program 별로 생성해줘야 하는 KEY와 DWORD 값이 다르다.
▹ 생성 값의 예
▸ 작업관리자
▫ DWORD 값(VALUE)을 생성할 KEY : System
▫ DWORD 값(VALUE) 생성 : DisableTaskMgr
▪ 입력 값 : 1
▸ Registry Editor
▫ DWORD 값(VALUE)을 생성할 KEY : System
▫ DWORD 값(VALUE) 생성 : DisableRegistryMgr
▪ 입력 값 : 1
▸ 제어판
▫ DWORD 값(VALUE)을 생성할 KEY : Explorer
▫ DWORD 값(VALUE) 생성 : NoControlPanel
▪ 입력 값 : 1
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
▹ DWORD 값으로 생성해야하며 각 Program 별로 생성해줘야 하는 KEY와 DWORD 값이 다르다.
▹ 생성 값의 예
▸ 작업관리자
▫ DWORD 값(VALUE)을 생성할 KEY : System
▫ DWORD 값(VALUE) 생성 : DisableTaskMgr
▪ 입력 값 : 1
▸ Registry Editor
▫ DWORD 값(VALUE)을 생성할 KEY : System
▫ DWORD 값(VALUE) 생성 : DisableRegistryMgr
▪ 입력 값 : 1
▸ 제어판
▫ DWORD 값(VALUE)을 생성할 KEY : Explorer
▫ DWORD 값(VALUE) 생성 : NoControlPanel
▪ 입력 값 : 1
· Volume Drive 숨기기 & 접근 차단
◦ HKEY_CURRENT_USER와 HKEY_LOCAL_MACHINE의 'Explorer' Key 내에 값을 모두 생성해야한다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
▹ Drive 접근 차단
▸ DWORD 값(VALUE) 생성 : NoViewOnDrive
▫ 입력 값 표현법
▪ '2ⁿ⁻¹'로 표현되며 n 값이 1부터 A, B, C, D 순으로 이어진다.
▪ 예 : 1=A, 2=B, 3=C etc.
▹ Drive 숨기기
▸ DWORD 값(VALUE) 생성 : NoDrive
▫ 입력 값 표현법
▪ '2ⁿ⁻¹'로 표현되며 n 값이 1부터 A, B, C, D 순으로 이어진다.
▪ 예 : 1=A, 2=B, 3=C etc.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
▹ Drive 접근 차단
▸ DWORD 값(VALUE) 생성 : NoViewOnDrive
▫ 입력 값 표현법
▪ '2ⁿ⁻¹'로 표현되며 n 값이 1부터 A, B, C, D 순으로 이어진다.
▪ 예 : 1=A, 2=B, 3=C etc.
▹ Drive 숨기기
▸ DWORD 값(VALUE) 생성 : NoDrive
▫ 입력 값 표현법
▪ '2ⁿ⁻¹'로 표현되며 n 값이 1부터 A, B, C, D 순으로 이어진다.
▪ 예 : 1=A, 2=B, 3=C etc.
· Internet Page 변경
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main
▹ Internet Start Page 변경
▸ 문자열 값(VALUE) 편집 : Start Page
▫ 입력 값 : [변경하고자 하는 URL]
▹ Internet Serch Page 변경
▸ 문자열 값(VALUE) 편집 : Search Page
▫ 입력 값 : [변경하고자 하는 URL]
· DLL Injection
◦ 해당 경로에 등록된 DLL은 'user32.dll'의 'DLL_PROCESS_ATTACH'과정에서 'LoadLibrary()'함수를 사용해 Load되기 때문에 'user32.dll'을 사용하는 모든 Application에 의해 Load 된다.
◦ 해당 DLL에 문제가 있을 경우 주요 Process가 오작동하게 되어 Windows System이 Boot되지 않을 수 있으니 주의해야한다.
◦ 경로 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows
▹ 문자열 값(VALUE) 편집 : AppInit_DLLs
▸ 입력 값 : ['user32.dll'에 Load 시킬 DLL 경로]
▹ DWORD 값(VALUE) 편집 : LoadAppInit_DLLs
▸ 입력 값 : 1
- Process Monitor Tool
· Process Monitor
◦ Registry 값을 수정하는 Process를 추적할 수 있는 도구이다.
- Registry를 변경하는 Malware의 예
· 함수를 이용해 Registry를 수정하고 while 함수와 Windows API의 함수를 이용해 MessageBox를 계속해서 출력시키는 Malware
'System Security > Theory' 카테고리의 다른 글
Chapter 6. BOF(Buffer OverFlow) II (0) | 2015.08.18 |
---|---|
Chapter 5. BOF(Buffer OverFlow) I (0) | 2015.08.18 |
Chapter 3. Malware I (0) | 2015.08.18 |
Chapter 2. System Security Setting (0) | 2015.08.18 |
Chapter 1. Password Cracking (0) | 2015.08.18 |