728x90

루트킷은 적어도 5가지 종류가 존재하며 이는 사용자모드, 커널모드, 부트킷, 하이퍼바이저레벨, 펌웨어와 하드웨어로 나눌 수 있다.

(1) 사용자 모드(User Mode) : 사용자 모드 루트킷은 링-3에서 동작하는 시스템 프로세스이며, 응용 프로그램 인터페이스와 API의 트랜잭션을 가로채고 수정하기 위한 기능등을 가지고 있다.

일부 사용자 모드는 동적 링크 라이브러리(dll)를 다른 프로세스에 삽입함으로써 어느 대상 프로세스에도 루트킷이 실행될 수 있게 한다.

애플리케이션에 의해 호출되는 API함수가 특정한 데이터필드를 사용한다는 점, 또는 API의 Get Proc Address를 이용하여 어드레스를 받아오는 점을 이용하는 것이다.

프로그램 코드는 Dll 모듈에 삽입되고 기존의 시스템 프로세스의 어드레스 공간에 통합된 후, 모든 사용자 애플리케이션의 통제 권한을 원격에 있는 악성 코드 제작자 또는 악성 코드 사용자에게 넘겨준다.


(2) 커널 모드 : 커널 모드 루트킷은 커널과 디바이스 드라이버 같은 코어 운영체제의 한 부분에 코드를 추가하거나 대체함으로써 높은 운영체제 권한인 링-0와 함께 실행된다.

대부분의 운영체제는 운영체제 자신과 같은 권한에서 실행되는 커널 모드 디바이스 드라이버를 지원하기 때문에 많은 커널 모드 루트킷들은 리눅스에서 적재 가능 커널 모듈, 그리고 윈도우에서 디바이스 드라이버 형태로 개발된다.

커널 모드 루트킷들은 운영체제와 같은 보안 수준에서 동작하기 때문에 탐지하고 제거하기가 어렵다. 대다수의 커널 모드 루트킷은 문서화되어 있지 않는 운영체제의 구조를 활용하기 때문에 커널 모드 루트킷은 정보를 더욱 잘 감출 수 있다.

커널 모드 루트킷은 시스쳄 서비스 서술자 테이블 SSDT(System Service Descriptor Table)을 후킹하거나 자신을 숨기기 위해 사용자 모드와 커널 모드 사이의 게이트를 수정할 수 있다.


(3) 부트킷(Bootkit) : 부트킷이라고 불리는 커널 모드 루트킷의 변형운 마스터 부트 레코드(MBR), 볼륨 부트 레코드(VBR) 또는 부트 섹터 같은 시작 코드를 감염시켜서 전체 디스크 암호화를 공격하는데 사용될 수 있다.

일반적으로 악성 코드 로더는 커널이 로드될 때 보호 모드로 이행하려고 하며, 그로 인해 커널을 전복시킬 수 있다. 부트킷 공격에 대한 유일한 알려진 방어는 시스템에 대한 비인가된 물리적 접근의 예방 또는 부트 경로를 보호하기 위한 신뢰 플랫폼 모듈의 사용이다.


(4) 하이퍼바이저: 하이퍼바이저 형태로 생성된 루트킷은 기술 검증용으로 만들어졌다. 하이퍼바이저는 하나의 시스템에서 동시에 여러 개의 운영체제를 사용할 수 있게 해주는 가상화 플랫폼을 말한다. 부트킷 타입의 루트킷은 링-1에서 시뢜되고 가살머신으로서 대상 운영체제에 의해 만들어진 하드웨어 호출을 가로챌 수 있게 한다. 하이퍼바이저 루트킷응 전복시키기 위해 대상의 커널을 수정할 필요가 없지만, 게스트 운영체제에 의해 탐지될 수 없다는 것을 의미하지는 않는다:


(5) 펌웨어와 하드웨어 : 펌웨어 루트킷은 하드웨어에서 일관적인 악성코드 이미지를 생성하기 위한 것이다. 라우터, 네트워크 카드, 하드 디스크 드라이브 또는 시스템 바이오스 같이 디바이스나 플랫폼 펌웨어를 사용항다. 펌웨어가 일반적으로 코드 무결성 검사가 이루어지지 않기 때문에 루트킷은 펌웨어에 숨을 수 있다.

+ Recent posts