Главная

Wednesday, 1 June 2022

Расследование взлома компьютера с Windows, CTF #1.

Всем привет.

Если вы интересуетесь информационной безопасностью, то наверняка знакомы с площадками для оттачивания хакерского мастерства, такими как Hack The Box,  а для специалистов компьютерной криминалистики существует альтернативная платформа CyberDefenders.  И я заглядываю туда время от времени, чтобы вспомнить былое.

Обычно дело обстоит так - по сценарию форензик кейса в исходящем трафике сети компании CyberCorp был выявлен ряд аномалий, что говорит о взломе. Специалисты ИБ успешно изолировали скомпрометированный хост от сети и собрали важные артефакты Windows. Артефакты лежат в архиве, который вам необходимо скачать. По результатам решения кейса нас, как специалистов по расcледованию инцидента, попросят ответить на ряд вопросов. 

По ходу нам предоставляются следующие файлы (артефакты Windows), которые подвергаются анализу:

Amcache.hve - файл реестра, содержит информацию о запускаемых приложениях.  Расположение файла Amcache: \%SystemRoot%\AppCompat\Programs\Amcache.hve

AppCompatCache.reg - информация из ключа куста реестра SYSTEM (C:\Windows\System32\configSystem):

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache

В этом ключе содержится артефакт Shimcache - эта функция обеспечивает совместимость старых приложений с более новыми версиями ОС. В нем хранится информация: путь к файлу, время последнего изменения и размер исполняемого файла.

Файлы реестра: default, SAM, SECURITY, software, system. Расположение файлов: C:\Windows\System32\config

Windows event logs (формат evtx). Расположение файлов: C:\Windows\System32\winevt\Logs

User Registry Hives - файл NTUSER.DAT содержит информацию, связанную с действием пользователя. Файлы NTUSER.DAT хранятся в каталоге: %userprofile%

Windows Prefetch - файл оптимизации запуска приложений. Файлы Prefetch могут содержать важную информацию, такую как: имя исполняемого файла, список динамических библиотек, используемых исполняемым файлом, количество запусков исполняемого файла и временную метку, которая указывает, когда приложение было запущено в последний раз. Расположение файлов: C:\Windows\Prefetch

Копия NTFS $MFT. MFT - системный файл ОС, содержит метаданные объекта файловой системы. MFT находится в корне разделов NTFS, выгрузить его можно инструментом FTK Imager.

OBJECTS.DATA - файл содержит постоянные классы WMI (Windows Management Instrumentation). Расположение файла: %SystemRoot%\System32\wbem\Repository

Рartial registry dump - файл образа RAM.

2 packet captures файла (формат pcapng) - сетевой трафик, полученный в результате мониторинга сети организации.


По сути сегодня будет первая из двух частей серии CyberDefenders.org, занимательной криминалистической CTF. Алгоритм поиска флага во многом совпадает с представленным здесь, но предлагемый образ с артефактами с тех пор изменился, поэтому туда будем только подглядывать.

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

  • Volatility 2 Python 2.7 version
  • Volatilityautoruns модуль
  • VolatilityWinesap модуль
  • PECmd.exe
  • analyzeMFT
  • Wireshark
  • DeepBlueCLI
  • Registry Explorer

Лучше повторяйте за мной, и даже забегайте наперед). Готовы? Тогда поехали.

Частенько по ходу используется фреймворк Volatility для которого надо заранее узнать профиль для исследуемой ОС. Поэтому определяем подходящий профиль для Volatility: 

python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem imageinfo

          Suggested Profile(s) : Win10x64_17134, Win10x64_14393, Win10x64_10586, Win10x64_16299, Win2016x64_14393, Win10x64_17763, Win10x64_15063 (Instantiated with Win10x64_15063)

                     AS Layer1 : SkipDuplicatesAMD64PagedMemory (Kernel AS)

                     AS Layer2 : FileAddressSpace (/Users/apdavies03/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem)

                      PAE type : No PAE

                           DTB : 0x1aa002L

                          KDBG : 0xf8002003a520L

          Number of Processors : 2

     Image Type (Service Pack) : 0

                KPCR for CPU 0 : 0xfffff8001ed49000L

                KPCR for CPU 1 : 0xffff9c01cb3e0000L

             KUSER_SHARED_DATA : 0xfffff78000000000L

           Image date and time : 20200620 19:48:43 UTC+0000

     Image local date and time : 20200620 12:48:43 0700

Отлично, теперь будем применять предложенный профиль к команде vol.py, чтобы правильно проанализировать образ памяти:

profile=Win10x64_17134

1) Какой номер сборки (в формате ддддд, где каждый d  одно десятичное число, например  12345) установленной версии Windows?

Для этого загружаем куст реестра Software в программу Registry Explorer и переходим к ключу СurrentBuild: SOFTWARE\Microsoft\Windows NT\CurrentVersion

Ответ:

17134

2) Каков родительский PID процесса, который принимает входящие сетевые подключения через порт 1900/UDP:

$ python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 netscan

...

0xcd83ffc3a2f0     UDPv6    ::1:1900                       *:*               

Но мы ищем родителя процесса 4688:

python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 pstree > ps.txt

grep 4688 ps.txt 

.. 0xffffcd83ffc5c580:svchost.exe                    4688    648      6      0 20200620 18:36:22 UTC+0000

Ответ:

648

3) Каков IP-адрес командно-диспетчерского центра атакующего, соединение с которым было еще активным на момент получения криминалистических артефактов?

Из дампа netstat ищем установленные подключения к чужим IP:

$ python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 netscan

0xcd840169d2f0     TCPv4    192.168.184.130:50133          196.6.112.70:443     ESTABLISHED      1    

Ответ:

196.6.112.70

4) Каков PID процесса, в котором находился вредоносный код в момент получения криминалистических артефактов?

$ python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 pstree

 0xffffcd840106d580:winlogon.exe                     3232   6064      7      0 20200620 19:28:44 UTC+0000

. 0xffffcd84012a84c0:cmd.exe                         5224   3232      0  20200620 19:29:54 UTC+0000

. 0xffffcd8401109580:fontdrvhost.ex                  4852   3232      5      0 20200620 19:28:44 UTC+0000

. 0xffffcd83ffef2580:userinit.exe                    1748   3232      0  20200620 19:28:55 UTC+0000

... 0xffffcd84020d0580:powershell.exe                9188   5472     12      0 20200620 19:38:52 UTC+0000

.... 0xffffcd84020e9580:conhost.exe                  9204   9188      5      0 20200620 19:38:52 UTC+0000

... 0xffffcd8401779580:MSASCuiL.exe                  1012   5472      3      0 20200620 19:29:09 UTC+0000

... 0xffffcd84005de580:WINWORD.EXE                   7312   5472      0  20200620 19:47:01 UTC+0000

... 0xffffcd84010ba080:OneDrive.exe                  4572   5472     24      0 20200620 19:29:12 UTC+0000

... 0xffffcd83fe8b2580:vmtoolsd.exe                  6624   5472      9      0 20200620 19:29:10 UTC+0000

. 0xffffcd83febcf580:cmd.exe                         3928   3232      0  20200620 19:34:27 UTC+0000

. 0xffffcd8400e37080:cmd.exe                          288   3232      0  20200620 19:33:00 UTC+0000

. 0xffffcd83fecff080:dwm.exe                         8100   3232     11      0 20200620 19:28:44 UTC+0000

Ответ:

3232

5) На скомпрометированной системе вредоносный код, обнаруженный на предыдущем шаге, запускается при каждом запуске системы, поскольку злоумышленник использовал одну из техник персистентности. Итак, как называется запись автозапуска (та часть, которая непосредственно отвечает за выполнение кода), используемая злоумышленником для персистентности?

Используем журналы WMIActivityOperational для поиска пути вредоносного ПО для идентификации службы (EventID 5861).

Чтобы еще больше упростить этот вопрос, мы даже пропатчили и сделали запрос на включение в SansDeepBlueCLI.

Ответ:

LogRotate Consumer

6) Запись автозапуска из предыдущего шага используется для запуска скрипта, что в свою очередь приводит к выполнению вредоносного кода в памяти процесса, о котором идет речь в вопросе 4. Этот код извлекается скриптом из какогото системного места в закодированную форму. Расшифрованное значение этой строки представляет собой исполняемый PEфайл. Как антивирус Microsoft обнаружил этот файл 21 июня 2020 г.?

Достаточно просто  как только вы ответите на вопрос 8.

Загрузите хэш образцов на VirusTotal и получите ответ:

Троян:Win64/Meterpreter.E

7) Процесс, указанный в вопросе 4, не является начальным процессом, в котором вредоносный код, описанный в предыдущем вопросе, выполнялся скриптом из автозапуска. Как называется исходный процесс (в формате program.exe), который порождается сценарием автозапуска и используется для дальнейшего выполнения вредоносного кода, который впоследствии мигрирует в адресное пространство процесса, указанного в вопросе 4.

Оглянитесь назад на pstree (дерево процессов):

. 0xffffcd83fecff080:dwm.exe                         8100   3232     11      0 20200620 19:28:44 UTC+0000

Ответ:

dwm.exe

8) Запись автозапуска из предыдущего шага используется для запуска скрипта, что, в свою очередь, приводит к выполнению вредоносного кода в памяти процесса, который обсуждается в вопросе 4. Укажите URLадрес, который использовался для загрузки этого скрипта из Интернета во время компрометации хоста. Сценарий, работающий на каждой системной звезде (описанный в вопросе 6), был загружен в скомпрометированную систему из Интернета. Укажите URLадрес, который использовался для загрузки этого скрипта.

Это было сложнее, сначала мы выгружали память дочерних процессов powershell (зная, что загрузчик был скриптом powershell в памяти), затем мы искали нечетные строки URL.

egrep "https://...\..................\..../.*"

https://raw.githubusercontent.com/xia33F/APT/master/payloads/wrapper_page

9) Система была скомпрометирована в результате открытия документа Microsoft Office, полученного по электронной почте. Какой MD5хэш этого документа (например, d41d8cd98f00b204e9800998ecf8427e)?

Для этой задачи мы использовали Wireshark, использовали фильтр «SMTP» и просматривали все SMTPпотоки, пока не нашли несколько вложений (word doc, zipфайл, pdf) в виде вложения в кодировке base64. Просто скопируйте и вставьте код base64 в файл, и base64 декодирует, проверьте тип файла и далее разверните контейнеры.

base64 d b64_file > filedecoded

file filedecoded

 ZIP

mv filededcoded filedecoded.zip

unzip filedecoded.zip

Why Saudi Arabia Will Lose The Next Oil Price War.docx

md5 Why Saudi Arabia Will Lose The Next Oil Price War.docx

Ответ:

aa7ee7f712780aebe9136cabc24bf875

10) Документ, изначально открытый пользователем, сам по себе не содержал ничего вредоносного. Он загрузил из Интернета другой документ в виде шаблона Microsoft Word. Вредоносный код, приведший к компрометации системы, находится непосредственно внутри этого шаблона. Какая ссылка использовалась первым документом для загрузки второго документа в качестве шаблона (например, https://address/file.com)?

Откройте PDFфайл в какой-нибудь песочнице или используйте Didier Stevens OLE tools:

http://75.19.45.11/Supplement.dotm

11) В ходе постэксплуатации злоумышленник доставил на скомпрометированный хост специальную утилиту Active Directory Enumeration. По какой ссылке злоумышленник скачивал эту утилиту (например, https://address/file.com)?

Используя матрицу атаки Mitre, распространенным инструментом является certutil, есть два способа разрешить этот вопрос:

1. Look at the pcap (traffic_2.pcapng) and HTTP filter and look for the following useragent:

Useragent "MicrosoftCryptoAPI/10.0" (http.user_agent == "MicrosoftCryptoAPI/10.0")

Follow stream: tcp.sream eq 102

Note the destination IP/URL

2. Carve the powershell process memory dump for certutil:

$ strings 3232.dmp|grep certutil

4certutil decode %tmp%\disco.jpg:sh %tmp%\sh.exe

;from the open (netstat) connections we know the IP is 196.6.112.70

Ответ:

http://196.6.112.70/disco.jpg

12) Как описано в предыдущем вопросе, утилита создала в скомпрометированной системе несколько файлов, которые впоследствии были удалены злоумышленником. Один из созданных файлов имел расширение bin. Как называется этот файл (например, name.bin)?

Два способа сделать это:

1. Parse the MFT and grep for .bin files analyzeMFT:

virtualenv p /opt/local/bin/python2.7 venv

python ./setup.py build

python ./setup.py install

python ./analyzeMFT.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/\$MFT.copy0 o dump.csv

grep v i microsoft|grep ".bin" 

...

20200620|19:31:38.501654|TZ|...B|FILE|NTFS $MFT|$FN [...B] time|user|host|/Windows/Temp/ODNhN2YwNWUtYWFmYy00MDVmLWFhYTQtNGMzM2Q3NmYwMWM4.bin|desc|version|/Windows/Temp/ODNhN2YwNWUtYWFmYy00MDVmLWFhYTQtNGMzM2Q3NmYwMWM4.bin|7||format|extra

