티스토리 뷰

LKM 백도어, 루트킷의 특징



유저모드 리눅스 시스템 백도어는 침입자가 패스워드 없이 재차 접근할 수 있도록 비밀리에 설치하게 되는데 유저모드에서 작동하기 때문에 tripwire, md5  를 이용한 파일 무결성 검사 프로그램으로 탐지가 가능하다. 이 때 이러한 파일 무결성 검사를 우회하기 위한 방법이 바로 LKM 백도어이다. 이러한 일이 가능한 이유는 LKM(Localable Kernel Module) 즉 커널 부분을 건드리기 때문이다. 



LKM 백도어 종류


LKM 백도어는 탐지가 아주 어려운 백도어인데(물론 잘 설계했다는 가정하에) 이 중에서 커널 모듈을 추가하는 방식을 많이 사용한다. 시스템 콜 테이블을 수정해서 후킹하는 방식이 있었고 예를 들어서 사용자가 ls 라는 명령어를 입력했다면 이 때 openfile 시스템 콜의 시스템 콜 테이블을 수정해서 나의 백도어 관련 파일들은 오픈을 하지 않고 넘어가버리는 방식으로 은폐가 가능하다. 하지만 이 방식은 시스템 콜 테이블의 수정을 막아주는 보안 어플에 의해 막혔지만 시스템 콜을 리다이렉트 시키는 방법으로 시스템 콜 테이블을 변경하지 않고  리다이렉트하는 방법을 발표했다. 이 방법에대해서는 밑에서!



 LKM ROOTKIT 


일반적인 루트킷은 login ls ps 같은 명령어 파일을 바꾸지만 이는 무결성 검사에 걸릴 수 밖에 없다. 하지만 커널 기반 루트킷은 여기에 걸리지 않는다. 이는 시스템 콜을 변경하기 때문이다. 알기 쉽게 유명한 루트킷 하나의 기능을 소개하겠다. knark 라는 루트킷의 기능은 다음과 같다. 


1. 파일 숨기기

2. 파일을 다시 보이게 하기 

3. root 접속을 가능하게 한다. 

4. 원격지에서 임의의 명령 실행

 


시스템 콜 테이블 검사 무력화 


시스템 콜 테이블을 검사하는 방식을 우회할 수 있는 방법이 있다. 일명 시스템 콜 리다이렉트라는 방법인데 시스템 콜 테이블을 직접 수정하지 않고 시스템 콜의 주소 값에 있는 어셈블리어를 수정하는 방식이다. 이 때 어셈블리어는 함수의 크기에 맞추어야하기 때문에 어셈블리어를 만들 때 주의가 필요하다. 다음은 인하대 논문에서 발최한 예제이다. 행위에 해당하는 부분으로 점프를 하는 것을 볼 수 있다.






'시스템 보안' 카테고리의 다른 글

Inline Function Hook Rootkit  (0) 2016.05.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함