hacktricks/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md

129 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Habilitar Modo Monitor e Injeção de Pacotes NexMon no Android (chips Broadcom)
{{#include ../../banners/hacktricks-training.md}}
## Visão Geral
A maioria dos telefones Android modernos incorpora um chipset Wi-Fi Broadcom/Cypress que é enviado sem modo monitor 802.11 ou capacidades de injeção de quadros. O framework de código aberto NexMon modifica o firmware proprietário para adicionar esses recursos e os expõe através de uma biblioteca compartilhada (`libnexmon.so`) e um helper CLI (`nexutil`). Ao pré-carregar essa biblioteca no driver Wi-Fi padrão, um dispositivo com root pode capturar tráfego bruto 802.11 e injetar quadros arbitrários eliminando a necessidade de um adaptador USB externo.
Esta página documenta um fluxo de trabalho rápido que usa um Samsung Galaxy S10 totalmente corrigido (BCM4375B1) como exemplo, utilizando:
* Módulo Magisk NexMon contendo o firmware corrigido + `libnexmon.so`
* Aplicativo Android Hijacker para automatizar a alternância do modo monitor
* Chroot Kali NetHunter opcional para executar ferramentas sem fio clássicas (aircrack-ng, wifite, mdk4 …) diretamente contra a interface interna
A mesma técnica se aplica a qualquer dispositivo que tenha um patch NexMon disponível publicamente (Pixel 1, Nexus 6P, Galaxy S7/S8, etc.).
---
## Pré-requisitos
* Dispositivo Android com um chipset Broadcom/Cypress suportado (por exemplo, BCM4358/59/43596/4375B1)
* Root com Magisk ≥ 24
* BusyBox (a maioria das ROMs/NetHunter já o inclui)
* ZIP Magisk NexMon ou patch auto-compilado fornecendo:
* `/system/lib*/libnexmon.so`
* `/system/xbin/nexutil`
* Hijacker ≥ 1.7 (arm/arm64) [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker)
* (Opcional) Kali NetHunter ou qualquer chroot Linux onde você pretende executar ferramentas sem fio
---
## Flashing o patch NexMon (Magisk)
1. Baixe o ZIP para o seu dispositivo/firmware exato (exemplo: `nexmon-s10.zip`).
2. Abra o Magisk -> Módulos -> Instalar do armazenamento -> selecione o ZIP e reinicie.
O módulo copia `libnexmon.so` para `/data/adb/modules/<module>/lib*/` e garante que os rótulos SELinux estejam corretos.
3. Verifique a instalação:
```bash
ls -lZ $(find / -name libnexmon.so 2>/dev/null)
sha1sum $(which nexutil)
```
---
## Configurando o Hijacker
O Hijacker pode alternar o modo monitor automaticamente antes de executar `airodump`, `wifite`, etc. Em **Configurações -> Avançado** adicione as seguintes entradas (edite o caminho da biblioteca se seu módulo for diferente):
```
Prefix:
LD_PRELOAD=/data/user/0/com.hijacker/files/lib/libnexmon.so
Enable monitor mode:
svc wifi disable; ifconfig wlan0 up; nexutil -s0x613 -i -v2
Disable monitor mode:
nexutil -m0; svc wifi enable
```
Ative “Iniciar modo monitor ao iniciar airodump” para que cada varredura do Hijacker aconteça no modo monitor nativo (`wlan0` em vez de `wlan0mon`).
Se o Hijacker mostrar erros ao iniciar, crie o diretório necessário no armazenamento compartilhado e reabra o aplicativo:
```bash
mkdir -p /storage/emulated/0/Hijacker
```
### O que significam essas flags do `nexutil`?
* **`-s0x613`** Escreve a variável de firmware 0x613 (FCAP_FRAME_INJECTION) → `1` (habilita TX de quadros arbitrários).
* **`-i`** Coloca a interface em modo monitor (o cabeçalho radiotap será adicionado).
* **`-v2`** Define o nível de verbosidade; `2` imprime confirmação e versão do firmware.
* **`-m0`** Restaura o modo gerenciado (usado no comando *disable*).
Após executar *Enable monitor mode*, você deve ver a interface em estado de monitor e ser capaz de capturar quadros brutos com:
```bash
airodump-ng --band abg wlan0
```
---
## Linha única manual (sem Hijacker)
```bash
# Enable monitor + injection
svc wifi disable && ifconfig wlan0 up && nexutil -s0x613 -i -v2
# Disable and return to normal Wi-Fi
nexutil -m0 && svc wifi enable
```
Se você só precisa de sniffing passivo, omita a flag `-s0x613`.
---
## Usando `libnexmon` dentro do Kali NetHunter / chroot
As ferramentas de espaço do usuário padrão no Kali não conhecem o NexMon, mas você pode forçá-las a usá-lo via `LD_PRELOAD`:
1. Copie o objeto compartilhado pré-construído para o chroot:
```bash
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
```
2. Ative o modo monitor a partir do **host Android** (comando acima ou através do Hijacker).
3. Inicie qualquer ferramenta sem fio dentro do Kali com o preload:
```bash
sudo su
export LD_PRELOAD=/lib/kalilibnexmon.so
wifite -i wlan0 # ou aircrack-ng, mdk4 …
```
4. Quando terminar, desative o modo monitor como de costume no Android.
Como o firmware já lida com a injeção de radiotap, as ferramentas de espaço do usuário se comportam exatamente como em um adaptador Atheros externo.
---
## Ataques Típicos Possíveis
Uma vez que monitor + TX está ativo, você pode:
* Capturar handshakes WPA(2/3-SAE) ou PMKID com `wifite`, `hcxdumptool`, `airodump-ng`.
* Injetar quadros de desautenticação / desassociação para forçar os clientes a reconectar.
* Criar quadros de gerenciamento/dados arbitrários com `mdk4`, `aireplay-ng`, Scapy, etc.
* Construir APs maliciosos ou realizar ataques KARMA/MANA diretamente do telefone.
O desempenho no Galaxy S10 é comparável a NICs USB externos (~20 dBm TX, 2-3 M pps RX).
---
## Solução de Problemas
* `Device or resource busy` certifique-se de que o **serviço Wi-Fi do Android está desativado** (`svc wifi disable`) antes de ativar o modo monitor.
* `nexutil: ioctl(PRIV_MAGIC) failed` a biblioteca não está pré-carregada; verifique novamente o caminho `LD_PRELOAD`.
* A injeção de quadros funciona, mas nenhum pacote capturado alguns ROMs bloqueiam canais; tente `nexutil -c <channel>` ou `iwconfig wlan0 channel <n>`.
* SELinux bloqueando a biblioteca defina o dispositivo como *Permissivo* ou corrija o contexto do módulo: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
---
## Referências
* [Hijacker on the Samsung Galaxy S10 with wireless injection](https://forums.kali.org/t/hijacker-on-the-samsung-galaxy-s10-with-wireless-injection/10305)
* [NexMon firmware patching framework](https://github.com/seemoo-lab/nexmon)
* [Hijacker (aircrack-ng GUI for Android)](https://github.com/chrisk44/Hijacker)
{{#include ../../banners/hacktricks-training.md}}