Tempo fa ho già scritto di , ma in modo piuttosto scarno e confuso. In seguito, ho deciso di ampliare la lista degli strumenti nella recensione, aggiungere una struttura all'articolo, tenendo conto della critica (grazie mille per i consigli) e l'ho inviata a un concorso su SecLab (e l'ho pubblicata , ma per motivi comprensibili nessuno l'ha vista). Il concorso è terminato, i risultati sono stati annunciati e ora posso pubblicarla (l'articolo) su Habr con la coscienza pulita.
Strumenti gratuiti per il penetration testing delle applicazioni web
In questo articolo parlerò degli strumenti più popolari per il pentesting (test di penetrazione) delle applicazioni web seguendo la strategia del «black box».
Per questo esamineremo le utility che possono aiutare in questo tipo di test. Considereremo le seguenti categorie di prodotti:
- Scanner di rete
- Scanner di vulnerabilità nei web script
- Exploiting
- Automazione delle iniezioni
- Debugger (sniffer, proxy locali, ecc.)
Alcuni prodotti hanno un carattere universale, quindi li inserisco nella categoria in cui producono ilunmiglior risultato (opinione soggettiva).
Scanner di rete.
L'obiettivo principale è rivelare i servizi di rete disponibili, stabilire le loro versioni, determinare il sistema operativo, ecc.
Nmap
è un'utilità gratuita e open source per l'analisi delle reti e l'audit della sicurezza dei sistemi. Coloro che sono contrari alla console possono utilizzare Zenmap, l'interfaccia grafica per Nmap.
Non è solo un "scanner intelligente", è uno strumento potente e estendibile (tra le «caratteristiche particolari» c'è uno script per controllare se un nodo è affetto dal worm "" (menzionato ). Un esempio tipico di utilizzo:
nmap -A -T4 localhost
-A per determinare la versione del sistema operativo, effettuare scansioni con script e traceroute
-T4 impostazione per il controllo del tempo (più alto è, più veloce è, da 0 a 5)
localhost — host target
Qualcosa di più robusto?
nmap -sS -sU -T4 -A -v -PE -PP -PS21,22,23,25,80,113,31339 -PA80,113,443,10042 -PO --script all localhost
Questo è un insieme di opzioni dal profilo «scan lento e completo» in Zenmap. Ci mette un po', ma fornisce informazioni più dettagliate sulla sistema target. , se volete approfondire, e consiglio anche la traduzione dell'articolo .
Nmap ha ricevuto il titolo di "Prodotto di Sicurezza dell'Anno" da riviste e comunità come Linux Journal, Info World, LinuxQuestions.Org e Codetalker Digest.
Note interessante, Nmap può essere visto nei film "Matrix: Reloaded", "Die Hard 4", "The Bourne Ultimatum", "Captain Fantastic" e .
IP-Tools
è un insieme di diverse utilità di rete, fornito con un'interfaccia grafica, ‘dedicata’ agli utenti di Windows.
Scanner di porte, risorse condivise (stampanti/cartelle condivise), WhoIs/Finger/Lookup, client telnet e molto altro. Uno strumento semplice, veloce e funzionale.
Non ha molto senso considerare gli altri prodotti, dato che ci sono molte utilità in questo campo e tutte hanno principi e funzionalità simili. Tuttavia, il più utilizzato rimane nmap.
Scanner di vulnerabilità nei web script
Cercano di trovare vulnerabilità popolari (SQL inj, XSS, LFI/RFI, ecc.) o errori (file temporanei non rimossi, indicizzazione di directory, ecc.)
Acunetix Web Vulnerability Scanner
— è evidente dal link che si tratta di un scanner XSS, ma non è del tutto così. La versione gratuita, disponibile tramite il link, offre un'ampia gamma di funzionalità. Di solito, chi avvia questo scanner per la prima volta e riceve il report sul proprio sito prova un certo shock, e capirete perché, facendolo. Si tratta di un prodotto molto potente per l'analisi di diverse vulnerabilità presenti nel sito e funziona non solo con i siti PHP a noi familiari, ma anche con altri linguaggi (anche se la differenza nel linguaggio non è un indicatore). Non ha senso descrivere le istruzioni, poiché lo scanner semplicemente «cattura» le azioni dell'utente. È qualcosa di simile a «avanti, avanti, avanti, pronto» in un tipico processo di installazione di un software.
Nikto
è uno scanner web Open Source (GPL). Elimina il lavoro manuale di routine. Cerca nel sito target script non rimossi (come test.php, index_.php, ecc.), strumenti di amministrazione del database (/phpmyadmin/, /pma e simili), ecc., cioè verifica le risorse per gli errori più comuni, solitamente causati dal fattore umano.
Inoltre, se trova uno script popolare, lo controlla per eventuali exploit emersi (che sono presenti nel database).
Segnala i metodi 'indesiderati' disponibili, come PUT e TRACE
E così via. Molto comodo se lavori come auditor e analizzi quotidianamente i siti web.
Tra i lati negativi, vorrei sottolineare l'alto tasso di falsi positivi. Ad esempio, se il tuo sito restituisce sempre la homepage invece di un errore 404 (quando dovrebbe emergere), lo scanner dirà che ci sono script vulnerabili come quelli nel suo database. Nella pratica, ciò non accade molto spesso, ma come fatto, molto dipende dalla struttura del tuo sito.
Utilizzo classico:
./nikto.pl -host localhost
Se devi essere autorizzato sul sito, puoi impostare i cookie nel file nikto.conf, variabile STATIC-COOKIE.
Wikto
— Nikto per Windows, ma con alcune aggiunte, come la logica 'approssimativa' nel controllo del codice per errori, utilizzo di GHDB, ottenimento di link e directory delle risorse, monitoraggio in tempo reale delle richieste/risposte HTTP. Wikto è scritto in C# e richiede il framework .NET.
skipfish
— scanner di vulnerabilità web da (noto anche come lcamtuf). Scritto in C, è multipiattaforma (per Windows è necessario Cygwin). Scansiona l'intero sito in modo ricorsivo (e molto lungo, circa 20-40 ore, anche se l'ultima volta ha lavorato per 96 ore) e trova varie vulnerabilità di sicurezza. Inoltre, genera un notevole traffico (alcuni GB in entrata/uscita). Ma tutti i mezzi sono buoni, specialmente se si hanno tempo e risorse.
Utilizzo tipico:
./skipfish -o /home/reports www.example.com
Nella cartella «reports» ci sarà un rapporto in html, .
w3af 
— Web Application Attack and Audit Framework, scanner open-source per vulnerabilità web. Ha un'interfaccia grafica, ma si può lavorare anche da console. Più precisamente, è un framework con .
Parlare dei suoi vantaggi può richiedere tempo, è meglio provarlo :]
Il lavoro tipico con esso consiste nella scelta del profilo, nella definizione dell'obiettivo e, di fatto, nell'avvio.
Mantra Security Framework
è un sogno che si è avverato.Collezione di strumenti gratuiti e open-source per la sicurezza informatica, integrati nel browser web.
Molto utili per testare applicazioni web in tutte le fasi.
L'uso consiste nell'installazione e nell'avvio del browser.
In realtà, ci sono molte utility in questa categoria ed è piuttosto difficile estrarre un elenco specifico. Spesso, ogni pentester decide autonomamente quali strumenti siano necessari.
Exploiting
Per un utilizzo automatizzato e più comodo delle vulnerabilità nel software e negli script, si scrivono exploit che richiedono solo di passare parametri per sfruttare la falla di sicurezza. Ci sono anche prodotti che eliminano la necessità di cercare manualmente gli exploit e li applicano 'al volo'. Di questa categoria parleremo ora.
Metasploit Framework 
è una vera e propria bestia nel nostro campo. È così potente che la guida si estenderà su diversi articoli. Tratteremo l'exploit automatico (nmap + metasploit). In sostanza, Nmap analizzerà la porta di nostro interesse, installerà il servizio e Metasploit tenterà di applicare exploit basandosi sulla classe del servizio (ftp, ssh, ecc.). Invece di una guida testuale, inserisco un video, piuttosto popolare sul tema autopwn.

