Detect Proc Filesystem in CrowdStrike LogScale
Adversaries on Linux systems read process memory directly via the /proc filesystem to extract credentials from running processes. By accessing /proc/<PID>/maps to identify memory regions and /proc/<PID>/mem to read those regions, attackers dump credentials from processes like sshd, su, sudo, gnome-keyring, and KWallet without injecting code or using ptrace. Tools include MimiPenguin (specifically targeting sshd and gnome-keyring), LaZagne (Linux edition), and PACEMAKER. This technique requires root privileges or the same UID as the target process. Used by threat actors targeting Linux servers where traditional Windows credential tools don't apply.
MITRE ATT&CK
- Tactic
- Credential Access
- Technique
- T1003 OS Credential Dumping
- Sub-technique
- T1003.007 Proc Filesystem
- Canonical reference
- https://attack.mitre.org/techniques/T1003/007/
LogScale Detection Query
// T1003.007 - Proc Filesystem Credential Dumping
// Pattern 1: Direct /proc/<PID>/mem or maps file access by suspicious processes
#event_simpleName = "SyntheticProcessRollup2" OR #event_simpleName = "ProcessRollup2"
| TargetProcessId != ""
| CommandLine = /\/proc\/\d+\/(mem|maps|environ)/
| CommandLine != /\/(gdb|strace|ltrace)\s/
| case {
CommandLine = /(mimipenguin|MimiPenguin)/ | RiskLevel := "KnownTool_MimiPenguin";
CommandLine = /(lazagne|LaZagne)/ | RiskLevel := "KnownTool_LaZagne";
CommandLine = /pacemaker/i | RiskLevel := "KnownTool_PACEMAKER";
CommandLine = /(python3?|perl|ruby|bash)/ AND CommandLine = /\/proc\/\d+\/mem/
AND CommandLine = /(sshd|gnome-keyring|kwallet|sudo)/ | RiskLevel := "HighRisk_TargetedDump";
CommandLine = /\/proc\/\d+\/mem/ | RiskLevel := "Medium_MemDump";
CommandLine = /\/proc\/\d+\/(maps|environ)/ | RiskLevel := "Review_ProcEnum";
* | RiskLevel := "Unknown";
}
| TargetPID := replace("CommandLine", /.*\/proc\/(\d+)\/.*/, "\\1")
| groupBy(
[ComputerName, UserName, ImageFileName, CommandLine, RiskLevel, TargetPID],
function=[
count(aid, as=EventCount),
min(ContextTimeStamp, as=FirstSeen),
max(ContextTimeStamp, as=LastSeen)
]
)
| RiskLevel != "Unknown"
| sort(LastSeen, order=desc)
// Pattern 2: Known tool names detected via process image name
// Run as companion query:
// #event_simpleName = "ProcessRollup2"
// | ImageFileName = /(mimipenguin|lazagne|pacemaker)/i
// | groupBy([ComputerName, UserName, ImageFileName, CommandLine], function=count(aid, as=Hits))
// | sort(Hits, order=desc) CrowdStrike LogScale (CQL) detection for T1003.007 Proc Filesystem credential dumping. Queries ProcessRollup2 events for processes accessing /proc/<PID>/mem, /proc/<PID>/maps, and /proc/<PID>/environ, excludes known-safe debuggers, and classifies matches into risk tiers (KnownTool, HighRisk, Medium, Review). Extracts target PID from the command line and aggregates by host/user/process for analyst triage. A companion query surfaces known tool names via image file name matching.
Data Sources
Required Tables
False Positives & Tuning
- Security operations tooling such as Sysdig or Falco that read /proc entries during runtime security monitoring — these are common in cloud-native Linux environments and run with elevated privileges
- Linux kernel debugging sessions or kernel module development workflows where developers use gdb or custom tools that indirectly spawn processes accessing /proc/<PID>/mem
- Backup and snapshot agents (Veeam Linux agent, Commvault) that enumerate process memory mappings during live backup operations on busy Linux servers
Other platforms for T1003.007
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1MimiPenguin Linux Credential Dump
Expected signal: Auditd SYSCALL events for openat on /proc/<PID>/mem with exe=/usr/bin/python3. DeviceFileEvents (if MDE Linux agent present) for /proc/*/mem access by python3. Syslog entries if gnome-keyring or sshd crash due to memory access attempt.
- Test 2Manual /proc/mem Credential Extraction
Expected signal: Auditd SYSCALL openat events for /proc/<PID>/maps with exe=/bin/cat or /bin/bash. Process creation event for pgrep sshd. DeviceProcessEvents for pgrep and cat with /proc path arguments.
- Test 3LaZagne Linux Memory Module
Expected signal: DeviceProcessEvents for lazagne binary execution with 'memory' argument. Auditd execve event for /tmp/lazagne. Auditd openat events for /proc/*/mem if memory module runs. Network connection to GitHub for download (DeviceNetworkEvents).
References (6)
- https://attack.mitre.org/techniques/T1003/007/
- https://github.com/huntergregal/mimipenguin
- https://github.com/AlessandroZ/LaZagne
- https://security.stackexchange.com/questions/91040/what-is-proc-pid-mem
- https://www.slideshare.net/roottoor1/linux-credential-access-techniques
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1003.007/T1003.007.md
Unlock Pro Content
Get the full detection package for T1003.007 including response playbook, investigation guide, and atomic red team tests.