Computer >> 컴퓨터 >  >> 시스템 >> Windows 10

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

루트킷(Rootkit)은 해커가 기기 내에 지속적이고 거의 탐지 불가능한 악성코드를 숨겨, 수년에 걸쳐 조용히 데이터를 탈취하거나 시스템 리소스를 악용하는 데 사용하는 도구입니다. 또한 키로거(Key logger) 형태로 작동하여 사용자의 키 입력과 통신 내용을 감시, 사생활 정보를 빼내기도 합니다.

이 해킹 기법은 2006년 이전, 마이크로소프트가 Windows Vista부터 모든 장치 드라이버에 디지털 서명을 의무화하기 전까지 더 널리 쓰였습니다. 커널 패치 보호(Kernel Patch Protection, KPP) 기술 도입으로 악성코드 제작자들은 공격 방식을 바꿔야 했고, 2018년 '자신로(Zacinlo)' 광고 사기 작전이 드러나면서 루트킷이 다시 주목받게 되었습니다.

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

2006년 이전의 루트킷은 모두 운영체제(OS) 레벨에서 작동했습니다. 디트라헤르(Detrahere) 악성코드 패밀리에서 파생된 자신로의 경우, 펌웨어 기반 루트킷이라는 더욱 위험한 형태를 보여주었습니다. 그럼에도 불구하고 루트킷은 연간 발견되는 전체 악성코드의 약 1% 미만을 차지합니다.

하지만 그 위험성을 고려할 때, 이미 시스템에 침투했을 수 있는 루트킷을 탐지하는 방법을 이해하는 것은 매우 중요합니다.

Windows 10에서 루트킷 탐지하기 (심층 분석)

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

자신로는 발견되기 전까지 약 6년간 Windows 10 플랫폼을 표적으로 활동했습니다. 이 루트킷 구성 요소는 고도로 설정 가능하며, 자신의 기능을 위협하는 프로세스로부터 스스로를 보호하고, SSL 통신을 가로채 복호화하는 능력까지 갖추고 있었습니다.

모든 설정 데이터를 Windows 레지스트리 내에 암호화하여 저장하고, Windows 종료 과정에서 메모리 상의 자신을 다른 이름으로 디스크에 다시 쓰며 레지스트리 키를 업데이트합니다. 이러한 행위 덕분에 일반적인 백신 소프트웨어의 탐지를 회피할 수 있었습니다.

이는 표준 백신이나 악성코드 방지 프로그램만으로는 루트킷 탐지가 불충분함을 보여줍니다. 다만, 최상위급 안티멀웨어 프로그램 중 일부는 루트킷 공격 의심 정황을 경고해 주는 기능을 제공합니다.

우수한 백신 소프트웨어의 5가지 핵심 탐지 기능

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

오늘날 주요 백신 프로그램들은 루트킷 탐지를 위해 다음 5가지 주요 방식을 모두 수행합니다.

  • 시그니처 기반 분석(Signature-based Analysis) – 기록된 파일을 알려진 루트킷 시그니처와 비교합니다. 또한 공격적인 포트 사용 등 알려진 루트킷의 운영 활동 패턴을 모방하는 행동 패턴도 탐지합니다.
  • 후킹/가로채기 탐지(Interception Detection) – Windows는 명령 실행을 위해 포인터 테이블을 사용하는데, 루트킷은 위협이 되는 요소를 대체하거나 수정하려 시도합니다. 이 과정에서 시스템에 존재가 드러나게 됩니다.
  • 다중 소스 데이터 비교(Multi-Source Data Comparison) – 루트킷은 숨기 위해 표준 검사에서 보이는 데이터를 변조할 수 있습니다. 상위/하위 레벨 시스템 호출의 반환 결과 차이, 또는 RAM에 로드된 프로세스 메모리와 하드디스크 상의 파일 내용을 비교하여 불일치를 찾아냅니다.
  • 무결성 검사(Integrity Check) – 모든 시스템 라이브러리는 시스템이 '깨끗한' 상태일 때 생성된 디지털 서명을 가집니다. 우수한 보안 소프트웨어는 이 라이브러리 코드가 변조되었는지 서명 대조를 통해 확인합니다.
  • 레지스트리 비교(Registry Comparisons) – 대부분의 백신 프로그램은 예약된 일정에 따라 이 검사를 수행합니다. 깨끗한 기준 파일과 클라이언트 파일을 실시간으로 비교하여, 요청되지 않은 실행 파일(.exe) 존재 여부를 판단합니다.

