RootkitRevealer란 무엇인가: 작동 원리, 사용 방법 및 루트킷 징후

마지막 업데이트 : 22 9월 2025
  • RootkitRevealer는 Windows API와 원시 데이터 간의 불일치를 감지하여 숨겨진 문제를 찾아냅니다.
  • 결과 해석: NTFS 메타데이터, 레지스트리 및 파일 시스템 불일치 유형.
  • PsExec와 함께 -a -c -m -r 및 원격 실행 옵션을 사용하면 시스템이 유휴 상태일 때 최소한의 오탐지율을 요구합니다.
  • 예방 및 대응: 보안 부팅/TPM, 오프라인 검사, 루트킷 방지 도구 및 제어된 복원.

Windows의 루트킷 감지기

RootkitRevealer는 모든 Windows 전문가가 알아야 할 전설적인 유틸리티 중 하나입니다. 마크 러시노비치가 주도한 Sysinternals 팀에서 개발한 이 프로그램은 수년 전에 등장했지만, 시스템에 표시되는 내용과 실제 디스크 내용 간의 불일치를 감지하는 방법을 이해하는 데 여전히 참고 자료로 활용되고 있습니다.

다른 스캐너와 달리, 이 스캐너는 시그니처나 패턴을 찾지 않습니다. 대신 윈도우 API의 고수준 보기와 디스크 및 레지스트리의 원시 저수준 읽기를 비교합니다. 이看似 간단해 보이는 아이디어는 악성 프로그램이 시스템 호출을 조작하여 파일, 키 또는 값을 숨기려고 할 때 이를 드러냅니다.

RootkitRevealer란 무엇이고 어떤 시스템에서 작동합니까?

이 프로그램은 사용자 모드와 커널 모드 모두에서 루트킷의 징후를 탐지하는 고급 도구입니다 . 원래 Windows XP 및 Windows Server 2003(32비트)용으로 개발되었으며, 일반적으로 무료이며 영어로 제공되고 크기는 약 231KiB입니다. 당시에는 Windows NT/2000/XP/Vista와의 호환성도 언급된 경우가 많았습니다.

시간이 흐르면서 일부 악성코드 제작자들이 실행 파일의 이름을 감시하기 시작했기 때문에 순수 명령줄 버전은 사라졌습니다. 이를 방지하기 위해 프로그램은 임의의 이름으로 된 자체 복사본에서 서비스로 실행되어 이름으로 탐지하기가 더 어려워지고 100% 콘솔 인터페이스 제공이 복잡해집니다.

루트킷이란 무엇인가요? 주요 개념

루트킷이란 악성코드(바이러스, 트로이목마, 스파이웨어 등)가 사용자와 보안 도구로부터 숨을 수 있도록 하는 기술과 메커니즘을 지칭하는 용어입니다 . 루트킷은 여러 유형으로 나뉘는데, 재부팅 후에도 남아 있는 지속형, 재부팅 시 사라지는 메모리 상주형, 사용자 모드형, 커널 모드형 등이 있으며, 그 외에도 다양한 변종이 존재합니다.

사용자 모드 루트킷은 FindFirstFile/FindNextFile과 같은 함수 또는 시스템의 기본 열거자를 가로채서 수정된 파일, 프로세스 또는 레지스트리 키를 드러내는 항목을 필터링할 수 있습니다 . 이렇게 하면 탐색기, 명령 프롬프트 또는 레지스트리 편집기가 실제 존재하는 내용을 볼 수 없게 됩니다.

커널 모드 루트킷은 단순히 네이티브 API를 가로채는 것 외에도 커널 구조를 직접 조작할 수 있습니다. 예를 들어, 실행 중임에도 불구하고 작업 관리자나 프로세스 탐색기에 나타나지 않도록 활성 프로세스 목록에서 자신의 프로세스를 제거할 수 있습니다.

부트로더에는 하이브리드(사용자 기반과 커널 기반이 혼합된 형태), 펌웨어(BIOS/UEFI 및 기타 구성 요소), 부트 ​​또는 부트킷(MBR/UEFI), 가상(실제 운영 체제를 가상 머신 내부에 배치) 및 메모리 기반(비영구) 부트로더가 있습니다. 특히 메모리 기반 부트로더는 파악하기가 매우 어렵고, 펌웨어와 부트로더는 운영 체제를 완전히 재설치한 후에도 유지됩니다.

RootkitRevealer 작동 방식

RKR은 두 가지 스냅샷을 비교합니다. 하나는 Windows API의 상위 수준 보기이고, 다른 하나는 볼륨 및 레지스트리 하위 트리 파일(하이브)에 대한 원시적인 하위 수준 읽기입니다. 루트킷이 무언가를 숨기기 위해 상위 수준 호출을 변조하는 경우, 디스크와 레지스트리에 있는 내용이 API에서 보고하는 내용과 일치하지 않아 진단 가능한 불일치가 발생하므로 이러한 변경 사항이 드러납니다.

이론적으로 루트킷은 RootkitRevealer의 원시 읽기를 가로채고 데이터를 실시간으로 덮어쓰는 방식으로 탐지를 피할 수도 있습니다. 이를 위해서는 NTFS, FAT 및 레지스트리 형식에 대한 깊이 있는 지식이 필요하며, 불일치나 명백한 부작용 없이 구조를 수정할 수 있어야 합니다. 이는 매우 복잡한 기술적 과제 이며, 실제로 관찰된 사례는 드뭅니다. 그럼에도 불구하고 완벽한 "만능 탐지기"는 없습니다. 외부 환경(예: 최고의 Linux 배포판 사용)에서 부팅하는 경우에도 매우 정교하고 지속적인 악성 프로그램 에 의해 탐지가 차단될 수 있습니다 . 실제로 가장 강력한 접근 방식은 신뢰할 수 있는 환경에서 온라인 분석과 오프라인 검증을 결합하는 것입니다.

  Windows 11 업데이트 KB5070311: 진정한 다크 모드 및 흰색 깜빡임 오류

요구 사항, 모범 사례 및 실행

이 검사를 실행하려면 계정에 "파일 및 디렉터리 백업", "드라이버 로드" 및 "볼륨 유지 관리" 권한이 필요합니다(이러한 권한은 Windows XP 이상 버전의 관리자에게 기본적으로 부여됩니다). 오탐을 최소화하려면 시스템이 정지된 상태이고 실행 중인 애플리케이션이 없는 상태 에서 검사를 실행하는 것이 좋습니다.

수동으로 실행할 경우 스캔 버튼을 누르기만 하면 됩니다. 스캔 과정 동안 프로그램은 진행 상황을 업데이트하고 발견된 불일치 사항을 나열합니다. 두 가지 관련 옵션이 있습니다. "NTFS 메타데이터 파일 숨기기"(NTFS에서 숨겨진 표준 메타데이터가 표시되지 않도록 함, 기본적으로 활성화됨)와 "로그 스캔"(기본적으로 활성화됨, 이 옵션을 선택 해제하면 Windows 레지스트리 스캔을 건너뜁니다 )입니다.

자동화의 경우, 사용자가 개입하지 않고도 시작, 로그인, 종료할 수 있는 매개변수를 지원합니다. rootkitrevealer outputfile]. 옵션 -a 자동으로 시작되고 종료됩니다. -c 결과를 CSV로 출력합니다. -m NTFS 메타데이터를 표시합니다. -r 레지스트리 검사를 비활성화합니다. 출력 파일은 다음 위치에 있어야 합니다. 접근 가능한 로컬 볼륨.

PsExec를 사용하면 원격 실행이 가능합니다. 예: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log. 과 -c, 진행 상황이 표시되지 않고 불일치 사항이 CSV로 인쇄되어 가져오기가 더 쉽습니다. 데이터베이스 또는 스크립트에서.

결과 해석 및 일반적인 불일치

루트킷이 항목을 숨길 때 가장 흔하게 발생하는 오류는 "Windows API에서 숨김"입니다. NTFS 메타데이터 표시를 활성화하지 않은 경우, NTFS가 $MFT 또는 $Secure 와 같은 내부 파일을 API에서 숨기기 때문에 차이가 발생할 수 있습니다 . 일부 안티바이러스 프로그램 또한 데이터를 다른 스트림에 저장하고 숨기기 때문에 유사한 오류가 발생할 수 있습니다.

