Files
local_machine/docs/security/MAC_SPOOFING_GUIDE.md
2026-03-14 20:03:57 +03:00

298 lines
11 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.
# Руководство по подмене MAC-адреса Wi-Fi на macOS
## 📋 Содержание
1. [Зачем это нужно](#зачем-это-нужно)
2. [Как это работает](#как-это-работает)
3. [Получение MAC-адреса телефона](#получение-mac-адреса-телефона)
4. [Подмена MAC на macOS](#подмена-mac-на-macos)
5. [Ограничения и проблемы](#ограничения-и-проблемы)
6. [Постоянная подмена MAC](#постоянная-подмена-mac)
---
## Зачем это нужно
Когда вы подключаете MacBook к точке доступа (hotspot) телефона:
- **Оператор сотовой связи** видит трафик, идущий через телефон
- **MAC-адрес MacBook** виден только на уровне Wi-Fi соединения между телефоном и MacBook
- Подмена MAC MacBook на MAC телефона может помочь в некоторых сценариях идентификации
**Важно:** Оператор в первую очередь видит IMEI и другие идентификаторы телефона, а не MAC клиента.
---
## Как это работает
### Уровни идентификации:
1. **Уровень сотовой сети (оператор видит):**
- IMEI телефона
- IMSI (SIM-карта)
- Номер телефона
- Трафик идет через телефон
2. **Уровень Wi-Fi (локальная сеть):**
- MAC точки доступа (BSSID) - это MAC Wi-Fi интерфейса телефона
- MAC клиента (MacBook) - виден только в локальной Wi-Fi сети
3. **Уровень приложений:**
- User-Agent браузера
- Fingerprint браузера
- IP-адрес (от оператора)
**Вывод:** Подмена MAC MacBook на MAC телефона влияет только на локальный Wi-Fi уровень, но не меняет идентификацию на уровне оператора.
---
## Получение MAC-адреса телефона
### iPhone (iOS 14+)
**Проблема:** На iPhone включена функция "Частный Wi-Fi адрес" по умолчанию, которая скрывает реальный MAC.
**Решение:**
1. **Для Wi-Fi клиента (когда телефон подключается к сети):**
- Настройки → Wi-Fi
- Нажмите (i) рядом с сетью
- Отключите "Частный Wi-Fi адрес" (Private Wi-Fi Address)
- MAC-адрес будет показан как "Адрес Wi-Fi"
2. **Для точки доступа (hotspot):**
- MAC точки доступа может отличаться от MAC Wi-Fi клиента
- Настройки → Режим модема → "Имя сети" показывает SSID
- MAC точки доступа можно узнать через скрипт (автоматически)
**Альтернативный способ:**
```bash
# На MacBook, подключенном к hotspot iPhone:
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep BSSID
```
### Android
1. **Для Wi-Fi клиента:**
- Настройки → О телефоне → Статус
- Найдите "MAC-адрес Wi-Fi"
2. **Для точки доступа:**
- Настройки → Сеть и интернет → Точка доступа и модем → Точка доступа Wi-Fi
- MAC может быть показан в расширенных настройках
**Через ADB (если включена отладка):**
```bash
adb shell ip link show wlan0 | grep link/ether
```
---
## Подмена MAC на macOS
### Автоматический способ (рекомендуется)
Используйте скрипт `spoof-wifi-mac.sh`:
```bash
# Автоматическое определение MAC точки доступа
./docs/security/spoof-wifi-mac.sh --phone-mac
# Или интерактивный режим
./docs/security/spoof-wifi-mac.sh
# Или указать MAC вручную
./docs/security/spoof-wifi-mac.sh AA:BB:CC:DD:EE:FF
# Вернуть оригинальный MAC
./docs/security/spoof-wifi-mac.sh --revert
```
### Ручной способ
```bash
# 1. Определить Wi-Fi интерфейс
networksetup -listallhardwareports | grep -A 1 "Wi-Fi"
# 2. Выключить Wi-Fi
networksetup -setairportpower en0 off
# 3. Установить новый MAC (требует sudo)
sudo ifconfig en0 ether AA:BB:CC:DD:EE:FF
# 4. Включить Wi-Fi
networksetup -setairportpower en0 on
# 5. Проверить
ifconfig en0 | grep ether
```
---
## Ограничения и проблемы
### 1. Временность подмены
- MAC сбрасывается после:
- Перезагрузки MacBook
- Отключения/включения Wi-Fi
- Переподключения к сети
- Смены сети
**Решение:** Используйте `--revert` для восстановления или запускайте скрипт при каждом подключении.
### 2. System Integrity Protection (SIP)
На современных версиях macOS (особенно с Apple Silicon) подмена MAC может быть заблокирована SIP.
**Проверка статуса SIP:**
```bash
csrutil status
```
**Отключение SIP (НЕ рекомендуется без крайней необходимости):**
1. Перезагрузите Mac в Recovery Mode (Cmd+R при загрузке)
2. Утилиты → Терминал
3. `csrutil disable`
4. Перезагрузите
**Включение обратно:**
```bash
csrutil enable
```
### 3. Аппаратные ограничения
Некоторые Wi-Fi чипы не поддерживают подмену MAC на уровне драйвера.
### 4. Что видит оператор
**Важно понимать:**
- Оператор видит трафик через телефон (IMEI, IMSI)
- MAC MacBook виден только в локальной Wi-Fi сети между телефоном и MacBook
- Подмена MAC не меняет идентификацию на уровне оператора
- Для оператора важнее IMEI телефона, а не MAC клиента
---
## Постоянная подмена MAC
### Вариант 1: LaunchAgent (автоматический запуск)
Создайте `~/Library/LaunchAgents/com.macspoof.plist`:
```xml
<?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>Label</key>
<string>com.macspoof</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/spoof-wifi-mac.sh</string>
<string>AA:BB:CC:DD:EE:FF</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
```
Загрузите:
```bash
launchctl load ~/Library/LaunchAgents/com.macspoof.plist
```
### Вариант 2: Network Script (macOS)
Создайте скрипт в `/etc/network/` (требует отключения SIP).
### Вариант 3: Использование специализированных инструментов
- **SpoofMAC** (устарел, не работает на новых macOS)
- **Macchanger** (через Homebrew, ограниченная поддержка)
---
## Альтернативные подходы
### 1. Использование VPN на телефоне
Вместо подмены MAC на MacBook, используйте VPN на телефоне:
- Весь трафик идет через VPN
- Оператор видит только VPN-соединение
- Не требуется подмена MAC
### 2. USB Tethering
Подключите телефон через USB и используйте USB Tethering:
- Не требует Wi-Fi
- MAC не важен на этом уровне
- Более стабильное соединение
### 3. Bluetooth Tethering
Альтернатива Wi-Fi hotspot:
- Разные протоколы идентификации
- Может быть менее заметно для оператора
---
## Проверка результата
### Проверить текущий MAC:
```bash
ifconfig en0 | grep ether
```
### Проверить MAC точки доступа:
```bash
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep BSSID
```
### Проверить подключение:
```bash
networksetup -getairportnetwork en0
```
---
## Безопасность и предупреждения
⚠️ **Важно:**
- Подмена MAC может нарушать правила оператора
- Некоторые сети могут блокировать устройства с подмененным MAC
- Это может быть незаконно в некоторых юрисдикциях
- Используйте только на своих устройствах и сетях
**Рекомендации:**
- Сохраняйте оригинальный MAC для восстановления
- Используйте только для легитимных целей
- Понимайте ограничения метода
- Рассмотрите альтернативные подходы (VPN, USB tethering)
---
## FAQ
**Q: Оператор все равно видит, что это не телефон?**
A: Да, оператор видит IMEI телефона и трафик через него. MAC клиента важен только на локальном Wi-Fi уровне.
**Q: Почему MAC не меняется?**
A: Возможно, требуется отключить SIP или Wi-Fi чип не поддерживает подмену MAC.
**Q: Как сделать подмену постоянной?**
A: Используйте LaunchAgent или отключите SIP (не рекомендуется).
**Q: Работает ли это на Apple Silicon?**
A: Может потребоваться отключение SIP из-за более строгих ограничений безопасности.
---
## См. также
- [OS_COMPARISON.md](./OS_COMPARISON.md) - сравнение систем безопасности
- [VPN документация](../vpn/README.md) - альтернативные методы защиты приватности