Вышла библиотека PyWhat для автоматического парсинга трафика

Блог компании Дата-центр «Миран» Информационная безопасность Python Программирование Машинное обучение
Разработана удобная библиотека PyWhat , которая помогает классифировать данные в неструктурированном массиве. Например, у вас несколько мегабайт трафика, записанного в стандартном формате .pcap. Что с ним делать? PyWhat спарсит все строки, выделит:


кошельки криптовалют,

номера социального страхования,

кредитные карточки,

заголовки видеороликов Youtube ID,

любые хэши,

другие известные типы данных.

Так в трафике гораздо проще ориентироваться. Увидев нужный пакет, затем в Wireshark можно выбрать остальные пакеты конкретно из этого потока в реальном времени.

В принципе, всё то же самое можно сделать фильтрами в Wireshark, если искать в трафике что-то конкретное, но эта библиотека автоматизирует процесс и экономит время.

Иди другой пример. Посреди кода или в каком-то файле встречается таинственная строка 5f4dcc3b5aa765d61d8327deb882cf99 . Нет проблем. Запускаем PyWhat — и смотрим, что это такое, с помощью команды what "5f4dcc3b5aa765d61d8327deb882cf99" .



Задача команды what — выяснить происхождение строки символов, фрагмента, текста внутри файла или какого-то hex-значения.

Автор библиотеки приводит такой пример . Вы столкнулись с новым вариантом вредоносного ПО под названием WantToCry. Вспоминаете, что оригинальный Wannacry удалось остановить, потому что никому не известный паренёк обнаружил в коде «выключатель» с триггером на появление сайта по указанному адресу. Парень зарегистрировал этот домен — и остановил распространение Wannacry во всём мире.

«Итак, запускаем what — находим все домены во вредоносной программе — и через API регистратора доменов все их регистрируем. Если Wannacry появится снова, вы сможете остановить его за считанные минуты», — пишет автор.



В общем, библиотека помогает найти структурированные данные в любом файле, поддерживает рекурсивный поиск файлов в директориях, работает с API .

PyWhat относится к классу «вероятностных библиотек» на Python (probabilistic library), созданных в процессе машинного обучения моделей. В каком-то смысле, такие модели после обучения распознают форматы строк примерно как системы машинного обучения распознают лица конкретных людей, сверяясь с базой паттернов.

Из других полезных вероятностных библиотек/пакетов на Python можно назвать следующие:


probablepeople : парсер неструктурированных западных имён с разбиением их по полям (имя, фамилия и другие компоненты)

usaddress : парсер американских адресов с разбиением из одной строки на шесть полей

chardet : автоматическое определение кодировки символов

Gen.jl : система вероятностного программирования общего назначения с программируемым выводом. Например, позволяет наводить порядок в таблицах с плохо структурированными данными

DataProfiler : инструмент, похожий по функциональности на PyWhat. Принимает на входе файлы и данные любых форматов, а на выходе выдаёт структурированную информацию по следующим полям:


UNKNOWN
ADDRESS
BAN (bank account number, 10-18 digits)
CREDIT_CARD
EMAIL_ADDRESS
UUID
HASH_OR_KEY (md5, sha1, sha256, random hash, etc.)
IPV4
IPV6
MAC_ADDRESS
PERSON
PHONE_NUMBER
SSN
URL
US_STATE
DRIVERS_LICENSE
DATE
TIME
DATETIME
INTEGER
FLOAT
QUANTITY
ORDINAL

Возможно переобучение модели DataProfiler на новые типы данных.)
Теги:
Хабы: