Areas: Principal | Apache | DNS | FreeSWAN | giFT | LDAP | Mutt | Postfix | Sincronia | Vim | VNC

Estrategias e Tecnicas de Emails Comerciais Não-Solicitados

Deives Michellis "thefallen"



Introdução

É uma realidade que todos somos atingidos pelos incomodos e, por vezes, destrutivos SPAMs ou Emails Comerciais Não Solicitados. Eles tomam seu tempo, seu espaco em disco, sua paciencia e seu acesso a Internet. Como lidar com o problema? Como combate-lo? Como entender a situação?

Hoje vamos tentar entender as tecnicas e estrategias (ou pelo menos parte delas) usadas pelos spammers para enviar seu lixo eletronico. A partir deste entendimento, vamos tentar descobrir contra-estrategias para impedir sua ação destruidora no sistema de correio eletronico.

Inicialmente, as idéias abordadas serao conceituais e não especificas a um MTA exclusivo; as estrategias de combate a SPAM podem ser criadas, migradas e adaptadas para o Postfix, Qmail, Sendmail, Exim, Mailer do Alfredo, etc.

Note que, de maneira alguma, este documento visa ser a biblia completa, total e irrevogavel do Spam e Anti-Spam; antes, trata dos tipos de spam que costumeiramente encontramos no nosso dia-a-dia.

1. Situação

Estima-se hoje que cerca de 85-95% do trafego mundial de emails são SPAMs ou outras variantes de lixo eletronico. Alguns dominios mais visados chegam a marca dos 99%. Outros, mais recentes ou mais obscuros, variam em torno de 50%.

Dado o retorno financeiro dos SPAMs, o crescimento foi astronomico. Há mais ou menos 5 anos atras, era dificil achar algum dominio que apresenta-se indice de mais de 30%, sendo que a media ficava em 20% de SPAMs.

Note que o uso de correio eletronico também cresceu nesse periodo. Inumeras grandes corporações, de 5 anos pra ca, passaram a VIVER de email. Todas as comunicações internas, comunicações com forncedores e clientes, tudo passou a ser transportado pelo email. Isso faz com que os numeros percentuais do SPAM fiquem ainda mais assustadores. Por que essa atividade aumentou tanto nos ultimos anos?

Primeiro, porque enviar spam é barato. Um link ADSL por alguns dolares por mes é suficiente para comecar a enviar. Quando nosso "SPAM" vinha por mala direta, havia custos de postagem, papel, impressora, etc. Agora, só o custo da conexão por mes.

Segundo, porque é facil. Ainda mais com "aquela" ajudinha do Outlook, que te deixa praticamente violentar a máquina de quem recebe o SPAM atraves de JavaScripts e VBScripts. Abra o email e ele sozinho já vai abrir o browser, te apresentar e preencher um formulario.

Terceiro, porque há muitas pessoas que compram bugigangas vendidas pelo SPAM. Um velho ditado diz que, enquanto houverem trouxas, vão haver malandros. E não precisa haver muitos trouxas pra cada malandro pra ele lucrar. Com uma "taxa de resposta" (pessoas que entraram nos sites anunciados no spam e compraram alguma coisa) de 1%, o spammer consegue fazer muitas centenas de dolares por mes. Se ele enviar 2 milhoes de emails em uma campanha de, digamos 1 semana, e 1% destes comprarem, temos 20.000 vendas pelo custo da ADSL.

2. Curiosidade - de onde veio a palavra SPAM

A origem da palavra SPAM vem de um quadro do Monty Python (são um grupo de humoristas ingleses que iniciaram por volta de 1969). O Spam (um tipo de carne de porco cozida e enlatada) não entrou no racionamento, e foi bastante usado na epoca, até que todos enjoaram de Spam. O quadro em questao era uma satira do racionamento de alimentos na Inglaterra apos a Segunda Guerra Mundial. Um casal entra numa lanchonete e reclama com a garconete que todos os pratos do cardapio levam Spam. A garconete ficam constantemente repetindo "Spam, Spam, Spam, Ovos com Spam, Spam com pao, Pao com Spam e Spam, Spam com Pao e Spam, ...." e um grupo de vikings (!) presente comeca a cantar "Oh Amago SPAM, maravilhoso SPAM, glorioso SPAM" e ninguem consegue conversar. Parecido com nossas caixas postais não? So spam, spam e mais spam! :)

