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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/0xe7/wonkavision
Defensive ToolsIdentity & Access Management (IAM)AuthenticationIntrusion DetectionIncident ResponseAnomaly DetectionLog Analysis
GitHub0xe7/wonkavision

WonkaVision

세션 및 티켓 데이터를 덤프하고 이상 징후를 점수화하여 SIEM 기반 침해 대응을 위한 Windows 이벤트 로그 지표를 생성함으로써 위조된 Kerberos 티켓을 탐지합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

WonkaVision


WonkaVision은 Kerberos 티켓을 분석하여 위조 여부를 판단하는 개념 증명(POC) 도구입니다. 이 도구는 Charlie Clark과 Andrew Schwartz가 만들었습니다.

이 POC는 프로덕션에 바로 투입할 수 있는 엔터프라이즈 애플리케이션이 아니라, 발견된 IOA를 공개하면서 위조 티켓을 더 잘 탐지할 수 있는 방법에 대한 아이디어를 제공하기 위한 것임을 유의하시기 바랍니다.

Charlie Clark은 이 코드베이스의 주 저자입니다.

세션 정보 덤프, Kerberos 티켓 덤프, Kerberos 티켓 복호화/암호화에 사용되는 코드의 상당 부분은 Rubeus에서 가져왔습니다. GetNCChanges 코드는 Vincent Le Toux의 MakeMeEnterpriseAdmin에서 각색했습니다.

다음과 같은 3가지 기능이 있습니다:

  • /createkeys - 덤퍼와 분석기가 사용할 공개/개인 키 쌍을 생성합니다.
  • /dump - 서버/워크스테이션에서 실행하며, 관련 Kerberos 티켓과 함께 세션 데이터를 덤프합니다.
  • /analyze - 모든 덤프 파일이 들어 있는 디렉터리를 대상으로 실행하며, 덤프 내의 모든 세션과 티켓을 분석하고 점수를 생성한 후 이벤트 로그에 기록합니다.

WonkaVision에는 다음과 같은 종속성이 있습니다:

  • Newtonsoft.Json - json 개체를 직렬화/역직렬화하기 위한 라이브러리
  • dnMerge - Newtonsoft.Json DLL을 단일 바이너리로 병합하여 티켓 덤프 시 배포를 더 쉽게 하기 위한 도구

발표에 사용한 슬라이드 덱은 여기에서 확인할 수 있습니다.

WonkaVision은 BSD 3-Clause 라이선스에 따라 배포됩니다.

목차

  • WonkaVision
    • 키 생성
    • 덤프
    • 분석
      • 이벤트 로그 샘플
      • SIEM 로그 전달 샘플
        • Splunk 예제
        • Sentinel 예제
  • 발표 데모
  • Kerberos 스니퍼
  • 감사의 말
  • TODO

키 생성

ECDH(Elliptic Curve Diffie-Hellman) 키 교환 알고리즘과 P-256 곡선을 사용하여 공개 키와 개인 키 쌍을 생성합니다. 기본적으로 키를 base64로 인코딩된 blob 형태로 터미널에 출력하지만, /outdir:PATH 인수를 사용하여 키를 파일로 작성할 수 있습니다.

파일에 키를 작성하는 경우, private.key 파일은 KRBTGT 키처럼 보호해야 합니다

예제 1:

root@kitploit:~
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================


====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================

예제 2:

root@kitploit:~
C:\WonkaVision>WonkaVision.exe /createkeys /outdir:.
[!] Writing key files to ., be sure to protect the private key as if it was the krbtgt key!
[*] Written public key to .\public.key
[*] Written private key to .\private.key

C:\WonkaVision>dir
 Volume in drive C is System
 Volume Serial Number is 22BC-4361

 Directory of C:\WonkaVision

10/14/2022  01:10 PM    <DIR>          .
10/14/2022  01:10 PM    <DIR>          ..
10/14/2022  01:10 PM               104 private.key
10/14/2022  01:10 PM                72 public.key
10/14/2022  01:08 PM         1,383,424 WonkaVision.exe
               3 File(s)      1,383,600 bytes
               2 Dir(s)  71,813,464,064 bytes free

덤프

Kerberos 티켓을 포함한 세션의 세션 정보와 Kerberos 티켓 자체를 KERB-CRED 형식으로 덤프합니다. 이 작업은 Rubeus의 dump 명령과 동일한 방식으로 LsaCallAuthenticationPackage를 실행하여 세션 정보, 티켓 캐시 정보를 요청하고 티켓을 KERB-CRED로 요청하는 방식으로 수행됩니다.

