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).

quinta-feira, 4 de setembro de 2014

Análise: iBrute

Pessoal,

A não ser que você viva dentro de uma caverna, é bem provavel de você ja estar informado sobre o vazamento de dados da nuvem da Apple (iCloud). A Apple ja lançou um depoimento oficial¹ sobre o vazamento de dados no qual é anunciado que não existia vulnerabilidade! (entretanto alguns scripts lançados no github antes do anúncio indicam o contrário). Nesta postagem eu queria fazer uma pequena análise sobre o que ja foi divulgado e o script lançado no github.


Vazamento de Dados


Os vazamentos de dados ocorreram no serviço de núvem da Apple (iCloud). Algumas fontes (fora da Apple) indicam que o ataque ocorreu devido a uma falha (a qual a Apple parece não admitir hehe)  presente no mecanismo de autenticação do serviço "Find My iPhone" (o qual não apresentava um mecanismo para detectar ataques de força-bruta).


Figura 01: Find My iPhone

iBrute (PoC)


O script pode ser encontrado no github:

https://github.com/hackappcom/ibrute/blob/master/id_brute.py

Vou dividir o script em duas partes principais: Wordlists e Método TryPass 

Wordlists


O script começa abrindo 2 wordlists (a primeira para senhas e a segunda para endereços de e-mail) nas linhas 79 a 86. Dois loops são gerados para percorrer os elementos das 2 wordlists (linhas 90 a 106) e chamar um método TryPass (que recebe exatamente 2 parâmetros: e-mail e senha).

Figura 02: Carregando Wordlists

Método TryPass 


O método começa definindo a URL alvo do ataque (a qual vai receber o parâmetro de e-mail). Os dados descritivos do dispositivo (Ex: versão do iOS e identificador do dispositivo) são enviados em uma requisição JSON (linhas 45 a 58) . O método criar uma requisição para realizar uma autenticação HTTP do tipo 'Basic' (no qual as credenciais são enviadas em Base64 para o servidor).

Figura 03: Método TryPass

Conclusão


Nesta pequena postagem eu falei um pouco sobre o vazamento de dados da iCloud e o script publicado no github como prova de conceito. A Apple afirmou de que não existia vulnerabilidade entretanto corrigiu o problema de autenticação no "Find My iPhone" (no mínimo contraditório ?).

¹ http://www.apple.com/pr/library/2014/09/02Apple-Media-Advisory.html

terça-feira, 26 de agosto de 2014

Engenharia Reversa no Corona SDK (Android / iOS)

Pessoal,

Hoje eu vou estar falando um novamente sobre aplicações mobile e também sobre o framework Corona SDK. Eu também vou estar publicando uma ferramenta que acabei desenvolvendo durante alguns projetos que eu peguei contendo aplicações geradas com o Corona SDK.

Introdução


O Corona SDK é um framework para a criação de aplicações mobile (Android e iOS). As aplicações são geradas utilizando a linguagem LUA e posteriormente são "convertidas" para a linguagem específica de cada plataforma (Java para Android e Objective-C para iOS). O Corona SDK se apresenta bastante famoso no cenário de games para dispositivos mobile.

Processo de criação / decompilação


O Corona SDK na realidade transforma os códigos LUA em uma representação intermediária (bytecodes) e armazena tudo em um arquivo chamado 'resource.car'. Para realizar a decompilação vamos ter que realizar os seguintes passos:
  1. Obter o arquivo 'resource.car' de dentro do arquivo apk / ipa (Tarefa fácil de realizar com um dispositivo jailbroken/rooted)
  2. Extrair os bytecodes de cada arquivo no 'resource.car'
  3. Realizar a decompilação do bytescodes e obter o código fonte (este passo pode ser realizado com alguns decompilers públicos ja existentes)

ResourceCarUnpacker.py


Eu criei um pequeno script em Python para automatizar os passos 2 e 3 do processo de extração / decompilação. O script abre o arquivo 'resource.car', extrai os bytecodes de cada arquivo fonte (em um diretorio chamado 'byteCode') e utiliza o 'unluac.jar' para realizar a decompilação dos bytecodes do LUA (o código fonte é guardado em um diretório chamado 'source').

Figura 01: ResourceCarUnpacker.py

A ferramenta esta disponível para download no github:

https://github.com/pasknel/hacking-com-tapioca/blob/master/ResourceCarUnpacker/ResourceCarUnpacker.py

O unluac (decompiler) esta disponível no sourceforge:

http://sourceforge.net/projects/unluac/

quarta-feira, 20 de agosto de 2014

OWASP Chapter: Fortaleza

Pessoal!

Eu e o Alan Aquino estamos reativando o capítulo OWASP de Fortaleza. Aos que não conhecem, OWASP(Open Web Application Security Project) é uma organização sem fins lucrativos que atua em todo o mundo e é focada em melhorar a segurança de aplicações Web através de pesquisas e compartilhamento de conhecimento.

Acesse a página pelo link abaixo e inscreva-se na lista.
https://www.owasp.org/index.php/Fortaleza

Por favor, divulguem!

Keep Hacking!

sexta-feira, 15 de agosto de 2014

Python + Android + RE = AndroGuard

Pessoal,

Hoje eu decidi escrever um pouco sobre uma ferramenta que eu descobri recentemente e achei muito interessante (vou fazer um pequeno tutorial hehe)! O AndroGuard é uma ferramenta escrita em Python para realizar engenharia reversa em aplicações para Android (muito bom para análise estática e automatização de tarefas comuns de RE). Espero mostrar nessa postagem uma pouco sobre a utilização do AndroGuard e algumas de suas principais funcionalidades.

Instalação 

 

Você pode instalar o AndroGuard facilmente:
  • hg clone https://androguard.googlecode.com/hg/ androguard 
Python 2.6 (ou superior) é necessário para rodar o AndroGuard. Você também pode instalar alguns pacotes opcionais (Ubuntu/Debian):
  • sudo apt-get install python-dev python-bzutils libbz2-dev libmuparser-dev libsparsehash-dev python-ptrace python-pygments python-pydot graphviz liblzma-dev libsnappy-dev
  • sudo easy_install ipython

 

Análise Estática: Iniciando o Androlyze


Para iniciar o androguard, vamos utilizar o  'androlyze.py' (Figura 01)

Figura 01: Rodando o androlyze.py
 O método 'AnalyzeAPK' pode ser utilizado para iniciar uma análise em um determinado arquivo apk (Figura 02). Este método recebe dois parâmetros de entrada (path do apk e o nome do decompiler que vai ser utilizado) e devolve três variáveis (objetos): apk (APK), dvm (DalvikVMFormat) e dex (VMAnalysis). Vamos ver que informações podemos tirar de cada um desses objetos.

Figura 02: AnalyzeAPK

 

Análise Estática: AndroidManifest.xml


Podemos utilizar nosso objeto apk para tirar algumas informações básicas do AndroidManifest.xml (como por exemplo: Permissões, Activities e Services). Vamos começar visualizando as permissões utilizadas pelo aplicativo (Figura 03).

Figura 03: Listando permissões
Activities também podem ser facilmente exibidas com o método 'get_activities'.

Figura 04: Listando Activities
Broadcast receivers e Services também podem ser listados (Figura 05).

Figura 05: Broadcast receivers e Services
O objeto apk oferece outros métodos muito interessantes para retirar informações básicas sobre o AndroidManifest. Você pode utilizar o método 'show' para pegar uma descrição mais detalhada sobre o arquivo Apk e o AndroidManifest.xml. Eu não coloquei nenhum exemplo de Content Providers por que o apk que eu estou analisando não possui nenhum deles.

Análise Estática: Decompilação

 

O próximo passo é listar os métodos e variáveis de cada classe. Podemos utilizar os método 'get_classes', 'get_methods' e 'get_fields' do objeto dvm para obter as informações desejadas. A figura 06 apresenta um exemplo contendo um pequeno loop para exibir os nomes das variáveis e métodos de todas as classes.

Figura 06: Obtendo informações de classes
Podemos utilizar o método 'get_class' para pegar uma classe específica. Para terminar este pequeno tutorial, podemos também obter o código fonte (ou algo próximo ao original) das classes com o método 'source'. A figura 07 apresenta um exemplo de código fonte obtido de uma classe específica.

Figura 07: Exemplo de decompilação

Conclusão


Nesta postagem eu escrevi um pequeno tutorial sobre o AndroGuard. Esta ferramenta é ótima para análise estática de aplicações desenvolvidas para Android. Eu acredito que a vantagem do AndroGuard é centralizar as funcionalidades de várias ferramentas e um único lugar. Você também utilizar esta ferramenta para automatizar algumas tarefas em seu processo de análise estática. Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

terça-feira, 22 de julho de 2014

quarta-feira, 9 de julho de 2014

Palestra: Pentest em SharePoint (ROADSEC 2014)

Pessoal,

Eu vou estar palestrando no ROADSEC 2014 (Fortaleza) no dia 19/07. O tema da palestra vai ser "Pentest em SharePoint". O evento vai ser realizado na Universidade de Fortaleza (UNIFOR). Para maiores informações ai vai o link do evento: 

http://roadsec.com.br/fortaleza