La "trilogía"
LSI - 2016/2017
José Manuel Vázquez Naya
[email protected]
Contenido
Fases previas de un ataque:
Host discovery
Port scanning
Fingerprinting
HOST DISCOVERY
¿Qué es host discovery?
Descubrir las máquinas que hay en una red (PCs, impresoras, routers,
firewalls, dispositivos de almacenamiento, etc.)
Es el primer paso
Mejor si es rápido
Mejor si es silencioso
También se conoce como escaneo ping o descubrimiento de
sistemas
Host discovery
En algunas redes sólo un pequeño porcentaje de direcciones IP se
encuentran activas en cierto momento
Esto es particularmente cierto en las redes basadas en
direccionamiento privado RFC1918, como la 10.0.0.0/8
> 16 millones de direcciones IP
¿escaneamos todas?
¿cuáles están activas?
ALGUNOS CONCEPTOS DE REDES
Cabecera TCP
TCP handshake
Cabecera UDP
Cabecera ICMP
Cabecera IP
ARP (Address Resolution Protocol)
El protocolo de resolución de direcciones (ARP) es la forma en que
las redes TCP/IP “averiguan” las direcciones MAC basándose en las
direcciones IP de destino
Nmap
Es la herramienta por excelencia para escaneo de puertos (port
scanning)
También permite host discovery y fingerprinting
Desarrollada por Gordon "Fyodor" Lyon
Con Nmap Scripting Engine (NSE) puede incluso averiguar las
aplicaciones concretas (nombre y número de versión) que se están
ejecutando en un puerto
Código fuente disponible
Utilizaremos Nmap para ilustrar la mayoría de los ejemplos
No es la única herramienta!
hping3, scapy, … <- puedes buscar más en SecTools.Org
Nmap. Instalación en Debian
apt-get install nmap
Se puede instalar la última versión desde nmap.org
Aspectos importantes sobre Nmap
La función por defecto de nmap es escaneo de puertos (port
scanning)
Es decir, salvo que se especifique lo contrario, nmap ejecutará port
scanning
nmap 10.10.102.0/24
Realizará host discovery sobre cada máquina
Sobre cada host "vivo" encontrado, realizará port scanning
En muchas ocasiones, interesar ejecutar sólo host discovery en una
primera fase
Hay que indicarlo: opción -sP (lo veremos más adelante)
# Sólo host discovery
nmap –sP 10.10.102.0/24
Aspectos importantes sobre Nmap
Para poder aprovechar toda la funcionalidad de nmap, es necesario
ejecutarlo con privilegios de administrador
Capacidad para "fabricar" raw packets
Si se ejecuta sin privilegios, nmap delegará en llamadas al SO. Algunas
funcionalidades no estarán soportadas
Se comporta de forma diferente si detecta que el escaneo se está
efectuando en una red local
La opción --packet-trace permite ver los paquetes que envía nmap.
Muy útil para comprender cómo funciona
Opciones de host discovery con Nmap
-sL (escaneo de lista o List Scan):
Únicamente lista cada equipo de la/s red/es especificada/s
No envía paquetes de ningún tipo a los objetivos
Por defecto, realiza resolución DNS inversa en los equipos para obtener
sus nombres
Se puede obtener información muy útil del nombre de un sistema
(fw.acme.com, mail.acme.com,…)
Paso importante, para asegurarse de escanear las máquinas adecuadas
Esta opción no puede combinarse con opciones de mayor nivel de
funcionalidad (análisis de puertos, detección de sistema operativo o
scaneo ping)
Opciones de host discovery con Nmap
# nmap -sL 10.10.102.50/28
Starting Nmap 5.00 ( http://nmap.org ) at 2012-09-13 16:46 CEST
Host 10.10.102.48 not scanned
Host 10.10.102.49 not scanned
Host 10.10.102.50 not scanned
Host 10.10.102.51 not scanned
Host 10.10.102.52 not scanned
Host 10.10.102.53 not scanned
Host 10.10.102.54 not scanned
Host 10.10.102.55 not scanned
Host 10.10.102.56 not scanned
Host 10.10.102.57 not scanned
Host 10.10.102.58 not scanned
Host 10.10.102.59 not scanned
Host 10.10.102.60 not scanned
Host 10.10.102.61 not scanned
Host 10.10.102.62 not scanned
Host 10.10.102.63 not scanned
Nmap done: 16 IP addresses (0 hosts up) scanned in 0.01 seconds
Opciones de host discovery con Nmap
# nmap -sL www.udc.es/24
Starting Nmap 5.00 ( http://nmap.org ) at 2012-09-13 16:46 CEST
Host 193.144.48.0 not scanned
...
Host 193.144.48.90 not scanned
Host v3.viveros.udc.es (193.144.48.91) not scanned
Host afi.udc.es (193.144.48.92) not scanned
Host webafi.udc.es (193.144.48.93) not scanned
Host pafi.udc.es (193.144.48.94) not scanned
Host v3-2.viveros.udc.es (193.144.48.95) not scanned
Host 193.144.48.96 not scanned
Host 193.144.48.97 not scanned
Host 193.144.48.98 not scanned
Host 193.144.48.99 not scanned
Host zape2.udc.es (193.144.48.100) not scanned
Host 101.viveros.udc.es (193.144.48.101) not scanned
Host 102.viveros.udc.es (193.144.48.102) not scanned
Host sicrede.udc.es (193.144.48.103) not scanned
Host 193.144.48.104 not scanned
Host mentor.udc.es (193.144.48.105) not scanned
...
Host 193.144.48.255 not scanned
Nmap done: 256 IP addresses (0 hosts up) scanned in 4.37 seconds
Opciones de host discovery con Nmap
-sP (escaneo ping, barrido ping o Ping Scan
Indica a nmap que sólo realice host discovery
Emite listado de equipos que respondieron (host h is up)
Intrusivo (envía paquetes a los objetivos)
Permite reconocimiento ligero de la red sin llamar mucho la atención
Más fiable que hacer ping a la dir. de broadcast (algunos equipos no
responden)
Opciones de host discovery con Nmap
-sP (escaneo ping, barrido ping o Ping Scan) (Cont.):
Envía:
ICMP echo request
Paquete TCP SYN al puerto 443
Paquete TCP ACK al puerto 80
Solicitud ICMP timestamp
Si usuario no tiene privilegios: paquetes SYN a los puertos 80 y 443
utilizando la llamada al sistema connect()
Opciones de host discovery con Nmap
Una de las formas de uso más comunes de Nmap es el sondeo de
una red de área local Ethernet
En la mayoría de las redes locales hay muchas direcciones IP sin usar
en un momento determinado (especialmente en las que utilizan
rangos de direcciones privadas)
Cuando Nmap intenta enviar un paquete IP crudo (raw), como
pudiera ser una solicitud de echo ICMP, el SO debe determinar
primero la dirección MAC (ARP) correspondiente a la IP objetivo para
poder dirigirse a ella en la trama Ethernet
Si recibe respuesta, significa que está vivo => no tiene sentido seguir
enviando paquetes (ya hemos conseguido el objetivo)
Opciones de host discovery con Nmap
Esta opción, que se puede especificar con -PR (Ping ARP), es el
comportamiento por defecto, cuando se analizan sistemas Ethernet,
si Nmap detecta que están en la red local, incluso aunque se
especifique -PE o -PS
Se puede evitar con --send-ip
El proceso de enviar múltiples ARP requests se convierte en
problemático (y lento) si necesitamos hacer muchas consultas ARP
en un corto período de tiempo
S.O. no está pensado para esto
Nmap se ocupa él mismo de las solicitudes ARP, con un algoritmo
optimizado
Mucho más rápido y fiable que los escaneos basados en IP
Opciones de host discovery con Nmap
# nmap -sP 10.10.102.50/26
Starting Nmap 5.00 ( http://nmap.org ) at 2012-09-13 18:24 CEST
Host 10.10.102.4 is up (0.00031s latency).
MAC Address: 00:90:FB:22:FF:95 (Portwell)
Host 10.10.102.5 is up (0.00031s latency).
MAC Address: 00:90:FB:22:FF:95 (Portwell)
Host 10.10.102.9 is up (0.00040s latency).
MAC Address: 00:50:56:91:2F:52 (VMWare)
Host 10.10.102.22 is up (0.00023s latency).
MAC Address: 00:15:17:12:B2:98 (Intel Corporate)
Host 10.10.102.27 is up (0.00022s latency).
MAC Address: 00:1D:09:14:1E:7C (Dell)
Host 10.10.102.29 is up (0.00025s latency).
MAC Address: 00:50:56:91:30:02 (VMWare)
Host 10.10.102.30 is up (0.00039s latency).
MAC Address: 00:50:56:91:4E:18 (VMWare)
Host 10.10.102.34 is up (0.00032s latency).
MAC Address: 00:50:56:91:30:76 (VMWare)
Host 10.10.102.44 is up (0.00030s latency).
MAC Address: 00:50:56:91:2F:58 (VMWare)
Nmap done: 64 IP addresses (10 hosts up) scanned in 0.95 seconds
Opciones de host discovery con Nmap
-PS [lista de puertos] (Ping TCP SYN)
Envía un paquete TCP vacío con el flag SYN activo.
El puerto destino por defecto es el 80 (man nmap)
También se puede especificar una lista de puertos:
-PS22,23,25,80,113,1050,35000
<- envía escaneos en paralelo
El flag SYN indica al sistema remoto que quiere establecer una conexión
Si el puerto destino está cerrado se recibirá un RST
Si el puerto está abierto: el equipo remoto responderá con un TCP
SYN/ACK (segundo paso del Three-way handshake)
El equipo local abortará la conexión con un RST (lo hace el SO)
Aquí no importa si el puerto está abierto o cerrado. Si llega respuesta, la
máquina está "viva"
Opciones de host discovery con Nmap
-PS [lista de puertos] (Ping TCP SYN) (Cont.)
Usuario no privilegiado, no puede fabricar TCP raw paquets -> Nmap
utiliza la llamada al sistema connect() contra el puerto destino
Si respuesta rápida (éxito o ECONNREFUSED):
El sistema está "vivo"
Si el intento de conexión se mantiene parado (vence temporizador)
El sistema se marca como no disponible
Opciones de host discovery con Nmap
-PA [lista de puertos] (Ping TCP ACK)
Similar a Ping TCP SYN, pero con flag ACK en lugar de SYN
Recordar: ACK indica que se han recibido datos de una conexión TCP
establecida
En este caso la conexión no existe
Los sistemas deberían responder con RST -> está "vivo"
Usuario sin privilegios -> llamada a connect() <- envía SYN, no ACK :(
Opciones de host discovery con Nmap
-PA [lista de puertos] (Ping TCP ACK) (Cont.)
¿Qué aporta?
Muchos administradores configuran routers y FW stateless para que
bloqueen paquetes SYN con el objetivo de bloquear conexiones
entrantes y permitir conexiones salientes
En este caso pasarán los ACK
Los FW actuales suelen ser stateful -> son capaces de descartar
paquetes no esperados
En este caso es más probable que funcione un paquete SYN dirigido a
un puerto abierto
Entonces -PS o -PA?
Las dos!
Opciones de host discovery con Nmap
-PU [lista de
Comentarios de: La trilogía (0)
No hay comentarios