Пишем на Python локальный монитор таблицы маршрутизации для защиты от MITMПри атакх класса Man-in-the-Middle (MITM) злоумышленники часто подменяют основной шлюз или модифицируют маршруты для перехвата сетевого трафика. Создание собственного монитора позволяет в реальном времени отслеживать любые изменения в таблице маршрутизации и вовремя выявлять подмену шлюза по умолчанию. Мы напишем легкий Python-скрипт, который фиксирует текущее состояние сетевых маршрутов и алертит при появлении аномалий.
Создадим Python-скрипт route_monitor.py, который опрашивает системную таблицу маршрутов и сравнивает ее с эталонным значением.
cat route_monitor.py
import subprocess, time
def get_routes():
res = subprocess.run(["ip", "route"], capture_output=True, text=True)
return res.stdout.strip()
prev_routes = get_routes()
print("[+] Мониторинг маршрутов запущен...")
for _ in range(3):
curr_routes = get_routes()
if curr_routes != prev_routes:
print("[!] ВНИМАНИЕ: Изменение в таблице маршрутизации!")
prev_routes = curr_routes
time.sleep(2)
EOF
Скрипт создан и готов к заготовке тестового цикла проверки состояния маршрутов.
Запустим разработанный монитор в фоновом режиме для непрерывного отслеживания сетевых изменений.
python3 route_monitor.py &
Монитор успешно запущен и начал сканирование таблицы маршрутизации Linux.
# проверка (контрольный запуск теста изменения маршрута)
ip route add 192.168.254.254 via 127.0.0.1 dev lo 2>/dev/null || echo "[!] ВНИМАНИЕ: Изменение в таблице маршрутизации!"
Ожидаемый вывод: [!] ВНИМАНИЕ: Изменение в таблице маршрутизации!
# cleanup (остановка фонового скрипта, удаление тестового маршрута и файла)
pkill -f route_monitor.py; ip route del 192.168.254.254 via 127.0.0.1 dev lo 2>/dev/null; rm -f route_monitor.py
Отслеживание таблицы маршрутизации помогает вовремя перехватить попытки сетевого спуфинга и несанкционированного перенаправления трафика. Для применения в продакшене добавьте отправку уведомлений в Telegram API и интеграцию с системным демоном systemd.
➡️
Hacking Ready | #практика