2가지 주요 인수가 필요합니다:

  • /publickey:KEY - 덤프된 데이터 암호화에 사용할 공개 키
  • /dumpdir:DIR - 덤프된 데이터를 저장할 디렉터리

데이터가 덤프되면 WonkaVision은 다음 단계를 수행합니다:

  1. 데이터를 Json 문자열에 저장합니다.
  2. 덤퍼용 공개/개인 키 쌍을 생성합니다.
  3. 자체 개인 키와 /publickey:KEY 인수로 전달된 공개 키를 사용하여 대칭 키를 도출합니다.
  4. 대칭 키를 사용하여 Json 문자열을 AES로 암호화합니다.
  5. 암호화된 데이터, 해당 공개 키와 IV를 Json 문자열에 저장하고 /dumpdir:DIR 인수로 지정된 디렉터리에 기록합니다.

특정 세션(/luid:X 인수), 사용자(/user:USER 인수), 서비스(/service:SVC 인수) 및/또는 서버(/server:Y 인수)를 지정할 수 있지만, 현재 이 기능들은 충분히 테스트되지 않았습니다.

예제:

root@kitploit:~
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps

분석

/dump 명령으로 생성된 덤프를 분석합니다. /dumpdir:DIR이 가리키는 모든 하위 디렉터리를 재귀적으로 탐색하면서 발견되는 모든 .json 파일을 읽습니다. json 파일을 역직렬화한 후, 그 안에 저장된 모든 세션과 세션 내의 모든 티켓을 반복하며 가능한 한 깊이 분석하고, 발견된 예상 이탈 항목 각각에 점수를 할당합니다. 그런 다음 이 점수들을 합산하여 총점을 산출하고, 발견된 모든 문제를 포함하는 WonkaVision Session 및 _WonkaVision Ticket_용 Windows 이벤트 9988과 9989를 각각 생성합니다.

LDAP 쿼리와 DCSync에 대체 자격 증명을 사용하려면 /creduser:USER, /creddomain:DOMAIN, /credpass:PASSWORD를 지정할 수 있습니다. 하지만 이 기능은 프로덕션 환경에서는 권장되지 않으며, 문제를 좀 더 쉽게 디버깅하기 위해 구현되었습니다.

2가지 주요 인수가 필요합니다:

  • /privatekey:KEY - 암호화된 덤프를 복호화하는 데 사용되는 개인 키
  • /dumpdir:DIR - 암호화된 덤프가 저장된 디렉터리

예제:

root@kitploit:~
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps

이벤트 로그 샘플

WonkaVision은 터미널을 통해 분석 결과를 반환하지만, 공격 지표(IOA) 분석에 대한 더 자세한 설명은 Windows 응용 프로그램 이벤트 로그 채널에서 확인할 수 있습니다. 분석가는 여기서 총점, 특정 IOA, IOA의 이유, 도구 점수에 대해 더 많은 통찰력과 맥락을 얻을 수 있습니다. 9988(세션 이벤트)과 9989(티켓 이벤트) 두 가지 이벤트가 각각 기록됩니다. 이벤트 샘플은 여기에서 확인할 수 있습니다.

다음은 WonkaVision 세션 이벤트(9988)의 예입니다: 9988 Event

다음은 WonkaVision 티켓 이벤트(9989)의 예입니다:

EVTX 로그에서 Mimikatz로 위조된 골든 티켓 가능성의 예: 9989 Event

9989 Event 2

SIEM 로그 전달 샘플

위에서 언급했듯이 WonkaVision 로그는 Windows 응용 프로그램 이벤트 로그 채널에 기록됩니다. 구성된 경우 이러한 로그는 SIEM(예: Splunk, Sentinel 등)으로 전달될 수 있습니다.

Splunk 예제

Splunk "Classic" WinEvnet 로깅을 사용한 권장 쿼리도 사용할 수 있습니다:

root@kitploit:~
index="wv_demo_wineventlog" source="WinEventLog:Application" (Total_Score>=8) | table _time,Total_Score,User,Machine_Name,Service_Principal_Name,Mimikatz_Score,Rubeus_Score,Impacket_Score,Cobalt_Strike_Score,IOA_Reasons

Splunk에서 Mimikatz WonkaVision으로 위조된 골든 티켓 가능성의 예: Mimikatz WonkaVisvion Splunk

Splunk에서 WonkaVision의 Rubeus로 위조된 골든 티켓 가능성의 예:Rubeus WonkaVisvion Splunk

Sentinel 예제

Sentinel을 사용한 로깅도 가능합니다. 그러나 추가적인 파싱이 필요할 수 있습니다. 아래는 Jonathan Johnson(@jsecurity101)의 예제 쿼리로, WonkaVision이 Sentinel에서 파싱된 후 어떻게 표시될 수 있는지 보여줍니다:

root@kitploit:~
Event
    | where Computer contains "asgard" and Source contains "Wonka"
    | extend ParsedEventData=parse_xml(EventData)
    | extend Data=ParsedEventData.DataItem.EventData.Data
    | parse-where Data with *
            "Total Score: " TotalScore:string
            "Session: " Session:string
            "Machine Name: " MachineName:string
            "User: " User:string
            "Service Principal Name: " ServicePrincipalName:string
            "IOAs: " IOAs:string
            "SessionUser: " IOA_SessionUser:string
            "KDCCalled: " IOA_KDCCalled:string
            "Mimikatz Score: " TScore_MimikatzScore:string 
            "Impacket Score: " TScore_ImpacketScore:string 
            "Rubeus Score: " TScore_RubeusScore:string 
            "Cobalt Strike Score: " TScore_CobaltStrikeScore:string 
            "IOA Reasons: " IOA_Reasons:string
    | where IOA_SessionUser contains "thor"

Sentinel에서 WonkaVision으로 위조된 골든 티켓 가능성의 예: WonkaVisvion Sentinel

발표 데모

데모 1 - 골든 티켓 생성:

https://user-images.githubusercontent.com/13423848/202441525-aec75260-a991-4a4d-8df1-6fbf92ddbb4c.mp4

데모 2 - 키 쌍 생성 및 세션/티켓 덤프:

https://user-images.githubusercontent.com/13423848/202441775-b753ae06-d012-4258-9ea0-25d88dc80549.mp4

데모 3 - 덤프 분석 및 Windows 이벤트 출력:

https://user-images.githubusercontent.com/13423848/202441909-04bd1b2a-f204-41c4-a13a-dcfa42eebcf3.mp4

데모 4 - Kerberos 네트워크 스니퍼:

https://user-images.githubusercontent.com/13423848/202442125-822cc4a4-1c87-447f-88ae-2e5c2fbf58d3.mp4

KrbSniffer POC

발표에서 시연한 Kerberos 트래픽 스니퍼 POC(데모 4)는 SharpPCap으로 구현되었지만, 원시 소켓을 사용하도록 쉽게 수정할 수 있으며, 이 경우 해당 종속성과 시스템에 npcap을 설치해야 하는 필요성이 제거됩니다.

최소한의 POC였기 때문에 구현된 대부분의 지표는 이 슬라이드 덱의 18페이지에 자세히 나와 있는 Charlie의 YASCON 2020 발표에서 언급된 비암호화 지표였으며, 더 많은 지표를 구현할 수 있었습니다.

감사의 말

  • Rubeus 코드베이스를 제공한 Will Schroeder (@harmj0y)
  • 'Make Me Enterprise Admin' 코드베이스를 제공한 Vincent Le Toux (@mysmartlogon)
  • 'Get-KerberosTicketGrantingTicket.ps1' 및 'Test-KerberosTicketGrantingTicket.ps1' 코드베이스를 제공한 Jared Atkinson (@jaredcatkinson)
  • DCSync 오류 해결, POC 테스트, Microsoft Sentinel 테스트, Windows 이벤트 로그 작성에 대한 조언/지침을 제공한 Jonathan Johnson (@jsecurity101) :)
  • 조언/지침을 제공한 Elad Shamir (@elad_shamir)
  • BlackHat Europe 2018에서 'Real-time detection of attacks leveraging Domain Administrator privilege'를 발표한 'sisoc-tokyo' 팀(도쿄 대학, Wataru Matsuda, Mariko Fujimoto, Takuho Mitsunaga). 우리는 POC 이후에 그들의 작업을 발견했습니다. 해당 프로젝트는 여기에서 확인할 수 있습니다.
  • 이 프로젝트를 완료할 수 있도록 허락해 준 Semperis (@SemperisTech)와 Trustedsec (@TrustedSec)

TODO

  • 코드 리팩터링 및 정리
  • 트러스트 키 검색 구현
도구 다운로드