상세 컨텐츠

본문 제목

Hack The Box 해킹 모의 침투 #8: 윈도우 Active Directory 환경 해킹

HackTheBox

by 0xmh 2022. 6. 26. 13:19

본문

728x90

안녕하세요~ 오랜만에 모의 침투를 하겠습니다! 대부분 모의 침투 머신들은 유저 권한을 받아서 권한상승하고 끝! 이런 건데 오늘은 제가 가장 좋아하는 Active Directory misconfiguration에 대해 알아보겠습니다.

 

오늘 풀어볼 머신은 Object이라는 윈도우 머신입니다.

유저 shell은 8080 포트에 작동하는 Jenkins서버를 통해 받고, bloodhound이라는 tool로 Active Directory 환경을 enumerate하고 다른 유저 2명 장악해서 root.txt를 받습니다.

1. HTB Main

Nmap를 확인해 보면 여러 개의 http 서버들이 존재한다는 것을 알 수 있는데, 우리의 첫번째 타깃은 8080번 포트입니다.

2. NMAP

8080번 포트는 jenkins이라는 소프트웨어를 쓰는데, 새로운 유저를 만들어서 로그인합니다. Jenkins 서버를 공격한 적이 있어서 무엇을 해야 할지 바로 감이 와서, 새로운 "job" (Create job)를 만들어 "Build" 드랍다운 메뉴에 나오는 "Execute Windows batch command"를 선택했습니다.

3. Execute Windows batch command

따로 새로 만든 job을 실행시킬 수 없으므로 Build Triggers를 확인해 " * * * * * "를 입력하면 (리눅스 cronjob 흡사) 1분마다 실행됩니다. 일단은 단순한 "whoami" 명령어를 확인해 보겠습니다.

4. Trigger

되네요? oliver라는 유저 권한으로 whoami가 실행됩니다. 좋네요. Enumeration 좀 더 해보겠습니다.

5. whoami

whoami를 dir로 바꾸어 파일들을 열거합니다. "secrets", "secret.key", "config.xml"가 흥미로워 보이네요. 

6. dir

어떤 유저들이 존재하는지를 보고 admin이 존재하던데 admin 폴더에도 config.xml이 있길래 열어보니까...

7. Config.xml

비밀번호 hash가 있네요. hash를 john로 뚫어봤지만 너무 오래 걸려서 결구엔 포기했어요.

구글에서 jenkins password decrypt라고 검색해봤는데 https://github.com/gquere/pwn_jenkins

도움이 될만한 툴이네요. 

8.hash

툴에 따르면 "config.xml", "master.key", "hudson.util.Secret"이라는 파일들이 필요한다는데 아까 봤던 것 같아서 위와 똑같이 다양한 폴더를 뒤집어 보니까 결국에 필요한 폴더들을 다 받습니다.

윈도우 환경에 존재하는 certutil.exe로 파일들을 base64 encode하고, 저의 local 머신에 decode를 합니다.

9.certutil

python jenkins_offline_decrypt.py master.key hudson.util.Secret config.xml

위에 command로 비밀번호를 받을 수 있습니다! oliver 유저의 비밀번호는 "c1cdfun_d2434"입니다!

비밀번호를 받았으니 이제 winrm을 통해 로그인 가능합니다!

10. eviln-winrm

이제 bloodhound를 돌릴 시간입니다! 

설치 방법은 여기 --> https://github.com/BloodHoundAD/BloodHound

 

GitHub - BloodHoundAD/BloodHound: Six Degrees of Domain Admin

Six Degrees of Domain Admin. Contribute to BloodHoundAD/BloodHound development by creating an account on GitHub.

github.com

새로운 4.1.0버전을 돌렸는데 자꾸 오류가 일어나서 4.0.3 버전을 사용했습니다. bloodhound를 돌리기 전에 피해자 머신에 SharpHound.exe를 올리고 실행시킵니다. Sharphound는 bloodhound위한 enumeration 단계입니다. SharpHound는 모든 ActiveDirectory의 정보를 열거해주는데 더 하고 .zip 파일을 만들어줍니다. 파일을 다운로드하고 bloodhound GUI에 업로드하면 됩니다.

업로드를 다 하고 다음과 비슷한 아웃풋을 받습니다. 맨 윈 쪽에 우리가 장악한 유저가 있는데 맨 오른쪽에 권한이 가장 높은 도메인 유저들이 있습니다. 

사진을 보고 다음 같은 misconfiguration을 악용해보겠습니다.

ForceChangePassword

GenericWrite

WriteOwner

11. bloodhound

ForceChangePassword를 눌러보면 이를 어떻게 악용할 수 있는 것까지 알려주네요! 

12. ForceCHangePassword

위 사진이 하라는 대로 smith의 비밀번호를 바꾸고 smith로 로그인 가능합니다!

13. Smith Login

smith에서 maria까지의 GenericWrite에 대해도 역시 다양한 정보를 받을 수 있습니다. 똑같이 kerberoast 공격을 해봤지만 자꾸 오류도 일어나고 문제가 있는 것 같아서 다른 방법이 없나 찾아보다가 GenericWrite 권한으로 logon script를 업데이트할 수 있다는데 유저가 로그인할 때마다 실행됩니다.

14 GenericWrite

echo로  maria의 다이렉터리를 열거하라는 명령어를 .ps1이라는 logon script에 넣고 그 결과를 \programdata\out에 저장합니다. out를 확인해보니까 되네요. 꽤 번거롭지만 똑같은 방법을 계속 사용하다 보면... 

15 logon

maria의 desktop에 Engines.xls이라는 흥미로운 파일이 있길래 다운로드하고 열어봤더니...

16. Engines

비밀번호들이 있네요. 마지막 비밀번호로 로그인이 가능합니다.

17. Passwords

Maria에게 Domain Admins에 대한 WriteOwner 권한이 있기 때문에 그 그룹에 관리자(?)를 바꿀 수 있다는 것입니다.

18 WriteOwner

Set-DomainObjectOwner로 Domain Admins 그룹의 관리자를 maria로 변경하고, maria를 Domain Admins 그룹에 대한 모든 권한을 주고 그 그룹에 maria를 추가합니다.

다시 로그인하면 administrator의 Desktop에 있는 root 파일을 읽을 수 있는 것을 보니까 권한이 가장 높은 유저가 됐습니다! 액티브다이렉터리 환경 장악 완료!

19 root.txt

당연히 단지 모의 침투이기 하지만 위에서 보셨던 misconfiguration들이 생각하시는 것보다 흔합니다. 취약점이 있는 소프트웨어나 웹페이지가 아니어도 권한을 잘못 줬다가는 큰일이 날 수도 있습니다. 세련된 exploit이 필요 없이 단지 powershell 힘으로 윈도우 환경 자체가 장악될지도 모릅니다.

관련글 더보기