Анализ ВПО и форензика
Статический и динамический анализ, бесфайловое ВПО, артефакты закрепления в Windows/Linux, память против диска, детонация в песочнице, анти-анализ, process injection и извлечение IOC.
11 вопросов
JuniorТеорияОчень частоЧто показывает статический анализ ВПО, что показывает динамический, и что каждый из них упускает?
Что показывает статический анализ ВПО, что показывает динамический, и что каждый из них упускает?
Статический анализ читает образец, не запуская его — строки, импорты, заголовки — поэтому безопасен, но упаковка скрывает нагрузку. Динамический анализ подрывает его в изолированной лаборатории и показывает реальное поведение, но лишь на выполнившихся ветках.
Типичные ошибки
- ✗Считать чистый статический проход окончательным вердиктом по упакованному образцу
- ✗Подрывать образец вне изолированной лаборатории, раз он выглядел безобидным
- ✗Считать, что один подрыв прошёл все ветки кода образца
Уточняющие вопросы
- →Какие сигналы первого статического прохода намекают, что образец упакован?
- →Почему лаборатория подрыва должна быть изолирована от продовых сетей и учётных данных?
MiddleТеорияОчень частоПочему память снимают раньше диска и какие улики существуют только в образе памяти?
Почему память снимают раньше диска и какие улики существуют только в образе памяти?
Порядок волатильности: память исчезает при выключении, диск нет. Образ памяти хранит то, что до диска не дошло: внедрённый код, расшифрованные нагрузки, живые соединения, командные строки и модули. Сначала память, потом образ диска.
Типичные ошибки
- ✗Перезагружать или выключать подозрительный хост до снятия памяти
- ✗Считать, что файл подкачки заменяет полный образ памяти
- ✗Читать порядок волатильности как юридическое правило, а не как правило потери улик
Уточняющие вопросы
- →Чем рискованно снимать память изнутри самого скомпрометированного хоста?
- →Какие бесфайловые артефакты вы будете искать в образе памяти первыми?
MiddleТеорияЧастоКак разобрать хост Linux с работающим процессом, у которого нет исполняемого файла на диске?
Как разобрать хост Linux с работающим процессом, у которого нет исполняемого файла на диске?
Пройдите по /proc. Сравните ссылку exe каждого процесса с файловой системой: цель deleted или memfd значит, что бинарника нет или он не попадал на диск. Прочитайте карты памяти на анонимные исполняемые области и cmdline, затем снимите память.
Типичные ошибки
- ✗Считать, что у процесса в Linux обязан быть файл на диске
- ✗Перезагружать хост до того, как снята его память
- ✗Принимать отсутствующий бинарник за сбой листинга, а не за сигнал
Уточняющие вопросы
- →Что говорит о загрузчике цель deleted у ссылки exe?
- →Какой волатильный артефакт вы соберёте до изоляции хоста?
MiddleТеорияЧастоКакие артефакты Windows вы ищете при охоте за закреплением и какие из них живут как индикаторы?
Какие артефакты Windows вы ищете при охоте за закреплением и какие из них живут как индикаторы?
Ключи Run, папки автозагрузки, запланированные задачи, службы и подписки на события. Хеш и путь записи меняются дёшево, поэтому переживает проверку сам шаблон: задача со скрытым закодированным PowerShell или служба из каталога пользователя.
Типичные ошибки
- ✗Строить поиск по всему флоту только на хеше образца
- ✗Проверять лишь реестр, пропуская задачи, службы и подписки на события
- ✗Считать, что одна удалённая запись означает снятое закрепление
Уточняющие вопросы
- →Как отличить легитимную запланированную задачу от враждебной в масштабе флота?
- →Какая телеметрия нужна, чтобы поведенческая охота за закреплением стала возможна?
MiddleТеорияЧастоЧто такое process injection и какие наблюдения на хосте выдают его при триаже?
Что такое process injection и какие наблюдения на хосте выдают его при триаже?
Код, выполняющийся внутри чужого процесса, чтобы унаследовать его личность и доверие. Признаки при триаже структурные: память одновременно записываемая и исполняемая, отображённый образ не совпадает с файлом на диске, а родитель бессмыслен.
Типичные ошибки
- ✗Доверять процессу по имени и подписи после того, как его память изменили
- ✗Ждать новый файл на диске в каждом случае инъекции
- ✗Игнорировать цепочку родитель-потомок, не похожую на обычный софт
Уточняющие вопросы
- →Какой легитимный софт тоже пишет в память чужого процесса?
- →Что даёт образ памяти сверх того, что показывает живой список процессов?
SeniorТеорияЧастоКак извлечь индикаторы из подтверждённого образца и перейти к охоте по всему флоту?
Как извлечь индикаторы из подтверждённого образца и перейти к охоте по всему флоту?
Извлекайте в изолированной лаборатории и сначала распакуйте, чтобы индикаторы шли из настоящей нагрузки, а не из заглушки. Хрупкие значения — хеши, домены, адреса — фиксируйте, но охоту ведите по устойчивому поведению: хеш меняется дешевле техники.
Типичные ошибки
- ✗Извлекать индикаторы из упакованной заглушки вместо распакованной нагрузки
- ✗Загружать артефакт заказчика в публичный сервис сканирования
- ✗Оценивать масштаб всего вторжения только по хешам файлов
Уточняющие вопросы
- →Какая телеметрия нужна, чтобы поведенческая охота прошла по всему флоту?
- →Когда вы прекращаете анализ своими силами и передаёте его профильной команде?
JuniorДебаггингИногдаНиже выгрузка автозапуска с подозрительного хоста Windows — определите механизмы закрепления.
Ниже выгрузка автозапуска с подозрительного хоста Windows — определите механизмы закрепления.
Враждебны две записи. Значение Run с именем OneDriveUpdate запускает неподписанный svchost.exe из профиля пользователя — имя системного бинарника в записываемом каталоге. Задача SystemCheck каждые 30 минут запускает скрытый закодированный PowerShell.
Открыть задачу →Типичные ошибки
- ✗Принимать имя системного бинарника за доказательство, что это системный файл
- ✗Удалять записи закрепления до того, как сохранены улики
- ✗Считать снятие закрепления концом инцидента
Уточняющие вопросы
- →Какой волатильный артефакт вы снимете до того, как тронете эти записи?
- →Как проверить, есть ли такая же запланированная задача на других хостах?
MiddleТеорияИногдаПочему антивирус, сканирующий файлы, пропускает бесфайловые атаки через PowerShell или Windows Management Instrumentation?
Почему антивирус, сканирующий файлы, пропускает бесфайловые атаки через PowerShell или Windows Management Instrumentation?
Потому что сканировать нечего — вредоносного файла нет. Нагрузка живёт в памяти или в значении реестра и выполняется через подписанные системные бинарники, поэтому уликой становится поведение: командные строки, цепочки процессов и логи скриптов.
Типичные ошибки
- ✗Считать чистый вердикт антивируса доказательством отсутствия нагрузки в памяти
- ✗Доверять подписанному системному бинарнику, раз подпись проходит проверку
- ✗Искать только файлы, когда настоящий артефакт — командная строка
Уточняющие вопросы
- →Какие источники логов дают полную командную строку дочернего процесса
PowerShell? - →Где интерфейс управления
WMIможет держать закрепление без файла на диске?
MiddleТеорияИногдаАлерт системы endpoint detection and response (EDR) отмечает инъекцию — как отличить её от легитимного софта?
Алерт системы endpoint detection and response (EDR) отмечает инъекцию — как отличить её от легитимного софта?
По контексту, а не по самому вызову. Спросите, что за исходный процесс, подписан ли он и делает ли так обычно, и что было дальше: сетевое соединение или доступ к учётным данным. Аномалия это обработчик документов, пишущий в системный процесс.
Типичные ошибки
- ✗Считать имя API в алерте самостоятельным вердиктом
- ✗Понижать алерт только потому, что цель — системный процесс
- ✗Судить об алерте, не посмотрев, что произошло дальше
Уточняющие вопросы
- →Какая последующая активность поднимет алерт об инъекции до инцидента?
- →Как составить базовую линию легитимных инъекторов в вашей инфраструктуре?
MiddleТеорияИногдаКакие признаки говорят, что образец упакован, и что это значит для порядка вашего анализа?
Какие признаки говорят, что образец упакован, и что это значит для порядка вашего анализа?
Высокая равномерная энтропия секции, почти полное отсутствие читаемых строк и таблица импортов всего с несколькими функциями загрузчика. Упаковка значит, что статический проход читает заглушку, поэтому распакуйте образец или снимите код из памяти.
Типичные ошибки
- ✗Считать пустой вывод строк доказательством безвредности файла
- ✗Принимать высокую энтропию за доказательство вредоносности, а не сжатия
- ✗Продолжать статический анализ заглушки, будто это и есть нагрузка
Уточняющие вопросы
- →Какой легитимный софт тоже поставляется с упакованными или сжатыми секциями?
- →Чем нечёткое хеширование поможет сгруппировать упакованные образцы с общей нагрузкой?
MiddleТеорияИногдаОтчёт песочницы не показал вредоносной активности — почему это не доказывает чистоту образца?
Отчёт песочницы не показал вредоносной активности — почему это не доказывает чистоту образца?
Потому что образец может проверить, где он запущен, и молчать при неверном ответе: слишком короткое окно, отсутствующий домен, нет активности пользователя, нет ожидаемого файла. Отчёт говорит лишь, что там ничего не сработало, поэтому меняйте среду.
Типичные ошибки
- ✗Закрывать заявку по одному чистому вердикту песочницы
- ✗Считать, что более длинный запуск в той же среде закрывает вопрос
- ✗Забывать, что статический анализ остаётся применим после неубедительного подрыва
Уточняющие вопросы
- →Какие различия среды чаще всего заставляют образец молчать в песочнице?
- →Когда вы передадите неубедительный образец специалисту по обратной разработке?