Уроки форензики. Расследуем заражение машины с Windows шпионским трояном

Содержание статьи

  • Используемые утилиты
  • Используемые для извлечения данных плагины Volatility 2
  • Исследование хоста ecorpoffice
  • Исследование образа ecorpwin7
  • Выводы

В этой статье я покажу, как извле­кать основные арте­фак­ты из обра­зов опе­ратив­ной памяти Windows. Мы вос­ста­новим про­цесс ата­ки, что­бы рас­сле­довать инци­дент. В этом нам поможет лабора­тор­ная работа TeamSpy с ресур­са CyberDefenders.

По сце­нарию сот­рудник ком­пании сооб­щил, что получил подоз­ритель­ное элек­трон­ное пись­мо с фай­лом докумен­та и пос­ле это­го компь­ютер начал вес­ти себя стран­но. Груп­па реаги­рова­ния на инци­ден­ты сде­лала нес­коль­ко дам­пов памяти с подоз­ритель­ных машин. Наша задача — рас­сле­довать инци­дент и разоб­рать­ся, что про­изош­ло.

info

По резуль­татам решения кей­са необ­ходимо отве­тить на ряд воп­росов, одна­ко я покажу лишь сам про­цесс решения. Пов­торив про­хож­дение, ты смо­жешь сам дать отве­ты для зак­репле­ния матери­ала.

Заг­рузим ар­хив с арте­фак­тами и прис­тупим к их иссле­дова­нию.

 

Используемые утилиты

  • 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.

    По­лучим имя компь­юте­ра, для это­го про­верим сле­дующий ключ реес­тра:

    SYSTEMControlSet001ControlComputerNameComputerName
    python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem
    --profile=Win7SP1x64 printkey -K "ControlSet001ControlComputerNameComputerName"

    Имя компь­юте­ра иссле­дуемо­го обра­за

    Имя компь­юте­ра: WIN-191HVE3KTLO.

    Вы­ясним сетевой адрес. Для это­го про­верим ключ, в котором содер­жатся иден­тифика­торы сетевых адап­теров. Здесь же мож­но най­ти и информа­цию о сети.

    python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem
    --profile=Win7SP1x86_23418 printkey
    -K "ControlSet002ServicesTcpipParametersInterfaces{360E0CDC-9C78-4D3B-A0Af-69CC45DE6D70}"

    Се­тевая информа­ция о хос­те

    IP-адрес иссле­дуемой машины — 10.1.1.122.

    Про­ана­лизи­руем запущен­ные про­цес­сы в сис­теме, их спи­сок выг­рузим в файл pstree.txt.

    python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem"
    --profile=Win7SP1x64 pstree > ecorpoffice/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 обна­руже­но имя поч­тового ящи­ка поль­зовате­ля:

    DeviceHarddiskVolume1Usersphillip.priceAppDataLocalMicrosoftOutlookphillip.price@e-corp.biz.pst

    Поп­робу­ем выг­рузить этот кон­тей­нер из памяти про­цес­са. Най­дем физичес­кий адрес фай­ла, исполь­зуя пла­гин 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).

    info

    Ис­сле­довать вре­донос­ные фай­лы необ­ходимо в изо­лиро­ван­ной сре­де. Как соз­дать лабора­торию для ана­лиза вре­доно­сов, под­робно рас­ска­зано в статье «Код под над­зором. Соз­даем вир­туаль­ную лабора­торию для ана­лиза мал­вари».

    Итак, берем файл bank_statement_088452.doc и начина­ем изу­чать. Его MD5:

    c2dbf24a0dc7276a71dd0824647535c9

    Про­верим наличие мак­роса в получен­ном вло­жении с помощью ути­литы olevba.

    olevba bank_statement_088452.doc

    Ре­зуль­тат работы ути­литы olevba

    Мак­рос силь­но обфусци­рован, и по‑быс­тро­му его про­ана­лизи­ровать не получит­ся, поэто­му откро­ем документ в Microsoft Word и нач­нем отла­живать скрипт на Visual Basic.

    Со­дер­жимое вре­донос­ного докумен­та

    Пе­рей­дем в «Вид → Мак­росы» и наж­мем кноп­ку «Отла­дить». Находим сле­дующий учас­ток кода.

    Со­дер­жимое мак­роса

    В фун­кции xvkBjM выпол­няет­ся запуск содер­жимого в перемен­ной UsoJar. Най­дем мес­то в коде, где фор­миру­ется эта перемен­ная, пос­тавим точ­ку оста­нова и запус­тим скрипт.

    От­ладка скрип­та

    Пос­ле выпол­нения это­го учас­тка кода в перемен­ной UsoJar появит­ся коман­да на PowerShell, которая декоди­рует дан­ные и исполня­ет их.

    Пре­обра­зуем дан­ные из Base64 и пос­мотрим содер­жимое.

    Пре­обра­зован­ные дан­ные

    Как видим, скрипт на PowerShell находит и запус­кает исполня­емые фай­лы вот из этой пап­ки:

    C:Users<user>AppDataLocalTemp

    Пе­ред тем как запус­кать вре­донос­ный документ, нач­нем записы­вать сетевой тра­фик, для это­го запус­тим в вир­туаль­ной машине Wireshark.

    Се­тевая активность вре­донос­ного докумен­та

    Как видим, до запус­ка скрип­та на PowerShell про­исхо­дит заг­рузка полез­ной наг­рузки с IP-адре­са 54.174.131.235.

    За­голо­вок сетево­го пакета

    Вре­донос­ный скрипт на VBA заг­ружа­ет полез­ную наг­рузку со сле­дующе­го адре­са:

    http://54.174.131.235/files/tv_x64.exe

    Наг­рузка будет сох­ранена в файл

    C:Users<user>AppDataLocalTempSkypeC2AutoUpdate.exe

    За­тем этот файл запус­кает­ся.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *