martes, 23 de octubre de 2007

Manual Nessus

Introduccion:
A pedido de muchas personas, y como veo que no hay muucha documentacion de Nessus, voy a hacer mi manual en español para instalarlo, actualizarlo y utilizarlo step-by-step (paso a paso) bajo linux. Pese a que a partir de la version 3.x la licencia del nessus no es gpl (es comercial) la guia va a ser de estas versiones, preferentemene de la 3.0.5.

Descarga de Nessus:
Por razones que no comprendo con exactitud, el proceso de instalacion del nessus es bastante e innecesariamente largo.
Primero vamos a la pagina de nessus (www.nessus.org) y luego vamos a la parte de descargas (DOWNLOADS). Ahi nos da la opcion de elegir la version del nessus y el SO, ustedes elegiran el que quieran, yo recomiendo 3.0.5 para linux, porque este manual es para ese SO. Una vez seleccionado, presionamos el boton DOWNLOAD. A continuacion nos aparecera una licencia comercial que ni dan ganas de leerla. Bajamos y seleccionamos I accept (aunque piensen lo contario) xD. Despues de esto tenemos que llenar los casilleros con nuestros datos. Asegurense de poner el mail aunquesea correctamente porque es ahi donde recibiran un codigo de verificacion. Continuamos y por fin nos aparecen los links de descarga. Como podran apreciar, solo aparecen unas cuantas distros:

Debian 3.1 Nessus-3.0.5-debian3_i386.deb 5928 KB
Red Hat ES 3 Nessus-3.0.5-es3.i386.rpm 7249 KB
Red Hat ES 4 Nessus-3.0.5-es4.i386.rpm 7288 KB
Fedora Core 4 Nessus-3.0.5-fc4.i386.rpm 7831 KB
Fedora Core 5 Nessus-3.0.5-fc5.i386.rpm 7864 KB
Fedora Core 6 Nessus-3.0.5-fc6.i386.rpm 7866 KB
SuSE 10 Nessus-3.0.5-suse10.0.i586.rpm 5726 KB
SuSE 9.3 Nessus-3.0.5-suse9.3.i586.rpm 5742 KB

Obviamente se bajan el que les corresponde, es posible que su distro no este ahi. Si su distro usa rpm bajense el de fedora, o red hat, o suse, seguro que les anda. Si usan .deb bajense el de debian, que seguro les va a andar. Si usan paquetes .tgz como yo (uso slackware), se van a tener que bajar el de SuSe 10 y lo van a tener que pasar a .tgz con el comando rpm2tgz que ya viene con slackware. Si usan otro paquete, manden un mail a deraison@nessus.org donde el señor Renaud Deraison o su secretario/a les va a contestar amarga y hostilmente, pero la respuesta va a servir.

Instalacion:

Una vez que tienen su paquete preparado o bajado, lo tendran que instalar normalmente:

En red hat o suse:

rpm -ivh Nessus-3.0.5-*

En Debian:

dpkg -i Nessus-3.0.5-*

Y en slackware:

installpkg Nessus-3.0.5-*

Si usan otra distro, sabran hacerlo.

Una vez instalado, diriganse al directorio donde fue instalado Nessus, por defecto es /opt/nessus y ejecutamos el archivo nessus-add-first-user para crearle un usuario al Nessus.

#cd /opt/nessus/sbin
#./nessus-add-first-user
Ahi llenenlo como quieran. Excepto en la parte de User rules:
Si quieren leanse el nessus-adduser man page, pero es medio al pedo, alcanza con que pongan
default-accept como regla para que el usuario pueda escanear un host remoto.

Despues de eso, nos vamos al directorio bin/ y ejecutamos el nessus-mkcert-client

#cd ..
#cd bin/
#./nessus-mkcert-client
Y responden las preguntas como quieran, asegurense de que en la primer pregunta (Do you want to register the users in the Nessus server...) poner que si en el caso de que el usuario creado para nessus y el programa este instalado en la misma PC.

En caso de que quieran hacer un segundo usuario para nessus (con mas o menos privilegios), hacen esto:

#cd ..
#cd sbin/
#./nessus-adduser
Y lo llenan con los datos que quieran.

Una vez hecho esto, vamos a ejecutar el demonio de nessus. Con esto vamos a poner el servidor nessus. Esto es necesario hacerlo cada vez que van a usar el programa, ya que el cliente GTK de nessus e incluso la consola necesitan un servidor para conectarse. Sino no anda.

#cd /opt/nessus/sbin
#./nessusd -D

Y dejamos que carguen los plugins (puede tardar unos minutos).

Instalando el codigo de activacion:

Por la paranohia de la gente de nessus, para utilizar el programa, hay que registrarlo con el codigo que es enviado gratuitamente a tu mail. Asi que abri tu casilla de correo y en el mail que te mandaron copia una licencia o codigo de activacion. Luego de copiarlo, anda a la consola y hace esto:

#cd /opt/nessus/bin
#./nessus-fetch --register CODIGO-DE-ACTIVACION-QUE-TIENEN

Una vez finalizado esto, ya terminaron con la instalacion.

ACTUALIZACION:

En la pagina de nessus, los plugins se actualizan constantemente. Por lo tanto, siempre te conviene estar al dia. Hay dos formas para actualizar:

1)La mas comoda y recomendada:

Vamos a la consola y escribimos esto:

#cd /opt/nessus/sbin
#./nessus-update-plugins

Va a tardar un buen rato. Esto deberias hacerlo todos los dias para mantenerte al dia con los plugins.

2)Menos comoda:

Vas a la pagina de nessus, vas a la parte de plugins, seleccionas los que te interesan, los copias y los pegas en /opt/nessus/lib/nessus/plugins con formato .nasl usando el editor de texto que quieras. Esto se usa porque cuando actualizas, los plugins mas viejos no se bajan, por lo tanto te conviene hacerlo con los plugins que mas te interesen, por lo menos una vez.

Listo cheesy Solo falta que les explique como usarlo.

UTILIZACION DEL NESSUS:

Hay dos formas de usar el nessus: con el cliente GTK y el cliente de consola. Yo uso la consola porque me gusta mas. Asi que les voy a enseñar como hacerlo desde la consola suponiendo que no arrancaron el server

#cd /opt/nessus/sbin
#./nessusd -D //Arrancamos el server en modo demonio o background
#cd ..
#cd bin/
#vim targets.txt //Aca usamos el editor que queramos, en mi caso el vim, para crear el archivo donde se encuentren los hosts a escanear. Adentro del archivo debemos poner el host o la IP
#./nessus -q 127.0.0.1 1241 usuariodenessus contraseñadelusuario /opt/nessus/bin/targets.txt /opt/nessus/bin/resultados.txt //El archivo targets debe ser creado si o si antes de ejecutar el cliente, le pueden poner cualquier nombre y donde quieran, siempre especifiquen la ubicacion. El archivo resultados.txt lo crea el nessus, ahi van los logs del escaneo. Donde dice usuariodenessus va el usuario que le crearon a nessus y en contraseñadelusuario, obviamente va la contraseña del usuario.


Autor: Tiger

Manual Nikto

Breve introducción:

Nikto es un scanner para servidores web realizado en Perl (obviamente tiene licencia Open Source GPL) que corre bajo linux y tiene una gran base de datos de ataques CGI y mas en 230 tipos de servidores distintos. Es utilizado tanto para seguridad como para buscar vulnerabilidades en servidores.
La version actual es la 1.36.

