por tercer_ojo
Paranóico
yo no encuentro que nmap tenga el parámetro -Pn, pero prosigamos.
el parámetro -P0 indica a nmap que no haga un ping para verificar si el host está up antes de escanear los puertos; en otras palabras, se usa para indicarle a nmap que debe asumir que todos los hosts a escanear están activos. ¿por qué? porque la eterna mayoría de los firewalls descartan los pings que provienen desde fuera de la red local, justamente para impedir que los escaneos de puertos de poca sofisticación prosigan. entonces, cuando usas -P0, nmap pasa derecho a hacer el escaneo de puertos. tenelo presente, es útil usar ese parámetro cuando laburás una red desde afuera.
volviendo a lo tuyo, a vos te dan todos los puertos filtrados porque no estás teniendo en cuenta que hay varios tipos de escaneo TCP:
-sS: sólo manda a cada puerto un paquete con el flag SYN on, que se usa para indicarle al objetivo que se pretende hacer una conexión a ese puerto, hay otros pasos subsiguientes en el handshake de TCP/IP, pero este método los obvía adrede, y en su lugar analiza la respuesta del objetivo cuando se le manda sólo un SYN.
-sT: hace el intento de conectarse a cada puerto en toda regla, es decir, sigue todos los pasos protocolarmente debidos para conectarse al puerto. el problema con este método de escaneo, que es el que nmap usa por defecto si no le especificás otro, es que los firewalls obviamente filtran todo intento de conexión que venga desde afuera de la red confiable -- es decir, para eso existen ¿no?
-sA: intenta hacerle creer al firewall que es él quien ha intentado iniciar una conexión, porque si el primer paso es un paquete SYN, la respuesta es un ACK. este método manda el ACK obviando el SYN, que es lo mismo que decirle al firewall "ok, charlemos", cuando nunca recibió un "¿charlamos?" inicialmente.
-sW: es parecido al anterior, pero menos genérico. en palabras simples, busca explotar la forma en que ciertos sistemas operativos responden, analizando un campo del paquete TCP/IP que se recibe como respuesta, el campo Window. y desde ahí determina si el puerto está abierto, filtrado, o cerrado.
-sM: este es todavía más complejo, indica a nmap que mande a cada puerto una combinación específica de flags en los paquetes que transmite (FIN/ACK), y analiza la respuesta del objetivo, comparándola con ciertos resultados teóricos que surgen del análisis del protocolo en su versión más pura y dura, es decir, el RFC 793.
Vos estás usando la técnica de escaneo -sS, que es la menos confiable de todas cuando estás fuera de la red, porque todos (TODOS) los firewalls vienen programados por defecto para descartar esas peticiones. usá cualquiera de los otros tres métodos, empezando por -sS, y verás mejores resultados.
(MD5 checksum error.)