• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Использование Volatility. Анализ оперативной памяти.

baykal

(L2) cache
Пользователь
Регистрация
16.03.2021
Сообщения
370
Реакции
838
Сегодня мы разберем базовый анализ оперативной памяти, содержащей вредоносную программу. Этот пост предназначен для начинающих криминалистов или людей, желающих изучить форензику.

В этом кратком руководстве мы будем использовать один из самых популярных программных анализаторов энергозависимой памяти: Volatility. Этот инструмент поможет нам проверить дамп памяти потенциально зараженного компьютера. Volatility поможет получить полезную информацию (о запущенных процессах, последних измененные файлах или даже истории браузера пользователя), хранящуюся в памяти компьютера.

Мы воспользуемся несколькими командами, разыграя простой сценарий с поиском Cridex. Готовы? Давайте начнем!

Подготовка​

  • Я предполагаю, что вы уже скачали и установили Volatility на свой компьютер.
  • Дамп, который мы будем анализировать, можно скачать на странице со всеми базовыми сэмплами от Volatility.

Создание дампа​

В случае, если вы захотите произвести анализ собственного дампа оперативной памяти, то для того, чтобы его создать, можно воспользоваться следующими программами:
  • FTK Imager
  • Redline (требует регистрации)
  • DumpIt.exe
  • win32dd.exe / win64dd.exe - имеет фантастическую поддержку psexec
На выходе вы получить файл с форматом .raw - тот самый дамп оперативный памяти, пригодный для анализа в Volatility (и не только).

Моделируя ситуацию со злоумышленником, если компьютер был выключен по приезду "Маски-Шоу", поможет файл гибернации, находящийся в %SystemDrive%/hiberfil.sys. Обычными методами удалить его проблематично, да и не осведомленные пользователи нечасто заботятся об этом.

Богатый арсенал виртуалок также подлежит анализу:
  • VMware - .vmem-файл
  • Hyper-V - .bin-файл
  • Parallels - .mem-файл
  • VirtualBox - .sav-файл (частичный файл памяти)
Их можно заранее скопировать, не выключая виртуальную машину, тем самым сохранив целостность.

Анализ дампа​

Самая первая команда, которую нужно запустить, начиная анализ энергозависимой памяти: imageinfo, она поможет получить первичную информации о дампе памяти.
Код:
$ volatility -f cridex.vmem imageinfo
Флаг -f указывает на файл дампа, а imageinfo - название плагина, который мы будем использовать. После выполнения команды, будет выведен следующий результат:
Код:
Volatility Foundation Volatility Framework 2.6

INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)
                     AS Layer2 : FileAddressSpace (/home/panardin/Challs/cridex.vmem)
                      PAE type : PAE
                           DTB : 0x2fe000L
                          KDBG : 0x80545ae0L
          Number of Processors : 1
     Image Type (Service Pack) : 3
                KPCR for CPU 0 : 0xffdff000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2012-07-22 02:45:08 UTC+0000
     Image local date and time : 2012-07-21 22:45:08 -0400
Теперь у нас есть имя операционной системы, из которой был произведен дамп оперативной памяти - WinXPSP2x86 - можно начинать расследование. Мы должны указать используемый профиль (--profile=WinXPSP2x86) и попытаться выяснить, что же произошло на компьютере жертвы.

Давайте с помощью плагина pslist посмотрим, какие процессы выполнялись.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 pslistVolatility

Foundation Volatility Framework 2.6
Offset(V)  Name                    PID   PPID   Thds     Hnds   Sess                   
---------- -------------------- ------ ------ ------ -------- ------
0x823c89c8 System                    4      0     53      240 ------                                                             
0x822f1020 smss.exe                368      4      3       19 ------                                     
0x822a0598 csrss.exe               584    368      9      326      0                                   
0x82298700 winlogon.exe            608    368     23      519      0                                 
0x81e2ab28 services.exe            652    608     16      243      0                                     
0x81e2a3b8 lsass.exe               664    608     24      330      0                                   
0x82311360 svchost.exe             824    652     20      194      0                                   
0x81e29ab8 svchost.exe             908    652      9      226      0                                   
0x823001d0 svchost.exe            1004    652     64     1118      0                                   
0x821dfda0 svchost.exe            1056    652      5       60      0                                   
0x82295650 svchost.exe            1220    652     15      197      0                                   
0x821dea70 explorer.exe           1484   1464     17      415      0                                   
0x81eb17b8 spoolsv.exe            1512    652     14      113      0                                   
0x81e7bda0 reader_sl.exe          1640   1484      5       39      0                     
0x820e8da0 alg.exe                 788    652      7      104      0                                 
0x821fcda0 wuauclt.exe            1136   1004      8      173      0                                     
0x8205bda0 wuauclt.exe            1588   1004      5      132      0
В качестве альтернативы pslist можно использовать pstree, который отобразит список процессов в виде дерева:
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 pstree