Más información: http://www.cirt.net/code/nikto.shtml

Manual:

*Para comenzar bajense el source, en lo posible el bz2 que viene mas comprimido:

http://www.cirt.net/nikto/nikto-1.36.tar.bz2

Aunque tambien esta el gz:

http://www.cirt.net/nikto/nikto-current.tar.gz

*Ahora si, una vez que lo bajan lo extraen y colocan la carpeta donde quieran. Entran a la carpeta y ejecutan el archivo principal nikto.pl con las opciones correspondientes. A continuación voy a proceder a describir las opciones más comunes (las que estan en negrita son obligatorias, las demas no):

NOTA: Se pueden abreviar escribiendo la primer letra de la palabra, ej: Cgidirs: -C, cookies -c, evasion -e

-Cgidirs: Scanear los directorios CGI; tienen que especificar. Las opciones que se pueden utilizar son: none (ninguno) all (todos) o alguno en especifico que quieran ustedes, ej: /cgi/

-cookies: muestra las cookies que son encontradas

-evasion: Esto habilita la deteccion de intrusiones por medio de tecnicas de evasion; se pueden utilizar las siguientes tecnicas:
1 Random URI encoding(cuando el encoding del webserver no es UTF8)
2 Add directory self-reference /./ (usar en servidores unix)
3 Premature URL ending
4 Prepend long random string to request
5 Fake parameters to files
6 TAB as request spacer instead of spaces
7 Random case sensitivity
8 Use Windows directory separator \ instead of / (usar en servidores windows)
9 Session splicing
ej: -e 8
En caso de que quieran usar mas de 1: -e 15 (usamos el 1 y el 5)


-findonly: encontrar solamente el puerto http(s) en el/los servidore/s y no realizar un scaneado completo.

-Format: guardar los logs con un formato a especificar, puede ser: html, csv o txt

-generic: forzar al scaner a realizar un scaneado completo (poco utilizado)

-host: el host a scanear

