stringtranslate.com

Escaneo inactivo

Exploración inactiva en un puerto abierto

Un análisis inactivo es un método de análisis del puerto TCP para determinar qué servicios están abiertos en una computadora de destino [1] sin dejar rastros que apunten a uno mismo. Esto se logra mediante el uso de suplantación de paquetes para hacerse pasar por otra computadora (llamada " zombi ") de modo que el objetivo crea que el zombi está accediendo a ella. El objetivo responderá de diferentes maneras dependiendo de si el puerto está abierto, lo que a su vez puede detectarse consultando al 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 una máquina específica en un esfuerzo por encontrar características distintas de otra máquina zombie . El ataque es sofisticado porque no hay interacción entre la computadora atacante y el objetivo: el atacante sólo interactúa con la computadora " zombi ".

Este exploit funciona con dos propósitos: como escáner de puertos y mapeador de relaciones IP confiables entre máquinas. El sistema de destino interactúa con la computadora " zombi " y se pueden observar diferencias en el comportamiento usando diferentes "zombis" 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 objetivo". [4]

Orígenes

Descubierto por Salvatore Sanfilippo (también conocido por su alias "Antirez") en 1998, [5] el escaneo inactivo ha sido utilizado por muchos "hackers" de sombrero negro para identificar de manera encubierta puertos abiertos en una computadora objetivo en preparación para atacarla. Aunque originalmente se llamó escaneo tonto , el término escaneo inactivo fue acuñado en 1999, después de la publicación de una prueba de concepto de escáner de campo de identificación de 16 bits (IPID) llamado idlescan , por Filipe Almeida (también conocido como LiquidK). [6] Este tipo de escaneo también puede denominarse escaneo zombie ; todas las nomenclaturas se deben a la naturaleza de uno de los ordenadores involucrados en el ataque.

Conceptos básicos de TCP/IP

El diseño y funcionamiento de Internet se basa en el 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 ello, IP define métodos de direccionamiento y estructuras para la encapsulación 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 identificación que identifica de forma única el datagrama IP. [ se necesita aclaración ]

TCP proporciona una entrega confiable y ordenada 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 sólo los números de puerto más comunes, o los puertos más comúnmente asociados con servicios vulnerables, en un host determinado. Ver: Lista de números de puertos TCP y UDP .

El resultado de un escaneo de un puerto generalmente se generaliza en una de tres categorías:

Los puertos abiertos presentan dos vulnerabilidades de las que los administradores deben tener cuidado:

  1. Preocupaciones de seguridad y estabilidad asociadas con el programa responsable de brindar el servicio - Puertos abiertos.
  2. Preocupaciones de seguridad y estabilidad asociadas 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 establece su administrador, los paquetes. Esto se hace para negar servicios a hosts desconocidos y evitar intrusiones en la red interna. El protocolo IP es un protocolo de transmisión de capa de red.

Mecanica basica

Los escaneos inactivos aprovechan el valor predecible del campo de identificación del encabezado IP : cada paquete IP de una fuente determinada tiene una identificación que identifica de forma única 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 secuencial y predecible (IPID). Las últimas versiones de Linux , Solaris , OpenBSD y Windows Vista no son adecuadas como zombies, ya que el IPID se ha implementado con parches [7] que aleatorizan el IPID. [1] Las computadoras elegidas para ser utilizadas en esta etapa se conocen como "zombis". [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 hace enviando un paquete SYN a la computadora de destino, falsificando la dirección IP del zombie, es decir, con la dirección de origen igual a la dirección IP del zombie.

Si el puerto de la computadora de destino está abierto, aceptará la conexión para el servicio y responderá con un paquete SYN/ACK al zombi.

La computadora zombie luego 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 zombie 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 zombie. Si el IPID se incrementa sólo en un paso, entonces el atacante sabría que el puerto en particular está cerrado.

El método supone que el zombi no tiene otras interacciones: si se envía algún mensaje por otros motivos 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 a nivel global (en lugar de por host con el que se comunica). Debería 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 avanzará 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 al objetivo -> SYN, objetivo al zombie ->SYN/ACK, Zombie al objetivo -> RST (IPID incrementado en 1 )
2. Ahora el atacante intenta sondear al zombi para obtener resultados. Atacante a Zombi ->SYN/ACK, Zombi a Atacante -> RST (incremento de IPID en 1)
Entonces, en este proceso el IPID se incrementa finalmente en 2.

Cuando se intenta realizar un análisis inactivo, las herramientas (por ejemplo, nmap) prueban el zombi propuesto e informan de cualquier problema que tenga. Si uno no funciona, prueba con otro. Hay suficientes servidores de Internet vulnerables como para que no sea difícil encontrar candidatos zombis. Un enfoque común es simplemente ejecutar un barrido de ping de alguna red. Elegir una red cerca de su dirección de origen o cerca del destino produce mejores resultados. Puede probar un análisis inactivo utilizando cada host disponible a partir de los resultados del barrido de ping hasta que encuentre uno que funcione. Como de costumbre, es mejor pedir permiso antes de utilizar las máquinas de alguien para fines inesperados, como el escaneo inactivo.

Los dispositivos de red simples a menudo son excelentes zombis porque comúnmente están infrautilizados (inactivos) y están construidos con pilas de red simples que son vulnerables a la detección de tráfico de ID de IP.

Si bien identificar un zombi adecuado requiere un trabajo inicial, puedes 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 análisis inactivos similares. Aprovechar la forma en que algunos de estos servicios realizan conexiones salientes tras 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 incrementalmente 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): conjunto S, 40 encabezados + 0 bytes de datos len=46 ip=172.16.0.105 ttl=128 id=1371 deporte=0 banderas=RA seq=0 ganar=0 rtt=0.3 ms len=46 ip=172.16.0.105 ttl=128 id=1372 deporte=0 banderas=RA seq=1 ganar=0 rtt=0.2 ms len =46 ip=172.16.0.105 ttl=128 id=1373 deporte=0 banderas=RA seq=2 win=0 rtt=0.3 ms len=46 ip=172.16.0.105 ttl=128 id=1374 deporte=0 banderas=RA seq =3 ganar=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1375 deporte=0 banderas=RA seq=4 ganar=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1376 deporte=0 banderas=RA seq=5 ganar=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1377 deporte=0 banderas=RA seq=6 ganar=0 rtt=0.2 ms len =46 ip=172.16.0.105 ttl=128 id=1378 deporte=0 banderas=RA seq=7 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1379 deporte=0 banderas=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 de hping --- 1 paquete transmitido, 0 paquetes recibidos, 100 % de pérdida de paquetes en ida y vuelta min/avg/max = 0,0/0,0/0,0 ms

Como falsificamos el paquete, no recibimos respuesta y hping informa una pérdida del 100% del paquete. El host de destino respondió directamente al host inactivo con un paquete de sincronización/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 1     HPING 172.16.0.105 (eth0 172.16.0.105): conjunto S, 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 EM--- 172.16.0.105 estadística de hping --- 1 paquete transmitido, 1 paquete recibido, 0 % de pérdida de paquetes de ida y vuelta min/avg/max = 0,3/0,3/0,3 ms

Observe que la identificación de los hosts proxy aumentó de id=1379 a id=1381. 1380 se consumió cuando el host inactivo respondió al paquete de sincronización/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: parodia 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): conjunto S, 40 encabezados + 0 bytes de datos len=46 ip=172.16.0.105 ttl=128 DF id=1382 sport =445 banderas=SA seq=0 ganar=64320 rtt=2,1 ms                    --- 172.16.0.105 estadística de hping --- 1 paquete transmitido, 1 paquete recibido, 0% de pérdida de paquete de 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 de 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 de hping --- 1 paquete transmitido, 1 paquete recibido, 0 % de pérdida de paquetes de ida y vuelta min/avg/max = 0,3/0,3/0,3 ms

Observe 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 identificación.

Usando nmap

Lo primero que haría el usuario es encontrar un zombie adecuado en la LAN :

Realizar un escaneo de puertos y una identificación del sistema operativo (opción -O en nmap) en la red del candidato zombie en lugar de simplemente 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 proporciona como Incremental o Incremental little-endian roto, la máquina es un buen candidato a 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 zombis 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 y 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 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 hayas encontrado un zombie, lo siguiente que deberás enviar son los paquetes falsificados:

nmap -P0 -p <port> -sI <zombie IP> <target IP>

La yuxtaposición de imágenes muestra ambas etapas en un escenario exitoso.

Eficacia

Aunque muchos sistemas operativos ahora son inmunes a ser utilizados en este ataque, algunos sistemas populares todavía son vulnerables; [1] haciendo que el escaneo inactivo siga siendo muy efectivo. Una vez que se completa un análisis exitoso, no hay rastro de la dirección IP del atacante en el firewall del objetivo ni en el registro del sistema de detección de intrusiones . Otra posibilidad útil es la posibilidad de eludir un firewall porque estás escaneando el objetivo desde la computadora del zombie, [10] que podría tener más derechos que la del atacante.

Ver también

Notas

  1. ^ abc Erikson, Jon (1977). HACKING el arte de la explotación . San Francisco: NoStarch Press. pag. 264.ISBN​ 1-59327-144-1.
  2. ^ ab "¿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 .
  3. ^ Hijo, hazlo (1 de diciembre de 2017). "Introducción al escaneo inactivo/zombis • Pruebas de penetración". Pruebas de penetración . Consultado el 9 de septiembre de 2020 .
  4. ^ Trapickin, Roman (septiembre de 2015). "¿Quién escanea Internet?" (PDF) . Académico semántico . S2CID  55929767. Archivado (PDF) desde el original el 20 de febrero de 2019 . Consultado el 9 de septiembre de 2020 .
  5. ^ Sanfilippo, Salvatore (18 de diciembre de 1998). "nuevo método de escaneo tcp" . Consultado el 28 de septiembre de 2010 .
  6. ^ Filipe Almeida (también conocido como LiquidK) (3 de diciembre de 1999). "idlescan (escáner de puertos ip.id)" . Consultado el 9 de noviembre de 2010 .
  7. ^ Sanfilippo, Salvatore (26 de octubre de 1999). "parche de ip->id predecible" . Consultado el 28 de septiembre de 2010 .
  8. ^ Gordon "Fiodor" Lyon (2010). "Capítulo 5 de escaneo de red de Nmap. Algoritmos y técnicas de escaneo de puertos". Insecure.Com LLC . Consultado el 28 de septiembre de 2010 .
  9. ^ Martín “olemoudi” Obiols (2011). "Escaneos de zombis utilizando servicios públicos no deseados". (Casi) no hay blog sobre piratería tecnológica. Archivado desde el original el 20 de marzo de 2011 . Consultado el 16 de marzo de 2011 .
  10. ^ Gordon "Fiodor" Lyon (2010). "Capítulo 15 de escaneo de red de Nmap. Guía de referencia de Nmap". Insecure.Com LLC . Consultado el 28 de septiembre de 2010 .

enlaces externos