VORANT. Threat Intelligence Research Create a free account

Linux malware hides via process name masquerading

Published Vorant ratingroutine threat

Vorant's rating weighs the evidence in the report: confirmed exploitation, victims claimed, CVSS and EPSS, and how many sources agree. It rates the report, not your assets.

Attackers use prctl() and argv manipulation to disguise malicious Linux processes as legitimate kernel workers, evading detection by standard monitoring tools.

Sourceisc.sans.edu — open the original

What to check

Applies to
Whether this concerns you is not assessed; the names the report mentions are listed below.

Security researchers have demonstrated how Linux malware can masquerade as legitimate system processes by manipulating process names in /proc/<pid>/comm and /proc/<pid>/cmdline. The technique, catalogued as MITRE ATT&CK T1036, involves using the prctl(PR_SET_NAME) system call to alter the 'comm' field and overwriting the argv/environ memory region to spoof the command line visible to tools like ps and top. A proof-of-concept shows a user-mode process successfully disguising itself as '[kworker/0:1-events]', a common kernel worker thread name.

The technique has been observed in real-world campaigns, notably by the Velvet Ant Chinese APT group. While the masquerading defeats traditional process-listing tools, eBPF-based monitoring solutions like Kunai can detect the discrepancy between the reported process name and the actual executable path. Detection hinges on correlating the exec name with the command line — a mismatch indicates probable masquerading.

On Windows systems, similar masquerading is possible but more constrained. Attackers can modify the Process Environment Block (PEB) from user mode to alter ImagePathName and CommandLine fields visible to Task Manager and WMI queries. However, kernel-mode structures like EPROCESS.ImageFileName cannot be rewritten from user space, providing a more reliable indicator of the true process identity for kernel-level monitoring tools.

Mentioned in this report

Threat actors Velvet Ant
Campaigns Operation Highland

Detection guidance

Linux Process Masquerading as Kernel Worker Thread

ATT&CK T1036 · status experimental · needs linux process_creation logs · generated from the report, not run against telemetry

A behavioural hunt for the technique in general.

Detects user-mode processes whose reported name/command line mimics kernel worker thread naming conventions (e.g. [kworker/*], [ksoftirqd/*]) while having a real backing executable image path, indicating comm/cmdline spoofing rather than an actual kernel thread. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.

title: Linux Process Masquerading as Kernel Worker Thread
id: 06afcd81-3e42-55db-a990-95b8977f566a
status: experimental
logsource:
  category: process_creation
  product: linux
detection:
  selection_kernel_name_pattern:
    CommandLine|contains:
    - '[kworker/'
    - '[ksoftirqd/'
    - '[kthreadd'
    - '[migration/'
    - '[rcu_'
    - '[watchdog/'
  filter_real_kernel_thread:
    Image: ''
  condition: selection_kernel_name_pattern and not filter_real_kernel_thread
falsepositives:
- Telemetry pipelines that do not populate Image for genuine kernel threads may cause
  false positives; validate that Image resolves to a real user-space executable
- Custom monitoring agents that log kernel thread names with placeholder image paths
level: high
tags:
- attack.t1036
- attack.stealth
author: Vorant
fields:
- Image
- CommandLine
- ParentImage

Linux Process with Kernel-Thread-Style Name Executing from Writable Directory

ATT&CK T1036 · status experimental · needs linux process_creation logs · generated from the report, not run against telemetry

A behavioural hunt for the technique in general.

Detects execution of binaries from user-writable locations (/tmp, /var/tmp, /dev/shm) whose process name or command line is formatted to resemble a kernel worker thread, a strong indicator of masquerading rather than a legitimate kernel-spawned thread which never has a backing executable file. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.

title: Linux Process with Kernel-Thread-Style Name Executing from Writable Directory
id: 75a93da6-34c9-5a6d-b2fe-89cd9e0f6d92
status: experimental
logsource:
  category: process_creation
  product: linux
detection:
  selection_writable_path:
    Image|contains:
    - /tmp/
    - /var/tmp/
    - /dev/shm/
  selection_kernel_name:
    CommandLine|contains:
    - kworker
    - ksoftirqd
    - kthreadd
    - migration/
    - rcu_
    - watchdog/
  condition: selection_writable_path and selection_kernel_name
falsepositives:
- Legitimate diagnostic or testing tools deliberately named after kernel threads for
  benchmarking purposes
level: high
tags:
- attack.t1036
- attack.stealth
author: Vorant

Behavioural rules are generated from public reporting — validate in your environment before deploying.

Source reporting: https://isc.sans.edu/diary/rss/33102

Free public brief. The detections with Splunk SPL already written (plus Elastic and KQL where they apply) are in the app with a free account, no card. Slack alerts on the vendors you run come with the paid plans, and a new account gets three days of them.

What this brief leaves out

This page is the free tier: the write-up, the severity, the names. In the app the same report carries its detections (Splunk SPL already written, plus Elastic and Microsoft KQL where they apply) and live profiles of the actors and campaigns it names. The paid plans add the security research and news reporting the free tier leaves out.

It sits in a corpus of 16,433 reports from 149 sources, 661 of them written in the last seven days, and it grows through the day.

A new account starts with three days of all of it, no card, then keeps the government and CERT reporting free. Slack alerts are a paid-plan feature: name the vendors you run and Slack hears about the reports that touch them, not the rest of the week's. Nothing is charged unless you subscribe.

Create a free account   What it costs