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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
acCOMplice — COM 하이재킹 발견 및 악용 도구 | Kitploit
도구/GitHubGitHub/nccgroup/accomplice
Persistence MechanismsPost-ExploitationRed TeamingPayload Development
GitHubnccgroup/accomplice

acCOMplice

COM 하이재킹 발견 및 악용 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

acCOMplice

당신의 COM 하이재킹 공범

저자: David Tulis (@kafkaesqu3)

개요

이 저장소에는 COM 하이재킹을 탐구하기 위한 코드 샘플과 개념 증명(PoC)이 포함되어 있습니다. COM 하이재킹은 지속성 또는 방어 회피에 사용될 수 있는 Windows 사후 침투 기법입니다.

COM 인터페이스, 하이재킹을 찾는 방법, 하이재킹을 악용하는 기법에 대한 자세한 내용은 Derbycon 9에서 발표된 _COM Hijacking Techniques_를 참조하십시오.

  • 슬라이드: https://www.slideshare.net/DavidTulis1/com-hijacking-techniques-derbycon-2019
  • 프레젠테이션: https://www.youtube.com/watch?v=pH14BvUiTLY

프로젝트

  • COMHijackToolkit: COM 하이재킹을 다루기 위한 헬퍼 스크립트가 포함된 Powershell 스크립트입니다. 주요 기능:
    • Extract-HijackableKeysFromProcmonCSV: Procmon CSV 내보내기에서 하이재킹 가능한 개체를 구문 분석합니다
    • Hijack-CLSID: 주어진 DLL로 CLSID를 하이재킹합니다
    • Hijack-MultipleKeys: 주어진 DLL을 사용하여 여러 CLSID를 동시에 하이재킹하며, 이는 자주 활성화되는 CLSID를 찾는 데 유용합니다
  • InjectionTemplates: Derbycon 프레젠테이션에서 시연된 3가지 템플릿
    • CreateProcess로 새 프로세스 생성
    • CreateRemoteThread로 기존 프로세스에 인젝션
    • CreateThread를 사용하여 현재 프로세스에서 스레드 수명 측정
  • COMinject: COM 하이재킹을 사용하여 프로세스 인젝션/마이그레이션을 수행하는 방법을 보여주는 개념 증명
  • masterkeys.csv: 가지고 놀 수 있는 몇 가지 키
  • procmon-filters: 하이재킹 식별 및 악용을 돕기 위한 Procmon 필터

예제

COMHijackToolkit

COM 하이재킹을 처리하기 위한 헬퍼 스크립트가 포함된 Powershell 스크립트입니다. 주요 기능:

모든 COM 개체 CLSID와 디스크에서 구현 위치를 표시합니다.

root@kitploit:~
$keys = Get-CLSIDRegistryKeys -RegHive HKCR
$results = $keys | % {$guid = Extract-GUIDFromText $_; Map-GUIDToDLL -guid $guid 2> $null }

시스템에서 CLSID 설문 조사를 수행합니다.

root@kitploit:~
$HKCR_keys = Get-CLSIDRegistryKeys -RegHive HKCR
$HKCR_keys | where-object {$_ -like "*inprocserver"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*inprocserver32"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*localserver"} | Measure-Object
$HKCR_keys | where-object {$_ -like "*localserver32"} | Measure-Object

$HKLM_keys = Get-CLSIDRegistryKeys -RegHive HKLM
$HKLM_keys | Measure-Object
$HKCU_keys = Get-CLSIDRegistryKeys -RegHive HKCU
$HKCU_keys | Measure-Object
root@kitploit:~
explorer:{69486DD6-C19F-42e8-B508-A53F9F8E67B8}
explorer:{9E175B6D-F52A-11D8-B9A5-505054503030}
explorer:{30CC9D06-7E62-4966-9777-BC3442E788BD}
explorer:{3eef301f-b596-4c0b-bd92-013beafce793}
explorer:{682159d9-c321-47ca-b3f1-30e36b2ec8b9}
explorer:{6B3B8D23-FA8D-40B9-8DBD-B950333E2C52}
explorer:{9aa46009-3ce0-458a-a354-715610a075e6}
explorer:{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
explorer:{AC36A05C-FB95-4C7A-868C-A43CC8D2D926}
explorer:{B52D54BB-4818-4EB9-AA80-F9EACD371DF8}
explorer:{c2f03a33-21f5-47fa-b4bb-156362a2f239}

시스템에 존재하지 않는 DLL을 참조하는 CLSID 찾기:

root@kitploit:~
Find-MissingLibraries

InjectionTemplates

COM 하이재킹 악용을 위한 3가지 개념 증명 템플릿으로, Derbycon 9 프레젠테이션에서 시연되었습니다:

  • HijackDLL-Process: DLL이 로드될 때 새 프로세스 생성
  • HijackDLL-CreateRemoteThread: DLL이 로드될 때 CreateRemoteThread API 호출을 사용하여 스레드 인젝션 기법을 수행합니다
  • HijackDLL-Threads: 하이재킹 후 DLL에서 시작된 스레드의 수명을 측정하는 데 유용합니다

COMinject

COM 하이재킹이 프로세스 인젝션에 어떻게 사용될 수 있는지 보여주는 개념 증명:

  • COMInjectDotNet: COM 하이재킹을 통해 지원되는 프로세스에 DLL을 주입하는 개념 증명 클라이언트
  • COMInjectTarget: 프로세스에 주입할 대상 라이브러리

첫 번째 단계는 하이재킹을 수행하는 것입니다:

root@kitploit:~
COMInjectDotNet.exe chrome.exe C:\COM\COMInjectTarget.dll

하이재킹은 즉시 트리거되지 않으며, 애플리케이션이 실행 중이 아니라면 실행을 시작해야 하거나 몇 가지 기본적인 애플리케이션 작업이 필요할 수 있습니다. 더 자주 트리거되는 더 나은 CLSID가 있을 수 있지만, 이것들로 충분합니다.

COMInjectTarget.dll은 C:\COM의 로그 파일에 진행 상황을 기록합니다. 이 방법은 다른 프로세스 내에서 AllocConsole과 같은 것을 사용하고 콘솔에 출력하는 것보다 더 안정적으로 보입니다.

다음은 기본 chrome.exe 프로세스 내에서 실행되는 주입된 DLL을 보여줍니다:

root@kitploit:~
[*] chrome pid=9104 ppid=4900 (count 0)
[*] chrome pid=9104 ppid=4900 (count 1)
[*] chrome pid=9104 ppid=4900 (count 2)
[*] chrome pid=9104 ppid=4900 (count 3)
[*] chrome pid=9104 ppid=4900 (count 4)
[*] chrome pid=9104 ppid=4900 (count 5)

현재 지원되는 프로세스는 다음과 같습니다:

  • explorer (기본값)
  • chrome
  • excel
  • word
  • outlook

참고 자료 및 크레딧

COM 및 COM 하이재킹에 대해 자세히 알아보려면:

  • Leo Loobeek (@leoloobeek):
    • COMProxy, 코드를 많이 참고한 프로젝트
    • 안정적인 하이재킹을 위한 COM 프록시
  • Matt Nelson (@enigma0x3):
    • 예약된 작업 및 COM 핸들러 하이재킹을 통한 사용자 영역 지속성
  • @bohops의 COM 하이재킹 시리즈:
    • COM 레지스트리 구조 악용: CLSID, LocalServer32 및 InprocServer32
    • COM 레지스트리 구조 악용 (2부): 하이재킹 및 로딩 기법
  • James Forshaw (@tiraniddo):
    • COM으로 즐기기
    • 60초 만에 배우는 COM
    • OleViewDotNet
  • Casey Smith (@subtee) + @enimga0x3:
    • Windows 운영 체제 고고학 (슬라이드, 코드)
도구 다운로드