¿Cómo buscar puertos abiertos por sockets TCP / UDP con nmap o cualquier otra herramienta?

2

Soy nuevo en nmap y he estado investigando últimamente para escanear algunos dispositivos en la LAN actual en busca de puertos abiertos por programas de socket que se estén ejecutando.

Primero ejecuté un servidor UDP simple en mi máquina en el puerto 55555 y exploré el host local con estas opciones:

nmap -sT -sU -d -d localhost

(Sé que -sT no sirve para este caso, pero lo probé en todos mis ensayos)

Muestra el puerto 55555 como cerrado. Terminé el proceso del servidor y aún el puerto está cerrado.

No estoy seguro si puedo buscar puertos de socket TCP / UDP mediante nmap. ¿Es posible hacerlo con nmap o alguna otra herramienta?

    
pregunta 3bdalla 18.02.2016 - 10:53
fuente

3 respuestas

4

Creo que debería comprender TCP / IP completamente, cómo se hacen las interconexiones, se filtran / bloquean completamente. Para los arrancadores, -sT (conexión TCP) es el tipo de conexión más confiable, ya que completa un protocolo de enlace completo. La salida de NMAP varía según lo que esté escaneando, ya sea que los objetivos tengan o no filtrado / cortafuegos. Hay una forma más sencilla de ver qué puertos se abren en sus sistemas. Se llama netstat. Al iniciar sesión en cualquiera de sus máquinas, simplemente puede ejecutar un netstat en esas máquinas para ver lo que se ha establecido y escuchar. Esto le dará una imagen más precisa de la aplicación utilizando un puerto. (por ejemplo, si por alguna razón asigno el puerto 21 a mi servidor http, lo verá en lugar de suponer que estoy ejecutando FTP).

Pero volvamos a tu pregunta al ver la salida. Hay dos vistas aquí (al escribirse localhost) ... Lo que TÚ verás, en comparación con lo que verá alguien que no sea de la LAN. Si está en un sistema Linux / BSD, no necesita ejecutar nmap. Podrías usar LSOF:

$ sudo lsof -i -n | awk '{print $1"\t"$8"\t"$9}'

Esto le mostrará todos los sockets basados en red en uso. Pero si TODAVÍA desea usar nmap, debe comprender cómo funciona nmap de manera predeterminada (por ejemplo, cuántos puertos se buscarán, ya que por defecto nmap solo escaneará los 1000 puertos más comunes. El servicio que se ejecuta en dicho puerto 24681 no se mostrará). Es poco común).

Pero todavía quieres usar nmap. Sugiero que para obtener una vista completa intente:

nmap -sT -Pn -T2 -vvv -A -p 1-65535 localhost

Esto funcionará bien, tomará algún tiempo localmente, y NO funcionará bien contra el host local. Esto se debe a que no todas las redes son iguales. Por ejemplo, si una red tiene VLAN, PVLAN o está separada / intersectada con, digamos, IPS / IDS / Firewalls pueden responder de manera diferente. Por ejemplo, si un conmutador tiene algunas ACL creativas, su conmutador puede interceptar y responder a la exploración NMAP (no al objetivo). Este suele ser el caso cuando ve que un objetivo responde como si TODOS los puertos estuvieran abiertos.

RESUMEN: Para ver qué se está ejecutando en SU máquina, es mejor que inicie sesión en ella y use algo como lsof o netstat. Si realiza la prueba en su red LOCALMENTE (en la misma subred), es posible que deba jugar con diferentes servicios (TCP / UDP), temporización (análisis lento frente a rápido / insano), puertos, etc.

    
respondido por el munkeyoto 18.02.2016 - 17:30
fuente
1

No estoy seguro de entender si desea "listar los sockets de su host local" o "escanear puertos TCP / UDP": escribiré esta publicación para el segundo significado (escaneo)

Si su servidor está escuchando en UDP 55555, no tiene sentido utilizar -sT (TCP Scan) o -sS (TCP Syn Stealth scan) ya que se basa en el protocolo TCP. (Syn - Syn / Ack - Ack). Según lo sugerido por munkeyoto, debe observar cómo funciona el protocolo para comprender qué hace la exploración. (Libro sugerido: 'Análisis práctico de paquetes' o 'Nmap Network Discovery'). También tenga en cuenta que Windows no admite el escaneo de su propia máquina (localhost) con SYN Stealth Scan

El escaneo UDP funciona al enviar un encabezado UDP vacío (sin datos) a cada puerto objetivo. Según la respuesta, o la falta de ella, el puerto se asigna a uno de cuatro estados:

  • Cualquier respuesta UDP del puerto de destino (inusual) == > abierto
  • No se recibió respuesta (incluso después de las retransmisiones) == > abierto | filtrado
  • Error de acceso a puerto ICMP (tipo 3, código 3) == > cerrado
  • Otros errores inalcanzables de ICMP (tipo 3, código 1, 2, 9, 10 o 13) == > filtrado

Una buena manera de mejorar la confiabilidad del escaneo del puerto UDP es usar Detección de versión (a.k.a Servicio de huellas digitales -sV):

Para escanear su puerto UDP, usaría:

$ sudo nmap -sUV <targetIP> -p 55555

Si desea escanear más de un puerto, la exploración tomará un tiempo significativamente mayor. (Lo referiré a enlace )

Si toda esta publicación es confusa, te recomendaría que leas los dos libros mencionados anteriormente, las técnicas de escaneo requieren algún conocimiento específico sobre TCP, UDP, ICMP y otros protocolos.

    
respondido por el Florian Bidabe 20.02.2016 - 13:51
fuente
0

Para el escaneo TCP, puede usar un shell Bash y su red archivos de pseudo dispositivos , por ejemplo,

for port in {1..65535}; do
  timeout 1 bash -c "</dev/tcp/localhost/$port" 2> /dev/null && echo Port $port open. || echo Port $port closed.
done
    
respondido por el kenorb 20.10.2016 - 17:35
fuente

Lea otras preguntas en las etiquetas