Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
La auditoría o Penetration Test de infraestructuras engloba las diferentes fases que se ejecutan
sobre los sistemas informáticos de una organización para identificar las debilidades que pueden
desencadenar un riesgo en la integridad, confidencialidad y disponibilidad de sus activos.
Las fases que conforman la auditoría son: reconocimiento activo y pasivo, escaneo, explotación y
escalada de privilegios. A lo largo de toda esta unidad se tratará de introducir al alumno en los
aspectos más relevantes de cada una de ellas.
2. Objetivos
El objetivo de este módulo es que el alumno se familiarice con los diferentes tipos de auditorías de
seguridad que se pueden llevar a cabo, así como con las diferentes fases que los componen.
3. Tipos de auditoría
1.3. Tipos de auditoría
Existen diferentes tipos de auditorías o Penetration Tests que se pueden ejecutar sobre la
infraestructura de una organización para llevar a cabo la identificación de los riesgos en los
sistemas informáticos. Podemos clasificar estas auditoriías en:
De acuerdo con la información que conocemos sobre el objetivo cuando comienza la auditoría,
podemos clasificarlas en:
Caja negra: el auditor comienza la auditoría conociendo únicamente la identidad de la
organización. El objetivo de realizar una auditoría de este tipo es que simula un ataque
externo real.
Caja gris: se dispone de cierta información de la infraestructura, por lo que no se parte de
cero.
Caja blanca: se dispone la información de la organización, como por ejemplo mapas de
red. Al conocer toda esta información se puede prescindir de la fase de fingerprinting que
se tratará más adelante.
2. Reconocimiento
2.1. Introducción
La fase de reconocimiento es una parte vital para el éxito del hacking ético. En ella debemos
recoger toda la información del objetivo de forma activa y pasiva para estudiarla y encontrar los
vectores de ataque.
2.2. Teoría
Hoy en día la mayoría de información está en la web, pero no necesaria y únicamente ahí, y es por
eso que utilizaremos técnicas de inteligencia de fuentes abiertas, Open Source Intelligence
(OSINT). Además, estas técnicas nos permiten obtener información del objetivo sin enviarle
ningún paquete.
2. Reconocimiento
2.3.1. Reconocimiento pasivo y activo (OSINT, GOOGLE/BING HACKING,
SHODAN, SNIFFING)
2.3.1. Reconocimiento pasivo
Reconocimiento pasivo: es el proceso de recolección de información del objetivo que queremos
atacar, usando como medio información de dominio público. Esto incluye información obtenida
en motores de búsqueda como Google, Bing, etc., whois, información publicada de la empresa en
concreto, etc.
Esta información obtenida ayuda a obtener una visión general de la organización objetivo que se
quiere atacar, donde se pueden exponer diferentes datos relativos a la misma, como pueden ser
servicios publicados, aplicaciones, cuentas de correo electrónico, empleados que trabajan en ella,
si tienen procesos de selección de nuevos empleados activos, etc.
2. Reconocimiento
2.3.1.1. Google hacking
Site: este operador limitará nuestra búsqueda en Google a un único dominio. Esta
búsqueda tan simple nos puede proporcionar información muy útil, como cuántos
subdominios tiene indexados o la presencia de la organización en la web.
2. Reconocimiento
Operador “-“: con el operador “-“ vamos a acotar nuestra búsqueda. En ella vamos a
buscar por los subdominios de Apple menos los que incluyamos al usar este operador.
Esta nueva búsqueda nos va a dar más información sobre el dominio objetivo y los
subdominios que tiene accesibles vía web.
inurl: este operador busca webs que tengan el término en alguna parte de la URL y se
puede combinar con varios operadores.
allinurl:admin.php site:.edu
filetype: este operador busca webs que tengan expuestos ficheros con diferentes
extensiones (.pdf, .ps, .doc, .xls, .txt, .ppt, .rtf, .asp, etc.) y se puede combinar con varios
operadores.
2. Reconocimiento
La siguiente imagen muestra una búsqueda realizada combinando algunos de los operadores
descritos arriba.
Se pueden combinar numerosos operadores en Google para acotar nuestras búsquedas y obtener
información muy útil acerca del objetivo.
2. Reconocimiento
2.3.1.2. Email harvesting
Esta técnica es muy efectiva de cara a encontrar correos electrónicos, posibles usuarios y
empleados de una organización. La recopilación de este tipo de información es útil a la hora de
obtener una lista para poder llevar a cabo ataques client-side, mapeo de usuarios en la
organización, etc.
Una herramienta muy usada para este tipo de tareas es theharvester, disponible en la
distribución Kali Linux. Esta herramienta se encarga de hacer búsquedas de correos electrónicos
en diferentes motores de búsqueda.
2. Reconocimiento
2.3.1.2. Email harvesting
Whois, además de ser una herramienta muy útil para extraer información sobre el dominio de una
organización, es un servicio TCP y un tipo de base de datos. Las bases de datos whois contienen
mucha información sobre la organización, dominios que alojan, nombre del servidor, registrador
y, en la mayoría de los casos, información de contacto.
root@kali:~# whois microsoft.com
Domain Name: MICROSOFT.COM
Registry Domain ID: 2724960_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2014-10-09T16:28:25Z
Creation Date: 1991-05-02T04:00:00Z
Registry Expiry Date: 2021-05-03T04:00:00Z
Registrar: MarkMonitor Inc.
Registrar IANA ID: 292
Registrar Abuse Contact Email:
busecomplaints@markmonitor.com
Registrar Abuse Contact Phone: +1.2083895740
Domain Status: clientDeleteProhibited
ttps://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited
ttps://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited
ttps://icann.org/epp#clientUpdateProhibited
Domain Status: serverDeleteProhibited
ttps://icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited
ttps://icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited
ttps://icann.org/epp#serverUpdateProhibited
Name Server: NS1.MSFT.NET
Name Server: NS2.MSFT.NET
Name Server: NS3.MSFT.NET
Name Server: NS4.MSFT.NET
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form:
ttps://www.icann.org/wicf/
>>> Last update of whois database: 2018-04-20T10:11:37Z <<<
2. Rconocimiento
Whois, además de permitir la búsqueda por dominios, permite la búsqueda inversa, esto es
proporcionar la dirección IP.
root@kali:~# whois 23.100.122.175
#
# ARIN WHOIS data and services are subject to the Terms of
Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
# https://www.arin.net/public/whoisinaccuracy/index.xhtml
#
#
# The following results may also be obtained via:
# https://whois.arin.net/rest/nets;q=23.100.122.175?
showDetails=true&showARIN=false&showNonArinTopLevelNet=false&
ext=netref2
#
OrgAbuseHandle: MAC74-ARIN
OrgAbuseName: Microsoft Abuse Contact
OrgAbusePhone: +1-425-882-8080
OrgAbuseEmail: abuse@microsoft.com
OrgAbuseRef: https://whois.arin.net/rest/poc/MAC74-ARIN
OrgTechHandle: MRPD-ARIN
OrgTechName: Microsoft Routing, Peering, and DNS
OrgTechPhone: +1-425-882-8080
OrgTechEmail: IOC@microsoft.com
OrgTechRef: https://whois.arin.net/rest/poc/MRPD-ARIN
#
# ARIN WHOIS data and services are subject to the Terms of
Use
# available at: https://www.arin.net/whois_tou.html
#
# If you see inaccuracies in the results, please report at
https://www.arin.net/public/whoisinaccuracy/index.xhtml
2. Reconocimiento
2.3.1.4. Recon-ng
Mediante la configuración de esta herramienta se pueden llevar a cabo consultas whois, consultas
en Google, Bing y otros motores de búsqueda, listar vulnerabilidades que han sido reportadas en
una organización pero que aún no han sido solucionadas, entre otras.
Para más información sobre este framework, es posible visitar el repositorio del autor que incluye
todos los módulos disponibles y el código fuente de la misma.
Otras herramientas, disponibles online, muy útiles que nos pueden proporcionar más información
son las citadas a continuación:
Ripe
Arin
Shodan
Robtex
Archive.org
Pastebin
Github
FOCA
2. Reconocimiento
2.3.2. Reconocimiento activo
Una vez que hemos recopilado la información necesaria sobre nuestro objetivo en la fase anterior,
nos disponemos a analizar servicios específicos. Se van a utilizar diferentes herramientas que
serán descritas en este apartado.
2. Reconocimiento
2.3.2.1. Enumeración DNS
Los servidores DNS ofrecen una serie de datos que se encuentran disponibles de forma pública
sobre organización de servidores como direcciones IP, nombres de servidores, funcionalidad de
estos, etc.
Examinando el dominio Microsoft.com, vamos a utilizar el comando host con el parámetro -t para
llevar a cabo descubrimiento tanto de servidores DNS como de servidores de correo:
root@kali:~# host -t ns microsoft.com
microsoft.com name server ns1.msft.net.
microsoft.com name server ns2.msft.net.
microsoft.com name server ns3.msft.net.
microsoft.com name server ns4.msft.net.
root@kali:~# host -t mx microsoft.com
microsoft.com mail is handled by 10 microsoft-
com.mail.protection.outlook.com.
2. Reconocimiento
De forma predeterminada, cada dominio configurado debe proporcionar, al menos, el DNS y los
servidores de correo responsables del dominio. Dentro de esta técnica, existe la posibilidad de
automatizar este proceso. Es posible emplear de consultas DNS adicionales para el
descubrimiento de hostnames y direcciones IP que puedan pertenecer a la organización objetivo.
root@kali:~# host www.microsoft.com
www.microsoft.com is an alias for www.microsoft.com-c-
3.edgekey.net.
www.microsoft.com-c-3.edgekey.net is an alias for
www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net.
www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net is
an alias for
e13678.dspb.akamaiedge.net.
e13678.dspb.akamaiedge.net has address 23.211.9.92
e13678.dspb.akamaiedge.net has IPv6 address
2a02:26f0:e0:594::356e
e13678.dspb.akamaiedge.net has IPv6 address
2a02:26f0:e0:58f::356e
Para comparar las salidas que pueda tener la ejecución de diferentes búsquedas, el resultado de
buscar subdominios de la organización analizada es:
root@kali:~# host idontexist.microsoft.com
Host idontexist.microsoft.com not found: 3(NXDOMAIN)
2. Reconocimiento
Lookup y reverse lookup
La enumeración de fuerza bruta de DNS realizada anteriormente reveló
un conjunto de direcciones IP dispersas. Si el administrador de DNS de
microsoft.com configuró registros PTR para el dominio, podríamos
encontrar más nombres de dominio que se perdieron durante la fase de
búsqueda avanzada de fuerza bruta al sondear el rango de estas
direcciones encontradas en un bucle.
root@kali:~# for ip in $(seq 80 100);do host
131.107.1.$ip;done |grep -v "not found"
80.1.107.131.in-addr.arpa domain name pointer
rap.microsoft.com.
81.1.107.131.in-addr.arpa domain name pointer
sms-psf-ibcm.microsoft.com.
83.1.107.131.in-addr.arpa domain name pointer
autodiscover.winse.microsoft.com.
84.1.107.131.in-addr.arpa domain name pointer
lslm81.meet.microsoft.com.
86.1.107.131.in-addr.arpa domain name pointer
lslm03.meet.microsoft.com.
87.1.107.131.in-addr.arpa domain name pointer
idp.sts.microsoft.com.
88.1.107.131.in-addr.arpa domain name pointer
mail.microsoft.com.
89.1.107.131.in-addr.arpa domain name pointer
owa.microsoft.com.
90.1.107.131.in-addr.arpa domain name pointer
owa.microsoft.com.
91.1.107.131.in-addr.arpa domain name pointer
owa.microsoft.com.
92.1.107.131.in-addr.arpa domain name pointer
windowsowa.mail.microsoft.com.
95.1.107.131.in-addr.arpa domain name pointer
outlook.wingroup.windeploy.ntdev.microsoft.com.
95.1.107.131.in-addr.arpa domain name pointer
autodiscover.windows.mail.microsoft.com.
96.1.107.131.in-addr.arpa domain name pointer
dawghouse.exchange.microsoft.com.
98.1.107.131.in-addr.arpa domain name pointer
backup.exchange.microsoft.com.
99.1.107.131.in-addr.arpa domain name pointer
mail4.exchange.microsoft.com.
100.1.107.131.in-addr.arpa domain name pointer
iusdinetdc7504-fddi-4-0-0.msft.net.
2. Reconocimiento
Transferencias de zona DNS
La transferencia de zona es similar a una base de datos replicada de un servidor DNS. Este
proceso incluye la copia del archivo de zona desde un servidor DNS maestro a un servidor esclavo.
El archivo de zona contiene una lista de todos los nombres DNS configurados para esa zona.
Una transferencia de zona exitosa no tiene como consecuencia directa una violación de la red. Sin
embargo, facilita el proceso.
Se puede emplear la siguiente sintaxis del comando host para realizar una transferencia de zona.
host -l <domain name> <dns server address>
En este caso, los servidores de Microsoft están configurados apropiadamente y no se permite la
transferencia de zona.
root@kali:~# host -l microsoft.com ns1.msft.net
Using domain server:
Name: ns1.msft.net
Address: 208.84.0.53#53
Aliases:
2. Reconocimiento
Un ejemplo de transferencia de zona exitosa puede ser la siguiente, utilizando una organización
de prueba.
root@kali:~# host -l megacorpone.com ns2.megacorpone.com
Using domain server:
Name: ns2.megacorpone.com
Address: 38.100.193.80#53
Aliases:
2. Reconocimiento
Enumeración DNS con herramientas conocidas
2. Reconocimiento
dnsenum: este script funciona de forma similar a dnsrecon. Intenta realizar
transferencias de zona en un dominio dado.
Host's addresses:
__________________
Name Servers:
______________
ns2.megacorpone.com. 19481 IN A
38.100.193.80
ns3.megacorpone.com. 21024 IN A
38.100.193.90
ns1.megacorpone.com. 19417 IN A
38.100.193.70
mail2.megacorpone.com. 21599 IN A
38.100.193.73
spool.mail.gandi.net. 29 IN A
217.70.178.1
fb.mail.gandi.net. 41 IN A
217.70.178.216
fb.mail.gandi.net. 41 IN A
217.70.178.217
fb.mail.gandi.net. 41 IN A
217.70.178.215
mail.megacorpone.com. 21599 IN A
38.100.193.84
2. Reconocimiento
2.3.2.3. Enumeración SMB
Server Message Block, conocido como SMB, es un protocolo de red cuyo objetivo es
compartir archivos, impresoras, etc. Entre máquinas pertenecientes a una misma red de
ordenadores.
El historial de seguridad de este protocolo ha sido deficiente durante más de una década,
debido a su compleja implementación y a su naturaleza abierta. Las debilidades de este
protocolo van desde la existencia de sesiones nulas de SMB no autenticadas, en Windows
2000 y XP, hasta una gran cantidad de errores de SMB y vulnerabilidades a lo largo de los
años, la más conocida y reciente EternalBlue.
El protocolo SMB ha sido actualizado y mejorado en paralelo con cada lanzamiento del
sistema operativo Windows. La evolución de versiones de este protocolo según el sistema
operativo es:
2. Reconocimiento
Escaneando el servicio NetBIOS
El servicio NetBIOS escucha en los puertos TCP y UDP 139 y 445. Este servicio se puede escanear
con nmap y se puede utilizar una sintaxis como la siguiente:
root@kali:~# nmap -v -p 139,445 -oG smb.txt 10.10.10.1-254
Otra herramienta que nos ayuda a analizar este servicio es ntbscan.
root@kali:~# nbtscan -r 10.11.1.0/24
root@kali:~# nbtscan -r 10.11.1.0/24
Doing NBT name scan for addresses from 10.11.1.0/24
Una sesión NULL se refiere a una sesión NetBIOS no autenticada entre dos ordenadores. Esta
característica permite que los equipos no autenticados obtengan listas de navegación de otros
servidores de Microsoft.
Una sesión nula conlleva que se exponga información sensible (políticas de contraseñas, nombres
de usuario, nombres de grupo, nombres de equipos, ID de usuario y de host) que puede ser
utilizada por un atacante para llevar a cabo ataques más sofisticados. Esta característica de
Microsoft existía en SMB1 de forma predeterminada y fue restringida en versiones posteriores.
Una herramienta que nos facilita la enumeración de esta información es enum4linux. Esta
herramienta está escrita en Perl y su finalidad es obtener información de sistemas Windows y
Samba. Otras herramientas similares que se pueden usar son smbclient, rpcclient, net y
nmblookup.
root@kali:~# enum4linux -a 10.11.1.227
Starting enum4linux v0.8.9 (
http://labs.portcullis.co.uk/application/enum4linux/ ) on Tue
Apr 24 21:44:52 2018
==========================
| Target Information |
==========================
Target ........... 10.11.1.227
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain
admins, root, bin, none
===================================================
| Enumerating Workgroup/Domain on 10.11.1.227 |
===================================================
[+] Got domain/workgroup name: WORKGROUP
===========================================
| Nbtstat Information for 10.11.1.227 |
===========================================
Looking up status of 10.11.1.227
JD <00> - M <ACTIVE> Workstation
Service
JD <20> - M <ACTIVE> File Server
Service
WORKGROUP <00> - <GROUP> M <ACTIVE>
Domain/Workgroup Name
INet~Services <1c> - <GROUP> M <ACTIVE> IIS
WORKGROUP <1e> - <GROUP> M <ACTIVE> Browser
Service Elections
JD <03> - M <ACTIVE> Messenger
Service
IS~JD <00> - M <ACTIVE> IIS
====================================
| Session Check on 10.11.1.227 |
====================================
[+] Server 10.11.1.227 allows sessions using username '',
password ''
==========================================
| Getting domain SID for 10.11.1.227 |
==========================================
Cannot connect to server. Error was
NT_STATUS_INVALID_PARAMETER
[+] Can't determine if host is part of domain or part of a
workgroup
=====================================
| OS information on 10.11.1.227 |
=====================================
[+] Got OS info for 10.11.1.227 from smbclient: Domain=[JD]
OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
[+] Got OS info for 10.11.1.227 from srvinfo:
Cannot connect to server. Error was
NT_STATUS_INVALID_PARAMETER
============================
| Users on 10.11.1.227 |
============================
Use of uninitialized value $users in print at ./enum4linux.pl
line 874.
Use of uninitialized value $users in pattern match (m//)
at ./enum4linux.pl line 877.
Server Comment
--------- -------
Workgroup Master
--------- -------
===================================================
| Password Policy Information for 10.11.1.227 |
===================================================
[+] JD
[+] Builtin
=============================
| Groups on 10.11.1.227 |
=============================
=============================================================
=========
| Users on 10.11.1.227 via RID cycling (RIDS: 500-
550,1000-1050) |
=============================================================
=========
============================================
| Getting printer info for 10.11.1.227 |
============================================
Cannot connect to server. Error was
NT_STATUS_INVALID_PARAMETER
enum4linux complete on Tue Apr 24 21:45:17 2018
2. Reconocimiento
Por otro lado, nmap dispone de scripts específicos para analizar este servicio, tal como se
comentó en el apartado anterior.
root@kali:~# ls -l /usr/share/nmap/scripts/smb*
-rw-r--r-- 1 root root 45163 Aug 12 2017
/usr/share/nmap/scripts/smb-brute.nse
-rw-r--r-- 1 root root 5315 Aug 12 2017
/usr/share/nmap/scripts/smb-double-pulsar-backdoor.nse
-rw-r--r-- 1 root root 4846 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-domains.nse
-rw-r--r-- 1 root root 5931 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-groups.nse
-rw-r--r-- 1 root root 8045 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-processes.nse
-rw-r--r-- 1 root root 12057 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-sessions.nse
-rw-r--r-- 1 root root 6923 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-shares.nse
-rw-r--r-- 1 root root 12531 Aug 12 2017
/usr/share/nmap/scripts/smb-enum-users.nse
-rw-r--r-- 1 root root 1706 Aug 12 2017
/usr/share/nmap/scripts/smb-flood.nse
-rw-r--r-- 1 root root 7388 Aug 12 2017
/usr/share/nmap/scripts/smb-ls.nse
-rw-r--r-- 1 root root 8792 Aug 12 2017
/usr/share/nmap/scripts/smb-mbenum.nse
-rw-r--r-- 1 root root 8041 Aug 12 2017
/usr/share/nmap/scripts/smb-os-discovery.nse
-rw-r--r-- 1 root root 5083 Aug 12 2017
/usr/share/nmap/scripts/smb-print-text.nse
-rw-r--r-- 1 root root 1937 Aug 12 2017
/usr/share/nmap/scripts/smb-protocols.nse
-rw-r--r-- 1 root root 63595 Aug 12 2017
/usr/share/nmap/scripts/smb-psexec.nse
-rw-r--r-- 1 root root 5190 Aug 12 2017
/usr/share/nmap/scripts/smb-security-mode.nse
-rw-r--r-- 1 root root 2424 Aug 12 2017
/usr/share/nmap/scripts/smb-server-stats.nse
-rw-r--r-- 1 root root 14150 Aug 12 2017
/usr/share/nmap/scripts/smb-system-info.nse
-rw-r--r-- 1 root root 7586 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-conficker.nse
-rw-r--r-- 1 root root 23153 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-cve-2017-7494.nse
-rw-r--r-- 1 root root 6494 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-cve2009-3103.nse
-rw-r--r-- 1 root root 6618 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms06-025.nse
-rw-r--r-- 1 root root 5444 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms07-029.nse
-rw-r--r-- 1 root root 5778 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms08-067.nse
-rw-r--r-- 1 root root 5620 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms10-054.nse
-rw-r--r-- 1 root root 7322 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms10-061.nse
-rw-r--r-- 1 root root 7145 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-ms17-010.nse
-rw-r--r-- 1 root root 4522 Aug 12 2017
/usr/share/nmap/scripts/smb-vuln-regsvc-dos.nse
-rw-r--r-- 1 root root 3391 Aug 12 2017
/usr/share/nmap/scripts/smb2-capabilities.nse
-rw-r--r-- 1 root root 3119 Aug 12 2017
/usr/share/nmap/scripts/smb2-security-mode.nse
-rw-r--r-- 1 root root 1332 Aug 12 2017
/usr/share/nmap/scripts/smb2-time.nse
-rw-r--r-- 1 root root 5121 Aug 12 2017
/usr/share/nmap/scripts/smb2-vuln-uptime.nse
2. Reconocimiento
2.3.2.4. Enumeración SMTP
El protocolo Simple Mail Transfer Protocol, conocido como SMTP es un protocolo de red
utilizado para el intercambio de mensajes de correo electrónico. Suele asociarse a otros
protocolos como POP3 o IMAP, utilizándose SMTP para correo de salida, y los otros para correo
entrante.
Algunos servidores de correo suelen estar mal configurados y mediante técnicas de enumeración
es posible obtener información sobre el host objetivo. SMTP suele disponer de comandos como
VRFY o EXPN, que sirven para verificar los usuarios existentes en un servidor de correo, lo que
más tarde puede ayudar al atacante.
root@kali:~# nc -nv 10.11.1.215 25
(UNKNOWN) [10.11.1.215] 25 (smtp) open
220 redhat.acme.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 Jun
2013 07:47:14 +0300
VRFY root
250 2.1.5 root <root@redhat.acme.com>
VRFY idontexist
550 5.1.1 idontexist... User unknown
^C
root@kali:~#
2. Reconocimiento
2.3.2.5. Enumeración SNMP
Simple Network Management Protocol (SNMP) es un protocolo basado en UDP, que facilita el
intercambio de información entre dispositivos de una misma red, un protocolo simple, sin estado
y, por lo tanto, es susceptible a IP spoofing y ataques de repetición. Además, los protocolos SNMP
1, 2 y 2c de uso común no ofrecen cifrado de tráfico, lo que significa que la información y las
credenciales SNMP se pueden interceptar fácilmente a través de una red local. Los protocolos
SNMP tradicionales también tienen esquemas de autenticación débiles y, por lo general, son
configurados con el protocolo por defecto public y con community strings privados.
2. Reconocimiento
El árbol MIB de SNMP
Management Information Base de SNMP es una base de datos que contiene información
relacionada con la administración de la red. Está organizado en forma de árbol, cuyas ramas
representan las diferentes organizaciones o funciones de red. Cada hoja de árbol corresponde a
valores de variables específicas de un endpoint a las que se puede acceder.
Management Information Base de SNMP es una base de datos que contiene información
relacionada con la administración de la red. Está organizado en forma de árbol, cuyas ramas
representan las diferentes organizaciones o funciones de red. Cada hoja de árbol corresponde a
valores de variables específicas de un endpoint a las que se puede acceder.
2. Reconocimiento
Escaneando el protocolo SNMP con nmap
2. Reconocimiento
Escaneando el protocolo SNMP con snmpwalk
Esta herramienta es otra alternativa que es capaz de acceder a la información SNMP. Para poder
leer los MIB previamente comentados, necesitamos conocer el nombre de la comunidad, por lo
que lo primero será lanzar un escaneo nmap sobre el activo para averiguarlo:
root@kali:~# nmap -sU --open -p 161 10.11.1.115 -sV
Starting Nmap 7.60 ( https://nmap.org ) at 2018-04-25 11:33
CEST
Nmap scan report for 10.11.1.115
Host is up (0.15s latency).
2. Reconocimiento
Hemos averiguado que la comunidad SNMP es “public”. Con esta información procedemos a
lanzar la herramienta snmpwalk.
root@kali:~# snmpwalk -c public -v1 10.11.1.115
iso.3.6.1.2.1.1.1.0 = STRING: "Linux tophat.acme.com 2.4.20-8
#1 Thu Mar 13 17:54:28 EST 2003 i686"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (1556451775) 180 days,
3:28:37.75
iso.3.6.1.2.1.1.4.0 = STRING: "Root <root@localhost>
(configure /etc/snmp/snmp.local.conf)"
iso.3.6.1.2.1.1.5.0 = STRING: "tophat.acme.com"
iso.3.6.1.2.1.1.6.0 = STRING: "Unknown (edit
/etc/snmp/snmpd.conf)"
iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.2.1.31
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB module to describe
generic objects for network interface sub-layers"
iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB module for SNMPv2
entities"
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The MIB module for
managing TCP implementations"
iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for
managing IP and ICMP implementations"
iso.3.6.1.2.1.1.9.1.3.5 = STRING: "The MIB module for
managing UDP implementations"
iso.3.6.1.2.1.1.9.1.3.6 = STRING: "View-based Access Control
Model for SNMP."
iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The SNMP Management
Architecture MIB."
iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB for Message
Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The management information
definitions for the SNMP User-based Security Model."
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (32174035) 3 days,
17:22:20.35
Timeout: No Response from 10.11.1.115
3. Escaneo
3.1. Introducción
Una vez que se ha finalizado la fase de reconocimiento, en la que se obtiene una primera visión
general de la infraestructura objetivo, conviene seguir ampliando esta información a través de
una fase de escaneo de la infraestructura, en la cual trataremos de tener una visión más detallada
del objetivo.
A lo largo del siguiente apartado iremos descubriendo una metodología tipo de escaneo y su
teoría asociada. Además, se mostrará el uso de las herramientas utilizadas durante esta fase, si
bien es cierto que varias de las herramientas descritas ya se introdujeron en la fase de
Reconocimiento, el uso que se hará de ellas estará orientado a esta nueva fase. Asimismo, se
mostrarán nuevas herramientas propias de esta fase de Escaneo.
3. Escaneo
3.2. Teoría
Una vez que se ha realizado una primera enumeración de la infraestructura objetivo es necesario
ampliar la información que disponemos sobre esta infraestructura; cuanto más conocimiento
tengamos sobre la misma, dispondremos de más opciones para intentar hacernos con el control
de ciertas partes de esta. Debido a que seremos capaces de aplicar, con más efectividad, ciertas
tácticas, técnicas y procedimientos que mejor se adapten a cada caso particular.
Normalmente, el tipo de información que trataremos de recolectar en esta fase irá dirigido a
tener una visión más amplia de la infraestructura de red, sistemas operativos desplegados, tipos
de servicios que se proporcionan y versiones de los mismos, posibles vulnerabilidades conocidas
que puedan darse en la infraestructura, etc.
Aunque existen diversas aproximaciones, a la hora de dividir los distintos tipos de escaneo en los
que se divide esta fase, podremos diferenciar los siguientes tipos de escaneo:
3. Escaneos
Además de los tipos de escaneo expuestos previamente, se ha de tener en cuenta la perspectiva o
posicionamiento de la que se dispone para escanear el objetivo.
También se ha de tener en cuenta que los servicios y tecnologías expuestos en la red interna
varían en canto a los expuestos en el perímetro de red. Por ejemplo, en la red interna podremos
encontrarnos con servicios de Directorio Activo que aportan granularidad a los servicios de
autenticación y autorización a los recursos dependiendo de un sistema de usuarios y roles
específico, podemos encontrarnos servicios específicos no expuestos en el perímetro como
sistemas de facturación y contabilidad, sistemas de videovigilancia, sistemas de control de las
instalaciones, etc.
3. Escaneo
Escaneo externo
Por el contrario, en este otro tipo de enfoque, el posicionamiento que se realiza es desde fuera de
la entidad objetivo. De esta manera y en una primera instancia, únicamente se tiene acceso a
escanear el perímetro externo del objetivo; teniendo visibilidad, únicamente, sobre los servicios
expuestos en internet. Por ejemplo, servicio de correo, intranet, servicio web, etc.
Figura 2.7: explicación escaneos interno y externo Fuente: imagen editada de mind
En los siguientes apartados, se introducirán las herramientas comúnmente utilizadas para tal fin,
si bien es cierto que pueden existir otras herramientas además de las expuestas, las utilizadas en
el documento son las más extendidas y utilizadas.
Por otro lado, varias de las herramientas expuestas podrán utilizarse en los distintos tipos de
escaneo debido a su versatilidad.
Cada entorno objetivo dispondrá de una estructura totalmente distinta y, debido a esta
heterogeneidad, se hace indispensable la ejecución de esta fase que nos permitirá tener una
primera visión, más general, del entorno en el que nos encontramos. Esto nos permitirá
adaptarnos a él y adaptar los siguientes escaneos al entorno de las pruebas.
Figura 2.8: explicación escaneos interno y externo Fuente: elaboración propia Cyber Academy
La técnica más común de descubrimiento consiste en las consultas mediante mensajes ICMP
(Internet Control Messaging Protocol). Sin adentrarnos mucho en la explicación del protocolo, la
petición se compone de unos paquetes de tipo petición-respuesta. Mediante este protocolo
puede diagnosticarse el estado, velocidad y calidad de una red determinada. Se encapsula dentro
del datagrama IP, con lo cual va asociado a una dirección IP en concreto.
Utilizaremos herramientas que utilizan este protocolo para realizar consultas de manera directa
contra una dirección IP o un rango ellas. Como respuesta obtendremos un paquete ICMP con un
código ICMP con el que se puede determinar si no se puede acceder a la red, si se obtuvo o no
respuesta del host consultado, etc. Para más información del funcionamiento del protocolo ICMP,
se recomienda consultar este enlace.
Por el contrario, en el siguiente ejemplo se indica una dirección IP que no se encuentra activa.
Figura 2.10:
Por el contrario, en el siguiente ejemplo se indica una dirección IP que no se encuentra activa.
Figura 2.12:
A diferencia de ping y hping3, puede realizar la consulta sobre un rango concreto de direcciones
IP.
Figura 2.13:
Dependiendo del tipo de red objetivo, es posible que el tráfico ICMP se encuentre restringido. En
ese caso, aunque se realice una consulta sobre una dirección IP, aunque el host que se encuentre
tras esa dirección IP se encontrase activo, el router filtraría el paquete ICMP y nunca llegaría a su
destino y parecería que el sistema remoto no se encuentra disponible.
En estos casos, se puede recurrir a una técnica conocida como port sweep, en la cual se consulta a
un determinado puerto o conjunto de puertos que creamos que se pueda encontrar disponible en
el host remoto. Si alguno de los puertos consultados responde como activo, significa que el host
remoto se encuentra operativo, aunque no responda a ping.
De manera contraria, desde una perspectiva interna, lo más normal es que nos encontrásemos en
el segmento de Directorio Activo de una determinada entidad. Dado que el Directorio Activo
utiliza el puerto TCP 445 para establecer la comunicación entre los equipos, se podría realizar un
escaneo únicamente al puerto TCP 445 de un determinado rango de red para determinar los
equipos que se encontrasen operativos.
Al instalarlo, lleva embebido el motor de nmap, con lo que no hace falta instalar ninguna
dependencia adicional. Dispone de unas funciones básicas para operar “a golpe de ratón”,
además, dispone de una pequeña ventana de terminal en la que realizar operaciones
directamente en sintaxis de nmap.
De esta manera, todos los ejemplos que se exponen en el módulo para realizar mediante nmap se
pueden realizar sobre Zenmap sin ningún tipo de operadores o instrucciones adicionales.
Figura 2.16: interfaz de Zenmap Fuente: captura de Zenmap (https://nmap.org/zenmap/)
Para ello, envían mensajes broadcast de tipo ARP Discovery en la que se consulta en todo el
dominio de broadcast si alguien tiene asignada una dirección IP en concreto. Si alguno de los
equipos tiene asignada la dirección IP solicitada, le responde al equipo que realizó la consulta.
Dado el funcionamiento del protocolo, es una técnica que únicamente suele funcionar desde una
perspectiva de escaneo interna. Además, como utiliza un protocolo distinto a ICMP, aunque los
paquetes ICMP se encuentren filtrados en la red, el descubrimiento de equipos activos con esta
técnica resulta satisfactorio.
Figura 2.17: descubrimiento de host con aspscan Fuente: captura de la herramienta arpscan
Video Player
00:00
00:26
Descubrimiento de host con herramienta netdiscover
De manera similar a arp-scan, netdiscover permite el descubrimiento de equipos remotos
mediante mensajes broadcast de tipo ARP Discovery. La salida es en modo monitorización; sin
embargo, tiene un modo parseable (operador -L) que permite la redirección a un fichero.
Figura 2.18: escaneo de rango IP con aspscan Fuente: captura de la herramienta arpscan
Dado que bastantes dispositivos de red utilizan protocolos que emiten mensajes en formato
broadcast para transmitirse información e incluso la configuración de la red, podemos analizar el
tráfico de este tipo que llega a nuestra interfaz.
Por ejemplo, en la siguiente captura de pantalla se observa un paquete del protocolo CDP (Cisco
Discovery Protocol) en el que se observa que el propio protocolo envía información del modelo
del dispositivo (un switch Catalyst 2960), versión del sistema operativo que se encuentra en
ejecución, dirección IP de gestión del switch, las distintas VLAN que existen en la topología, etc.
Esta herramienta incluye un operador -O con el que se fuerza a averiguar la versión del sistema
operativo que ejecuta el sistema remoto.
Figura 2.23: descubrimiento de sistema operativo con nmap Fuente: captura de la herramienta
nmap
VOLVER
En los sucesivos subapartados se indican las técnicas utilizadas para el descubrimiento de puertos.
Aunque nos centraremos en el uso de la herramienta nmap, también se introducirán algún
ejemplo de otras herramientas como nc y Zenmap.
VOLVERCONTINUAR
3.4.1. Enumeración de puertos
Escaneo TCP
Es el tipo por defecto de escaneo en nmap. Intenta una conexión TCP completa (three-way
handshake) y si el puerto se encuentra abierto, se completará la conexión; en caso contrario, el
puerto se considera cerrado. Una de las principales desventajas de este tipo de escaneo es que es
fácilmente detectable y, por tanto, los fabricantes de sistemas firewall suelen incorporar
mecanismos de defensa para evitar este tipo de escaneos.
A continuación, se muestran dos ejemplos, uno con netcat y otro con nmap:
root@kali:~# nc -nvv -w 1 -z 10.11.1.223 443-445
(UNKNOWN) [10.11.1.223] 445 (microsoft-ds) open
(UNKNOWN) [10.11.1.223] 444 (snpp) : Connection refused
(UNKNOWN) [10.11.1.223] 443 (https) open
sent 0, rcvd 0
Figura 2.24: escaneo TCP con netcat Fuente: captura de la herramienta netcat
Figura 2.25: escaneo TCP con nmap Fuente: captura de la herramienta nmap
VOLVERCONTINUAR
Debido a las características del protocolo, este tipo de escaneo realiza el envío de una cabecera
UDP para cada puerto objetivo. Si se obtiene un error ICMP que indica que el puerto no es
alcanzable (tipo 3, código 3), entonces se marca el puerto como cerrado. Si se recibe cualquier
error ICMP no alcanzable (tipo 3, códigos 1, 2, 9, 10 o 13) se marca el puerto como filtrado. En
algunas ocasiones se recibirá una respuesta al paquete UDP, lo que prueba que el puerto está
abierto. Si no se ha recibido ninguna respuesta después de algunas retransmisiones entonces se
clasifica el puerto como abierto|filtrado.
Figura 2.26: Escaneo UDP con nmap Fuente: captura de la herramienta nmap
A esta técnica se la conoce habitualmente como sondeo medio abierto, porque no se llega a abrir
una conexión TCP completa. Se envía un paquete SYN, como si se fuera a abrir una conexión real
y después se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el puerto
está en escucha (abierto), mientras que si se recibe un RST (reset) indica que no hay nada
escuchando en el puerto. Si no se recibe ninguna respuesta después de realizar algunas
retransmisiones, entonces el puerto se marca como filtrado. También se marca el puerto como
filtrado si se recibe un error de tipo ICMP no alcanzable.
Figura 2.28: Escaneo XMAS con nmap Fuente: captura de la herramienta nmap
Figura 2.29: Escaneo FIN con nmap Fuente: captura de la herramienta nmap
Figura 2.30: Escaneo NULL con nmap Fuente: captura de la herramienta nmap
Como conclusión a este apartado de escaneo de puertos, hay que tener en cuenta varios aspectos
a la hora de realizar este tipo de escaneo:
El escaneo de puertos UDP a menudo no es fiable en su totalidad, ya que los firewall y
enrutadores pueden filtrar los paquetes ICMP. Esto puede conducir a falsos positivos en el
escaneo y es posible obtener de forma regular resultados donde se muestran todos los
puertos UDP abiertos en el host escaneado.
La mayoría de los escaneos de puertos no analizan todos los puertos disponibles y
normalmente tienen una lista preestablecida de "puertos interesantes" que se analizan.
Para poder lanzar escaneos personalizados a los puertos deseados, las herramientas
utilizadas para esto cuentan con diferentes combinaciones de parámetros para ajustar el
escaneo a las necesidades.
Aunque existen otras herramientas que también pueden realizar, en mayor o menor medida, el
descubrimiento de los tipos de servicio y sus versiones, utilizaremos la herramienta nmap para tal
tarea.
El primero de ellos es el operador -sV (de service version), realiza un descubrimiento de servicios
en base a las respuestas devueltas por cada puerto en el equipo remoto.
Figura 2.31: enumeración de servicios con nmap Fuente: captura de la herramienta nmap
Por otro lado, existe otro operador más completo -A, que además de realizar un descubrimiento
de las versiones del servicio, también realiza detección del sistema operativo, traceroute a la
máquina y lanza unos scripts de recopilación de información más específicos por cada puerto
abierto.
Figura 2.32: enumeración de servicios con nmap Fuente: captura de la herramienta nmap
Notación CIDR: nmap puede tomar como entrada uno o varios rangos de direcciones IP
en notación CIDR.
nmap 192.168.1.0/24
nmap 192.168.1.0/24, 172.16.0.0/16
nmap 192.168.1.*
nmap 192.168.1*.*, 192.168.4*.*
nmap 192.168.1.*, 172.16.*.*
Consulta a un rango consecutivo de direcciones IP: otra opción es indicar grupos de
direcciones IP consecutivos.
nmap 192.168.1.1-40
nmap 192.168.1.1-40, 192.168.10-20.1-254
Consulta sobre un nombre de host: en caso de indicar un nombre de host para escanear,
nmap resolverá la dirección IP asociada y realizará el escaneo sobre dicha IP.
nmap www.microsoft.com
nmap www.microsoft.com, mail.microsoft.com
Consulta por puertos no consecutivos: por otro lado, también se pueden especificar los
puertos concretos a los que queremos que se consulten.
Consultar los 100 puertos más conocidos: otra opción consiste en indicarle a nmap que
realice un escaneo sobre un número determinado de los puertos más comunes, es un
listado estadístico mantenido por nmap.
Formato estándar: exporta la salida nmap con el mismo formato que la salida estándar a
un fichero con extensión .nmap.
Formato Grep: exporta la salida del comando nmap a un fichero en el que cada línea
contiene la información del host remoto escaneado y el resultado del escaneo, se dividen
los distintos resultados mediante caracteres de tipo “;”, “/”, “:”, etc. De esta manera, se
puede filtrar y recoger solo la información que nos interesa mediante las herramientas cut
y grep. Genera un fichero con extensión .gnmap.
Formato XML: exporta la salida del comando nmap en formato xml, este fichero puede
servir para alimentar otra serie de herramientas útiles para la siguiente fase de escaneo,
como la herramienta nessus.
Exportar todos los formatos: Nmap dispone de una opción para exportar el resultado del
escaneo en los tres formatos anteriormente descritos, de esta manera genera 3 ficheros
con las extensiones .nmap, .gnmap y .xml.
VOLVERCONTINUAR
En la siguiente ruta se puede consultar la documentación de todos los scripts por defecto de
nmap https://nmap.org/nsedoc/
Para consultar el listado de scripts disponibles, junto con una pequeña descripción de ellos,
podemos consultar la ayuda de los scripts indicando que se quiere obtener información de todos
nmap –script-help all
Los scripts .nse normalmente responden a un determinado protocolo, http, Netbios, etc. De esta
manera, si el puerto que se encuentra abierto no dispone de ese servicio o protocolo, el script no
se ejecutará.
Para invocar el lanzamiento de un determinado script se realiza con la opción - script seguido del
nombre del script. Dado que los scripts que consultan sobre un mismo protocolo o servicio tienen
una nomenclatura inicial común, también se pueden indicar los scripts qe se van a ejecutar
mediante expresiones regulares.
nmap 192.168.15.205 --script "smb-enum-users.nse"
nmap 192.168.15.205 --script "smb-*"
También es posible indicar a nmap que ejecute todos los scripts por defecto en los puertos del
host remoto que localice como abiertos.
nmap 192.168.15.205 -p 1-65535 -sC
nmap 192.168.15.205 -p 1-65535 --script default
3.4.3. Opciones avanzadas de escaneo
Además, estos scripts se encuentran divididos en diferentes categorías, pudiendo estar un script
asociado a varias categorías. Las categorías de scripts disponibles en nmap son las siguientes:
De esta manera, es posible indicar a nmap que ejecute todos los scripts de una determinada
categoría en el sistema remoto
nmap 192.168.15.205 --script vuln
En el siguiente ejemplo se indica a nmap que ejecute todos los scripts asociados al protocolo SMB
que pertenezcan a la categoría vuln, discovery o versión.
nmap 192.168.15.205 --script "(vuln or discovery or version)
and smb-*"
En este otro ejemplo, se ejecutan todos los scripts asociados al protocolo SMB que se encuentren
catalogados con las categorías vuln y safe.
nmap 192.168.15.205 --script "smb-* and (vuln and safe)"
De la misma manera, el siguiente ejemplo ejecuta todos los scripts asociados al protocolo SMB
que no se encuentren catalogados como intrusivos.
nmap 192.168.15.205 --script "smb-* and not intrusive"
A continuación, se muestra cómo se indica el argumento “unsafe” con valor “1” para configurar la
ejecución del script “smb-check-vulns”
nmap 192.168.15.205 -p 135-139,445 -sT -sU --script smb-
check-vulns unsafe=1
Este último tipo de escaneo se centra en localizar posibles vulnerabilidades conocidas que se
asocian a una determinada versión y tipo de servicio.
Para ello, es posible consultar recursos de información de manera online que introduciremos más
adelante en este apartado o bien, hacer uso de escáneres más específicos que se encuentran
diseñados para asociar y, en algunos casos comprobar, si una determinada versión de un tipo de
servicio o software se encuentra afectado por una vulnerabilidad en concreto.
3.5.1. Nmap como escáner de
vulnerabilidades
Nmap también puede utilizar la potencia de sus scripts nse para actuar a modo de pequeño
escáner de vulnerabilidades. Para ello podemos hacer uso de los scripts incluidos en la categoría
vuln, los cuales identifican en el sistema remoto ciertas vulnerabilidades conocidas basándose en
el tipo y versión del protocolo o servicio que se encuentre detrás de ellos.
En caso de que la versión del protocolo o servicio se vea afectada por alguna vulnerabilidad
conocida que se encuentre registrada en la base de datos, el script nos lo indicará. Únicamente
realiza la búsqueda y saca coincidencias, pero no comprueba si realmente el equipo remoto se
encuentra afectado.
Para instalarlo se ha de clonar el proyecto de github en la carpeta de scripts de nmap. Una vez
copiados los ficheros, se puede invocar la ejecución del mismo como si de otro script se tratase.
nmap -sV --script=vulscan/vulscan.nse www.microsoft.com
3.5.2. Nessus
Nessus, con bastante diferencia, es la aplicación de escaneo de vulnerabilidades mas
conocida y utilizada. Actualmente existen dos versiones:
Para poder analizar los equipos remotos, es necesario configurar un escáner. Para ello, se
selecciona el tipo de escaneo, se indican los hosts remotos, redes o dominios que se van a
escanear, también admite que se le indique un fichero con un listado de hosts objetivo.
Figura 2.34: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta
Nessus
3.5.2. Nessus
En operación normal, Nessus escanea los puertos de los hosts remotos indicados con su propio
motor de escaneo de puertos para buscar puertos abiertos, también es posible indicarle como
entrada el resultado de un escaneo previo de nmap que haya sido exportado en formato XML.
Figura 2.35: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta Nessus
3.5.2. Nessus
También es posible especificar las pruebas que se van a lanzar en el apartado de plugins (se
encuentran agrupados por categorías). Estos plugins están desarrollados bajo un lenguaje
propietario llamado NASL (Nessus Attack Scripting Language).
Figura 2.36: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta Nessus
3.5.2. Nessus
Es posible añadir también una serie de opciones adicionales como programar el escaneo para que
se inicie en un horario determinado, que cuando finalice nos envíe un correo, que no ejecute
pruebas que puedan afectar al rendimiento de los sistemas remotos, etc.
Una vez finalizado el escaneo, podremos acceder a las vulnerabilidades localizadas de manera
global.
Figura 2.37: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta Nessus
3.5.2. Nessus
O acceder a las vulnerabilidades de cada equipo remoto.
Figura 2.38: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta Nessus
Opcionalmente, los resultados del escaneo pueden ser exportados como informes en varios
formatos, como CSV, PDF, XML y HTML. Los resultados también pueden guardarse en una base
de conocimiento para referencia en futuros escaneos de vulnerabilidades.
Figura 2.39: escaneo de vulnerabilidades con Nessus Fuente: captura de la herramienta Nessus
VOLVER
Escáneres de protocolos.
Escáneres de aplicaciones o frameworks.
Escáneres de vulnerabilidades web.
Figura 2.40: escaneo de protocolos con testssl Fuente: captura de la herramienta testssl
En esta sección podemos encontrarnos programas como JoomScan, wpscan, droopscan, etc.
Figura 2.41: escaneo de aplicaciones con WPScan Fuente: captura de la herramienta WPScan
Como escáneres más representativos de esta categoría nos encontramos con las aplicaciones
Qualys web-app y Acunetix, ambas de pago.
Figura 2.42: escaneo de vulnerabilidades web con Acunetix Fuente: captura de la herramienta
Acunetix
cve.csv
securityfocus.csv
securitytracker.csv
expliotdb.csv
openvas.csv
Por otro lado, existe una herramienta en modo consola, disponible para sistemas Linux, que
realiza búsquedas de exploits disponibles en una copia local de la base de datos mantenida por
exploit-db. Además, también te indica dónde se encuentra la copia local del exploit para poder
utilizarlo para comprometer el equipo remoto.
La mayoría de los distintos tipos de sondeo disponibles sólo los puede llevar a
cabo un usuario privilegiado. Esto es debido a que envían y reciben paquetes en
crudo, lo que hace necesario tener acceso como administrador (root) en la
mayoría de los sistemas UNIX. En los entornos Windows es recomendable
utilizar una cuenta de administrador, aunque Nmap algunas veces funciona para
usuarios no privilegiados en aquellas plataformas donde ya se haya instalado
WinPcap. La necesidad de privilegios como usuario administrador era una
limitación importante cuando se empezó a distribuir Nmap en 1997, ya que
muchos usuarios sólo tenían acceso a cuentas compartidas en sistemas como
usuarios normales. Ahora, las cosas son muy distintas. Los ordenadores son más
baratos, hay más personas que tienen acceso permanente a Internet, y los
sistemas UNIX (incluyendo Linux y MAC OS X) son más comunes. También se
dispone de una versión para Windows de Nmap, lo que permite que se ejecute en
más escritorios. Por todas estas razones, cada vez es menos necesario ejecutar
Nmap utilizando cuentas de sistema compartidas. Esto es bueno, porque las
opciones que requieren de más privilegios hacen que Nmap sea más potente y
flexible.
Aunque Nmap intenta generar resultados precisos, hay que tener en cuenta que
estos resultados se basan en los paquetes que devuelve el sistema objetivo (o los
cortafuegos que están delante de éstos). Estos sistemas pueden no ser fiables y
envíar respuestas cuyo objetivo sea confundir a Nmap. Son aún más comunes los
sistemas que no cumplen con los estándares RFC, que no responden como
deberían a las sondas de Nmap. Son especialmente susceptibles a este problema
los sondeos FIN, Null y Xmas. Hay algunos problemas específicos a algunos
tipos de sondeos que se discuten en las entradas dedicadas a sondeos concretos.
-sU (sondeos UDP)
Los sondeos UDP funcionan mediante el envío (sin datos) de una cabecera
UDP para cada puerto objetivo. Si se obtiene un error ICMP que indica
que el puerto no es alcanzable (tipo 3, código 3) entonces se marca el
puerto como cerrado. Si se recibe cualquier error ICMP no alcanzable
(tipo 3, códigos 1, 2, 9, 10, o 13) se marca el puerto como filtrado. En
algunas ocasiones se recibirá una respuesta al paquete UDP, lo que prueba
que el puerto está abierto. Si no se ha recibido ninguna respuesta después
de algunas retransmisiones entonces se clasifica el puerto como abierto|
filtrado. Esto significa que el puerto podría estar abierto o que hay un
filtro de paquetes bloqueando la comunicación. Puede utilizarse el sondeo
de versión (-sV) para diferenciar de verdad los puertos abiertos de los
filtrados.
Estos tres tipos de sondeos (aunque puede hacer muchos más a través de la
opción --scanflags que se describe en la próxima sección) aprovechan
una indefinición en la RFC de TCP que diferencia los
puertos abiertos y cerrados. La página 65 dice que “si el estado del puerto
[destino] es CERRADO .... un segmento entrante que contiene un RST
hace que se envíe un RST en la respuesta.” Después la página siguiente
discute los paquetes que se envían a puertos abiertos sin fijar los bits SYN,
RST, o ACK, diciendo: “es improbable que llegue aquí, pero si lo hace,
debe descartar el segmento y volver.”
Sondeo Null(-sN)
Fija los bits de FIN, PSH, y URG flags, iluminando el paquete como si
fuera un árbol de Navidad.
Este sondeo es distinto de otros que se han discutido hasta ahora en que no
puede determinar puertos abiertos (o incluso abiertos|filtrados). Se
utiliza para mapear reglas de cortafuegos, y para determinar si son
cortafuegos con inspección de estados y qué puertos están filtrados.
Puede añadir un número de puerto separado por dos puntos del sistema
zombi si desea analizar un puerto específico del zombi para consultar los
cambios IPID. Si no lo hace Nmap utilizará el puerto que utiliza para pings
TCP por omisión (el puerto 80).
-sO (sondeo de protocolo IP)
Esta vulnerabilidad era muy habitual en 1997, el año que se publicó Nmap,
pero ya ha sido arreglada en muchos sitios. Aún siguen existiendo
servidores vulnerables así que merece la pena probar este sondeo si lo
demás falla. Si su objetivo es atravesar un cortafuegos, analice la red
objetivo en busca del puerto 21 (o incluso cualquier servicio FTP, si
sondea todos los puertos y activa la detección de versiones). Después
intente un sondeo de rebote utilizando cada uno. Nmap le indicará si el
sistema es o no vulnerable. Si está intentado ocultar sus huellas no tiene
que (y de hecho no debería) limitarse a servidores en la red objetivo. En
cualquier caso, antes de empezar a sondear Internet al azar para buscar
servidores de FTP vulnerables, tenga en cuenta que pocos administradores
de sistemas apreciarán el que abuse de sus servidores de esta forma.
Nmap ofrece distintas opciones para especificar los puertos que se van a sondear
y si el orden de los sondeos es aleatorio o secuencial. Estas opciones se añaden a
los métodos de sondeos que se han discutido previamente. Nmap, por omisión,
sondea todos los puertos hasta el 1024 además de algunos puertos con números
altos listados en el fichero nmap-services para los protocolos que se sondeen.
Esta opción especifica los puertos que desea sondear y toma precedencia
sobre los valores por omisión. Puede especificar tanto números de puerto
de forma individual, así como rangos de puertos separados por un guión
(p. ej. 1-1023). Puede omitir el valor inicial y/o el valor final del rango.
Nmap utilizará 1 ó 65535 respectivamente. De esta forma, puede
especificar -p- para sondear todos los puertos desde el 1 al 65535. Se
permite sondear el puerto cero siempre que lo especifique explícitamente.
Esta opción especifica el número de protocolo que quiere sondear (de 0 a
255) en el caso de que esté sondeando protocolos IP ( -sO).
Si le indica a Nmap que mire un sistema remoto le podrá decir que tiene abiertos
los puertos 25/tcp, 80/tcp y 53/udp. Informará que esos puertos se corresponden
habitualmente con un servidor de correo (SMTP), servidor de web (HTTP) o
servidor de nombres (DNS), respectivamente, si utilizas su base de datos nmap-
services con más de 2.200 puertos conocidos. Generalmente este informe es
correo dado que la gran mayoría de demonios que escuchan en el puerto 25 TCP
son, en realidad, servidores de correo. ¡Pero no debe confiar su seguridad en este
hecho! La gente ejecuta a veces servicios distintos en puertos inesperados
Aún en el caso de que Nmap tenga razón y el servidor de ejemplo indicado arriba
está ejecutando servidores de SMTP, HTTP y DNS ésto no dice mucho. Cuando
haga un análisis de vulnerabilidades (o tan sólo un inventario de red) en su propia
empresa o en su cliente lo que habitualmente también quiere saber es qué versión
se está utilizando del servidor de correcto y de DNS. Puede ayudar mucho a la
hora de determinar qué ataques pueden afectar a un servidor el saber el número
de versión exacto de éste. La detección de versiones le ayuda a obtener esta
información.
-sV (Detección de versiones)
-sR (Sondeo RPC)
Nmap le indicará una URL donde puede enviar las huellas si conoce (con
seguridad) el sistema operativo que utiliza el equipo si no puede adivinar el
sistema operativo de éste y las condiciones son óptimas (encontró al menos un
puerto abierto y otro cerrado). Si envía esta información contribuirá al conjunto
de sistemas operativos que Nmap conoce y la herramienta será así más exacta
para todo el mundo.
Algunas técnicas que pueden ayudar a mejorar los tiempos de sondeo son el
limitar el número de pruebas que no sean críticas y actualizar a la última versión
de Nmap (se hacen mejoras de rendimiento con cierta frecuencia). La
optimización de los parámetros de control de tiempo pueden introducir también
diferencias significativas. Las opciones aplicables se detallan a continuación.
En el caso de que todos los sistemas estén en una red local al equipo que
sondea, un valor razonablemente agresivo para --max-rtt-timeout es 100
milisegundos. Si se está rutando, primero envíe un ping a un equipo en la
red con la herramienta ICMP ping, o con una herramienta para construir
paquetes a medida como hping2 dado que es más probable que atraviese
cualquier cortafuegos. Consulte el tiempo máximo de la ronda (tiempo
entre solicitud y respuesta) después de haber enviado unos diez paquetes.
Una vez obtenido ese valor puede utilizarlo el doble de éste para --
initial-rtt-timeout y triplicarlo o cuadruplicarlo para --max-rtt-
timeout. Yo no configuro habitualmente el valor máximo rtt por debajo de
100ms, independientemente del valor que den los ping. Ni tampoco lo
pongo por encima de 1000ms.
Esta opción hace que Nmap espere al menos el tiempo indicado entre cada
sonda enviada a un sistema determinado. Esto es muy útil cuando se
quiere limitar la tasa de tráfico. Los sistemas Solaris (entre otros)
responderán a paquetes de sondeos UDP con sólo un mensaje ICMP por
segundo. Enviar más que eso con Nmap sería perder el tiempo. Un valor
de 1s para --scan-delay hará que Nmap se mantenga a esa velocidad
reducida. Nmap intenta detectar limitaciones de tasa y ajustar la demora
del sondeo como considere necesario, pero a veces viene bien especificarlo
de forma explícita si ya sabe qué valor es mejor.
Mientras que puede ser útil evitar alarmas de IDS con -T0 y -T1, éste
tardará mucho más tiempo para sondear miles de sistemas o puertos. Para
este tipo de sondeos puede que prefiera fijar los valores exactos de tiempos
que necesita antes que utilizar los valores predefinidos para -T0 y -T1.
Muchos pioneros de Internet habían previsto una red global abierta con un
espacio de direcciones IP universal que permitiese conexiones virtuales entre dos
nodos cualquiera. Esto permitiría a los equipos actuar como verdaderos iguales,
sirviendo y recuperando información el uno del otro. La gente podría acceder a
todos los sistemas de su casa desde el trabajo, cambiando las propiedades del
control del clima o desbloqueando puertas. Esta visión de una conectividad
universal fue sofocada por la escasez del espacio de direcciones y los problemas
de seguridad. Al comienzo de la década de los años 90, las organizaciones
empezaron a replegar cortafuegos con el propósito de reducir la conectividad. Se
acordonaron redes enormes para protegerlas de la Internet no filtrada con
pasarelas («proxies», N. del T.) de aplicación, sistemas de traducción de
direcciones de red y filtros de paquetes. Del flujo sin restricciones de la
información se pasó a una regulación estricta de los canales de comunicación
aprobados y del contenido que pasa por ellos.
Los filtros de red como los cortafuegos pueden hacer muy difícil el análisis de
una red. Esto no va a ser más fácil en el futuro, ya que uno de los objetivos de
estos dispositivos es generalmente limitar el reconocimiento casual de la red. En
cualquier caso, Nmap ofrece varias funcionalidades para ayudar a entender estas
redes complejas, y que también sirven para verificar que los filtros funcionan
como se espera de ellos. Incluso tiene mecanismos para saltarse las defensas que
no hayan sido implementadas del todo correctamente. Uno de los mejores
métodos de entender la posición de la seguridad de su red es intentar
comprometerla. Empiece a pensar como un atacante, e intenta utilizar las técnicas
de esta sección contra sus propias redes. Lance un sondeo de rebote FTP, un
sondeo pasivo, un ataque de fragmentación, o intente realizar un túnel desde una
de sus propias pasarelas.
Realiza un sondeo con señuelos. Esto hace creer que el/los equipo/s que
utilice como señuelos están también haciendo un sondeo de la red. De esta
manera sus IDS pueden llegar a informar de que se están realizando de 5 a
10 sondeos de puertos desde distintas direcciones IP, pero no sabrán qué
dirección IP está realizando el análisis y cuáles son señuelos inocentes.
Aunque esta técnica puede vencerse mediante el seguimiento del camino
de los encaminadores, descarte de respuesta («response-dropping», N. del
T.), y otros mecanismos activos, generalmente es una técnica efectiva para
esconder su dirección IP.
Tenga en cuenta que los equipos que utilice como distracción deberían
estar conectados o puede que accidentalmente causes un ataque de
inundación SYN a sus objetivos. Además, sería bastante sencillo
determinar qué equipo está realmente haciendo el sondeo si sólo uno está
disponible en la red. Puede que quiera utilizar direcciones IP en lugar de
nombres (de manera que no aparezca en los registros del servidor de
nombres de los sistemas utilizados como señuelo).
Se utilizan los señuelos tanto para el sondeo de ping inicial (si se utiliza
ICMP, SYN, ACK, o cualquier otro) como durante la fase de sondeo.
También se utilizan los señuelos durante la detección de sistema operativo
(-O). Los señuelos no funcionarán con la detección de versión o el sondeo
TCP connect().
Indica a Nmap a través de qué interfaz debe enviar y recibir los paquetes.
Nmap debería detectar esto automáticamente, pero se lo dirá si no.
Los administradores de red con mucho trabajo no son los únicos que caen
en esta trampa. Muchos productos se lanzan al mercado con estas reglas
inseguras. Hasta Microsoft lo ha hecho. Los filtros de IPsec que se
preinstalan con Windows 2000 y Windows XP contienen una regla
implícita que permite todo el tráfico TCP o UDP desde el puerto 88
(Kerberos). Otro caso conocido es el de las versiones de Zone Alarm
Firewall Personal que, hasta la versión 2.1.25, permitían cualquier paquete
entrante UDP desde el puerto 53 (DNS) o 67 (DHCP).
Indica a Nmap que debe mezclar aleatoriamente cada grupo de hasta 8096
equipos antes de hacer un sondeo. Esto puede hacer que el sondeo sea
menos obvio para algunos sistemas de monitorización de la red,
especialmente cuando se combina con las opciones que ralentizan el
sondeo. Si quiere mezclar aleatoriamente listas más grandes, incremente el
valor de la constante PING_GROUP_SZ en nmap.h y recompile el
programa. Una solución alternativa es generar la lista de sistemas a
sondear con un sondeo de lista (-sL -n -oN <fichero>), ordenarlo
aleatoriamente con un script de Perl, y luego darle a Nmap la lista entera
con la opción -iL.
Solicita a Nmap que utilice la MAC dada para todas las tramas de Ethernet
enviadas. Esta opción activa implícitamente la opción --send-eth para
asegurar que Nmap envía los paquetes del nivel Ethernet. La MAC dada
puede tener varios formatos. Nmap elegirá una MAC completamente
aleatoria para la sesión si se utiliza el valor “0”. Nmap utilizará la MAC
indicada si el parámetro es un número par de dígitos hexadecimales
(separando opcionalmente cada dos dígitos con dos puntos). Nmap
rellenará los 6 bytes restantes con valores aleatorios si se dan menos de 12
dígitos hexadecimales. Si el argumento no es ni 0 ni un conjunto de dígitos
hexadecimales, Nmap mirará en nmap-mac-prefixes para encontrar un
fabricante cuyo nombre coincida con el parámetro utilizado (en esta
búsqueda no diferenciará entre mayúsculas y minúsculas). Si se encuentra
algún fabricante, Nmap utilizará el OUI del fabricante (prefijo de 3 bytes)
y rellenará los otros 3 bytes aleatoriamente. Ejemplos de argumentos --
spoof-mac son: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2,
y Cisco.
--badsum (Envía paquetes con sumas de comprobación TCP/UDP erróneas)
Salida
La salida XML es uno de los formatos de salida más importantes, ya que puede
convertirse a HTML, los programas (como la interfaz de usuario de Nmap)
pueden interpretarla fácilmente o puede importarse a una base de datos.
Los dos tipos de salida restantes son la sencilla salida para grep (o «grepeable»)
que incluye la mayoría de la información de un sistema analizado en una sola
línea, y la s4L1d4 sCRiPt KiDDi3 para usuarios que se consideran a sí mismos |<-
r4d.
Aunque se utiliza la salida interactiva por omisión y no tiene ninguna opción de
la línea de órdenes, los demás formatos utilizan la misma sintaxis. Toman un solo
argumento, que es el archivo donde se guardarán los resultados. Pueden
especificarse múltiples formatos al mismo tiempo, pero sólo puede especificar el
mismo formato una vez. Por ejemplo, puede querer guardar la salida normal para
su propia visualización mientras se guarda la información del mismo sondeo en
formato XML para realizar un análisis posterior con un programa. Para hacer ésto
debe utilizar las opciones -oX misondeo.xml -oN misondeo.nmap. Se recomienda
utilizar nombres más descriptivos, si bien este capítulo utiliza nombres sencillos
como misondeo.xml por razones de brevedad. Los nombres elegidos son una
cuestión de preferencia personal. Yo utilizo nombres largos que incluyen la fecha
del análisis y una palabra o dos describiendo el sondeo, dentro de un directorio
con el nombre de la empresa que estoy analizando.
Nmap también ofrece opciones para controlar la información extra que se ofrece
sobre el sondeo y añadirlo a los archivos de salida en lugar de sobreescribirlos.
Todas estas opciones se describen a continuación.
La salida para grep consiste en comentarios (líneas que empiezan por una
almohadilla, «#») y líneas de objetivo. Una línea de objetivo incluye una
combinación de seis campos marcados, separados por tabulaciones y
seguidos de dos puntos. Los campos (en inglés)
son Host (Sistema), Ports (Puertos), Protocols (Protocolos), Ignored
State (Estado omitido), OS (Sistema operativo), Seq Index (índice de
secuencia), IPID, y Status (Estado).
Hace que Nmap imprima más información sobre el sondeo que está
realizando incrementando el nivel de detalle. Los puertos abiertos se
muestran en cuanto se encuentran y se muestra una estimación del tiempo
que Nmap espera que dure la tarea de sondeo si piensa que va a durar más
de un par de minutos. Puede utilizarlo dos veces para obtener aún más
detalle. No tiene ningún efecto el utilizarlo más de dos veces.
Esta opción hace que Nmap imprima un resumen de cada paquete que
envía o recibe. Esto se utiliza muchas veces para poder depurar el
programa, pero también es útil para los usuarios nuevos que quieren
entender exactamente que es lo que hace Nmap bajo el capó. Puede
especificar un número reducido de puertos para evitar que se impriman
miles de líneas, como por ejemplo -p20-30. Si sólo está interesado en el
funcionamiento del subsistema de detección de versiones debe utilizar la
opción --version-trace.
Imprime la lista de interfaces y las rutas del sistema tal y como las detecta
Nmap. Esta opción es útil para depurar problemas de enrutamiento o
caracterizaciones equivocadas del tipo de interfaz (como por ejemplo,
cuando Nmap trata una conexión PPP como una interfaz Ethernet).
Puede utilizar esta opción para evitar que Nmap asocie una hoja de estilo
XSL a su salida XML. En este caso, se omite la directiva xml-
stylesheet de la salida.
Opciones misceláneas
Esta opción le dice a Nmap que simplemente asuma que el usuario con el
que se ejecuta tiene suficientes privilegios para trabajar con sockets
crudos, capturar paquetes y hacer otras operaciones similares que
generalmente sólo puede hacerla en sistemas UNIX el usuario root. Por
omisión, Nmap aborta si se han solicitado esas operaciones pero el
resultado de geteuid() no es cero. La opción --privileged es útil con las
capacidades del núcleo Linux y sistemas similares que pueden
configurarse para permitir realizar sondeos con paquetes crudos a los
usuarios no privilegiados. Asegúrese de indicar esta opción antes de
cualquier otra opción que pueda requerir de privilegios específicos
(sondeo SYN, detección de SO, etc.). Una forma alternativa a --
privileged es fijar la variable de entorno NMAP_PRIVILEGED.
Imprime una pequeña pantalla de ayuda con las opciones de órdenes más
habituales. Pasa lo mismo si ejecuta Nmap sin argumentos.
Ejecución interactiva
v / V
d / D