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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/synacktiv/metamorph
Defensive ToolsPersistence MechanismsInformation GatheringPost-ExploitationMalware AnalysisIncident Response
GitHubsynacktiv/metamorph

Metamorph

C로 작성된 Windows용 명령줄 유틸리티로, 지속적인 ETW(Event Tracing for Windows) AutoLogger 세션을 생성하고 구성합니다.

저장소 보기
873개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Metamorph

소개

이 도구는 C로 작성된 Windows용 명령줄 유틸리티로, 영구 ETW(Event Tracing for Windows) AutoLogger 세션을 생성하고 구성합니다. AutoLogger는 시스템 부팅 시 특정 ETW 공급자의 추적을 자동으로 시작하므로, 부팅 초기 단계에서 발생하는 이벤트를 캡처하거나 지속적인 모니터링 시나리오에 유용합니다.

이 도구는 명령줄 인수를 통해 알려진 EDR과 관련된 ETW 공급자의 사전 정의된 목록을 AutoLogger 세션에 포함하도록 선택할 수 있게 합니다. 동일한 공급자가 여러 선택된 목록에 포함되어 있으면 구성을 병합하여 가장 높은 로깅 수준이 사용되고 키워드 플래그가 적절히 결합되도록 하여 선택된 목록을 기반으로 이벤트 범위를 최대화합니다.

기능

  • 레지스트리 구성(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)을 통해 영구 ETW AutoLogger 세션을 생성합니다.
  • 시스템 부팅 시 자동으로 시작됩니다.
  • 사전 정의된 공급자 목록(-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex)을 선택할 수 있습니다.
  • 모든 목록의 모든 공급자를 활성화하는 옵션(-All).
  • 노이즈가 많은 공급자를 활성화하는 옵션(일부는 몇 초 안에 디스크를 가득 채우지 않도록 자동으로 삭제됨): (-noisy)
  • 중복 공급자 구성을 병합합니다:
    • 공급자에 대해 모든 중복 항목에서 지정된 가장 높은 Level을 유지합니다.
    • 가장 넓은 키워드 범위를 보장하기 위해 모든 중복 항목(수준과 무관)의 MatchAnyKeyword 플래그를 비트 OR로 결합합니다.
    • 가장 높은 수준을 제공한 구성 항목의 MatchAllKeyword를 사용합니다.
  • 세션 이름과 로그 파일 경로를 구성할 수 있습니다(코드에서 상수로 정의됨).
  • 컴파일

    Visual Studio에 포함된 것과 같은 C 컴파일러가 필요합니다.

    1. Metamorph.sln 파일을 엽니다.
    2. "Release"와 대상 아키텍처(x64/x86)를 선택합니다.
    3. 컴파일하고 즐기세요.

    비표준 임포트가 없으므로 Cl 컴파일이 별다른 문제없이 가능해야 합니다.

    사용 가이드

    중요: 이 도구는 Windows 레지스트리(HKEY_LOCAL_MACHINE)를 수정하므로 올바르게 실행하려면 관리자 권한이 필요합니다.

    • 명령 프롬프트 또는 PowerShell 창을 관리자 권한으로 열고 그곳에서 실행 파일을 실행하세요.
    root@kitploit:~
    .\Metamorph.exe <options>
    
    # Enable only providers from Defender
    .\Metamorph.exe -Defender
    
    # Enable providers from Defender and MDE, merging duplicates
    .\Metamorph.exe -Defender -MDE
    
    # Enable all providers from all engines, merging duplicates
    .\Metamorph.exe -All
    
    # Enabling one provider, also with noisy ones, because why not filling disk space after all?
    .\Metamorph.exe -All -noisy
    

    초기화 후에는 새로 등록된 공급자를 시작하기 위해 재부팅이 필요합니다.

    수동 정리

    이 공급자를 정리하려면 다음을 수행해야 합니다:

    1. regedit.exe를 엽니다.
    2. (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)로 이동합니다.
    3. 마우스 오른쪽 버튼을 클릭하여 앞서 언급한 레지스트리 키를 삭제합니다.
    4. 재부팅합니다.

    결과 활용

    ETW는 런타임 이벤트에 대한 깊은 가시성을 제공합니다. 이는 맬웨어 활동이나 난독화 기술을 나타낼 수 있는 잠재적으로 의심스러운 활동을 탐지하는 데 활용될 수 있습니다. 일단 설치되면 공급자는 '복제된' EDR과 동일한 수준의 '이벤트 로그' 원격 분석을 제공해야 합니다. 그러면 내부 도구가 남길 수 있는 IOC에 대한 연구가 쉬워집니다.

    시스템이 재부팅되고 관심 있는 애플리케이션이 실행된 후에는 .etl 파일(예: Metamorph.etl)에 캡처된 이벤트가 포함됩니다.

    생성된 파일(C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x)은 다음과 같은 여러 공개 도구에서 수집할 수 있습니다:

    • Event Viewer 자체
    • Perfview
    • 선호하는 ETW 도구를 여기에 삽입하세요

    참고: Metamorph는 재부팅 후 실수로 손실되지 않도록 순환 로그 파일을 사용하지만, 일부 도구는 파일이 .etl로 끝나야 하므로 사용 전에 접미사를 제거해야 합니다.

    또한 .etl 파일을 CSV 파일로 변환하여 대충 grep할 수도 있습니다:

    root@kitploit:~
    tracerpt MyKeywordMergedETWLogger.etl -o logdump.csv -of CSV
    

    PowerShell과 Assembly.Load로 로드된 파일리스 .NET을 사용한 실제 예제

    Assembly.Load()를 통한 파일리스 바이너리 실행

    다음과 같이 Assembly.Load를 사용하여 파일을 로드하는 Powershell 프로그램이 있다고 가정해 보겠습니다:

    root@kitploit:~
    [Reflection.Assembly]:https://raw.githubusercontent.com/synacktiv/metamorph/main/:Load(%5BSystem.Convert%5D::FromBase64String(%22TVqQAAMAAAAEAAAA/8AALgAAAAAAAAAQAAAAAA%5B...%5DAAAAAAAAAAAAA%22))
    
    
    #Récupération du handle sur le process cible
        $ProcessDesiredAccess = 0x00000400
        $InheritHandle = 0
        $ProcessId = $PID
        $hProcess = [api32.run]::OpenProcess($ProcessDesiredAccess, $InheritHandle, $ProcessId)
        if($hProcess -eq 0){ Write-Output "OpenProcess Error" }
    
    #Récupération du handle sur le token du process cible
        $hToken = [IntPtr]::Zero
        $TokenDesiredAccess = 0x00000006
        $Success = [api32.run]::OpenProcessToken($hProcess, $TokenDesiredAccess, [ref]$hToken)
        if(-not $Success){ Write-Output "OpenProcessToken Error" }
        
    #Duplication du token
        $DesiredAccess = 0x10000000
        $SecurityAttribute = New-Object api32.run+_SECURITY_ATTRIBUTES
        $SecurityAttribute.lpSecurityDescriptor = [IntPtr]::Zero
        $SecurityAttribute.bInheritHandle = $true
        $ImpersonationLevel = 3
        $TokenType = 1
        $hDuplicatedToken = [IntPtr]::Zero
        $Success = [api32.run]::DuplicateTokenEx($hToken, $DesiredAccess,[ref]$SecurityAttribute, $ImpersonationLevel, $TokenType,[ref]$hDuplicatedToken)
        if(-not $Success) { Write-Debug "DuplicateTokenEx Error" }
    
    #Creation du cmd avec le token dupliqué
        $LogonFlags = 0
        $ApplicationName = "cmd.exe"
        $CommandLine = "/K whoami /all"
        $CreationFlags = 0x00000010
        $Environnement = [IntPtr]::Zero
        $CurrentDirectory = "c:\windows\system32"
        $StartUpinformation = New-Object api32.run+STARTUPINFOA                                    
        $ProcessInformation = New-Object api32.run+_PROCESS_INFORMATION
        $Success = [api32.run]::CreateProcessWithTokenW($hDuplicatedToken, $LogonFlags,$ApplicationName, $CommandLine, $CreationFlags, $Environnement, $CurrentDirectory, [ref]$StartUpinformation,[ref]$ProcessInformation)
        if(-not $Success) { Write-Debug "CreateProcessWithTokenW Error" }
    

    이 스크립트는 기본적으로 impersonate.exe 도구로 수행할 수 있는 것과 같은 공격을 수행합니다.

    1. 관리자 권한으로 PowerShell 프롬프트를 엽니다.
    2. poc.ps1을 실행합니다.
    3. 모든 ETW 버퍼가 .etl 파일로 플러시될 때까지 몇 분간 기다립니다.

    분석

    1. 관리자 권한으로 Perfview를 엽니다.
    2. 대시보드를 통해 .etl 파일을 로드하고 이벤트를 두 번 클릭하여 모든 공급자 데이터에 접근합니다.

    1. 수행한 작업에 따라 데이터를 조사하려면 공급자 목록을 탐색합니다.

    1. 검사할 관련 공급자를 선택합니다(여기서는 Microsoft-Windows-Powershell/Exécuterunecommandedistante)

    1. Microsoft-Windows-DotNETRuntime/Loader/AssemblyLoad 검사

    결국 EDR과 분석가는 알려진 바이너리(예: "Rubeus")에 대해 AssemblyName 기반 서명 분석을 수행할 기회를 가지며, 그 외에도 사후 분석을 위해 Powershell 스크립트(주석 포함)를 검색할 가능성이 있습니다.

    기여

    이 도구가 유용하다고 생각되면 CONTRIBUTING.md의 지침에 따라 자신만의(또는 다른) 솔루션을 추가할 수 있습니다. 펜테스트 중에 발견한 솔루션에 전적으로 의존하게 되므로 정기적으로 업데이트하려고 노력하겠지만, 변경 사항을 모든 사람이 사용할 수 있도록 하려면 PR을 보내 주세요.

    도구 다운로드