top of page
Search

Volatility Plugins — Plugin window.psxview Let’s Talk About it

  • 1 minute ago
  • 3 min read
ree

If SSDT hooking shows you how rootkits control behavior

psxview shows you how they hide existence.

This plugin is one of the most important tools for rootkit detection in memory.


What psxview Really Does

psxview is a compound plugin.

It doesn’t invent new data — it compares existing views of processes gathered using different kernel mechanisms.

Why this matters:

Windows tracks processes in multiple places:

  • linked lists

  • PID tables

  • thread structures

  • user-session data

  • desktop objects


A rootkit can hide from one of these.

Hiding from all of them is extremely difficult.

This is the core idea behind cross-view analysis.


Cross-View Analysis

Cross-view analysis means:

  1. Ask Windows for process information the normal way (high-level)

  2. Independently discover processes using low-level structures

  3. Compare the results


If something exists in one view but not another: someone is lying

Rootkits usually lie to the high-level views.



What psxview Compares

psxview runs multiple plugins and builds a comparison table.

Here’s what each source represents:

ree

High-Level View

  • pslist

    • Reads the active process doubly linked list

    • Easiest place for DKOM rootkits to hide

    • This is your baseline “normal” view

Low-Level & Alternate Views

  • psscan

    • Scans memory for raw EPROCESS structures

    • Finds terminated, hidden, and orphaned processes

  • thrdproc(scan)

    • Reconstructs processes via thread parent PIDs

    • Very hard to fully clean up

  • pspcid

    • Uses the kernel PspCid table (PID tracking)

    • Another place attackers forget to clean

  • csrss

    • csrss.exe holds handles to user processes

    • Only valid for processes started after csrss

  • session

    • Groups processes by logon session

  • deskthrd

    • Maps processes via desktop-attached threads



How to Read psxview Output

Each process gets a row.


Each detection method gets a column.

  • True → process found via that method

  • False → process not found via that method


What you’re looking for:


Inconsistencies

Especially:

  • False in pslist

  • True everywhere else

That’s rootkit territory.



Legitimate “False” Values

Not every False means malware.

Some examples that are expected behavior:

  • System, smss.exe, csrss.exe

    • Started before csrss tracking exists

    • Will show False under csrss, session, deskthrd

  • Terminated processes

    • psscan may find leftover EPROCESS structures

    • Other views show no references



Real-World Example: FU Rootkit

The FU rootkit uses Direct Kernel Object Manipulation (DKOM).

Instead of hooking functions, it:

  • removes its process from the active process list

  • leaves the process alive elsewhere in memory


psxview Findings

Plugin

Result

pslist

❌ False

psscan

✅ True

thrdproc

✅ True

pspcid

✅ True

csrss

✅ True

This is textbook DKOM behavior.

pslist — the high-level view — has been manipulated. Low-level structures still know the process exists.

That discrepancy is the detection.



Why pslist Is the “Canary”

pslist is the easiest place to hide.

So your rule of thumb:

If a process does not appear in pslist but appears elsewhere, investigate immediately.

This is how most rootkit detections start.




False Positive Example

You’ll often see something like:

  • psscan → True

  • everything else → False

Example:

  • csrss.exe

This usually means:

  • process exited cleanly

  • EPROCESS still present in memory

  • no active references remain


This is not malware — just memory artifacts.


The Important Question

If psscan already finds hidden processes, why do we need psxview?

Because context matters.


Without cross-view comparison:

  • you might assume the process is legitimate

  • you might miss that it was hidden from pslist

  • you lose the evidence of DKOM manipulation

psxview doesn’t just find processes —it tells you which kernel view was tampered with.

That’s critical for attribution and reporting.



Key Takeaways

  • psxview is a rootkit detector, not a process lister

  • Inconsistencies matter more than presence

  • pslist = high-level truth

  • psscan = raw reality


---------------------------------------Dean--------------------------------------------


 
 
 
bottom of page