У попередній статті ми вже торкалися теми сканування мереж і підміні трафіку на BGP маршрутизаторах. Сьогодні ми розглянемо також не маловажний питання - як просканувати мережу і знайти транзитні BGP маршрутизатори в мережі інтернет.
Класифікацій маршрутизаторів дуже багато і за великим рахунком вони залежать від розглянутого контексту, так щодо протоколу OSPF ми можемо визначити магістральні маршрутизатори, зональні і тд. У цій статті будуть порушуватися так звані транзитні маршрутизатори - це просто умовне позначення їх в певному контексті (а саме в передачі пакетів по мережах).
Тобто ідея буде полягати в тому, щоб посилати запити на різні хости і моніторити проміжні ланки, через які проходять пакети. Для цього завдання і була разрботана спеціальна утиліта traceroute, яку і можна ісопльзовать. Ще слід зауважити, що початок маршруту буде постійно (або майже завжди) збігатися, так як пакет спочатку буде йти через мережу нашого провайдера, топологія і таблиці маршрутизації якого змінюються через досить великі проміжки часу.
Цю проблему можна вирішити наступними шляхами:
- traceroute на слабо "схожі" айпішники, різних місць розташування (які можуть бути розпарсити з разниз GeoIP баз);
- traceroute на різних провайдерів;
Перший спосіб несе в собі багато гемора з парсинга, до того ж він не володіє достатньою гарантією, що ми не потрапимо на айпішник з того ж провайдера, навіть якщо буде візьмемо його з іншого територіального регіону.
Тепер про реалізацію другого способу.
Практика.
Тепер про конкретний алгоритм дій:
Автоматизація.
Для гнучкої автоматизації всього цього був написаний скрипт (буде прикріплений). Запускати скрипт треба під 3 пітоном і також заздалегідь доведеться встановити пару нестандартних модулів (якщо при запуску помилок не буде, то модулі вже стоять).
Як користуватися скриптом і як він працює.
Для початку варто відмітити, що всі дані скрипт зберігає в MySQL. Тобто перед запуском треба в його початку в відповідно¿ змінних вказати потрібні дані для MySQL сервера. Скрипт сам створить базу даних і таблиці в ній, які будуть ісопльзовани. Також повинна бути встановлена утиліта traceroute (і nmap, якщо потім буде використовуватися опція сканування).
Разом з ключем scan можна ісопльзовать ключ ports. в якому вказати через кому порти для ськана, ключ skeys можна використовувати для вказівки додаткових параметрів сканування для Nmap'a (через нього в принципі можна теж задати порти), і ключ rnum - скільки сканувати роутерів з таблиць ibgp і ebgp.
Функцію сканування довелося зробити, так як все резульата роботи скрипта зберігаються в MySQL, тому щоб їх використовувати для Nmap'a доведеться спочатку якось експортувати, а якщо в цьому немає необхідності, то як раз знадобитися така функція.
Для очищення результатів або будь-якої з таблиць можна скористатися ключем clear. в який подати ім'я (імена через кому) таблиці, яку потрібно очистити, для очищення всіх таблиць можна просто в цьому ключі прописати "all".
Під час кожного з процесів скрипт повідомляє про статус завершеності (в кількісних і процентних показниках), а також після завершення робіт пише про результати (включаючи час роботи), щоб бажаючі могли вести статистику.