Содержание статьи
По сценарию злоумышленники взломали веб‑сервер и завладели полным контролем над ним. Специалисты по реагированию на инциденты получили побитовую копию системного диска скомпрометированной машины на базе операционной системы Linux. Загрузим файл образа и начнем его исследовать.
Разделим наше расследование на три этапа:
- Анализ конфигурационных файлов операционной системы Linux.
- Поиск точки входа злоумышленников в систему.
- Поиск методов постэксплуатации в системе.
Используемые утилиты:
- FTK Imager — инструмент для анализа и получения образов диска.
- R-Studio — утилита для восстановления данных с диска.
- Plaso — утилита на Python, предназначенная для генерации времени событий операционной системы. Подробнее о ней читай в статье «Таймлайн всего. Используем Plaso для сбора системных событий».
Монтируем образ диска
Прежде чем начать извлекать данные из образа диска, давай разберемся, с каким образом мы имеем дело и как его правильно анализировать. Для этого воспользуемся утилитой file
, входящей в Linux.
file Webserver.E01
Файл образа диска Webserver.
записан в формате Expert Witness Format (EWF) и содержит побитовую копию данных. Сконвертировать его в цифровую копию диска можно с помощью утилиты EnCase.
Полученный образ диска можешь примонтировать в Linux — для этого ставь утилиты lvm2
, ewf-tools
, sleuthkit
, kpartx
и воспользуйся мануалом. Но я покажу другой вариант. Примонтируем исследуемый диск в Windows и извлечем из него необходимые артефакты для расследования инцидента.
Откроем утилиту FTK Imager и примонтируем образ диска. Для этого переходим на вкладку File → Image Mounting. В поле Image File выбираем образ Webserver.
и вводим настройки, указанные ниже.
Нажимаем Mount, и исследуемый образ должен примонтироваться. Мы увидим следующую информацию.
Теперь открываем R-Studio и видим примонтированные виртуальные диски.
Нас интересует диск Virtual Storage 1.00 → F, так как его ФС — ext4
. Далее выбираем диск F и нажимаем «Сканировать». Утилита R-Studio начнет сканировать адресное пространство диска и искать в нем все файлы, в том числе удаленные. После завершения сканирования переходим в диск F в интерфейсе R-Studio и получим все каталоги и файлы файловой системы.
Изучаем конфиги ОС
Получим информацию о системе, чтобы понимать, какие сервисы установлены, с какой операционной системой работаем и какие пользователи существуют. Эта информация расположена в каталоге /
файловой системы Linux. Информацию об имени компьютера ты найдешь в файле /
(в нашем случае это VulnOSv2
). В файле /
содержится информация об операционной системе (Ubuntu
версии 14.
).
В файле /
хранится сетевой адрес, но в нашем случае для получения IP-адреса в сети организации используется протокол DHCP. В каталоге /
я обнаружил следующее установленное ПО: Drupal 7, веб‑сервер Apache 2, СУБД MySQL и PostgreSQL, а также почтовый сервис Postfix.
Проанализируем информацию о пользователях. Нас интересуют файлы /
и /
.
/
содержит информацию о пользователях системы: имя пользователя, идентификаторы пользователя и группы, комментарий, описывающий аккаунт, путь к домашнему каталогу и программа, которая каждый раз запускается при входе пользователя в систему. Нас интересуют пользователи, которые могут запускать командную оболочку /
при входе в систему. Таких пользователей пять: root
, mail
, php
, vulnosadmin
и postgres
.
В файле /
хранятся хешированные пароли пользователей. Доступ к этому файлу имеет только привилегированный аккаунт.
Формат хеша пользовательского пароля:
$id$salt$hashed
Идентификатор алгоритма id=6
соответствует алгоритму хеширования SHA-512. Попробуй сам скопировать выделенную на рисунке строку хеша пароля пользователя mail
и пробрутить его утилитой John the Ripper со словарем rockyou.txt:
john hash.txt --wordlist=rockyou.txt
Проанализируем файл /
, чтобы понимать, какие пользователи состоят в группе sudo
.
В этом файле содержится 58 групп, а в группу sudo
входят пользователи php
и mail
. Значит, они могут выполнять команды от имени суперпользователя root. Найдем правила о предоставлении доступа для группы sudo
. Они описываются в файле /
.
Это правило означает, что все пользователи группы sudo
могут выполнять любые действия в системе от имени администратора.
Определим версию и конфигурацию сайта на Drupal. Для этого переходим в каталог /
, в файле /
содержится версия CMS системы. Это Drupal 7.26 — она уязвима, и для нее есть эксплоиты, дающие удаленное выполнение кода. В качестве веб‑сервера установлен Apache 2. Файл его конфигурации расположен в /
.
Итак, на этом этапе мы с тобой выяснили, с какой операционной системой мы имеем дело, какое ПО на ней установлено и какие настройки заданы.
Ищем точку входа
Теперь нам нужно понять, как злоумышленник впервые получил доступ к скомпрометированной системе. Для этого проанализируем логи ОС. Все журналы событий Linux хранятся в каталоге /
. Анализ этих файлов и сопоставление со временем начала инцидента позволит нам восстановить полную картину событий.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»