Existem algumas abordagens iniciais utilizadas por criminosos ao tentar comprometer um ambiente, a mais amplamente difundida no mundo são os ataques de phishing, que costumam depender de uma interação com a pessoa que será foco da abordagem. Porém, há uma outra forma também bastante utilizada que pode não depender de nenhum tipo de interação com pessoas: a exploração de vulnerabilidades.

Mesmo sendo um tema de alta complexidade, tanto para o descobrimento da vulnerabilidade quanto para o desenvolvimento de um software que irá se aproveitar da fragilidade, existem softwares que já possuem uma série de ferramentas e exploits prontos para serem utilizados, como é o caso do Metasploit Framework da Rapid7.

Vindo instalado por padrão em um dos sistemas operacionais mais difundidos entre a comunidade de segurança, o Kali Linux, o framework também pode ser instalado no Windows, MacOS e em outras distribuições Linux como Fedora, Red Hat e CentOS.

Para este artigo, usarei um Kali Linux representando o atacante e um sistema operacional preparado para ser comprometido, o Metasploitable 2.

Mesmo tendo uma máquina sabidamente vulnerável que usarei como alvo, é importantíssimo ressaltar que, no momento em que este artigo foi escrito, o framework do Metasploit vem por padrão com 2315 exploits, além da possibilidade de adição de exploits de outras fontes. Para este artigo, explorarei apenas uma destas milhares de vulnerabilidades, que assim como as outras, também pode ser utilizada para interagir com ambientes reais e comprometê-los. Trata-se de uma ferramenta poderosa e com recursos que também podem ser usados por pessoas mal-intencionadas e é extremamente recomendado não a desconsiderar ou subestimá-la.

Feitas as devidas ressalvas sobre o ambiente de teste, simularei como um cibercriminoso pode interagir com um servidor alvo. E o primeiro passo, depois do IP identificado, é ver quais as possibilidades de entrada são apresentadas no servidor, para isso realizei uma varredura simples em todas as suas portas.

Imagem1
Imagem 1: Escaneamento do alvo usando NMAP.

Existem diversas possibilidades de entrada no servidor, mas elegi o servidor de página para fins de demonstração.

A varredura de portas utilizada acima (nmap) tem possibilidades de ser bem mais robusta e trazer resultados com bem mais informações, mas o Metasploit também possui opções de scanning e usarei o módulo auxiliar de Scanner HTTP para identificar se alguma outa informação será útil ao ataque.

Imagem2
Imagem 2: Escaneamento direcionado ao HTTP com Metasploit.

Para usar este recurso, digitei dentro da console da ferramenta: use auxiliary/scanner/http/http_version. Após este passo, usei o comando options para identificar quais os campos necessários para funcionamento da mesmax. Conforme mostrado na imagem acima, o único campo que exige preenchimento é o RHOSTS, que serve para especificar o(s) IP(s), rede(s) ou host(s) que serão analisados.

Após preencher o IP do nosso alvo, executei o comando run para que a análise pudesse ser realizada. O resultado mostra diversos outros detalhes sobre o serviço, dentre eles que se trata de um Apache rodando na versão 2.2.8 e que que usa recursos PHP.

Imagem3
Imagem 3: Coleta de informações adicionais pelo arquivo phpinfo.php.

Como o PHP é uma linguagem amplamente conhecida, existem algumas características presentes em sua instalação que podem permitir que alguém obtenha ainda mais informações do sistema. Ao tentar acessar essa página padrão com estas informações, identifiquei que ela está presente no servidor.

Em seguida, busquei possibilidades de exploração de vulnerabilidades relacionadas ao PHP. Como sei que a ferramenta dispõe de algumas opções, utilizei o recurso de autocompletar digitando use exploit/multi/http/php e pressionei duas vezes a tecla TAB - isso faz com que as opções exibidas na imagem abaixo sejam listadas. Em seguida, optei pela utilização do php_cgi_arg_injection.

Imagem4
Imagem 4. Listagem de opções de vulnerabilidades focadas em PHP.

Similar a outros recursos presentes no Metasploit, utilizei novamente o comando options para identificar quais os requisitos necessários para que o exploit pudesse ser executado em nosso alvo.

Imagem5
Imagem 5: Listagem de opções do exploit php_cgi_arg_injection.

Neste caso, o uso do exploit foi associado a um payload, ou seja, o interpretador que recebe a conexão reversa quando a vulnerabilidade é explorada com sucesso.

Para o funcionamento, foi necessário preencher o RHOSTS, configurando o IP do nosso alvo, e LHOST apontando o IP da interface que recebe a conexão reversa.

Imagem6
Imagem 6: Exploração da vulnerabilidade e execução de comandos no alvo.

Após a configuração, executei o comando exploits. Caso os requisitos da exploração da vulnerabilidade sejam atendidos pelo alvo, uma conexão reversa é criada e o atacante é transportado para a console do meterpreter, que permite executar comandos diretamente dentro do alvo.

A lista de comandos é bem vasta e as possibilidades são diversas. Para exemplificar, executei os seguintes comandos:

  • getuid: permite identificar qual o usuário da sessão estabelecida. No caso do exemplo citado acima, o usuário é o www-data, responsável por manter o serviço que foi explorado. As ações deste tipo de usuário costumam ser limitadas e, para ter controle total do servidor, seria necessário realizar uma escalação de privilégios, que não será demonstrada neste artigo.
  • sysinfo: outro comando que permite uma consciência situacional é o sysinfo. Ele traz algumas informações do sistema operacional que foi comprometido e facilita uma eventual busca por informações ou até mesmo de elevação de privilégios.
  • ls: o ls é o exemplo de comandos possíveis utilizados para navegação entre os arquivos dentro do servidor. É possível realizar as mesmas ações como se estivéssemos em uma console local no próprio servidor como navegar entre pastas, criar e remover arquivos, realizar download ou upload de informações, matar processos, dentre muitas outras. Vale salientar que a alteração de determinadas partes do sistema, seja ele qual for, dependerá de quantos privilégios o usuário têm. No caso do usuário em questão, www-data, as ações de sistema provavelmente não têm privilégios para serem executadas.

Ferramentas como o Metasploit Framework são concebidas para auxiliar profissionais de segurança a realizar testes nos ambientes, mas, como qualquer outra ferramenta, a forma como será utilizada depende da índole de quem a utiliza.

Pessoas mal-intencionadas e que tenham um mínimo de conhecimento, que pode ser facilmente obtido em fóruns e vídeos na internet, podem causar impactos significativos em um ambiente.