루트킷 검사 수행하기

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

루트킷 검사를 수행하는 것이 감염 여부를 확인하는 가장 확실한 시도입니다. 감염된 운영체제 자체를 신뢰하여 루트킷을 찾는 것은 불가능에 가깝습니다. 루트킷은 '마스터 스파이'처럼 모든 흔적을 은폐하고 눈에 띄는 곳에 숨어있기 때문입니다.

시스템이 루트킷에 감염되었다고 의심된다면, 컴퓨터 전원을 완전히 끄고 확실하게 깨끗한 별도 시스템(예: 부팅 가능한 USB 백신, 다른 신뢰할 수 있는 PC)에서 디스크를 마운트해 검사하는 전략이 효과적입니다. 메모리 덤프 분석은 루트킷을 찾아내는 확실한 방법 중 하나입니다. 루트킷이 시스템에 명령을 내리며 실행하는 지시 사항은 메모리상에 반드시 남기 때문입니다.

WinDbg를 활용한 악성코드 분석

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

마이크로소프트는 애플리케이션, 드라이버, 운영체제 자체에 대한 디버깅 검사를 수행할 수 있는 다기능 디버깅 도구 WinDbg(Windows Debugger)를 제공합니다. 커널 모드 및 사용자 모드 코드 디버깅, 크래시 덤프 분석, CPU 레지스터 검사 등이 가능합니다.

일부 Windows 버전에는 WinDbg가 기본 포함되어 있으며, 없는 경우 Microsoft Store에서 다운로드할 수 있습니다. WinDbg Preview는 최신 버전으로, 향상된 UI, 빠른 창 전환, 완벽한 스크립팅 지원 등 개선된 기능을 제공하면서도 기존 명령어와 워크플로는 동일하게 유지합니다.

최소한 WinDbg를 사용하여 메모리 덤프나 크래시 덤프(블루스크린, BSOD 포함)를 분석할 수 있습니다. 분석 결과에서 악성코드 공격 지표(IOC)를 찾아낼 수 있습니다. 특정 프로그램이 악성코드로 인해 방해를 받거나 불필요하게 많은 메모리를 사용한다고 판단되면, 해당 프로세스의 덤프 파일을 생성하여 WinDbg로 분석하면 됩니다.

전체 메모리 덤프는 디스크 공간을 크게 차지하므로, 커널 모드 덤프(Kernel-Mode Dump)작은 메모리 덤프(Small Memory Dump)를 생성하는 것이 더 효율적일 수 있습니다.

  • 커널 모드 덤프: 크래시 시점 커널의 모든 메모리 사용 정보를 포함합니다. 루트킷 탐지에 가장 유용합니다.
  • 작은 메모리 덤프: 드라이버, 커널 등 기본 정보만 포함하며 크기가 매우 작습니다. BSOD 원인 분석에는 유용하지만 루트킷 탐지에는 한계가 있습니다.

커널 모드 덤프 파일 생성하기

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

커널 모드 덤프 파일은 다음 세 가지 방법으로 생성할 수 있습니다.

  • 제어판에서 덤프 파일 활성화 후 시스템이 저절로 크래시되길 기다림
  • 제어판에서 덤프 파일 활성화 후 시스템을 강제로 크래시시킴 (키보드 단축키 등)
  • 디버거 도구(WinDbg)를 사용하여 직접 생성 (권장)

세 번째 방법을 사용하겠습니다. WinDbg 명령 창에 다음 명령어를 입력하기만 하면 됩니다.

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

.dump /f FileName 명령어를 사용하세요. FileName에는 저장할 덤프 파일 경로와 이름을 적절히 지정하세요. (예: C:\Dumps\kernel_dump.dmp). /f 옵션은 전체(Full) 덤프를 의미하며, 소문자 'f'여야 합니다. 대문자 'F'를 사용하면 다른 유형의 덤프가 생성됩니다.

디버거가 작업을 완료하면(최초 스캔은 수 분 소요), 덤프 파일이 생성되며 분석을 시작할 수 있습니다.

휘발성 메모리(RAM) 사용 내역 등 루트킷 존재를 나타내는 지표를 분석하려면 경험과 테스트가 필요합니다. 초보자가 실사용 시스템에서 악성코드 분석 기법을 테스트하는 것은 권장하지 않습니다. WinDbg 작동 원리에 대한 깊은 지식 없이 실수로 라이브 바이러스를 배포하거나 시스템을 손상시킬 위험이 있기 때문입니다.

