Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
RogueAssemblyHunter — Rogue Assembly Hunter는 실행 중인 프로세스에서 '흥미로운' .NET CLR 모듈을 발견하기 위한 유틸리티입니다. | Kitploit
도구/GitHubGitHub/bohops/rogueassemblyhunter
Defensive ToolsMemory ForensicsForensicsMalware AnalysisIncident Response
GitHubbohops/rogueassemblyhunter

RogueAssemblyHunter

Rogue Assembly Hunter는 실행 중인 프로세스에서 '흥미로운' .NET CLR 모듈을 발견하기 위한 유틸리티입니다.

저장소 보기
1201044년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

__________ _____ . .
_
____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | .. | // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | | | | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ | || /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ | / // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________ / ~ \ | / \ __/ __ _ __
\ Y / | / | \ | \ /| | / _| /|
/|
| /
| _
>
|
/ / /

Rogue Assembly Hunter

Rogue Assembly Hunter는 실행 중인 프로세스에서 '흥미로운' .NET CLR 모듈을 발견하기 위한 유틸리티입니다.

  • 작성자: @bohops
  • 라이선스: MIT
  • 프로젝트: https://github.com/bohops/RogueAssemblyHunter

배경

.NET은 .NET 관리 애플리케이션을 구축하고 실행하기 위한 매우 강력하고 유능한 개발 플랫폼이자 런타임 프레임워크입니다. 지난 몇 년 동안 Red Team(및 유사 조직)은 공격 작전을 지원하기 위한 도구를 구현하기 위해 .NET을 채택했습니다. 특히, PowerShell v5+에서 증가된 가시성과 기회적 가시성으로 인해 많은 사람들이 공격적인 PowerShell에서 .NET으로 전환하는 것은 논리적인 도약이었습니다. 따라서 .NET 공격 도구와 기법은 호스트 기반 방어 기능을 회피하고, 애플리케이션 제어를 우회하며, 악성 코드를 빌드/스테이징/전달/실행하는 데 성공적으로 사용되었습니다(PowerShell과 유사).

예방 관점에서 Microsoft는 .NET을 사용한 위협에 대응하고 전반적인 .NET 공격 표면을 최소화하기 위해 더 많은 노력을 기울이고 있습니다. 예를 들어, Microsoft는 .NET Framework 4.8에 AMSI 검사 기능을 추가했으며, WDAC/WLDP 메커니즘은 매우 효과적입니다. 탐지/대응 관점에서 .NET 생태계에 대한 추가적인 가시성과 내부 조사는 .NET 중심 위협에 대응하는 새로운 방법을 발견하는 데 항상 유리합니다.

2017년, Joe Desimone(@dez_)은 Hunting For In-Memory .NET Attacks이라는 훌륭한 기사를 작성했습니다. 오늘날에도 여전히 유효한 이 기사는 현대 .NET 공격 벡터와 탐지를 위한 온디맨드 및 이벤트 기반 기술을 설명합니다. 기사와 함께 Joe는 디스크 참조가 없는 메모리 내 .NET CLR 모듈을 사전에 탐지(및 검색)하는 도구(Get-ClrReflection)를 출시했습니다. Joe의 작업에서 영감을 받고 CLRMD 런타임 진단 라이브러리(+ 이후 mscordacwks.dll의 데이터 액세스 기능)의 내부 조사 기능을 활용하여 Rogue Assembly Hunter는 다음과 같은 목적으로 만들어졌습니다:

  • 실행 중인 모든 .NET('관리') 프로세스에서 흥미로운 CLR 모듈(예: '어셈블리'를 구성하는 모듈) 검사
  • 단일 .NET('관리') 프로세스(PID 기준)에서 흥미로운 CLR 모듈 검사
  • 새로 생성된 프로세스를 감시하고 흥미로운 CLR 모듈 검사 시도
  • 메모리 내 로드된 모듈, 디스크에서 로드된 경우 모듈의 서명 상태, 흥미로운 디렉토리에서 로드된 모듈, 가짜 모듈(예: 가짜 파일 참조)을 발견하기 위한 여러 '헌트' 기능 지원
  • CLR 모듈 내보내기 기능 지원(Get-ClrReflection에서 빠르게 이식)
  • 더 흥미로운 도구 및 기법에 영감 제공

주요 요구 사항 및 종속성

  • 권한 있는 사용자/프로세스 컨텍스트에서 실행
  • .NET Framework 4.6.1+
  • .NET CLRMD - Microsoft.Diagnostics.Runtime Introspection Library (NuGet 패키지)
  • ILMerge - 정적 링커 (NuGet 패키지)
  • ...및 Visual Studio의 지원 NuGet 패키지.

