GURI SoftHouse
Desenvolvimento de Sistemas e
Consultoria em Informática

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 .