hacktricks/mobile-pentesting/cordova-apps.md

97 lines
7.2 KiB
Markdown
Raw Normal View History

# Aplicações Cordova
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Informações retiradas do post [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)
## Informações Básicas
Apache Cordova é um framework popular que permite **criar aplicações híbridas** (Android & iOS) usando **JavaScript, HTML e CSS**.
Um dos principais problemas com o Cordova é que ele **não possui um método padrão para proteger** a **fonte** da aplicação, ao contrário do react-native. A fonte da aplicação Cordova não tem um método padrão para compilá-la, o que facilita a **manipulação do código**. A aplicação Cordova usa WebView para renderizar a aplicação usando HTML e JS, o que revela o código-fonte mesmo após compilá-lo para APK ou IPA, enquanto o react native usa JavaScript VM para executar o código JavaScript.
### Clonando Aplicação Cordova <a href="#8f50" id="8f50"></a>
Para criar uma aplicação Cordova, precisamos instalar o NodeJS. Além do NodeJS, precisamos de algumas outras coisas instaladas para completar o processo de construção, como Android SDK, Java JDK e Gradle. Você pode seguir a [documentação oficial](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) para a lista de requisitos.
Para este exemplo, podemos assumir que o nome da aplicação original é `Bank.apk` e o nome do pacote `com.android.bank`
Descompacte o `bank.apk` e abra a pasta `bank/assets/www`. Podemos visualizar a **fonte completa da aplicação Cordova**. Todo o código HTML e JS pode ser usado para criar um clone da aplicação. Também podemos encontrar o arquivo de configuração da aplicação em `bank/res/xml/config.xml`.
Agora podemos criar um novo projeto de aplicação Cordova:
```bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Agora precisamos copiar todos os arquivos e pastas de `bank/assets/www` para `bank-new/www.`
Ao copiar o código-fonte, precisamos excluir alguns arquivos e pastas como `cordova_plugins.js, cordova.js, cordova-js-src/, plugins/`. Podemos copiar todos os arquivos e pastas excluindo os mencionados acima.
Quando criamos um novo projeto Cordova, precisamos mencionar se o aplicativo é para Android ou iOS. Como estamos clonando o aplicativo Android, precisamos adicionar uma plataforma Android a ele. No Cordova, temos as versões da plataforma, cada versão possui diferentes recursos e suporte para APIs do Android ou versões do Android.
A API do Android e as versões da plataforma Cordova Android são diferentes. Você pode [verificar](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) a lista de versões da plataforma e seu suporte para APIs do Android.
Para adicionar a plataforma Cordova Android, precisamos descobrir qual versão foi originalmente usada pelo aplicativo. Se você usar uma versão diferente, pode enfrentar problemas, pois estamos usando o mesmo código-fonte para clonar o aplicativo. Você pode abrir o arquivo `cordova.js` e procurar `PLATFORM_VERSION_BUILD_LABEL` para encontrar a versão usada pelo aplicativo.
\
Agora que adicionamos suporte à plataforma Android, podemos adicionar todos os plugins necessários usados pelo aplicativo. No aplicativo original `bank/assets/www/cordova_plugins.js`, podemos encontrar uma lista de todos os plugins usados pelo aplicativo. Precisamos instalar esses plugins um por um. Procure por `module.exports.metadata` no arquivo `cordova_plugins.js`. Também podemos ver todos os plugins com suas versões.
<figure><img src="https://miro.medium.com/v2/resize:fit:1124/1*Hap3DmxS6-1apNj5RfpC3g.png" alt="Cordova Plugins" height="570" width="562"><figcaption><p>Plugins Cordova</p></figcaption></figure>
Precisamos instalar todos os plugins um por um com a ajuda do comando abaixo
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
{% hint style="warning" %}
Se um plugin não estiver disponível na pesquisa npm, procure-o no Github:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
{% endhint %}
Para compilar a aplicação, precisamos garantir que todos os requisitos já estejam instalados.
```bash
cd bank-new
cordova requirements
```
Uma vez que tenhamos toda a configuração pronta, podemos construir o apk.
```bash
cd bank-new
cordova build android — packageType=apk
```
O comando de build acima criará um apk com o método de debug ativado, o que nos permite depurar a aplicação usando o Google Chrome. Antes de instalar o apk, certifique-se de assiná-lo. Se a aplicação tiver detecção de adulteração de código, ela será contornada, a menos que não haja uma configuração específica definida.
### Ferramenta Automática
[**MobSecco**](https://github.com/Anof-cyber/MobSecco): Uma ferramenta que automatiza o processo completo de clonagem da aplicação Android.
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>