참고 사항, 팁 및 주의사항

  • 높은/시스템 무결성을 가진 권한 있는 사용자로 실행하십시오.
  • '헌트'는 실험적이며 완전하거나 정확한 결과를 보장하지 않습니다. 서명된 모듈과 같은 가양성에 주의하고 그에 따라 검증하십시오.
  • RogueAssemblyHunter는 CLRMD를 사용하여 라이브 프로세스에 연결하므로 흥미로운 결과가 발생할 수 있습니다.
  • RogueAssemblyHunter의 스캔 특성상 경쟁 조건과 누락된 결과가 발생할 가능성이 있습니다. --checks 및 --sleep 스위치를 조정하여 도움을 받으십시오(특히 'watch' 모드에서). 경우에 따라 실행 속도로 인해 특정 어셈블리 로드를 '잡기' 어려울 수 있습니다(예: execute-assembly 및 희생 프로세스).
  • 아키텍처('비트') 및 .NET 버전(예: 4+)은 .NET CLRMD 라이브러리로 원격 프로세스와 상호 작용할 때 중요합니다.
    • 최대 검사/범위를 위해 이 프로그램을 x86 및 x64 사용 사례에 맞게 빌드하고 실행하십시오.
    • 프로세스 스윕 모드는 '비트'에 관계없이 모든 실행 중인 프로세스에 연결을 시도합니다. 그렇지 않으면 아키텍처 불일치에 대해 적절히 실패합니다.
  • Windows 10 Pro 2H1H 및 Windows Server 2016 Standard 1607에서 테스트되었습니다. 관련 .NET Framework가 있는 다른 버전에서도 실행될 수 있습니다.
  • NuGet 패키지, PowerShell 스크립트 및 릴리스 바이너리가 포함된 Visual Studio 프로젝트 소스가 이 프로젝트에 포함되어 있습니다.
  • Notice.md에는 프로젝트 면책 조항 및 라이선스 정보가 포함되어 있습니다.
  • 자신의 책임 하에 실행하십시오(그리고 제 끔찍한 코드는 신경 쓰지 마십시오 ;) )!

사용법

root@kitploit:~
[*] 매개변수:
    
    --mode=<.>   : 필수 | 분석 모드를 선택합니다. 옵션: sweep, process, watch.

    --hunt=<.>   : 선택 사항 | 흥미로운 CLR 모듈을 찾기 위한 헌트 스캔 유형을 선택합니다. all(기본값), memory-only, unusual-dir,
                   sig-status, imposter-file 또는 list를 지정합니다.

    --export=<.> : 선택 사항, 실험적 | 메모리 내 헌트 스캔 및 가짜 파일 헌트 스캔을 위해 로드된 CLR 모듈을 내보낼 파일 경로를 지정합니다.
                   (예: --hunt=memory-only/imposter-file/all).

    --pid=<.>    : 선택 사항 | PID로 대상 프로세스를 지정합니다. --mode=process 매개변수/값과 함께 사용해야 합니다.

    --checks=<.> : 선택 사항 | 스캔 주기 값을 지정합니다. 이는 스캔 중 경쟁 조건 누락을 줄이는 데 도움이 될 수 있지만 결과 출력이 반복될 수도 있습니다.
                   기본값은 1입니다.

    --sleep=<.>  : 선택 사항 | 절전 시간(초) 값을 지정합니다. 이는 검사 주기를 지연시켜 스캔 중 경쟁 조건 누락을 줄이는 데 도움이 될 수 있습니다.
                   기본값은 0초입니다.

    --debug      : 선택 사항 | 예외 정보를 표시합니다(예: 프로세스 연결 오류).

    --nobanner   : 선택 사항 | 표시 배너를 표시하지 않습니다. PowerShell 스크립트로 실행하거나 자동화를 활용하는 사용 사례에 유용합니다.

    --suppress   : 선택 사항 | --mode=sweep 또는 --mode=watch 중에 RogueAssemblyHunter 프로세스를 스캔하지 않습니다.

    --help       : 선택 사항 | 이 도움말을 표시합니다. 이는 다른 모든 명령줄 매개변수를 재정의하고 애플리케이션을 종료합니다. *매개변수 없이 실행 시 기본값입니다.


[*] 모드 (--mode=)

    - sweep   : 모든 프로세스를 스캔/반복합니다(참고: 동일한 아키텍처/'비트'의 프로세스만 성공적으로 스캔됩니다. x86/x64 등에 맞게 컴파일하십시오).

    - process : 단일 프로세스를 스캔합니다. --pid=<PID>와 함께 사용합니다.
    
    - watch   : 새 프로세스가 생성될 때 스캔합니다. --checks 및 --sleep로 스캔 속성을 조정합니다. (참고: 실험적입니다. 경쟁 조건이 발생할 가능성이 높습니다.)


