반응형
커널 모드 디버거

커널 모드 디버거는 특징 프로세서가 아닌 시스템을 전체적으로 보고자 할 때 사용하는 디버거다. 유저모드 디버거와 달리 커널 모드 지버거는 운영체제에서 실행되
는 하나의 애플리케이션이 아니라 시스템의 커널과 동등한 컴포넌트로 존재해서 전체적인 시스템을 관찰하거나 실행을 중지할 수 있다. 커널 모드 디버거는 일반적으로 
유저 모드 디버깅 기능도 제공한다. 하지만 디버거는 실행되는 프로세서의 간의 메모리 주소 영역이 바뀌는 것을 알아야 하므로 경우에 따라 다소 문제가 될 수도 있다.

커널 모드 디버거는 일반적으로 디바이스 드라이버 개발자와 다양한 운영체제 확장 기능 개발자와 같은 커널 레벨 개발자를 대상으로 만들어졌지만 다른 목적으로도
유용하게 사용할 수 있다. 리버서에게 있어서 커널 모드 디버거는 실행 중인 모든 프로세서와 시스템 전체에 대한 정보를 제공하므로 맏을 수 없을 정도로 큰 도움을
주곤 한다. 사실, 많은 리버서가 커널 모드를 리버싱하든지 유저 모드를  리버싱하든지 상관없이 커널 디버거만을 사용한다. 물론 커널 모드 코드를 리버싱 하는 경우
에는 커널 모드 디버거를 필수적으로 사용해야 한다.

커널 모드 디버거의 강력한 기능 중 하나는 바로 로우레베 브레이크 포인트를 걸 수 있다는 것이다. 특정 연산이 프로그램 내의 어느 부분에서 수행되는지 판단 하고 싶
을 때 가장 흔히 수행하는 방법은 해당 연산을 수행하기 위해서 호출되는 운영체제 API에 브레이크 포인트를 수행하는 코드가 어디인지 알고 싶다면 윈도우를 이동시키는 
시스템 API에 브레이크 포인트를 설정할 수 있다. 하지만 윈도우 창을 이동시키는데 사용할 수 있는 API가 상당히 많고 윈도우 창을 이동시키는 프로세스가 어느 것인지
정확히 알지 못할 수도 있다는 것이 문제다. 커널 디버거는 이에 대한 훌륭한 해결책을 제공한다. 즉 윈도우 창을 이동시키는 운영체제와 로우레벨 코드에 브레이크 포
인트를 설정하는 것이다. 프로그램이 윈도우 창을 이동시키기 위해서 어떤 API를 사용하는지 결국에는 그 작업을 수행하는 운영체제와 로우레벨 코드가 실행된다.

불행하게도 커널 모드 디버거는 설치하기 복잡한 경우가 많다. 그리고 운영체제를 불안정하게 할 수 잇으므로 일반적인 커널 모드 디버거를 위한 전용 시스템을 필요로
한다. 또한 커널 디버거는 하나의 프로세서가 아닌 시스템 전체의 실행을 중지시키므로 커널 디버거가 열려있는 동안에는 시스템이 멈춰있게 되고 어떤 스레드도 
실행되지 않는다. 커널 모드 디버거는 이런 제약 사항으로 인해 유저모드 디버거가 원하는요구사항을 만족시켜주는 한 커널 모드 디버거를 설치하지 말것을 권장한다.
전형적인 유저 모드 리버싱 시나리오에서 과도하게 커널 모드 디버거까지 사용할 필요는 없다.


'Security > Reverse Engineering' 카테고리의 다른 글

Rootkit Detection  (0) 2018.02.16
Reversing(역공학)  (0) 2018.02.16
반응형
루트킷 탐지

루트킷 탐지(Rootkit Detection) 툴을 설명하려면 먼저 루트킷이 무엇이고 얼마나 많이 퍼지고 있으면 루트킷
만 탐지하는 툴이 따로 나왔을가하는 점을 먼저 이해해야 한다.

루트킷은 해커들이 컴퓨터나 네트워크에 침입한 사실을 숨긴 채 관리자용 접근권한을 획득하는데 사용하는
도구,즉 프로그램의 모음이다. 칩입자는 먼저 알려져 있는 시스템 취약점을 찾아내거나 암호를 크래킹하는 등의
방법으로 사용자용 접근 권한을 획득한뒤, 컴퓨터에 루트킷을 설치한다. 루트킷은 네트워크 상의 다른 컴퓨터에 있는 
사용자 ID와 암호들을 수집함으로써, 해커에게 루트 권한이나 기타 특수한 접근 권한을 제공한다. 
루트킷은 또한 해킹 탐지를 교묘하게 회피하기 위해 다음과 같은 일을 하는 유틸리티 프로그램들로 구성
될 수 있다.

* 트래픽이나 키스트로크를 감시

*해커가 이용할 목적으로 시스템 내에 백도어를 만듦

*로그 파일 수정

*네트워크상의 다른 컴퓨터들을 공격

*기존 시스템 도구들을 수정

kit이라는 이름이 붙었다고 해서 특별히 어떤 구성이 정해져 있는 것은 아니다.

루트킷 분야만 가지고도 상당히 범위가 넓으므로 여기서는 루트킷을 탐지'제거하는 툴 소개 정도로 정리하
려고 한다. 책에서 소개하는 루트킷 외에도 다른 툴들은 많이 있다. 각각 의 툴들은 보유한 패턴들이 다르므
로 필요할 때가 있을 수 있으니 알아두도록 하자.

IceSword

IceSword는 한국말로 하면 얼음 칼이며, 대단히 강력한 안티 루트킷이다. 제작자가 중국인인데, 외국의
한 기사에서 자신이 루트킷에 걸려서 곤란했던 적이 있어서 스스로 치료해보자는 의미로 만든 것이라고 한다.

IceSword는 실제 경험에 의한 루트킷 분석을 목적으로 만들어졌기 때문에 타 업체에서 만든 루트킷과는
다른성격을 가지고 있다. 기업에서 제작된 안티 루트킷과는 달리 파일을스캔하는 과정이 없으며, 대신에 다양한 
시스템 상태 보기를 제공함으로써 루트킷의 제거를 유도한다. 물론 이것을 다 알고 처리하기 위해서는 많은
학습이 선행되어야 하며 별도의 백업을 하는 방법이 존재하지 않기 때문에 특히 더 많은 주의가 필요하다.

중국 개발자가 자신의 블로그에서 배포중인 툴인 만큼 기업체에서 제공하는 패턴처럼 자주 업데이트가 되지
는 않지만, 루트킷 탐지 분야에서는 최고의 툴로 찬사를 받고 있는 툴이다.

매우 강력한 삭데와 접근 방법 제공을 통해 자동 스캔하는 것 그 이상의 성과를 얻을 수 있도록 구성
되어있다. 간략하게 각각의 기능에 대해서 알아보자.

Process : 현재 실행 중인 프로세스 목록을 보여주며, 장치 관리자에서는 볼 수 없는 숨겨진 프로세서
까지 볼수 있다.

Port : 네트워크의 연결 상태를 보여준다. 연결된 포트들을 확인하여 기본적으로 허용한 포트가 아니라면,
이를 통해 어느 위치에 문제의 파일이 작동중인지 알 수 있다.

Kernel Module : 실행 파일에 의해 로드된 시스템파일(.SYS)이나 동적 라이브러리 파일(.DLL)의 목록을 보여준다.
대부분의 루트킷은 자신을 은폐하기 위해 SYS나 dll파일을 몇개 심는데, 그 목록을 볼 수 있게 해준다.

Startup : 실행 파일에 있는 목록을 보여주며, 시작 지점에 있는 레지스트리의 목록을 보여준다.

Win32 Services : 서비스로 실행되는 프로세스 목록을 보여준다. 유명한 루트킷의 경우에는 IceWord가 자동으로
빨강색으로강조하고, 일부 루트킷의 경우에는 자동 탐지가 안되므로 사용자가 직접 판단을 해야한다.

SPI(Service Provider Interface) :  네트워크 드라이버에 로딩되거나 영향을 미치는 부분을 보여준다.일부
루트킷의 경우 winsock을 이용하여 특정 네트워크 패킷을 캡쳐하는 기능을 갖고 있기 때문에 이에 대한 점검
방법으로 사용할 수 있다. ARP가 이상한 시스템의 경우 대부분 이곳에 문제가 있는 시스템이 많다.

BHO : 브라우저나 시스템의 쉘 실행시 로딩되는 DLL들의 목록이다. 이부분읜 Iceword가 아닌 툴들도 비슷한 결과를
얻을 수 있다.

SSDT : 시스템의 메모리를 참고할 수 있게끔 하는 부분이다. 이미 다른 곳에서 결과를 얻을 수 있기 때문에
자주 볼 필요는 없지만, 앞에서 나열한 모든 기능으로 잡을 수 없는 경우 이곳에서 실행중인 메모리를 봄으로써 답을 찾는 경우가 있다.

Message Hooks : 프로그램 동작시 입출력 장치의 반응을 보여준다. 이역시 자주 쓰인 다고는 할 수없지만,
키 로거가 의심되는 경우 이곳에서 손쉽게 잡을 수 있다.

Log process/ Therad Cration : 어떤 프로세서가 어떤 것을 실행하는지를 보여주는 부분으로 IceWord가 실행중인 경우에만 프로세서
의 기록을 남기며, 주로 주기적인 프로그램이 돈다고 의심될 때 이부분을 확인하면 유용하다.

scan Modules Hooks : 모듈들을 검사하여 특정 프로세서나 파일을 모니터링 할 수 있다. 이기능을 사용하면
꽤 많은 부하가 잇으므로 사용에 주의가 필요하다.

Registry :  윈도우의 일반 레지스트리 편집기인 regdit.exe로는 접근할 수 없는 부분까지 아무 제재 없이 접근이
가능하다.

File : 파일 탐색기로써 숨긴 폴더 ' 파일을 포함하여 시스템 폴더 ' 파일까지 모두 볼 수 있으며, 강제 삭제도 가능하다.
어떤 제재도 가하지 않고 접근이 가능하므로 사용시 주의하기 바란다.


'Security > Reverse Engineering' 카테고리의 다른 글

커널 모드 디버거  (0) 2018.02.16
Reversing(역공학)  (0) 2018.02.16

+ Recent posts