У
Удалённый пользователь
Guest
Автор темы
В этой статье я покажу, как извлекать основные артефакты из образов оперативной памяти Windows. Мы восстановим процесс атаки, чтобы расследовать инцидент. В этом нам поможет лабораторная работа TeamSpy с ресурса CyberDefenders.
По сценарию сотрудник компании сообщил, что получил подозрительное электронное письмо с файлом документа и после этого компьютер начал вести себя странно. Группа реагирования на инциденты сделала несколько дампов памяти с подозрительных машин. Наша задача — расследовать инцидент и разобраться, что произошло.
По результатам решения кейса необходимо ответить на ряд вопросов, однако я покажу лишь сам процесс решения. Повторив прохождение, ты сможешь сам дать ответы для закрепления материала.
Загрузим архив с артефактами и приступим к их исследованию.
Версия ОС — Win7SP1x64. Мы будем ее указывать при поиске других артефактов в качестве профиля в Volatility.
Получим имя компьютера, для этого проверим следующий ключ реестра:
Код:
Выясним сетевой адрес. Для этого проверим ключ, в котором содержатся идентификаторы сетевых адаптеров. Здесь же можно найти и информацию о сети.
IP-адрес исследуемой машины — 10.1.1.122.
Проанализируем запущенные процессы в системе, их список выгрузим в файл pstree.txt.
Мы обнаружили процесс OUTLOOK.EXE, идентификатор процесса — 2692. По сценарию нам известно, что инцидент произошел после того, как пользователь запустил вложение в письме. Восстановим все сообщения пользователя и найдем вредоносное. Для этого ищем в процессе все объекты FILE.
В результате анализа объектов FILE обнаружено имя почтового ящика пользователя:
Попробуем выгрузить этот контейнер из памяти процесса. Найдем физический адрес файла, используя плагин filescan.
Выгружаем найденный файл, даем ему расширение .ost и загружаем в утилиту OST Extractor.
Не забываем про аргумент -u, который позволяет выгрузить большее количество данных.
Получаем файл file.None.0xfffffa80042dcf10.dat. Тоже меняем ему разрешение на .ost и загружаем в OST Extractor.
После конвертирования OST в указанной папке появится сообщение пользователя в формате EML. Переходим в папку сообщений и смотрим его.
Письмо отправлено с почтового ящика [email protected]. В аттаче — документ bank_statement_088452.doc. IP-адрес почтового сервера — 31.6.35.122. Письмо поступило 4 октября 2016 года в 12:02:04 (UTC).
Чтобы извлечь вложение, можно воспользоваться блокнотом, для этого декодируем аттач из Base64 и сохраняем файл с расширением .doc. Либо можешь открыть EML с помощью почтового клиента (того же Outlook).
Исследовать вредоносные файлы необходимо в изолированной среде. Итак, берем файл bank_statement_088452.doc и начинаем изучать. Его MD5:
c2dbf24a0dc7276a71dd0824647535c9
Проверим наличие макроса в полученном вложении с помощью утилиты olevba.
olevba bank_statement_088452.doc
Макрос сильно обфусцирован, и по‑быстрому его проанализировать не получится, поэтому откроем документ в Microsoft Word и начнем отлаживать скрипт на Visual Basic.
Перейдем в «Вид → Макросы» и нажмем кнопку «Отладить». Находим следующий участок кода.
В функции xvkBjM выполняется запуск содержимого в переменной UsoJar. Найдем место в коде, где формируется эта переменная, поставим точку останова и запустим скрипт.
После выполнения этого участка кода в переменной UsoJar появится команда на PowerShell, которая декодирует данные и исполняет их.
Преобразуем данные из Base64 и посмотрим содержимое.
Как видим, скрипт на PowerShell находит и запускает исполняемые файлы вот из этой папки:
Перед тем как запускать вредоносный документ, начнем записывать сетевой трафик, для этого запустим в виртуальной машине Wireshark.
Как видим, до запуска скрипта на PowerShell происходит загрузка полезной нагрузки с IP-адреса 54.174.131.235.
Вредоносный скрипт на VBA загружает полезную нагрузку со следующего адреса:
Нагрузка будет сохранена в файл
Затем этот файл запускается.
Процесс SkypeC2AutoUpdate.exe — это средство удаленного управления TeamViewer.
Найдем системный идентификатор этого процесса в файле pstree. Это 1364.
Теперь изучим сетевую активность процесса. Для этого извлечем из образа все взаимодействия с сетью и сохраним в файлик netscan.txt.
Процесс с идентификатором 1364 взаимодействует с управляющим сервером 54.174.131.235.
Получим дамп адресного пространства процесса.
Выгруженный файл называется 1364.dmp.
Теперь при помощи регулярного выражения найдем все взаимодействия с управляющим сервером 54.174.131.235.
Вредоносный файл обращается вот на этот адрес:
Установив соединение, он отправляет собранную информацию. Версия программного обеспечения TeamViewer (параметр tvrv=) — 0.2.2.2.
Попробуем вытащить данные из полей TeamViewer, нам интересен его пароль и идентификатор. Для этого воспользуемся плагином editbox.
Идентификатор системы — 528 812 561.
Пароль для доступа к хосту — P59fS93m.
Попробуем вытащить из процесса интересную информацию, связанную с работой TeamViewer.
В памяти процесса обнаружен сетевой адрес 31.6.13.155, с которого произошел удаленный вход в систему.
Использовав плагин procdump, получим этот процесс, чтобы проверить через VirusTotal.
Получим его хеш и найдем его описание на VirusTotal. MD5-сумма — 6ecd2ed83b0bc2eea7c7a75d06a610b6.
Также проанализируем все письма в папке после работы утилиты ost-extractor.exe.
Давай теперь зафиксируем картину произошедшего.
04.10.2016 в 12:02 (UTC) на адрес [email protected] с адреса [email protected] поступило письмо, в котором сообщается номер цифрового кошелька, куда необходимо перевести выкуп. Адрес кошелька Bitcoin:
25UMDkGKBe484WSj5Qd8DhK6xkMUzQFydY
04.10.2016 в 12:02:04 (UTC) на адрес [email protected] от [email protected] пришло фишинговое сообщение, содержащее вредоносный документ bank_statement_088452.doc. Пользователь открыл этот документ, что и привело к компрометации компьютера. С адреса http://54.174.131.235/files/tv_x64.exe на его машину загружается исполняемый файл TeamViewer, содержащий идентификатор и пароль для доступа к скомпрометированному хосту.
В 12:02 04.10.2016 на адрес [email protected] от [email protected] пришло сообщение с адресом кошелька Bitcoin. Если компания не переведет на него определенную сумму, злоумышленники начнут атаковать инфраструктуру организации.
Имя компьютера — WIN-KMUKM7JPN9D, сетевой адрес — 10.1.1.141, профиль операционной системы — Win7SP1x64.
Далее получим список процессов в виде дерева, а также сетевую активность. Результат сохраним в файл.
Находим почтовый процесс OUTLOOK.EXE, идентификатор 2496.
Получим дамп адресного пространства этого процесса.
Получим список объектов FILE в адресном пространстве процесса.
Получаем файл handles_file_2496, а в нем название другого файла:
[email protected]
Это почтовый контейнер. Найдем его физический адрес и выгрузим его из образа. Для этого получим список файлов:
Восстановим почтовый контейнер.
Теперь конвертируем файл с помощью OST Extractor и находим сообщение с вложением.
04.10.2016 в 13:35:13 (UTC) от [email protected] поступило письмо, содержащее вредоносное вложение. IP-адрес почтового сервера отправителя — 31.6.35.122. Выгрузим вложения с помощью Outlook.
Получаем файл RTF:
Но эта версия файла битая. Поэтому попробуем восстановить его не из сообщения, а из памяти. Находим его по названию в выгруженном списке файлов.
Восстановим его.
Открываем восстановленный файл в Hex-редакторе и удаляем в конце незначащие нули. MD5-сумма этого файла:
Это реализация эксплоита в документе RTF (CVE-2010-3333). Подробнее о нем можешь прочесть в исследовании Sophos (PDF).
Начнем анализ вредоносного документа. Получим список потоков:
Согласно исследованию Sophos, полезная нагрузка находится за фрагментом \sv.
Полезная нагрузка начинается после 0xacc8. Выгрузим нагрузку и сохраним в файл shell.
Далее с помощью утилиты scdbg найдем точку входа шелл‑кода.
Полезная нагрузка загружается с ресурса по следующему адресу:
Проанализируем процессы.
Мы обнаружили процесс svchost.exe с идентификатором 288, запустивший дочерние процессы rundll32.exe. Получим информацию об их запуске при помощи плагина cmdline.
Как видим, rundll32.exe запускает динамическую библиотеку C:\ProgramData\test.DLL, функция экспорта GnrkQr.
Выгрузим test.DLL и проверим его на VirusTotal. Для этого найдем физический адрес файла.
Его MD5 — 2769761a23f793d93bbad3ded28e8ebd.
Файлик оказался вредоносным и относится к семейству PlugX.
Найдем управляющий сервер процесса с идентификатором 288.
Вредоносный модуль взаимодействует с управляющим сервером 52.90.110.169.
Далее получим дамп адресного пространства процесса.
Найдем все URI, через которые шло взаимодействие с files.allsafecybersec.com:
Для бокового перемещения по сети и заражения машин с Linux злоумышленник загрузил модуль linuxav.deb.
Продолжаем анализировать процессы и находим запущенный исполняемый файл conhost.exe, который обрабатывает консольные окна в последних версиях Windows.
Получим дамп его адресного пространства.
Теперь проанализируем строки в дампе процесса.
Обычно, попав в систему, злоумышленники начинают искать в ней интересные файлы, чтобы их выгрузить. Посмотрим, как злоумышленник выгружал файлы со скомпрометированной системы. Найдем все файлы с расширениями .zip и .rar. При поиске архивов RAR находим файл report.rar.
Пароль выгружаемых данных — password1234.
По сценарию сотрудник компании сообщил, что получил подозрительное электронное письмо с файлом документа и после этого компьютер начал вести себя странно. Группа реагирования на инциденты сделала несколько дампов памяти с подозрительных машин. Наша задача — расследовать инцидент и разобраться, что произошло.
По результатам решения кейса необходимо ответить на ряд вопросов, однако я покажу лишь сам процесс решения. Повторив прохождение, ты сможешь сам дать ответы для закрепления материала.
Загрузим архив с артефактами и приступим к их исследованию.
ИСПОЛЬЗУЕМЫЕ УТИЛИТЫ
- Volatility Framework 2.6.1 — инструмент, реализованный на Python 2. Предназначен для извлечения артефактов из образцов энергозависимой памяти.
- Bulk extractor — инструмент для извлечения структурированной информации, к примеру адресов электронной почты, URL, доменов.
- YARA Editor — программа для тестирования и создания правил YARA.
- OST Extractor — инструмент для восстановления OST-контейнеров в EML.
- Scdbg — программа для анализа shell-кода.
ИСПОЛЬЗУЕМЫЕ ДЛЯ ИЗВЛЕЧЕНИЯ ДАННЫХ ПЛАГИНЫ VOLATILITY 2
- Imageinfo — плагин для определения операционной системы, пакета обновлений и аппаратной архитектуры исследуемого образа.
- Pstree — просмотр списка процессов в виде дерева.
- Handles — просмотр открытых дескрипторов к файлам, разделам реестра, мьютексам, именованным каналам, событиям в процессах. Также можно отобразить дескрипторы для конкретного процесса, задав фильтр по типу объекта.
- Consoles — плагин для поиска команд, которые злоумышленники ввели через cmd.exe. Основное преимущество этого плагина в том, что он не только печатает команды, введенные злоумышленниками, но и собирает весь экранный буфер (ввод и вывод).
- Memdump — извлечение всех резидентных страниц памяти в процессе.
- Filescan — плагин для поиска объектов FILE_OBJECT в памяти с помощью сканирования тегов пула. Этот плагин найдет все открытые файлы.
- Dumpfiles — извлечение кешированных файлов из образа памяти.
- Netscan — поиск сетевых артефактов в 32- и 64-разрядных дампах памяти. Этот плагин находит конечные точки TCP и UDP, а также ищет локальные и удаленные IP-адреса.
- Printkey — поиск значений в указанном разделе реестра Windows.
- Userassist — получение информации из ключа реестра UserAssist.
- Mftparser — сканирует записи главной таблицы файлов (MFT) в памяти и выводит информацию о временных метках файлов.
- Autoruns — подключаемый плагин для поиска точек сохранения исполняемых файлов в системе. Для подключения плагина нужно добавить его в каталог plugins инструмента Volatility.
- Malfind — плагин для поиска скрытого или внедренного в память процессов кода.
- Editbox — плагин для извлечения текста из элементов управления Windows Edit.
ИССЛЕДОВАНИЕ ХОСТА ECORPOFFICE
Прежде чем искать вирусную активность, давай получим первичную информацию о системе, имя компьютера, сетевой адрес и версию операционной системы.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" imgeinfo
Версия ОС — Win7SP1x64. Мы будем ее указывать при поиске других артефактов в качестве профиля в Volatility.
Получим имя компьютера, для этого проверим следующий ключ реестра:
Код:
Код:
SYSTEM\ControlSet001\Control\ComputerName\ComputerName
python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem \
--profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
Выясним сетевой адрес. Для этого проверим ключ, в котором содержатся идентификаторы сетевых адаптеров. Здесь же можно найти и информацию о сети.
Код:
python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem \
--profile=Win7SP1x86_23418 printkey \
-K "ControlSet002\Services\Tcpip\Parameters\Interfaces\{360E0CDC-9C78-4D3B-A0Af-69CC45DE6D70}"
IP-адрес исследуемой машины — 10.1.1.122.
Проанализируем запущенные процессы в системе, их список выгрузим в файл pstree.txt.
Мы обнаружили процесс OUTLOOK.EXE, идентификатор процесса — 2692. По сценарию нам известно, что инцидент произошел после того, как пользователь запустил вложение в письме. Восстановим все сообщения пользователя и найдем вредоносное. Для этого ищем в процессе все объекты FILE.
Код:
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 handles -p 2692 -t FILE > ecorpoffice/FILE_OUTLOOK
В результате анализа объектов FILE обнаружено имя почтового ящика пользователя:
Попробуем выгрузить этот контейнер из памяти процесса. Найдем физический адрес файла, используя плагин filescan.
Код:
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 filescan > ecorpoffice/filescan`
Выгружаем найденный файл, даем ему расширение .ost и загружаем в утилиту OST Extractor.
Код:
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 dumpfiles -Q 0x000000007d4d9450 -u -D ecorpoffice/
Не забываем про аргумент -u, который позволяет выгрузить большее количество данных.
Получаем файл file.None.0xfffffa80042dcf10.dat. Тоже меняем ему разрешение на .ost и загружаем в OST Extractor.
После конвертирования OST в указанной папке появится сообщение пользователя в формате EML. Переходим в папку сообщений и смотрим его.
Письмо отправлено с почтового ящика [email protected]. В аттаче — документ bank_statement_088452.doc. IP-адрес почтового сервера — 31.6.35.122. Письмо поступило 4 октября 2016 года в 12:02:04 (UTC).
Чтобы извлечь вложение, можно воспользоваться блокнотом, для этого декодируем аттач из Base64 и сохраняем файл с расширением .doc. Либо можешь открыть EML с помощью почтового клиента (того же Outlook).
Исследовать вредоносные файлы необходимо в изолированной среде. Итак, берем файл bank_statement_088452.doc и начинаем изучать. Его MD5:
c2dbf24a0dc7276a71dd0824647535c9
Проверим наличие макроса в полученном вложении с помощью утилиты olevba.
olevba bank_statement_088452.doc
Макрос сильно обфусцирован, и по‑быстрому его проанализировать не получится, поэтому откроем документ в Microsoft Word и начнем отлаживать скрипт на Visual Basic.
Перейдем в «Вид → Макросы» и нажмем кнопку «Отладить». Находим следующий участок кода.
В функции xvkBjM выполняется запуск содержимого в переменной UsoJar. Найдем место в коде, где формируется эта переменная, поставим точку останова и запустим скрипт.
После выполнения этого участка кода в переменной UsoJar появится команда на PowerShell, которая декодирует данные и исполняет их.
Преобразуем данные из Base64 и посмотрим содержимое.
Как видим, скрипт на PowerShell находит и запускает исполняемые файлы вот из этой папки:
C:\Users\<user>\AppData\Local\Temp
Перед тем как запускать вредоносный документ, начнем записывать сетевой трафик, для этого запустим в виртуальной машине Wireshark.
Как видим, до запуска скрипта на PowerShell происходит загрузка полезной нагрузки с IP-адреса 54.174.131.235.
Вредоносный скрипт на VBA загружает полезную нагрузку со следующего адреса:
http://54.174.131.235/files/tv_x64.exe
Нагрузка будет сохранена в файл
C:\Users\<user>\AppData\Local\Temp\SkypeC2AutoUpdate.exe
Затем этот файл запускается.
Процесс SkypeC2AutoUpdate.exe — это средство удаленного управления TeamViewer.
Найдем системный идентификатор этого процесса в файле pstree. Это 1364.
Теперь изучим сетевую активность процесса. Для этого извлечем из образа все взаимодействия с сетью и сохраним в файлик netscan.txt.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 netscan > ecorpoffice/netscan.txt
Процесс с идентификатором 1364 взаимодействует с управляющим сервером 54.174.131.235.
Получим дамп адресного пространства процесса.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 memdump -p 1364 -D ecorpoffice/
Выгруженный файл называется 1364.dmp.
Теперь при помощи регулярного выражения найдем все взаимодействия с управляющим сервером 54.174.131.235.
strings 1364.dmp | grep '54.174.131.235'
Вредоносный файл обращается вот на этот адрес:
http://54.174.131.235/getinfo[.]php
Установив соединение, он отправляет собранную информацию. Версия программного обеспечения TeamViewer (параметр tvrv=) — 0.2.2.2.
Попробуем вытащить данные из полей TeamViewer, нам интересен его пароль и идентификатор. Для этого воспользуемся плагином editbox.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 editbox
Идентификатор системы — 528 812 561.
Пароль для доступа к хосту — P59fS93m.
Попробуем вытащить из процесса интересную информацию, связанную с работой TeamViewer.
strings 1364.dmp | grep 'teamviewer' -B 3 -A 3
В памяти процесса обнаружен сетевой адрес 31.6.13.155, с которого произошел удаленный вход в систему.
Использовав плагин procdump, получим этот процесс, чтобы проверить через VirusTotal.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 procdump -p 1364 -D ecorpoffice/
Получим его хеш и найдем его описание на VirusTotal. MD5-сумма — 6ecd2ed83b0bc2eea7c7a75d06a610b6.
Также проанализируем все письма в папке после работы утилиты ost-extractor.exe.
Давай теперь зафиксируем картину произошедшего.
04.10.2016 в 12:02 (UTC) на адрес [email protected] с адреса [email protected] поступило письмо, в котором сообщается номер цифрового кошелька, куда необходимо перевести выкуп. Адрес кошелька Bitcoin:
25UMDkGKBe484WSj5Qd8DhK6xkMUzQFydY
04.10.2016 в 12:02:04 (UTC) на адрес [email protected] от [email protected] пришло фишинговое сообщение, содержащее вредоносный документ bank_statement_088452.doc. Пользователь открыл этот документ, что и привело к компрометации компьютера. С адреса http://54.174.131.235/files/tv_x64.exe на его машину загружается исполняемый файл TeamViewer, содержащий идентификатор и пароль для доступа к скомпрометированному хосту.
В 12:02 04.10.2016 на адрес [email protected] от [email protected] пришло сообщение с адресом кошелька Bitcoin. Если компания не переведет на него определенную сумму, злоумышленники начнут атаковать инфраструктуру организации.
ИССЛЕДОВАНИЕ ОБРАЗА ECORPWIN7
Получим первичную информацию о системе.python2 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 imageinfo
python2 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 printkey \
-K "ControlSet001\Control\ComputerName\ComputerName"`
python2 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 printkey \
-K "ControlSet002\Services\Tcpip\Parameters\Interfaces\{3AE5A5FF-4A27-4327-9C26-1493676FB9E5}"
Имя компьютера — WIN-KMUKM7JPN9D, сетевой адрес — 10.1.1.141, профиль операционной системы — Win7SP1x64.
Далее получим список процессов в виде дерева, а также сетевую активность. Результат сохраним в файл.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 pstree > ecorpwin7/pstree
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 netscan > ecorpwin7/netscan
Находим почтовый процесс OUTLOOK.EXE, идентификатор 2496.
Получим дамп адресного пространства этого процесса.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 memdump -p 2496 -D ecorpwin7/
Получим список объектов FILE в адресном пространстве процесса.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 handles -t FILE -p 2496 > ecorpwin7/handles_file_2496
Получаем файл handles_file_2496, а в нем название другого файла:
[email protected]
Это почтовый контейнер. Найдем его физический адрес и выгрузим его из образа. Для этого получим список файлов:
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 filescan > ecorpwin7/filescan
Восстановим почтовый контейнер.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 dumpfiles -Q 0x000000007de17f20 -u -D ecorpwin7/
Теперь конвертируем файл с помощью OST Extractor и находим сообщение с вложением.
04.10.2016 в 13:35:13 (UTC) от [email protected] поступило письмо, содержащее вредоносное вложение. IP-адрес почтового сервера отправителя — 31.6.35.122. Выгрузим вложения с помощью Outlook.
Получаем файл RTF:
Important_ECORP_Lawsuit_Washington_Leak
.rtfНо эта версия файла битая. Поэтому попробуем восстановить его не из сообщения, а из памяти. Находим его по названию в выгруженном списке файлов.
Восстановим его.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" \
--profile=Win7SP1x64 dumpfiles -Q 0x000000007d6b3850 -u -D ecorpwin7/
Открываем восстановленный файл в Hex-редакторе и удаляем в конце незначащие нули. MD5-сумма этого файла:
00e4136876bf4c1069ab9c4fe40ed56f
Это реализация эксплоита в документе RTF (CVE-2010-3333). Подробнее о нем можешь прочесть в исследовании Sophos (PDF).
Начнем анализ вредоносного документа. Получим список потоков:
py rtfdump.py file.None.0xfffffa80040b3260.dat.rtf
Согласно исследованию Sophos, полезная нагрузка находится за фрагментом \sv.
Полезная нагрузка начинается после 0xacc8. Выгрузим нагрузку и сохраним в файл shell.
py rtfdump.py file.None.0xfffffa80040b3260.dat.rtf -s 5 -H -d > shell
Далее с помощью утилиты scdbg найдем точку входа шелл‑кода.
scdbg /f shell /findsc
Полезная нагрузка загружается с ресурса по следующему адресу:
http://files.allsafecybersec.com
Проанализируем процессы.
Мы обнаружили процесс svchost.exe с идентификатором 288, запустивший дочерние процессы rundll32.exe. Получим информацию об их запуске при помощи плагина cmdline.
python2.7 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem \
--profile=Win7SP1x64 cmdline > ecorpwin7/cmdline
Как видим, rundll32.exe запускает динамическую библиотеку C:\ProgramData\test.DLL, функция экспорта GnrkQr.
Выгрузим test.DLL и проверим его на VirusTotal. Для этого найдем физический адрес файла.
python2.7 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem \
--profile=Win7SP1x64 dumpfiles -Q 0x000000007e8b03c0 -D c74-TeamSpy/ecorpwin7/
Его MD5 — 2769761a23f793d93bbad3ded28e8ebd.
Файлик оказался вредоносным и относится к семейству PlugX.
Найдем управляющий сервер процесса с идентификатором 288.
Вредоносный модуль взаимодействует с управляющим сервером 52.90.110.169.
Далее получим дамп адресного пространства процесса.
python2.7 vol.py -f ecorpwin7/ecorpwin7-e73257c4.vmem \
--profile=Win7SP1x64 memdump -p 288 -D ecorpwin7/
Найдем все URI, через которые шло взаимодействие с files.allsafecybersec.com:
strings 288.dmp | grep files.allsafecybersec.com
Для бокового перемещения по сети и заражения машин с Linux злоумышленник загрузил модуль linuxav.deb.
Продолжаем анализировать процессы и находим запущенный исполняемый файл conhost.exe, который обрабатывает консольные окна в последних версиях Windows.
Получим дамп его адресного пространства.
python2.7 vol.py -f "ecorpwin7/ecorpwin7-e73257c4.vmem" --profile=Win7SP1x64 memdump -p 3056 -D ecorpwin7/
Теперь проанализируем строки в дампе процесса.
Обычно, попав в систему, злоумышленники начинают искать в ней интересные файлы, чтобы их выгрузить. Посмотрим, как злоумышленник выгружал файлы со скомпрометированной системы. Найдем все файлы с расширениями .zip и .rar. При поиске архивов RAR находим файл report.rar.
strings -el 3056.dmp | grep reports.rar -B 3 -A 3
Пароль выгружаемых данных — password1234.