unified2 є чисто Python аналізатор для IDS (думаю, що [Snort] (http://snort.org)) unified2 довічного формату журналу.
Модуль дозволяє обробляти IDS журнали в двійковому форматі "unified2" в об'єкти Python.
Це не вирішує правил ідентифікатори і не призначений, щоб бути заміною для barnyard2 або сам Snort в цій ролі.
Головна мета полягає в тому, щоб витягти пакетні дані з журналу, пов'язаних з деякими зокрема спрацьовує (і вирішені / вхід окремо за допомогою інших засобів, наприклад, alert_syslog або alert_csv фиркають модулів) правило, так що я не приділяв багато уваги до метаданих обробки подій.
Модуль не має C компоненти і не використовує ctypes, так має бути достатньо портативний, щоб не-CPython реалізації мови.
Формат
Визначення Формат походить від Snort заголовків (SRC / sfutil / Unified2_common.h) за допомогою pyclibrary модуля і кешируются в unified2 / _format.py файлу.
Нові визначення (наприклад, якщо були додані нові типи даних) може бути згенерований за допомогою команди той же сценарій на Unified2_common.h пирхання в:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; BZR філії LP: pyclibrary
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; CD pyclibrary
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; пітон ... / unified2 / _format.py ... / snort-2.XYZ/src/sfutil/Unified2_common.h
Установка
Це звичайний пакет для Python 2.7 (Не 3.x).
Використання Піп кращим чином:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Пункт встановити unified2
Якщо у вас немає, використовуйте:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Easy_install PIP
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Пункт встановити unified2
Крім того Дивись також:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Локон https://raw.github.com/pypa/pip/master/contrib/get-pip.py | пітона
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Пункт встановити unified2
Або, якщо ви абсолютно необхідно:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Easy_install unified2
Але, ви дійсно не повинні цього робити.
Вольт-Git версія може бути встановлена так:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; % Пункт встановити -e 'Git: //github.com/mk-fg/unified2.git#egg=unified2 "
Використання
Простий приклад:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; імпорт unified2.parser
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; для Є.В., ev_tail в unified2.parser.parse ('/ Var / Журнал / нюхати / snort.u2.1337060186'):
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Друк "Подія: ', Е.В.
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; якщо ev_tail: «хвоста Подія: 'друк, ev_tail
Об'єкт Event ось Dict метаданих і "хвіст", який може бути або кулі або аналогічний рекурсивно аналізуються кортеж метаданих Dict і "хвіст" (наприклад, для UNIFIED2_EXTRA_DATA).
Інтерфейс unified2.parser.Parser найкраще ілюструється на unified2.parser.read функції:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; парсер, buff_agg = Parser (), ''
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; в той час як True:
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; любитель = parser.read (SRC)
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; якщо не полірувати: подолай # EOF
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; buff_agg + = позитивний ефект
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; в той час як True:
buff_agg, EV = parser.process (buff_agg)
якщо ев Немає: перерва
вихід EV
Ідея тут у тому, що метод Parser.read слід назвати потоком (наприклад, об'єктний файл), повертаючись проте кількість байт парсер повинен отримати наступну розпізнавати порцію даних (один пакет, у разі журналі U2) або щось можна прочитати на даний момент, порожній рядок, як правило, свідчить про EOF або, можливо, не блокуючи читати повернення.
Parser.process то слід назвати з накопиченим (на Parser.read викликів) буфера, повертаючи перший пакет, який не може бути розібраний звідти (чи ні, якщо буфер не є достатньо великим) і решта (не розібрався) буфер даних.
Вимоги
- Python
Коментар не знайдено