Если вы интересуетесь информационной безопасностью, то наверняка знакомы с площадками для оттачивания хакерского мастерства, такими как 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
На этом с первым этапом все.
Удачи.
volatility_2.6_win64_standalone.exe -f memdump.mem imageinfo
ReplyDeletevolatility_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