루트킷

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

루트킷(Rootkit)은 루트 권한을 획득한 공격자가 심어놓은 프로그램을 숨기기 위한 목적으로 사용되는 프로그램을 말한다. 1994년 루트킷이 처음 등장했을 당시에는 루트 권한을 가진 공격자가 로그인 하는 사용자들의 암호를 알아내기 위해 사용되는 일련의 위조 프로그램들 및 그 프로그램을 숨기기 위한 프로그램을 총칭하는 명칭이었으나, 이 후 백도어 프로세스나 파일 등의 흔적을 관리자가 볼 수 없도록 하는 프로그램에 대한 명칭으로 굳어졌다. 루트킷은 펌웨어, 가상화 계층, 부트로더, 커널, 라이브러리 등 다양한 곳에서 작동할 수 있다.

역사[편집]

루트킷이라는 이름은 유닉스의 전능적 관리자 계정 이름이 루트(root)고 침입자로 하여금 이 루트를 사칭하게 한다고 해서 붙은 것이다. 최초의 루트킷은 1990년쯤 레인 데이비스(Lane Davis)와 릴레이 데이크(Riley Dake)가 만든 선OS(SunOS) 4.1.1용 루트킷이라고 알려져 있는데 이것은 벨 연구소(Bell Labs)의 켄 톰슨(Ken Thompson)이 캘리포니아의 네이벌 연구소(Naval Laboratory)와의 내기에서 이기기 위해 썼던 루트킷과 거의 동급이었고 그보다 더 일찍 나타났으며 매우 유명했다고 한다(그 때 켄 톰슨은 연구소로 간 유닉스 배포판 안에 담긴 C 컴파일러를 부숴버렸다고 한다). 그 이후 다른 운영체제들에 대해 쓸 비슷한 소프트웨어들이 계속 만들어졌으며 다른 소프트웨어를 심을 때 사용자도 모르게 함께 심고 돌아가는 형태의 루트킷도 나타났다. 이후 2005년 소니 BMG(소니 뮤직 엔터테인먼트)가 자사에서 발매하는 음반에 윈도용 루트킷을 담았다는 사실이 밝혀지고 논란이 된 이후 루트킷이라는 존재는 더 많은 사람들에게 알려졌으며 루트킷을 잘 알지 못하던 많은 사용자들이 루트킷을 경계하게 되었다.

종류[편집]

루트킷이 설치되는 곳에 따라 여러가지 루트킷의 종류가 있다.

하드웨어/펌웨어[편집]

특정 하드웨어 및 소프트웨어에 대한 펌웨어 또는 모듈로 위장해 침투하여 해당 펌웨어 및 소프트웨어에 대해 내용을 덧붙이거나 일부 내용을 바꿈으로 침입자가 쉽게 침투하여 해당 시스템의 전능적 관리자 행세를 하며 해당 시스템을 마음대로 주무를 수 있게 하는 종(種)으로 존 헤스만(John Heasman)이라는 사람이 ACPI 펌웨어 루틴과 PCI 확장 카드 ROM에 이 종의 루트킷을 심어놓고 그것이 얼마나 오랫동안 들키지 않고 일하는지를 선보인 바 있다.

가상화 계층[편집]

컴퓨터의 부팅 과정을 바꾸어 컴퓨터 메모리에 먼저 들어가 있다가 부팅 과정에서 자신이 먼저 메인 운영체제로 작동되고 원래 운영체제를 '자신 안의 가상 운영체제'로 작동함으로 침입자로 하여금 원래 운영체제의 전능적 관리자 계정보다도 위에 군림하여 해당 시스템을 마음대로 주무를 수 있게 하는 종으로 마이크로소프트(Microsoft)와 미시간대학교(University of Michigan) 개발자들이 함께 만든 서브버트(SubVirt)가 대표적이며 블루필(Blue Pill)이라는 것도 있다.

커널[편집]

1990년대 중반에는 그렉 호그룬드(Greg Hoglund)라는 사람이 윈도 NT 4.0을 공격하는 루트킷을 만들기도 했다.

소프트웨어[편집]

특정 소프트웨어(실행해도 안전한 것)의 실행파일로 위장해 있는 종으로 실행하는 순간 루트킷의 역할을 시작한다.

바이러스와 웜과의 차이점[편집]

바이러스는 다른 프로그램에 기생하여 복제하고 웜은 다른 프로그램 없이 스스로 복제할 수 있다.