본문 바로가기

System Security/Theory

Chapter 4. Malware II

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