본문 바로가기
정상을향해/OS·Kernel Driver·Rootkit

2장. 커널 조작 - 재부팅시 자동 시작

by 사이테일 2014. 1. 15.

루트킷 드라이버는 시스템이 부팅되는 시점에 로드되어야 한다.


이 문제에 대해 곰곰이 생각해 보면, 시스템이 부팅되는 시점에 로드되는 소프트웨어가 상당히 다양하고 많다는 사실을 깨닫게 될 것이다.


다음은 시스템에 부팅되는 시점에 루트킷을 로드할 수 있는 다양한 방법이다.



Run 키를 이용 (오래된 신뢰할 수 있는 방법)


Run 키를 이용하면 임의의 프로그램을 부팅 시점에 실행시킬 수 있다.


Run 키에 의해 실행된 프로그램은 자신에게 삽입된 루트킷 파일을 생성해서 그것을 로드한다.


로드된 루트킷은 탐지되지 않기 위해 자신을 위한 Run 키의 값을 감출 수 있다.


모든 바이러스 스캐너는 Run 키를 검사하기 때문에 이 방법은 상당히 위험한 방법이다.


하지만 루트킷이 일단 로드되면 키 값은 보이지 않게 된다.



트로이목마 또는 감염된 파일을 이용


부팅 시점에 로드되는 .sys 파일이나 실행 파일은 교체될 수 있다.


또는 바이러스가 파일을 감염시키는 방법과 비슷하게 원하는 파일을 로딩시킬 수 있는 코드를 삽입할 수도 있다.


아이러니하게도, 코드를 삽입하기 가장 좋은 대상이 바이러스캐너 또는 보안 프로그램이다.


보안 프로그램은 일반적으로 시스템이 부팅하면서 함께 실행되기 때문이다.


트로이목마 DLL을 Path 경로에 삽입하거나 기존에 존재하는 DLL을 단순히 교체 또는 감염시킬 수도 있다.



.ini 파일 이용


.ini 파일을 변경해서 프로그램이 실행되게 만들 수 있다.


많은 프로그램들이 자신이 실행되면서 수행할 명령이나 로드할 DLL 목록을 포함하는 초기화 파일을 이용한다.


그런식으로 이용되는 파일 중 하나가 win.ini 파일이다.



드라이버로 등록


루트킷은 자기 자신을 부팅되면서 로드되는 드라이버로 등록할  수 있다.


이를 위해서는 레지스트리 키를 만들어야 한다.


이 경우에도 일단 드라이버가 로드되면 해당 레지스트리 키를 숨길 수 있다.



기존 애플리케이션의 추가된 기능으로 등록


스파이웨어에 의해서 자주 사용되는 방법은 자신을 웹 브라우저 애플리케이션의 확장 컴포넌트로 등록하는 것이다.


(예 : 검색바로 가장한 스파이웨어)


애플리케이션이 로드되면 그에 따른 확장 컴포넌트도 함께 로드된다.


이 방법은 해당 애플리케이션이 실행되어야 한다는 전제 조건이 있다.


이 방법의 단점은 많은 무료 애드웨어 스캐너에 의해 탐지된다는 것이다.



커널을 디스크상에서 변경


커널을 하드디스크상에서 직접 변경하는 것이 가능하다.


커널에 대한 무결성 검사를 통과하려면 변경을 최소화해야 한다.


커널의 변경 사항은 일시적이지 않으며 어떤 드라이버도 등록할 필요가 없으므로 이 방법은 매우 효과적일 수 있다.



부트 로더 변경


커널이 로드되기 전에 작동하는 부트 로더를 변경할 수 있다.


시스템을 분석하더라도 커널이 변경된 것으로 보이지 않는 것이 이 방법의 장점이다.


하지만 올바른 툴을 이용하면 부트 로더가 변경되었는지 확인할 수 있다.