3. Por que o SPAM é Maligno

As vezes, quando nos estamos envolvidos nos nossos proprios problemas, podemos deixar de enxergar a situação como um todo e focar apenas no nosso problema especifico. Por que o spam é ruim, mas ver um outdoor na rua, ou pegar um panfletinho na saída do metro não é?

Primeiro, porque o SPAM utiliza recursos de hardware de quem recebe. Disco, rede, processador. Os ambientes de correio precisariam de, talvez, menos de 1% da capacidade de processamento atual se não fosse pelos spams e afins.

Segundo, porque o SPAM, em geral, tem comportamento viral. Você não recebe 2 email para 50 destinatarios cada um, você recebe 100 emails com 1 destinatario e mais 2000 emails para destinatarios que não existem no seu dominio. Esses 2000 usuários inexistentes geram 2000 bounces/retornos.

Terceiro, o chamado "backscatter" (o termo significa - traduzido 'macarronicamente' como costuma dizer o Piter - "retorno de varios lugares" ou "retorno disperso"). Alguns SPAMs costumam vir com remetentes falsos. Quando você vai devolver um email (porque foi classificado como spam, ou porque o destinatario não existe), você devolve pro servidor de email do dominio "de verdade", não pro falsificador que te enviou. Digamos que alguem mandou 2000 emails pra você com rementente "blau@dominio.net". Mandou mais 3000 pro seu vizinho como "haha@dominio.net". Os servidores do "dominio.net" vão receber 5000 notificações de usuário desconhecido. Imagine agora que o "dominio.net" seja você...

Quarto, porque SPAM gasta tempo de trabalho nas corporações. Uma pesquisa feita em 2003 apontou que, nos EUA, os funcionarios gastam pelo menos 25% da sua jornada de trabalho lendo e apagando emails indesejados. Cerca de 10% dos entrevistados gastavam ainda mais que a media de 1:50h, chegando até 4h por dia com email indesejado. De la pra ca, esses numeros não melhoraram em nada.

Quer mais?

Quinto, porque SPAMs são, em sua maioria, mercadorias falsificadas ou roubadas. Uma pesquisa feita há uns 6 meses apontou que apenas 1 em cada 10 viagras vendidos por spam é realmente viagra. Alem de Viagra e similares, também há antibioticos, antidepressivos, e outros medicamentos. Nota - nos EUA, você não consegue comprar remedios sem receita medica (prescription). há também os "rolex originais", os "offices" e outras quinquilharias Microsoft...

4. Como funciona o Spam Profissional

Alem dos spammers que anunciam seus proprios produtos (podemos classifica-los como "amadores", ou spammers de fim de semana), temos uma outra classe muito mais profissional e perigosa de spammers. Estes possuem diversos links de internet, sistemas de captura e classificação de emails, fornecedores de serviço de envio em massa, alguns até tem escritorios. Vamos entender melhor como eles atuam para podermos desenvolver estrategias para contra-atacar. Para quem conhece a obra de Sun Tzu, 'se conheces o inimigo e conheces a ti mesmo, não temera o resultado nem mesmo de 100 batalhas'.

4.1. Estrategias e Objetivos do SPAM

O objetivo de uma campanha de SPAM é quase sempre a venda de algum produto ou a promoção de algum site. Há também os SPAMs que tentam interferir no mercado de ações.

Venda de medicamentos - viagra, cialias, antibioticos, antidepressivos, etc. - esse tipo de SPAM "funciona" especialmente nos EUA, onde os medicamentos são controlados. Quem se lembra do caso da doenca do Patrick, vai recordar que ele queria tomar Penicilina mas nenhum medico queria receitar esse antibiotico especifico pra ele, e não conseguia comprar na farmacia como fazemos nos aqui.