다음은 NTFS(Windows Server 2003)에 정의된 표준 메타데이터 중 일부입니다. $AttrDef, $BadClus, $BadClus:$Bad, $BitMap, $Boot, $LogFile, $Mft, $MftMirr, $Secure, $UpCase, $Volume, $Extend, $Extend\$Reparse, $Extend\$ObjId, $Extend\$UsnJrnl, $Extend\$UsnJrnl:$Max, $Extend\$Quota.

RKR은 파일 시스템의 세 가지 소스, 즉 Windows API, 마스터 파일 테이블(MFT) 및 디스크의 디렉터리 인덱스를 상호 연관시킵니다. 특히 분석 중에 파일이 생성되거나 삭제되어 일시적인 불일치가 발생하는 경우 "API에는 표시되지만 인덱스 또는 MFT에는 표시되지 않음", "MFT에는 표시되지만 API에는 표시되지 않음" 등의 조합이 나타날 수 있습니다.

스캐닝 중 생성 예: C:\newfile.txt, 8바이트 크기이며 "API에는 표시되지만 인덱스나 MFT에는 표시되지 않음"이라는 메시지가 표시됩니다. 이러한 사례가 반드시 루트킷을 의미하는 것은 아니지만, 동시 변경 사항 검사를 받는 동안.

"액세스 거부됨" 메시지가 표시되면 문제가 있는 것입니다. RootkitRevealer는 모든 파일, 디렉터리 또는 키에 액세스할 수 있는 메커니즘을 사용하므로 정상적인 실행 환경에서는 해당 메시지가 나타나서는 안 됩니다.

레지스트리에서 다음과 같은 몇 가지 주목할 만한 불일치가 발견되었습니다. "Windows API 길이가 원시 데이터와 일치하지 않습니다"(실제 내용을 숨기려는 시도일 가능성 있음), "형식 불일치"(예: REG_SZ로 표시되지만 REG_BINARY여야 함), "키 이름에 NULL 값이 포함되어 있습니다"(NULL로 끝나는 문자열과 카운트가 포함된 문자열의 차이를 악용하는 알려진 기법). 마지막 경우에는 Sysinternals의 RegDelNull 유틸리티를 사용하여 NULL 값이 포함된 키를 정리할 수 있습니다.

스캔 중에 값이 변경되면 "데이터 불일치"가 발생할 수 있습니다(예: SQL Server 가동 시간 등) HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc). 값이 다음에 속하는지 확인해야 합니다. 합법적인 구성 요소 실시간으로 데이터를 업데이트합니다.

해커디펜더 루트킷이 대표적인 사례입니다. 해당 루트킷의 서비스와 드라이버는 Windows API에서는 보이지 않았지만, 레지스트리 하이브를 직접 분석하면 존재했습니다. 마찬가지로 파일도 파일 시스템을 직접 분석하면 디스크에서 발견되었습니다.

법의학 환경에서 rootkitrevealer.exe와 관련된 일반적인 오류 및 문제

일부 포렌식 키트(예: WinTaylor)는 rootkitrevealer.exe 와 관련된 일반적인 오류 메시지 (예: "유효한 Win32 응용 프로그램이 아닙니다", "찾을 수 없습니다", "응용 프로그램 오류", "시작 문제")를 나열합니다. 이러한 메시지는 일반적으로 시스템 설치, 시작 또는 종료 중에 발생하거나 다른 상주 응용 프로그램 과의 충돌로 인해 발생합니다.

가장 흔한 원인으로는 손상되거나 누락된 파일, 잘못된 레지스트리 항목, 맬웨어 감염, 불완전한 제거 또는 다른 소프트웨어와의 충돌 등이 있습니다. 레지스트리 항목 손상, 다른 도구에 의한 실수로 인한 삭제, 다운로드 실패 또는 이전 감염 으로 인해 바이너리 파일이 변형된 경우 등이 원인이 될 수 있습니다.

  비밀번호와 패스키의 차이점: 알아야 할 모든 것

