O universo da Segurança da Informação vai além de ferramentas e automatizações para se mitigar um ataque. Por isso, hoje quero mostrar, da perspectiva de um atacante, como funciona Spam via botnet e um framework para realizar esse tipo de ataque.
Espero que esse artigo ajude várias pessoas, por exemplo:
- que pertencem a Red Teams, para realizar tentativas de ataque mais realistas.
- que está dentro das organizações e não sabe como esses ataques são possíveis e assim possam se proteger melhor.
Vamos lá?
Praticamente minha vida toda na área de TI foi voltada a estudos em processamentos paralelos. Por isso, eu sempre tive a visão que caso uma máquina consiga executar um único processo com sucesso, milhões também conseguem.
E lógico, foi por isso que comecei a estudar sobre botnet.
Seguindo a filosofia “Como executar um comportamento único, milhões de vezes”, desenvolvi muitas técnicas de by-pass e hoje vou demonstrar uma delas.
O que é uma botnet ou controle massivo de recursos computacionais?
Botnet é um controle massivo de muitos dispositivos por um único comando central, ou seja, dependendo da complexidade do software desenvolvido, conseguimos granular e delegar responsabilidades para cada computador.
No caso em específico do Framework para Spam, conseguimos distribuir uma lista de e-mail, SMTPs, engenharias ou softwares para cada computador diferente e todos irão processar suas ordens ao mesmo tempo e retornar os resultados em um local central.
Framework para se enviar Spam
Hoje existem muitos filtros anti-spam: filtros de e-mails, filtros nos navegadores, mensageiros (Facebook, Instagram, etc) e outros.
Caso você use o mesmo link para realizar um ataque com engenharia social (phishing) de forma massiva, a inteligência de detecção de padrões destas empresas determina que aquele link ou site é de alto risco. Por este motivo, assistimos campanhas de phishing serem bloqueadas em apenas algumas horas, ou praticamente nem começarem.
Para um completo sucesso, toda prova de conceito deste teste foi criada em cima de uma botnet (computadores pessoais, porque nuvem ou servidores hackeados aumentam o score de risco).
Pensando nestes padrões foi desenvolvido alguns métodos randômicos. Vamos ver alguns exemplos do framework a seguir.
Demonstrando o teste passo a passo
Criei um servidor web no meu computador pessoal com PHP instalado. Em um ambiente real, poderiam ser servidores hackeados ou comprados. Lógico que servidores hackeados, principalmente se forem https com certificado público, seriam o ideal.
Na Imagem 1 estamos criando várias pastas randômicas dentro do servidor web. Em seguida, nas Imagem 2, 3 e 4 estamos demonstrando que serão criados dentro das pastas randômicas, mais pastas randômicas e dentro delas arquivos .php também com nomes randômicos.
Já na Imagem 5 a chamada “rand.php?hora=start” gera uma referência de quais arquivos “linkX.txt” serão utilizado em um intervalo de horários, ou seja, vamos a um exemplo que o link0.txt será utilizado das 06:00 até 12:00 e o link1.txt das 12:01 até 18:00.
Essa ideia veio no sentido que caso os links de um arquivo sejam detectados pelas ferramentas de segurança, o spam não ficará totalmente prejudicado porque novos links serão utilizados, como demonstrado na Imagem 6.
Prova de conceito após a compilação das informações
Agora vamos demonstrar a utilização do framework depois de ter criado o ambiente.
Quando acessamos o link http://127.0.0.1/PoC_teste/rand.php o framework abre de forma randômica uma lista que contém 1321 links diferentes e redireciona para um deles, como demonstrado nas Imagens 7 e 8.
Neste site que foi redirecionado foram criados macros onde todo o conteúdo é randomizado internamente, incluindo o source e o HTML. O motivo disto seria para que os navegadores web tenham mais dificuldade em conseguir detectar algum tipo de padrão.
Agora temos links randômicos, HTMLs randômicos e nomes dos arquivos .zip ou qualquer outra extensão randômica.
Como já citamos anteriormente na descrição da Imagem 6, foram gerados 3 arquivos, link0.txt, link1.txt e link2.txt, ou seja, foram gerados 1321 links em cada arquivo e cada um está em servidores diferentes para podermos randomizar o site principal também. Neste exemplo bem simples temos 1321 * 3 = 3963 links diferentes.
Mas em um ambiente real, poderíamos ter link0.txt com até link50.txt, onde cada arquivo conteria 20 mil sites, por exemplo. Em outras palavras, 50 * 20.000, teríamos 1.000.000 de links diferentes.
O arquivo rand.php possui uma inteligência onde ele determina quais arquivos vão ser utilizados ao longo do dia, que vão desde o link0 1 2 ao 50.txt, ou seja, caso algum arquivo ou site for bloqueado pelas empresas, pelo menos temos mais 2 arquivos para serem utilizados. Onde o sucesso em vez de 100% poderia chegar a 70%, por exemplo.
Pensando nisso, caso enviássemos todos os links de uma única vez, as empresas poderiam descobrir as amostras de forma muito mais rápida e logo destruiriam toda a campanha de Spam.
A engenharia social entra em campo
Já temos apenas o motor de links, mas e a engenharia social?
A mensagem que vamos enviar para o usuário por e-mail também pode ser detectada por padrões pelas empresas. Pensando nisso, desenvolvemos um método de ludibriar o olho humano, mágica simples… Quer ver um exemplo? Então vamos lá!
Note que podemos randomizar uma mensagem utilizando as tags HTML. Para um analisador de strings não faria sentido, mas para uma pessoa sim e ela conseguiria compreender palavras e frases.
No exemplo da palavra “vamos” demonstrada na Imagem 9, inserimos uma string no meio com uma fonte reduzida e a cor da mesma ou quase igual à do fundo do software que está lendo o e-mail, que no caso é um fundo branco.
Para um computador a compreensão seria assim, “va’mos”, agora pense nas possibilidades que esta ideia abre.
Agora vamos a outro exemplo.
Dessa vez, com mais strings diferentes: “va’!mos”. Aí, em vez de uma fonte branca, usamos um tom quase branco, abusando das tonalidades das cores.
Links e encurtadores
Agora vamos pensar nos links que serão inseridos na mensagem. Através de estudos percebi que os encurtadores de sites são bem-vindos para as empresas, lógico, até que se prove o contrário.
As campanhas de phishings hoje também usam encurtadores, mas são implementadas de forma incorreta. As empresas conseguem detectar que estes estão sendo redirecionados para sites específicos maliciosos, onde são analisados pelo volume de computadores pessoais diferentes acessando um mesmo link desconhecido.
Vamos entender a árvore de execução:
—> http://Encurtador (podemos gerar centenas)
—> http://site.com/rand.php (temos 50 ou centenas)
—> http://link randomizado (milhões de links diferentes)
Hack absoluto X Hack corporativo
Mesmo by-passando os filtros a nível de links e mensagens, ainda temos um problemão, no caso de e-mail’s são os relays de e-mail, ou seja, se usarmos o mesmo servidor para enviarmos os e-mails, também cairão na lista de detecção de padrões e serão bloqueados.
Agora temos dois cenários, o hack absoluto e o que vamos chamar de hack corporativo.
Hack absoluto
Neste cenário, temos uma botnet onde conseguimos senhas de e-mails, como Yahoo, Gmail, UOL, etc. Através destes relays, dizemos à botnet para enviar no máximo 300 e-mails por login e computador.
Com 1000 computadores conseguiríamos em algumas horas enviar mais de 2 milhões de e-mails sem sermos detectados de início. Agora quando eu digo 1000 computadores, é somente uma ilustração. Em um mundo real geralmente hackers possuem de 5 a 20 mil, isto pensando na maioria, porque existem quem possua muito mais.
Como sabemos exatamente qual é o computador do usuário hackeado será criado um script onde dizemos que o computador com o id x realizará o download da lista de e-mail x, ilustrado na Imagem 10.
Hack corporativo
Neste cenário temos os relays pagos a partir de computadores em nuvem ou outro local. Este tipo de hack é um dos mais utilizados pelos spammers, até mesmo pela facilidade de automatização e conseguir escalar todo o processo.
Porém, são mais custosos e o sucesso deste método não chega a 10%, ou seja, uma campanha de phishing seria detectada muito rapidamente pelas empresas.
Uma representação (organograma) do ambiente
Estatística em um ambiente real
Concatenando todos os fluxos que demonstramos, os links conseguem ficar de 4 a 7 dias online, o que em uma campanha de spam já seria o tempo necessário para a realização de um ataque de sucesso.
Vulnerabilidade de Open Redirect de uma grande empresa ou alguma outra falha que permita utilizar o site para o ataque:
—> https://site -vulneravel-certificado-de-alguma-empresa-com-open-redirect-hackeado/
—> http://Encurtador (podemos gerar centenas)
—> http://site.com/rand.php (temos 50 ou centenas)
—> http://link randomizado (milhões de links diferentes)
Considerações finais sobre botnet e esse framework
Tudo que foi colocado neste artigo foi provado e bem sucedido por vários anos seguidos. Acredito que hoje também teriam êxito até porque não percebi nenhum tipo de tecnologia existente que poderia bloquear este tipo de ataque.
Observando todos os ambientes de segurança das empresas, percebi que a que mais possui inteligência para detectar um Spam é a Microsoft, onde na época desenvolveram quatro features de segurança para tentar bloquear a tecnologia demonstrada no artigo.
Mas logicamente foi em vão ??