Venda de rolex, licencas de office, windows, sabe-se la Deus mais o que - há pessoas que se deixam levar pelos precos baixos e acha que esta comprando o item verdadeiro.

Promoção de sites - um spammer profissional publicou, há uns 3 meses, um livro explicando o submundo dessa atividade. Um dos pontos mais interessantes foi uma campanha para um site que tinha fotos de mulheres (completamente vestidas) brincando com bolas grandes de borracha (do tipo usado em fisioterapia). Segundo ele, houve uma tava de resposta de 75% pra esse spam.

Para conseguir melhores resultados, os spammers criam bancos de dados com emails organizados pro ramos de atividades ou de interesses. Dado o exemplo do site acima, o spammer contava com uma lista de emails que se interessam ou já visitaram sites de sexo bizarro ou algo similar.

4.2. O Mercado do Spam

O spam profissional conta com alguns outros elementos alem do Spammer propriamente dito. Um verdadeiro mercado negro acontece nos bastidores.

Há os que vendem os bancos de dados organizados por interesses, há os que vendem o produto final - envio de 10 milhoes de emails vendendo viagra -, há os que vendem o meio de envio - hackers que alugam por hora suas redes de máquinas zumbis/botnets para envio de email - e talvez outras atividades obscuras.

Quem cria os bancos de dados, consegue dados atraves de Web Spiders (programas que vasculham sites de uma determinada categoria procurando por enderecos de email), roubando bancos de dados de instituições de algum ramo especifico ou comprando cadastros de instituições inescrupulosas.

4.3. A Origem do Spam

O spam nosso de cada dia pode vir de muitas fontes. Abaixo estao relacionadas algumas delas:

4.4. Sobre a Base

Como vimos, as bases podem ser compradas de outros "profissionais", podem ser compradas ou roubadas de provedores de serviço ou instituições (Provedor de Internet, MSN, associações comerciais, hospitais...), ou podem ser obtidas com o "harvesting" de listas e sites usando os Web Spiders.

No entando, a parte mais importante da base de spam é refina-la para saber quais emails existem e quais destas contas pertencem a pessoas "vendaveis", que vão ler e talvez comprar o produto. Um metodo muito comum de fazer esse tracking é com imagens de 1x1 pixel. Quando o email é aberto, aplicativos como o Outlook dao aquela forcinha pro spammer abrindo automagicamente todas as imagens relacionadas no HTML do email, por ex: http://www.spammer.com/cgi-bin/imagem.cgi?otario=fulano@dominio.com

4.5. Sobre o Conteudo

O conteudo das mensagens de SPAM pode vir de diversas maneiras, tentando burlar ou dificultar o trabalho dos filtros anti-spam.

Por exemplo, um email pode vir em multi-parte, com uma parte do email em texto e a outra em HTML. Supostamente, ambas partem da mesma origem, apenas a versão HTML vem com cores e "frufrus" a mais. Mas no SPAM, o conteudo de propaganda mesmo vem no HTML, com a parte texto cheia de palavras randomicas para despistar os filtros. Lembra do nosso amigo OutLook? Aquele que exibe só o conteudo HTML da mensagem, por padrão? Olha ele dando outra forcinha...

O conteudo textual da mensagem (tanto o texto puro quanto o HTML) podem ambos ser despistes para o verdadeiro SPAM, que estao em uma imagem GIF, JPEG, ou outro formato. Nosso amigo OutLook também permite que se usem tags avancadas de DHTML dentro do email, entao o spammer pode perfeitamente fazer com que a imagem sobreponha o texto doido que originalmente compunha o HTML.

Um outro formato mais recente são os PDFs. O email vem com um PDF que pode ser apenas 1 pagina com o spam, ou pode vir com varias paginas, sendo a primeira o SPAM e o resto, lixo randomico para despistar os filtros. Esse é mais dificil de bloquear, pois muita comunicação corporativa vem em formato PDF.

