Analisando malware em Android: Primeiros passos.

Analisando malware em Android: Primeiros passos.

Ao longo deste ano, temos compartilhado com você uma grande quantidade de análises e situações em  que um código malicioso para dispositivos móveis afetou aos usuários de Android, não somente a nível mundial como também na América Latina. Por outro lado, temos comentado sobre os resultados das investigações que realizamos no Laboratório da ESET Latinoamérica,

Ao longo deste ano, temos compartilhado com você uma grande quantidade de análises e situações em  que um código malicioso para dispositivos móveis afetou aos usuários de Android, não somente a nível mundial como também na América Latina. Por outro lado, temos comentado sobre os resultados das investigações que realizamos no Laboratório da ESET Latinoamérica,

Ao longo deste ano, temos compartilhado com você uma grande quantidade de análises e situações em  que um código malicioso para dispositivos móveis afetou aos usuários de Android, não somente a nível mundial como também na América Latina. Por outro lado, temos comentado sobre os resultados das investigações que realizamos no Laboratório da ESET Latinoamérica, não tínhamos compartilhado com vocês sobre as metodologias de análises, as técnicas ou ferramentas que podem-se utilizar para este assunto.

Na primeira instancia, uma vez que definimos os objeticos das análises deveríamos falar sobre as ferramentas que podemos utilizar, onde encontrá-las e como preparar um correto ambiente para a análise de malware em Android. Para simplificar um pouco esta tarefa, vamos nos centrar em uma distribuição de Linux:  Santoku. Esta distribuição vem especialmente armada para poder analisar códigos maliciosos, buscar vulnerabilidades ou outra grande quantidade de tarefas em relação as plataformas móveis portanto conta com muitas ferramentas úteis e efetivas para analisar malware, atualmente a versão disponível é a 0.3 Alpha.

Ferramentas como apktool, dex2jar, Droidbox, Androguard, são de grande utilidade no momento de analisar um malware para Android. Cada uma delas tem distintas funcionalidades e somodas a um pouco de trabalho o resultado é ótimo.  Uma aplicação de Android é na realidade um arquivo com extensão “.apk” o qual da mesma forma, se alguém tentar abrir um arquivo compactado que se parece com a seguinte estrutura:

O diretório META-INF encontram-se os certificados da aplicação e outra  informação sobre sua estrutura. A pasta res contém os recursos da aplicação como por exemplo os ícones, imagens e outros dados mas que não se encontram compilados. Logo temos 3 arquivos no diretório raiz, o arquivo resources.arsc contém todos os recursos compilados para a aplicação, classes.dex que contém o código da aplicação compilado em um formato que interpreta a máquina virtual de Dalvik e o arquivo AndroidManifest.xml é onde se encontra informação sobre a aplicação como por exemplo, permissões, serviços, recebimentos e a versão de Android com a qual é mais compatível.

Sem extrairmos o AndroidManifest.xml e tentarmos ler seu conteúdo é possível observar que não se encontra legível, o mesmo ocorre com o arquivo classes.dex, para evitar um trabalho complicado de compreender estes formatos, veremos de que maneira levá-los a uma linguagem mais legível e fácil de entender. Acompanharemos a aprendizagem das análises de malware para Android com um caso real, pelo tanto vamos a analisar o arquivo como MD5: b1ae0d9a2792193bff8c129c80180ab0.

Vamos utilizar apktool para decodificar o arquivo e poder ler seu conteúdo e desta maneira analisar as permissões que solicita a aplicação para sua instalação e execução. É muito importante ler com atenção a informação fornecida pelo AndroidManifest.xml já que se podem identificar características importantes da aplicação ou sessões de seu código das quais vamos prestar atenção a medida que avançamos com as análises:

Ao ler o conteúdo do arquivo, pode-se identificar sua estrutura e suas sessões. Dentro da informação que provê este arquivo pode-se identificar a versão  da aplicação (android: versionCode e android:VersionName) em que versão de Android funciona  (android:minSDKVersion) como assim também as permissões que requer para sua execução. No caso de ameaça analisada, pode-se observar que solicita uma grande quantidade de permissões, os quais devemos analisar em detalhe e com o tempo aprender a identificar quais são mais perigosas que outras.

Uma vez que identifiquemos as principais seções da aplicação e os pontos mais importantes chega o momento de analisar o código e ver em detalhe quais são as ações tomadas em caso de que sucedam os eventos que nos importam. Neste momento, é importante entender que é o que devemos buscar e como encontrá-lo. Por exemplo, se se tenta analisar que código que se executa quando chega um mensagem de texto, tem que se buscar dentro da pasta  smali o arquivo SecurityReceiver.smali, ao abri-lo podemos ver o bytecode da aplicação e analisar seu funcionamento:

Recapitulemos, ao iniciar as análises de um código malicioso para Android uma das primeiras coisas que se deve fazer é entender sua estrutura, buscar as permissões e para logo investigar em detalhe o que se faz na aplicação e tentar acessar seu código. Até agora vimos como descompilar o malware com apktool e acessar os recursos como no AndroidManifest.xml e encontrar o bytecode da aplicação e os métodos e classes que queremos analisar, ainda que fique muito por fazer. Na próxima parte veremos a estrutura dos componentes mais importantes de uma aplicação e como obter o código de uma maneira mais legível, para continuar com as análises, se querem conhecer mais informações sobre o código malicioso que estamos analisando, podem acessar ao Trojan em Android: Violando sistemas dedupla autenticação  e Android Botnets: o roubo de mensagens de texto.

Mantenham-se atentos porque continuaremos as análises de malware em Android nas próximas semanas!

Pablo Ramos

Security Researcher

Discussão