Правила парсинга

11 апреля 2024

ID 175163

Правила парсинга задаются для пользовательских потоков данных об угрозах (потоков данных об угрозах, определенных с помощью элемента 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.

    • Входные потоки данных об угрозах в формате XML

      Подстановочные знаки «*» и «? » можно использовать вместо любого другого символа или группы символов. Подстановочный знак «*» используется для группы символов. Подстановочный знак «?» используется для одиночного символа.

      Части пути rootElement нельзя указывать только с помощью подстановочных знаков. Например, запись «Feeds/*/Contents» некорректна.

    • Входные потоки данных об угрозах в формате JSON

      Значение корневого элемента можно указать с любым уровнем вложенности. Пределы уровня вложенности задаются с помощью символа «/».

      Параметр «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% определяет имя поля в выходном потоке данных об угрозах. Например, если %OUTPUT_NAME% — это «MD5», поле с этим значением в выходном потоке данных об угрозах также будет называться MD5.

    %OUTPUT_NAME% сохраняет вложенные поля. Если поле, указанное в %INPUT_NAME%, является вложенным, поле в выходном потоке данных об угрозах также будет вложенным. Например, если %OUTPUT_NAME% — это «MD5_HASH», а %INPUT_NAME% — это «files/md5», то поле в выходном потоке данных об угрозах будет называться «files/MD5_HASH».

    В случае входного потока данных об угрозах в формате JSON в %OUTPUT_NAME% всегда должно использоваться значение Field. Feed Utility использует имена полей из исходного потока данных об угрозах.

  • %VALUE_TYPE% — это тип значений, хранящихся в этом поле.

    Feed Utility будет обрабатывать эти значения в соответствии с указанным типом. Например, если выходной поток данных об угрозах содержит доменные имена и URL, он будет скомпилирован в двоичный формат.

    Возможны следующие типы значений:

    • url – тип значения, используемый для URL.
    • ip – тип значения, используемый для IP-адресов.
    • md5 – тип значения, используемый для хешей MD5.
    • sha1 – тип значения, используемый для хешей SHA1.
    • sha256 – тип значения, используемый для хешей SHA256.
    • domain – тип значения, используемый для доменных имен.
    • context – тип значения, используемый для контекстной информации.
  • %INPUT_NAME% — имя поля во входном потоке данных об угрозах. Оно должно быть определено в соответствии с форматом входного потока данных об угрозах:
    • Для входных потоков данных об угрозах в формате JSON значение %INPUT_NAME% должно содержать имя поля из входного потока данных об угрозах. Вложенные поля разделяются символом «/».
    • Для входных потоков данных об угрозах в формате CSV значение %INPUT_NAME% должно содержать номер столбца.
    • Для входных потоков данных об угрозах в формате XML значение %INPUT_NAME% должно содержать путь к одному из вложенных элементов корневого элемента. Корневой элемент определяется в атрибуте rootElement элемента Parsing. Путь чувствителен к регистру.
    • Для входных потоков данных об угрозах STIX и MISP элемент 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 необходимо указать одно из следующих значений:

  • ip
  • md5
  • sha256
  • sha1
  • url
  • context

В следующем примере демонстрируется правило парсинга вложения сообщения:

<Attach type="pdf">

<hash1 type="md5">([\da-fA-F]{32})</hash1>

<hash2 type="sha1">([\da-fA-F]{40})</hash2>

</Attach>

Утилита Feed выполняет парсинг файлов со следующими расширениями:

Значение атрибута type элемента Parsing

Расширения файлов

csv

csv и txt

json

json

xml

xml

stix1

xml

stix2

json

pdf

pdf

Если правила парсинга заданы одновременно для stix1 и xml (или stix2 и json), Feed Utility выполняет следующие действия:

  1. Пытается подвергнуть прикрепленный файл парсингу как stix (с расширением xml/json).
  2. Если при парсинге не возникло ошибок и файл является корректным потоком данных об угрозах stix, парсинг этого файла в соответствии с правилами парсинга xml/json-вложений, указанными в настройках потока данных об угрозах, не выполняется.
  3. Если во время парсинга произошла ошибка (файл не является корректным потоком данных об угрозах stix), этот файл подвергается парсингу в соответствии с правилами парсинга xml/json-вложений, указанными в настройках потока данных об угрозах.

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

Поток данных об угрозах формируется в соответствии с содержанием загруженных сообщений электронной почты. Формирование потока данных об угрозах удовлетворяет следующим условиям:

  • Значения всех загруженных вложений электронной почты отображаются в одном итоговом потоке данных об угрозах.

    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>

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!