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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Kerbeus-BOF — Kerberos 남용을 위한 BOF (Rubeus의 중요한 기능 중 일부를 구현). | Kitploit
도구/GitHubGitHub/ralfhacker/kerbeus-bof
Privilege EscalationPassword AttacksExploitationLateral MovementPost-ExploitationPenetration TestingCommand and ControlAuthenticationRed Teaming
GitHubralfhacker/kerbeus-bof

Kerbeus-BOF

Kerberos 남용을 위한 BOF (Rubeus의 중요한 기능 중 일부를 구현).

603779개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Kerbeus-BOF


Kerberos 남용을 위한 Beacon Object Files입니다. 이는 Rubeus 프로젝트의 중요한 기능 중 일부를 C로 구현한 것입니다. 이 프로젝트는 C2 프레임워크인 Cobalt Strike, Havoc, AdaptixC2 및 Outflank C2와의 통합을 지원합니다.

티켓 요청 및 갱신

asktgt

asktgt 액션은 지정된 사용자와 암호화 키(/rc4 또는 /aes256)를 사용하여 원시 AS-REQ(TGT 요청) 트래픽을 구성합니다. 해시 대신 /password 플래그를 사용할 수도 있습니다. 이 경우 /enctype:X는 기본적으로 RC4로 설정됩니다. /domain이 지정되지 않으면 컴퓨터의 현재 도메인이 추출되고, /dc가 지정되지 않으면 시스템의 현재 도메인 컨트롤러가 동일하게 추출됩니다. 인증이 성공하면 결과 AS-REP이 파싱되고 KRB-CRED(.kirbi 파일로 사용자의 TGT 포함)가 base64 blob으로 출력됩니다. /ptt 플래그는 "pass-the-ticket"을 수행하여 결과 Kerberos 자격 증명을 현재 로그온 세션에 적용합니다. 또 다른 opsec 참고 사항: 현재 로그온 세션에는 한 번에 하나의 TGT만 적용할 수 있으므로 /ptt 옵션을 사용할 때 새 티켓이 적용되면 이전 TGT는 사라집니다.

보다 실제 요청에 가깝게 AS-REQ를 구성하려면 /opsec 플래그를 사용할 수 있습니다. 이 플래그는 먼저 사전 인증 없이 초기 AS-REQ를 보냅니다. 이에 성공하면 결과 AS-REP이 복호화되고 TGT가 반환되며, 실패하면 사전 인증이 포함된 AS-REQ가 전송됩니다.

PAC 없이 TGT를 요청하려면 /nopac 스위치를 사용합니다. /nopreauth 플래그는 사전 인증 없이 AS-REQ를 보내는 데 사용됩니다.

root@kitploit:~
krb_asktgt /user:USER /password:PASSWORD [/domain:DOMAIN] [/dc:DC] [/enctype:{rc4|aes256}] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /aes256:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /rc4:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac]
krb_asktgt /user:USER /nopreauth [/domain:DOMAIN] [/dc:DC] [/ptt]

asktgs

asktgs 액션은 제공된 TGT(/ticket:X)를 사용하여 원시 TGS-REQ/TGS-REP 서비스 티켓 요청을 구성/파싱합니다. 이 값은 .kirbi 파일의 base64 인코딩이어야 합니다. /dc가 지정되지 않으면 컴퓨터의 현재 도메인 컨트롤러가 추출되어 요청 트래픽의 대상으로 사용됩니다. /ptt 플래그는 "pass-the-ticket"을 수행하여 결과 서비스 티켓을 현재 로그온 세션에 적용합니다. 하나 이상의 /service:X SPN을 지정해야 하며, 쉼표로 구분합니다.

구성된 TGS-REQ에서 지원되는 암호화 유형은 RC4_HMAC 및 AES256_CTS_HMAC_SHA1입니다. 이 경우 KDC는 반환된 서비스 티켓을 구성하는 데 가장 높은 상호 지원 암호화를 사용합니다. RC4 또는 AES256 키를 강제로 사용하려면 /enctype:[rc4 or aes256]를 사용하십시오.

보다 실제 요청에 가깝게 TGS-REQ를 구성하려면 /opsec 플래그를 사용할 수 있습니다. 이 플래그는 또한 제한 없는 위임(Unconstrained Delegation)을 위해 구성된 계정에 대한 서비스 티켓이 요청될 때 추가 TGS-REQ가 자동으로 전송되도록 합니다.

/u2u 플래그는 사용자 간(User-to-User) 티켓을 요청하기 위해 구현되었습니다. /tgs:X 인수(대상 계정의 TGT를 제공하는 데 사용됨)와 함께 /service:X 인수는 제공된 TGT의 대상 계정( /tgs:X 인수와 함께)의 사용자 이름일 수 있습니다. /targetuser:X 인수는 대상 사용자의 사용자 이름으로 PA-FOR-USER PA 데이터 섹션을 삽입하여 다른 계정의 PAC를 요청합니다.

/keyList 플래그는 Kerberos 키 목록 요청을 위해 구현되었습니다. 이러한 요청은 /ticket:BASE64 매개변수에서 읽기 전용 도메인 컨트롤러의 위조된 부분 TGT를 활용해야 합니다. 또한 /spn:x 필드는 도메인 내의 KRBTGT SPN(예: KRBTBT/domain.local)으로 설정되어야 합니다.

root@kitploit:~
krb_asktgs /ticket:BASE64 /service:SPN1,SPN2,... [/domain:DOMAIN] [/dc:DC] [/tgs:BASE64] [/targetdomain:DOMAIN] [/targetuser:USER] [/enctype:{rc4|aes256}] [/ptt] [/keylist] [/u2u] [/opsec]

renew

renew 액션은 제공된 /ticket:X를 사용하여 원시 TGS-REQ/TGS-REP TGT 갱신 교환을 구성/파싱합니다. 이 값은 .kirbi 파일의 base64 인코딩이어야 합니다. /dc가 지정되지 않으면 컴퓨터의 현재 도메인 컨트롤러가 추출되어 갱신 트래픽의 대상으로 사용됩니다. /ptt 플래그는 "pass-the-ticket"을 수행하여 결과 Kerberos 자격 증명을 현재 로그온 세션에 적용합니다.

root@kitploit:~
krb_renew /ticket:BASE64 [/dc:DC] [/ptt]

제한된 위임 남용

사용자(또는 컴퓨터) 계정이 제한된 위임(Constrained Delegation)으로 구성된 경우(즉, msds-allowedtodelegateto 필드에 SPN 값이 있는 경우) 이 액션을 사용하여 대상 SPN/서버에 대한 액세스를 남용할 수 있습니다.

간단히 설명하면 제한된 위임이 활성화된 계정은 S4U2self라는 프로세스를 통해 모든 사용자로 자신에게 티켓을 요청할 수 있습니다. 계정이 이 작업을 수행하려면 useraccountcontrol 속성에 TrustedToAuthForDelegation이 활성화되어 있어야 합니다. 이는 기본적으로 권한 있는 사용자만 수정할 수 있습니다. 이 티켓은 기본적으로 FORWARDABLE 플래그가 설정되어 있습니다. 그러면 서비스는 이 특별히 요청된 티켓을 사용하여 계정의 msds-allowedtodelegateto 필드에 지정된 모든 서비스 사용자 이름(SPN)에 대한 서비스 티켓을 요청할 수 있습니다. 요약하면, TrustedToAuthForDelegation이 설정되고 msds-allowedtodelegateto에 값이 있는 계정을 제어할 수 있다면 계정의 msds-allowedtodelegateto 필드에 설정된 SPN에 대해 도메인의 모든 사용자로 가장할 수 있습니다.

S4U2self 티켓은 /tgs:Y 매개변수(base64 blob)로 사용되어 S4U2proxy 프로세스를 실행할 수 있습니다. 계정에 대해 유효한 msds-allowedtodelegateto 값을 제공해야 합니다(/service:X).

/altservice 매개변수를 사용하면 결과 KRB-CRED 파일에서 원하는 서비스 이름으로 대체할 수 있습니다. 하나 이상의 대체 서비스 이름을 쉼표로 구분하여 제공할 수 있습니다(/altservice:cifs,HOST,...).

