Вопрос или проблема
Я изучал волатильность, и в этой комнате на tryhackme использовали psxview для нахождения скрытых процессов. Задание заключалось в следующем:
Довольно часто вредоносное ПО пытается скрыть себя и связанный с ним процесс. Сказав это, мы можем увидеть преднамеренно скрытые процессы с помощью команды
psxview
. Какой процесс имеет только одно значение ‘False’?
А вывод был следующим:
$volatility -f cridex.vmem --profile WinXPSP3x86 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 True True True
0x02511360 svchost.exe 824 True True True True True True True
0x022e8da0 alg.exe 788 True True True True True True True
0x020b17b8 spoolsv.exe 1512 True True True True True True True
0x0202ab28 services.exe 652 True True True True True True True
0x02495650 svchost.exe 1220 True True True True True True True
0x0207bda0 reader_sl.exe 1640 True True True True True True True
0x025001d0 svchost.exe 1004 True True True True True True True
0x02029ab8 svchost.exe 908 True True True True True True True
0x023fcda0 wuauclt.exe 1136 True True True True True True True
0x0225bda0 wuauclt.exe 1588 True True True True True True True
0x0202a3b8 lsass.exe 664 True True True True True True True
0x023dea70 explorer.exe 1484 True True True True True True True
0x023dfda0 svchost.exe 1056 True True True True True True True
0x024f1020 smss.exe 368 True True True True False False False
0x025c89c8 System 4 True True True True False False False
0x024a0598 csrss.exe 584 True True True True False True True
Ответом на это задание был csrss.exe, так как вы можете видеть, что это единственный процесс с одним значением “False”.
Как именно процесс считается скрытым? Это когда в его свойствах есть только одно значение “False”?
В то же время, в этом источнике говорится, что
Что ж, кроме нашего случая 😉 никакие процессы не кажутся скрытыми, если это так, вы увидите “False” в первых двух столбцах (pslist и psscan).
Так что же правильно? Когда процесс считается скрытым при анализе вывода psxview?
Во-первых, полезно использовать флаг -R с этим модулем psxview, чтобы выявить известные безвредные паттерны, такие как легитимные процессы csrss и smss, которые отображают false в вашем выводе.
Чтобы ответить на исходный вопрос, колонка psscan покажет вам любую структуру EPROCESS, найденную Volatility при обходе памяти. Структура EPROCESS является как бы каркасом вокруг исполняемого файла в памяти и, следовательно, свидетельствует о том, что процесс работает или работал.
Затем вы сравните это с колонкой pslist, которая содержит записи, сообщающие операционной системе как обычные, через двусвязный список EPROCESS.
Если запись найдена в PSSCAN, но не в PSLIST, возможны следующие объяснения:
-
процесс завершил свою работу, но остатки существуют в памяти
-
процесс работает и был преднамеренно скрыт
Ответ или решение
Как идентифицировать скрытые процессы с помощью Volatility, используя psxview?
При анализе памяти с использованием инструмента Volatility, рассмотрим модуль psxview
, который помогает выявить скрытые процессы на основе различных источников данных о процессах в памяти.
Ваша задача была определена как нахождение процесса, который имеет только одно значение "False" в выводе команды psxview
. Пример выводимой информации выглядит следующим образом:
Offset(P) Name PID pslist psscan thrdproc pspcid csrss session deskthrd ExitTime
---------- -------------------- ------ ------ ------ -------- ------ ----- ------- -------- ---------
0x024a0598 csrss.exe 584 True True True True False True True
Как видно, процесс csrss.exe
стал единственным с одним "False" в столбце csrss
. Но стоит разобраться, что это значит и как именно мы определяем, что процесс скрыт.
Как понять, является ли процесс скрытым?
Чтобы определить, является ли процесс скрытым, важно обратить внимание на следующие столбцы:
- pslist: отобразает процессы, которые активно сообщаются операционной системой через двойную связанную цепочку EPROCESS.
- psscan: показывает все найденные структуры EPROCESS в памяти, независимо от их состояния. Это может включать завершенные или скрытые процессы.
Если вы видите, что процесс отображается в psscan
, но не в pslist
, это может указывать на то, что процесс либо завершился, но остался в памяти, либо он все еще работает и был намеренно скрыт.
Почему csrss.exe
имеет единственное "False"?
В нашем случае, csrss.exe
имеет значение "False" только в столбце csrss
, что может указывать на то, что этот процесс скрывает свой статус через стандартные методы скрытия. Такое поведение может быть связано с действиями вредоносных программ, которые пытаются защитить себя от обнаружения.
На основании вывода команды psxview
, процесс считается спрятанным, если наблюдаются несоответствия между столбцами pslist
и psscan
. Вот основные причины, по которым процесс может быть скрытым:
- Процесс завершен, но его остатки всё еще остаются в памяти.
- Процесс работает, но ему намеренно придаётся скрытый статус.
Рекомендации по анализу
Для более точного анализа процессов рекомендуется использовать флаг -R
при вызове модуля psxview
, чтобы выявлять известные безвредные паттерны. Это позволит избежать ложных срабатываний и улучшит качество анализа.
Таким образом, выводы, полученные через psxview
, действительны особенно в контексте отношений между столбцами pslist
и psscan
. На явление скрытых процессов указывает наличие записей в psscan
, отсутствующих в pslist
.