Kernel não permite mudar o Ip Source atraves de raw sockets

1. Kernel não permite mudar o Ip Source atraves de raw sockets

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/08/2010 - 19:59h

Eu estou tentando criar pacotes com source/destination IP e portas modificadas (spoofing). Bom, eu estou usando um socket raw para fazer isso. O problema é quando eu envio o pacote, através do wireshark eu posso ver que o IP source não é o spoofed, mas o verdadeiro da maquina. Isso significa que o kernel está fazendo essa mudança. Alguém tem alguma ideia de como posso desativar isso?
A minha distribuição é Debian Sid.
Abaixo parte do código desenvolvido (evidentemente eu rodo o software como root):

unsigned int RedirectPacketSystem::sendUdpPacket() {
Packet *packet = InterfaceFeatures::getPacket();
char *newPacket = (char*)malloc(sizeof(char)*packet->getPktSize());
memcpy(newPacket, packet->getPkt(), packet->getPktSize());
struct iphdr *ipHeader = (struct iphdr*)newPacket;
struct udphdr *udpHeader = (struct udphdr*)(newPacket + packet->getIpv4Packet()->getIpHeaderSize());
ipHeader->daddr = inet_addr("200.200.200.200");
ipHeader->saddr = inet_addr("201.201.201.201");
std::cout << ipHeader->saddr << "\n";
udpHeader->dest = htons(200);
udpHeader->source = htons(201);
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(200);
sin.sin_addr.s_addr = inet_addr("200.200.200.200");
ipHeader->check = 0x00; //calculate automatically by IP_HDRINCL option
udpHeader->check = 0x00; //don't care
int sd = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
if(sd < 0) {
perror("Feature Redirection socket() error");
exit(-1);
}
const int on = 1;
if(setsockopt(sd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
perror("Feature Redirection setsockopt() error");
exit(-1);
}
if(sendto(sd, newPacket, packet->getPktSize(), 0, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
perror("Feature Redirection sendto() error");
exit(-1);
}
close(sd);
free(newPacket);
return(NF_ACCEPT);
}




  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts