<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%83%D0%B3%D1%80%D0%BE%D0%B7_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%B8%D0%B7%D0%B0</id>
	<title>Поиск угроз и криминалистическая экспертиза - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%83%D0%B3%D1%80%D0%BE%D0%B7_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%B8%D0%B7%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%83%D0%B3%D1%80%D0%BE%D0%B7_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%B8%D0%B7%D0%B0&amp;action=history"/>
	<updated>2026-10-06T17:59:32Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%83%D0%B3%D1%80%D0%BE%D0%B7_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%B8%D0%B7%D0%B0&amp;diff=6837&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: « = Поиск угроз и криминалистика = &#039;&#039;&#039;Руководство&#039;&#039;&#039;  При поиске угроз время и точность имеют решающее значение. Вам нужно действовать максимально быстро и точно, чтобы найти информацию и отреагировать на неё. Как аналитик по безопасности, расследующий инц...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D1%83%D0%B3%D1%80%D0%BE%D0%B7_%D0%B8_%D0%BA%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%B8%D0%B7%D0%B0&amp;diff=6837&amp;oldid=prev"/>
		<updated>2026-09-24T18:25:34Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: « = Поиск угроз и криминалистика = &amp;#039;&amp;#039;&amp;#039;Руководство&amp;#039;&amp;#039;&amp;#039;  При поиске угроз время и точность имеют решающее значение. Вам нужно действовать максимально быстро и точно, чтобы найти информацию и отреагировать на неё. Как аналитик по безопасности, расследующий инц...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Поиск угроз и криминалистика =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Руководство&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
