В этой статье мы детально разбираем большой кейс с атакой на целую ферму машин под управлением Linux. Нас ждет взлом веб-сервера, заражение майнером, эскалация root из виртуального контейнера и создание ячейки ботнета, которая рассылала спам. Уже не терпится узнать подробности? Тогда поехали!
Это заключительная часть цикла по форензике для новичков, в котором мы рассказываем о том, что такое цифровая форензика, разбираем наиболее популярные инструменты анализа, изучаем несколько кейсов на устройствах с Android и расследуем хищение денежных средств из системы ДБО на ноутбуке с Windows 10.
В мою лабораторию обратился владелец небольшой фирмы, которая занимается предоставлением хостинга, виртуальных серверов VDS/VPS, корпоративной почты и облачного хранилища.
Меня попросили помочь разобраться в аномальном поведении администрируемых заказчиком систем и выявить причины. Если же обнаружатся факты взлома — пресечь каналы несанкционированного доступа и обезопасить хостера от повторных атак.
Сами серверы находились в дата-центре, поэтому вопрос о физическом несанкционированном доступе однозначно снимался.
Вот основные жалобы, с которыми обратился заказчик:
В работе системы наблюдался и ряд других, более мелких аномалий. При этом проверки на предмет наличия вирусов и руткитов такими известными утилитами, как rkhunter, chkrootkit и ClamAV, результата не дали.
В качестве утешения все системы также прогонялись в режиме полной проверки через пару популярных антивирусов для Windows. Как ты можешь догадаться, результат тоже был нулевой. Заказчик отметил, что в редких случаях временно помогало восстановление из резервной копии, однако эффект длился недолго.
Все это давало основание предполагать, что причиной происходящего было сознательное вмешательство третьих лиц в работу машин.
Однако попытки самостоятельных поисков, такие как анализ журналов, безопасное конфигурирование iptables, перенос прикладных сервисов в chroot, использование длинных и сложных паролей, парсинг сетевого трафика с помощью Wireshark и подобных утилит, никаких следов хакерского взлома не выявили.
О том, как проводить предварительный сбор информации, читай в предыдущей статье. Теперь начинается самый трудоемкий и ответственный этап криминалистического анализа, а именно поиск артефактов в уже имеющихся данных. Мы будем использовать как ранее знакомые нам по расследованию истории с ноутбуком инструменты, так и совершенно новые.
Для анализа образа RAM мы выбрали хорошо зарекомендовавший себя пакет утилит Volatility Framework. По умолчанию он уже должен быть у тебя установлен, но если вдруг произошло невероятное и его нет, то накатить свежую версию секундное дело:
$ sudo apt-get install volatility volatility-profiles volatility-tools
Как вариант, ты всегда можешь скачать и установить пакет из исходников.
После этого нам необходимо сгенерировать volatility profile, который зависит от версии ядра ОС. Чтобы не терять время зря, можно воспользоваться приложенным к статье готовым скриптом (см. врезку со скриптами ниже), который соберет профиль в автоматическим режиме.
После того как профиль сгенерирован и выбран, запуск утилиты в общем виде выглядит так:
$ ./vol.py –profile=<имя профиля> -f <файл образ RAM> <команда>
К примеру, запуск Volatility с вызовом команды pslist для получения списка процессов будет таким:
$ ./vol.py –profile=KaliLinux-19_02-25_16_0-30x64 -f ~/cases/pfe1/ram_image.lime linux_pslist
Аналогичный результат можно получить и другой командой:
$ ./vol.py –profile=KaliLinux-19_02-25_16_0-30x64 -f ~/cases/pfe1/ram_image.lime linux_psaux
Теперь попробуем выстроить карту процессов с флагами разрешений и списком сегментов:
$ ./vol.py –profile=KaliLinux-19_02-25_16_0-30x64 -f ~/cases/pfe1/ram_image.lime linux_proc_maps
Эта команда зачастую используется при поиске следов малвари, которая может внедряться в благонадежные процессы системы или пользователя.
Извлечение и просмотр истории команд bash
:
$ ./vol.py –profile=KaliLinux-19_02-25_16_0-30x64 -f ~/cases/pfe1/ram_image.lime linux_bash
Наконец, проверка файловых операций с целью поиска следов возможной модификации руткитом выглядит так:
$ ./vol.py –profile=KaliLinux-19_02-25_16_0-30x64 -f ~/cases/pfe1/ram_image.lime linux_check_fop
Для наших самых любознательных товарищей существует один очень полезный скрипт, автоматизирующий парсинг содержимого RAM. Но я предлагаю оставить его для факультативного изучения.
Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год7490 р. Экономия 1400 рублей! |
1 месяц720 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости