Гайд по созданию OSINT инструментов и инструментов проникновения на Python
Кобра: создаем OSINT инструмент на Python, часть 1
Итак, каждый программист желает все автоматизировать — и не только программист. В этой статье мы рассмотрим создание OSINT-инструмента на Python.
Я хочу предупредить, что все показано в целях ознакомления, данные человека не подлежат хранению или распространению без соответствующего разрешения.
Эта статья — первая часть, здесь мы рассмотрим минимум, а в следующей части доделаем код, улучшим его и сделаем полноценный CLI-инструмент, всю информацию по обновлению кода и уведомления о новых частях буду публиковать у себя в канале.
В этой статье мы создадим инструмент для:
- Получения информации об IP адресе
- Получения информации об номере телефона
- Получение информации, есть ли IP в черных листах DNS
- Парсер всех ссылок с сайта
- Сканер портов
- SYN-сканер портов
- Сканер сессий Meterpreter для Windows 7/10
- Virus Total API
- Сканер SQL инъекций
- Сканер XSS уязвимостей
- Генератор фейкового User-Agent
- Скрипт для изменения mac-адреса
Данная статья ориентирована на продвинутых разработчиков, которые уже умеют писать и читать python-код.
Для всего этого нам нужен будет Python >3.9, Linux и пакетный менеджер pip.
Весь исходный код доступен по ссылке. Репозиторий локализирован на английский язык, в директории /docs/ru есть markdown-версия статьи.
Создаем рабочее окружение
Никогда вам не советую устанавливать пакеты в саму систему. Для того чтобы работать над каждым проектом отдельно (дабы не возникало ошибок с пакетами и библиотеками) надо создавать виртуальные окружения.
Для того, чтобы создать виртуальное окружение, нам потребуется всего лишь одна команда:
python3 -m venv <название виртуального окружения> # Например, создание виртуального окружения venv python3 -m venv venv
После ввода данной команды у вас в текущем проекте будет создана новая директория — это и будет виртуальное окружение.
Но это еще не все — нам предстоит активировать его командой:
source venv/bin/activate # Или, если у вас fish: source venv/bin/activate.fish
И вот теперь мы можем спокойно работать с проектом и устанавливать пакеты. Для деактивации и выхода из окружения можно использовать команду deactivate.
Установка зависимостей
Для начала, давайте установим пакет whois. Он потребуется для того, чтобы мы могли узнать информацию об IP адресах.
sudo pacman -S whois # Arch sudo apt install whois # Debian/Ubuntu sudo dnf install whois # Fedora sudo epm install whois # Alt
После активации нашего окружения, можно установить python-пакеты. Список нужных нам можно получить по ссылке в файле requirements.txt. Просто скачиваете его в проект и выполняете следующию команду:
pip3 install -r requirements.txt
Этим мы установили нужные нам зависимости. Теперь можно начать разработку!
Архитектура проекта
Давайте создадим архитектуру нашего инструмента:
- Директория core — базовый функционал для самого инструмента
- Директория modules — главная папка всего проекта, здесь мы будем хранить модули для работы.anonymity — модуль анонимности, безопасности. Небольшой, чаще всего вспомогательный. Есть пока два компонента — генерация фейкового юзер-агента (fakeuseragent.py) и изменение MAC-адреса устройства (machanger.py)network_base — вспомогательно-информационный модуль. Содержит информацию о сети, IP и портах. Один из самых больших модулей. Содержит следующие файлы: адрес из гео-координат, домен из IP, IP из домена, небольшие программы для работы с IPv4, ваш публичный IP, параметры сети, скрипт для пинга адреса, какой сервис на порту и т.д.osint — модуль, как не странно, для OSINT и поиска информации. Здесь уже содержится прокси-файл для взаимодействия с модулем network_base, а также скрипты для получения информации об ip и номере телефона.scanners — модуль для сканеров, как понятно из названия. Здесь есть сканер IP на наличие в черных списках DNS, парсер ссылок с сайта, сканер портов, поиск SQL-Injection и XSS уяизвимостей.
- Файл main.py — главный файл кода в корневом каталоге проекта.
Итак, в репозитории директория core является хранилищем трех файлов — это
- highlight_schemes.py — цветовые схемы Pygments.
- logger.py — файл с классом логгера, дебаггера объектов.
- style.py — файл с цветами, для того чтобы делать вывод красивее.
К сожалению, эти файлы мы не будем затрагивать — это совершенно другая тема. Если вы хотите, следующая статья будет об создании продвинутых CLI-программ на Python. А пока продолжим.
В репозитории modules есть огромное количество файлов и каталогов, я разберу здесь большую часть.
Создание модулей
Займемся созданием модулей. Начнем с модуля анонимности
Генерация фейкового User-Agent
Для этого мы будем использовать библиотеку fake-useragent.
Здесь всего лишь одна функция — генерации случайного юзер-агента.
Изменение MAC-адреса
Для этого нам не нужны будут дополнительные библиотеки. Но вам возможно нужно будет установить набор инструментов net-tools. Этот набор содержит в себе утилиту ifconfig, аналог ipconfig в Windows, который нам нужен будет для управления сетями.
Модуль network_base
Этот модуль, как я уже говорил, нужен для работы с сетью. Но весь код занимает слишком много места, поэтому посмотреть вы его можете по ссылке.
Обязательно советую использовать этот код, ибо он требуется для получения информации об IP. Можете просто скопировать код и изучить его, он обильно документирован.
Там вы увидите множество файлов — все они пригодятся.
Модуль OSINT
Теперь займемся самим поиском информации по открытым источникам. Займемся файлом ip.py — он поведует нам некоторую информацию об IP адресе.
Следующий шаг — компонент netlib.py. Он как раз и будет неким посредником между модулем OSINT и модулем network_base.
Следующий компонент — phone.py, который отвечает за небольшой поиск информации об номере телефона.
После этого можно заняться следующим компонентом — whois_information.py:
После этого давайте займемся предпоследним компонентом модуля OSINT — virus_total.py для анализа бинарников на вирусы, трояны и другие малвари.
Для начала вам потребуется авторизоваться на сайте Virus Total. После активации аккаунта, откройте меню пользователя и перейдите в секцию API Key. Ниже вы увидете сам API ключ:
Не забудьте про ограничения бесплатного API-ключа:
- Частота запросов — 4 поиска / минута
- Дневная квота — 500 поисков / день
- Месячная квота — 15.5 K поисков / месяц
После просто скопируйте и вставьте в код. Есть разные практики хранить важные ключи в коде. Давайте рассмотрим три способа:
- Первый и простой способ. Просто вставить ключ прямо в коде
APIKEY='123456abcdef' # Здесь ваш код # ...
Но я категорически не советую так делать. Если вы забудете удалить ваш ключ, то он может оказаться в руках других людей. Они смогут получить доступ к вашему проекту, боту, аккаунта и т.д., в зависимости от возможностей API. Поэтому так делайте только в локальных проектах (да и даже так лучше не делать по стилю кода).
- Создать файл настроек/конфигов, например settings.py и в нем хранить все важные ключи, а после импортировать в проект. Намного лучше чем 1 способ, но проблемы с безопасностью также остаются.
- Переменные окружения. Безопасный способ, мы храним API не в коде, а в переменных окружения. Этот способ мы и будем использовать.
Вам будет надо установить пакет python-dotenv:
pip install python-dotenv
И после создайте в корневом каталоге файл .env, и в него вставьте следующий код:
VIRUS_TOTAL_KEY = "ваш ключ"
После этого давайте немного изменим концепцию, и создадим микро-антивирус. Он будет сперва проверять хеш файла в базе сигнатурах. Да, просто сопоставлять, и это не будет стоять рядом даже с самыми плохими антивирусами — ведь стоит добавить в бинарник малваря хотя-бы один байт, даже если это будет 0, то уже наш антивирус ничего не заподозрит. Но если малварь и пройдет сигнатурный анализ, то дальше его ждет Virus Total!
И еще, мы не будем сами посылать запросы, и парсить результат, мы будем использовать библиотеку vt-py.
А также для локальной проверки файлов нам нужны будут сигнатуры. Собрал я их в каталоге res, доступный по ссылке.
Вот и все — при запуске этого скрипта мы можем спокойно анализировать файлы на Virus Total.
Модуль scanners
Модуль всеразличных сканеров и парсеров. ПОка есть 6 — поиск IP в черных списках DNS, парсер ссылок, сканер портов, сканер на SQL-Injection и XSS уязвимости. А также есть еще детектор ARP-спуфинга и сканер сессий meterpreter для Windows.
Займемся детектором ARP спуфинга. ARP-spoofing — разновидность сетевой атаки типа MITM, применяемая в сетях с использованием протокола ARP. В основном применяется в сетях Ethernet. Атака основана на недостатках протокола ARP.
Нам нужен будет модуль scapy.
Следующий шаг — сканер meterpreter сессий для Windows 7 и 10.