NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    기타 루트킷이란? (스텔스 모드)

    페이지 정보

    본문

    루트킷이란 무엇인가?
    루트킷이라는 용어는 바이러스, 스파이웨어 및 트로이 목마를 포함한 맬웨어가 스파이웨어 차단기, 바이러스 백신 및 시스템 관리 유틸리티로부터 자신의 존재를 숨기려고 시도하는 메커니즘과 기술을 설명하는 데 사용됩니다. 멀웨어가 재부팅 후에도 살아남는지 여부와 사용자 모드 또는 커널 모드에서 실행되는지에 따라 몇 가지 루트킷 분류가 있습니다.

    Pvlb2y8.png

     

     

    루트킷의 종류

    영구 루트킷

    영구 루트킷은 시스템이 부팅 될 때마다 활성화되는 맬웨어와 관련된 루트킷입니다. 이러한 악성 코드에는 시스템이 시작될 때마다 또는 사용자가 로그인 할 때마다 자동으로 실행되어야하는 코드가 포함되어 있으므로 레지스트리 또는 파일 시스템과 같은 영구 저장소에 코드를 저장하고 사용자 개입없이 코드가 실행되는 방법을 구사합니다. 참고로 엔지엠은 레지스트리에 아무런 정보도 기록하지 않습니다.

     

    메모리 기반 루트킷
    메모리 기반 루트킷은 영구 코드가 없습니다. 재부팅하면 유지되지 않는 맬웨어입니다.

     

    사용자 모드 루트킷
    이 탐지를 회피하는 방법은 많습니다. 예를 들어 파일 시스템 디렉터리의 내용을 열거하기 위해 탐색기 및 명령 프롬프트를 비롯한 파일 시스템 탐색 유틸리티에서 사용하는 FindFirstFile/FindNextFile API에 대한 모든 호출을 가로 챌 수 있습니다. 응용프로그램이 루트킷과 관련된 파일을 식별해서 결과를 반환할 수 있있으면, 루트킷은 출력을 가로 채서 수정하여 항목을 제거합니다. 
    Windows 네이티브 API는 사용자 모드에서 클라이언트와 커널 간의 인터페이스 역할을 합니다. 정교한 사용자 모드 루트킷은 네이티브 API의 파일 시스템, 레지스트리 및 프로세스 열거 기능을 가로 챕니다. 이렇게하면 Windows API 열거의 결과를 네이티브 API 열거에 의해 반환 된 결과와 비교하는 스캐너가 감지하지 못합니다.

     

    커널 모드 루트킷
    커널 모드 루트킷은 커널 모드에서 네이티브 API를 가로 챌 수 있을뿐만 아니라 커널 모드 데이터 구조를 직접 조작 할 수도 있기 때문에 훨씬 더 강력 할 수 있습니다. 맬웨어 프로세스의 존재를 숨기는 일반적인 기술은 커널의 활성 프로세스 목록에서 프로세스를 제거하는 것입니다. 프로세스 관리 API는 목록의 내용에 의존하기 때문에 맬웨어 프로세스는 작업 관리자 또는 프로세스 탐색기와 같은 프로세스 관리 도구에 표시되지 않습니다.

    URWcrtp.png

     

     

    루트킷 원리

    Windows 환경에서 루트킷은 DOS 스텔스 바이러스에서 유래 되었습니다. 스텔스(Stealth) 바이러스는 프로세스와 프로세스 사이에 자신을 은닉하여 일반적인 프로세스 확인(작업 관리자나 쉘등등)으로 탐지할 수 없습니다. 이런 특성으로 인해 루트킷을 사용하는 바이러스 또는 멀웨어는 정보를 탈취하기 위한 통로(Back-door) 역할을 하기도 합니다. Windows는 운영체제를 구동하기 위한 핵심 코드를 커널 레벨에서 실행합니다. 그렇기 때문에 일반적인 응용프로그램과 분리하여 실행할 수 있습니다. Ring0(커널 모드)와 Ring3(사용자 모드)으로 구성되어 있습니다. Ring1과 Ring2는 가상화 환경에서 커널과 통신하는 Ring1(Guest OS)를 이용합니다. 아무튼, CPU의 Privilege(권한)의 레벨이 높을수록 CPU나 메모리에 직접 접근해서 변조를 수행하게 됩니다. 반대로 다른 프로그램이 커널 레벨에서 동작하는 프로그램을 감지(Detect)하는건 어려워집니다.

     

    커널 레벨 Ring0에 접근하기 위한 일반적인 방법은 드라이버를 설치하는 방식입니다. 커널 영역은 높은 권한을 필요로 하는데, 하드웨어 컨트롤러나 OS 코드와 같은 모듈은 Ring0에 접근할 수 있기 때문입니다. 그래서, 가상 드라이버를 윈도우에 설치하고 이를 통해서 Windows의 커널 메모리에 접근하여 자신의 프로세스 아이디를 삭제시키는 방식입니다. 여기까지 작업이 완료되면 일반적으로 작업 관리자에서 프로그램이 표시되지 않게 됩니다. 참고로, 가상 메모리 공간에서 커널 영역은 0x8000000 이상입니다. 간혹가다 0x8000000 이상 에러 메시지가 표시된다는 것입니다. 대부분은 외부 기기(핸드폰, 카메라, 기타 장치등등)에 의해 발생되며 커널에 접근 권한이 없거나 메모리 핸들링 오류입니다. 해당 장치 제조사 홈페이지에서 드라이버를 다시 받아서 설치하거나 업데이트하면 대부분은 이 에러를 해결할 수 있습니다.

    GWpoRlG.png

     

     

    윈도우즈 10 (64bit) 패치 가드

    윈도우즈 10의 64비트 버전은 패치가드가 존재합니다. 윈도우즈 XP 시절(2005)에 처음 도입되어 프로그램이 커널을 조작할 수 없도록 막았습니다. 마이크로소프트에 따르면, 커널에 대한 조작은 시스템 보안 및 신뢰성을 떨어뜨리고 성능을 저하시키기 때문에 공식적으로 지원하지 않는다고 밝히고 있습니다. 하지만, 루트킷을 통해 수정할수는 있습니다. DKOM에 대한 기술을 테스트하면서 알게된 사실은 64비트 머신에서 테스트 모드로 DKOM을 수행하더라도 결국은 BSOD(Blue Screen Of Death, 블루 스크린)가 발생한다는 것입니다. 여기서 한가지 알게된 사실은 비주기적으로 패치 가드가 수행된다는 점입니다. 이를 피하기 위해서는 윈도우즈 32비트를 설치해야 하는 불편함이 있습니다.

    pYaYsdM.png

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.