
Инструмент для обнаружения поверхности атаки, построенный на микросервисном подходе, использующий многопоточность для быстрого индексирования активов в масштабе интернета.
Контекст проекта: Этот проект служит портфолио, демонстрирующим концепции атакующей безопасности, конкурентности и распределённой архитектуры.
В первые дни моего погружения в мир атакующей безопасности меня всегда восхищало, как крупные поисковые системы, такие как Shodan, индексируют информацию с миллионов устройств. Эта идея не выходила у меня из головы; мне нужно было понять инженерные принципы, лежащие в её основе, смоделировав это самостоятельно.
Kimi — результат этого любопытства. Это непрерывный сканер разведки, предназначенный для приоритетного анализа внешней поверхности атаки. Он выполняет крупномасштабное сканирование по портам для сбора информации с сервисов, подключённых к Интернету.
Моей целью было создать эффективную архитектуру: реализация потоков и очередей была разработана для максимальной производительности за цикл сканирования, значительно сокращая время выполнения для огромных IP-диапазонов.
Kimi служит доказательством концепции в критически важных областях:
Конкурентность: Использование потоков и очередей в Python для координации до ≈500 одновременных операций сетевого ввода-вывода.
Развязанная архитектура: Проектирование распределённой системы (Engine → API → DB), разделяющей выполнение сканирования и сохранение данных.
Сетевое взаимодействие: Низкоуровневое программирование сокетов для квитирования TCP/UDP и точного управления таймаутами.
NoSQL базы данных: Реализация MongoDB для хранения результатов сканирования, которые по своей природе изменчивы и неструктурированы.
Пересматривая Kimi сегодня, я могу применить современный инженерный и этический взгляд к своей первоначальной работе:
Техническая эволюция: Самой большой проблемой было освоение threading в Python. Сегодня я понимаю, что наиболее масштабируемым решением была бы миграция Engine на асинхронное программирование (asyncio) для избежания накладных расходов GIL и дальнейшего масштабирования конкурентности.
Этическая зрелость: Самым важным уроком стала профессиональная ответственность. Проект эволюционировал от эксперимента, движимого любопытством, до демонстрационного инструмента. Kimi строго ограничен этическим тестированием в контролируемых сетях, подчёркивая мою приверженность законным и ответственным практикам безопасности.
Система разделена на Engine (Scanner) и API (Persistence).
MongoDB выступает в качестве основного хранилища для приёма данных. Архитектура спроектирована для совместимости с интеграцией Elasticsearch / Kibana (ELK), что обеспечивает возможности полнотекстового поиска и аналитической визуализации собранных данных.
| Сценарий | Пример команды | Описание |
|---|---|---|
| Быстрое сканирование |
Развёртывание: Проект полностью контейнеризован с помощью Docker.
Лицензия: Apache 2.0.
Контакты: [email protected]
Правовое предупреждение: Kimi представлен исключительно в образовательных целях и для технической демонстрации. Использование вне контролируемых сред является исключительной ответственностью пользователя.
python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports| Сканирует диапазон, используя 150 потоков. |
| Пользовательский CIDR | python3 engine.py -r 192.168.0.0/24 -t 350 -C 80 443 21 | Сканирует определённые порты, используя 350 потоков. |