Como obter acesso ao shell do sistema em qualquer dispositivo Samsung Galaxy

Links Rápidos

  • Pré-requisitos
  • Como explorar qualquer dispositivo Samsung Galaxy para obter acesso ao shell do sistema
  • Verificação
  • Conclusão

Na primeira segunda-feira de cada mês, o Google publica o Boletim de segurança do Android. Ele divulga todas as vulnerabilidades de segurança atenuadas em vários componentes do sistema operacional Android como bem como o kernel Linux e seus patches enviados pelo próprio Google ou por terceiros para esse data. Grandes OEMs como a Samsung têm sua própria opinião sobre o Android, então optam por incluir seus próprios patches e atualizações também em atualizações de segurança.

Dito isso, é muito difícil cuidar de todas as lacunas. Existe uma infinidade de vetores de ataque e, às vezes, você pode criar sua própria cadeia de exploração com base em uma vulnerabilidade anteriormente conhecida apenas porque você tem um novo método para contornar um dos proteções. Isso é exatamente o que o membro sênior do XDA K0mraid3 fez isso com uma vulnerabilidade de quatro anos, que lhe permitiu obter acesso ao shell do sistema em todos os dispositivos Samsung Galaxy – incluindo os mais recentes. Embora não seja o mesmo que

tendo privilégios de root, é um escalonamento de privilégios locais suficientemente alto.

O principal ponto de entrada da vulnerabilidade está no Samsung Text-To-Speech (nome do pacote: com.samsung. SMT), um aplicativo de sistema pré-carregado que pode ser encontrado em todos os dispositivos Samsung Galaxy. A ideia é fazer o downgrade da versão instalada do aplicativo para uma versão vulnerável específica (v3.0.02.2 para ser mais preciso) e então forçá-lo a carregar uma biblioteca, que por sua vez abre um shell com privilégio de sistema (UID 1000).

Se você quiser saber mais sobre a exploração, não deixe de conferir Explicação do editor técnico líder do XDA, Adam Conway. Ele conversou com K0mraid3 para compreender todo o escopo dessa exploração e como ela funciona.

  1. Para reiterar, este não é o acesso root (UID 0), mas o acesso ao shell do sistema é poderoso o suficiente para executar vários binários restritos.
  2. A prova de conceito do K0mraid3 requer um APK auxiliar e você precisa executá-lo pelo menos uma vez antes de iniciar a cadeia de exploração.
  3. Uma UI, ou seja, as rotinas de economia de energia integradas do skin Android personalizado da Samsung podem ser problemáticas, pois podem dificultar a comunicação entre o aplicativo TTS, o APK auxiliar e o shell. Assim, sugerimos definir previamente o perfil de economia de energia para “Irrestrito” para os aplicativos.

Pré-requisitos

  1. Baixe a versão pré-compilada do exploit no site Tópico do fórum XDA ou o repositório oficial do GitHub com link abaixo: Exploração do shell do sistema K0mraid3s
  2. Extraia o arquivo em algum lugar e você encontrará a versão vulnerável do APK Samsung Text-To-Speech (samsungTTSVULN2.apk), o aplicativo auxiliar (Komraid3s_POC_Vx.x.apk) e um executável do Windows chamado systemshell-vx.x.exe.
  3. Certifique-se de que a versão mais recente do BAD está instalado no seu PC/Mac/Chromebook. Além disso, lembre-se de instalar/atualizar os drivers USB da Samsung se você for um usuário do Windows.

Como explorar qualquer dispositivo Samsung Galaxy para obter acesso ao shell do sistema

