[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
bom galera aqui uma source muito boa para analisar conexao reversa em malware, voce aponta o servidor de dns para localhost e depois roda esse meu programa ele vai capturar as consultas de dns e armazenar em um arquivo de texto (porem ele nao faz a pesquisa dns retornando nenhuma resposta)
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
bom galera aqui uma source muito boa para analisar conexao reversa em malware, voce aponta o servidor de dns para localhost e depois roda esse meu programa ele vai capturar as consultas de dns e armazenar em um arquivo de texto (porem ele nao faz a pesquisa dns retornando nenhuma resposta)
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
- Código:
/**
coder: kõdo no kami
forum: endoffile.umforum.net
contato: www.facebook.com/hacker.fts315
**/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock2.h>
#define PORTA 53
int main(void)
{
int sock, tam;
struct sockaddr_in local,remoto;
WSADATA w;
WSAStartup(MAKEWORD(2,2),&w);
char buf[1000];
char host[1000] = "\0";
int fts = 0;
FILE *arq;
printf( "===========================\n"
" FTS DNS LOG\n"
"===========================\n\n");
sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(PORTA);
bind(sock,(struct sockaddr *)&local,sizeof(local));
tam = sizeof(remoto);
while(1)
{
memset(buf,'\0',1);
recvfrom(sock,buf,999,0,(struct sockaddr *)&remoto,&tam);
int kodo = 13;
arq = fopen("fts_dns_logs.txt","a");
while(1)
{
if(buf[kodo] == 0x0)
{
host[fts] = 0x0;
printf("%s\n",host);
fprintf(arq,"%s\n",host);
fts = 0;
break;
}
if(buf[kodo] == 0x3 || buf[kodo] == 0x2 || buf[kodo] == 0x3 || buf[kodo] == 0x4 || buf[kodo] == 0x5 || buf[kodo] == 0x6 || buf[kodo] == 0x7 || buf[kodo] == 0x8 || buf[kodo] == 0x9 || buf[kodo] == 0xa)
{
host[fts] = '.';
}
else
{
host[fts] = buf[kodo];
}
kodo++;
fts++;
}
fclose(arq);
}
return 0;
}