HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В<a>предыдущей части статьи</a>мы сформировали общий чек-лист проверки, сняли образ HDD-диска и сделали дамп оперативной памяти (RAM). Теперь давайте продолжим.</p>
1 <p>В<a>предыдущей части статьи</a>мы сформировали общий чек-лист проверки, сняли образ HDD-диска и сделали дамп оперативной памяти (RAM). Теперь давайте продолжим.</p>
2 <h2>Сетевой трафик на анализ</h2>
2 <h2>Сетевой трафик на анализ</h2>
3 <p>Касательно снятия дампа сетевого трафика, в ходу несколько утилит, прежде всего, это консольная<a>tcpdump</a>, классика жанра<a>Wireshark</a>и опенсорсный фреймворк<a>XPLICO</a>, хотя последний больше используется всё-таки для последующего анализа данных, чем для их первоначального сбора.</p>
3 <p>Касательно снятия дампа сетевого трафика, в ходу несколько утилит, прежде всего, это консольная<a>tcpdump</a>, классика жанра<a>Wireshark</a>и опенсорсный фреймворк<a>XPLICO</a>, хотя последний больше используется всё-таки для последующего анализа данных, чем для их первоначального сбора.</p>
4 <p>Начнём с<strong>tcpdump</strong>, базовый вызов команды выглядит следующим образом:</p>
4 <p>Начнём с<strong>tcpdump</strong>, базовый вызов команды выглядит следующим образом:</p>
5 <p>А вот некоторые наиболее важные опции:</p>
5 <p>А вот некоторые наиболее важные опции:</p>
6 -i интерфейс // задаёт интерфейс, с которого необходимо анализировать трафик -n // отключает преобразование IP в доменные имена -e // включает вывод данных канального уровня (например, MAC-адреса) -v // вывод дополнительной информации (TTL, опции IP) -w имя_файла // задаёт имя файла, в который сохранять собранную информацию (дамп) -r имя_файла // чтение (загрузка) дампа из заданного файла -q // переводит tcpdump в "бесшумный режим", в котором пакет анализируется на транспортном уровне (протоколы TCP, UDP, ICMP), а не на сетевом (протокол IP)<p>Дампим весь входящий трафик из сети интернет на наш сервер:</p>
6 -i интерфейс // задаёт интерфейс, с которого необходимо анализировать трафик -n // отключает преобразование IP в доменные имена -e // включает вывод данных канального уровня (например, MAC-адреса) -v // вывод дополнительной информации (TTL, опции IP) -w имя_файла // задаёт имя файла, в который сохранять собранную информацию (дамп) -r имя_файла // чтение (загрузка) дампа из заданного файла -q // переводит tcpdump в "бесшумный режим", в котором пакет анализируется на транспортном уровне (протоколы TCP, UDP, ICMP), а не на сетевом (протокол IP)<p>Дампим весь входящий трафик из сети интернет на наш сервер:</p>
7 tcpdump -s 0 -i eth0 -n -nn -ttt dst host &lt;ip-адрес нашего хоста&gt; -w forensic_cap.pcap<p>Пример создания дампа сетевого трафика по протоколам ftp или ssh на интерфейсе eth0:</p>
7 tcpdump -s 0 -i eth0 -n -nn -ttt dst host &lt;ip-адрес нашего хоста&gt; -w forensic_cap.pcap<p>Пример создания дампа сетевого трафика по протоколам ftp или ssh на интерфейсе eth0:</p>
8 tcpdump -s 0 port ftp or ssh -i eth0 -w forensic_cap.pcap<p>Дампим вообще всё, что есть в сети на интерфейсе eth0:</p>
8 tcpdump -s 0 port ftp or ssh -i eth0 -w forensic_cap.pcap<p>Дампим вообще всё, что есть в сети на интерфейсе eth0:</p>
9 tcpdump -w forensic_cap -i eth0<p>Ещё одна очень весьма годная утилита для наших целей - это<a>TCPflow</a>. По сути, более продвинутый вариант tcpdump, поддерживающий ещё большее количество параметров фильтра и возможность восстанавливать "сломанные" пакеты.</p>
9 tcpdump -w forensic_cap -i eth0<p>Ещё одна очень весьма годная утилита для наших целей - это<a>TCPflow</a>. По сути, более продвинутый вариант tcpdump, поддерживающий ещё большее количество параметров фильтра и возможность восстанавливать "сломанные" пакеты.</p>
10 <p>Если tcpflow по умолчанию нет в системе, то для начала устанавливаем её:</p>
10 <p>Если tcpflow по умолчанию нет в системе, то для начала устанавливаем её:</p>
11 apt install tcpflow // для Debian-based дистрибутивов yum install tcpflow // для RedHat-based дистрибутивов<p>Далее базовый синтаксис команды выглядит так:</p>
11 apt install tcpflow // для Debian-based дистрибутивов yum install tcpflow // для RedHat-based дистрибутивов<p>Далее базовый синтаксис команды выглядит так:</p>
12 tcpflow [опции] [выражение] [хост]<p>А вот описание опций:</p>
12 tcpflow [опции] [выражение] [хост]<p>А вот описание опций:</p>
13 -c: только консольная печать (не создавать файлы) -d: уровень отладки; по умолчанию 1 -e: выводить каждый поток чередующимися цветами (синий = клиент-сервер; красный = сервер-клиент; зеленый = неизвестно) -i: сетевой интерфейс для прослушивания -r: чтение пакетов из выходного файла tcpdump -s: удалить непечатаемые символы (изменить на ".")<p>Пример сбора данных из внешней сети до нашего целевого сервера:</p>
13 -c: только консольная печать (не создавать файлы) -d: уровень отладки; по умолчанию 1 -e: выводить каждый поток чередующимися цветами (синий = клиент-сервер; красный = сервер-клиент; зеленый = неизвестно) -i: сетевой интерфейс для прослушивания -r: чтение пакетов из выходного файла tcpdump -s: удалить непечатаемые символы (изменить на ".")<p>Пример сбора данных из внешней сети до нашего целевого сервера:</p>
14 tcpflow -ce host &lt;ip-адрес нашего хоста&gt;<p>Собираем весь HTTP-трафик в нашей сети:</p>
14 tcpflow -ce host &lt;ip-адрес нашего хоста&gt;<p>Собираем весь HTTP-трафик в нашей сети:</p>
15 <p>Дамп данных сетевого потока в локальную папку:</p>
15 <p>Дамп данных сетевого потока в локальную папку:</p>
16 mkdir tcpflowdata cd tcpflowdata tcpflow host &lt;ip-адрес целевой машины&gt;<p>Теперь в директории /tcpflowdata будут складываться файлы с содержанием сетевых подключений. Всё, что потом нам останется сделать, - подкинуть их для анализа в WireShark, XPLICO или какой-либо другой, к примеру, облачный<a>парсер</a>.</p>
16 mkdir tcpflowdata cd tcpflowdata tcpflow host &lt;ip-адрес целевой машины&gt;<p>Теперь в директории /tcpflowdata будут складываться файлы с содержанием сетевых подключений. Всё, что потом нам останется сделать, - подкинуть их для анализа в WireShark, XPLICO или какой-либо другой, к примеру, облачный<a>парсер</a>.</p>
17 <h2>Монтируем образы в исследовательскую систему</h2>
17 <h2>Монтируем образы в исследовательскую систему</h2>
18 <p>Итак, мы создали образы содержимого жёстких дисков и оперативной памяти. Теперь нам нужно их смонтировать на нашей исследовательской машине для начала изучения и поиска артефактов. С образом HDD всё просто, полученный в результате работы<strong>dd</strong>или<strong>dcfldd</strong>выходной файл можно легко<a>подмонтировать</a>как новое устройство.</p>
18 <p>Итак, мы создали образы содержимого жёстких дисков и оперативной памяти. Теперь нам нужно их смонтировать на нашей исследовательской машине для начала изучения и поиска артефактов. С образом HDD всё просто, полученный в результате работы<strong>dd</strong>или<strong>dcfldd</strong>выходной файл можно легко<a>подмонтировать</a>как новое устройство.</p>
19 <p>Общий синтаксис команды<a>mount</a>будет выглядеть следующий образом:</p>
19 <p>Общий синтаксис команды<a>mount</a>будет выглядеть следующий образом:</p>
20 mount -o,ro,noatime,loop,offset= &lt;смещение по началу партации в байтах&gt; &lt;имя файла образа&gt; &lt;точка монтирования&gt;<p>К примеру, чтобы смонтировать ранее снятый дамп HDD, нужно выполнить команду:</p>
20 mount -o,ro,noatime,loop,offset= &lt;смещение по началу партации в байтах&gt; &lt;имя файла образа&gt; &lt;точка монтирования&gt;<p>К примеру, чтобы смонтировать ранее снятый дамп HDD, нужно выполнить команду:</p>
21 mount -o,ro,loop forensic_disk_image.dd /mnt/temp/<p>Образ RAM будем открывать с помощью<a>Volatility Framework</a>.</p>
21 mount -o,ro,loop forensic_disk_image.dd /mnt/temp/<p>Образ RAM будем открывать с помощью<a>Volatility Framework</a>.</p>
22 <p>Полученный<a>pcap</a>-файл, содержащий информацию о сетевых подключениях, как уже упоминал выше, можно вручную открывать в<strong>Wireshark</strong>или<strong>XPLICO</strong>. Но я предпочитаю пользоваться сервисами с полуавтоматическим парсингом, как то<a>PacketTotal</a>,<a>Pcap Analyzer</a>или платный<a>CloudShark</a>.</p>
22 <p>Полученный<a>pcap</a>-файл, содержащий информацию о сетевых подключениях, как уже упоминал выше, можно вручную открывать в<strong>Wireshark</strong>или<strong>XPLICO</strong>. Но я предпочитаю пользоваться сервисами с полуавтоматическим парсингом, как то<a>PacketTotal</a>,<a>Pcap Analyzer</a>или платный<a>CloudShark</a>.</p>
23 <h2>Анализ образа жёсткого диска</h2>
23 <h2>Анализ образа жёсткого диска</h2>
24 <p>Поиск файлов с установленными битами SUID and SGID:</p>
24 <p>Поиск файлов с установленными битами SUID and SGID:</p>
25 find / -perm -4000 -type f -xdev -print &gt; suid.txt find / -perm -2000 -type f -xdev -print &gt; sgid.txt<p>Список последних модифицированных/открытых/созданных файлов в системе:</p>
25 find / -perm -4000 -type f -xdev -print &gt; suid.txt find / -perm -2000 -type f -xdev -print &gt; sgid.txt<p>Список последних модифицированных/открытых/созданных файлов в системе:</p>
26 find / -mtime 5 -xdev &gt; modified.txt find / -atime 5 -xdev &gt; accessed.txt find / -ctime 5 -xdev &gt; created.txt<p><strong>Вывод списка модифицированных файлов после первичной инсталляции системы, изменённые менеджером пакетов</strong>:<em>1.Команда для RPM-based дистрибутивов:</em></p>
26 find / -mtime 5 -xdev &gt; modified.txt find / -atime 5 -xdev &gt; accessed.txt find / -ctime 5 -xdev &gt; created.txt<p><strong>Вывод списка модифицированных файлов после первичной инсталляции системы, изменённые менеджером пакетов</strong>:<em>1.Команда для RPM-based дистрибутивов:</em></p>
27 <p><em>2.Команда для Debian-based дистров с помощью debsums:</em></p>
27 <p><em>2.Команда для Debian-based дистров с помощью debsums:</em></p>
28 <p><strong>Поиск и просмотр скрытых файлов и директорий</strong>:</p>
28 <p><strong>Поиск и просмотр скрытых файлов и директорий</strong>:</p>
29 find . -type f -exec ls -i {} \; | sort -n<p><strong>Ручной просмотр заданий Cron Jobs</strong>:</p>
29 find . -type f -exec ls -i {} \; | sort -n<p><strong>Ручной просмотр заданий Cron Jobs</strong>:</p>
30 less /etc/cron.hourly less /etc/cron.daily less /etc/cron.weekly less /etc/cron.monthly<p>На этом всё! Всем удачи и хорошего настроения!</p>
30 less /etc/cron.hourly less /etc/cron.daily less /etc/cron.weekly less /etc/cron.monthly<p>На этом всё! Всем удачи и хорошего настроения!</p>
31  
31