mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
129 lines
6.2 KiB
Markdown
129 lines
6.2 KiB
Markdown
# 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}}
|