* 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)
* 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).
Vá para o aplicativo **Cydia/Sileo** em seu dispositivo com Jailbreak e adicione o repositório do Frida indo para **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 Frida**, agora você deve **instalar** o pacote **Frida**.
Se você estiver usando o **Corellium**, precisará baixar a versão 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 o local dylib que o Frida solicita, por exemplo: `/Users/[seuusuário]/.cache/frida/gadget-ios.dylib`
Após a instalação, você pode usar o comando **`frida-ls-devices`** em seu PC e verificar se o dispositivo aparece (seu PC precisa ter acesso a ele).\
Confira este post no blog sobre como usar o Frida em dispositivos sem Jailbreak sem patch no 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)
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
```
## Rastreamento com Frida
Frida is a dynamic instrumentation toolkit that allows you to inject JavaScript code into running processes. It is commonly used for reverse engineering, debugging, and dynamic analysis of mobile applications. In this section, we will explore how to configure Frida for iOS pentesting.
O Frida é um conjunto de ferramentas de instrumentação dinâmica que permite injetar código JavaScript em processos em execução. É comumente usado para engenharia reversa, depuração e análise dinâmica de aplicativos móveis. Nesta seção, exploraremos como configurar o Frida para pentesting em iOS.
### Installation
### Instalação
To install Frida on your iOS device, you will need to have a jailbroken device. Once your device is jailbroken, you can install Frida using the following steps:
Para instalar o Frida em seu dispositivo iOS, você precisará ter um dispositivo com jailbreak. Depois de fazer o jailbreak em seu dispositivo, você pode instalar o Frida seguindo as etapas a seguir:
Seguindo essas etapas, você pode configurar o Frida para pentesting em iOS e começar a rastrear aplicativos em seu dispositivo iOS. Boa sorte nas suas atividades de hacking!
// In this case to call this function we need to intercept a call to it to copy arg0
Interceptor.attach(wg_log_addr, {
onEnter: function(args) {
arg0 = new NativePointer(args[0]);
}
});
// Wait untill a call to the func occurs
while (! arg0) {
Thread.sleep(1);
console.log("waiting for ptr");
}
var arg1 = Memory.allocUtf8String('arg1');
var txt = Memory.allocUtf8String('Some text for arg2');
wg_log(arg0, arg1, txt);
console.log("loaded");
```
## Frida Fuzzing
### Frida Stalker
Stalker é o **motor de rastreamento** de código do Frida. Ele permite que threads sejam **seguidos**, **capturando** cada função, **cada bloco**, até mesmo cada instrução que é executada.
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:
console.log(`logging the following message: ${args[2].readCString()}`);
Stalker.follow({
events: {
// only collect coverage for newly encountered blocks
compile: true,
},
onReceive: function (events) {
const bbs = Stalker.parse(events, {
stringify: false,
annotate: false
});
console.log("Stalker trace of write_msg_to_log: \n" + bbs.flat().map(DebugSymbol.fromAddress).join('\n'));
}
});
},
onLeave: function(retval) {
Stalker.unfollow();
Stalker.flush(); // this is important to get all events
}
});
```
{% hint style="danger" %}
Isso é interessante para fins de depuração, mas para fuzzing, ficar constantemente **`.follow()`** e **`.unfollow()`** é muito ineficiente.
{% endhint %}
## [Fpicker](https://github.com/ttdennis/fpicker)
[**fpicker**](https://github.com/ttdennis/fpicker) é uma suíte 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. Ele deve ser executado em todas as plataformas suportadas pelo Frida.
* Chame o fuzzer **`fpicker`** usando **`radamsa`**:
{% code overflow="wrap" %}
```bash
# Indicate fpicker to fuzz a program with the harness.js script and which folders to use
fpicker -v --fuzzer-mode active -e attach -p <Programtofuzz> -D usb -o examples/wg-log/out/ -i examples/wg-log/in/ -f harness.js --standalone-mutator cmd --mutator-command "radamsa"
# You can find code coverage and crashes in examples/wg-log/out/
```
{% endcode %}
{% hint style="danger" %}
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 **causar falhas no aplicativo** (porque o aplicativo está em um estado instável), mesmo que a **entrada não deva causar falhas** no aplicativo.
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 evitar isso, por exemplo, poderíamos reiniciar o aplicativo após cada falha do Frida.
{% endhint %}
### Logs e Falhas
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 o **`idevicesyslog`**.\
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:
```sh
vim /Library/Preferences/Logging/com.apple.system.logging.plist
<?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">
<plistversion="1.0">
<dict>
<key>Enable-Private-Data</key>
<true/>
</dict>
</plist>
killall -9 logd
```
Você pode verificar os crashes em: 
* **iOS**
* Configurações → Privacidade → Análise e Melhorias → Dados de Análise
* 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)!
* 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 para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).