2. Analyse the prefetch files with PECmd.exe:

В Windows:

PECMD f Prefetch\SH.EXE89D7F45B.pf

...

113: \VOLUME{... \TEMP\ODNHN2YWNWUTYWFMYY00MDVMLWFHYTQTNGMZM2Q3NMYWMWM4.BIN

Ответ:

ODNHN2YWNWUTYWFMYY00MDVMLWFHYTQTNGMZM2Q3NMYWMWM4.BIN

13) Как описано в предыдущем вопросе, утилита создала в скомпрометированной системе несколько файлов, которые впоследствии были удалены злоумышленником. Один из созданных файлов имел расширение bin. Как называется этот файл (например, name.bin)? Во время постэксплуатации злоумышленник скомпрометировал учетную запись привилегированного пользователя. Какой у него пароль?

python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 hashdump > hashes.txt

Volatility Foundation Volatility Framework 2.6.1

Administrator:500:63424d100a5717b0661f84ae789b82bd:34103925bb9f07248d0b3d3df50c9d4c:::

Guest:501:eddee9c278b95cf3880300ca22eddda0:06adfd21dc6db22b5ef3743b1b8c022b:::

DefaultAccount:503:3ac68f2d31f869d98fa5db8b9c405af1:b80c069e17138971f4d183f9d575ccb4:::

WDAGUtilityAccount:504:8c1c4c3110d3075c5e1b33fc5e3b30f0:899aa6ec601d70d34fb994c27ed93123:::

John Goldberg:1001:7d80c4bfe8857c6ec676aa3577e89e68:f7b1dce8a4445aea38d6a735ae0bf754:::

backupsrv:1003:291f7bc51dde8a64063b565c68579d95:0e651bf56065b19f5783bb59ad6e8bfc:::


Затем используйте свою программу для взлома или найдите взломанные хэши в Интернете, которые мы использовали https://crackstation.net/

Ответ:

!!feb15th2k6!!

14) Как называется инструмент (имя типа program.exe), который, вероятно, использовался злоумышленником для компрометации учетной записи пользователя?

Поскольку мы знаем, что скрипт powershell загружает значение реестра из реестра, мы можем предположить, что злоумышленник использовал штатную утилиту Reg.exe.

Ответ:

reg.exe

15) Злоумышленник использовал скомпрометированную учетную запись для несанкционированного доступа к контроллеру домена. Каков IPадрес этого контроллера домена?

Снова два способа сделать это:

1. Wireshark с фильтром SMB (traffic_2.pcapng)

2. Используйте volatility, так как мы знаем, 

что рабочая станция присоединена к домену, вероятно, установлено установленное соединение через SMB(445):

$ python2 ./vol.py f ~/Downloads/CyberPolygon_Forensic_Artifacts/memdump.mem profile=Win10x64_17134 netscan|grep 445 

0xcd83fec7f700     TCPv4    192.168.184.130:50368          192.168.184.100:445  ESTABLISHED      1  

Ответ:

192.168.184.100

На этом с первым этапом все.

Удачи.

1 comment:

  1. volatility_2.6_win64_standalone.exe -f memdump.mem imageinfo

    volatility_2.6_win64_standalone.exe -f memdump.mem netscan --profile=Win10x64 >netscam.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem pstree --profile=Win10x64 >pstree.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem pstree --profile=Win10x64_14393 >Log\pstree.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem malfind --profile=Win10x64_14393 >Log\malfind.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem mbrparser --profile=Win10x64_14393 >Log\mbrparser.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem filescan --profile=Win10x64 >Log\filescan.txt

    volatility_2.6_win64_standalone.exe -f memdump.mem filescan --profile=Win10x64_14393 >Log\filescan.txt

    MFTECmd.exe -f $MFT.copy0 --csv .\RESULT\MFT

    findstr "Price War" 20220408091917_MFTECmd_$MFT_Output.csv

    findstr "Windows\Temp" 20220408091917_MFTECmd_$MFT_Output.csv

    certutil -hashfile "F:\Case\CyberPolygon_Forensic_Artifacts\Log\Why Saudi Arabia Will Lose The Next Oil Price War.docx" MD5

    ReplyDelete

А что вы думаете по этому поводу?