Outro jeito um tanto antigo de camuflar o conteudo, é enviando um arquivo ZIP protegido com senha (para que os filtros não possam abri-lo) e a senha no corpo do email. O nosso amigo vitima do spam abre o zip com a senha e executa/le o que tem la dentro.

Iframes, DHTML, JavaScript/VBScript e outras furadas HTML (especialmente presentes no nosso amigo OutLook) também são razoavelmente comuns no envio de spams.

4.6. Dificultando ainda mais a detecção

Para dificultar ainda mais o trabalho de filtragem, os sistemas de envio de spam costumam acrescentar cabecalhos falsificados no email, fazendo-o parecer valido. Diversas linhas de "Received: from" falsificadas ou duplicadas, como por ex:

  Received: from UOL (mx.uol.com.br) via SMTP
  	   id 1239192381923; Fri Sep 14 11:52:52 BRT 2007
  Received: from UOL (mx.uol.com.br) via SMTP
  	   id 1239192381923; Fri Sep 14 11:52:52 BRT 2007

Essas linhas fazem parecer que um spam veio do UOL e não da máquina do spammer.

  Received: from NOME_DO_SEU_SERVIDOR (IP_DO_SEU_SERVIDOR) via SMTP
       id lalalalala;  Fri Sep 14 11:52:52 BRT 2007

Este outro cabecalho falso faz parecer que o email partiu de DENTRO do seu servidor. Há programas espertos o suficiente para pegarem o texto do banner do smtp (mail.dominio.com.br SMTP Sendmail/Postfix/etc...) e colocar nos cabecalhos.

5. Contra Medidas

Como lidar com todas essas tecnicas e estrategias? Não há caminho facil e nem definitivo para isso. A cada dia, novas maneiras de burlar as filtragens vem aparecendo.

O primeiro passo para conseguir formar um modelo de contra-medidas esta com a entidade ou corporação que recebe os emails do dominio. Ela tem que estabelecer politicas para o uso de email, para lidar com falsos positivos e para denunciar os spams que conseguiram passar. Alem disso, a entidade ou corporação precisa levantar uma lista de dominios relacionados ao negocio da empresa, como clientes e fornecedores, para que estes possam ser colocados numa lista branca.

Tenha em mente que meramente marcar ou taggear emails como "[SPAM]" é um paleativo. Os emails AINDA vai lotar a caixa do usuário e ainda vão tomar tempo para le-los e apaga-los, talvez até mais do que normalmente usaria se o email não estivesse taggeado. Assim, quando for planejar uma estrategia anti-spam, procure ter o MAXIMO possivel de tecnicas que possam ser usadas para bloquear e descartar o email, não meramente marca-lo.

5.1. Estrategias

A empresa precisa ter esses dados pois o maior problema quando se instala um sistema antispam são os usuários reclamando que fulaninho me mandou um email e não chegou, e foi culpa dos incompetentes da informatica. Por isso são necessárias politicas na empresa, para que as pessoas saibam como agir e com quem falar quando algo não sair como se esperava. Memorandos, circulares, algum tipo de informação que diga aos usuários que um sistema antispam esta sendo instalado.

Segundo, vamos aplicar nossas considerações sobre as estrategias dos spammers. O elemento ESSENCIAL em todas elas é o mesmo: o usuário final da mensagem. O usuário tem que estar consciente de que ele não pode alimentar a industria do spam. Não deve abrir sites ou comprar coisas vendidas assim. Na prática, sites sem retorno de spams acabam saindo do banco de dados do spammer profissional, pois não rendem nada. Assim, re-educação dos usuários, ou pelo menos orientação, tem que ser dada.

Por mais obvio que pareca, apenas uma infima parcela de toda a população mundial de usuários de computador sabe que o Bill Gates não da 200 dolares pra quem visitar o site da microsoft, que a britney spears não esta distribuindo um arquivo .scr com um filme pornografico dela com mais 7 amigas, que o banco XYZ não esta te cobrando e mandando um link pra cancelar o debito, e que a companhia KLM também não esta divulgando suas ações via email.

