COMO IDENTIFICAR SPAM - PART 3
DETALHES TÉCNICOS - A CONEXÂO ENTRE SISTEMAS
Para o envio da mensagem, o sistema responsável identificará
seu parceiro que, supostamente, encaminhará a mensagem
para a caixa postal do destinatário.
Toda e qualquer computador conectado à Internet tem uma identificação
única, denominada Endereço IP, que pode ser representado por
diversas formas. A mais comum é a representação "byte-dot-byte"
(ou número, ponto, número), constituída por 4 valores decimais
entre 0 e 255 seprados por ponto. Na verdade, o endereço IP é
um número inteiro positivo de 32 bits.
Um ser humano, por pensar de forma associativa, tem dificuldades
de memorizar números (há exceções, é claro!). Assim, os especialistas
criaram um serviço de rede que traduz o nome para o endereço IP
e "vice-versa". A identificação pelo nome é denominada de "nome IP".
A tradução nome para endereço IP é denominada de Tradução Direta. A tradução
de endereço IP para Nome é denominada de Tradução Pseudo-Reversa.
Para que tudo funcione corretamente, é necessário que as traduções
estejam sincronizadas. Ou seja, se existir uma tradução direta então
deve existir uma tradução pseudo-reversa.
O endereço IP a se conectar é obtido a partir do e-mail do destinatário.
Ou seja, se o e-mail é
fulano@exemplo.com.br
então o endereço IP é obtido a partir do "exemplo.com.br".
Aquela parte ("exemplo.com") será traduzida para um nome completo
do computador que receberá aquela mensagem. Considere que aquele computador
tenha o nome "pitoresco.exemplo.com.br" e seu número IP seja 192.168.100.2.
Assim, deve-se ter uma associação bidirecional:
pitoresco.exemplo.com.br <=> 192.168.100.2
Então, se o sistema que enviará a mensagem tem nome "enviador.outro.com.br" e
número IP 192.100.10.200, então a tradução também vale para este caso, ou seja,
enviador.outro.com.br <=> 192.100.10.200
Já é possível deduzir algum conceito importante. A única informação
realmente confiável são os endereços IPs envolvidos na conexão.
O verbo
HELO do protocolo SMTP exige que o enviador se identifique com
o seu nome. (ver imagem 2, quadro 1).
Logo, aquele nome deveria ter a tradução direta para o endereço IP
da conexão sendo também válido para a tradução pseudo-reversa.
NOTA: É aqui que os sinais de spam podem começar. O spammer não quer
ser identificado para evitar retaliações ou problemas jurídicos.
Logo, ele pode usar um nome qualquer ou que não tenha nem a tradução
direta e muito menos a pseudo-reversa.
O nome de anúncio de HELO é copiado para um campo do CABEÇALHO
identificado por "Received".
Se o anúncio foi:
1.1)
HELO enviador.outro.com.br
então aquela linha será:
Received: from enviador.outro.com.br (nomeIp2 [192.100.10.200]) by ...
sendo que nomeIP2 é a tradução pseudo-reversa de 192.100.10.200.
Caso não exista esta tradução o nomeIp2 assume o valor "unknown".
Num caso duvidoso de spam, pois também pode ser por má configuração
da aplicação, o anúncio de HELO poderia ser:
1.2)
HELO localhost.localdomain
A imagem 2, quadro 2, mostra que o próximo verbo é MAIL FROM.
Neste caso, a linha de Received seria:
Received: from localhost.localdomain (nomeIp2 [192.100.10.200]) by
O
MAIL FROM deve ser seguido pelo e-mail do remetente. Considere
um remetente com e-mail
beltrano@outro.com.br.
Logo, a sintaxe seria:
2.1)
MAIL FROM: beltrano@outro.com.br
Já que o spammer não quer ser identificado, a segunda indicação
de fraude é justamente este e-mail.
Algumas ferramentas de envio de e-mail em massa, também conhecida
pelos spammers por "ferramentas de email-marketing", usam endereços
de email coletados aleatoriamente a partir da mesma lista de endereços
de envio. Algumas daquelas ferramentas usam o mesmo e-mail de destino
para o remetente, conseguindo um "melhor desempenho".
Quando a fraude acontece, ela cria uma inconsistência de informação
pois, em condições normais, somente um sistema que aceita aquele e-mail
ou que está subordinado ao sistema de tradução, teria condições de
enviar a mensagem usando aquela parte do nome. No caso de spam,
poderia parecer:
2.2)
MAIL FROM: qqusuario@qqnome.sem.br
CONFRONTANDO AS INFORMAÇÕES
Todo computador com TCP/IP deve ter instalado um conjunto de
aplicações dedicadas. Alguns nomes são: '
nslookup', ou '
dig', ou '
host'.
Tais aplicações podem ser usadas para o confrontar as informações
contidas nas mensagens.
Usaremos o 'nslookup', pois está presente tanto no Windows quanto
em outros sistemas operacionais.
HELO
Confrontando o anuncio de HELO, para 1.1
$nslookup enviador.outro.com.br
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: enviador.outro.com.br
Address: 192.100.10.200
$nslookup 192.100.10.200
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
200.10.100.192.in-addr.arpa name = enviador.outro.com.br.
As respostas dos comandos indicam que está tudo certo, pois as traduções direta e
pseudo-reversa coincidiram.
Contudo, pode acontecer casos de "descuido calculado" (para não classificar de relapso!) dos
administradores. Observe o exemplo a seguir.
$nslookup dispatch.kahuna.glbdns.microsoft.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: dispatch.kahuna.glbdns.microsoft.com
Address: 65.55.75.167
Name: dispatch.kahuna.glbdns.microsoft.com
Address: 157.55.152.112
$nslookup 157.55.152.112
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
112.152.55.157.in-addr.arpa name = origin.sn145w.snt145.mail.live.com.
Mas, se questionar o nome retornado...
$nslookup origin.sn145w.snt145.mail.live.com.
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: origin.sn145w.snt145.mail.live.com
Address: 157.55.152.112
Coincidiu! Então não há inconsistência!
Reparem, com a informação passada em 1.2.
$nslookup localhost.localdomain
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: localhost.localdomain
Address: 127.0.0.1
Epa!!! O nome anunciado NÃO TEM qualquer associação com o IP 192.100.10.200!!
Perigo! Perigo! Perigo! Perigo, Will Robinson!!
HÁ ALGUM INDÍCIO DE FRAUDE!!! CONTENHA O DEDO DO BOTÃO O MOUSE!!
MAIL FROM
Se o email de origem é aquele informado em 2.1, devemos requisitar a tradução para o nome MX.
$nslookup -q=mx outro.com.br
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
outro.com.br mail exchanger = 10 enviador.outro.com.br.
...
enviador.outro.com.br internet address = 192.100.10.200
Beleza!!! Sem indícios de fraude!!
Se o email de origem é aquele informado em 2.2, poderiamos obter:
$nslookup -q=mx qqnome.sem.br
Server: 127.0.0.1
Address: 127.0.0.1#53
** server can't find qqnome.sem.br: NXDOMAIN
Epa, epa, epa E EPA!!! A quem estão querendo enganar?
Perigo! Perigo! Perigo! Perigo, Will Robinson!!
HÁ ALGUM INDÍCIO DE FRAUDE!!! CONTENHA O DEDO DO BOTÃO O MOUSE!!
CONCLUSÃO
Com 2 indícios de FRAUDE há 75% de change da mensagem ser spam.
Com 1 indícios de FRAUDE há 32.5% de chance.
Na próxima parte teremos algo real onde devemos obter as informações, uma
vez que a sessão SMTP não está completamente disponível .