sexta-feira, 4 de dezembro de 2015

Como um criminoso pode criar uma botnet em apenas 10 minutos

Fala ae galera tudo tranquilo? gostaria de mostrar pra vocês o risco que muitas empresas correm por não realizar atualizações de segurança em seus servidores, e como criminosos podem rapidamente explorar diversas empresas no mundo todo com apenas uma tecla.

Basicamente o que vou demonstrar é o seguinte, a exploração da vulnerabilidade Shell Shock(Pode até não ser uma 0day mas ainda assim faz um estrago imenso), que basicamente permite enviar comandos para o bash através de scripts CGI's, que nada mais são do que scripts que geram informações dinâmicas para paginas web.


Mas como funciona o Ataque?

A unica coisa que precisamos fazer é enviar um User-Agent TUNADO para o servidor como no exemplo abaixo,

CALMA AI!! O QUE É User-Agent?

Jovem é o seguinte, sempre que você entra em qualquer serviço web, faz parte da comunicação entre o cliente(você) e o servidor(Ex.:Facebook), enviar de qual agente você esta se conectando, por exemplo,

Quando você abre o Facebook utilizando o Google Chrome, ele envia esse user-agent para o servidor do Facebook,

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36

Que nada mais é uma simples string que identifica para o servidor que a conexão foi realizada utilizando o Google Chrome, mas no nosso caso vamos utilizar essa informação, pra realizar uma PoC de como um criminoso pode criar uma botnet modesta em apenas 10 minutos.

Então agora que você já sabe o que é user-agent, segue abaixo o user-agent TUNADO que vamos utilizar nessa PoC,

() { ignored; }; echo Content-Type: text/plain ; echo  ; echo ; /usr/bin/id
No nosso exemplo iremos utilizar um comando simples e que não vai impactar e nem prejudicar nenhum servidor encontrado, ele ira apenas retornar informações sobre o usuario que esta executando o serviço Web, e sobre o SO. Porem vale reforçar que qualquer tipo de exploração de vulnerabilidade é crime, até mesmo algo como "simples" como o que foi utilizado na PoC.

Vamos realizar um teste, utilizando o modo interativo do python, pra verificar se o User-Agent esta realmente efetivo.
Observação para executar os comandos abaixo, deve ter instalado o python e a lib requests
No terminal do Linux/Mac/Window$ entre no modo interativo do python utilizando o comando python,

>>>import requests
>>>user_agent = {'User-Agent':"() { ignored; }; echo Content-Type: text/plain ; echo  ; echo ; /usr/bin/id"}
>>>url = 'http://sitevulneravel.com.br/cgi-bin/test.cgi'
>>>r = requests.get(url, headers=user_agent)
>>>r.content

'\nuid=48(apache) gid=48(apache) groups=48(apache)...'

Ps.: O resto do r.content foi omitido pois era muito grande, o site também foi omitido para evitar que a empresa seja exposta.

Como foi descrito acima o comando que utilizamos é bem simples e não é prejudicial ao host, porem um criminoso pode tranquilamente, executar um comando para realizar o download de uma backdoor/shell, e acabar se apoderando desse host.

Mas como o criminoso consegue criar uma botnet em dez minutos?

Bom pra fazer isso vamos usar 3 coisas, anota ai a receita

- Python
- Censys
- Google
- Shell/backdoor

Recentemente foi lançado um serviço chamado Censys, que trabalha de forma parecida com o Shodan, ele consegue rastrear inúmeros serviços na internet ajudando assim muito o trabalho de pentesters e analistas de segurança, mas também acaba facilitando a vida de criminosos, com apenas uma busca simples no site, posso fazer uma pesquisa global de todos os servidores web que ele conseguiu mapear, possibilitando assim um ataque em massa.

O pessoal do hacking com tapioca fez um ótimo video explicando sobre essa ferramenta, aconselho darem uma olhada no video deles,


Mas vamos ao foco principal, o código fonte de como é possível realizar um ataque desse tipo, após algumas horas de coding, vos apresento a PoC desse ataque, a EvilTool, que trabalha com base na API que o Censys disponibiliza, dessa forma, é possível realizar busca de servidores com scripts CGI's e executar esse teste que fizemos manualmente de forma automatica.

LEIA-ME

SOURCE CODE

Bacana! Mas como funciona esse monte de código?

A ferramenta trabalha de duas formas, uma forma passiva onde você passa uma url para ela, e ela identifica se o servidor esta vulnerável,  que é o Single URL test. E a forma mais ativa que é o que chamo de "hack the planet", pois ele realiza todas as buscas sozinho e só entrega qual host é vulnerável

Vamos agora para uma explicação sobre o funcionamento da forma de ataque ativa.

A primeira função é a search, onde  utilizando as "dorks" do Censys a ferramenta faz uma busca por servidores que estão executando scripts CGI,

Caso ele encontre servidores ele vai chamar a função build_url que realiza a construção da URL a qual ele vai se conectar e executar o teste da vulnerabilidade, 


Após a construção da URL, ele envia essa URL, para função test_conn, que vai verificar se esse link é valido e esta funcionando, e nesse momento ele já esta também enviando tambem nosso User_Agent TUNADO


E é claro que não poderia esquecer do Google, o maior concentrador de informações, utilizando uma biblioteca simples para buscas, com 10 linhas de código é possível capturar todos as URL em uma busca utilizando a dork que você desejar como por exemplo,


filetype:cgi

Agora é simples, ele só recebe o response do servidor e identifica se o comando enviado foi executado com sucesso, caso tenha sido, a URL completa é salva em um arquivo .txt

Como se Proteger dessa e de outras vulnerabilidades?

  • Acompanhe blogs e sites da area, pois além de aprender muita coisa boa, ainda vai estar sempre ligado em novas vulnerabilidades, novos vetores de ataque.
  • Mantenha seus servidores e serviços atualizados
  • Procure soluções que ajudem a proteger os seus servidores, não só dessa falha.  

Deixo aqui meu alerta aos sysadmin's , cuide bem da sua infra, pois a qualquer momento um criminoso pode te infectar e você vai acabar descobrindo isso da pior maneira possível.

22 comentários:

  1. criminoso ?????como assim criminoso ???????

    ResponderExcluir
    Respostas
    1. kkkkkkk melhor do que falar Hacker neh kk

      Excluir
    2. Seria melhor dizer Cracker em vez de Hacker também, sabe-se que os significados são diferentes :D

      Excluir
    3. Cracker? ¬¬ Lá vem os acadêmicos... o "hacker de humanas" hauahuahau

      Excluir
  2. Man, troca as imagens de código pelo código do github, faz um embed na pagina.

    ResponderExcluir
    Respostas
    1. Entao mano eu vi la no seu eu queria colocar tambem kkk mas a anta aqui fico perdido pra fazer

      Excluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. Parabéns manolo ... coloca os código fonte ai na pagina mesmo como o Danilo falou.;..

    ResponderExcluir
  5. Parabéns cara, você aprendeu como essas coisas?

    ResponderExcluir
  6. Esse menino só me dá orgulho!! ahhaahahah
    Parabéns man!!!

    ResponderExcluir
    Respostas
    1. kkkkkk ae sim ein mano essa familia RTFM só da orgulho mano, mulekada tudo monstra

      Excluir
  7. Matheus parabéns, excelente artigo.

    []'s

    ResponderExcluir