Volatility Foundation Volatility Framework 2.6
Name                                                  Pid   PPid
-------------------------------------------------- ------ ------
 0x823c89c8:System                                      4      0     
. 0x822f1020:smss.exe                                 368      4     
.. 0x82298700:winlogon.exe                            608    368     
... 0x81e2ab28:services.exe                           652    608     
.... 0x821dfda0:svchost.exe                          1056    652     
.... 0x81eb17b8:spoolsv.exe                          1512    652     
.... 0x81e29ab8:svchost.exe                           908    652     
.... 0x823001d0:svchost.exe                          1004    652     
..... 0x8205bda0:wuauclt.exe                         1588   1004     
..... 0x821fcda0:wuauclt.exe                         1136   1004     
.... 0x82311360:svchost.exe                           824    652     
.... 0x820e8da0:alg.exe                               788    652     
.... 0x82295650:svchost.exe                          1220    652     
... 0x81e2a3b8:lsass.exe                              664    608     
.. 0x822a0598:csrss.exe                               584    368     
 0x821dea70:explorer.exe                             1484   1464     
. 0x81e7bda0:reader_sl.exe                           1640   1484
В глаза сразу же бросается странный процесс с именем «reader_sl.exe», родителем которого выступает «explorer.exe». Это один из последних процессов, запущенных на машине, он находится в самом конце списка.

Можно также использовать плагин psxview, чтобы получить список процессов, пытающихся скрыться во время работы системы. Иногда его использование может оказаться действительно очень полезным.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 psxview

Volatility Foundation Volatility Framework 2.6
Offset(P)  Name                    PID pslist psscan thrdproc pspcid csrss session deskthrd ExitTime
---------- -------------------- ------ ------ ------ -------- ------
0x02498700 winlogon.exe            608 True   True   True     True..
0x02511360 svchost.exe             824 True   True   True     True..
0x022e8da0 alg.exe                 788 True   True   True     True..
0x020b17b8 spoolsv.exe            1512 True   True   True     True..
0x0202ab28 services.exe            652 True   True   True     True..
0x02495650 svchost.exe            1220 True   True   True     True..
0x0207bda0 reader_sl.exe          1640 True   True   True     True..
0x025001d0 svchost.exe            1004 True   True   True     True..
0x02029ab8 svchost.exe             908 True   True   True     True..
0x023fcda0 wuauclt.exe            1136 True   True   True     True..
0x0225bda0 wuauclt.exe            1588 True   True   True     True..
0x0202a3b8 lsass.exe               664 True   True   True     True..
0x023dea70 explorer.exe           1484 True   True   True     True..
0x023dfda0 svchost.exe            1056 True   True   True     True..
0x024f1020 smss.exe                368 True   True   True     True..
0x025c89c8 System                    4 True   True   True     True..
0x024a0598 csrss.exe               584 True   True   True     True..
Ну, за исключением нашего случая;) кажется, что никакие процессы не пытаются скрыться, об этом говорит «False» в первых двух столбцах (pslist и psscan).

После того, как посмотрели запущенные процессы, неплохо было бы проверить открытые соединения на компьютере. Для этого мы будем использовать плагины connscan, netscan и sockets.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 connscan

Volatility Foundation Volatility Framework 2.6
Offset(P)  Local Address             Remote Address            Pid
---------- ------------------------- ------------------------- ---
0x02087620 172.16.112.128:1038       41.168.5.140:8080         1484
0x023a8008 172.16.112.128:1037       125.19.103.198:8080       1484$ volatility -f cridex.vmem --profile=WinXPSP2x86 socketsVolatility Foundation Volatility Framework 2.6
Offset(V)       PID   Port  Proto Protocol        Address         
---------- -------- ------ ------ --------------- ---------------
0x81ddb780      664    500     17 UDP             0.0.0.0         
0x82240d08     1484   1038      6 TCP             0.0.0.0         
0x81dd7618     1220   1900     17 UDP             172.16.112.128 
0x82125610      788   1028      6 TCP             127.0.0.1       
0x8219cc08        4    445      6 TCP             0.0.0.0         
0x81ec23b0      908    135      6 TCP             0.0.0.0         
0x82276878        4    139      6 TCP             172.16.112.128 
0x82277460        4    137     17 UDP             172.16.112.128 
0x81e76620     1004    123     17 UDP             127.0.0.1       
0x82172808      664      0    255 Reserved        0.0.0.0         
0x81e3f460        4    138     17 UDP             172.16.112.128 
0x821f0630     1004    123     17 UDP             172.16.112.128 
0x822cd2b0     1220   1900     17 UDP             127.0.0.1       
0x82172c50      664   4500     17 UDP             0.0.0.0         
0x821f0d00        4    445     17 UDP             0.0.0.0
Connscan - плагин, представляющий собой сканер TCP-соединений, sockets - умеет выводить список открытых сокетов и, наконец, NetScan (которые не может быть использоваы в нашем примере в связи с используемым профилем) сканирует Windows Vista на наличие активных соединений.

В нашем сценарии есть два TCP-соединения, использующиеся процессом с PID 1484 (просматривая выходные данные истории команд, можно легко соотнести PID 1484 с процессом explorer.exe). Мы видим, что одно из этих TCP-соединений все еще открыто, то есть то, что использует 1038 порт и обменивается данными с целевым IP-адресом 41.168.5.140.

Давайте теперь посмотрим на последние выполненные команды с помощью модулей cmdscan, consoles и cmdline.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 cmdline

Volatility Foundation Volatility Framework 2.6
********************************************************************
System pid:      4
********************************************************************
smss.exe pid:    368
Command line : \SystemRoot\System32\smss.exe
********************************************************************
csrss.exe pid:    584
Command line : C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
********************************************************************
winlogon.exe pid:    608
Command line : winlogon.exe
********************************************************************
services.exe pid:    652
Command line : C:\WINDOWS\system32\services.exe
********************************************************************
lsass.exe pid:    664
Command line : C:\WINDOWS\system32\lsass.exe
********************************************************************
svchost.exe pid:    824
Command line : C:\WINDOWS\system32\svchost -k DcomLaunch
********************************************************************
svchost.exe pid:    908
Command line : C:\WINDOWS\system32\svchost -k rpcss
********************************************************************
svchost.exe pid:   1004
Command line : C:\WINDOWS\System32\svchost.exe -k netsvcs
********************************************************************
svchost.exe pid:   1056
Command line : C:\WINDOWS\system32\svchost.exe -k NetworkService
********************************************************************
svchost.exe pid:   1220
Command line : C:\WINDOWS\system32\svchost.exe -k LocalService
********************************************************************
explorer.exe pid:   1484
Command line : C:\WINDOWS\Explorer.EXE
********************************************************************
spoolsv.exe pid:   1512
Command line : C:\WINDOWS\system32\spoolsv.exe
********************************************************************
reader_sl.exe pid:   1640
Command line : "C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe"
********************************************************************
alg.exe pid:    788
Command line : C:\WINDOWS\System32\alg.exe
********************************************************************
wuauclt.exe pid:   1136
Command line : "C:\WINDOWS\system32\wuauclt.exe" /RunStoreAsComServer Local\[3ec]SUSDSb81eb56fa3105543beb3109274ef8ec1
********************************************************************
wuauclt.exe pid:   1588
Command line : "C:\WINDOWS\system32\wuauclt.exe"
Первые два плагина: consoles (извлекает историю команд путем сканирования _CONSOLE_INFORMATION) и cmdscan (извлекает историю команд путем сканирования _COMMAND_HISTORY) не выдали никакой информации.

Однако cmdline, плагин отображающий аргументы командной строки процесса, действительно дал нам немного интересной информации. Теперь у нас есть полный путь к процессам, запущенным с PID 1484 и 1640. «Reader_sl.exe» становится все более и более подозрительным…

Мы знали, что процесс, который должен был быть классическим приложением Adobe Reader, был запущен из проводника, однако мы наблюдали работающее соединение с внешним IP-адресом, используемое тем же самым процессом ...

