루트킷

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

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

개요

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

역사

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

특징

사용자 모드

사용자 모드 루트킷은 링-3[1]에서 돌아가는 시스템 프로세스이다. 응용 프로그램 프로그래밍 인터페이스, API(Application Programming Interface)의 표준 행동을 가로채고 수정하기 위한 가능한 수많은 설치 매개들을 가지고 있다. 몇몇 사용자 모드는 동적 링크 라이브러리[2],DLL(Dynamic-Link Library)을 다른 프로세스에 삽입함으로써 어느 대상 프로세스에서도 루트킷이 실행될 수 있게 한다. 애플리케이션에 의해 호출되는 API 함수가 특정한 데이터 필드(import/ export tables)를 사용한다는 점 또는 API 겟 프락 어드레스(GetProcAddress)를 이용하여 어드레스를 받아오는 점을 이용하는 것이다. 프로그램 코드는 DLL 모듈에 삽입되고 기존의 시스템 프로세스의 어드레스 공간에 통합된 후, 모든 사용자 애플리케이션의 통제 권한을 원격에 있는 악성 코드 제작자 또는 악성 코드 사용자에게 넘겨준다. 경로 변경은 문서화도 잘 되어있고 쉽게 접근할 수 있어 루트킷 사용을 더욱더 쉽게 한다. 다른 충분한 권한을 가진 것들은 간단하게 대상 애플리케이션의 메모리를 덮어쓰게 된다. 삽입 메커니즘은 다음의 사항들을 포함하고 있다. 벤더(vendor)에서 제공된 애플리케이션 확장 사용, 메시지 가로채기, 디버거(Debugger), 보안 취약점 공격, 실행되는 프로세스나 파일 시스템에 존재하는 파일을 숨기기 위한 함수 후킹(Hooking) 또는 주로 이용되는 API 패치이다.

커널 모드

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

하이퍼바이저

하이퍼바이저(Hypervisor) 형태로 생성된 루트킷은 기술 검증용으로 만들어졌다. 하이퍼바이저는 하나의 시스템에서 동시에 여러 개의 운영체제를 사용할 수 있게 해주는 가상화 플랫폼을 말한다. 가장 대표적이고 쉬운 예로 브이엠 웨어(VM ware)[4]를 들 수 있다. 하이퍼바이저는 다음과 같이 크게 두 가지 형태로 구분된다. 물론 아래의 두 형태가 복합된 형태 또한 가능하다. Type 1에서는 VMM (Virtual Machine Monitor)이 호스트(Host) 운영체제 안에서 동작한다. Type 2에서는 VMM(Virtual Machine Monitor)이 하드웨어와 게스트 운영체제(Guest OS) 사이에 존재한다. 인텔(Intel) VT 또는 AMD-V 같은 하드웨어 가상화 특징을 익스플로잇하는 타입의 루트킷은 링 -1에서 실행되고 가상 머신으로서 대상 운영 체제를 호스트하며, 이로써 루트킷이 원래 운영 체제에 의해 만들어진 하드웨어 호출을 가로챌 수 있게 한다. 하이퍼바이저 루트킷은 전복시키기 위해 대상의 커널을 수정할 필요가 없지만, 게스트 운영 체제에 의해 탐지될 수 없다는 것을 의미하지는 않는다.

펌웨어와 하드웨어

펌웨어 루트킷은 하드웨어에서 일관적인 악성코드 이미지를 생성하기 위한 것이다. 라우터(Router), 네트워크 카드(Network card), 하드 디스크 드라이브(Hard disk drive) 또는 시스템 바이오스(Bios) 같이 디바이스나 플랫폼 펌웨어(Firmware)를 사용한다. 펌웨어가 일반적으로 코드 무결성 검사가 이루어지지 않기 때문에 루트킷은 펌웨어에 숨을 수 있다. 이렇게 펌웨어에 내장된 루트킷은 복구 방식으로 정리하기가 어려울 수 있다. 2018년 9월 최초로 발견된 UEFI(Unified Extensible Firmware Interface) 루트킷 APT 28은 장치의 SPI(Serial Peripheral Interface)의 플래시 메모리에 내장되어 있었다. 그렇기 때문에 펌웨어 루트킷은 다른 접근 방식이 필요하다.


전망

루트킷을 탐지하는 여러 소프트웨어들이 나오고 있으며, 안티바이러스 업체에서도 루트킷에 대한 탐지 및 제거에 대한 연구가 계속되고 있다. 따라서 악성코드 보안을 담당하는 기관이나 기업체 등에서도 이를 대비하기 위한 방안을 마련해야 한다. 루트킷은 윈도우 장치에만 해당하는 이야기가 아니다. 사물인터넷 장치에도 적용될 수 있다. 장치가 감염되었다고 의심되는 경우 출고 당시로 되돌리는 ‘팩토리 리셋(Factory Reset)’을 한 후 최신 펌웨어를 설치한다. 마지막으로 사용자 이름과 관련된 비밀번호 또는 장치와 관련된 계정을 재설정한다.

각주

  1. 컴퓨터 보안 링〉, 《위키백과》
  2. 동적 링크 라이브러리〉, 《위키백과》
  3. 컴퓨터 보안 링〉, 《위키백과》
  4. VM웨어〉, 《위키백과》

참고자료