
La utilidad de una herramienta de seguridad está limitada por
la salida que genera. De poco sirven pruebas y algoritmos
complejos si luego no se presentan de una forma organizada y
comprensible. Dada la cantidad de formas en las que puede
utilizarse Nmap, tanto por personas como por otros programas, no es
posible complacer a todos con un único formato. Por ello Nmap
ofrece varios formatos, incluyendo el modo interactivo para que
los humanos lo lean directamente y un formato XML para que sea
interpretado por otros programas. Además de ofrecer distintos formatos de salida, Nmap ofrece
opciones adicionales para controlar cuanta información de más se
muestra en la salida, así como opciones para controlar los
mensajes de depuración que se muestran. Los tipos de salida pueden
enviarse a la salida estándar o a algún archivo especificando su
nombre. Nmap puede añadir información al archivo o
sobreescribirlo. Los formatos de salida pueden utilizarse también
para retomar un sondeo que se haya interrumpido. Nmap puede generar la salida en cinco formatos distintos. El
formato por omisión es el llamado salida
interactiva, y se envía a la salida estándar («stdout»).
También está la salida normal,
que es similar a la salida interactiva salvo que muestra menos
información de ejecución y menos advertencias, ya que se espera que
se analice una vez que el sondeo haya terminado en lugar de ser
analizada interactivamente. La salida XML es uno de los formatos de salida más
importantes, ya que puede convertirse a HTML, los programas (como
la interfaz de usuario de Nmap) pueden interpretarla fácilmente o
puede importarse a una base de datos. Los dos tipos de salida restantes son la sencilla salida para grep (o «grepeable») que incluye la mayoría
de la información de un sistema analizado en una sola línea, y la
s4L1d4 sCRiPt KiDDi3 para
usuarios que se consideran a sí mismos |<-r4d. Aunque se utiliza la salida interactiva por omisión y no
tiene ninguna opción de la línea de órdenes, los demás formatos
utilizan la misma sintaxis. Toman un solo argumento, que es el
archivo donde se guardarán los resultados. Pueden especificarse
múltiples formatos al mismo tiempo, pero sólo puede especificar el
mismo formato una vez. Por ejemplo, puede querer guardar la salida
normal para su propia visualización mientras se guarda la
información del mismo sondeo en formato XML para realizar un
análisis posterior con un programa. Para hacer ésto debe utilizar
las opciones -oX misondeo.xml -oN
misondeo.nmap. Se recomienda utilizar nombres más
descriptivos, si bien este capítulo utiliza nombres sencillos como
misondeo.xml por razones de
brevedad. Los nombres elegidos son una cuestión de preferencia
personal. Yo utilizo nombres largos que incluyen la fecha del
análisis y una palabra o dos describiendo el sondeo, dentro de un
directorio con el nombre de la empresa que estoy
analizando. Nmap seguirá imprimiendo la salida interactiva en «stdout»
como lo hace habitualmente aunque se guarden en archivos la salida
con estas opciones. Por ejemplo, la orden nmap -oX misondeo.xml destino imprime
XML en misondeo.xml y llena
la salida estándar con los mismos resultados interactivos que
habría impreso si no se hubiese especificado la opción
-oX. Puedes cambiar este comportamiento dando un guión como
argumento a una de las opciones de salida. Esto hace que Nmap
desactive la salida interactiva y que imprima en su lugar los
resultados en el formato especificado en la salida estándar. Con
lo que la orden nmap -oX -
destino enviará únicamente la salida XML a la salida
estándar («stdout»). Los errores graves seguirán presentándose,
posiblemente, en la salida normal de error, «stderr». A diferencia de algunos argumentos de Nmap, es obligatorio
separar con un espacio la opción de salida (como
-oX) y el nombre del archivo o el guión. Si los
omite y pone el argumento como -oG- o
-oXsondeo.xml, una funcionalidad de
compatibilidad con versiones anteriores hará que se cree una
salida normal en los ficheros llamados
G- y Xscan.xml respectivamente. Nmap también ofrece opciones para controlar la información
extra que se ofrece sobre el sondeo y añadirlo a los archivos de
salida en lugar de sobreescribirlos. Todas estas opciones se
describen a continuación. Formatos de salida de Nmap -
-oN <filespec> (Salida normal) Solicita que la salida normal sea
redirigida al archivo especificado. Como se ha dicho anteriormente, esto
difiere un poco
de la salida interactiva. -
-oX <filespec> (salida XML) Solicita que la salida en XML se
redirigida al archivo especificado. Nmap incluye un DTD
que pueden utilizar los intérpretes de XML para validar
la salida XML. Aunque está dirigida a que la utilicen programas,
también puede ayudar a que una persona interprete la salida de Nmap.
El DTD define los elementos legales del formato, y generalmente
enumera los atributos y valores que pueden tener. La última versión
está siempre disponible en
http://www.insecure.org/nmap/data/nmap.dtd. XML ofrece un formato estable que es fácilmente
interpretado por cualquier programa. Hay intérpretes libres
de XML para los lenguajes de ordenador más importantes,
incluyendo C/C++, Perl, Python, y Java. La gente ha escrito
librerías para la mayoría de estos lenguajes que manejan
específicamente la salida de Nmap. Por ejemplo Nmap::Scanner
y Nmap::Parser en el
CPAN de Perl. XML es el formato preferente en la mayoría de
los casos en que una aplicación no trivial quiere utilizar
Nmap. La salida de XML hace referencia a la hoja de estilo
XSL que puede utilizarse para formatear los resultados en HTML. La forma
más fácil de utilizarla es simplemente cargar la salida XML en un navegador web
como Firefox o IE. Por omisión, ésto solo funcionará en el equipo en el que
ejecutó Nmap (o uno configurado igual que dicho equipo)
ya que la ruta de
nmap.xsl se incluye directamente
dentro del archivo.
Puede utilizar la opción --webxml o
--stylesheet para crear un XML portable que
pueda mostrarse como HTML en cualquier ordenador conectado a la web. -
-oS <filespec> (SaLiDa ScRipT KIdd|3) La salida «script kiddie» es como la salida
interactiva, excepto que se post-procesa para que la vean
mejor los «l33t HaXXorZ» a los que antes no les gustaba Nmap
por su uso consistente de mayúsculas y minúsculas. Aquellos
que no tengan sentido del humor deberían tomar nota de que
esta opción es una broma sobre los «script kiddies» antes de
criticarme por “ayudarlos”. -
-oG <filespec> (Salida «grepeable») Este formato de salida se trata el último porque está
obsoleto. La salida en formato XML es mucho más poderosa, y
es igual de conveniente para los usuarios experimentados. XML
es un estándar para el que se dispone de docenas de
intérpretes, mientras que la salida para grep es
un «hack» propio. XML puede extenderse para soportar nuevas
funcionalidades de Nmap tan pronto como se liberen,
mientras que en general tengo que omitir estas funcionalidades
de la salida para grep por no tener un lugar donde
ponerlas. Sin embargo, la salida para grep es todavía bastante
popular. Es simplemente un formato que lista cada sistema en una
línea y que puede ser fácilmente tratado con herramientas
estándar de UNIX como grep, awk, cut, sed, diff y
Perl. Incluso yo la utilizo para pruebas rápidas que hago
desde la línea de órdenes. Sólo hace falta un grep para
identificar todos los sistemas con el puerto de ssh abierto o
que ejecuten Solaris, enviando la salida a través de un
conector a awk o cut para mostrar los campos
deseados. La salida para grep consiste en comentarios (líneas que empiezan
por una almohadilla, «#») y líneas de objetivo. Una línea de objetivo
incluye una combinación de seis campos marcados, separados por
tabulaciones y seguidos de dos puntos. Los campos (en inglés) son
Host (Sistema), Ports (Puertos), Protocols (Protocolos), Ignored State (Estado omitido), OS (Sistema operativo), Seq Index (índice de secuencia), IPID, y Status (Estado). El campo más importante de todos habitualmente es Ports, que es el que da los detalles de cada
puerto interesante encontrado. Consiste en una lista separada por
comas de entradas de puerto. Cada entrada de puerto representa uno de
los puertos de interés y se muestra con siete subcampos separados por
una barra («/»). Los subcampos son: Port
number (Número de puerto), State (Estado), Protocol (Protocolo), Owner (Propietario), Service (Servicio), SunRPC
info (Información SunRPC), y Version
info (Información de versión). Esta página de manual, al igual que en el caso de la salida XML,
no puede incluir la documentación completa de este formato. Puede
encontrar más información detallada de la salida de Nmap para grep en
http://www.unspecific.com/nmap-oG-output. -
-oA <nombre_base> (Salida en todos los formatos) Por comodidad, puede especificar la opción -oA
<nombre_base> para guardar
los resultados de los sondeos en
<nombre_base>.nmap,
<nombre_base>.xml, y
<nombre_base>.gnmap,
respectivamente. Al igual que la mayoría de los programas
puede poner un prefijo con la ruta del directorio como
pudiera ser ~/registros_nmap/empresa_foo/ en
UNIX o c:\hacking\sco en
Windows.
Opciones de depuración y de detalle -
-v (Incrementa el nivel de detalle)
Hace que Nmap imprima más información sobre el sondeo
que está realizando incrementando el nivel de detalle. Los
puertos abiertos se muestran en cuanto se encuentran y se
muestra una estimación del tiempo que Nmap espera que dure
la tarea de sondeo si piensa que va a durar más de un par de
minutos. Puede utilizarlo dos veces para obtener aún más
detalle. No tiene ningún efecto el utilizarlo más de dos
veces. La mayoría de los cambios sólo afectan a la salida
interactiva, y algunos también afectan a la salida «script
kiddie». Dado que los demás formatos van a ser tratados por
programas, Nmap da información detallada en estos formatos
por omisión sin fatigar a un usuario humano. Sin embargo,
hay algunos cambios en los otros modos que hacen que el
tamaño de la salida resultante se reduzca sustancialmente al
omitir información detallada. Por ejemplo, sólo se imprime
una línea de comentario con todos los puertos sondeados en
el formato de salida para grep si se activa el modo de
detalle, porque puede ser demasiada información. -
-d [level] (Incrementar o fijar el nivel de depuración)
Cuando no obtiene suficientes datos ni siquiera con el modo de
detalle, ¡puede utilizar el modo de depuración para inundarse de
detalles! Al igual que con la opción de detalle (-v),
puede activar la depuración con una opción en la línea de órdenes
(-d). Puede incrementar el nivel de depuración si la
especifica múltiples veces. También puede fijar directamente el nivel
de depuración si da un argumento a la opción -d. Por
ejemplo, si utiliza -d9 se fijaría el nivel de
depuración en el nueve. Ese es el nivel más alto de depuración y
provocará que se impriman miles de líneas a no ser que haga sondeos
muy sencillos con pocos puertos y objetivos. La salida de depuración es útil cuando sospecha que hay un fallo
en Nmap o simplemente si está confundido y quiere saber qué hace Nmap
y por qué. Las líneas de depuración no son auto-explicativas, dado que
esta función está dirigida a los desarrolladores. Puede obtener algo
como esto: Timeout vals: srtt: -1
rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987
to: 100000. Su único recurso si no entiende una línea
es ignorarla, buscarla en el código fuente, o solicitar ayuda en la
lista de desarrolladores (nmap-dev). Algunas líneas sí son
auto-explicativas, pero los mensajes se vuelven más y más extraños a
medida que se incrementa el nivel de depuración. -
--packet-trace (Trazar paquetes y datos enviados y recibidos)
Esta opción hace que Nmap imprima un resumen de cada
paquete que envía o recibe. Esto se utiliza muchas veces
para poder depurar el programa, pero también es útil para
los usuarios nuevos que quieren entender exactamente que es
lo que hace Nmap bajo el capó. Puede especificar un número
reducido de puertos para evitar que se impriman miles de
líneas, como por ejemplo -p20-30. Si sólo
está interesado en el funcionamiento del subsistema de
detección de versiones debe utilizar la opción
--version-trace. -
--iflist (Listar interfaces y rutas)
Imprime la lista de interfaces y las rutas del sistema
tal y como las detecta Nmap. Esta opción es útil para
depurar problemas de enrutamiento o caracterizaciones
equivocadas del tipo de interfaz (como por ejemplo, cuando
Nmap trata una conexión PPP como una interfaz
Ethernet).
Opciones misceláneas de salida -
--append-output (Añadir en lugar de borrar los archivos de salida)
El fichero especificado como salida de un formato
como pueda ser -oX or -oN
se sobreescribe por omisión. Si prefiere mantener el
contenido existente y añadir los nuevos resultados tendrá
que especificar la opción
--append-output. La información obtenida
se añadirá a los ficheros especificados en esa ejecución de
Nmap en lugar de sobreescribirlos. Esto no funciona bien
para los ficheros de salida XML (-oX) ya
que el fichero resultante no se podrá leer correctamente,
por regla general, hasta que lo arregle manualmente. -
--resume <nombre_archivo> (Continuar un sondeo detenido)
Algunas ejecuciones de Nmap tardan mucho tiempo, del
orden de días. Esos sondeos no siempre se ejecutan hasta el
final. Es posible que haya restricciones que impidan los sondeos
de Nmap durante la jornada laboral, se puede caer la red o
el sistema donde se está ejecutando Nmap puede sufrir un
reinicio esperado o uno no planificado, o incluso es posible
que Nmap aborte. El administrador que está ejecutando Nmap
podría cancelarlo también por cualquier otra razón,
simplemente pulsando ctrl-C. En estos casos puede no
desearse empezar el sondeo completo desde el
principio. Afortunadamente, si se ha guardado una salida
normal (-oN) o para tratarla con grep
(-oG), el usuarios puede pedir a Nmap que
continúe el sondeo con el objetivo en el que estaba
trabajando cuando se detuvo la ejecución. Simplemente se
tiene que especificar la opción --resume y
dar un archivo de salida normal o «grepeable» como
argumento. No se puede dar ningún otro argumento, ya que
Nmap trata el archivo para utilizar las mismas opciones que
se especificaron entonces. Sólo se debe llamar a Nmap con
nmap --resume
<archivo_de_registro>.
Nmap añadirá cualquier resultado nuevo a los ficheros de
datos especificados en la ejecución previa. No se soporta la
capacidad de reanudar un sondeo con el formato de salida XML
porque combinar dos salidas en un sólo fichero XML válido
sería difícil. -
--stylesheet <ruta o URL> (Fija la hoja de estilo XSL para transformar la salida XML)
Nmap se distribuye conjuntamente con una hoja de
estilo XSL llamada nmap.xsl para poder ver o
traducir la salida XML a HTML. La Salida XML incluye una
directiva xml-stylesheet
que apunta al punto donde está instalado nmap.xml (o al directorio de
trabajo actual en Windows). Para mostrar los resultados
basta cargar la salida XML en un navegador de web moderno y
éste recogerá y utilizará el archivo nmap.xsl del sistema de ficheros.
Si quiere especificar una hoja de estilo diferente, tiene
que especificarla como argumento a la opción
--stylesheet. Puede dar una ruta completa o
un URL. Una forma habitual de llamar a esta opción es la
siguiente: --stylesheet
http://www.insecure.org/nmap/data/nmap.xsl. Esto le
dice al navegador que descargue la última versión de la hoja
de estilo de Insecure.Org. La opción --webxml
hace lo mismo pero con menos teclas y es más fácil de recordar.
Esto facilita la visualización de
resultados en un sistema que no tiene Nmap instalado (y que
por tanto carece de un archivo nmap.xsl). Así, la URL es lo más
útil, pero se utiliza el sistema de ficheros local para el
archivo nmap.xsl por omisión por razones de
privacidad. -
--webxml (Carga la hoja de estilo de Insecure.Org)
Esta opción es simplemente un alias para
--stylesheet http://www.insecure.org/nmap/data/nmap.xsl. -
--no_stylesheet (Omite la declaración de hoja de estilo XSL del XML)
Puede utilizar esta opción para evitar que Nmap asocie
una hoja de estilo XSL a su salida XML. En este caso, se
omite la directiva xml-stylesheet de la
salida.
|
|