Основы форензики
Доказательство стоит ровно столько, сколько стоит обращение с ним. Снимай летучие данные, пока они не испарились, хешируй и логируй каждый артефакт ради chain of custody, извлекай IOC и собирай таймлайн, превращающий разрозненные логи в защитимую историю.
Пейджер в 3 ночи: платёжный под устанавливает исходящие соединения к IP, который никто не узнаёт. Твой первый рефлекс — и он неверный — зайти по SSH и начать grep-ать логи, чтобы понять, что происходит. Ты только что записал на файловую систему, обновил время доступа у каждого файла, который cat-нул, и породил процессы, перезаписавшие страницы RAM, где жил уже исчезнувший reverse shell атакующего. Вторжение всё ещё здесь; а вот доказательства того, как оно проникло, только что стали тише. Форензика — это дисциплина ответа на вопрос «что произошло, как и можем ли мы это доказать», и почти каждая фатальная ошибка совершается в первые десять минут добросовестным инженером, который трогает не то первым.
К концу урока ты будешь знать, в каком порядке собирать доказательства, как chain of custody сохраняет их достоверность, что такое IOC и как таймлайн превращает кучу артефактов в историю, которую можно защитить.
Порядок летучести: сначала собирай самое хрупкое
Главное правило сбора доказательств — порядок летучести (order of volatility): захватывай первыми те данные, что исчезают быстрее всего. RAM пропадает в тот же миг, как машина перезагружается или под переезжает. Состояние сетевых соединений, запущенные процессы и открытые дескрипторы файлов исчезают за секунды-минуты. Диск переживает перезагрузку; вынесенный наружу лог или бэкап переживает диск. Поэтому собираешь вверх по лестнице летучести — память раньше диска, живое состояние раньше сохранённого, — потому что каждая минута, потраченная на долговечное, это минута деградации хрупкого.
Именно поэтому «просто зайти по SSH и осмотреться» так разрушительно. Чтение файлов обновляет временные метки доступа. Запуск инструментов выделяет память, перезаписывая ту неаллоцированную RAM, где ещё живут удалённые-но-не-освобождённые артефакты (in-memory полезная нагрузка атакующего, освобождённый буфер с учёткой). Каждая команда — это эффект наблюдателя: сам акт осмотра меняет то, что ты сможешь потом доказать. Зрелый ход — обратный рефлекс: снять до того, как анализировать. Снимок летучего состояния куда-то ещё, и только потом ковыряйся в копии.
В облаке и Kubernetes правило держится, меняется лишь механика. Ты не снимаешь образ физического диска; ты делаешь snapshot EBS-тома, дампишь память контейнера через ноду до того, как под убьют, и — что критично — выставляешь скомпрометированному инстансу политику авто-масштабирования и рестарта так, чтобы он не терминировался, потому что переехавший под — это стёртое место преступления. Cordon ноду, snapshot, затем расследуй по снимку.
Chain of custody: доказательство, которое можно защитить
Артефакт достоверен ровно настолько, насколько достоверна запись о том, кто его трогал и когда. Chain of custody (цепочка владения) — это непрерывный задокументированный след, доказывающий, что артефакт не менялся между сбором и выводом: кто собрал, когда, каким инструментом, где хранил и через чьи руки прошёл. Технический якорь — криптографический хеш: ты считаешь SHA-256 дампа памяти или образа диска в момент сбора, записываешь этот хеш, и любой может позже пере-хешировать копию и подтвердить совпадение бит-в-бит. Сломанный хеш означает, что доказательство изменили; совпадающий — что оно нетронуто.
Дисциплина, защищающая хеш, — работай по копиям, никогда по оригиналам. Снял образ диска, захешировал образ, затем весь анализ — против смонтированной только-для-чтения копии. Оригинал (снимок, опечатанный образ) больше не трогаешь. Это не бюрократический театр: если инцидент станет юридическим делом, регуляторным раскрытием или хотя бы внутренним спором о виновности, доказательство со сломанной или отсутствующей цепочкой владения бесполезно. Ты будешь знать, что произошло, и не сможешь это доказать, а в контексте уведомления о пробое или страховки это то же самое, что не знать.
| Артефакт | Летучесть | Что он говорит | Замечание по сбору |
|---|---|---|---|
| RAM / память процесса | Секунды — гибнет при reboot | In-memory нагрузки, расшифрованные ключи, живые shell’ы | Дампь первым; не перезагружай машину |
| Сетевое + процессное состояние | Секунды-минуты | C2-соединения, слушающие порты, родительские PID | Захвати до убийства пода |
| Образ диска | Переживает reboot | Сброшенные файлы, персистентность, удалённые артефакты | Snapshot, хеш, монтируй read-only |
| Логи вне хоста | Долговечно (если отгружены) | События auth, вызовы API, хребет таймлайна | Атакующий не правит то, что уже ушло с хоста |
IOC: отпечатки, которые ты ищешь и которыми делишься
IOC (Indicator of Compromise, индикатор компрометации) — это наблюдаемый артефакт, сигнализирующий о вторжении: вредоносный IP или домен, хеш файла, подозрительный ключ реестра или cron-запись, строка user-agent, имя мьютекса. У IOC две работы. Первая — определение охвата (scoping): получив один (скажем, SHA-256 сброшенного бинарника), ты прогоняешь по нему все хосты, чтобы найти полный радиус поражения, а не только машину, которая тебя дёрнула. Вторая — обмен: IOC — это лингва франка threat intel, поэтому извлечённый IP можно скормить правилам детектирования и передать коллегам.
Зрелая оговорка: IOC лежат на дне пирамиды боли (Pyramid of Pain). Хеши и IP атакующему сменить тривиально — перекомпиляция даёт новый хеш, новый VPS даёт новый IP. Их дёшево собирать и дёшево обходить. Долговечный сигнал — выше: TTP — тактики, техники и процедуры противника, ровно то, что каталогизирует MITRE ATT&CK. Сопоставление находок с техникой ATT&CK (скажем, T1059, command-and-scripting interpreter) переживает смену инфраструктуры атакующим, потому что менять как он действует по-настоящему дорого. Так что извлекай IOC, чтобы определить охват этого инцидента, но тянись к поведению, чтобы построить детект, ловящий следующий.
▸Почему это работает
Почему хешировать образ диска до того, как что-либо с ним делать, а не просто доверять своей копии? Потому что ценность доказательства — в способности доказать его неизменность, а доказать это можно только против числа, записанного в момент сбора. Если сначала анализируешь, а хешируешь потом, твой хеш заверяет возможно-уже-изменённый файл — он ничего не доказывает об исходном состоянии. Хеш — это печать, накладываемая в момент сбора; наложишь поздно — печать бессмысленна. Та же логика, что подписывать договор до правок, а не после.
Таймлайн: превращение артефактов в историю
Куча артефактов — не ответ. Итоговый продукт форензики — таймлайн: единая, упорядоченная по времени последовательность, сплавляющая события из всех источников — auth-логи, события создания процессов, времена изменения файлов (MAC-времена: modified, accessed, changed/created), сетевые соединения, логи деплоя — в один нарратив того, что делал атакующий, по порядку. Здесь зарабатывают своё инструменты супертаймлайнинга: они нормализуют временные метки из десятков типов артефактов на одну ось, чтобы прочесть вторжение сверху вниз.
Две сложные проблемы — время и пробелы. Время: корреляция между источниками требует общей точки отсчёта — нормализуй всё к UTC и следи за расхождением часов между хостами и за атакующим, который подделал метки времени, чтобы спрятаться (timestomping; файл, чьё время изменения предшествует времени правки inode, — это улика). Пробелы: отсутствие лога само по себе доказательство — удалённый файл истории shell или окно, когда аудит-логирование было выключено, говорит, где работал атакующий и что он пытался замести следы. Хороший таймлайн не просто говорит, что произошло; выстроенный против MITRE ATT&CK, он показывает прогрессию — первичный доступ, исполнение, персистентность, латеральное движение, — и эта прогрессия говорит, охватил ли ты всё вторжение или увидел только его хвост.
Боевой под скомпрометирован и активно beacon-ит наружу. Нужно расследовать. Что ты делаешь первым?
Почему RAM собирают раньше образа диска при захвате доказательств?
Ты извлёк IP и хеш файла инструмента атакующего. Почему строить детект только на них — не самый сильный ход?
Упорядочь последовательность сбора доказательств правильно, от первого к последнему:
- 1 Дамп памяти процесса / системы (теряется при reboot)
- 2 Захват живых сетевых соединений и запущенных процессов
- 3 Snapshot и образ диска (переживает reboot)
- 4 Сбор долговечных логов вне хоста, уже отгруженных прочь
- 5 Хеширование каждого артефакта и запись chain of custody
- 01Объясни порядок летучести и почему «просто зайти по SSH и осмотреться» портит доказательства.
- 02Что такое chain of custody, как хеширование её обеспечивает и почему она важна, когда инцидент уже закрыт?
Форензика отвечает на вопрос «что произошло, как и можем ли мы это доказать», и большинство фатальных ошибок случается в первые десять минут, когда добросовестный инженер трогает не то. Дисциплина — снять-до-анализа, упорядоченно по летучести: дампь память, пока её не потеряла перезагрузка или переезд, захвати живое сетевое и процессное состояние, сделай снимок диска и вытащи долговечные логи вне хоста, которые атакующий не может править. Каждый артефакт хешируется SHA-256 при сборе и анализируется только как read-only копия, так что chain of custody — задокументированный след того, кто что трогал и когда — остаётся непрерывной, а доказательство защитимым, если инцидент станет юридическим или регуляторным. IOC (IP, хеши, домены) позволяют прогнать все хосты, чтобы определить радиус поражения и питать детект, но они лежат на дне пирамиды боли и тривиально ротируются, поэтому сопоставляй находки и с долговечными TTP в MITRE ATT&CK. Наконец, сплавь всё в нормализованный к UTC таймлайн: коррелируй между источниками, следи за расхождением часов и timestomping, считай отсутствующие логи доказательством того, где работал атакующий, и читай прогрессию против ATT&CK, чтобы подтвердить, что охватил всё вторжение, а не только его хвост. В следующий раз, когда тебя дёрнут, твой первый ход — не смотреть, а снимать.
Практика
Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.
Что-то непонятно?
Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.