보다 실제 요청에 가깝게 TGS-REQ를 구성하려면 /opsec 플래그를 사용할 수 있습니다.

특정 상황에서는 S4U2Self 티켓을 사용하여 보호된 사용자를 가장하여 요청 시스템의 권한을 상승시킬 수 있습니다. 이에 대한 논의는 여기에서 확인할 수 있습니다. 이 목적으로 /self 플래그와 /altservice:X 인수를 사용하여 사용 가능한 서비스 티켓을 생성할 수 있습니다.

S4U2Self 리퍼럴을 위조하려면 트러스트 키만 필요합니다. /targetdomain:X 인수를 /self 플래그와 함께 사용하고 /targetdc 인수 없이 사용하면 /ticket:X로 제공된 티켓을 S4U2Self 리퍼럴로 처리하고 최종 S4U2Self 서비스 티켓만 요청합니다. /altservice:X를 사용하여 결과 티켓의 sname을 다시 쓸 수도 있습니다.

root@kitploit:~
krb_s4u /ticket:BASE64 /service:SPN {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/ptt] [/nopac] [/opsec] [/self]
krb_cross_s4u /ticket:BASE64 /service:SPN /targetdomain:DOMAIN /targetdc:DC {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/nopac] [/self]

티켓 관리

ptt

ptt 액션은 LsaCallAuthenticationPackage() API를 통해 KERB_SUBMIT_TKT_REQUEST 메시지로 현재 로그온 세션에 /ticket:X(TGT 또는 서비스 티켓)를 제출하거나 (상승된 권한인 경우) /luid:ea4..로 지정된 로그온 세션에 제출합니다. 다른 /ticket:X 매개변수와 마찬가지로 값은 .kirbi 파일의 base64 인코딩일 수 있습니다.

root@kitploit:~
krb_ptt /ticket:BASE64 [/luid:LOGONID]

purge

purge 액션은 현재 로그온 세션에서 모든 Kerberos 티켓을 제거하거나 (상승된 권한인 경우) /luid:0xA..로 지정된 로그온 세션에서 제거합니다.

root@kitploit:~
krb_purge [/luid:LOGONID]

describe

describe 액션은 /ticket:X 값(TGT 또는 서비스 티켓)을 가져와서 파싱하고 티켓의 값을 설명합니다. 다른 /ticket:X 매개변수와 마찬가지로 값은 .kirbi 파일의 base64 인코딩일 수 있습니다.

root@kitploit:~
krb_describe /ticket:BASE64

klist

klist는 상승된 권한이 아닌 경우 현재 사용자의 로그온 세션 및 Kerberos 티켓에 대한 상세 정보를 나열합니다. 상승된 컨텍스트(SYSTEM)에서 실행된 경우 모든 로그온 세션 및 관련 Kerberos 티켓에 대한 정보가 표시됩니다. /luid:3ea..로 특정 LogonID에 대한 로그온 및 티켓 정보를 표시할 수 있습니다(상승된 권한인 경우).