Quando formos preparar nossas estrategias antispam, temos que organiza-las de maneira que a detecção e bloqueio ocorra com o mínimo possivel de esforco/processamento/banda de rede. Na prática, regras leves vem primeiro, e regras mais complexas ou pesadas vem por ultimo.

5.2. Base de Dados e Harvesting

Outra contra-medida é dificultar ao máximo possivel o "harvesting" aos enderecos de email da empresa/corporação/entidade. Sites precisam obscurecer informações do tipo "fulano [em] dominio [ponto] com [ponto] br", especialmente em listas de discussão.

Bloquear o tracking pela Web também: existem regras e sistemas pros proxies bloquearem esse tipo de imagem, como DansGuardian e similares pro Squid.

5.3. Detecção na Sessão SMTP

Tentar detectar e bloquear BotNets, open relays e provedores/hospedagens pro-spam. Um meio simples, mas com variados niveis de eficacia, são as RBLs. Sorbs, SpamCop, SpamHaus e outras. Alguns sites brasileiros também são notorios pelas suas atividades pro-spam, como os grandes hostings (LocaWeb, DigiWeb, etc). Embora eles não sejam necessariamente spammers, não se incomodam que seus clientes usem os servidores pra isso. Afinal, quem paga as contas do Hosting no fim do mes são os clientes, não nos, pobres coitados, que estamos sendo bombardeados pelos clientes deles.

Uma analise dos cabecalhos também pode ajudar a bolar regras para brecar algumas botnets, mas checagens de conteudo costumam ser bastante custosas no processamento da máquina.

Algumas regras simples de bloqueio de hosts podem ajudar. Bloquear dominios invalidos (zxjkcjhzjxc.com), DSLs e dial-ups (dificilmente vão ser usados por empresas para enviar emails - pelo menos fora do brasil :P) e hosts sem reverso.

Também podemos tentar detectar remententes invalidos (embora o dominio exista) e/ou forjados (fulano tentando enviar em nome de ciclano). Como ferramentas com essa finalidade, podemos citar DKIM (Domain Keys) e SPF. Dentro do Postfix, há também uma ferramenta de verificação de rementes (não sei se há correspondentes para outros MTAs).

Uma outra ferramenta disponivel e bastante usada é o GreyList. O sistema de greylist detecta se um enviador possui uma fila local ou não. Algumas BotNets não tem sistema de enfileiramento, e podem ser bloqueadas por Greylist. O sistema de greylist trabalha com a combinação de IP, remetente e destinatario. A cada vez que o sistema encontra um trio desconhecido, o enviador recebe uma resposta de rejeição temporaria (erro 450 ou outro 4xx qualquér). Isso faz com que o enviador ponha a mensagem na fila e tente de novo mais tarde. O tempo mínimo para que um novo trio seja considerado valido (quer dizer, o enviador tem fila), varia de 10 segundos a 10 minutos. Quanto maior o tempo para um trio ser aceitod, mais problemas você vai ter com usuários reclamando que o email não chegou, mas vai conseguir uma filtragem melhor de enviadores em massa.

5.4. Detecção de Imagens e Conteudo

Diferenciar o que é um email com uma imagem anexa e o que é um spam de imagem não é tarefa facil. Podemos pensar em alguns meios de descobrir isso. Por exemplo, há poucas palavras no corpo do email? Há alguma referencia direta ao anexo de dentro do email (tags "cid:" dentro do HTML do email)? Há muitos arquivos de imagem anexos? As imagens são muito grandes ou muito pequenas?

Blqouear zips também pode ser uma boa idea. Especialmente zips com senha. Pra quem usa o clamav, há uma opção para isso.

Nos filtros de conteudo, pode-se incluir as tags "<iframe", "<script" e outras que considerar nocivas.

Também é possivel criar um sistema que renderize a parte HTML da mensagem (que transforme em texto) e compare com o conteudo em texto puro da mensagem. Muitas diferenças de um pro outro podem caracterizar uma tentativa de randomização.

