Консоль, автоматизация и Linux: что реально нужно знать, чтобы расследовать атаки
На днях задал в закрытом профильном чате три вопроса специалистам по расследованию инцидентов (в англоязычном мире это называют DFIR – Digital Forensics and Incident Response):
- Какая доля инцидентов с Linux-машинами по вашему опыту?
- Нужно ли DFIR-специалисту уметь работать с консольными инструментами вроде file, strings, strace или достаточно автоматизированных средств?
- Нужно ли глубоко понимать устройство Linux?
Ответы меня удивили и обрадовали одновременно. Структурировал, собрал все воедино и теперь делюсь с вами.
Linux уже не «экзотика»
По оценкам практикующих специалистов, доля инцидентов с участием Linux-систем составляет уже 30–40% от общего числа. И тенденция растёт.
Это логично: всё больше компаний переводит инфраструктуру на Linux: серверы, контейнеры, рабочие станции. А вместе с инфраструктурой растёт и количество атак.
Если вы DFIR-специалист (или хотите им стать) – игнорировать Linux больше нельзя.
Один из участников диалога – специалист Ростелекома – поделился своим опытом:
– Раньше Linux был только в виртуальной машине, которая запускалась исключительно для криминалистического анализа. Хост – Windows.
– Сейчас Linux – основная система на десктопе, ноутбуке, домашнем сервере и вообще везде.
– Причины: импортозамещение и субъективный комфорт. Под Linux стало удобнее работать, чем под Windows.
– Начинал с Fedora, сейчас на Alt Linux – как одном из самых древних российских дистрибутивов.
«Инцидент в блокноте разберу»
На вопрос об автоматизации один из участников диалога ответил так:
«Как говорил мой хороший знакомый: "если нужно, я вам инцидент в нотпаде разберу". Утрированно, но это так.»
Автоматизированные средства – это отлично. EDR, SIEM, корпоративные платформы – они экономят часы. Но они не всегда под рукой.
А когда под рукой только сервер, доступ по SSH и пара минут – вы остаётесь один на один с консолью.
И здесь важны базовые инструменты:
- file – чтобы понять, что за файл перед вами, даже если он маскируется под картинку;
- strings – чтобы вытащить скрытые IP, домены и команды;
- strace / ltrace – чтобы увидеть, что программа делает на самом деле.
Автоматизация – это скорость. Но без понимания основ она бесполезна. Вы не сможете проверить её вывод или доработать там, где она не сработала.
Насколько глубоко нужно понимать Linux?
Ответ оказался здравым:
«На уровне администратора. Навыки из разряда дебага ядра в большинстве случаев будут излишними. Жизнь заставит – тогда и будешь вникать.»
То есть: вы должны уверенно ориентироваться в системе, читать логи, понимать процессы, работать с файловой системой и памятью.
Но начинать с полного нуля в расследовании инцидентов – тяжело. Нужен фундамент.
При чём здесь история про Алексея?
Несколько недель назад я опубликовал на VC историю о том, как сисадмин Алексей нашёл на своём сервере подозрительный процесс и разоблачил его с помощью базовых консольных инструментов.
И в комментариях один из читателей задал справедливый вопрос:
«Алексей выдохнул. Система была чиста. Но опыт он получил колоссальный. Т.е. как оно туда попало и кто запустил – совершенно не интересно?»
Я тогда ответил, что это будет в следующих курсах – пока Алексею не хватает знаний для полноценной форензики.
Другой читатель добавил важное замечание:
«Форензика – это понять вектор атаки: какой сервис был проэксплойчен, когда, через какую CVE. На практике в 70% случаев заходят через забытый SSH с паролем или устаревший PHP.
Первое действие после инцидента не "удалить файл", а last -a + grep -r "Accepted" /var/log/auth.log – посмотреть, кто и когда зашёл.
Если не закрыть входную дверь – завтра будет новая "зубная щётка".»
И это абсолютно правильное замечание. Анализ файла – это важно, но далеко не в первую очередь.
Именно поэтому первый курс – это только начало. В нём Алексей учится анализировать сам файл, чтобы стать более уверенным пользователем Linux. А дальше будет разбираться с логами, памятью, файловой системой и трафиком.
Где взять этот фундамент?
На основе этой истории сделал небольшой бесплатный курс, где можно пройти весь путь Алексея с нуля:
- определить тип файла через file;
- найти скрытые строки через strings;
- обнаружить вшитые программы через xxd и grep -P;
- извлечь их через dd;
- прочитать ELF-структуру через readelf;
- проследить за работой программы через strace и ltrace.
Он не сделает из вас эксперта по расследованию инцидентов. Но он даст ту самую базу, на которую потом накладываются автоматизация и продвинутые техники.