2018. 5. 13. 19:25ㆍ악성코드 분석
RootKit
침투를 성공한 공격자가 은밀하게 침투한 상태를 유지하도록 도와주는 프로그램
4가지 기능
- 프로세스 숨기기
- 파일 숨기기
- 네트워크 커넥션 숨기기
- 시스템에 접속하기 위한 백도어 설치
* RootKit은 커널의 DeviceDriver를 통해서 동작한다
* RootKit을 공부하기 전에 DeviceDriver에 대해서 공부하자
DeviceDriver란 ?
- load가능한 커널모드 모듈형태 ( .sys )
- I/O관리자와 관련 하드웨어를 인터페이스로 연결한다
- 커널내에 존재하여, Hal.dll을 통해서 하드웨어와 조작 및 통신
- 컴퓨터 하드웨어 장치와 상호작용하기 위해 만들어진 컴퓨터 프로그램
- 커널 전체 소스에 포함되어 컴파일 되기도하고, 별도로 컴파일된 (sys파일)형태로 존재할 수 있다
- dll load & unload, Thread start & end 시에 동작한다
* DeviceDriver 설치 & 실행 실습
먼저 DeviceDriver를 컴파일 할 수 있는 환경 구성을 한다 ( Build Environment )
Windows Driver Kits - WDK 7600.16385.1 - Build Environments - Windows XP - x86 Checked Build Environment 실행
basic.c & MAKEFILE & SOURCES 파일을 컴파일했고 실행가능한 파일( sys파일 )을 하나 생성하였다
basic.c의 소스코드를 한번 보자 ( 나머지 두 파일에 크게 신경쓸 코드는 없다 )
DeviceDriver 실행 시 " I loaded " 출력 , 그리고 OnUnload함수를 통해서 " OnUnload calld " 출력 후 종료하는 루틴
생성된 sys타입의 DeviceDriver 파일을 실행시켜보자
DeviceDriver실행은 service로 등록하고 로드시켜서 실행시킬 수 잇다
이 때, 서비스를 자동으로 등록해주고 실행시키는 프로그램인 InstDvr을 사용한다
* InstDrv
파일의 경로를 입력하고 Install을 통해 서비스 등록, start & stop 으로 실행 및 종료 가능
* DbgView
Capture Kernel Check - 커널의 상태를 확인할 수 있다
아래에서처럼 DbgPrint() 함수의 결과를 확인할 수 있었다
Start => #1 출력
Stop => #2 출력
루트킷을 실행하는DeviceDriver원리에 대해서 알아보았고 다음에는 RootKit의 한 종류인 SSDT Hooking에 대해서 알아보겠습니다
'악성코드 분석' 카테고리의 다른 글
DeviceDriver MajorFunction 후킹 [ netstat ] (0) | 2018.05.15 |
---|---|
RootKit [ SSDT Hooking 실습] (0) | 2018.05.13 |
Windows Message Hooking ( 키보드입력 후킹 실습 ) (0) | 2018.05.10 |
Windows Message Hooking ( KeyLogger 실습 ) (0) | 2018.05.10 |
악성코드 분석 실습 ( Lab07_03 ) [ DLL 변조] (0) | 2018.05.03 |