El escaneo inactivo es un método de escaneo de puertos TCP que consiste en enviar paquetes falsificados a una computadora [1] para averiguar qué servicios están disponibles. Esto se logra haciéndose pasar por otra computadora cuyo tráfico de red es muy lento o inexistente (es decir, que no transmite ni recibe información). Esta podría ser una computadora inactiva, llamada " zombi ". [2]
Descripción general
Esta acción se puede realizar a través de utilidades de red de software comunes como nmap y hping . El ataque implica enviar paquetes falsificados a un objetivo de máquina específico en un esfuerzo por encontrar características distintas de otra máquina zombi . El ataque es sofisticado porque no hay interacción entre el equipo atacante y el objetivo: el atacante interactúa solo con el equipo " zombi ".
Este exploit funciona con dos propósitos, como un escáner de puertos y un mapeador de relaciones IP confiables entre máquinas. El sistema objetivo interactúa con la computadora " zombie " y se puede observar una diferencia de comportamiento utilizando diferentes "zombies" con evidencia de diferentes privilegios otorgados por el objetivo a diferentes computadoras. [3]
La intención general detrás del escaneo inactivo es "verificar el estado del puerto mientras permanece completamente invisible para el host de destino". [4]
Orígenes
Descubierto por Salvatore Sanfilippo (también conocido por su apodo "Antirez") en 1998, [5] el escaneo inactivo ha sido utilizado por muchos "hackers" de sombrero negro para identificar de forma encubierta puertos abiertos en una computadora de destino en preparación para atacarla. Aunque originalmente se llamó escaneo tonto , el término escaneo inactivo se acuñó en 1999, después de la publicación de un escáner de campo de identificación de 16 bits (IPID) de prueba de concepto llamado idlescan , por Filipe Almeida (también conocido como LiquidK). [6] Este tipo de exploración también se puede denominar exploración zombi ; todas las nomenclaturas se deben a la naturaleza de una de las computadoras involucradas en el ataque.
Conceptos básicos de TCP / IP
El diseño y el funcionamiento de Internet se basan en Internet Protocol Suite , comúnmente también llamado TCP / IP. IP es el protocolo principal en la capa de Internet del conjunto de protocolos de Internet y tiene la tarea de entregar datagramas desde el host de origen al host de destino basándose únicamente en sus direcciones . Para este propósito, IP define métodos y estructuras de direccionamiento para el encapsulado de datagramas . Es un protocolo sin conexión y se basa en la transmisión de paquetes. Cada paquete IP de una fuente determinada tiene una ID que identifica de forma única el datagrama IP. [ aclaración necesaria ]
TCP proporciona una entrega ordenada y confiable de un flujo de bytes desde un programa en una computadora a otro programa en otra computadora. TCP es el protocolo en el que se basan las principales aplicaciones de Internet, como la World Wide Web , el correo electrónico y la transferencia de archivos. Cada una de estas aplicaciones (servidor web, servidor de correo electrónico, servidor FTP) se denomina servicio de red . En este sistema, los servicios de red se identifican mediante dos componentes: una dirección de host y un número de puerto. Hay 65536 números de puerto distintos y utilizables por host. La mayoría de los servicios utilizan un rango limitado de números de forma predeterminada, y casi siempre se utiliza el número de puerto predeterminado para un servicio.
Algunos escáneres de puertos escanean solo los números de puerto más comunes, o los puertos más comúnmente asociados con servicios vulnerables, en un host determinado. Consulte: Lista de números de puerto TCP y UDP .
El resultado de un escaneo en un puerto generalmente se generaliza en una de tres categorías:
- Abierto o aceptado : el host envió una respuesta indicando que un servicio está escuchando en el puerto.
- Cerrado o denegado o sin escuchar : el host envió una respuesta indicando que se denegarán las conexiones al puerto.
- Filtrado , eliminado o bloqueado : no hubo respuesta del anfitrión.
Los puertos abiertos presentan dos vulnerabilidades de las que los administradores deben tener cuidado:
- Problemas de seguridad y estabilidad asociados con el programa responsable de brindar el servicio: puertos abiertos.
- Problemas de seguridad y estabilidad asociados con el sistema operativo que se ejecuta en el host: puertos abiertos o cerrados.
Los puertos filtrados no suelen presentar vulnerabilidades. El host en una red local puede estar protegido por un firewall que filtra, de acuerdo con las reglas que configura su administrador, los paquetes. Esto se hace para denegar servicios a hosts desconocidos y evitar intrusiones en la red interna. El protocolo IP es el protocolo de transmisión de la capa de red.
Mecanica basica
Los escaneos inactivos aprovechan el valor del campo de identificación predecible del encabezado IP : cada paquete IP de una fuente determinada tiene una ID que identifica de manera única los fragmentos de un datagrama IP original; la implementación del protocolo asigna valores a este campo obligatorio generalmente mediante un incremento de valor fijo (1). Debido a que los paquetes transmitidos están numerados en una secuencia, puede decir cuántos paquetes se transmiten entre dos paquetes que recibe.
Un atacante primero buscaría un host con un número de secuencia predecible y secuencial (IPID). Las últimas versiones de Linux , Solaris , OpenBSD y Windows Vista no son adecuadas como zombie, ya que el IPID se ha implementado con parches [7] que aleatorizaron el IPID. [1] Las computadoras elegidas para usarse en esta etapa se conocen como "zombies". [2]
Una vez que se encuentra un zombi adecuado, el siguiente paso sería intentar establecer una conexión TCP con un servicio (puerto) determinado del sistema de destino, haciéndose pasar por el zombi. Se realiza enviando un paquete SYN a la computadora de destino, falsificando la dirección IP del zombi, es decir, con la dirección de origen igual a la dirección IP del zombi.
Si el puerto de la computadora de destino está abierto, aceptará la conexión para el servicio, respondiendo con un paquete SYN / ACK al zombi.
La computadora zombie enviará un paquete RST a la computadora de destino (para restablecer la conexión) porque en realidad no envió el paquete SYN en primer lugar.
Dado que el zombi tuvo que enviar el paquete RST, incrementará su IPID. Así es como un atacante descubriría si el puerto del objetivo está abierto. El atacante enviará otro paquete al zombi. Si el IPID se incrementa solo en un paso, el atacante sabría que el puerto en particular está cerrado.
El método asume que el zombi no tiene otras interacciones: si hay algún mensaje enviado por otras razones entre la primera interacción del atacante con el zombi y la segunda interacción que no sea el mensaje RST, habrá un falso positivo .
Encontrar un anfitrión zombie
El primer paso para ejecutar un escaneo inactivo es encontrar un zombi apropiado. Necesita asignar paquetes de ID de IP de forma incremental sobre una base global (en lugar de por host con el que se comunica). Debe estar inactivo (de ahí el nombre del escaneo), ya que el tráfico extraño aumentará su secuencia de ID de IP, confundiendo la lógica del escaneo. Cuanto menor sea la latencia entre el atacante y el zombi, y entre el zombi y el objetivo, más rápido procederá el escaneo. [8]
Tenga en cuenta que cuando un puerto está abierto, los IPID se incrementan en 2. La siguiente es la secuencia:
1. Atacante a objetivo -> SYN, objetivo a zombi -> SYN / ACK, Zombi a objetivo -> RST (incremento de IPID en 1 )
2. Ahora el atacante intenta sondear al zombi en busca de resultados. De atacante a zombi -> SYN / ACK, de zombi a atacante -> RST (incremento de IPID en 1)
Entonces, en este proceso, el IPID finalmente se incrementa en 2.
Cuando se intenta un escaneo inactivo, las herramientas (por ejemplo, nmap) prueban el zombie propuesto e informan cualquier problema con él. Si uno no funciona, pruebe con otro. Hay suficientes servidores de Internet vulnerables que los candidatos zombis no son difíciles de encontrar. Un enfoque común es simplemente ejecutar un barrido de ping de alguna red. La elección de una red cerca de su dirección de origen o cerca del objetivo produce mejores resultados. Puede probar un escaneo inactivo usando cada host disponible de los resultados del barrido de ping hasta que encuentre uno que funcione. Como de costumbre, es mejor pedir permiso antes de usar las máquinas de alguien para propósitos inesperados, como escaneo inactivo.
Los dispositivos de red simples a menudo son grandes zombis porque comúnmente están infrautilizados (inactivos) y construidos con pilas de red simples que son vulnerables a la detección de tráfico de ID de IP.
Si bien la identificación de un zombi adecuado requiere un trabajo inicial, puede seguir reutilizando los buenos. Alternativamente, se han realizado algunas investigaciones sobre el uso de servicios web públicos no deseados como hosts zombies para realizar escaneos inactivos similares. Aprovechar la forma en que algunos de estos servicios realizan conexiones salientes en los envíos de los usuarios puede servir como una especie de escaneo inactivo del pobre. [9]
Usando hping
El método hping para el escaneo inactivo proporciona un ejemplo de nivel inferior de cómo se realiza el escaneo inactivo. En este ejemplo, el host de destino (172.16.0.100) se escaneará utilizando un host inactivo (172.16.0.105). Se probarán un puerto abierto y uno cerrado para ver cómo se desarrolla cada escenario.
Primero, establezca que el host inactivo está realmente inactivo, envíe paquetes usando hping2 y observe que los números de identificación aumentan gradualmente en uno. Si los números de identificación aumentan al azar, el host no está realmente inactivo o tiene un sistema operativo que no tiene una identificación de IP predecible.
[root @ localhost hping2-rc3] # ./hping2 -S 172 .16.0.105 HPING 172.16.0.105 (eth0 172.16.0.105): S conjunto, 40 encabezados + 0 bytes de datos len = 46 ip = 172.16.0.105 ttl = 128 id = 1371 sport = 0 flags = RA seq = 0 win = 0 rtt = 0.3 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1372 sport = 0 flags = RA seq = 1 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1373 sport = 0 flags = RA seq = 2 win = 0 rtt = 0.3 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1374 sport = 0 flags = RA seq = 3 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1375 sport = 0 flags = RA seq = 4 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1376 sport = 0 flags = RA seq = 5 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1377 sport = 0 flags = RA seq = 6 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1378 sport = 0 flags = RA seq = 7 win = 0 rtt = 0.2 ms len = 46 ip = 172.16.0.105 ttl = 128 id = 1379 sport = 0 flags = RA seq = 8 ganar = 0 rtt = 0.4 ms
Envíe un paquete SYN falsificado al host de destino en un puerto que espera que esté abierto. En este caso, se está probando el puerto 22 (ssh).
# hping2 —spoof 172 .16.0.105 -S 172 .16.0.100 -p 22 -c 1 HPING 172.16.0.100 (eth0 172.16.0.100): conjunto S, 40 encabezados + 0 bytes de datos--- 172.16.0.100 estadística hping --- 1 paquete transmitido, 0 paquetes recibidos, 100% de pérdida de paquetes ida y vuelta min / avg / max = 0.0 / 0.0 / 0.0 ms
Dado que falsificamos el paquete, no recibimos una respuesta y hping reporta una pérdida del 100% del paquete. El host de destino respondió directamente al host inactivo con un paquete syn / ack. Ahora, verifique el host inactivo para ver si el número de identificación ha aumentado.
# hping2 -S 172 .16.0.105 -p 445 -c 1HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 encabezados + 0 bytes de datos len = 46 ip = 172.16.0.105 ttl = 128 DF id = 1381 sport = 445 flags = SA seq = 0 win = 64320 rtt = 0.3 Sra--- 172.16.0.105 estadística hping --- 1 paquete transmitido, 1 paquete recibido, 0% de pérdida de paquetes ida y vuelta min / avg / max = 0,3 / 0,3 / 0,3 ms
Observe que el ID de los hosts proxy aumentó de id = 1379 a id = 1381. 1380 se consumió cuando el host inactivo respondió al paquete syn / ack del host de destino con un primer paquete.
Ejecute los mismos procesos nuevamente probando un puerto que probablemente esté cerrado. Aquí estamos probando el puerto 23 (telnet).
# hping2 -S 172 .16.0.105 -p 445 -c 1 ; hping2 — spoof 172 .16.0.105 -S 172 .16.0.100 -p 23 -c 1 ; hping2 -S 172 .16.0.105 -p 445 -c 1 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 encabezados + 0 bytes de datos len = 46 ip = 172.16.0.105 ttl = 128 DF id = 1382 sport = 445 banderas = SA seq = 0 win = 64320 rtt = 2,1 ms--- 172.16.0.105 estadística hping --- 1 paquete transmitido, 1 paquete recibido, 0% de pérdida de paquete ida y vuelta min / avg / max = 2.1 / 2.1 / 2.1 ms HPING 172.16.0.100 (eth0 172.16.0.100): S conjunto, 40 encabezados + 0 bytes de datos--- 172.16.0.100 estadística hping --- 1 paquete transmitido, 0 paquetes recibidos, 100% de pérdida de paquetes ida y vuelta min / avg / max = 0.0 / 0.0 / 0.0 ms HPING 172.16.0.105 (eth0 172.16.0.105): S conjunto, 40 encabezados + 0 bytes de datos len = 46 ip = 172.16.0.105 ttl = 128 DF id = 1383 sport = 445 flags = SA seq = 0 win = 64320 rtt = 0.3 ms--- 172.16.0.105 estadística hping --- 1 paquete transmitido, 1 paquete recibido, 0% de pérdida de paquetes ida y vuelta min / avg / max = 0,3 / 0,3 / 0,3 ms
Tenga en cuenta que esta vez, la identificación no aumentó porque el puerto estaba cerrado. Cuando enviamos el paquete falsificado al host de destino, respondió al host inactivo con un primer paquete que no aumentó el contador de id.
Usando nmap
Lo primero que haría el usuario es encontrar un zombi adecuado en la LAN :
Realizar un escaneo de puertos e identificación del sistema operativo (opción -O en nmap) en la red candidata zombie en lugar de solo un escaneo de ping ayuda a seleccionar un buen zombie. Siempre que el modo detallado (-v) esté habilitado, la detección del sistema operativo generalmente determinará el método de generación de secuencia de ID de IP e imprimirá una línea como "Generación de secuencia de ID de IP: Incremental". Si el tipo se da como Incremental o Incremental little-endian roto, la máquina es un buen candidato zombi. Eso todavía no es garantía de que funcione, ya que Solaris y algunos otros sistemas crean una nueva secuencia de ID de IP para cada host con el que se comunican. El anfitrión también podría estar demasiado ocupado. La detección del sistema operativo y la lista de puertos abiertos también pueden ayudar a identificar los sistemas que probablemente estén inactivos.
Otro enfoque para identificar candidatos zombies es ejecutar el script ipidseq NSE contra un host. Este script prueba un host para clasificar su método de generación de ID de IP, luego imprime la clasificación de ID de IP de manera muy similar a como lo hace la detección del sistema operativo. Como la mayoría de los scripts de NSE, ipidseq.nse se puede ejecutar en muchos hosts en paralelo, lo que lo convierte en otra buena opción al escanear redes enteras en busca de hosts adecuados.
nmap -v -O -sS 192.168.1.0/24
Esto le dice a nmap que haga un barrido de ping y muestre todos los hosts que están en el rango de IP dado. Una vez que haya encontrado un zombi, a continuación, enviaría los paquetes falsificados:
nmap -P0 -p
La yuxtaposición de imágenes muestra ambas etapas en un escenario exitoso.
Eficacia
Aunque muchos sistemas operativos ahora son inmunes a su uso en este ataque, algunos sistemas populares siguen siendo vulnerables; [1] haciendo que el escaneo inactivo siga siendo muy efectivo. Una vez que se completa un escaneo exitoso, no hay rastro de la dirección IP del atacante en el firewall del objetivo o en el registro del sistema de detección de intrusiones . Otra posibilidad útil es la posibilidad de eludir un firewall porque está escaneando el objetivo desde la computadora del zombi, [10] que podría tener derechos adicionales que los del atacante.
Ver también
- La seguridad informática
- Sistema informático
- Protocolo de vectorización de contenido
- Agrietamiento
- Escáner de puerto
- Escaneo de servicio
- TCP
- Escáner de vulnerabilidad
Notas
- ↑ a b c Erikson, Jon (1977). HACKING el arte de la explotación . San Francisco: NoStarch Press. pag. 264. ISBN 1-59327-144-1.
- ^ a b "¿Qué es Idle Scan? | Tecnologías de la información y la comunicación ICterra" . 2017-02-01 . Consultado el 9 de septiembre de 2020 .
- ^ Hijo, Do (2017-12-01). "Introducción al escaneo inactivo / zombi • Pruebas de penetración" . Ensayos de penetración . Consultado el 9 de septiembre de 2020 .
- ^ Trapickin, Roman (septiembre de 2015). "¿Quién está escaneando Internet?" (PDF) . Académico semántico . Archivado (PDF) desde el original el 20 de febrero de 2019 . Consultado el 9 de septiembre de 2020 .
- ^ Sanfilippo, Salvatore (18 de diciembre de 1998). "nuevo método de escaneo tcp" . Consultado el 28 de septiembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
- ^ Filipe Almeida (también conocido como LiquidK) (3 de diciembre de 1999). "idlescan (ip.id portscanner)" . Consultado el 9 de noviembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
- ^ Sanfilippo, Salvatore (26 de octubre de 1999). "parche predecible de ip-> id" . Consultado el 28 de septiembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
- ^ Gordon “Fyodor” Lyon (2010). "Nmap Network Scanning Capítulo 5. Técnicas y algoritmos de escaneo de puertos" . Insecure.Com LLC . Consultado el 28 de septiembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
- ^ Martin “olemoudi” Obiols (2011). "Zombie Scans utilizando servicios públicos no deseados" . (Casi) Blog sin tecnología de piratería. Archivado desde el original el 20 de marzo de 2011 . Consultado el 16 de marzo de 2011 . CS1 maint: parámetro desalentado ( enlace )
- ^ Gordon “Fyodor” Lyon (2010). "Nmap Network Scanning Capítulo 15. Guía de referencia de Nmap" . Insecure.Com LLC . Consultado el 28 de septiembre de 2010 . CS1 maint: parámetro desalentado ( enlace )
enlaces externos
- Insecure.org/nmap/idlescan : un artículo detallado sobre el escaneo inactivo
- Insecure.org - Sitio oficial de Nmap
- Hping.org - Sitio oficial de Hping
- nmap.online-domain-tools.com : un escáner de Nmap en línea
- Techtarget.com : un artículo sobre escaneo inactivo
- Seclists.org - Publicación original de bugtraq
- Blog de ANTH : análisis inactivos mediante servicios públicos