Анализ взлома от А до Я (Часть 4)

Опубликовано: 10 Апреля, 2023

В третьей части этой серии статей мы видели, что Snort регистрировал почти все действия, которые происходили в ходе эксплуатации веб-сервера хакером. Тем не менее, он пропустил использование ключевой программы, которая была передана туда хакером. Как я уже упоминал в третьей части, IDS не является устройством, гарантирующим сетевую безопасность. IDS по своей сути является программой сопоставления с образцом. Эти шаблоны являются сигнатурами, которые были написаны для него и продолжают обновляться с течением времени. Хотя поставщики IDS предпринимают довольно приличные попытки генерировать довольно широкий набор сигнатур, все еще есть возможности для улучшения.

Существует большое количество вредоносных программ, о которых аналитик сетевой безопасности должен знать и опасаться. Одним из таких примеров являются руткиты, а в случае с этой статьей — руткит FU. Другими примерами могут быть трояны и бэкдоры, такие как netcat. Проблема, однако, в том, что не у каждой IDS есть сигнатуры для них. Поэтому действительно имеет смысл разработать сигнатуры для вредоносных программ, подобные только что рассмотренным. На этой ноте мы узнаем, как написать подпись Snort IDS. Как вы скоро увидите, сделать это на самом деле не так уж и сложно.

Написание подписей Snort

Лучший способ чему-то научиться — это сделать это, а также иметь под рукой пример, на котором можно учиться и использовать в качестве основы того, что работает. Имея это в виду, давайте взглянем на приведенную ниже подпись Snort, которую я взял из набора правил по умолчанию.

Давайте рассмотрим приведенную выше сигнатуру более подробно, так как она поможет нам создать свою собственную, если мы поймем ее суть. Самое первое поле достаточно простое, так как это просто предупреждение.

Итак, имея эту информацию на руках, мы теперь готовы попробовать создать нашу собственную подпись Snort, а затем протестировать ее, чтобы подтвердить ее удобство использования. Хорошей сигнатурой для разработки была бы сигнатура для руткита FU, который использовался в этой серии статей. Хотя на чем его строить? Есть ли у него какие-то определяющие черты? Использует ли он жестко заданный порт или уникальный порядковый номер TCP? По сути, все, что кажется уникальным для него. Имея это в виду, все, что уникально для него, это имя, которое он имеет fu.exe. Этого достаточно, чтобы начать создавать нашу подпись Snort.

Давайте создадим нашу собственную подпись Snort

Мы будем использовать некоторые из тех же полей в нашем образце подписи, что и выше, хотя мы не будем использовать их все.

Выше показана довольно простая сигнатура для руткита FU. Мы знаем, что бинарный файл fu.exe был передан по TFTP на веб-сервер жертвы во время взлома. Это действительно обо всем, что идентифицировало его, помимо его фактического использования. В приведенном ниже пакете показана строка ASCII файла fu.exe.

Я не указывал здесь external_net или home_net, пытаясь сделать это максимально простым. Содержимое файла snort.conf у разных людей может быть разным, поэтому иногда лучше всего сохранять простоту, по крайней мере, до тех пор, пока вы не освоитесь с написанием подписи. Вы также заметите, что в моей подписи нет номеров портов, оператора потока, комбинации флагов и других подобных полей. Хотя это делает подпись довольно свободной, она все же должна быть эффективной. Кроме того, содержимое полезной нагрузки fu.exe должно быть достаточно уникальным, чтобы сократить количество ложных срабатываний, которые могут возникнуть при случайных попаданиях ASCII в полезные нагрузки других законных пакетов. На этой ноте давайте продолжим и вставим наше правило вместе с другими и проанализируем двоичный пакетный файл хака.

Успех! Наша подпись Snort сработала. Теперь, как упоминалось ранее, это довольно скудная подпись с небольшим количеством других полей, чтобы попытаться сократить количество ложных срабатываний. Если вы хотите попробовать включить в него другие поля правил Snort, я бы посоветовал вам еще немного поиграться с самим руткитом FU, а затем изучить полученную трассировку пакетов. Это позволит вам искать любые дополнительные определяющие функции. Если они будут обнаружены, вы можете включить их в вышеуказанную сигнатуру или позволить вам написать другие конкретные подписи в отношении руткита FU.

Заворачивать

Что мы сделали в ходе этой серии статей из четырех частей, так это рассмотрели, как хакер потенциально может профилировать вашу сеть. Имея эту информацию в руках, тот же самый хакер мог затем использовать вашу сеть, а затем развивать свои стратегии пост-эксплуатации. Что общего у всей этой активности, так это то, что она оставит контрольные отметки на уровне пакетов. Те же самые метки можно использовать для создания подписей IDS. Не каждый взлом сети будет использовать хорошо известные инструменты, такие как Nmap, и известные руткиты, такие как руткит FU. Что тогда нужно сделать, так это попытаться придумать несколько сигнатур, которые уловят типичную хакерскую активность.

Написание подписей — это только половина дела, вам также необходимо убедиться, что они работают, а также не вызывают слишком много ложных срабатываний. Если сигнатура вызовет слишком много ложных событий, аналитик, скорее всего, проигнорирует ее. Изучение того, как писать хорошие подписи, — это процесс обучения, который потребует времени и практики. Однако не расстраивайтесь, поскольку, как вы видели, написать их не так уж сложно. Я искренне надеюсь, что эта серия статей была вам полезна, и, как всегда, буду рада вашим отзывам. До следующего раза.