Escaneo de puertos para pruebas de penetración
Escaneo de puertos: Los puertos corresponden a servicios de red y programas de aplicación
Las vulnerabilidades en los programas del servidor se explotan a través de los puertos
Descubrir puertos abiertos
Superficie de ataque más específica
Escaneo de puertos UDP:
Si un puerto ICMP se recibe como inalcanzable, significa que el puerto está cerrado
Si no se recibe ningún paquete de respuesta , Demuestra que el puerto está abierto
Justo lo contrario del escaneo de IP de capa 3
Escaneo de desarrollo de puerto Scapy
Comando: sr1(IP(dst=" 192.168.45.129 ")/UDP(dport=53), timeout=1, verbose=1)
nmap -sU 192.168.45.129
Escaneo TCP: protocolo basado en conexión p>
Apretón de enlace de tres vías: descubra si el objetivo está en línea según el protocolo de enlace de tres vías normal
Escaneo encubierto: envíe paquetes de datos incompletos, no establezca una conexión completa, como ACK paquetes, paquetes SYN y no se accederá a ellos en la capa de aplicación.
Escaneo zombie: no interactúa con el sistema de destino, extremadamente oculto
Escaneo de conexión completo: establece tres protocolo de enlace de tres vías
Todos los métodos de escaneo TCP son Determinar el estado del puerto del sistema de destino en función de los cambios en el protocolo de enlace de tres vías
escaneo encubierto: envíe un paquete SYN. Se recibe el paquete ACK de la otra parte, lo que demuestra que está en línea y no establece una conexión completa de protocolo de enlace de tres vías con él. El comportamiento de escaneo no se registra en el registro de la capa de aplicación, que es muy encubierto, y las auditorías de la capa de red. detectará signos
Escaneo zombie: es un método de escaneo extremadamente encubierto con condiciones de implementación duras, tanto para el iniciador del escaneo como para el escaneado. Entre las partes, se debe implementar la falsificación de direcciones y debe ser una máquina zombie ( (refiriéndose a un sistema inactivo, y el sistema usa un IPID creciente). En los primeros días de win El IPID generado
1, el escáner envía SYN ACY a la máquina zombie. La máquina zombie determina que los tres. No se ha realizado el protocolo de enlace bidireccional, por lo que devuelve un paquete RST. Hay un IPID en el paquete RST y el valor se registra como X, luego el escaneo El escáner conocerá el IPID de la persona que se está escaneando.
2. El escáner envía un paquete SYN al servidor de destino y disfraza la dirección de origen como una máquina zombie. Si el puerto del servidor de destino está abierto, entonces el escáner enviará un paquete SYN a la máquina zombie y luego. la máquina zombie también enviará paquetes RST, entonces su IPID es X 1 (debido a que la máquina zombie está lo suficientemente inactiva, este es el segundo paquete de datos que recibe)
3. Escanear El escáner luego envía un SYN ACK a la máquina zombie, y luego la máquina zombie envía un paquete RST nuevamente con una ID de IP de X 2. Si el escáner recibe la ID de IP de la máquina zombie como > Use scapy para enviar paquetes de datos: primero abra tres máquinas virtuales,
máquina virtual kali: 192.168.45.128
máquina virtual Linux: 192.168.45.129
máquina virtual windows: 192.168.45.132
Enviar SYN paquete:
Al capturar el paquete, puede ver que Kali envía el paquete syn a Linux
La máquina virtual Linux regresa al paquete de datos SYN ACK de la máquina virtual Kali
El sistema kali no sabe que el usuario ha enviado un paquete SYN, pero inexplicablemente recibe el paquete de datos SYN ACK y enviará un paquete RST para desconectarse
También puede usar el siguiente comando para ver la información del paquete de datos recibido Al recibir el paquete de datos SYN ACK correspondiente de la otra parte, scapy usa de forma predeterminada.
El puerto 80 de la máquina se envía al puerto 20 del sistema de destino. Por supuesto, también se puede modificar.
Si se envía un puerto aleatorio al sistema de destino:
Obtenido. a través de la captura de paquetes: 1, kali a Linux envía un paquete SYN al puerto de destino 23456.
2. El sistema Linux devuelve un paquete RST ACK desde su propio puerto 23456 al puerto 20 del sistema kali, lo que indica que el puerto del sistema no está abierto y la sesión ha finalizado
Utilice un script de Python para realizar un escaneo scapy
nmap realiza un escaneo de puertos encubierto:
nmap -sS? 192.168.45.129 -p 80, 21, 110, 443 #Escanear puerto fijo
nmap -sS 192.168.45.129 -p 1-65535 --¿abrir #Escanear 1-65535 puertos bajo esta dirección IP y solo? mostrar puertos abiertos
nmap - sS 192.168.45.129 -p --open? #Parameter --open significa mostrar solo puertos abiertos
nmap -sS -iL iplist.txt -p 80
Se puede ver en la captura de paquetes que nmap usa el escaneo -sS de forma predeterminada para enviar paquetes SYN, es decir, nmap=nmap? -sS
hping3 realiza un escaneo de puertos encubierto:
hping3 192.168.45.129 --scan 80 -S ? #Parámetro --scan va seguido de un solo puerto o varios puertos -S indica escaneo SYN
hping3 192.168.45.129 - -scan 80, 21, 25, 443 -S
hping3 192.168.45.129 --scan 1-65535 -S
Obtenido de la captura de paquetes:
hping3 -c 100? -S? --spoof 192.168.45.200 -p 1 192.168.45.129
El parámetro -c indica el número de paquetes de datos enviados
El parámetro -S indica el envío de datos SYN paquetes
--spoof: dirección de origen falsificada, seguida de Conectar la dirección falsificada,
El parámetro -p indica el puerto escaneado, 1 indica que el número de puerto se incrementa en 1 cada uno tiempo, luego SYN se envía desde el puerto 1 al puerto 100
El último sigue Es la IP de destino
Puede saber que la dirección ha sido falsificada al capturar el paquete, pero para el sistema Linux (192.168.45.129), recibió el paquete SYN de 192.168.45.200, luego dará 192.168.45.200 Respuesta al paquete SYN ACK, pero la dirección es una dirección falsificada por kali. Para verificar qué puertos del. el sistema de destino está abierto, debe iniciar sesión en la dirección falsificada por kali (192.168.45.200) para capturar el paquete
hping3 La diferencia entre escanear puertos con nmap: 1. El resultado de hping3 es claro p>
2. nmap primero realiza la resolución inversa de DNS en la IP. Si falla, enviará un paquete de datos al puerto y enviará paquetes de datos SYN.
hping3 envía paquetes SYN. directamente al puerto del sistema de destino sin realizar un análisis DNS inverso
Escaneo completo del puerto de conexión: si los paquetes SYN se envían solos, se filtran y luego utiliza un escaneo completo del puerto de conexión para establecer un protocolo de enlace de tres vías. conexión con el objetivo. El resultado es el más preciso, pero el sistema de detección de intrusiones lo descubre fácilmente
response=sr1(IP(dst="192.16).
8.45.129")/TCP(dport=80, flags="S"))
respuesta=sr1(IP(dst="192.168.45.129")/TCP(dport=80, flags=" A", ack=(respuesta[TCP].seq 1)))
Situación de captura de paquetes: primero, Kali envía SYN a Linux y Linux responde SYN ACK a Kali, pero el núcleo del sistema de Kali no lo sabe. Si Kali envía un paquete SYN a Linux, entonces el kernel de Kali recibe inexplicablemente el paquete SYN ACK y luego devuelve una solicitud RST para desconectar el paquete a Linux. El protocolo de enlace de tres vías se interrumpe. Ahora Kali envía un paquete de confirmación ACK a Linux. Linux, y Linux inexplicablemente recibe el paquete ACK, por supuesto, también devolverá una solicitud RST para desconectar el paquete. La captura de paquete específica es la siguiente:
Entonces, siempre que el kernel de Kali no lo envíe. un paquete RST después de recibir el paquete SYN ACK, entonces se puede establecer un protocolo de enlace TCP completo de tres vías para determinar si el puerto del host de destino está abierto
Debido a que iptables existe en el kernel de Linux, deshabilita el envío del kernel Se pueden lograr paquetes RST a través de iptables
Utilice nmap Escaneo completo de puertos de conexión: (si no especifica un puerto, nmap escaneará 1000 puertos de uso común de forma predeterminada, no los puertos 1-1000)
Utilice dmitry para realizar un escaneo completo del puerto de conexión:
dmitry: función simple, pero función simple
Escanea los 150 puertos más utilizados de forma predeterminada
dmitry -p 192.168.45.129? #Parámetro -p significa realizar escaneo del puerto TCP
p>dmitry -p 192.168.45.129 -o salida? #Parámetro -o significa guardar los resultados en un documento de texto
Utilice nc para realizar un escaneo completo del puerto de conexión:
nc -nv -w 1 -z 192.168.45.129 1-100: 1-100 significa escanear los puertos 1-100 p>
El parámetro -n significa no realizar la resolución de nombres de dominio en la dirección IP y solo tratarla como una IP para procesar
El parámetro -v significa mostrar información detallada
El parámetro -w significa el período de tiempo de espera
-z significa abrir el modo de escaneo