Давайте же воспользуемся плагином procdump, для того чтобы получить исполнительный файл, и memdump для получения памяти процесса этого файла. Необходимо указать два дополнительных ключа: -p 1640 (интересующий PID) и --dump-dir (каталог, в котором мы хотим извлечь дамп).
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 procdump -p 1640 --dump-dir .

Volatility Foundation Volatility Framework 2.6
Process(V) ImageBase  Name                 Result
---------- ---------- -------------------- ------
0x81e7bda0 0x00400000 reader_sl.exe        OK: executable.1640.exe$


volatility -f cridex.vmem --profile=WinXPSP2x86 memdump -p 1640 --dump-dir .

Volatility Foundation Volatility Framework 2.6
************************************************************************
Writing reader_sl.exe [1640] to 1640.dmp
Теперь можно выполнить простой анализ этих двух файлов с помощью утилиты «strings». Это может занять какое-то время, поскольку обычно дампы содержат много информации. Сейчас мы пытаемся отскать связь между частью информации, уже полученной из дампа (открытым TCP-соединением с IP-адресом 41.168.5.140) и процессом с PID 1640.
Код:
$ strings 1640.dmp | grep -Fi "41.168.5.140" -C 5

ABACFPFPENFDECFCEPFHFDEFFPFPACAB
DpI8
POST /zb/v_01_a/in/ HTTP/1.1
Accept: */*
User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)
Host: 41.168.5.140:8080
Content-Length: 229
Connection: Keep-Alive
Cache-Control: no-cache
>mtvR
`06!
Я использовал команду grep в сочетании с -C #NUMBER, чтобы получить 5 строк до и после искомой, такой подход позволяет построить более полную картину. Здесь мы ясно видим, что исполняемый файл «Reader_sl.exe» обменивается данными с IP-адресом назначения 41.168.5.140 с помощью POST-запросов, потенциально извлекая информацию с компьютера жертвы.

Набравшись терпения и проанализировав некоторые части дампа при помощи strings, мы можем найти следующие интересные домены:
Код:
$ strings 1640.dmp | less...
*hsbc.co.uk*
*ablv.com*
*accessbankplc.com*
*alphabank.com.cy*
*baltikums.com*
*baltikums.eu*
*banesco.com.pa*
*bankaustria.at*
*banknet.lv*
*bankofcyprus.com*
*bobibanking.com*
*butterfieldonline.ky*
*cimbanque.net*
*cs.directnet.com*
*directnet.com*
*danskebanka.lv*
*ebank.laiki.com*
*ebank.rcbcy.com*
*ebemo.bemobank.com*
*e-norvik.lv*
*eurobankefg.com*
*eurobankefg.com.cy*
*ekp.lv*
*fbmedirect.com*
*hblibank.com*
*hellenicnetbanking.com*
*hiponet.lv*
*hkbea*
*ibanka.seb.lv*
*ib.baltikums.com*
*geonline.lv*
*ib.dnb.lv*
*bib.lv*
*ib.snoras.com*
*i-linija.lt*
*loyalbank.com*
*marfinbank.com.cy*
*multinetbank.eu*
*nordea.com*
*secure.ltbbank.com*
*secure.ltblv.com*
*swedbank.lv*
*norvik.lv*
*online.alphabank.com.cy*
*online.citadele.lv*
*online.lkb.lv*
...
Список доменных сайтов банка. Теперь, глядя на память процесса, у нас появляется больше причин для подозрений в отношении «Reader_sl.exe».

Давайте посмотрим, является ли исполняемый файл вредоносным.

На данный момент у нас есть два возможных способа сделать это:
  • путем статического анализа и реверса исполняемого файла, чтобы наглядно увидеть, какие команды выполняеются исполняемым файлом
  • или - поскольку в настоящее время я не очень хорошо разбираюсь в реверс-инжиниринге - попробовать динамический анализ с помощью песочницы или онлайн-инструментов, которые анализируют потенциально вредоносные исполняемые файлы.
Давайте прибегнем ко второму варианту и проанализируем файлы с помощью VirusTotal, вероятно, самого известного веб-сайта для анализа подозрительных файлов и веб-сайтов. Мне также нравится использовать: HybridAnalysis.

8f257a4d61025f6dbe9c0.png



b0005509c7bc1ecfc283a.png

Очевидно, что исполняемый файл распознается этими двумя веб-сайтами-как вредоносный с высокими показателями обнаружения!

Пришло время подвести итоги различных исследований, которые мы провели, и наших выводов с проанализированным дампом:
  • Странный процесс Reader_sl.exe PID 1640 с проводником в качестве родительского (PID 1484)
  • Открытое соединение с 41.168.5.140:8080, используемое PID 1484
  • Банковские домены и 41.168.5.140 найдены в дампе процесса 1640
  • 1640 исполняемый файл определен веб-сайтами песочницы как вредоносный троян
Если с компьютера пользователя был извлечен дамп «cridex.vmem», мы могли бы сделать вывод, что компьютер заражен трояном.

Профилактика​

Предположим, что этот дамп памяти был обнаружен на компьютере сотрудника работающего в большой компании. Как судебному следователю, вам удалось проанализировать дамп изменчивой памяти и найти вредоносный exe-файл.

Однако этот исполняемый файл мог быть отправлен в ходе фишинговой кампании всем сотрудникам, поэтому теперь необходимо извлечь IOC (индикаторы взлома), чтобы максимально квалифицировать Cridex и, таким образом, помочь команде SOC обнаружить другие потенциально зараженные компьютеры.

Первым IOC, найденным в дампе, был IP-адрес C&C: 41.168.5.140. Чтобы увидеть, используются ли другие IP-адреса, мы можем, например, осуществить поиск по следующиму шаблону «/zb/v_01_a/in/» - это путь, запрошенный вредоносной программой («41.168.5.140:8080/zb/v_01_a/in/»).
Код:
$ strings 1640.dmp | grep -Fi "/zb/v_01_a/in/"http://188.40.0.138:8080/zb/v_01_a/in/cp.php
POST /zb/v_01_a/in/ HTTP/1.1
http://188.40.0.138:8080/zb/v_01_a/in/cp.php
http://188.40.0.138:8080/zb/v_01_a/in/cp.php
Мы нашли еще один IOC: 188.40.0.138! Посмотрим, сможем ли мы связать уже найденные IP-адреса с возможными именами хостов при помощи Passive DNS. В таком случае мы будем использовать сервис под названием Mnemonic:
Код:
results for 188.40.0.138
------------------------
Record Type Query     Answer    First seen    Last seen   # times TTL
a paypalconfirmaccount.com  188.40.0.138  2014-04-01 15:32...
a dedi53.flk1.host-h.net    188.40.0.138  2012-08-06 15:42 ...
a www.sandtonslippers.co.za 188.40.0.138  2012-12-27 04:21 ...
a www.horizoncottages.co.za 188.40.0.138  2012-12-24 03:11 ...
a blog.anafricanvilla.co.za 188.40.0.138  2012-12-14 05:11 ...
a www.capetowncity.co.za    188.40.0.138  2012-10-16 17:37 ...
a derwenthouse.co.za    188.40.0.138  2012-10-23 02:36  ...
a www.derwenthouse.co.za    188.40.0.138  2012-10-16 18:27 ...
a www.villastjames.com    188.40.0.138  2012-11-07 20:00  ...
a www.capescape.co.za   188.40.0.138  2012-10-31 15:33 ...
a www.wind-rose.co.za   188.40.0.138  2012-10-23 02:39  ...
a wind-rose.co.za     188.40.0.138  2012-10-23 02:38  ...
a static.138.0.40.188....   188.40.0.138  2012-08-06 16:43 ...
a blog.leeuwenvoet.co.za    188.40.0.138  2012-08-06 15:41 ...
a www.therocks.co.za    188.40.0.138  2012-08-06 15:41  ...
a www.leeuwenvoet.co.za   188.40.0.138  2012-08-02 20:17  ...results for 188.40.0.138
------------------------
Record Type Query     Answer    First seen    Last seen   # times TTL
a paypalconfirmaccount.com  188.40.0.138  2014-04-01 15:32 ...
a dedi53.flk1.host-h.net    188.40.0.138  2012-08-06 15:42 ...
a www.sandtonslippers.co.za 188.40.0.138  2012-12-27 04:21 ...
a www.horizoncottages.co.za 188.40.0.138  2012-12-24 03:11 ...
a blog.anafricanvilla.co.za 188.40.0.138  2012-12-14 05:11 ...
a www.capetowncity.co.za    188.40.0.138  2012-10-16 17:37 ...
a derwenthouse.co.za    188.40.0.138  2012-10-23 02:36 ...
a www.derwenthouse.co.za    188.40.0.138  2012-10-16 18:27 ...
a www.villastjames.com    188.40.0.138  2012-11-07 20:00 ...
a www.capescape.co.za   188.40.0.138  2012-10-31 15:33 ...
a www.wind-rose.co.za   188.40.0.138  2012-10-23 02:39 ...
a wind-rose.co.za     188.40.0.138  2012-10-23 02:38 ...
a static.138.0.40.188....   188.40.0.138  2012-08-06 16:43 ...
a blog.leeuwenvoet.co.za    188.40.0.138  2012-08-06 15:41 ...
a www.therocks.co.za    188.40.0.138  2012-08-06 15:41 ...
a www.leeuwenvoet.co.za   188.40.0.138  2012-08-02 20:17 ...

results for 41.168.5.140
------------------------
Record Type Query     Answer    First seen    Last seen   # times TTL
a ns8.dfudont.ru      41.168.5.140  2013-01-24 09:46  ...
a support.tray-international.com  41.168.5.140  2012-09-11 ...
a seledkindoms.ru     41.168.5.140  2012-06-21 17:03 ...
Мы должны продолжить и проанализировать каждое возможное имя хоста, чтобы увидеть, могут ли они быть связаны с нашим трояном (время записи DNS соответствует времени заражения?, веб-сайт - легитимный?…). Затем мы передадим эти IOC команде SOC для надлежащего обнаружения троянской инфекции в инфраструктуре компании с использованием настраиваемых правил обнаружения SIEM.

Удаление​

Если Cridex успел заразить и другие машины в компании, то вам следует использовать антивирус, который умеет обнаруживать и устранять угрозы, а также следует проверить, является ли вредоносный троян постоянным.

Действительно, большинство зловредов стараются автоматизировать свое выполнение при каждом запуске системы, что затрудняет их удаление. Чтобы узнать, является ли Cridex постоянным, мы можем взглянуть на записи реестра.

Ветки реестра, которые нас интересуют:
«HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, RunOnce, RunOnceEx»
Мы можем использовать Volatility, чтобы перемещаться по реестру и выводить его содержимое.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 hivelist

Volatility Foundation Volatility Framework 2.6
Virtual    Physical   Name
---------- ---------- ----
0xe18e5b60 0x093f8b60 \Device\HarddiskVolume1\Documents and Settings\Robert\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe1a19b60 0x0a5a9b60 \Device\HarddiskVolume1\Documents and Settings\Robert\NTUSER.DAT
0xe18398d0 0x08a838d0 \Device\HarddiskVolume1\Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe18614d0 0x08e624d0 \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT
0xe183bb60 0x08e2db60 \Device\HarddiskVolume1\Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe17f2b60 0x08519b60 \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT
0xe1570510 0x07669510 \Device\HarddiskVolume1\WINDOWS\system32\config\software
0xe1571008 0x0777f008 \Device\HarddiskVolume1\WINDOWS\system32\config\default
0xe15709b8 0x076699b8 \Device\HarddiskVolume1\WINDOWS\system32\config\SECURITY
0xe15719e8 0x0777f9e8 \Device\HarddiskVolume1\WINDOWS\system32\config\SAM
0xe13ba008 0x02e4b008 [no name]
0xe1035b60 0x02ac3b60 \Device\HarddiskVolume1\WINDOWS\system32\config\system
0xe102e008 0x02a7d008 [no name]
Плагин Hivelist позволяет вывести список разделов. Printkey поможет нам увидеть содержимое разделов реестра, его подразделы и значения. Теперь давайте воспользуемся параметром -K, чтобы перейти к интересующей нас ветке.
Код:
$ volatility -f cridex.vmem --profile=WinXPSP2x86 printkey -K "Software\Microsoft\Windows\CurrentVersion\Run"

Volatility Foundation Volatility Framework 2.6
Legend: (S) = Stable   (V) = Volatile

----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\Robert\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
Key name: Run (S)
Last updated: 2011-04-13 00:55:13 UTC+0000

Subkeys:

Values:
----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\Robert\NTUSER.DAT
Key name: Run (S)
Last updated: 2012-07-22 02:31:51 UTC+0000

Subkeys:

Values:
REG_SZ        KB00207877.exe  : (S) "C:\Documents and Settings\Robert\Application Data\KB00207877.exe"
----------------------------
Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\default
Key name: Run (S)
Last updated: 2011-04-12 20:31:49 UTC+0000

Subkeys:

Values:
----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
Key name: Run (S)
Last updated: 2011-04-13 00:55:13 UTC+0000

Subkeys:

Values:
----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT
Key name: Run (S)
Last updated: 2011-04-13 00:49:16 UTC+0000

Subkeys:

Values:
----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT
Key name: Run (S)
Last updated: 2011-04-13 00:49:28 UTC+0000

Subkeys:

Values:
----------------------------
Registry: \Device\HarddiskVolume1\Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
Key name: Run (S)
Last updated: 2011-04-13 00:55:13 UTC+0000

Subkeys:

Values:
Как видите, единственное значение, который было недавно изменено, - «\Device\HarddiskVolume1\Documents and Settings\Robert\NTUSER.DAT». Убедимся, что исполняемый файл с именем «KB00207877.exe» действительно связан с нашим трояном:
Код:
$ strings 1640.dmp | grep -Fi "KB00207877.exe"

KB00207877.exe
C:\Documents and Settings\Robert\Application Data\KB00207877.exe(,
KB00207877.EXEn
KB00207877.exe
KB00207877.exe
C:\Documents and Settings\Robert\Application Data\KB00207877.exe(,
Поскольку эта строка действительно присутствует в искомом файле, теперь мы можем смело утверждать, что Cridex изменил стартовый ключ реестра компьютера жертвы, чтобы он стал постоянным. Удаление «KB00207877.exe» необходимо для "обеззараживания" машины.

Резюме​

На этом базовый анализ вредоноса Cridex подошел к концу. Надеюсь, вам понравился моя статья! Ниже приводится краткое изложение различных команд Volatility, используемых для анализа сегодняшнего дампа:
Код:
# Какой тип дампа я собираюсь анализировать
$ volatility -f MyDump.dmp imageinfo

# Какие процессы были запущены
$ volatility -f MyDump.dmp --profile=MyProfile pslist
$ volatility -f MyDump.dmp --profile=MyProfile pstree
$ volatility -f MyDump.dmp --profile=MyProfile psxview

# Список открытых TCP/UDP соединений
$ volatility -f MyDump.dmp --profile=MyProfile connscan
$ volatility -f MyDump.dmp --profile=MyProfile sockets
$ volatility -f MyDump.dmp --profile=MyProfile netscan

# Какие команды выполнялись на компьютере
$ volatility -f MyDump.dmp --profile=MyProfile cmdline
$ volatility -f MyDump.dmp --profile=MyProfile consoles
$ volatility -f MyDump.dmp --profile=MyProfile cmdscan

# Дамп .exe процесса и его памяти
$ volatility -f MyDump.dmp --profile=MyProfile procdump -p MyPid --dump-dir .
$ volatility -f MyDump.dmp --profile=MyProfile memdump -p MyPid --dump-dir .

# Ветки и значения ключей регистра
$ volatility -f MyDump.dmp --profile=MyProfile hivelist
$ volatility -f MyDump.dmp --profile=MyProfile printkey -K "MyPath"

Автор Moody
Переведено и адаптировано специально для @cybred
 
Статья как раз очень по делу. Тоже начал интересоваться этой темой.
Правда после ввода: volatility -f memdump.mem imageinfo получаю:

Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : No suggestion (Instantiated with no profile)
AS Layer1 : FileAddressSpace (D:\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone\memdump.mem)
РAE type : No PAE


Пробовал указывать профиль, но все равно, та же самая фигня..
 
Самое любимое задание на CTF было именно это .
Как я понял можно просто дам в виртуалку залить и не танцевать с бубном а юзать как винду.

Но я только через консоль игрался, кстати через консоль можно спокойно скачивать любой файл из дампа.
 
Не знаю коллеги. Это всё конечно серьезно, но такие вещи можно спалить по другому. Например, прикачивается live cd, я бы рекомендовал dr.web и запускаемся с него. Вероятность обнаружения максимальная.
Про конкретно Cridex ничего не скажу, но это простой, быстрый и не менее эффективный метод обнаружения зловреда на ПК пользователей
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх