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

129 lines
6.4 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.

# Włącz tryb monitorowania NexMon i wstrzykiwanie pakietów na Androidzie (układy Broadcom)
{{#include ../../banners/hacktricks-training.md}}
## Przegląd
Większość nowoczesnych telefonów z Androidem zawiera układ Wi-Fi Broadcom/Cypress, który jest dostarczany bez trybu monitorowania 802.11 lub możliwości wstrzykiwania ramek. Framework open-source NexMon łata zastrzeżone oprogramowanie układowe, aby dodać te funkcje i udostępnia je za pośrednictwem biblioteki współdzielonej (`libnexmon.so`) oraz pomocnika CLI (`nexutil`). Poprzez wstępne załadowanie tej biblioteki do standardowego sterownika Wi-Fi, zrootowane urządzenie może przechwytywać surowy ruch 802.11 i wstrzykiwać dowolne ramki eliminując potrzebę zewnętrznego adaptera USB.
Ta strona dokumentuje szybki proces roboczy, który wykorzystuje w pełni załatany Samsung Galaxy S10 (BCM4375B1) jako przykład, używając:
* Moduł NexMon Magisk zawierający załatane oprogramowanie układowe + `libnexmon.so`
* Aplikacja Hijacker na Androida do automatyzacji przełączania trybu monitorowania
* Opcjonalnie Kali NetHunter chroot do uruchamiania klasycznych narzędzi bezprzewodowych (aircrack-ng, wifite, mdk4 …) bezpośrednio na wewnętrznym interfejsie
Ta sama technika ma zastosowanie do każdego telefonu, który ma publicznie dostępny łata NexMon (Pixel 1, Nexus 6P, Galaxy S7/S8 itp.).
---
## Wymagania wstępne
* Telefon z Androidem z obsługiwanym układem Broadcom/Cypress (np. BCM4358/59/43596/4375B1)
* Root z Magisk ≥ 24
* BusyBox (większość ROM-ów/NetHunter już go zawiera)
* NexMon Magisk ZIP lub samodzielnie skompilowana łatka zapewniająca:
* `/system/lib*/libnexmon.so`
* `/system/xbin/nexutil`
* Hijacker ≥ 1.7 (arm/arm64) [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker)
* (Opcjonalnie) Kali NetHunter lub dowolny Linux chroot, w którym zamierzasz uruchomić narzędzia bezprzewodowe
---
## Flashowanie łaty NexMon (Magisk)
1. Pobierz ZIP dla swojego dokładnego urządzenia/oprogramowania (przykład: `nexmon-s10.zip`).
2. Otwórz Magisk -> Moduły -> Zainstaluj z pamięci -> wybierz ZIP i uruchom ponownie.
Moduł kopiuje `libnexmon.so` do `/data/adb/modules/<module>/lib*/` i zapewnia, że etykiety SELinux są poprawne.
3. Zweryfikuj instalację:
```bash
ls -lZ $(find / -name libnexmon.so 2>/dev/null)
sha1sum $(which nexutil)
```
---
## Konfigurowanie Hijacker
Hijacker może automatycznie przełączać tryb monitorowania przed uruchomieniem `airodump`, `wifite` itp. W **Ustawienia -> Zaawansowane** dodaj następujące wpisy (edytuj ścieżkę do biblioteki, jeśli twój moduł się różni):
```
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
```
Włącz „Rozpocznij tryb monitorowania przy starcie airodump”, aby każde skanowanie Hijacker odbywało się w natywnym trybie monitorowania (`wlan0` zamiast `wlan0mon`).
Jeśli Hijacker wyświetla błędy przy uruchomieniu, utwórz wymaganą katalog na wspólnej pamięci i ponownie otwórz aplikację:
```bash
mkdir -p /storage/emulated/0/Hijacker
```
### Co oznaczają te flagi `nexutil`?
* **`-s0x613`** Zapisz zmienną firmware 0x613 (FCAP_FRAME_INJECTION) → `1` (włącz TX dowolnych ramek).
* **`-i`** Ustaw interfejs w trybie monitorowania (nagłówek radiotap zostanie dodany).
* **`-v2`** Ustaw poziom szczegółowości; `2` drukuje potwierdzenie i wersję firmware.
* **`-m0`** Przywróć tryb zarządzany (używany w poleceniu *disable*).
Po uruchomieniu *Włącz tryb monitorowania* powinieneś zobaczyć interfejs w stanie monitorowania i być w stanie przechwytywać surowe ramki za pomocą:
```bash
airodump-ng --band abg wlan0
```
---
## Ręczny one-liner (bez Hijackera)
```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
```
Jeśli potrzebujesz tylko pasywnego sniffingu, pomiń flagę `-s0x613`.
---
## Używanie `libnexmon` w Kali NetHunter / chroot
Standardowe narzędzia użytkownika w Kali nie znają NexMon, ale możesz zmusić je do jego użycia za pomocą `LD_PRELOAD`:
1. Skopiuj wstępnie zbudowany obiekt współdzielony do chroot:
```bash
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
```
2. Włącz tryb monitorowania z **gospodarza Android** (polecenie powyżej lub przez Hijacker).
3. Uruchom dowolne narzędzie bezprzewodowe w Kali z preload:
```bash
sudo su
export LD_PRELOAD=/lib/kalilibnexmon.so
wifite -i wlan0 # lub aircrack-ng, mdk4 …
```
4. Po zakończeniu, wyłącz tryb monitorowania jak zwykle na Androidzie.
Ponieważ oprogramowanie układowe już obsługuje wstrzykiwanie radiotap, narzędzia użytkownika zachowują się tak samo jak na zewnętrznym adapterze Atheros.
---
## Typowe możliwe ataki
Gdy monitor + TX jest aktywny, możesz:
* Przechwytywać handshake WPA(2/3-SAE) lub PMKID za pomocą `wifite`, `hcxdumptool`, `airodump-ng`.
* Wstrzykiwać ramki deautoryzacji / dezasocjacji, aby zmusić klientów do ponownego połączenia.
* Tworzyć dowolne ramki zarządzające/dane za pomocą `mdk4`, `aireplay-ng`, Scapy itp.
* Budować fałszywe AP lub przeprowadzać ataki KARMA/MANA bezpośrednio z telefonu.
Wydajność na Galaxy S10 jest porównywalna z zewnętrznymi NIC USB (~20 dBm TX, 2-3 M pps RX).
---
## Rozwiązywanie problemów
* `Device or resource busy` upewnij się, że **usługa Wi-Fi Android jest wyłączona** (`svc wifi disable`) przed włączeniem trybu monitorowania.
* `nexutil: ioctl(PRIV_MAGIC) failed` biblioteka nie jest wstępnie załadowana; sprawdź ścieżkę `LD_PRELOAD`.
* Wstrzykiwanie ramek działa, ale nie przechwycono żadnych pakietów niektóre ROM-y blokują kanały; spróbuj `nexutil -c <channel>` lub `iwconfig wlan0 channel <n>`.
* SELinux blokuje bibliotekę ustaw urządzenie na *Permissive* lub napraw kontekst modułu: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
---
## Odniesienia
* [Hijacker na Samsung Galaxy S10 z wstrzykiwaniem bezprzewodowym](https://forums.kali.org/t/hijacker-on-the-samsung-galaxy-s10-with-wireless-injection/10305)
* [NexMon framework do patchowania oprogramowania układowego](https://github.com/seemoo-lab/nexmon)
* [Hijacker (interfejs graficzny aircrack-ng dla Androida)](https://github.com/chrisk44/Hijacker)
{{#include ../../banners/hacktricks-training.md}}