root@kitploit:~
krb_klist [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

dump

dump 액션은 상승된 컨텍스트(SYSTEM)인 경우 현재 TGT 및 서비스 티켓을 추출합니다. 상승되지 않은 경우 현재 사용자의 서비스 티켓이 추출됩니다.

root@kitploit:~
krb_dump [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

triage

triage 액션은 상승된 권한이 아닌 경우 현재 사용자의 Kerberos 티켓 테이블을 출력합니다. 상승된 컨텍스트(SYSTEM)에서 실행된 경우 시스템의 모든 Kerberos 티켓을 설명하는 테이블이 표시됩니다.

root@kitploit:~
krb_triage [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

필터

klist, triage 및 dump의 경우 /luid, /service 및 /client로 티켓을 필터링할 수 있습니다.

SYSTEM 컨텍스트가 필요합니다.

tgtdeleg

tgtdeleg는 Kerberos GSS-API를 남용하여 호스트에서 상승된 권한 없이 현재 사용자에 대한 사용 가능한 TGT를 검색합니다. AcquireCredentialsHandle()을 사용하여 현재 사용자의 Kerberos 보안 자격 증명에 대한 핸들을 얻고, InitializeSecurityContext()를 ISC_REQ_DELEGATE 플래그와 대상 SPN CIFS/DC.domain.com과 함께 사용하여 DC로 보낼 가짜 위임 컨텍스트를 준비합니다. 이로 인해 GSS-API 출력에 인증자 체크섬에 KRB_CRED를 포함하는 AP-REQ가 생성됩니다. 서비스 티켓 세션 키는 로컬 Kerberos 캐시에서 추출되어 인증자의 KRB_CRED를 복호화하는 데 사용되어 사용 가능한 TGT .kirbi가 생성됩니다.

자동 대상/도메인 추출이 실패하는 경우 /target:SPN으로 제한 없는 위임으로 구성된 서비스의 알려진 SPN을 지정할 수 있습니다.

root@kitploit:~
krb_tgtdeleg [/target:SPN]

로스팅(Roasting)

kerberoasting

kerberoasting은 적절한 서비스 티켓을 요청하는 데 사용됩니다. /ticket:X 인수는 도메인 사용자의 TGT 티켓을 지정합니다. /spn:X 인수는 대상 SPN을 지정합니다. /domain 및 /dc 인수는 선택 사항이며 다른 액션과 마찬가지로 시스템 기본값을 검색합니다.

/nopreauth:USER 인수는 /spn:Y에 전달된 서비스로 AS-REQ를 보내 서비스 티켓을 요청하려고 시도합니다.

root@kitploit:~
krb_kerberoasting /spn:SPN [/nopreauth:USER] [/dc:DC] [/domain:DOMAIN]
krb_kerberoasting /spn:SPN /ticket:BASE64 [/dc:DC]

asreproasting

도메인 사용자가 Kerberos 사전 인증을 활성화하지 않은 경우 해당 사용자에 대해 AS-REP를 성공적으로 요청할 수 있으며, 구조의 일부 구성 요소는 kerberoasting과 유사하게 오프라인에서 크랙될 수 있습니다. /user:X 인수는 대상 사용자를 지정합니다. /domain 및 /dc 인수는 선택 사항이며 다른 액션과 마찬가지로 시스템 기본값을 가져옵니다.

root@kitploit:~
krb_asreproasting /user:USER [/dc:DC] [/domain:DOMAIN]

기타

hash

hash 액션은 /password:X와 선택적 /user:USER 및/또는 /domain:DOMAIN을 사용합니다. 비밀번호의 rc4_hmac(NTLM) 표현을 생성합니다. 사용자 및 도메인 이름이 지정되면 aes128_cts_hmac_sha1 및 aes256_cts_hmac_sha1 해시 형태가 생성됩니다. 사용자 및 도메인 이름은 AES 구현의 솔트로 사용됩니다.

root@kitploit:~
krb_hash /password:PASSWORD [/user:USER] [/domain:DOMAIN]

changepw

changepw 액션은 사용자의 TGT .kirbi blob을 가져와 지정된 /new:PASSWORD 값으로 MS kpasswd 비밀번호 변경을 실행합니다. /dc가 지정되지 않으면 컴퓨터의 현재 도메인 컨트롤러가 추출되어 비밀번호 재설정 트래픽의 대상으로 사용됩니다.

/targetuser 및 /targetdomain 인수는 TGT를 가진 사용자가 충분한 권한을 가진 경우 다른 사용자의 비밀번호를 변경하는 데 사용할 수 있습니다.

사용자의 TGT 또는 kadmin/changepw에 대한 서비스 티켓 중 하나를 사용하여 비밀번호를 변경할 수 있습니다.

root@kitploit:~
krb_changepw /ticket:BASE64 /new:PASSWORD [/dc:DC] [/targetuser:USER] [/targetdomain:DOMAIN]

TODO

  • asktgt /cert:... 구현
  • 코드 리팩토링하여 BOF 크기 줄이기
  • describe 출력 확장
  • 필요한 것이 있으면 X 또는 TG로 DM 주세요 :)

Credits

  • Rubeus - https://github.com/GhostPack/Rubeus
  • CS-Situational-Awareness-BOF - https://github.com/trustedsec/CS-Situational-Awareness-BOF
  • nanorobeus - https://github.com/wavvs/nanorobeus
도구 다운로드