[*] 헌트 (--hunt=)

    - all           : 기본값입니다. 모든 헌트 옵션으로 분석합니다('list' 제외).

    - memory-only   : 메모리 헌트. 디스크에 백업되지 않은 CLR 모듈을 분석합니다.

    - unusual-dir   : 비정상 디렉토리 헌트. '정상' 디렉토리 외부에서 로드된 CLR 모듈을 분석합니다.
                      사용자 정의하려면 '_huntUnusualDirectoryFilter'를 편집하십시오.

    - sig-status    : 파일 서명 헌트. 비정상적인 서명 상태(예: 서명되지 않음)의 CLR 모듈을 분석합니다. 참고: 실험적입니다. 가양성이 발생할 수 있습니다.
                      사용자 정의하려면 '_huntSigExclusionsFilter'를 편집하십시오.
    
    - imposter-file : 예상치 못한 CLR 모듈 헌트. 의심스러운 디스크 파일 백업이 있는 CLR 모듈을 분석합니다. 실험적입니다.
    
    - list          : 모든 CLR 모듈을 반복하고 그에 따라 나열합니다.


[*] 사용 예시
    
    - 예시 1 : 프로세스 스캔 및 액세스 가능한 64비트 프로세스에 대해 모든 헌트 실행('list' 제외) -
                  RogueAssemblyHunter_x64.exe --mode=sweep
    
    - 예시 2 : 프로세스 스캔, 액세스 가능한 32비트 관리 프로세스의 모든 CLR 모듈 나열, 오류 정보 표시 -
                  RogueAssemblyHunter_x86.exe --mode=sweep --hunt=list --debug

    - 예시 3 : 새 프로세스 감시, 모든 CLR 모듈 스캔(관리 및 64비트인 경우), RogueAssemblyHunter 프로세스 스캔하지 않음, 2회 검사에 3초 지연 -
                  RogueAssemblyHunter_x64.exe --mode=watch --suppress --checks=2 --sleep=3

    - 예시 4 : PID로 단일 프로세스 스캔, 메모리 내 CLR 모듈만 나열, CLR 모듈을 지정된 경로로 내보내기 -
                  RogueAssemblyHunter_x86.exe --mode=process --pid=4650 --hunt=memory-only --export=c:\evilassemblies\
    
    - 예시 5 : 프로세스 스캔, 액세스 가능한 64비트 프로세스에 대해 메모리 내 CLR 모듈만 나열, RogueAssemblyHunter 프로세스 스캔하지 않음, 제목 배너 표시하지 않음 -
                  RogueAssemblyHunter_x64.exe --mode=sweep --hunt=memory-only --suppress --nobanner

릴리스 파일: Invoke-RogueAssemblyHunter 및 컴파일된 바이너리

편의를 위해 PowerShell 스크립트와 두 개의 컴파일된 바이너리(RogueAssemblyHunter_x64.exe 및 RogueAssemblyHunter_x86.exe)가 \Release 폴더에 포함되어 있습니다. 사용 사례(예: 배포, 임베딩, 검사, 절전 등)에 맞게 자유롭게 수정하십시오.

사용 예시:

스윕 모드에서 Invoke-RogueAssemblyHunter 실행 및 모든 헌트 옵션 확인

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter

감시 모드에서 Invoke-RogueAssemblyHunter 실행 및 모든 헌트 옵션 확인

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter -ScanMode watch

SHA256 해시:

root@kitploit:~
e804711a8b6469f1b13b388de47dfa6dde1c85279d365db7b6e19e1644990fa6  Invoke-RogueAssemblyHunter.ps1
cc985d918e566671aa209142abc55bd798ca6c1a18730b785ac8c18d489736c3  RogueAssemblyHunter_x64.exe
ae3aead43871e263cd8465d5356c4daaae0635714321f872c931ec825008287a  RogueAssemblyHunter_x86.exe

로드맵

  • 관리 덤프(.dmp) 파일 분석
  • sig-status 검사 개선
  • 출력 개선(예: json)
  • 안정성 및 버그 수정

크레딧, 영감 및 리소스

  • Hunting For In-Memory .NET Attacks | 작성자: Joe Desimone (@dez_)
  • Get-ClrReflection | 작성자: Joe Desimone (@dez_)
  • Get-InjectedThread | 작성자: Jared Atkinson (@jaredcatkinson)
  • pe-sieve | 작성자: hasherezade (@hasherezade)
  • CLR MD — Analyzing Live Process | 작성자: Harsha
  • How to enumerate Modules in each App Domain using ClrMD | 작성자: Sukesh Ashok Kumar
  • WMIProcessWatcher | 작성자: Tim MalcomVetter (@malcomvetter)
도구 다운로드