Há também os que preferem filtros Bayesianos e similares para comparar conteudo. Emboras esse tipo de filtro funcione razoavelmente bem, eles tem pelo menos 2 "contras" a se considerar.

Primeiro, bases Bayesianas e similares precisam de um extenso treinamento para poder qualificar corretamente o que é spam e o que é email valido. Nas experiencias que já fiz com esse tipo de filtro, foram necessários 3 meses de treinamento para conseguir uma taxa de acerto aceitavel. Quanto mais pessoas usando a mesma base (no caso de uma base global para a empresa/servidor), o tempo de treinamento aumenta dada a variedade de perfis.

Segundo, esse tipo de filtro consome uma quantia consideravel de processamento, especialmente quando a base de informações dele cresce. Dependendo do volume de correio do site, um filtro bayesiano pode mudar de mocinho pra vilao, criando mais problemas (de hardware, talves) do que resolvendo com o spam.

Terceiro, filtros byesianos não são deterministas. Dificilmente se consegue um treinamento tão bom dum filtro desses que você possa bloquear e descartar um email como sendo spam; o mais comum é marca-lo ou "taggear", colocando "[SPAM]" no assunto.

Filtragem de virus também pode entrar na sua estrategia. Inclusive a base do ClamAV blqoueia uma boa quantidade de ameacas, como tentativas de phishing bancario, e mais alguns outros lixos eletronicos. Alem disso, as versões recentes do ClamAV permitem usar bases de assinaturas adicionais. É nessa parte que entra um trunfo no combate ao lixo eletronico: SaneSecurity.

A equipe da SaneSecurity analisa e cria assinaturas anti-spam, anti-phishing, anti-spam, anti-spam de image, anti-spam de PDF e mais outras ameacas, com atualizações regulares. O site deles (www.sanesecurity.co.uk) tem até scripts para manter a base atualizada regularmente. O uso é bastante simples: coloque as bases no diretório do clamav e re-inicie o clamd. Quando houver atualizações, o clamd vai reler as bases sozinho (com a opção SelfCheck)

6. Considerações Finais

NENHUMA tecnica anti-spam sozinha funciona bem. É necessário uma combinação de varias tecnicas e estrategias para conseguir uma taxa de bloqueio razoavel.

Alem disso, os spammers estao sempre inovando suas tecnicas, e precisamos modernizar nossas proprias tecnicas de bloqueio.

7. Alguns exemplos dentro do Postfix

Verificação de remetente:

  address_verify_map = btree:/var/lib/postfix/verify.address
  unverified_sender_reject_code = 450

  smtpd_sender_restrictions = (...) reject_unverified_sender

Verificação de Dominios (se existem):

  smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, (...)

Verificação de Reverso:

  smtpd_client_restrictions = check_client_access regexp:/etc/postfix/brasil.regex, reject_unknown_client, check_client_access regexp:/etc/postfix/dsl.regex

No brasil.regex:

  /^200\..*/    OK
  /^201\..*/    OK
  /^189\..*/    OK

No dsl.regex:

  /.*dsl.*/               REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*\.cable.*/           REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*dyn.*/               REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*dhcp.*/              REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*dial.*/              REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*broadband.*/         REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*\.rr\.com.*/         REJECT DSL Mail not allowed. Please contact your Internet Provider.
  /.*\.dip\..*/           REJECT DSL Mail not allowed. Please contact your Internet Provider.

Links e Bibliografia

http://pt.wikipedia.org/wiki/Spam

http://www.sanesecurity.co.uk/

Ferramentas para o Postfix:

http://www.postfix.org/

http://www.tummy.com/Community/software/tumgreyspf/

http://www.libspf2.org/

A menos que especificado de outra maneira, todos os documentos e textos sao protegidos sob licenca BSD - Veja a licenca para mais detalhes
Leia tambem sobre o motivo de uso de licencas em documentacao.