In alternativa, si può semplicemente automatizzare l'uso dell'exploit di cui abbiamo bisogno. Ad esempio:
msf > usa ausiliario/admin/cisco/vpn_3000_ftp_bypass
msf ausiliario(vpn_3000_ftp_bypass) > imposta RHOST [TARGET IP]
msf ausiliario(vpn_3000_ftp_bypass) > esegui
In realtà, le possibilità di questo framework sono molto ampie, quindi, se avete deciso di approfondire, procediamo con
Armitage
— un'interfaccia GUI di genere cyberpunk per Metasploit. Visualizza gli obiettivi, raccomanda exploit e fornisce funzionalità avanzate di questo framework. In generale, per coloro che amano che tutto appaia bello ed efficace.
Screencast:

Tenable Nessus®
— ha molte funzionalità, ma noi abbiamo bisogno di una in particolare: la determinazione dei servizi per cui esistono exploit. La versione gratuita è "home only"
Uso:
- Scaricato (per il proprio sistema), installato, registrato (la chiave arriva via email).
- Avviato il server, abbiamo aggiunto un utente nel Nessus Server Manager (pulsante Gestisci utenti)
- Accediamo all'indirizzo
https://localhost:8834/
e otteniamo il client flash nel browser
- Scans -> Aggiungi -> compiliamo i campi (scegliendo il profilo di scansione adatto) e premiamo Scansione
Dopo un po', il report della scansione apparirà nella scheda Rapporti
Per verificare la vulnerabilità pratica dei servizi rispetto agli exploit, è possibile utilizzare il Metasploit Framework descritto sopra o provare a trovare un exploit (per esempio su , , e altri) e utilizzarlo manualmente contro del sistema
IMHO: troppo ingombrante. L'ho citato come uno dei leader in questo settore dell'industria software.
Automazione delle iniezioni
Molti scanner di sicurezza delle applicazioni web effettuano ricerche delle iniezioni, ma sono comunque scanner generali. Esistono strumenti specifici che si occupano della ricerca e dell'esploitazione delle iniezioni. Su questi parleremo ora.
sqlmap
— utility open-source per la ricerca e l'esploitazione delle iniezioni SQL. Supporta server di database come: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, SQLite, Firebird, Sybase, SAP MaxDB.
L'uso tipico si riassume nella seguente riga:
python sqlmap.py -u "http://example.com/index.php?action=news&id=1"
Ci sono abbastanza manuali, anche in lingua russa. Questo software facilita notevolmente il lavoro del pentester in questo settore.
Aggiungo una dimostrazione video ufficiale:

