
Programa ideal para robar toda la información de un dispositivo remotamente a través de la aplicación AirDroid. [CVE-2019-9599] (https://www.exploit-db.com/exploits/46337)
Vídeo PoC do Exploit: https://www.youtube.com/watch?v=0QDM224_6DM
CVE: https://nvd.nist.gov/vuln/detail/CVE-2019-9599
Exploit-db: https://www.exploit-db.com/exploits/46337
AirDroid é uma das ferramentas mais conhecidas e utilizadas para controlar remotamente um computador, mais concretamente através do navegador.
Para controlar e gerir o dispositivo que sustenta o serviço, é necessária uma fase prévia de aceitação por parte do cliente, onde figura uma 'Message Box' como a que se apresenta a seguir:
Uma vez aceite a conexão, o responsável pela sessão pode gerir o dispositivo a partir do navegador, podendo realizar as seguintes tarefas, entre outras:
Apesar de não partilhar o PoC que se encarrega de fazer bypass à validação do lado do cliente, partilhei alguns scripts de utilidade para a extração de informação privilegiada uma vez aceite a conexão.
Da mesma forma, partilhei os scripts 'airdroid_dos.sh' e 'airdroid_fast_dos.sh', que se encarregam de realizar uma ação do tipo 'Remote DoS Application & System Crash', onde por meio destes se consegue fazer com que o serviço corrompa remotamente, bem como conseguir congelar o dispositivo móvel enchendo toda a memória até que fique inoperante:
Começamos executando o script 'AirDroidPwner.py', onde será necessário fornecer a nossa KEY do Shodan para encontrar um grande punhado de dispositivos com o serviço AirDroid em execução:
# Usa tu API KEY de Shodan
SHODAN_API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
api = shodan.Shodan(SHODAN_API_KEY)
A execução é feita da seguinte forma:
python AirDroidPwner.py
Como se pode ver, muito complexo. Após a execução, através da API do Shodan, numa primeira instância serão armazenadas num array todas as IPs que o próprio Shodan indexa sobre a pesquisa realizada, neste caso do serviço AirDroid (porta 8888).
Uma vez encontradas, realiza-se um processo de validação para verificar que realmente os Hosts encontrados têm o serviço habilitado, atendendo para isso ao código de estado que devolve a resposta do lado do servidor após realizar uma simples solicitação.
Após obter o novo array com os elementos correspondentes aos Hosts ativos, estes são exportados para um ficheiro com o nome 'ips'. Atualmente existem os seguintes modos de operação:
Após a aceitação da conexão (a solicitação é lançada contra os Hosts e é questão de que algum deles a aceite [Infelizmente, verás que muitos o fazem...]), o identificador da sessão é armazenado no parâmetro 7bb, a partir do qual posteriormente se gerem as consultas:
def get_identifier(r_json):
identifier_session = r_json["7bb"]
return identifier_session
No caso de o cliente não aceitar a conexão, estes serão armazenados num vetor de conexões rejeitadas para posteriormente iniciar um ataque do tipo (O atacante pode decidir <y/n>):
Onde, fazendo uso das 'Message Box', através de um loop principal de iterações modificáveis (por defeito 10) juntamente com subloops que realizam 3.000 solicitações em thread sobre as vítimas, consegue-se encher a memória RAM do dispositivo, causando não só uma negação de serviço remota da aplicação mas também um Remote System Crash, onde o dispositivo fica completamente inoperante forçando um reinício do sistema.
Esta vulnerabilidade afeta não só a última versão do AirDroid mas também todas as que a precedem.
No caso de a vítima nos aceitar a conexão, estas são as operações que atualmente a ferramenta tem implementadas:
Adicionalmente, também podemos executar os scripts 'airdroid_dos.sh' e 'airdroid_fast_dos.sh'. A principal diferença entre ambos é que o segundo vai diretamente ao ataque, o primeiro realiza uma breve verificação inicial para ver se o Host tem o serviço ativo, etc. (Lado mais comercial).
No caso de querer gerir o acesso a partir do navegador web, uma vez executado o script 'AirDroidPwner.py' e exportada a listagem de IPs no ficheiro 'ips', é possível executar o script 'web_browser.py' para abrir num navegador todos os serviços ativos.
Tarefas: