1 / 15

Evolution of Rootkit

Evolution of Rootkit. amy@panicsecurity.com Amadoh4ck in Null@Root. Existing Rootkit. 저장위치 : File System 동작을 위한 구현방법 Loadable Kernel Module 이용 (LKM Rootkit) API Hooking IDT/SDT 변조 Etc … 수행 작업 Network Traffic 및 사용자 입력 감시 Backdoor 생성 Log File 수정 및 삭제 Other Computer 공격 Etc ….

raina
Download Presentation

Evolution of Rootkit

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Evolution of Rootkit amy@panicsecurity.com Amadoh4ck in Null@Root

  2. Existing Rootkit • 저장위치: File System • 동작을 위한 구현방법 • Loadable Kernel Module 이용 (LKM Rootkit) • API Hooking • IDT/SDT 변조 • Etc … • 수행 작업 • Network Traffic 및 사용자 입력 감시 • Backdoor 생성 • Log File 수정 및 삭제 • Other Computer 공격 • Etc …

  3. The future of Rootkit • 저장위치 • The first sector of bootable partition • EPROM or EEPROM • 동작을 위한 구현방법 • Hooking Interrupt in real mode IVT • Interrupt 특성에 맞게 기능 구현 필요 • Int 13h hooking (Disk I/O)의 경우 OS Boot 영역 로딩 위치를 변조시킴 • Int 10h hooking (VGA/VGE BIOS 함수들 구현) • 수행 작업 • 기존 Rootkit과 동일

  4. Rootkit using bootstrap • BIOS boot process and Windows startup • BIOS POST (Power On Self Test) 과정 수행 • BIOS는 Booting 가능한 매체에 코드 수행과정 넘겨줌 • Disk driver, CD-ROM, Network boot (PXE) • 각 매체 별로 Booting 과정 수행 • Hard Drive • MBR (Master Boot Record) • bootstrap loader (Windows, Linux, Etc…) • Windows의 경우 NTLDR • OSLOADER.EXE • NTDETECT.COM • NTOSKRNL.EXE & HAL.DLL & boot drivers • CD : 과정은 거의 동일 (Sector Size, Data Format 등 다름) • PXE (Preboot eXecution Environment) • BOOTP(DHCP기반)와 TFTP 를 통한 Network boot • Boot file 다운로드 받은 후 수행

  5. Rootkit using bootstrap • Boot Time Rootkit의 장점 • BIOS 보다는 후에 수행되지만 OS 보다는 먼저 수행 • Rootkit의 수행된 후의 모든 다음 부팅 과정을 제어할 수 있다. • Windows는 부팅 시 BIOS Interrupt 를 Wrapping 하기 때문에 DOS가 아닌 Windows에서의 real mode Interrupt Hooking은 불가능 • 현재 IDT 변조는 단지 Windows가 Wrapping한 Interrupt Description Table의 주소 값을 변조하는 것이다. • OS 부팅보다 먼저 수행되기 때문에 real mode Interrupt Hooking이 가능하며 Anti-virus 솔루션이나 기타 보안 솔루션 (Keyboard Stroke Protect Solution 등)들을 무력화 시킬 수 있다. • 최고 권한을 가진다. (Ring 0)

  6. Rootkit using bootstrap • Boot Time Rootkit의 단점 • 이미 로딩된 OS에서는 동작하지 않는다. 즉, 부팅 과정을 적어도 한번은 수행해야 동작할 수 있다.  서버처럼 부팅이 빈번하지 않은 시스템에서는 기회를 얻기까지의 시간이 오래 걸린다. • 제어하기를 원하는 몇 가지 기능을 제외한 나머지 모든 시스템 기능들은 정상적으로 동작하도록 해야 한다. • 적재될 공간의 Size가 제한되어 있으므로 작성되어야 하는 코드 Size가 제한적이다.  INT 13h Hooking을 통해 해결  Boot 영역에서 수행하는 코드는 INT 13h Hooking과 이전 코드 복사, Hooking 후 이전 코드 수행 등만 수행하면 된다. • Ring 0 에서 Ring 3, Kernel Land 에서 User Land 로 전환이 필요하다.

  7. Rootkit using bootstrap • Requirement of Boot Time Rootkit • Rootkit Code를 복사하기 위한 Physical Memory 영역 • 더 많은 기능들을 수행하도록 하기 위해 OS 관련 File들을 Patch해야 한다.  INT 13h의 AH=02h (Read Sector)  INT 13h의 AH=42h (Large Disk를 위한 Extended Read) • INT 13h를 통해 OSLOADER안의 code signature를 검색하고 Patch한다. • OSLOADER의 패치를 통해 다음 Booting 순서에 존재하는 다른 기능이나 실행 등을 조작할 수 있다. • Boot drivers • INT 15h Hooking을 통한 Memory map의 조작 (백신 우회) • INT 13h Hooking을 통한 Boot 영역 감염 여부 숨김

  8. Rootkit using bootstrap • Implementation of Boot Time Rootkit (Part 1) • INT 13h Hooking • The first sector of Boot Partition를 다른 메모리에 저장 • 다음 부팅 과정이나 응용프로그램에 의해서 사용되지 않는 영역에 복사해 두어야 한다. • Hooking INT 13h • INT 13h hooking 기능 코드는 sector들을 읽을 때마다 code signature를 검사한다. • OSLOADER의 적당한 code signature를 검사하여 일치하면 Patch하고 일치하지 않으면 예전 INT 13h를 수행하도록 처리한다. • AH=02h, AH=42h 둘 다 Hooking 해야 한다. (Large Disk를 위해) • Size에 맞게 OSLOADER를 Patch한다. • 주의: OSLOADER는 PE checksum을 확인한다. 그러므로, checksum checking code를 disable 시켜야 한다.

  9. Rootkit using bootstrap • Implementation of Boot Time Rootkit (Part 2) • OSLOADER Patch • Boot driver가 로딩된 후에 실행되어진 6 byte만 Patch 0031ADF1 8B F0 MOV ESI, EAX 0031ADF3 85 F6 TEST ESI, ESI 0031ADF5 74 21 JZ $+23h 0031ADF7 80 ... ; not modified • 6 byte 코드로 Rootkit Code 저장 위치로 Jump해야 함 • CALL seg:ofs32  7 byte • CALL DWORD PTR [ofs32]  6 byte • Paging은 신경 쓰지 않아도 됨 • OSLOADER는 16MB physical memory를 16MB virtual memory로 mapping 되기 때문 • 이후부터는 Bookdoor나 기타 Rootkit 기능을 하는 Code들을 작성 • 대표적으로 NDIS.SYS를 Hooking하여 Network Traffic Monitoring 및 명령의 전달 매체로 사용

  10. Rootkit using bootstrap • 구현상 정작 중요한 것? • How to modify Bootstrap? • The first sector of Boot Partition를 어떻게 변조할 수 있나? • Kernel에 진입하지 않고도 raw disk operation을 수행할 수 있다? • NT Kernel의 취약점이 아닌 특징일 뿐

  11. Rootkit using bootstrap • CPL vs. IOPL • CPL : Current Privilege Level • IOPL : I/O Privilege Level  IO와 관련된 Instruction 들의 권한 정의 • EFLAGS Register가 IOPL Field를 포함 • CPL <= IOPL 조건이 성립되어야 다음 Instruction들의 사용이 가능해 진다. • IN / INSB / INSW / INSD • OUT / OUTSB / OUTSW / OUTSD • CLI / STI • IOPL은 ring 0에서만 변경 가능하다.

  12. Rootkit using bootstrap • 특정 CSRSS thread 들은 IOPL=3 권한으로 실행된다. • 이러한 Thread들은 hijack 가능 • NtSetInformationProcess(ProcessUserModeIOPL) • 두 방법 모두 SYSTEM-equivalent privileges 필요 • Port I/O를 사용하면 low-level disk 접근 허용 • Possible on IDE drives with only port I/O • No DMA required, no IRQs generated, etc. • For sample code, see [Kaze] in References • So what? • Evade anti-virus boot sector protection? • Evade system integrity assurance software? • Defeat machine state preservation software?

  13. Rootkit using firmware • PCI bus • Next Seminar

  14. Reference • 80386 Programmer’s Reference • http://pdos.csail.mit.edu/6.828/2005/readings/i386/toc.htm • http://www.x86.org/articles/ • IOPL Technique • http://www.uninformed.org/?v=2&a=4&t=pdf • Kaze • http://fat.next-touch.com/data/fatdoc1.txt • EEYE • http://research.eeye.com/html/tools/RT20060801-7.html • http://research.eeye.com/html/Papers/download/eEyeDigitalSecurity_Pixie%20Presentation.pdf

  15. Q & A • 너무 어려운 건 묻지 마세용.. ^^

More Related