-id: autentificacion para el host, se suele utilizar asi: iddeusuario:contraseña (

-mutate: Utilizar técnicas de mutación (se recomienda utilizarlo para un mejor scaneo):
Mutation Techniques:
1 Test all files with all root directories (probar todos los archivos con todos los directorios de usuario root)
2 Guess for password file names (Adivinar contraseñas)
3 Enumerate user names via Apache (/~user type requests) (enumerar usuarios via apache)
4 Enumerate user names via cgiwrap (/cgi-bin/cgiwrap/~user type requests) (enumerar usuarios via cgiwrap)
Se utiliza como las tecnicas de evasion


-nolookup: No realizar el lookup a el servidor (poco utilizado)

-output: Para guardar en un fichero de salida (no es obiligatorio pero se recomienda)

-port: Puerto a scanear (generalmente 80)

-root: poner permisos de root a todos los pedidos, el formato es: /directorio (no es obligatorio, pero se recomienda)

-ssl: forzar modo ssl al puerto a scanear

-timeout: utilizar para especificar un timeout (cuando el tiempo de espera se agota) (por defecto es de 10 segundos)

-useproxy: utilizar la configuracion del proxy indicada en el archivo config.txt

-Version: mostrar version de la base de datos y de los plugins

-vhost: utilizar host virtual (requiere un argumento)

Opciones que no pueden ser abreviadas:

-config: seleccionar archivo de configuración

-debug: modo de debugging

-verbose: utilizar en modo verbose (RULEZ tongue)

-update: actualizar el programa (vease base de datos, plugins)



Espero que les haya gustado, aca les dejo un ejemplo de como utilizarlo:

root@undergroundfusion.net# ./nikto.pl -C all -e 2 -h www.underground-fusion.net -p 80 -m 2 -verbose



Autor: Tiger

Manual Dig

Dig es una herramienta principalmente de linux, utilizada para el envio de ordenes DNS, esta herramienta es muy util hablando de defacing, y de detectar que webs estan en un server (utilizado para mass defacement), sin mas que decir comenzemos:

El primer comando que es de los que mas destaca de los que utilizaremos es el siguiente:
Quote
BT ~ # dig ns

Este comando nos devolvera una lista de super DNS, que podremos utilizar para trabajar:

Quote
; <<>> DiG 9.3.2 <<>> ns
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 4874
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 234977 IN NS L.ROOT-SERVERS.NET.
. 234977 IN NS M.ROOT-SERVERS.NET.
. 234977 IN NS A.ROOT-SERVERS.NET.
. 234977 IN NS B.ROOT-SERVERS.NET.
. 234977 IN NS C.ROOT-SERVERS.NET.
. 234977 IN NS D.ROOT-SERVERS.NET.
. 234977 IN NS E.ROOT-SERVERS.NET.
. 234977 IN NS F.ROOT-SERVERS.NET.
. 234977 IN NS G.ROOT-SERVERS.NET.
. 234977 IN NS H.ROOT-SERVERS.NET.
. 234977 IN NS I.ROOT-SERVERS.NET.
. 234977 IN NS J.ROOT-SERVERS.NET.
. 234977 IN NS K.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
M.ROOT-SERVERS.NET. 30938 IN A 202.12.27.33
A.ROOT-SERVERS.NET. 591011 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 30938 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 39988 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 53749 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 30938 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 591011 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 53680 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 30939 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 40043 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 591011 IN A 192.58.128.30
K.ROOT-SERVERS.NET. 591011 IN A 193.0.14.129
L.ROOT-SERVERS.NET. 30938 IN A 198.32.64.12

;; Query time: 383 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:09:15 2007
;; MSG SIZE rcvd: 436


Algunas funciones de dig:

Tracer:
Quote
BT ~ # dig web.com +trace
Bueno creo que es logico lo que hace.....

Resolver DNS de una web:
Quote
BT ~ # dig web.com NS

Esto nos devuelve la lista de los servidores DNS de determinada web.

Ejemplo:
Quote
BT ~ # dig google.com NS

; <<>> DiG 9.3.2 <<>> google.com NS
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 27071
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN NS

;; ANSWER SECTION:
google.com. 64768 IN NS ns1.google.com.
google.com. 64768 IN NS ns2.google.com.
google.com. 64768 IN NS ns3.google.com.
google.com. 64768 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345450 IN A 216.239.34.10
ns3.google.com. 345450 IN A 216.239.36.10
ns4.google.com. 345450 IN A 216.239.38.10
ns1.google.com. 345450 IN A 216.239.32.10

;; Query time: 276 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:26:59 2007
;; MSG SIZE rcvd: 164

Listar Servidores de Correo de determinado dominio:

Quote
BT ~ # dig google.com MX

; <<>> DiG 9.3.2 <<>> google.com MX
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 35446
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 4237 IN MX 10 smtp1.google.com.
google.com. 4237 IN MX 10 smtp2.google.com.
google.com. 4237 IN MX 10 smtp3.google.com.
google.com. 4237 IN MX 10 smtp4.google.com.

;; ADDITIONAL SECTION:
smtp2.google.com. 1054 IN A 64.233.167.25
smtp3.google.com. 1060 IN A 64.233.183.25
smtp4.google.com. 1066 IN A 72.14.215.25
smtp1.google.com. 3329 IN A 72.14.203.25

;; Query time: 583 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:28:39 2007
;; MSG SIZE rcvd: 180

Consultar datos de un Dominio en determinado servidor DNS:

Quote
BT ~ # dig google.com @ns1.google.com

; <<>> DiG 9.3.2 <<>> google.com @ns1.google.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 34414
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 300 IN A 64.233.167.99
google.com. 300 IN A 72.14.207.99
google.com. 300 IN A 64.233.187.99

;; AUTHORITY SECTION:
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345600 IN A 216.239.32.10
ns2.google.com. 345600 IN A 216.239.34.10
ns3.google.com. 345600 IN A 216.239.36.10
ns4.google.com. 345600 IN A 216.239.38.10

;; Query time: 1124 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Tue Sep 25 20:30:38 2007
;; MSG SIZE rcvd: 212

DNS Inverso:

Quote
BT ~ # dig -x google.com

; <<>> DiG 9.3.2 <<>> -x google.com
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: FORMERR, id: 36927
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;com.google.in-addr.arpa. IN PTR

;; Query time: 3 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:35:52 2007
;; MSG SIZE rcvd: 41

Numero IP en IPv6:

Quote
BT ~ #dig google.com AAAA

; <<>> DiG 9.3.2 <<>> google.com AAAA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 21031
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN AAAA

;; AUTHORITY SECTION:
google.com. 39 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 1084 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:41:20 2007
;; MSG SIZE rcvd: 78
[/b]

otra funcion que tambien les recomiendo es la de ANY, la cual nos devuelve los servidores de correo, DNS, y varios datos mas:

Quote
BT ~ # dig google.com ANY

; <<>> DiG 9.3.2 <<>> google.com ANY
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 65404
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;google.com. IN ANY

;; ANSWER SECTION:
google.com. 181 IN A 64.233.167.99
google.com. 181 IN A 72.14.207.99
google.com. 181 IN A 64.233.187.99
google.com. 63936 IN NS ns1.google.com.
google.com. 63936 IN NS ns2.google.com.
google.com. 63936 IN NS ns3.google.com.
google.com. 63936 IN NS ns4.google.com.
google.com. 3505 IN MX 10 smtp2.google.com.
google.com. 3505 IN MX 10 smtp3.google.com.
google.com. 3505 IN MX 10 smtp4.google.com.
google.com. 3505 IN MX 10 smtp1.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345481 IN A 216.239.34.10
ns3.google.com. 345481 IN A 216.239.36.10
ns4.google.com. 345481 IN A 216.239.38.10
ns1.google.com. 345481 IN A 216.239.32.10
smtp3.google.com. 328 IN A 64.233.183.25
smtp4.google.com. 334 IN A 72.14.215.25
smtp1.google.com. 3332 IN A 72.14.203.25
smtp2.google.com. 322 IN A 64.233.167.25

;; Query time: 1243 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:40:52 2007
;; MSG SIZE rcvd: 364

Mail del responsable y otros datos del DNS:
Quote
BT ~ # dig google.com SOA

; <<>> DiG 9.3.2 <<>> google.com SOA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 52736
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN SOA

;; ANSWER SECTION:
google.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 2563 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:51:14 2007
;; MSG SIZE rcvd: 78

aqui el correo seria: dns-admin@google.com (cambiando el "." por @), el DNS primario seria: ns1.google.com, y su ultima actualizacion fue: 2007/09/17, el TTL (Time to a live) es de 300, el tiempo de espera para actualizacion de los DNS's secundarios (con respecto al primario) es de: 7200, el tiempo de reintento (cuando hay error al conectar con DNS primario) es de: 1800, y el tiempo de caducidad (el tiempo que el servidor mantendra en cache los datos sin actualizar en caso de error de actualizacion) es de: 1209600 (si no me equivoco estos datos estan en milisegundos).

otras funciones utiles:
+nocmd
+nocomments
+noquestion
+noanswer
+noauthority
+noadditional
+nostats
+noall

Su funcion es logica, y son utiles cuando queremos resumir las respuestas....Dig es una herramienta principalmente de linux, utilizada para el envio de ordenes DNS, esta herramienta es muy util hablando de defacing, y de detectar que webs estan en un server (utilizado para mass defacement), sin mas que decir comenzemos:

El primer comando que es de los que mas destaca de los que utilizaremos es el siguiente:
Quote
BT ~ # dig ns

Este comando nos devolvera una lista de super DNS, que podremos utilizar para trabajar:

Quote
; <<>> DiG 9.3.2 <<>> ns
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 4874
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 234977 IN NS L.ROOT-SERVERS.NET.
. 234977 IN NS M.ROOT-SERVERS.NET.
. 234977 IN NS A.ROOT-SERVERS.NET.
. 234977 IN NS B.ROOT-SERVERS.NET.
. 234977 IN NS C.ROOT-SERVERS.NET.
. 234977 IN NS D.ROOT-SERVERS.NET.
. 234977 IN NS E.ROOT-SERVERS.NET.
. 234977 IN NS F.ROOT-SERVERS.NET.
. 234977 IN NS G.ROOT-SERVERS.NET.
. 234977 IN NS H.ROOT-SERVERS.NET.
. 234977 IN NS I.ROOT-SERVERS.NET.
. 234977 IN NS J.ROOT-SERVERS.NET.
. 234977 IN NS K.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
M.ROOT-SERVERS.NET. 30938 IN A 202.12.27.33
A.ROOT-SERVERS.NET. 591011 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 30938 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 39988 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 53749 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 30938 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 591011 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 53680 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 30939 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 40043 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 591011 IN A 192.58.128.30
K.ROOT-SERVERS.NET. 591011 IN A 193.0.14.129
L.ROOT-SERVERS.NET. 30938 IN A 198.32.64.12

;; Query time: 383 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:09:15 2007
;; MSG SIZE rcvd: 436


Algunas funciones de dig:

Tracer:
Quote
BT ~ # dig web.com +trace
Bueno creo que es logico lo que hace.....

Resolver DNS de una web:
Quote
BT ~ # dig web.com NS

Esto nos devuelve la lista de los servidores DNS de determinada web.

Ejemplo:
Quote
BT ~ # dig google.com NS

; <<>> DiG 9.3.2 <<>> google.com NS
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 27071
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN NS

;; ANSWER SECTION:
google.com. 64768 IN NS ns1.google.com.
google.com. 64768 IN NS ns2.google.com.
google.com. 64768 IN NS ns3.google.com.
google.com. 64768 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345450 IN A 216.239.34.10
ns3.google.com. 345450 IN A 216.239.36.10
ns4.google.com. 345450 IN A 216.239.38.10
ns1.google.com. 345450 IN A 216.239.32.10

;; Query time: 276 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:26:59 2007
;; MSG SIZE rcvd: 164

Listar Servidores de Correo de determinado dominio:

Quote
BT ~ # dig google.com MX

; <<>> DiG 9.3.2 <<>> google.com MX
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 35446
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 4237 IN MX 10 smtp1.google.com.
google.com. 4237 IN MX 10 smtp2.google.com.
google.com. 4237 IN MX 10 smtp3.google.com.
google.com. 4237 IN MX 10 smtp4.google.com.

;; ADDITIONAL SECTION:
smtp2.google.com. 1054 IN A 64.233.167.25
smtp3.google.com. 1060 IN A 64.233.183.25
smtp4.google.com. 1066 IN A 72.14.215.25
smtp1.google.com. 3329 IN A 72.14.203.25

;; Query time: 583 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:28:39 2007
;; MSG SIZE rcvd: 180

Consultar datos de un Dominio en determinado servidor DNS:

Quote
BT ~ # dig google.com @ns1.google.com

; <<>> DiG 9.3.2 <<>> google.com @ns1.google.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 34414
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 300 IN A 64.233.167.99
google.com. 300 IN A 72.14.207.99
google.com. 300 IN A 64.233.187.99

;; AUTHORITY SECTION:
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345600 IN A 216.239.32.10
ns2.google.com. 345600 IN A 216.239.34.10
ns3.google.com. 345600 IN A 216.239.36.10
ns4.google.com. 345600 IN A 216.239.38.10

;; Query time: 1124 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Tue Sep 25 20:30:38 2007
;; MSG SIZE rcvd: 212

DNS Inverso:

Quote
BT ~ # dig -x google.com

; <<>> DiG 9.3.2 <<>> -x google.com
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: FORMERR, id: 36927
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;com.google.in-addr.arpa. IN PTR

;; Query time: 3 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:35:52 2007
;; MSG SIZE rcvd: 41

Numero IP en IPv6:

Quote
BT ~ #dig google.com AAAA

; <<>> DiG 9.3.2 <<>> google.com AAAA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 21031
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN AAAA

;; AUTHORITY SECTION:
google.com. 39 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 1084 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:41:20 2007
;; MSG SIZE rcvd: 78
[/b]

otra funcion que tambien les recomiendo es la de ANY, la cual nos devuelve los servidores de correo, DNS, y varios datos mas:

Quote
BT ~ # dig google.com ANY

; <<>> DiG 9.3.2 <<>> google.com ANY
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 65404
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;google.com. IN ANY

;; ANSWER SECTION:
google.com. 181 IN A 64.233.167.99
google.com. 181 IN A 72.14.207.99
google.com. 181 IN A 64.233.187.99
google.com. 63936 IN NS ns1.google.com.
google.com. 63936 IN NS ns2.google.com.
google.com. 63936 IN NS ns3.google.com.
google.com. 63936 IN NS ns4.google.com.
google.com. 3505 IN MX 10 smtp2.google.com.
google.com. 3505 IN MX 10 smtp3.google.com.
google.com. 3505 IN MX 10 smtp4.google.com.
google.com. 3505 IN MX 10 smtp1.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345481 IN A 216.239.34.10
ns3.google.com. 345481 IN A 216.239.36.10
ns4.google.com. 345481 IN A 216.239.38.10
ns1.google.com. 345481 IN A 216.239.32.10
smtp3.google.com. 328 IN A 64.233.183.25
smtp4.google.com. 334 IN A 72.14.215.25
smtp1.google.com. 3332 IN A 72.14.203.25
smtp2.google.com. 322 IN A 64.233.167.25

;; Query time: 1243 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:40:52 2007
;; MSG SIZE rcvd: 364

Mail del responsable y otros datos del DNS:
Quote
BT ~ # dig google.com SOA

; <<>> DiG 9.3.2 <<>> google.com SOA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 52736
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN SOA

;; ANSWER SECTION:
google.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 2563 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:51:14 2007
;; MSG SIZE rcvd: 78

aqui el correo seria: dns-admin@google.com (cambiando el "." por @), el DNS primario seria: ns1.google.com, y su ultima actualizacion fue: 2007/09/17, el TTL (Time to a live) es de 300, el tiempo de espera para actualizacion de los DNS's secundarios (con respecto al primario) es de: 7200, el tiempo de reintento (cuando hay error al conectar con DNS primario) es de: 1800, y el tiempo de caducidad (el tiempo que el servidor mantendra en cache los datos sin actualizar en caso de error de actualizacion) es de: 1209600 (si no me equivoco estos datos estan en milisegundos).

otras funciones utiles:
+nocmd
+nocomments
+noquestion
+noanswer
+noauthority
+noadditional
+nostats
+noall

Su funcion es logica, y son utiles cuando queremos resumir las respuestas....Dig es una herramienta principalmente de linux, utilizada para el envio de ordenes DNS, esta herramienta es muy util hablando de defacing, y de detectar que webs estan en un server (utilizado para mass defacement), sin mas que decir comenzemos:

El primer comando que es de los que mas destaca de los que utilizaremos es el siguiente:
Quote
BT ~ # dig ns

Este comando nos devolvera una lista de super DNS, que podremos utilizar para trabajar:

Quote
; <<>> DiG 9.3.2 <<>> ns
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 4874
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 234977 IN NS L.ROOT-SERVERS.NET.
. 234977 IN NS M.ROOT-SERVERS.NET.
. 234977 IN NS A.ROOT-SERVERS.NET.
. 234977 IN NS B.ROOT-SERVERS.NET.
. 234977 IN NS C.ROOT-SERVERS.NET.
. 234977 IN NS D.ROOT-SERVERS.NET.
. 234977 IN NS E.ROOT-SERVERS.NET.
. 234977 IN NS F.ROOT-SERVERS.NET.
. 234977 IN NS G.ROOT-SERVERS.NET.
. 234977 IN NS H.ROOT-SERVERS.NET.
. 234977 IN NS I.ROOT-SERVERS.NET.
. 234977 IN NS J.ROOT-SERVERS.NET.
. 234977 IN NS K.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
M.ROOT-SERVERS.NET. 30938 IN A 202.12.27.33
A.ROOT-SERVERS.NET. 591011 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 30938 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 39988 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 53749 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 30938 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 591011 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 53680 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 30939 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 40043 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 591011 IN A 192.58.128.30
K.ROOT-SERVERS.NET. 591011 IN A 193.0.14.129
L.ROOT-SERVERS.NET. 30938 IN A 198.32.64.12

;; Query time: 383 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:09:15 2007
;; MSG SIZE rcvd: 436


Algunas funciones de dig:

Tracer:
Quote
BT ~ # dig web.com +trace
Bueno creo que es logico lo que hace.....

Resolver DNS de una web:
Quote
BT ~ # dig web.com NS

Esto nos devuelve la lista de los servidores DNS de determinada web.

Ejemplo:
Quote
BT ~ # dig google.com NS

; <<>> DiG 9.3.2 <<>> google.com NS
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 27071
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN NS

;; ANSWER SECTION:
google.com. 64768 IN NS ns1.google.com.
google.com. 64768 IN NS ns2.google.com.
google.com. 64768 IN NS ns3.google.com.
google.com. 64768 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345450 IN A 216.239.34.10
ns3.google.com. 345450 IN A 216.239.36.10
ns4.google.com. 345450 IN A 216.239.38.10
ns1.google.com. 345450 IN A 216.239.32.10

;; Query time: 276 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:26:59 2007
;; MSG SIZE rcvd: 164

Listar Servidores de Correo de determinado dominio:

Quote
BT ~ # dig google.com MX

; <<>> DiG 9.3.2 <<>> google.com MX
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 35446
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 4237 IN MX 10 smtp1.google.com.
google.com. 4237 IN MX 10 smtp2.google.com.
google.com. 4237 IN MX 10 smtp3.google.com.
google.com. 4237 IN MX 10 smtp4.google.com.

;; ADDITIONAL SECTION:
smtp2.google.com. 1054 IN A 64.233.167.25
smtp3.google.com. 1060 IN A 64.233.183.25
smtp4.google.com. 1066 IN A 72.14.215.25
smtp1.google.com. 3329 IN A 72.14.203.25

;; Query time: 583 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:28:39 2007
;; MSG SIZE rcvd: 180

Consultar datos de un Dominio en determinado servidor DNS:

Quote
BT ~ # dig google.com @ns1.google.com

; <<>> DiG 9.3.2 <<>> google.com @ns1.google.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 34414
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 300 IN A 64.233.167.99
google.com. 300 IN A 72.14.207.99
google.com. 300 IN A 64.233.187.99

;; AUTHORITY SECTION:
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345600 IN A 216.239.32.10
ns2.google.com. 345600 IN A 216.239.34.10
ns3.google.com. 345600 IN A 216.239.36.10
ns4.google.com. 345600 IN A 216.239.38.10

;; Query time: 1124 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Tue Sep 25 20:30:38 2007
;; MSG SIZE rcvd: 212

DNS Inverso:

Quote
BT ~ # dig -x google.com

; <<>> DiG 9.3.2 <<>> -x google.com
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: FORMERR, id: 36927
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;com.google.in-addr.arpa. IN PTR

;; Query time: 3 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:35:52 2007
;; MSG SIZE rcvd: 41

Numero IP en IPv6:

Quote
BT ~ #dig google.com AAAA

; <<>> DiG 9.3.2 <<>> google.com AAAA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 21031
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN AAAA

;; AUTHORITY SECTION:
google.com. 39 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 1084 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:41:20 2007
;; MSG SIZE rcvd: 78
[/b]

otra funcion que tambien les recomiendo es la de ANY, la cual nos devuelve los servidores de correo, DNS, y varios datos mas:

Quote
BT ~ # dig google.com ANY

; <<>> DiG 9.3.2 <<>> google.com ANY
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 65404
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;google.com. IN ANY

;; ANSWER SECTION:
google.com. 181 IN A 64.233.167.99
google.com. 181 IN A 72.14.207.99
google.com. 181 IN A 64.233.187.99
google.com. 63936 IN NS ns1.google.com.
google.com. 63936 IN NS ns2.google.com.
google.com. 63936 IN NS ns3.google.com.
google.com. 63936 IN NS ns4.google.com.
google.com. 3505 IN MX 10 smtp2.google.com.
google.com. 3505 IN MX 10 smtp3.google.com.
google.com. 3505 IN MX 10 smtp4.google.com.
google.com. 3505 IN MX 10 smtp1.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345481 IN A 216.239.34.10
ns3.google.com. 345481 IN A 216.239.36.10
ns4.google.com. 345481 IN A 216.239.38.10
ns1.google.com. 345481 IN A 216.239.32.10
smtp3.google.com. 328 IN A 64.233.183.25
smtp4.google.com. 334 IN A 72.14.215.25
smtp1.google.com. 3332 IN A 72.14.203.25
smtp2.google.com. 322 IN A 64.233.167.25

;; Query time: 1243 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:40:52 2007
;; MSG SIZE rcvd: 364

Mail del responsable y otros datos del DNS:
Quote
BT ~ # dig google.com SOA

; <<>> DiG 9.3.2 <<>> google.com SOA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 52736
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN SOA

;; ANSWER SECTION:
google.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 2563 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:51:14 2007
;; MSG SIZE rcvd: 78

aqui el correo seria: dns-admin@google.com (cambiando el "." por @), el DNS primario seria: ns1.google.com, y su ultima actualizacion fue: 2007/09/17, el TTL (Time to a live) es de 300, el tiempo de espera para actualizacion de los DNS's secundarios (con respecto al primario) es de: 7200, el tiempo de reintento (cuando hay error al conectar con DNS primario) es de: 1800, y el tiempo de caducidad (el tiempo que el servidor mantendra en cache los datos sin actualizar en caso de error de actualizacion) es de: 1209600 (si no me equivoco estos datos estan en milisegundos).

otras funciones utiles:
+nocmd
+nocomments
+noquestion
+noanswer
+noauthority
+noadditional
+nostats
+noall

Su funcion es logica, y son utiles cuando queremos resumir las respuestas....Dig es una herramienta principalmente de linux, utilizada para el envio de ordenes DNS, esta herramienta es muy util hablando de defacing, y de detectar que webs estan en un server (utilizado para mass defacement), sin mas que decir comenzemos:

El primer comando que es de los que mas destaca de los que utilizaremos es el siguiente:
Quote
BT ~ # dig ns

Este comando nos devolvera una lista de super DNS, que podremos utilizar para trabajar:

Quote
; <<>> DiG 9.3.2 <<>> ns
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 4874
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 234977 IN NS L.ROOT-SERVERS.NET.
. 234977 IN NS M.ROOT-SERVERS.NET.
. 234977 IN NS A.ROOT-SERVERS.NET.
. 234977 IN NS B.ROOT-SERVERS.NET.
. 234977 IN NS C.ROOT-SERVERS.NET.
. 234977 IN NS D.ROOT-SERVERS.NET.
. 234977 IN NS E.ROOT-SERVERS.NET.
. 234977 IN NS F.ROOT-SERVERS.NET.
. 234977 IN NS G.ROOT-SERVERS.NET.
. 234977 IN NS H.ROOT-SERVERS.NET.
. 234977 IN NS I.ROOT-SERVERS.NET.
. 234977 IN NS J.ROOT-SERVERS.NET.
. 234977 IN NS K.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
M.ROOT-SERVERS.NET. 30938 IN A 202.12.27.33
A.ROOT-SERVERS.NET. 591011 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 30938 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 39988 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 53749 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 30938 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 591011 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 53680 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 30939 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 40043 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 591011 IN A 192.58.128.30
K.ROOT-SERVERS.NET. 591011 IN A 193.0.14.129
L.ROOT-SERVERS.NET. 30938 IN A 198.32.64.12

;; Query time: 383 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:09:15 2007
;; MSG SIZE rcvd: 436


Algunas funciones de dig:

Tracer:
Quote
BT ~ # dig web.com +trace
Bueno creo que es logico lo que hace.....

Resolver DNS de una web:
Quote
BT ~ # dig web.com NS

Esto nos devuelve la lista de los servidores DNS de determinada web.

Ejemplo:
Quote
BT ~ # dig google.com NS

; <<>> DiG 9.3.2 <<>> google.com NS
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 27071
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN NS

;; ANSWER SECTION:
google.com. 64768 IN NS ns1.google.com.
google.com. 64768 IN NS ns2.google.com.
google.com. 64768 IN NS ns3.google.com.
google.com. 64768 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345450 IN A 216.239.34.10
ns3.google.com. 345450 IN A 216.239.36.10
ns4.google.com. 345450 IN A 216.239.38.10
ns1.google.com. 345450 IN A 216.239.32.10

;; Query time: 276 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:26:59 2007
;; MSG SIZE rcvd: 164

Listar Servidores de Correo de determinado dominio:

Quote
BT ~ # dig google.com MX

; <<>> DiG 9.3.2 <<>> google.com MX
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 35446
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN MX

;; ANSWER SECTION:
google.com. 4237 IN MX 10 smtp1.google.com.
google.com. 4237 IN MX 10 smtp2.google.com.
google.com. 4237 IN MX 10 smtp3.google.com.
google.com. 4237 IN MX 10 smtp4.google.com.

;; ADDITIONAL SECTION:
smtp2.google.com. 1054 IN A 64.233.167.25
smtp3.google.com. 1060 IN A 64.233.183.25
smtp4.google.com. 1066 IN A 72.14.215.25
smtp1.google.com. 3329 IN A 72.14.203.25

;; Query time: 583 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:28:39 2007
;; MSG SIZE rcvd: 180

Consultar datos de un Dominio en determinado servidor DNS:

Quote
BT ~ # dig google.com @ns1.google.com

; <<>> DiG 9.3.2 <<>> google.com @ns1.google.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 34414
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 300 IN A 64.233.167.99
google.com. 300 IN A 72.14.207.99
google.com. 300 IN A 64.233.187.99

;; AUTHORITY SECTION:
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 345600 IN A 216.239.32.10
ns2.google.com. 345600 IN A 216.239.34.10
ns3.google.com. 345600 IN A 216.239.36.10
ns4.google.com. 345600 IN A 216.239.38.10

;; Query time: 1124 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Tue Sep 25 20:30:38 2007
;; MSG SIZE rcvd: 212

DNS Inverso:

Quote
BT ~ # dig -x google.com

; <<>> DiG 9.3.2 <<>> -x google.com
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: FORMERR, id: 36927
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;com.google.in-addr.arpa. IN PTR

;; Query time: 3 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:35:52 2007
;; MSG SIZE rcvd: 41

Numero IP en IPv6:

Quote
BT ~ #dig google.com AAAA

; <<>> DiG 9.3.2 <<>> google.com AAAA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 21031
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN AAAA

;; AUTHORITY SECTION:
google.com. 39 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 1084 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:41:20 2007
;; MSG SIZE rcvd: 78
[/b]

otra funcion que tambien les recomiendo es la de ANY, la cual nos devuelve los servidores de correo, DNS, y varios datos mas:

Quote
BT ~ # dig google.com ANY

; <<>> DiG 9.3.2 <<>> google.com ANY
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 65404
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;google.com. IN ANY

;; ANSWER SECTION:
google.com. 181 IN A 64.233.167.99
google.com. 181 IN A 72.14.207.99
google.com. 181 IN A 64.233.187.99
google.com. 63936 IN NS ns1.google.com.
google.com. 63936 IN NS ns2.google.com.
google.com. 63936 IN NS ns3.google.com.
google.com. 63936 IN NS ns4.google.com.
google.com. 3505 IN MX 10 smtp2.google.com.
google.com. 3505 IN MX 10 smtp3.google.com.
google.com. 3505 IN MX 10 smtp4.google.com.
google.com. 3505 IN MX 10 smtp1.google.com.

;; ADDITIONAL SECTION:
ns2.google.com. 345481 IN A 216.239.34.10
ns3.google.com. 345481 IN A 216.239.36.10
ns4.google.com. 345481 IN A 216.239.38.10
ns1.google.com. 345481 IN A 216.239.32.10
smtp3.google.com. 328 IN A 64.233.183.25
smtp4.google.com. 334 IN A 72.14.215.25
smtp1.google.com. 3332 IN A 72.14.203.25
smtp2.google.com. 322 IN A 64.233.167.25

;; Query time: 1243 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:40:52 2007
;; MSG SIZE rcvd: 364

Mail del responsable y otros datos del DNS:
Quote
BT ~ # dig google.com SOA

; <<>> DiG 9.3.2 <<>> google.com SOA
;; global options: printcmd
;; Got answer:
;; Flecha>HEADER<<- opcode: QUERY, status: NOERROR, id: 52736
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN SOA

;; ANSWER SECTION:
google.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. 2007091701 7200 1800 1209600 300

;; Query time: 2563 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue Sep 25 20:51:14 2007
;; MSG SIZE rcvd: 78

aqui el correo seria: dns-admin@google.com (cambiando el "." por @), el DNS primario seria: ns1.google.com, y su ultima actualizacion fue: 2007/09/17, el TTL (Time to a live) es de 300, el tiempo de espera para actualizacion de los DNS's secundarios (con respecto al primario) es de: 7200, el tiempo de reintento (cuando hay error al conectar con DNS primario) es de: 1800, y el tiempo de caducidad (el tiempo que el servidor mantendra en cache los datos sin actualizar en caso de error de actualizacion) es de: 1209600 (si no me equivoco estos datos estan en milisegundos).

otras funciones utiles:
+nocmd
+nocomments
+noquestion
+noanswer
+noauthority
+noadditional
+nostats
+noall

Su funcion es logica, y son utiles cuando queremos resumir las respuestas....


Autor: Thera Hack

Manual Hping

Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping host [options]
-h --help show this help
-v --version show version
-c --count packet count
-i --interval wait (uX for X microseconds, for example -i u1000)
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output
-q --quiet quiet
-I --interface interface name (otherwise default routing interface)
-V --verbose verbose mode
-D --debug debugging info
-z --bind bind ctrl+z to ttl (default to dst port)
-Z --unbind unbind ctrl+z
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
IP
-a --spoof spoof source address
--rand-dest random destionation address mode. see the man.
--rand-source random source address mode. see the man.
-t --ttl ttl (default 64)
-N --id id (default random)
-W --winid use win* id byte ordering
-r --rel relativize id field (to estimate host traffic)
-f --frag split packets in more frag. (may pass weak acl)
-x --morefrag set more fragments flag
-y --dontfrag set dont fragment flag
-g --fragoff set the fragment offset
-m --mtu set virtual mtu, implies --frag if packet size > mtu
-o --tos type of service (default 0x00), try --tos help
-G --rroute includes RECORD_ROUTE option and display the route buffer
--lsrr loose source routing and record route
--ssrr strict source routing and record route
-H --ipproto set the IP protocol field, only in RAW IP mode
ICMP
-C --icmptype icmp type (default echo request)
-K --icmpcode icmp code (default 0)
--force-icmp send all icmp types (default send only supported types)
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
--icmp-help display help for others icmp options
UDP/TCP
-s --baseport base source port (default random)
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec
-k --keep keep still source port
-w --win winsize (default 64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
-Q --seqnum shows only tcp sequence number
-b --badcksum (try to) send packets with a bad IP checksum
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
Common
-d --data data size (default is 0)
-E --file data from file
-e --sign add 'signature'
-j --dump dump packets in hex
-J --print dump printable characters
-B --safe enable 'safe' protocol
-u --end tell you when --file reached EOF and prevent rewind
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg


Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:

0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:

-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:

-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)


Solo queda probar tongue, asi incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad cheesy....Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping host [options]
-h --help show this help
-v --version show version
-c --count packet count
-i --interval wait (uX for X microseconds, for example -i u1000)
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output
-q --quiet quiet
-I --interface interface name (otherwise default routing interface)
-V --verbose verbose mode
-D --debug debugging info
-z --bind bind ctrl+z to ttl (default to dst port)
-Z --unbind unbind ctrl+z
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
IP
-a --spoof spoof source address
--rand-dest random destionation address mode. see the man.
--rand-source random source address mode. see the man.
-t --ttl ttl (default 64)
-N --id id (default random)
-W --winid use win* id byte ordering
-r --rel relativize id field (to estimate host traffic)
-f --frag split packets in more frag. (may pass weak acl)
-x --morefrag set more fragments flag
-y --dontfrag set dont fragment flag
-g --fragoff set the fragment offset
-m --mtu set virtual mtu, implies --frag if packet size > mtu
-o --tos type of service (default 0x00), try --tos help
-G --rroute includes RECORD_ROUTE option and display the route buffer
--lsrr loose source routing and record route
--ssrr strict source routing and record route
-H --ipproto set the IP protocol field, only in RAW IP mode
ICMP
-C --icmptype icmp type (default echo request)
-K --icmpcode icmp code (default 0)
--force-icmp send all icmp types (default send only supported types)
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
--icmp-help display help for others icmp options
UDP/TCP
-s --baseport base source port (default random)
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec
-k --keep keep still source port
-w --win winsize (default 64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
-Q --seqnum shows only tcp sequence number
-b --badcksum (try to) send packets with a bad IP checksum
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
Common
-d --data data size (default is 0)
-E --file data from file
-e --sign add 'signature'
-j --dump dump packets in hex
-J --print dump printable characters
-B --safe enable 'safe' protocol
-u --end tell you when --file reached EOF and prevent rewind
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg


Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:

0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:

-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:

-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)


Solo queda probar tongue, asi incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad cheesy....Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping host [options]
-h --help show this help
-v --version show version
-c --count packet count
-i --interval wait (uX for X microseconds, for example -i u1000)
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output
-q --quiet quiet
-I --interface interface name (otherwise default routing interface)
-V --verbose verbose mode
-D --debug debugging info
-z --bind bind ctrl+z to ttl (default to dst port)
-Z --unbind unbind ctrl+z
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
IP
-a --spoof spoof source address
--rand-dest random destionation address mode. see the man.
--rand-source random source address mode. see the man.
-t --ttl ttl (default 64)
-N --id id (default random)
-W --winid use win* id byte ordering
-r --rel relativize id field (to estimate host traffic)
-f --frag split packets in more frag. (may pass weak acl)
-x --morefrag set more fragments flag
-y --dontfrag set dont fragment flag
-g --fragoff set the fragment offset
-m --mtu set virtual mtu, implies --frag if packet size > mtu
-o --tos type of service (default 0x00), try --tos help
-G --rroute includes RECORD_ROUTE option and display the route buffer
--lsrr loose source routing and record route
--ssrr strict source routing and record route
-H --ipproto set the IP protocol field, only in RAW IP mode
ICMP
-C --icmptype icmp type (default echo request)
-K --icmpcode icmp code (default 0)
--force-icmp send all icmp types (default send only supported types)
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
--icmp-help display help for others icmp options
UDP/TCP
-s --baseport base source port (default random)
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec
-k --keep keep still source port
-w --win winsize (default 64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
-Q --seqnum shows only tcp sequence number
-b --badcksum (try to) send packets with a bad IP checksum
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
Common
-d --data data size (default is 0)
-E --file data from file
-e --sign add 'signature'
-j --dump dump packets in hex
-J --print dump printable characters
-B --safe enable 'safe' protocol
-u --end tell you when --file reached EOF and prevent rewind
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg


Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:

0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:

-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:

-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)


Solo queda probar tongue, asi incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad cheesy....Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping host [options]
-h --help show this help
-v --version show version
-c --count packet count
-i --interval wait (uX for X microseconds, for example -i u1000)
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output
-q --quiet quiet
-I --interface interface name (otherwise default routing interface)
-V --verbose verbose mode
-D --debug debugging info
-z --bind bind ctrl+z to ttl (default to dst port)
-Z --unbind unbind ctrl+z
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
IP
-a --spoof spoof source address
--rand-dest random destionation address mode. see the man.
--rand-source random source address mode. see the man.
-t --ttl ttl (default 64)
-N --id id (default random)
-W --winid use win* id byte ordering
-r --rel relativize id field (to estimate host traffic)
-f --frag split packets in more frag. (may pass weak acl)
-x --morefrag set more fragments flag
-y --dontfrag set dont fragment flag
-g --fragoff set the fragment offset
-m --mtu set virtual mtu, implies --frag if packet size > mtu
-o --tos type of service (default 0x00), try --tos help
-G --rroute includes RECORD_ROUTE option and display the route buffer
--lsrr loose source routing and record route
--ssrr strict source routing and record route
-H --ipproto set the IP protocol field, only in RAW IP mode
ICMP
-C --icmptype icmp type (default echo request)
-K --icmpcode icmp code (default 0)
--force-icmp send all icmp types (default send only supported types)
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
--icmp-help display help for others icmp options
UDP/TCP
-s --baseport base source port (default random)
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec
-k --keep keep still source port
-w --win winsize (default 64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
-Q --seqnum shows only tcp sequence number
-b --badcksum (try to) send packets with a bad IP checksum
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
Common
-d --data data size (default is 0)
-E --file data from file
-e --sign add 'signature'
-j --dump dump packets in hex
-J --print dump printable characters
-B --safe enable 'safe' protocol
-u --end tell you when --file reached EOF and prevent rewind
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg


Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:

0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:

-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:

-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)


Solo queda probar tongue, asi incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad cheesy....Hping es una exelente herramienta de tipo generador de paquetes TCP, UDP, ICMP, etc. Que nos Permite hacer inumerables cosas, entre ellas, testear firewalls, scanner de puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso D.o.Seador, Hping2 es una utilidad principalmente creada para auditar redes, y realmente cumple su cometido y mas jajaja.....

Se me ocurrio hacer este manual para subir un poco el nivel de conocimientos de los usuarios, existe Hping2 para windows y linux, pero prefiero mil veces el de linux (por velocidad y eficiencia), asi que este manual estara sobre linux:

para comenzar el comando hping -h nos devuelve la lista de comandos (opciones):

Code:
usage: hping host [options]
-h --help show this help
-v --version show version
-c --count packet count
-i --interval wait (uX for X microseconds, for example -i u1000)
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output
-q --quiet quiet
-I --interface interface name (otherwise default routing interface)
-V --verbose verbose mode
-D --debug debugging info
-z --bind bind ctrl+z to ttl (default to dst port)
-Z --unbind unbind ctrl+z
Mode
default mode TCP
-0 --rawip RAW IP mode
-1 --icmp ICMP mode
-2 --udp UDP mode
-8 --scan SCAN mode.
Example: hping --scan 1-30,70-90 -S www.target.host
-9 --listen listen mode
IP
-a --spoof spoof source address
--rand-dest random destionation address mode. see the man.
--rand-source random source address mode. see the man.
-t --ttl ttl (default 64)
-N --id id (default random)
-W --winid use win* id byte ordering
-r --rel relativize id field (to estimate host traffic)
-f --frag split packets in more frag. (may pass weak acl)
-x --morefrag set more fragments flag
-y --dontfrag set dont fragment flag
-g --fragoff set the fragment offset
-m --mtu set virtual mtu, implies --frag if packet size > mtu
-o --tos type of service (default 0x00), try --tos help
-G --rroute includes RECORD_ROUTE option and display the route buffer
--lsrr loose source routing and record route
--ssrr strict source routing and record route
-H --ipproto set the IP protocol field, only in RAW IP mode
ICMP
-C --icmptype icmp type (default echo request)
-K --icmpcode icmp code (default 0)
--force-icmp send all icmp types (default send only supported types)
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0)
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp)
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask)
--icmp-help display help for others icmp options
UDP/TCP
-s --baseport base source port (default random)
-p --destport [+][+] destination port(default 0) ctrl+z inc/dec
-k --keep keep still source port
-w --win winsize (default 64)
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)
-Q --seqnum shows only tcp sequence number
-b --badcksum (try to) send packets with a bad IP checksum
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime
Common
-d --data data size (default is 0)
-E --file data from file
-e --sign add 'signature'
-j --dump dump packets in hex
-J --print dump printable characters
-B --safe enable 'safe' protocol
-u --end tell you when --file reached EOF and prevent rewind
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

como podran leer el uso de la herramienta es hping ip_o_host y la(s) opciones a utilizar.

Primero que nada explicare que es un flag, aunque los que hayan leeido sobre protocolos no sera ninguna novedad....

Un flag es una especie de comando, que se incluye en paquetes, que especifica acciones, por ejemplo, preguntar si podemos conectar (sincronizar), contestar que esta abierto determinado puerto, comenzar conexion, terminar conexion e incluso enviar datos y especificar la importancia de dichos datos, cave recalcar que dichos flags o banderas.

En TCP todo esta manejado por paquetes, asi que les recomiendo que vean el siguiente video tutorial que encontre en youtube:

http://www.youtube.com/watch?v=muh9u_F5oeg


Algo Basico pero igual sirve para entender la teoria de como funciona esto....
ahora enumeremos los principales flags (banderas) TCP:

SYN: Le dice al servidor a conectar que intentamos conectar o sincronizar.
ACK: es una cofirmacion de que los datos anteriores llegaron correctamente.
FIN: Le dice al servidor que queremos cerrar una conexion.
Null: un flag de valor nulo (0) o sea que es un paquete al que se le ah eliminado todos los flags, este paquete es enviado con el fin de optener un RST ACK o un SYN ACK.
RST: Significa Reset, o sea que reinicie la conexion por que ubo algun error, que estan filtrados los flags o que esta cerrado el puerto.
PSH: Cuando deseamos enviar una cantidad de información grande dividida en paquetes, éstos se van
situando en un buffer de transmisión FIFO (First In First Out) hasta que el último de ellos está preparado.
Este último paquete tiene activado el flag push e indica que se debe vaciar el buffer y comenzar el envío
de paquetes.
URG: significa urgente y quiere decir que enviamos un paquete con datos urgentes, tambien se pueden usar punteros para enviar datos urgentes con normales.

Espero ando que no se me aya pasado nada, continuamos:

ICMP (Internet Control Message Protocol) es un protocolo bastante simple que está orientado a fines
informativos o de control de errores.

Mensaje ICMP:

0=echo reply
3=destination unreachable
4=source quench
5=redirect
8=echo
11=time exceeded
12=parameter problem
13=timestamp
14=timestamp reply
15=information request
16=information reply
Supongo que se entiende no?...

Continuamos:

Para hacer mas entendible el tema vamos a la practica:

Para comenzar utilizaremos a hping2 como un scanner de puertos basado en flags, esto es algo avanzado y laborioso pero optenemos exelentes resultados cheesy....

En este ejemplo utilizare el hping2 el cual es la version mas resiente (o la mas resiente que encontre xD).

Quote
BT ~ # hping2 -c 1 -S -p 80 google.com
HPING google.com (eth0 64.233.187.99): S set, 40 headers + 0 data bytes
len=46 ip=64.233.187.99 ttl=241 id=30495 sport=80 flags=SA seq=0 win=8190 rtt=128.4 ms

Vamos por partes:

-c 1: cuenta los paquetes.
-S: especifica que utilizaremos paquetes con flags SYN.
-p 80: especifica el puerto en este caso 80 (HTTP).
Ahora la respuesta:
ip=64.233.187.99: es la io que resolvio hping2.
ttl=241: Time to Alive.
sport=80: el puerto.
flags=SA: Esto es lo que nos interesa, SA significa que envio un paquete con los flags SYN y ACK, lo cual quiere decir, que nuestro paquete llego correctamente y que el puerto esta abierto cheesy.
Ahora un ejemplo de puerto cerrado:
Quote
BT ~ # hping2 -c 1 -S -p 20 192.168.1.254
HPING 192.168.1.254 (eth0 192.168.1.254): S set, 40 headers + 0 data bytes
len=51 ip=192.168.1.254 ttl=255 DF id=55848 sport=20 flags=RA seq=0 win=0 rtt=0.6 ms