재고에 대한 호기심으로 일부 목록에는 대략 334.720바이트 크기의 실행 파일이 문서화되어 있습니다. SHA‑1 및 MD5와 같은 해시 (예: SHA‑1 d39e8a3fe92adc7d7fbc5293edf8a7b965484a59, MD5 ee738fe9bcdd605821002cec8c7206db) 및 CRC32 98b1af0b; 또한 다음을 참조합니다. 컨테이너 앱의 버전 2.1 및 "포렌식 툴킷/운영 체제" 카테고리.

루트킷 탐지 및 대응 방법

루트킷 탐지는 항상 간단한 작업은 아닙니다. 특정 도구 외에도 알려진 위협에 대한 시그니처 분석, 구조 비교, 후킹 및 변경 사항에 대한 메모리 검색, 시스템 충돌 후 메모리 덤프 검토와 같은 기술을 조합하여 의심스러운 모듈을 식별합니다. 또한 네트워크를 보호하고 감염 경로를 줄이기 위해 침입 방지 시스템(IPS)을 사용하는 것도 일반적입니다 .

특수 유틸리티로는 GMER(숨겨진 프로세스 및 커널 변조 탐지), Kaspersky TDSSKiller(특히 부트킷 및 커널 루트킷 탐지), Malwarebytes Anti-Rootkit, Microsoft Defender Offline(Windows 시작 전 검사), RogueKiller 등이 있습니다. 이러한 유틸리티를 신뢰할 수 있는 부팅 가능한 USB 드라이브에서 실행 하거나 안전 모드에서 실행하면 공격 표면을 줄일 수 있습니다.

부팅 또는 펌웨어 위협의 경우 Kaspersky Rescue Disk와 같은 복구 미디어를 사용하고 MBR을 복원하는 것이 좋습니다. bootrec /fixmbr 적절하고 심각한 경우 제조업체에서 제공하는 BIOS/UEFI를 깨끗한 버전으로 업데이트/플래시하여 문제를 근절합니다. 저수준 지속성.

Sysinternals를 활용한 모니터링은 매우 유용합니다. 프로세스 및 파일 활동을 모니터링하는 Process Monitor(ProcMon), 시작 시 로드되는 프로그램을 확인하는 Autoruns, 그리고 높은/낮은 수준의 불일치를 탐지하는 RootkitRevealer 등이 있습니다. Wazuh와 같은 SIEM 플랫폼 과 기업 환경의 텔레메트리 데이터는 예상치 못한 네트워크 동작이나 데이터 무결성 변화를 파악하는 데 도움을 줄 수 있습니다.

감염이 확인되면 다음과 같은 순서로 진행하는 것이 합리적입니다. 먼저 해당 기기를 네트워크에서 분리하고, 외부 환경에서 스캔한 후, 부팅/펌웨어 무결성을 평가합니다. 만약 무결성이 보장되지 않는다면 데이터를 백업하고, 디스크를 완전히 정리(DBAN과 같은 도구 사용)한 후 검증된 미디어를 사용하여 재설치합니다. 그런 다음 Secure Boot 및 TPM 과 같은 보안 조치를 활성화합니다.

예방: 루트킷에 대한 합리적인 보호

예방이 핵심입니다. 시스템을 최신 상태로 유지하고, 타사 소프트웨어에 패치를 적용하고, 출처가 불분명한 실행 파일은 사용하지 말고, 크랙이나 키젠도 사용하지 마세요. 이러한 프로그램들은 루트킷 드로퍼와 로더를 유포하는 데 흔히 사용됩니다.

USB 자동 실행을 비활성화하고, 외장 드라이브를 열기 전에 스캔하며, 기업 환경에서는 포트를 제한하거나 차단하고 필요에 따라 방화벽을 적용하십시오. 권한이 없는 사용자 계정을 사용하고, 최소 권한 원칙을 적용하며, 중요한 변경 사항에는 관리자 자격 증명을 요구하여 권한 상승으로 인한 은밀한 상황 발생 가능성을 줄이십시오.