다행히 더 안전하고 초보자도 접근하기 쉬운 탐지 방법들이 있습니다.

추가적인 탐지 및 검사 방법

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

수동 탐지와 행동 분석 또한 루트킷 탐지에 신뢰할 수 있는 방법입니다. 루트킷 자체의 위치를 특정하려 하기보다, '루트킷다운 행동'을 찾는 접근법입니다.

  • 소프트웨어 설치 시 고급/사용자 지정 옵션 활용: 번들로 설치되는 낯선 파일들이 있는지 세부 사항에서 확인하세요. 의심스러운 파일은 설치에서 제외하거나, 온라인 검색을 통해 악성코드 여부를 확인하세요.
  • 방화벽 및 로그 리포트 활용: 매우 효과적인 탐지 수단입니다. 방화벽은 네트워크 감시 시도를 알리고, 검증되지 않거나 의심스러운 다운로드를 설치 전 격리합니다. 이미 감염이 의심된다면 방화벽 로그에서 비정상적인 아웃바운드 통신 등을 찾아보세요.

방화벽 로그 리포트 검토하기

Windows 10에서 루트킷 탐지 및 제거 방법: 심층 가이드

현재 방화벽 로그를 검토해야 합니다. 방화벽 로그 필터링 기능이 있는 오픈소스 도구 IP Traffic Spy 같은 프로그램을 사용하면 분석이 훨씬 수월합니다. 로그에는 공격 발생 시 필요한 정보가 기록됩니다.

독립적인 이그레스 필터링 방화벽을 갖춘 대규모 네트워크라면 IP Traffic Spy가 필요 없습니다. 방화벽 로그에서 모든 장치와 워크스테이션의 인바운드/아웃바운드 패킷을 바로 확인할 수 있습니다.

가정이나 소규모 사업체 환경에서는 ISP 제공 모뎀, 개인용 방화벽 또는 라우터의 로그를 통해 네트워크에 연결된 각 장치의 트래픽을 식별할 수 있습니다.

또한 Windows 방화벽 로그 파일 활성화도 유용합니다. 기본적으로 로그 기록이 비활성화되어 있어 아무런 데이터도 남지 않습니다.

Windows 방화벽 로그 활성화 단계별 가이드

  1. Win + R 키를 눌러 실행 창을 열고, wf.msc를 입력 후 Enter를 누릅니다.
  2. 'Windows Defender 고급 보안이 포함된 Windows 방화벽' 창 좌측 메뉴에서 "로컬 컴퓨터의 Windows Defender 고급 보안이 포함된 Windows 방화벽"을 선택(하이라이트)합니다. 우측 '작업' 메뉴에서 속성(Properties)을 클릭합니다.
  3. 속성 창에서 "프라이빗 프로필(Private Profile)" 탭으로 이동, '로깅(Logging)' 섹션의 사용자 지정(Customize) 버튼을 클릭합니다.
  4. 로그 파일 최대 크기, 저장 경로, 기록할 내용(버린 패킷/성공한 연결/둘 다)을 설정합니다.
    • 버린 패킷(Dropped packets): Windows 방화벽이 차단한 패킷입니다.
    • 기본 로그 크기 제한은 4MB이며, 기본 저장 경로는 %SystemRoot%\System32\LogFiles\Firewall\Pfirewall.log입니다.
    • 로그 크기 제한을 늘리면 시스템 성능에 영향을 줄 수 있으니 주의하세요.
    • 설정 완료 후 확인을 누릅니다.
  5. 동일한 단계를 "퍼블릭 프로필(Public Profile)" 탭에서도 반복하여 공용/사설 네트워크 모두에 대해 로그가 생성되게 합니다.
  6. 생성된 로그 파일은 메모장 같은 텍스트 에디터로 보거나 스프레드시트로 가져와 분석할 수 있습니다.
  7. IP Traffic Spy 같은 데이터베이스 파서 프로그램으로 로그를 가져와 트래픽을 필터링/정렬하면 의심스러운 활동을 쉽게 식별할 수 있습니다.

로그 파일에서 조금이라도 이상 징후가 있는지 주의 깊게 살펴보세요. 미세한 시스템 오류조차 루트킷 감염의 신호일 수 있습니다. 예컨대, 무거운 작업을 하지 않는데도 CPU나 대역폭 사용량이 과도하게 치솟는다면 중요한 단서가 됩니다.