--- 192.168.1.254 hping statistic ---
1 packets tramitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.6/0.6 ms
Ahora como podremos darnos cuenta aqui cambio el flag:
flags=RA
En este caso resivimos RST y ACK o sea que el puerto esta cerrado...

Ahora vamos por un puerto filtrado:
En este caso es simple, por que no resiviremos respuesta jajajaja.

Ahora cabe especificar que no solo podemos utilizar el flag SYN para esto, lo cual es muy util, ya que algunas flags, estan filtradas por el firewall, router, o incluso una configuracion del iptables en un entorno linux, por lo cual estan otras opciones:

-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)


Solo queda probar tongue, asi incluso podemos saltar algunas protecciones de firewalls, routers, o configuraciones de seguridad cheesy....

Segunda parte, en base a que la parte 1 no estubo muy bien aclarada, aqui la acompleto xD.

Tipo de Scanneos:
ACK: Este es utilizado para saber si el server esta detras de un firewall, o si el puerto(s), estan filtrados.
Si obtenemos un ACK el puerto esta abierto o cerrado, y si no resivimos respuesta el puerto esta filtrado (probablemente detras de un firewall).
SYN: este es utilizado para detectar si un puerto esta abierto o cerrado.
FIN: este sirve para detectar puertos abiertos entre otras cosas, si resivimos un RS ACK, esta cerrado el puerto, si no recivimos nada, es que el puerto esta filtrado o como dije arriba detras de un firewall, router, modem, etc, que estorban el envio del paquete.
otra clase de scanneos es el que no lleba ningun flag, tambien es bastante efectivo, y tambien el scanneo mediante todos los flags, que a mi pareser es el menos efectivo, ya que rara vez responden el paquete...

Scanneo de Puertos multiples:

la sintaxis es simple:
Quote
BT ~ # hping2 -l eth0 -S xxx.xxx.xxx.xxx -p ++80
es basicamente la sintaxis de los anteriores scanneres solo que al numero de puerto se le agregan los simbolos "++" antes del numero, ademas como podran observar aqui le especifique el adaptador de red a utilizar (es descartable esto).

Otra forma de scanneo multiple:

Quote
BT ~ # hping2 -V -8 '20-80' -S xxx.xxx.xxx.xx
Este tipo de scanneo es por medio de rangos de puertos, en esta forma utilize el -V (modo verboso), -8 (el modo de scanner, tambien es remplazable por --scan, y utilizo el flag SYN para scannear, que como ya dije arriba se puede cambiar por los otros tipos de scanneo (dependiendo de lo que queremos hacer).


Autor: Thera Hack