호환되는 하드웨어에서는 UEFI에서 Secure Boot 및 TPM을 활성화하여 부팅 체인과 키 봉인을 보호하십시오. 정기적으로 오프라인 또는 변경 불가능한 백업을 유지하고 스냅샷/복원 지점을 사용하여 문제 발생 시 복구 시간을 단축하십시오.

루트킷 설치 방법: 드로퍼, 로더, 벡터

공격자들은 일반적으로 루트킷을 "드롭퍼"와 "로더"라는 두 가지 위협을 결합한 형태로 배포합니다. "드롭퍼"는 악성코드 패키지를 전달하고, "로더"는 버퍼 오버플로와 같은 취약점을 악용하여 악성코드를 잘못된 위치에 심습니다. 이러한 공격은 피싱 이메일 , 가짜 설치 프로그램 또는 사기성 업데이트로 위장합니다.

일반적인 공격 경로는 메시징 클라이언트를 하이재킹하여 악성 링크를 유포하는 것, 다운로드 포털에서 소프트웨어를 트로이목마화하는 것, 다른 악성 프로그램을 매개체로 사용하는 것, 그리고 콘텐츠가 풍부한 문서(예: 특정 PDF)에 악성 프로그램을 삽입하여 열 때 자동으로 실행되도록 하는 것 등이 있습니다.

공격 징후 및 탐지 단서

루트킷의 목표는 탐지되지 않는 것입니다. 그럼에도 불구하고 사용자 개입 없이 구성이 변경되거나, 숨겨진 트래픽으로 인해 네트워크가 비정상적으로 중단되거나, 알 수 없는 프로세스가 실행되거나, 종료할 수 없는 서비스가 실행되거나, 보안 도구가 설명 없이 비활성화되는 등의 현상이 발생할 수 있습니다.

또 다른 단서는 파일, 프로세스 또는 레지스트리 키를 나열하는 유틸리티들이 서로 다른 경로(API 대 원시 읽기)를 사용하여 제공하는 정보가 상충된다는 점입니다. RootkitRevealer와 같은 접근 방식이 빛을 발하는 부분이 바로 이 지점입니다. 디스크에 "존재"하지만 API에 따르면 "존재하지 않는" 동일한 객체가 조작을 가리킨다는 것을 보여줍니다.

  Windows 11 라이선스를 다른 컴퓨터로 전송하는 방법

루트킷의 주요 유형

사용자 모드: 이러한 모드는 프로세스 및 라이브러리 수준에서 작동합니다. 비교적 안정적이고 탐지하기 쉽지만, 파일, 프로세스 및 키를 숨길 수 있습니다. 대표적인 역사적 사례로는 HackerDefender가 있습니다.

커널 모드: 이러한 바이러스는 커널에 상주하며 완벽한 제어 권한과 뛰어난 은밀성을 유지합니다. 제거하기가 어렵고, 설계가 부실할 경우 시스템 불안정을 야기하는 경향이 있습니다. 이 계열의 예로는 진화 과정에 있는 TDL/Alureon이 있습니다.

하이브리드 방식은 사용자 구성 요소와 커널 구성 요소를 결합하여 은폐성과 안정성의 균형을 맞추므로, 실용적인 다용도성 덕분에 공격자들 사이에서 인기가 높습니다.

펌웨어/부트킷: 이러한 악성 프로그램은 BIOS/UEFI 또는 부트 섹터(MBR/UEFI)를 감염시켜 운영 체제보다 먼저 로드되도록 합니다. 시큐어 부트(Secure Boot)와 같은 기술 덕분에 기존의 부트킷은 대부분 쓸모없어졌지만, 최신 UEFI 악성 프로그램이 등장했습니다.

가상 및 메모리 기반: VMBR은 운영 체제 아래에 하이퍼바이저를 로드하여 가상화하는 반면, 메모리 기반은 RAM에만 상주하며 재부팅 시 사라지므로 일시적인 작업 에 매우 유용합니다.

예시 및 강조된 연대기

SunOS용 최초의 루트킷은 90년대에 개발되었습니다. 1999년 Greg Hoglund는 NTRootkit(Windows, 커널 모드)을 설명했고, 2003년에는 HackerDefender (Windows 2000/XP, 사용자 모드)가 등장하여 RootkitRevealer와 같은 도구들과의 "경쟁"을 촉발했습니다.