При поиске угроз время и точность имеют решающее значение. Вам нужно действовать максимально быстро и точно, чтобы найти информацию и отреагировать на неё. Как аналитик по безопасности, расследующий инциденты безопасности или занимающийся поиском угроз, вы часто сталкиваетесь с необходимостью:&lt;br /&gt;
&lt;br /&gt;
* Перемещаться между несколькими выполненными запросами и их результатами.&lt;br /&gt;
* Управлять доказательствами, собранными в ходе расследований, и повторно использовать их при построении дополнительных запросов.&lt;br /&gt;
* Обеспечивать, чтобы:&lt;br /&gt;
** Расследование сохранялось в контексте.&lt;br /&gt;
** Инструменты для таких действий поддерживали быстрое создание запросов и детальный обзор результатов.&lt;br /&gt;
&lt;br /&gt;
Далее мы покажем, как достичь этих целей с помощью &amp;#039;&amp;#039;&amp;#039;Расследований&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Целевая аудитория ==&lt;br /&gt;
Эта страница предназначена для команд безопасности, занимающихся поиском угроз или анализом инцидентов безопасности, например, для команды реагирования на инциденты или аналитиков по безопасности.&lt;br /&gt;
&lt;br /&gt;
== Сценарий ==&lt;br /&gt;
Далее мы рассматриваем сценарий, в котором вы получаете уведомление из внешнего источника о подозрительно большом количестве несанкционированных запросов к вашей плоскости управления &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039; в период с 2024-02-13 16:00:00 по 2024-02-13 18:59:59. Ваш кластер &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039; настроен как кластер &amp;#039;&amp;#039;&amp;#039;AWS EKS&amp;#039;&amp;#039;&amp;#039;, а логи пересылаются в Ключ-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
Как аналитик по безопасности, вы хотите понять, связано ли это с вредоносной деятельностью или может указывать на инцидент кибербезопасности. В ходе этого расследования вы будете следовать по цепочке своих находок, чтобы проиллюстрировать природу поиска угроз и решения инцидентов.&lt;br /&gt;
&lt;br /&gt;
== Предварительные требования ==&lt;br /&gt;
&lt;br /&gt;
* Настройте наблюдаемость &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039; с помощью &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Operator&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Настройте логирование в облаке:&lt;br /&gt;
** Настройте логирование кластера &amp;#039;&amp;#039;&amp;#039;EKS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
** Настройте логирование потоков &amp;#039;&amp;#039;&amp;#039;VPC&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
** Настройте логирование &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039; в &amp;#039;&amp;#039;&amp;#039;K8S&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
** Потоковая передача логов через &amp;#039;&amp;#039;&amp;#039;Amazon Data Firehose&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Базовые знания:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Query Language (DQL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Pattern Language (DPL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Как работает разрешение имён &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039; в кластерах &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Путь расследования 1. Анализ логов аудита Kubernetes ==&lt;br /&gt;
Сначала вы хотите понять, какие действия вызвали уведомление о большом количестве несанкционированных запросов в логах аудита &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039;. Откройте &amp;#039;&amp;#039;&amp;#039;Расследования&amp;#039;&amp;#039;&amp;#039; и создайте новое расследование.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 1. Задайте временной диапазон ====&lt;br /&gt;
В разделе временного диапазона задайте период с 2024-02-13 16:00:00 по 2024-02-13 18:59:59, когда произошли несанкционированные запросы.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 2. Получите логи аудита кластера Kubernetes ====&lt;br /&gt;
Логи аудита &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039; пересылаются в Ключ-АСТРОМ со значениями &amp;lt;code&amp;gt;aws.log_group&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;log_stream&amp;lt;/code&amp;gt;. Чтобы получить все уникальные группы логов &amp;#039;&amp;#039;&amp;#039;AWS CloudWatch&amp;#039;&amp;#039;&amp;#039;, загруженные в Ключ-АСТРОМ, скопируйте и вставьте следующий запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch logs&lt;br /&gt;
| summarize count(), by: aws.log_group&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
На этом этапе вы заметите, что в разделе «Дерево запросов» в правом верхнем углу появился круг. Это называется корневым узлом и отмечает начальную точку вашего расследования. С этого момента каждый раз, когда вы изменяете и выполняете запрос, в дереве запросов добавляется новый узел, позволяя вам перемещаться между запросами, сохраняя историю расследования. Подробности см. в разделе «Дерево запросов».&lt;br /&gt;
&lt;br /&gt;
==== Шаг 3. Фильтрация по имени группы логов ====&lt;br /&gt;
В результатах запроса найдите запись с группой логов, собирающей логи плоскости управления &amp;#039;&amp;#039;&amp;#039;EKS&amp;#039;&amp;#039;&amp;#039; (в нашем примере &amp;lt;code&amp;gt;/aws/eks/unguard-secla-demo/cluster&amp;lt;/code&amp;gt;), и добавьте её как фильтр в ваш запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Чтобы просмотреть только события аудита плоскости управления, измените команду фильтрации в поле ввода запроса, добавив оператор &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; и строковую функцию &amp;lt;code&amp;gt;contains&amp;lt;/code&amp;gt; следующим образом:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter aws.log_group == &amp;quot;/aws/eks/unguard-secla-demo/cluster&amp;quot; and contains(aws.log_stream, &amp;quot;audit&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;В поле ввода запроса удалите команду &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 4. Изучите содержимое ====&lt;br /&gt;
В таблице результатов запроса щёлкните правой кнопкой мыши по любой ячейке в поле &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Просмотреть сведения о поле&amp;#039;&amp;#039;&amp;#039;, чтобы увидеть необработанное содержимое поля. Подробности см. в разделе «Изучение данных в исходном формате».&lt;br /&gt;
&lt;br /&gt;
==== Шаг 5. Извлеките поля из JSON ====&lt;br /&gt;
В таблице результатов запроса щёлкните правой кнопкой мыши по любой ячейке в поле &amp;lt;code&amp;gt;Content&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Извлечь поля&amp;#039;&amp;#039;&amp;#039;, чтобы перейти в &amp;#039;&amp;#039;&amp;#039;DPL Architect&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
# Выберите &amp;#039;&amp;#039;&amp;#039;Сохранённые шаблоны&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В разделе «Шаблоны Ключ-АСТРОМ» выберите &amp;lt;code&amp;gt;k8s &amp;gt; audit&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При извлечении полей из структуры &amp;#039;&amp;#039;&amp;#039;JSON&amp;#039;&amp;#039;&amp;#039; вы можете определить только частичную схему для полей, relevant для вашего сценария. Чтобы продолжить расследование, вам нужно выбрать только relevant поля.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса &amp;#039;&amp;#039;&amp;#039;DPL Architect&amp;#039;&amp;#039;&amp;#039; замените шаблон следующим образом:&amp;lt;pre&amp;gt;&lt;br /&gt;
JSON{&lt;br /&gt;
STRING:verb,&lt;br /&gt;
JSON{string:username}(flat=true):user,&lt;br /&gt;
JSON_ARRAY{ipaddr}(typed=true):sourceIPs,&lt;br /&gt;
JSON{string+:resource}(flat=true):objectRef,&lt;br /&gt;
JSON{int:code}(flat=true):responseStatus&lt;br /&gt;
}(flat=true)&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Результаты&amp;#039;&amp;#039;&amp;#039;, чтобы увидеть обзор полей, которые будут извлечены из набора данных предварительного просмотра соответствия.&lt;br /&gt;
&lt;br /&gt;
Выберите &amp;#039;&amp;#039;&amp;#039;Вставить шаблон&amp;#039;&amp;#039;&amp;#039;, чтобы добавить шаблон в ваш запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 6. Фильтрация событий ====&lt;br /&gt;
Чтобы выяснить, с каких IP-адресов исходит несанкционированная активность, вам нужно:&lt;br /&gt;
&lt;br /&gt;
* Развернуть массив исходных IP-адресов.&lt;br /&gt;
* Суммировать результаты с relevant полями, извлечёнными ранее.&lt;br /&gt;
* Отфильтровать результаты, чтобы просмотреть только несанкционированные запросы (401) и запрещённые запросы (403).&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса добавьте следующий фрагмент &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;, затем выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос:&amp;lt;pre&amp;gt;&lt;br /&gt;
| expand sourceIPs&lt;br /&gt;
| summarize count(), by: {sourceIPs, username, verb, resource=objectRef, responseStatus}&lt;br /&gt;
| filter in(responseStatus, {401, 403})&lt;br /&gt;
&amp;lt;/pre&amp;gt;В меню таблицы результатов отсортируйте результаты по количеству, чтобы увидеть, какие IP-адреса имели наибольшее количество подключений.&lt;br /&gt;
&lt;br /&gt;
Похоже, вы нашли источник вашего уведомления безопасности:&lt;br /&gt;
&lt;br /&gt;
* Несанкционированный внешний IP-адрес пытается получить секреты из вашей плоскости управления (в нашем примере &amp;lt;code&amp;gt;198.51.100.2&amp;lt;/code&amp;gt;, с кодом ответа 401 и 122 подключениями). Это неудивительно, поскольку сканеры безопасности пытаются делать это ежедневно из интернета.&lt;br /&gt;
* Частный IP-адрес пытается многократно перечислить поды (в нашем примере &amp;lt;code&amp;gt;172.31.29.138&amp;lt;/code&amp;gt;, с кодом ответа 403 и 2090 подключениями). Похоже, это один из подов в вашем кластере &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039;, и такое поведение может указывать на скомпрометированный под!&lt;br /&gt;
&lt;br /&gt;
==== Шаг 7. Добавьте IP-адреса как доказательства ====&lt;br /&gt;
Оба IP-адреса нуждаются в дальнейшем анализе, но тот, у которого код ответа 403 и 2090 попыток, более критичен и требует особого внимания.&lt;br /&gt;
&lt;br /&gt;
Чтобы сохранить IP-адреса как доказательства, вы можете добавить первый IP-адрес (&amp;lt;code&amp;gt;198.51.100.2&amp;lt;/code&amp;gt;) в предустановленный список доказательств, а второй (&amp;lt;code&amp;gt;172.31.29.138&amp;lt;/code&amp;gt;) — в новый настроенный список доказательств:&lt;br /&gt;
&lt;br /&gt;
* Щёлкните правой кнопкой мыши по &amp;lt;code&amp;gt;198.51.100.2&amp;lt;/code&amp;gt;, затем выберите &amp;#039;&amp;#039;&amp;#039;Добавить в список доказательств &amp;gt; Подозрительные IP-адреса&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Щёлкните правой кнопкой мыши по &amp;lt;code&amp;gt;172.31.29.138&amp;lt;/code&amp;gt;, выберите &amp;#039;&amp;#039;&amp;#039;Добавить в список доказательств &amp;gt; Новый список доказательств&amp;#039;&amp;#039;&amp;#039; и введите имя, например «Подозрительный под».&lt;br /&gt;
&lt;br /&gt;
== Путь расследования 2. Изучите потенциальную цель ==&lt;br /&gt;
Чтобы понять, что делал под и какие логи других сервисов вам нужны для расследования, вы можете начать с сетевых логов. Для облачных сервисов лучше всего начать с логов потоков сети &amp;#039;&amp;#039;&amp;#039;VPC&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 1. Получите логи потоков VPC ====&lt;br /&gt;
&lt;br /&gt;
==== Шаг 2. Извлеките поля ====&lt;br /&gt;
&lt;br /&gt;
==== Шаг 3. Отфильтруйте результаты ====&lt;br /&gt;
&lt;br /&gt;
== Путь расследования 3. Определите, какие данные под отправил наружу ==&lt;br /&gt;
Чтобы найти имена &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;, разрешённые подом, вам нужно проверить логи &amp;#039;&amp;#039;&amp;#039;CoreDNS&amp;#039;&amp;#039;&amp;#039;. При правильной настройке логи запросов видны в логах контейнера &amp;#039;&amp;#039;&amp;#039;CoreDNS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 1. Получите логи CoreDNS ====&lt;br /&gt;
Чтобы получить логи контейнера &amp;#039;&amp;#039;&amp;#039;CoreDNS&amp;#039;&amp;#039;&amp;#039;, перейдите к шагу «Получение логов аудита кластера Kubernetes» и измените запрос в поле ввода запроса следующим образом:&amp;lt;pre&amp;gt;&lt;br /&gt;
fetch logs&lt;br /&gt;
| filter k8s.container.name == &amp;quot;coredns&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос. Это создаст третью ветвь в дереве запросов.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 2. Извлеките поля ====&lt;br /&gt;
&lt;br /&gt;
# В таблице результатов запроса щёлкните правой кнопкой мыши по любой ячейке в поле &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Извлечь поля&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В &amp;#039;&amp;#039;&amp;#039;DPL Architect&amp;#039;&amp;#039;&amp;#039; выберите &amp;#039;&amp;#039;&amp;#039;Сохранённые шаблоны&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В разделе «Шаблоны Ключ-АСТРОМ» выберите &amp;lt;code&amp;gt;k8s &amp;gt; coredns-query&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Выберите &amp;#039;&amp;#039;&amp;#039;Вставить шаблон&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 3. Отфильтруйте результаты ====&lt;br /&gt;
Чтобы просмотреть только записи, содержащие &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросы, исходящие от вашего подозрительного пода, выберите заголовок столбца &amp;lt;code&amp;gt;source_ip&amp;lt;/code&amp;gt;, затем выберите &amp;#039;&amp;#039;&amp;#039;Фильтровать по &amp;gt; Подозрительный под&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 4. Извлеките доменное имя ====&lt;br /&gt;
В таблице результатов может быть довольно много &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросов. Для лучшего понимания разрешённых имён хостов вам нужно извлечь часть доменного имени из поля &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; и суммировать результаты на его основе.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса добавьте следующий фрагмент в запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;:&amp;lt;pre&amp;gt;&lt;br /&gt;
| parse name, &amp;quot;ld* &amp;#039;.&amp;#039;? ( (ld &amp;#039;.&amp;#039; ld):domain &amp;#039;.&amp;#039; eos)&amp;quot;&lt;br /&gt;
| summarize count = count(), by: {domain}&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Вы заметите, что помимо внутренних или локальных доменов довольно часто разрешается один подозрительный домен (&amp;lt;code&amp;gt;tiitha-maliciousdomain.com&amp;lt;/code&amp;gt;)!&lt;br /&gt;
&lt;br /&gt;
==== Шаг 5. Добавьте домен как доказательство ====&lt;br /&gt;
В таблице результатов запроса щёлкните правой кнопкой мыши по подозрительному доменному имени, затем выберите &amp;#039;&amp;#039;&amp;#039;Добавить в список доказательств &amp;gt; Новый список доказательств&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Введите имя для нового списка доказательств, например «Домен атакующего».&lt;br /&gt;
&lt;br /&gt;
==== Шаг 6. Фильтрация по домену атакующего ====&lt;br /&gt;
В таблице результатов запроса выберите ячейку с подозрительным доменом, затем выберите &amp;#039;&amp;#039;&amp;#039;Фильтровать по&amp;#039;&amp;#039;&amp;#039;, чтобы добавить в запрос фильтр, который получает только запросы, включающие домен атакующего.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса удалите команду &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Похоже, между подозрительным подом и доменом атакующего происходит какой-то обмен данными. Судя по именам запросов и учитывая количество запросов, данные, по-видимому, извлекаются через &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-туннелирование.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 7. Проанализируйте DNS-запросы ====&lt;br /&gt;
Поскольку в сторону этого конкретного домена поступают тысячи &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросов, вы можете захотеть агрегировать данные, чтобы определить, как действовать дальше.&lt;br /&gt;
&lt;br /&gt;
В результатах запроса выберите заголовок столбца &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, затем выберите &amp;#039;&amp;#039;&amp;#039;Суммировать&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Вы заметите много запросов &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;AAAA&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;TXT&amp;#039;&amp;#039;&amp;#039; от пода. Вы начинаете исследовать запросы &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
В таблице результатов запроса щёлкните правой кнопкой мыши по ячейке &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; и выберите &amp;#039;&amp;#039;&amp;#039;Фильтровать по&amp;#039;&amp;#039;&amp;#039;, чтобы добавить фильтр в запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса удалите команду &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Чтобы определить, что отправляется наружу, вам нужно извлечь часть поддомена из домена. Для этого вам нужно проанализировать один из &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросов, разрешающих домен атакующего.&lt;br /&gt;
&lt;br /&gt;
# Дважды щёлкните по любой ячейке в таблице результатов запроса.&lt;br /&gt;
# В окне &amp;#039;&amp;#039;&amp;#039;Сведения (…)&amp;#039;&amp;#039;&amp;#039; проверьте данные в поле &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Похоже, что &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-имя структурировано как идентификатор, за которым следует часть полезной нагрузки, закодированная в шестнадцатеричном формате, и эти части разделены точками.&lt;br /&gt;
&lt;br /&gt;
Чтобы разобрать и декодировать полезную нагрузку, добавьте следующий фрагмент &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; в запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;:&amp;lt;pre&amp;gt;&lt;br /&gt;
| parse name, &amp;quot;&amp;quot;&amp;quot;ld:id &amp;#039;.&amp;#039; ld:payload &amp;#039;.tiitha-maliciousdomain&amp;#039;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
| fieldsAdd payload=replaceString(payload,&amp;quot;.&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
| fields timestamp, id, payload=decodeBase16ToString(payload)&lt;br /&gt;
| sort timestamp, id&lt;br /&gt;
&amp;lt;/pre&amp;gt;Результат доказывает, что данные из вашего пода определённо извлекаются и отправляются наружу!&lt;br /&gt;
&lt;br /&gt;
== Путь расследования 4. Выясните, как команды отправлялись на под ==&lt;br /&gt;
Вы точно знаете, что под отправляет информацию на внешний &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-сервер, но ещё не выяснили, как он получает команды. Поскольку &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросы типа &amp;#039;&amp;#039;&amp;#039;TXT&amp;#039;&amp;#039;&amp;#039; позволяют получать более крупные ответы и иногда также используются для вредоносных транзакций, вам нужно взглянуть на эти запросы. Поскольку записи &amp;#039;&amp;#039;&amp;#039;CoreDNS&amp;#039;&amp;#039;&amp;#039; не содержат полезную нагрузку ответа, вы обращаетесь к логам &amp;#039;&amp;#039;&amp;#039;Route53&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 1. Проанализируйте записи TXT ====&lt;br /&gt;
Используя дерево запросов, перейдите к шагу «Получение логов аудита кластера Kubernetes».&lt;br /&gt;
&lt;br /&gt;
В результатах запроса найдите запись с вашей группой логов &amp;#039;&amp;#039;&amp;#039;Route53&amp;#039;&amp;#039;&amp;#039; (в нашем примере &amp;lt;code&amp;gt;/aws/route53/unguard-secla-demo/resolver-logs&amp;lt;/code&amp;gt;) и добавьте её как фильтр в ваш запрос &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса удалите команду &amp;lt;code&amp;gt;summarize&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос. Это создаст четвёртую ветвь в дереве запросов.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 2. Извлеките поля из записей логов ====&lt;br /&gt;
&lt;br /&gt;
# В таблице результатов запроса щёлкните правой кнопкой мыши по любой ячейке в поле &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; и выберите &amp;#039;&amp;#039;&amp;#039;Извлечь поля&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В &amp;#039;&amp;#039;&amp;#039;DPL Architect&amp;#039;&amp;#039;&amp;#039; выберите &amp;#039;&amp;#039;&amp;#039;Сохранённые шаблоны&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# В разделе «Шаблоны Ключ-АСТРОМ» выберите &amp;lt;code&amp;gt;aws &amp;gt; route53-query&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Вам нужно извлечь значения &amp;lt;code&amp;gt;query_name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query_type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;srcaddr&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;answers&amp;lt;/code&amp;gt; из записи лога. В поле ввода запроса вы можете заменить шаблон следующим образом:&amp;lt;pre&amp;gt;&lt;br /&gt;
json{&lt;br /&gt;
string:query_name,&lt;br /&gt;
string:query_type,&lt;br /&gt;
json_array:answers,&lt;br /&gt;
ipaddr:srcaddr&lt;br /&gt;
}(flat=true)&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Вставить шаблон&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
==== Шаг 3. Отфильтруйте данные ====&lt;br /&gt;
В результатах запроса выберите заголовок столбца &amp;lt;code&amp;gt;query_name&amp;lt;/code&amp;gt;, затем выберите &amp;#039;&amp;#039;&amp;#039;Фильтровать по &amp;gt; Домен атакующего&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Вас интересуют только запросы типа &amp;#039;&amp;#039;&amp;#039;TXT&amp;#039;&amp;#039;&amp;#039;, поэтому вы можете дополнить фильтр соответствующим выражением. Поскольку часть &amp;lt;code&amp;gt;answers&amp;lt;/code&amp;gt; является массивом, разверните поле так, чтобы каждое значение в массиве было отдельной записью. Вам нужны только поля &amp;lt;code&amp;gt;srcaddr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;query_name&amp;lt;/code&amp;gt; и элемент &amp;lt;code&amp;gt;Rdata&amp;lt;/code&amp;gt; из объекта ответа.&lt;br /&gt;
&lt;br /&gt;
В поле ввода запроса измените команду фильтрации, добавив следующий фрагмент:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter endsWith(query_name, &amp;quot;tiitha-maliciousdomain.com.&amp;quot;) and query_type == &amp;quot;TXT&amp;quot;&lt;br /&gt;
| expand answers&lt;br /&gt;
| fields srcaddr, query_name, answer=answers[Rdata]&lt;br /&gt;
&amp;lt;/pre&amp;gt;Выберите &amp;#039;&amp;#039;&amp;#039;Запустить&amp;#039;&amp;#039;&amp;#039;, чтобы выполнить запрос.&lt;br /&gt;
&lt;br /&gt;
Ваша гипотеза подтвердилась: &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросы &amp;#039;&amp;#039;&amp;#039;TXT&amp;#039;&amp;#039;&amp;#039; использовались для получения команд. Выполненные команды (включая запросы к плоскости управления &amp;#039;&amp;#039;&amp;#039;Kubernetes&amp;#039;&amp;#039;&amp;#039; в виде команд &amp;#039;&amp;#039;&amp;#039;curl&amp;#039;&amp;#039;&amp;#039;) отображаются как ответы в ваших &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-логах!&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Вы выяснили, что произошло, но ещё не поняли, что ещё делал под, какой процесс или активность вызывает &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039;-запросы, кто контролирует извлечение данных, как и когда под был инфицирован, и другие relevant аспекты инцидента безопасности.&lt;br /&gt;
&lt;br /&gt;
С этого момента сложность расследования будет только расти, и возможность перемещаться между различными этапами расследования становится ещё более важной. Все эти вопросы могут вызвать новую ветвь в дереве запросов, если не отдельное расследование. Наше расследование порождает множество дополнительных вопросов, требующих ответов.&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>