Detección de paquetes de red
El rastreo o rastreo de paquetes de red es el proceso de monitorear y capturar todos los paquetes que pasan a través de una red determinada usando herramientas de rastreo. Es un formulario en el que podemos "interceptar cables telefónicos" y conocer la conversación. También es llamadowiretapping y se puede aplicar a las redes informáticas.
Existe una gran posibilidad de que si un conjunto de puertos de conmutador empresarial está abierto, uno de sus empleados pueda oler todo el tráfico de la red. Cualquiera en la misma ubicación física puede conectarse a la red mediante un cable Ethernet o conectarse de forma inalámbrica a esa red y detectar el tráfico total.
En otras palabras, Sniffing te permite ver todo tipo de tráfico, tanto protegido como desprotegido. En las condiciones adecuadas y con los protocolos adecuados en su lugar, una parte atacante puede recopilar información que se puede utilizar para nuevos ataques o para causar otros problemas para la red o el propietario del sistema.
¿Qué se puede oler?
Uno puede olfatear la siguiente información confidencial de una red:
- Tráfico de correo electrónico
- Contraseñas FTP
- Tráfico web
- Contraseñas Telnet
- Configuración del enrutador
- Sesiones de chat
- Tráfico DNS
¿Cómo funciona el olfateo?
Un rastreador normalmente convierte la NIC del sistema en el modo promiscuo para que escuche todos los datos transmitidos en su segmento.
El modo promiscuo se refiere a la forma única de hardware Ethernet, en particular, tarjetas de interfaz de red (NIC), que permite que una NIC reciba todo el tráfico en la red, incluso si no está dirigido a esta NIC. De forma predeterminada, una NIC ignora todo el tráfico que no se dirige a ella, lo que se hace comparando la dirección de destino del paquete Ethernet con la dirección de hardware (MAC) del dispositivo. Si bien esto tiene mucho sentido para las redes, el modo no promiscuo dificulta el uso de software de análisis y monitoreo de red para diagnosticar problemas de conectividad o contabilidad del tráfico.
Un rastreador puede monitorear continuamente todo el tráfico a una computadora a través de la NIC decodificando la información encapsulada en los paquetes de datos.
Tipos de olfateo
El olfateo puede ser de naturaleza activa o pasiva. Ahora aprenderemos sobre los diferentes tipos de olfateo.
Olfateo pasivo
En el olfateo pasivo, el tráfico se bloquea pero no se altera de ninguna manera. El olfateo pasivo solo permite escuchar. Funciona con los dispositivos Hub. En un dispositivo concentrador, el tráfico se envía a todos los puertos. En una red que utiliza concentradores para conectar sistemas, todos los hosts de la red pueden ver el tráfico. Por lo tanto, un atacante puede capturar fácilmente el tráfico que circula.
La buena noticia es que los hubs casi se han vuelto obsoletos en los últimos tiempos. La mayoría de las redes modernas utilizan conmutadores. Por tanto, la inhalación pasiva no es más eficaz.
Olfateo activo
En el rastreo activo, el tráfico no solo está bloqueado y monitoreado, sino que también puede ser alterado de alguna manera según lo determine el ataque. El rastreo activo se utiliza para rastrear una red basada en conmutadores. Implica inyectar paquetes de resolución de direcciones (ARP) en una red de destino para inundar la tabla de memoria direccionable de contenido del conmutador (CAM). CAM realiza un seguimiento de qué host está conectado a qué puerto.
Las siguientes son las técnicas de olfateo activo:
- Inundación MAC
- Ataques DHCP
- Envenenamiento por DNS
- Ataques de suplantación
- Envenenamiento por ARP
Los efectos del olfateo en los protocolos
Protocolos como el tried and true TCP/IPnunca fueron diseñados pensando en la seguridad. Estos protocolos no ofrecen mucha resistencia a posibles intrusos. A continuación se muestran los diferentes protocolos que se prestan a un olfato sencillo:
HTTP
Se utiliza para enviar información en texto claro sin ningún tipo de cifrado y, por lo tanto, un objetivo real.
SMTP (Protocolo simple de transferencia de correo)
SMTP se utiliza en la transferencia de correos electrónicos. Este protocolo es eficaz, pero no incluye ninguna protección contra el rastreo.
NNTP (Protocolo de transferencia de noticias en red)
Se utiliza para todo tipo de comunicación. Un gran inconveniente de esto es que los datos e incluso las contraseñas se envían a través de la red como texto sin cifrar.
POP (Protocolo de oficina postal)
POP se utiliza estrictamente para recibir correos electrónicos de los servidores. Este protocolo no incluye protección contra el rastreo porque puede quedar atrapado.
FTP (Protocolo de transferencia de archivos)
FTP se utiliza para enviar y recibir archivos, pero no ofrece funciones de seguridad. Todos los datos se envían como texto claro que se puede oler fácilmente.
IMAP (Protocolo de acceso a mensajes de Internet)
IMAP es igual que SMTP en sus funciones, pero es muy vulnerable a la detección.
Telnet
Telnet envía todo (nombres de usuario, contraseñas, pulsaciones de teclas) a través de la red como texto sin cifrar y, por lo tanto, se puede rastrear fácilmente.
Los rastreadores no son las utilidades tontas que le permiten ver solo el tráfico en vivo. Si realmente desea analizar cada paquete, guarde la captura y revísela cuando el tiempo lo permita.
Implementación usando Python
Antes de implementar el rastreador de sockets sin procesar, entendamos el struct método como se describe a continuación -
struct.pack (fmt, a1, a2,…)
Como sugiere el nombre, este método se utiliza para devolver la cadena, que se empaqueta de acuerdo con el formato dado. La cadena contiene los valores a1, a2 y así sucesivamente.
struct.unpack (fmt, cadena)
Como sugiere el nombre, este método descomprime la cadena de acuerdo con un formato determinado.
En el siguiente ejemplo de encabezado IP de rastreador de sockets sin procesar, que son los siguientes 20 bytes en el paquete y entre estos 20 bytes estamos interesados en los últimos 8 bytes. Los últimos bytes muestran si la dirección IP de origen y destino están analizando:
Ahora, necesitamos importar algunos módulos básicos de la siguiente manera:
import socket
import struct
import binascii
Ahora crearemos un socket, que tendrá tres parámetros. El primer parámetro nos habla de la interfaz del paquete: PF_PACKET para Linux específico y AF_INET para Windows; el segundo parámetro nos dice que es un socket sin formato y el tercer parámetro nos dice sobre el protocolo que nos interesa —0x0800 usado para el protocolo IP.
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))
Ahora, necesitamos llamar al recvfrom() método para recibir el paquete.
while True:
packet = s.recvfrom(2048)
En la siguiente línea de código, estamos extrayendo el encabezado de Ethernet:
ethernet_header = packet[0][0:14]
Con la siguiente línea de código, estamos analizando y desempaquetando el encabezado con el struct método -
eth_header = struct.unpack("!6s6s2s", ethernet_header)
La siguiente línea de código devolverá una tupla con tres valores hexadecimales, convertidos por hexify en el binascii módulo -
print "Destination MAC:" + binascii.hexlify(eth_header[0]) + " Source MAC:" + binascii.hexlify(eth_header[1]) + " Type:" + binascii.hexlify(eth_header[2])
Ahora podemos obtener el encabezado IP ejecutando la siguiente línea de código:
ipheader = pkt[0][14:34]
ip_header = struct.unpack("!12s4s4s", ipheader)
print "Source IP:" + socket.inet_ntoa(ip_header[1]) + " Destination IP:" + socket.inet_ntoa(ip_header[2])
Del mismo modo, también podemos analizar el encabezado TCP.