2004년에는 이른바 "그리스 워터게이트" 사건에서 루트킷을 이용해 GSM 네트워크상의 100대 이상의 휴대전화를 해킹했습니다. 2005년에는 소니 BMG가 일부 CD에 불법 복제 방지 루트킷을 포함시킨 사실이 밝혀져 큰 보안 논란을 불러일으켰습니다.

2008년 이후 TDL(TDL-1부터 TDL-4까지)과 같은 부트킷이 진화해 왔으며, 2009년에는 "Machiavelli"가 macOS(당시 Mac OS X) 역시 이러한 공격에 취약함을 보여주었고, 2010년에는 Stuxnet이 루트킷 구성 요소를 사용하여 이란의 산업 시스템을 파괴했습니다.

2012년에는 대규모 모듈형 악성코드인 Flame이 등장했고 , 2018년에는 LoJax가 실제 환경에서 발견된 최초의 UEFI 루트킷이 되었으며, 2019년에는 Scranos가 대규모로 해킹된 브라우저를 통해 자격 증명 탈취와 숨겨진 수익 창출을 클릭 팜과 결합했습니다.

리소스 및 권장 독서 자료

마크 루시노비치의 소니 사건 조사와 Windows IT Pro에 실린 그의 기사 "루트킷 발굴"은 RKR 현상과 그 이면에 있는 기술을 이해하는 데 도움이 됩니다. 그렉 호글런드와 제이미 버틀러의 저서 "루트킷: 윈도우 커널 전복"은 이 주제에 대한 가장 심층적인 연구서 입니다.

프랙 아카이브(Phrack Archive), 피터 쇼어(Peter Szor)의 "컴퓨터 바이러스 연구 및 방어의 기술(The Art of Computer Virus Research and Defense)", 에드 스코우디스(Ed Skoudis)와 레니 젤처(Lenny Zeltser)의 "멀웨어: 악성 코드와의 싸움(Malware: Fighting Malicious Code)", 그리고 "윈도우 내부 구조(Windows Internals)" 시리즈(4판 이후)는 아키텍처와 심각한 대응책을 더 깊이 탐구하려는 모든 사람에게 필수적인 자료입니다.

Sysinternals 생태계의 RootkitRevealer

RKR은 연구에 유용한 다른 Sysinternals 유틸리티와 함께 ​​사용됩니다. 이러한 유틸리티에는 AccessChk 및 AccessEnum(유효 권한), Autoruns(시스템에서 시작되는 모든 프로그램), Process Explorer(어떤 프로세스가 어떤 DLL을 사용하여 무엇을 열었는지 확인), PsExec/PsTools(원격 실행 및 관리), PsLogList 및 PsLoggedOn(이벤트 및 세션), Sigcheck(디지털 서명), SDelete(안전한 삭제), ShareEnum(공유 리소스) 및 Sysmon (이벤트 로그의 고급 원격 측정)이 있습니다.

과거 저장소에서 "Download 1.71"과 같은 참조를 흔히 볼 수 있으며, Sysinternals Live를 통해 "Run now"를 실행하는 것도 마찬가지입니다. 이 프로젝트는 오랜 역사를 자랑하지만, 고수준 접근 방식과 저수준 접근 방식을 비교하는 사고방식은 루트킷 탐지에 있어 여전히 중요한 요소 입니다.

RootkitRevealer는 무엇보다도 방어적 엔지니어링의 중요성을 보여주는 좋은 예입니다. API 반환 값을 조작하는 요소가 있다면, 그 이면을 살펴보고 디스크와 레지스트리에 실제로 존재하는 값과 비교해야 합니다. 적절한 도구와 모범 사례, 그리고 필요한 경우 오프라인 검증을 통해, 아무도 찾지 못할 거라고 생각하는 곳에 숨어있는 악성 코드를 찾아낼 수 있습니다.

보안을 위한 최고의 Linux 배포판
관련 기사 :
보안과 개인 정보를 보호하는 최고의 Linux 배포판