bsqlbf-v2
— script in Perl, brute forcer per iniezioni SQL 'cieche'. Funziona sia con valori interi nell'URL, sia con stringhe.
Supporta i database:
- MS-SQL
- MySQL
- PostgreSQL
- Oracle
Esempio di utilizzo:
./bsqlbf-v2-3.pl -url www.somehost.com/blah.php?u=5 -blind u -sql "select table_name from information_schema.tables limit 1 offset 0" -database 1 -type 1
-url — link con parametri
-blind u — parametro per l'iniezione (prelevato per default l'ultimo dalla stringa URL)
-sql "select table_name from information_schema.tables limit 1 offset 0" — la nostra richiesta arbitraria al database
-database 1 — server DB: MSSQL
-tipo 1 — tipo di attacco, iniezione "cieca" basata su risposte True ed Error (ad esempio, errori di sintassi)
Debugger
Questi strumenti sono principalmente utilizzati dagli sviluppatori quando ci sono problemi con i risultati dell'esecuzione del proprio codice. Ma questa direzione è utile anche nei test di penetrazione, in quanto è possibile sostituire i dati necessari "al volo", analizzando cosa arriva in risposta ai nostri parametri in ingresso (ad esempio durante il fuzzing), e così via.
Burp Suite
— una serie di utilità che aiutano nei test di penetrazione. Online è disponibile in lingua russa di Raz0r (anche se del 2008).
Nella versione gratuita sono inclusi:
- Burp Proxy — proxy locale, consente di modificare le richieste già formate dal browser
- Burp Spider — spider, cerca file e directory esistenti
- Burp Repeater — invio manuale di richieste HTTP
- Burp Sequencer — analisi di valori casuali nei moduli
- Burp Decoder — codificatore-decodificatore standard (html, base64, hex, ecc.), ce ne sono migliaia che possono essere scritti rapidamente in qualche linguaggio
- Burp Comparer — componente di confronto delle stringhe
In sostanza, questo pacchetto risolve praticamente tutte le problematiche legate a questo settore.
Fiddler
— Fiddler è un proxy di debug che registra tutto il traffico HTTP(S). Permette di esplorare questo traffico, impostare breakpoint e "giocare" con i dati in entrata o in uscita.
C'è anche , un mostro e altri, la scelta spetta all'utente.
Conclusione
Naturalmente, ogni esperto di pentesting ha il proprio arsenale e il proprio set di strumenti, poiché ce ne sono davvero tanti. Ho cercato di presentare alcuni dei più comodi e popolari. Ma affinché chiunque possa conoscere anche altri strumenti in questo campo, fornirò dei link qui sotto.
Diverse classifiche/liste di scanner e strumenti
- .
Distribuzioni Linux che già includono un sacco di diversi strumenti per il pentesting
aggiornamenti: in russo dal team "Hack4Sec" (aggiunto )
P.S. Non possiamo omettere XSpider. Non partecipa alla recensione, anche se è condizionatamente gratuito (l'ho scoperto quando ho inviato l'articolo a SecLab, proprio per questo motivo (non perché non lo conoscessi, ma perché non avevo l'ultima versione 7.8) e non l'ho incluso nell'articolo). E in teoria era prevista una sua recensione (ho preparato per lui test complessi), ma non so se il mondo lo vedrà.
P.P.S. Alcuni materiali dell'articolo saranno utilizzati secondo l'intento diretto nel prossimo report su 2012 nella sezione QA, dove verranno presentati strumenti non menzionati qui (gratuiti, ovviamente), e sarà discusso l'algoritmo su quale ordine utilizzare, quale risultato aspettarsi, quali configurazioni impiegare e varie indicazioni e trucchi durante il lavoro (penso alla presentazione quasi ogni giorno, cercherò di condividere il meglio da parte mia su questo argomento).
A proposito, riguardo a questo articolo si è tenuto un evento su Open InfoSec Days (, ), si può sfruttare le corone dare un'occhiata a .
Fonte: habr.com