Método manual

  1. Conecte o dispositivo Galaxy de destino ao seu PC com a depuração USB ativada, certifique-se de que ele possa ser descoberto pelo ADB e instale o aplicativo auxiliar.
    adb install Komraid3s_POC_Vx.x.apk
    • Conforme mencionado anteriormente, abra o aplicativo auxiliar pelo menos uma vez antes de prosseguir para a próxima etapa.
  2. Agora envie a versão vulnerável do aplicativo Samsung TTS para /data/local/tmp e altere suas permissões:
    adb push samsungTTSVULN2.apk /data/local/tmp
    adb shell chmod 777 /data/local/tmp/samsungTTSVULN2.apk
  3. Reinicie o dispositivo. Assim que estiver na tela inicial, execute o seguinte comando para substituir a versão já instalada do aplicativo Samsung TTS pela versão vulnerável:
    adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk
    • Se tudo correr bem, você deverá ver uma mensagem de “Sucesso” no console.
  4. Abra um shell no dispositivo de destino abrindo outra janela de terminal e executando shell adb, execute o binário Netcat e ouça uma conexão de entrada na porta 9997 com o seguinte comando:
    adb shell nc -lp 9997
  5. Nesta fase, precisamos executar uma atividade específica do aplicativo Samsung TTS, que abrirá o shell do sistema para nós.
    • Use um aplicativo de terceiros como esse para criar um atalho do “com.samsung. SMT/.gui. atividade DownloadList”.
    • Você também pode usar o próprio gerenciador de atividades do Android (am) para fazer o mesmo. Nesse caso, você pode executá-lo via ADB (adb shell am start -n com.samsung. SMT/.gui. DownloadList) ou use um aplicativo emulador de terminal em seu telefone/tablet como Termux e execute o seguinte comando:
      am start -n com.samsung.SMT/.gui.DownloadList
  6. Volte para o primeiro shell e você verá um novo prompt com privilégio de sistema (UID 1000).

Método automatizado

Para facilitar as coisas, K0mraid3 também fornece um aplicativo GUI fácil de usar para automatizar a maioria das tarefas. Lembre-se de que o aplicativo GUI é somente para Windows, portanto, se você for um usuário Linux/macOS, é melhor seguir o método manual.

  1. Conecte o dispositivo Galaxy de destino ao seu PC com a depuração USB ativada, certifique-se de que ele possa ser descoberto pelo ADB e instale o aplicativo auxiliar.
    adb install Komraid3s_POC_Vx.x.apk
    • Conforme mencionado anteriormente, abra o aplicativo auxiliar pelo menos uma vez antes de prosseguir para a próxima etapa.
  2. Com o dispositivo de destino detectável pelo ADB, execute systemshell-vx.x.exe no PC host.
  3. Clique no botão “INICIAR SHELL”. O aplicativo fará o downgrade automaticamente do aplicativo Samsung TTS e tentará abrir o shell do sistema.
    • No seu telefone/tablet, você poderá ver o aplicativo TTS solicitando que você baixe alguns dados de voz. Não há necessidade de interagir com essas opções, pois elas não têm nada a ver com a exploração.
    • Caso o aplicativo trave ou não consiga abrir a janela do shell após algum tempo, feche-o, reinicie o dispositivo Galaxy de destino e reinicie.
    • O aplicativo Galaxy Store pode atualizar e/ou redefinir automaticamente o perfil de economia de energia do aplicativo TTS em segundo plano, portanto, verifique-o antes de iniciar o processo do zero.

Verificação

Depois de obter acesso ao shell, você pode verificar o nível de privilégio usando um dos comandos abaixo:

  • whoami
    • A saída deve ser “sistema”
  • id -u
    • A saída deve ser “1000”

Conclusão

A maneira típica de obter acesso root em um dispositivo Android é primeiro desbloquear o bootloader, que permite inicializar binários de terceiros. Como o modelo de segurança do Android basicamente desmorona com o root, esta etapa desabilita intencionalmente um dos principais recursos de segurança do dispositivo, que é por isso que o usuário deve permitir explicitamente que isso aconteça, normalmente ativando uma alternância nas Opções do desenvolvedor e, em seguida, emitindo um comando de desbloqueio para o carregador de inicialização. Assim que o bootloader for desbloqueado, o usuário pode introduzir um binário de superusuário no sistema e também um aplicativo de gerenciamento de superusuário (como Magisk) para controlar quais processos têm acesso ao root.

Com a exploração do shell do sistema mencionada acima, entretanto, o usuário não precisa desbloquear o bootloader para obter um privilégio escalonado. Embora esteja longe de ser root, o usuário do "sistema" é capaz o suficiente para acessar diversas partições de baixo nível (como como /efs), inicie várias ferramentas de serviço e depuração e altere muitos valores de prop protegidos - tudo sem sequer tropeçar Nox. Esses exemplos abordam apenas alguns aspectos; um ator mal-intencionado pode combinar isso com outras vulnerabilidades e realizar ações mais nefastas.

Teremos que esperar e ver como o Google e a Samsung abordam o cenário. De qualquer forma, você provavelmente deve desativar ou remover o aplicativo Samsung Text-To-Speech por enquanto.