본문 바로가기
정보보안기사&CISSP관련/System Security

[Day 114] 루트킷(Rootkit)

by minimalist_2022 2020. 12. 2.

개요

  • 루트킷은 자신의 존재가 탐지되지 않도록 숨기면서 관리자 권한의 획득과 백도어 등의 기능을 수행하는 코드와 프로그램의 집합을 의미
  • chkrootkit을 실행하여 INFECTED로 표시되면 해당 파일이 감염 변조된 것

 

루트킷의 hidden process 탐지 원리

  • 일반적으로 루트킷은 공격자가 숨기고자 하는 프로세스가 출력되는 부분만 제거하고 출력하도록 ps 프로그램을 만들어 타겟 시스템에 있는 정상 ps 프로그램과 바꿔치기하는 방식으로 동작함
  • 루트킷 탐지 프로그램은 "ps" 실행결과와 "/proc" 디렉터리에 있는 프로세스 정보를 비교하여 /proc 디렉터리에는 프로세스가 있지만 ps 실행 시 보이지 않는 프로세스를 히든 프로세스로 탐지

 

/proc 파일시스템

  • 유닉스/리눅스 커널이 메모리상에 사용하고 있는 모든 자원들에 대한 정보들을 파일 형식으로 보관하는 파일시스템
  • 커널이 관리하는 "프로세스" 등의 자원, 커널 파라미터 등에 대한 상태정보를 파일명으로 보관하고 있음
  • 물리적 디스크 영역이 아닌 메모리 영역에 존재하는 파일 시스템으로 매 부팅시마다 새롭게 생성됨
  • /proc 파일시스템을 보면 현재 실행중인 개별 프로세스의 PID를 의미하는 다수의 숫자형식의 디렉토리가 생성되어 있음
  • exe는 실행파일에 대한 심볼릭 링크 파일로 해당 프로세스의 실행 이미지를 확인할 수 있음
  • fd는 nc 프로세스가 오픈한 파일 디스크립터 정보를 담고 있는 디렉터리

 

루트킷 대응방법

  • RPM(Redhat Package Manager) 명령을 이용하여 변조된 파일 확인 후 패키지 재설치
    • 레드햇 계열 리눅스에서 윈도우의 setup 프로그램처럼 프로그램 설치를 손쉽게 하기 위해 만든 설치파일을 package 라고 하고, 이러한 패키지를 관리하는 명령어를 rpm(Redhat Package Manager)라고 함
    • rpm -V 패키지이름 : V옵션은 Verify를 의미. 해당 패키지를 통해 설치된 파일의 무결성을 검사함
실행 예시
# rpm -qf /bin/netstat
net-tools-1.60.95.fc11.i586
--> rpm -qf 명령을 통해 netstat 실행파일이 net-tools 패키지에 속해 있는 것을 확인
# rpm -V net-tools  
S.5….T.     /bin/netstat  
--> rpm -V 실행결과, 최초 설치시점과 비교하여 파일크기(S), MD5 체크섬(5), 파일 수정시간(T)가 변경된 것을 확인할 수 있음 

S : 파일 크기
M : 파일 커미션 변경
5 : MD5 체크섬 변경
T : 파일 수정시간 변경 

U : 소유자 변경,
G : 소유그룹 변경,
D : 장치정보 변경,
L : 심볼릭링크정보 변경

 

  • 주요 실행파일이 변조/감염되었다는 것은 이미 해킹을 당하여 root 권한 탈취 및 루트킷 설치가 의심됨. 다양한 파일 변조 가능성 높음. 따라서 변조/감염된 파일만 교체하는 것은 임시방편이고 해당 시스템을 재설치하는 것이 최선임