quinta-feira, 30 de outubro de 2014

Hacking TRENDnet TEW-823DRU (CVE-2014-8579)

Nesta postagem eu vou estar fazendo uma pequena análise técnica sobre uma vulnerabilidade que eu encontrei no roteador wireless TEW-823DRU da TRENDnet. A vulnerabilidade esta presente na versão '1.00b30' do dispositivo. A vulnerabilidade recebeu o identificador CVE-2014-8579.

Figura 01: Roteador wireless TEW-823DRU (TRENDnet)
 

Análise Inicial do Firmware


O firmware vulnerável foi obtido na página oficial da TRENDnet (na seção de 'suporte'). A partir de uma pequena análise no conteúdo do firmware, é possível identificar a presença de um sistema de arquivos SquashFS (ver figura 02).

Figura 02: Analisando o firmware

A partir da figura 03, é possível verificar o conteúdo do sistema de arquivos e constatar de que o firmware roda em uma plataforma MIPS (muito comum em sistemas embarcados).

Figura 03: Analisando o firmware 02


Disassembly


A vulnerabilidade identificada esta presente no servidor FTP do roteador wireless (localizado em 'bin/KC_FTP'). A partir de um disassembly do arquivo binário do servidor FTP, é possível verificar a presença de uma string 'interessante' na função 'sub_410000' (ver figura 04).

Figura 04: Disassembly 01

Fazendo uma análise específica da função 'sub_410000', é possível verificar de que esta função realiza a autenticação do servidor de FTP. A partir da figura 05, é possível ver que a função realiza uma comparação entre o 'username' e a string 'root' (usuário administrador).

Figura 05: Disassembly 02

Um pouco abaixo da primeira comparação, é possível ver que uma segunda comparação é realizada com a string 'kcodeskcodes' (ver Figura 06).

Figura 06: Disassembly 03

O servidor FTP utiliza um senha hardcoded para o usuário administrador (root). Quem sabe os desenvolvedores da aplicação deixaram essa senha guardada para algum tipo de debugging ou até mesmo um backdoor.

 Conclusão


Nesta postagem eu falei um pouco sobre uma vulnerabilidade que eu identifiquei no servidor FTP do roteador wireless TEW-823DRU da TRENDnet. Eu divulguei a vulnerabilidade para a equipe de suporte da TRENDnet e a vulnerabilidade foi corrigida no novo firmware lançado: versão 1.00b36. Eu contactei o pessoal do MITRE e eles me deram um CVE para identificar a vulnerabilidade (CVE-2014-8579).

Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

terça-feira, 7 de outubro de 2014

Yo wa Shock: Analisando o Shellshock!

Nesta postagem eu vou estar analisando o bug do momento: Shellshock!. Eu também vou fazer uma rápida análise sobre alguns scripts que ja foram disponibilizados publicamente para realizar o ataque (Metasploit).

Observação:

O conteúdo apresentado nesta postagem deve ser reproduzido apenas em um ambiente no qual você possui autorização para a realização de testes de segurança.

ShellShock


O Shellshock explora um bug (alguns consideram como sendo uma funcionalidade) do bash (presente em sistemas Linux e Mac OS X). Para entender melhor a vulnerabilidade vamos dividir a análise em 2 partes: Definição de funções e exploração da vulnerabilidade.

Definição de funções e variáveis de ambiente


No bash podemos definir uma função da seguinte forma:

Figura 01: Definindo uma função
Esta função entretanto não pode ser chamada em uma nova sessão do bash 

Figura 02: Chamando função em nova sessão
Para conseguirmos chamar uma função entre diferentes sessões do bash, precisamos exportar a função como uma nova variável de ambiente.

Figura 03: Exportando a função

 

Explorando a vulnerabilidade


É possível "injetar" mais instruções após o término da definição da função exportada. Os códigos injetados serão executados quando a nova variável de ambiente for processada. A figura 04 apresenta um exemplo no qual um comando ("echo Owned") é injetado após a definição de uma função vazia. Como resultado, o comando injetado é executado pela nova sessão (bash -c).

Figura 04: Injetando comando na variável de ambiente
A figura 05 apresenta mais um exemplo no qual o comando "uname -a" é injetado na definação de uma variável de ambiente.

Figura 05: Injetando comando na varíavel de ambiente 02

 

Exploits publicados: Metasploit 


O pessoal do Metasploit ja publicou alguns módulos (auxiliary) para o ShellShock. Eu vou pegar o módulo "apache_mod_cgi_bash_env" como exemplo. A figura 06 apresenta as opções básicas do módulo.

Figura 06: Módulo apache_mod_cgi_bash_env
O script foi feito para scannear servidores web com arquivos cgi e passa o comando injetado (parâmetro CMD) no 'User-Agent' do cabeçalho HTTP (como demonstrado na figura 07).

Figura 07: Payload no cabeçalho HTTP

Conclusão


Nesta postagem eu fiz uma pequena análise sobre o Shellshock e também demonstrei um módulo do Metasploit publicado para explorar esta vulnerabilidade. Acredito que o Shellshock e o HeartBleed ja podem ser considerados os maiores bugs de 2014 (Mas ainda estamos em Outubro hehehe). Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

quarta-feira, 1 de outubro de 2014

Palestras: XIV SECOMP

Pessoal,

Próxima semana eu vou estar realizando 2 palestras no evento XIV SECOMP da Faculdade Lourenço Filho (FLF). O evento é aberto ao público (não precisa ser aluno da FLF). As palestras serão as seguintes:
  • Segunda-feira (06/10): Pentest e Estudo de Casos
  • Terça-feira (07/10): Pentest em Web Services
As inscrições serão realizadas até a data de início do evento (06/10) e serão feitas SOMENTE na secretaria da Faculdade Lourenço Filho (Rua Barão do Rio Branco 2101, Centro).