루트킷

위키원
Sg03098 (토론 | 기여)님의 2019년 9월 18일 (수) 14:13 판
이동: 둘러보기, 검색

루트킷은 컴퓨터 소프트웨어 중에서 악의적인 것들의 모음으로써, 자신의 또는 다른 소프트웨어의 존재를 가림과 동시에 허가되지 않은 컴퓨터나 소프트웨어의 영역에 접근할 수 있게 하는 용도로 설계되었다.

개요

루트킷은 해커들이 시스템을 해킹할 때 시스템 이용자가 해킹당하고 있음을 알지 못하도록 하기 위해 사용하는 도구(프로그램 등)를 말한다. 루트킷을 설치하는 목적은 해커들이 나중에 시스템에 접근할 때 들키지 않으려는 것이다. 즉, 해커들은 이 도구를 사용해서 컴퓨터의 제어권을 가로채고 자신들이 하는 일을 감출 수 있다. 루트킷은 해커가 설치한 악성코드(트로이목마, 악성봇 등)가 백신이나 PC 사용자에게 발각되지 않도록 숨겨주는 역할을 한다. 대부분의 루트킷은 일반 프로그램이 동작하는 계층보다 더 하위 계층, 즉 커널이라는 운영체제 핵심 부분에 숨어서 동작하여 탐지·분석이 어렵다. 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음이다. 루트킷이 설치되면 자신이 뚫고 들어온 모든 경로를 바꾸어 놓고, 명령어들을 은폐해 놓기 때문에 해커가 시스템을 원격으로 해킹하고 있어도 루트킷이 설치되어 있는 사실조차 감지하기 어렵다. 침입자는 먼저 암호를 크래킹 하거나 시스템 취약점을 찾아내어 사용자용 접근 권한을 획득한 뒤, 컴퓨터에 루트킷을 설치한다. 루트킷은 네트워크상의 다른 컴퓨터에 있는 사용자 ID와 암호들을 탐지하여 해커에게 루트 권한, 시스템 정보 그리고 기타 특수한 접근 권한을 제공한다. 또한 트래픽이나 키스트로크 감시, 해커 이용 목적의 시스템 내 백도어 설치, 로그파일 수정, 네트워크상의 다른 컴퓨터 공격, 탐지 회피를 위한 기존 시스템 도구의 수정 등의 기능을 제공한다.

역사

1990년도에 루트킷이라는 용어가 처음 등장했다. 국내에 루트킷이 알려진 것은 2005년, 소니 BMG의 CD 보안이 루크킷을 사용했다는 것이 Mark Russinovich에 의해 알려지면서 CD를 전량 회수하는 사건이 시발점이 되었다. 그 이후로 루트킷에 대한 사람들의 경각심이 더욱 고취되었고, 백신 프로그램도 루트킷에 얼마나 효과적으로 대응하는지가 관건이 되기도 했다. 루트킷은 이미 오래전부터 존재했다. 유명세를 탄 무렵에는 이미 기술이 대부분 공개된 상황이었다. 기술 자체는 새롭거나 특별할 것이 없지만, 언제부터인가 ‘보안의 핵심’ 으로 대두되었다. 2005년, 소니(SONY)의 CD보안 문제로 인해 루트킷에 관심이 없었던 해커와 크래커, 프로그래머들에게도 그 존재가 알려졌기 때문이다. 루트킷이 알려지자 많은 크래커들이 루트킷을 사용하기 시작하였고, 악의적인 일을 좀 더 효과적으로 실행하기 위해 루트킷의 소스코드나 프로그램들을 활용하게 되었다.

특징

사용자 모드

사용자 모드 루트킷은 링3에서 돌아가는 시스템 프로세스이다. API의 표준 행동을 가로채고 수정하기 위한 가능한 수많은 설치 매개들을 가지고 있다. 몇몇의 사용자 모드는 DLL을 다른 프로세스에 삽입함으로써 어느 대상 프로세스에서도 루트킷이 실행될 수 있게 한다. 다른 충분한 권한을 가진 것들은 간단하게 대상 애플리케이션의 메모리를 덮어쓴다. 삽입 메커니즘은 다음의 사항들을 포함하고 있다. 벤더에서 제공된 애플리케이션 확장 사용, 메시지 가로채기, 디버거, 보안 취약점 공격, 실행되는 프로세스나 파일 시스템에 존재하는 파일을 숨기기 위한 함수 후킹 또는 주로 이용되는 API 패치이다.

커널 모드

커널 모드 루트킷은 커널과 디바이스 드라이버 같은 코어 운영 체제의 한 부분에 코드를 추가하거나 대체함으로써 높은 운영 체제 권한인, 링0 와 함께 실행된다. 대부분의 운영체제들은 운영체제 자신과 같은 권한에서 실행되는 커널 모드 디바이스 드라이버를 지원하기 때문에, 많은 커널 모드 루트킷들은 리눅스에서 적재 가능 커널 모듈, 그리고 윈도우에서 디바이스 드라이버 형태로 개발된다. 커널 모드 루트킷들은 운영체제 자신과 같은 보안 수준에서 동작하기 때문에 특히 탐지하고 제거하기가 어렵다. 커널 모드 루트킷은 시스템 서비스 서술자 테이블 (SSDT)을 후킹하거나, 자신을 숨기기 위해 사용자 모드와 커널 모드 사이의 게이트를 수정할 수 있다. 커널 모드 루트킷 변형으로는 부트킷이 있다. 부트킷은 마스터 부트 레코드(MBR), 볼륨 부트 레코드(VBR) 또는 부트 섹터 같은 시작 코드를 감염시켜서 전체 디스크 암호화를 공격하는데 사용된다.

하이퍼바이저 레벨

하이퍼바이저 형태로 생성된 루트킷은 기술 검증용으로 만들어졌다. 인텔 VT 또는 AMD-V 같은 하드웨어 가상화 특징을 익스플로잇함으로써 이 타입의 루트킷은 링 -1에서 실행되고 가상 머신으로서 대상 운영 체제를 호스트하며, 이로써 루트킷이 원래 운영 체제에 의해 만들어진 하드웨어 호출을 가로챌 수 있게 한다. 하이퍼바이저 루트킷은 전복시키기 위해 대상의 커널을 수정할 필요가 없지만, 게스트 운영 체제에 의해 탐지될 수 없다는 것을 의미하지는 않는다.


참고자료