Seguridad en red
Índice
1. Tipología de los ataques de red 2
1.1. Prácticas: Entorno Simulado . . . . . . . . . . . . . . . . . . . 3
1.1.1. netcat . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1
4. Ataque de denegación de servicio (DoS) 19
4.1. Buer Overow . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2. Ataques de fragmentación . . . . . . . . . . . . . . . . . . . . 20
4.2.1. Ping of death . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2. Teardrop . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3. IP Flooding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3.1. Smurf y Fraggle . . . . . . . . . . . . . . . . . . . . . . 22
4.4. Ataques contra implementaciones la pila TCP/IP . . . . . . . 22
4.4.1. SYN Flooding . . . . . . . . . . . . . . . . . . . . . . . 22
4.4.2. LAND . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4.3. WinNuke . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5. Ataques de Denegación de servicio distribuidos: DDoS . . . . . 23
4.5.1. Ataques preprogramados . . . . . . . . . . . . . . . . . 24
4.5.2. Ataques por control remoto . . . . . . . . . . . . . . . 24
4.5.2.1. TRIN00 . . . . . . . . . . . . . . . . . . . . . 25
4.5.2.2. Tribe Flood Network 2000 (TFN2K) . . . . . 25
4.6. Conguración segura de red: sysctl . . . . . . . . . . . . . . . 26
Las pérdidas en empresas causadas por cualquier tipo de ataque, pueden ser
muy cuantiosas: pérdida y robo de datos, tiempo de caída y recuperación del
sistema, secuestro de ordenadores y pérdida de reputación
2
1.1. Prácticas: Entorno Simulado
Para nuestro entorno de pruebas vamos a suponer al menos 4 máquinas:
Nombre FQDN IP MAC
cliente1 cliente1.qemunet 192.168.0.101 00:20:21:00:00:B1
cliente2 cliente2.qemunet 192.168.0.102 00:20:21:00:00:B2
pasarela pasarela.qemunet 192.168.0.1 08:00:0B:01:01:01
ppublica.qemunet dhcp 00:00:7E:0E:0E:0E
atacante atacante.qemunet 192.168.0.200 02:AA:3C:00:AA:3C
net.ipv4.conf.default.forwarding=1
Para cargar el cambio de la conguración sin reiniciar, ejecutar:
sysctl -p
1.1.1. netcat
netcat es una utilidad simple y versátil que permite escribir datos por red
tanto por tcp como udp. Es una herramienta muy útil para testear conexiónes
y generar tráco para análisis de redes.
La sintaxis básica para establecer una conexión es:
3
donde el puerto local indica en que puerto permanecerá escuchando, y tanto
el host como puerto remotos limitan la dirección de origen del cliente.
Ejemplo de conexión simple:
cliente1 $ nc -l -p 1052
Se puede usar tuberías del sistema para redirigir los datos hacia la cone-
xión en red. Por ejemplo, para enviar un paquete udp con un string
podríamos hacer:
Prácticas :
2. Levantar una instancia de netcat que sólo escuche las conexiónes tcp
al puerto 2020 en la pasarela desde el cliente1.
Las herramientas que permiten obtener estos datos son los sniers y
los analizadores de protocolos.
4
Un snier o rastreador de red es un proceso que olfatea el tráco que
se genera en la red a nivel de enlace; de este modo puede leer toda la
información que circule por el tramo (segmento) de red en el que se
encuentre.
2.1. tcpdump
tcpdump es una programa para el análisis de tráco en la red, usando la
librería libpcap.
tcpdump [-np] [-c paquetes ] [-i interfaz ] [-s bytes ] [-w
archivo ] [-F archivoFiltros ] [expresion ]
Por defecto, captura todos los paquetes hasta que pulsemos CTRL+C o
si añadimos la opción -c paquetes , hasta que ese número de paquetes
sea capturado.
Se puede denir ltros para seleccionar que tráco capturar, o bien con
una expresión en línea de comandos, o desde un chero con la opción
-F.
Necesita ejecutarse como root o con el setuid de root.
5
La expresión usada para denir un ltro se compone de un conjunto de
primitivas, cada una de las cuales puede tener alguno de los tres tipos de
modicadores siguientes:
tipo Las opciones más comunes son host (una máquina: host 192.168.0.1),
net (una red net 192.168.0.0/34), port (un puerto concreto: port 22) y
portrange (un rango de puertos: portrange 8000-8100). El modicador
por defecto es host.
dir Especica desde o hacia donde se va a dirigir el ujo de datos, siendo los
más comunes: src, dst, src and dst y src or dst, siendo la última
el valor por omisión.
tcpdump tcp port 80 Captura todo el tráco tcp por el puerto 80.
tcpdump tcp and not port 80 Captura todo el tráco tcp que no viaje
a través del puerto 80.
gateway máquina Captura aquellos paquetes que van a ser redirigidos por
lamáquina. Internamente, son aquellos que tienen la dirección ethernet
destino la de lamáquina, pero su dirección IP destino no lo es.
6
greater longitud análogamente dene un tamaño mínimo para los paque-
tes.
7
6. Observar con un ltro lo más reducido posible el tráco generado por
un conjunto de pings a distintos ordenadores y el tráco arp que aparece
en la red.
2.2. dsni
dsni es un conjunto de utilidades que permiten realizar escuchas y auditorias
dentro de una red.
8
Prácticas
Obtener password de una conexión ftp al exterior y una telnet en el
interior.
2.3. wireshark
wireshark es un programa similar a tcpdump y basado también en la
librería pcap, pero pensado para entorno gráco.
Permite inspeccionar las tramas así como analizar las diferentes cone-
xiónes.
Prácticas
Obtener pasword de una conexión http no encriptada al exterior, y
comprobar que no es visible si está encriptada.
9
2.4. Detección de sniers
La detección de sniers en redes conmutadas es difícil. Existen distintos tests
de red que permiten detectar tarjetas en modo promiscuo, pero non son
totalmente ables: .
Test ARP Realizar una petición arp con la IP real, pero una mac falsa y
esperar respuestas.
2.4.1. snidet
sniffdet es un programa que realiza test de detección remota de inter-
faces en modo promiscuo.
10
autoreconf -ifs
./configure
make
make install
11
3.1. IP Spoong
Consiste básicamente en sustituir la dirección IP origen de un paquete
TCP/IP por otra dirección IP a la cual se desea suplantar.
3.1.1. No blind
Tenemos acceso al segmento local de la víctima suplantada, y podemos
observar las repuestas del servidor.
3.1.2. Blind
Es un ataque más complicado, ya que no podemos observar la respuesta
del servidor hacia el host suplantado.
12
3.1.3. Protección ante IP Spoong
Para protegerse del IP spoong la solución más ecaz es no utilizar
autenticación basada en IP, puesto que hoy en día no ofrece ventajas
sobre otras disponibles.
3.2.1. arp
arp permite examinar y modicar la tabla de caché de arp.
13
arp [-v] [-i interfaz ] -s host direccMac
Podemos asociar a una dirección IP una dirección de forma estática. Esta es
la solución más eciente para bloquear el arpsoong.
3.2.2. arpspoof
es una herramienta del paquete dsni que permite realizar un arp spoo-
ng.
echo 1 >/proc/sys/net/ipv4/ip_forward
Para poder recibir el tráco entre el cliente1 y la pasarela, debemos
hacer que ambas máquinas crean que somos la otra, es decir, debemos
ejecutar ambos comandos:
14
new activity El par MAC/IP ha sido usado por primera vez en los últimos
seis meses.
arpwatch -d
15
MitM es particularmente signicativo en el protocolo original de intercambio
de claves de Die-Hellman, cuando éste se emplea sin autenticación.
3.4.1. ettercap
ettercap es una herramienta diseñada para actuar como snier en una
red communtada y que permite realizar una gran cantidad de ataques man
in the midlle.
Obtención de passwords.
/192.168.0.100/
/192.168.0.100,192.168.0.105-7/
/192.168.0.100/21-23
Al iniciarse ettercap realiza un escaneo arp de la parte de la red que entre
dentro de los objetivos (excepto que especiquemos la opción -z). Con el
objetivo // denotaremos toda nuestra subred.
16
ettercap -T /192.168.0.1/ realizaría un arp-request a la ip 192.168.0.1
ettercap -T /192.168.0.1/ // realizaría arp-requests a todas las ips de
nuestra subred.
Ejemplos:
17
Conguración segura para diseccionar protocolos encriptados ettercap
una vez iniciada su conexión con el driver de la tarjeta de red, cambia el dueño
de su proceso al usuario nobody para no comprometer la seguridad.
Para realizar la disección de los protocolos cifrados, necesita establecer
una serie de reglas de redirección en el rewall. En debian deberíamos editar
el archivo /etc/etter.conf, desconmentado las siguientes lineas:
Prácticas
1. Realizar un ataque Mitm para obtener la contraseña de una cuenta de
correo electrónico accediendo a ella mediante https.
18
if (tcp.src == 80 && ip.proto == TCP ) {
replace("www.udc.es","www.usc.es");
}
packit
packit es una herramienta para la captura e inyección de paquetes, tanto a
nivel ethernet como en la capas IP, así como en los protocolos TCP, UDP y
ICMP.
La síntaxis resumida para la inyección de tráco sería:
19
-dR usa una dirección IP de destino aleatoria.
-F ags permite especicar las ags TCP: S(SYN), F(FIN), A(ACK), P(PSH),
U(URG), R(RST).
20
Un ICMP echo-request es enviado dentro de un paquete IP, y tiene
una cabecera de 8 bytes (RFC-792) seguida por un payload de datos
especicado por el usuario (por defecto 64 bytes).
Este ataque se hizo muy popular porque tanto Windows 95 como Win-
dows NT permitían construir pings ilegales con la implementacion de
ping integrada: ping -s 65510 IP_Victima .
Eran vulnerables a este ataque windows95, NT, Irix, Solaris, HP-UX,
AIX, MacOS, Linux 2.0.23, .....
4.2.2. Teardrop
Este es otro ataque famoso de fragmentación IP al que eran sensibles kernel
de linux previos al 2.0.32 y Windows 95/NT.
4.3. IP Flooding
El ataque de IP Flooding se basan en la inundación másiva de la red mediante
datagramas IP.
21
Estos ataques se pueden utilizar para degradar el rendimiento de la red
a la cual está conectado el atacante generando paquetes con origen y
destino aleatorio.
Además del degradado de la red, también pueden colapsar un equipo,
con un ataque dirigido contra una víctima.
Se puede magnicar usando la dirección de broadcast, llamado Broad-
cast IP Flooding. La forma más sencilla de este ataque reside en
enviar datagramas IP a la dirección de broadcast de la red.
22
El servidor desestima las conexiones semi-abiertas al cabo de un tiem-
po, pero sí se mantiene el ujo de paquetes SYN sin respuesta, esto
provocará que dicho puerto no pueda establecer nuevas conexiones.
Práctica
1. Realizar un ataque SYN ooding a una maquina que tenga instalado
telnet. Intentar conectarnos mientras se realiza el ataque. Comprobar
que nos podemos conectar a otro servicio distinto. Podemos ver el es-
tado de las conexiones con netstat -n -p tcp.
4.4.2. LAND
El ataque LAND consiste en enviar un paquete TCP con el indicador
SYN activo contra un puerto activo de la víctima, y con puerto y direc-
ción origen los mismos que el destino.Este ataque puede conseguir que
el ordenador se responda a sí mismo indenidamente. En algunos sis-
temas puede llegar a colgarlo o apagarlos, y en otros subir el consumo
de la CPU durante un tiempo y manteniendo un conjunto constante de
SYN se puede realizar un ataque de denegacion de servicio.
4.4.3. WinNuke
Es un antiguo ataque que simplemente al enviar un paquete TCP a un sistema
Windows NT con el indicador URG puesto en la cabecera TCP al puerto 139
(NetBios), el sistema se quedará colgado y será necesario reiniciar.
23
4.5.1. Ataques preprogramados
Se usa un virus que incluye un ataque de denegación de servicio pre-
programado. Al cumplirse una condición de tiempo, todos los ordenadores
infectados realizan un ataque conjunto contra un objetivo preseleccionado.
Un ejemplo es el virus Mydoom, que se propagaba a través de correo
electrónico y estaba diseñado para que los ordenadores infectados atacaran
a SCO el 1 de febrero del 2004.
+----------+ +----------+
| attacker | | attacker |
+----------+ +----------+
| |
. . .--+-----+-----------+----+-----------+-- . . .
| | |
+--------+ +--------+ +--------+
| master | | master | | master |
+--------+ +--------+ +--------+
| | |
. . --+-----+----+----------+--+------+-------+--+-- . . .
| | | | |
+------+ +------+ +------+ +------+ +------+
|daemon| |daemon| |daemon| |daemon| |daemon|
+------+ +------+ +------+ +------+ +------+
24
Existen múltiples herramientas para relizar este tipo de ataques tales
como: trinoo, Tribe Flood Network, Tribe Flood Network 2000, Shaft y Sta-
cheldraht.
25
Todos los comandos van cifrados. La clave se dene en tiempo de com-
pilación y los comando en los paquetes no se basan en cadenas, sino en
id de comando seguido de sus parámetros.
echo 0 >/proc/sys/net/ipv4/ip_forward
• con el comando sysctl: sysctl -w net.ipv4.ip_forward=1
• o para que se conserven al reiniciar el sistema, editando /etc/sysctl.conf.
26
Opciones para asegurar nuestra red
Si no actuamos como router, es interesante deshabilitar el forwarding:
sysctl -w net.ipv4.ip_forward = 0
Si nuestra máquina no tiene varias IPs , es interesante activar el rp_lter,
que rechaza paquetes cuyo origen no se corresponde con una dirección
alcanzable por la interfaz. Esta opción nos puede ayudar a evitar IP
spoong:
sysctl -w net.ipv4.conf.all.rp_filter = 1
sysctl -w net.ipv4.conf.default.rp_filter = 1
Para evitar ser detectado por algunos escaneadores de puertos que bus-
can máquinas activas, se pueden ignorar todos los pings (téngase en
cuenta que otros servicios legítimos también serán ignorados):
sysctl -w net.ipv4.icmp_echo_ignore_all = 1
También por el mismo motivo y para evitar ataques de tipo smurf, se
pueden ignorar los dirigidos a la interfaz broadcast:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1
En caso de recibir paquetes icmp mal formados serán registrados por
el kernel. Ciertos router son propensos a generar este tipo de tráco y
para evitar generar archivos de log demasiado grandes, se puede activar
en ese caso:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
El control de rutas es usado para especicar en un paquete la ruta
exacta a ser usada a un destino. Esta característica puede ser usada
por un atacante para hacer circular el tráco a través de una máquina
en su control, por lo que puede ser interesante desactivar el soporte a
estes paquetes en el kernel:
sysctl -w net.ipv4.conf.all.accept_source_route = 0
sysctl -w net.ipv4.conf.default.accept_source_route=0
En caso de que el router al que estemos enviando nuestro tráco para
un destino particular no sea el más adecuado, éste puede enviar un
mensajde de redirección ICMP para informar de la ruta correcta a uti-
lizar en el futuro. Si un atacante envía estos mensajes podría conseguir
27
dirigir nuestro tráco a través de él. Para evitar esto se puede tomar
dos opciones:
sysctl -w net.ipv4.conf.all.secure_redirects = 1
sysctl -w net.ipv4.conf.default.secure_redirects=1
• o rechazar completamente los paquetes de redirección:
sysctl -w net.ipv4.conf.all.accept_redirects = 0
sysctl -w net.ipv4.conf.default.accept_redirects=0
También resulta interesante detectar activades sopechosa: como envío
de paquetes con dirección no valida, paquetes con origen y destino la
misma máquina, o paquetes con origen 127.0.0.1 a traves de un interfaz
ethernet.
sysctl -w net.ipv4.conf.all.log_martians = 0
sysctl -w net.ipv4.conf.default.log_martians = 0
Para reducir el riesgo de ataque SYN ooding se puede hacer descartar
conexiones antiguas con:
sysctl -w net.ipv4.tcp_syncookies = 1
No obstante esta opción rompe en parte con el estandar tcp, y elimina
el uso de algunas extensiones. En ciertos casos se debe ajustar tambien
el número máximo de conexiónes en cola admitidas (sobre todo en
servidores con alta demanda), aunque ello consuma mayor memoria
con:
28