Правила парсинга задаются для пользовательских потоков данных об угрозах (потоков данных об угрозах, определенных с помощью элемента Path
). Эти параметры определяют, как должен выполняться парсинг каждого потока данных об угрозах в Feed Utility.
Правила парсинга определяются в элементе Parsing
правил пользовательского потока данных об угрозах.
Ниже приведен пример правил парсинга для пользовательского потока данных об угрозах. Эти правила указывают, что входной поток данных об угрозах имеет формат JSON. Правило парсинга MD5 определяется для поля files/md5
во входном потоке данных об угрозах. Значения в этом поле проходят парсинг как хеши MD5.
<Feed> ... <Parsing type="json"> <MD5 type="MD5">files/MD5</MD5> </Parsing> ... <Feed> |
Элемент «Parsing»
Родительский элемент Parsing
содержит все вложенные правила парсинга. Его атрибуты определяют формат входных данных.
У этого элемента есть следующие атрибуты:
type
Задает тип входного потока данных об угрозах.
Этот атрибут может иметь следующие значения: json
, csv
, xml
, misp
, stix
, stix2
, pdf
, messageBody
, messageAttach
.
Feed Utility поддерживает STIX версий 1.0, 1.1, 2.0 и 2.1. Конкретная версия STIX определяется автоматически.
Файл, добавленный в каталог потока данных об угрозах pdf, не обрабатывается, если этот файл создан раньше или одновременно с последним созданным файлом, который уже был обработан.
delimiter
Задает разделитель для входных потоков данных об угрозах CSV. По умолчанию используется точка с запятой («;
»).
rootElement
Задает путь к корневому элементу для входных потоков данных об угрозах XML и JSON.
Подстановочные знаки «*
» и «?
» можно использовать вместо любого другого символа или группы символов. Подстановочный знак «*» используется для группы символов. Подстановочный знак «?
» используется для одиночного символа.
Части пути rootElement
нельзя указывать только с помощью подстановочных знаков. Например, запись «Feeds/*/Contents»
некорректна.
Значение корневого элемента можно указать с любым уровнем вложенности. Пределы уровня вложенности задаются с помощью символа «/
».
Параметр «Root element» может быть пустым. Если он не пустой, значение корневого элемента не должно содержать пустых уровней вложенности (подстрока «//
»), а также не должно начинаться или заканчиваться символом «/
».
В корневом элементе для потоков данных об угрозах JSON нельзя использовать подстановочные знаки.
В следующем примере демонстрируется использование элемента Parsing
для входного потока данных об угрозах в формате XML. В этом случае правила парсинга применяются к элементам, вложенным в элемент Feeds > Example > Contents
.
<Feed> ... <Parsing type="xml" rootElement="Feeds/Example/Contents"> ... </Parsing> ... <Feed> |
Индивидуальные правила парсинга
Правила парсинга для отдельных полей входного потока данных об угрозах должны быть вложены в элемент Parsing
. Когда Feed Utility обрабатывает входной поток данных об угрозах, поля выходного потока данных об угрозах создаются в соответствии с этими правилами.
Каждое правило имеет следующий формат:
<%OUTPUT_NAME% type="%VALUE_TYPE%">%INPUT_NAME%</%OUTPUT_NAME%>
Выше используются следующие элементы имени правила:
%OUTPUT_NAME% сохраняет вложенные поля. Если поле, указанное в %INPUT_NAME%, является вложенным, поле в выходном потоке данных об угрозах также будет вложенным. Например, если %OUTPUT_NAME% — это «MD5_HASH», а %INPUT_NAME% — это «files/md5», то поле в выходном потоке данных об угрозах будет называться «files/MD5_HASH».
В случае входного потока данных об угрозах в формате JSON в %OUTPUT_NAME% всегда должно использоваться значение Field
. Feed Utility использует имена полей из исходного потока данных об угрозах.
Feed Utility будет обрабатывать эти значения в соответствии с указанным типом. Например, если выходной поток данных об угрозах содержит доменные имена и URL, он будет скомпилирован в двоичный формат.
Возможны следующие типы значений:
url
– тип значения, используемый для URL.ip
– тип значения, используемый для IP-адресов.md5
– тип значения, используемый для хешей MD5.sha1
– тип значения, используемый для хешей SHA1.sha256
– тип значения, используемый для хешей SHA256.domain
– тип значения, используемый для доменных имен.context
– тип значения, используемый для контекстной информации./
».rootElement
элемента Parsing
. Путь чувствителен к регистру.Parsing
не должен содержать правил парсинга.В следующем примере демонстрируется синтаксис правила парсинга для входного формата JSON:
<Feed> ... <Parsing type="json"> <Field type="url">URL</Field> <Field type="ip">IP</Field> <Field type="context">GEO</Field> <Field type="md5">files/md5</Field> </Parsing> ... <Feed> |
В следующем примере демонстрируется синтаксис правила парсинга для входного формата CSV:
<Feed> ... <Parsing type="csv" delimiter=";"> <url type="url">1</url> <IP type="ip">2</IP> <GEO type="context">3</GEO> <MD5 type="md5">4</MD5> </Parsing> ... <Feed> |
В следующем примере демонстрируется синтаксис правила парсинга для входного формата XML:
<Feed> ... <Parsing type="xml" rootElement="Feeds/Example/Contents"> <URL type="url">url</URL> <IP type="ip">ip</IP> <GEO type="context">context</GEO> <MD5 type="md5">md5_hash</MD5> </Parsing> ... <Feed> |
Правила парсинга для потоков данных об угрозах типа «электронная почта»
Чтобы задать правила парсинга для стороннего потока данных об угрозах, укажите следующие значения для атрибута type
:
messageBody
– правила парсинга тела сообщения электронной почты.Это значение применимо, если в элементе Path
включены протоколы POP3 или IMAP.
messageAttach
– правила парсинга вложения электронной почты. Это значение применимо, если в элементе Path
включены протоколы POP3 или IMAP.
Парсинг тела сообщения (для потоков данных об угрозах типа «электронная почта»)
Feed Utility анализирует тело сообщения электронной почты, загруженного с почтового сервера, если в атрибуте type
элемента Parsing
задано значение messageBody
.
Для парсинга тела сообщения используются регулярные выражения, указанные в элементе Parsing
.
Для парсинга тела сообщения можно задать одно или несколько правил с регулярными выражениями.
Каждое правило имеет следующий вид:
<%FIELD_NAME% type="%FIELD_TYPE%">%REG_EXP%</%FIELD_NAME%>,
где:
%FIELD_NAME% определяет имя поля в выходном потоке данных об угрозах. Например, если %FIELD_NAME% — это «MD5», поле с этим значением в выходном потоке данных об угрозах также будет называться MD5.
%FIELD_TYPE% — тип индикатора.
%REG_EXP% — регулярное выражение.
Каждое регулярное выражение применяется ко всему телу сообщения.
Поток данных об угрозах формируется в соответствии с содержанием загруженных сообщений электронной почты. Формирование потока данных об угрозах удовлетворяет следующим условиям:
Feed Utility сохраняет дату последнего обновления потока данных об угрозах. В случае обращения к почтовому серверу, парсинг применяется только к сообщениям электронной почты, полученным после предыдущего обновления потока данных об угрозах.
message_from
– адрес электронной почты отправителя сообщения.message_subject
– тема сообщения электронной почты.message_date
– дата получения сообщения электронной почты почтовым сервером.type
, отличным от CONTEXT.type
которого имеет значение CONTEXT.Значения указываются в записях итогового потока данных об угрозах, которые содержат индикаторы (IP/HASH/URL) из того же сообщения электронной почты.
Если для одного регулярного выражения получено более одного значения (с атрибутом type, имеющим значение CONTEXT), эти значения указываются в одной записи итогового потока данных об угрозах. Значения разделяются последовательностью символов «;
».
Excluded
(см. раздел «Исключенный элемент для потоков данных об угрозах типов „PDF“ и „электронная почта“» ниже).Парсинг вложений сообщения (для потоков данных об угрозах типа «электронная почта»)
Feed Utility анализирует вложения сообщения электронной почты, загруженного с почтового сервера, если в атрибуте type элемента Parsing
задано значение messageAttach
.
Можно установить одно или несколько правил для типов вложенных файлов.
Каждое правило имеет следующий вид:
<Attach type="%ATTACH_TYPE%"></Attach>
,
где:
%ATTACH_TYPE% — тип вложения.
%ATTACH_TYPE% может иметь следующие значения:
csv
json
xml
stix
stix2
pdf
Элемент Attach
имеет хотя бы одно значение.
Можно задать одно или несколько правил с регулярными выражениями.
Каждое правило имеет следующий вид:
<%FIELD_NAME% type="%FIELD_TYPE%">%REG_EXP%</%FIELD_NAME%>
,
где:
%FIELD_NAME% определяет имя поля в выходном потоке данных об угрозах. Например, если %FIELD_NAME% — это «MD5», поле с этим значением в выходном потоке данных об угрозах также будет называться MD5.
%REG_EXP% — регулярное выражение.
%FIELD_TYPE% — тип индикатора. Для элемента %FIELD_TYPE% в атрибуте type
необходимо указать одно из следующих значений:
В следующем примере демонстрируется правило парсинга вложения сообщения:
<Attach type="pdf"> <hash1 type="md5">([\da-fA-F]{32})</hash1> <hash2 type="sha1">([\da-fA-F]{40})</hash2> </Attach> |
Утилита Feed выполняет парсинг файлов со следующими расширениями:
Значение атрибута |
Расширения файлов |
csv |
csv и txt |
json |
json |
xml |
xml |
stix1 |
xml |
stix2 |
json |
Если правила парсинга заданы одновременно для stix1 и xml (или stix2 и json), Feed Utility выполняет следующие действия:
Если в сообщении электронной почты содержится несколько вложений, информация из каждого вложения попадает в один итоговый поток данных об угрозах.
Поток данных об угрозах формируется в соответствии с содержанием загруженных сообщений электронной почты. Формирование потока данных об угрозах удовлетворяет следующим условиям:
Feed Utility сохраняет дату последнего обновления потока данных об угрозах. В случае обращения к почтовому серверу, парсинг применяется только к сообщениям электронной почты, полученным после предыдущего обновления потока данных об угрозах.
message_from
– адрес электронной почты отправителя сообщения.message_subject
– тема сообщения электронной почты.message_date
– дата получения сообщения электронной почты почтовым сервером.attach_name
– имя вложения.type
, отличным от CONTEXT.type
которого имеет значение CONTEXT.Значения указываются в записях итогового потока данных об угрозах, которые содержат индикаторы (IP/HASH/URL) из того же вложения электронной почты.
Если для одного регулярного выражения получено более одного значения (с атрибутом type, имеющим значение CONTEXT), эти значения указываются в одной записи итогового потока данных об угрозах. Значения разделяются последовательностью символов «;
».
Excluded
(см. раздел «Исключенный элемент для потоков данных об угрозах типов „PDF“ и „электронная почта“» ниже).Исключенный элемент для потоков данных об угрозах типов «PDF» и «электронная почта»
Если значение pdf, messageBody
или messageAttach
указано в атрибуте type
элемента Parsing
, элемент Feed
может содержать раздел Excluded
и один или несколько вложенных элементов <Item/> с правилами исключения индикаторов для итогового потока данных об угрозах.
Раздел Excluded
имеет следующий вид:
<Excluded> <Item>{RegExp}</Item> ... </Excluded> |
Где {RegExp}
— регулярное выражение.
Элементы Excluded
и Item
не являются обязательными.
В следующем примере демонстрируются правила исключения:
<Excluded> <Item>(\w{3}\s+\d+\s+[\d\:]+)\s</Item> <Item>(https:\/\/badurl\.com)</Item> </Excluded> |