Next Article in Journal
Evaluating the Energy and Thermal Performance of a Water-Cooled Condenser Using Reverse Osmosis Effluent in Residential Purifiers
Previous Article in Journal
A Hybrid Approach to Geomechanical Modeling of Mining Excavation Loads: Integration of Influence Function Model into FDM Simulations
Previous Article in Special Issue
Enhancement of the Generation Quality of Generative Linguistic Steganographic Texts by a Character-Based Diffusion Embedding Algorithm (CDEA)
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

MemCatcher: An In-Depth Analysis Approach to Detect In-Memory Malware

Department of Computer Science, Hanyang University, Seoul 04763, Republic of Korea
*
Author to whom correspondence should be addressed.
Appl. Sci. 2025, 15(21), 11800; https://doi.org/10.3390/app152111800
Submission received: 11 October 2025 / Revised: 30 October 2025 / Accepted: 3 November 2025 / Published: 5 November 2025
(This article belongs to the Special Issue Cyber Security and Software Engineering)

Abstract

Recent advancements in cyber threats have led to increasingly sophisticated attack methods that evade traditional malware detection systems. In-memory malware, a particularly challenging variant, operates by modifying volatile memory, leaving minimal traces on secondary storage. This paper presents an in-depth analysis of in-memory malware characteristics, behavior, and evasion strategies. We propose “MemCatcher”, a novel detection algorithm that integrates real-time system activity monitoring and memory analysis to effectively identify these threats from the Windows 10 system. Experimental validation using real-world and synthetic in-memory malware samples demonstrates the effectiveness of our approach. Additionally, we analyze evasion tactics using “Volatility3” and “PEview”, providing insights into countermeasures. Future work will focus on enhancing in-memory malware detection using “Processor-in-Memory (PIM) hardware”.

1. Introduction

The increasing complexity and invisibility of modern malware present serious difficulties for conventional security mechanisms. Traditional detection systems, which typically depend on recognizing known patterns or analyzing files, often struggle to address advanced threats that utilize memory and bypass files entirely. The growing gap has pushed the cybersecurity research community to explore new detection methods that address the weaknesses of traditional technologies and keep pace with the evolving nature of in-memory malware. Among these threats, “in-memory malware” (also known as fileless malware) poses a unique challenge because it can execute directly in volatile memory without leaving disk artifacts. This characteristic enables it to bypass signature-based detection mechanisms and complicates forensic investigations [1,2,3,4,5].
In-memory malware operates by injecting malicious code into system memory, often leveraging legitimate tools such as “PowerShell” and “Windows Management Instrumentation (WMI)”. Since it leaves no traces in persistent storage, its detection requires specialized forensic techniques [6,7,8]. In-memory attacks are a subtype of low-observable characteristics (LOC) attacks, a class of group attacks that is difficult to detect. Many LOC attacks leverage PowerShell’s capabilities. The PowerShell uses a command-line shell and associated scripting language, and can grant users accesses to virtually everything and anything in Windows [9]. Figure 1 provides an overview of in-memory malware operation.
Despite the growing emphasis on detecting in-memory malware, most existing approaches rely on postmortem memory analysis. Tools such as Volatility and Rekall operate after acquiring a full or partial memory dump, which introduces delays and makes them unsuitable for detecting ephemeral or rapidly evolving threats [10]. Recent frameworks like LIFT (Lightweight, Incremental, Federated Techniques) aim to detect threats in near real time by leveraging federated learning across devices. However, LIFT mainly focuses on system behavior features (such as CPU usage, process creation, and network activity) and doesn’t directly analyze memory data, which makes it less effective at detecting advanced malware that doesn’t leave files or exists only in memory. Additionally, some earlier studies [11,12] mainly look at finding malware by analyzing data after it has been captured, turning memory dumps into image or table formats before using machine learning. Similarly, other works [13,14] focus on examining fixed parts of programs or behavior from memory snapshots, a task that is not possible in real-time systems.
Recent surveys and evaluations indicate that memory forensics for Windows endpoints predominantly prioritizes post-acquisition procedures and resource-intensive learning pipelines, resulting in prolonged time-to-signal and increased operational costs [15,16,17]. Dump-centric classifiers, such as models trained on curated memory images, demonstrate high accuracy; nevertheless, they presuppose the availability of a full RAM image and do not provide live, pre-dump triage on endpoints [18]. Sequence-based detectors like GRU–GAN enhance dynamic analysis but fall outside the scope of RAM forensics, potentially overlooking exclusively in-memory code injections when behavior traces are insufficient [19].
Multi-snapshot techniques, such as Multiple-Memory-Images (MMI), enhance detection accuracy for discrete samples; nevertheless, they impose significant time and storage overhead by necessitating the processing of multiple large VMEM files per case, rendering them unfeasible for prompt incident response [20]. Automated toolchains frequently prioritize processes based on network activity and rely on external trust services, which might result in blind spots or labeling errors [21]. Fileless-focused VAD feature pipelines, such as MemInspect, necessitate complete memory images and outdated tool stacks, resulting in increased latency and maintenance challenges [22]. Backup-centric defenses focus on persistence or recovery rather than live, volatile artifacts [23], while IoT-specific frameworks, although informative for lightweight detection, pertain to domains with limitations that do not completely correspond with enterprise Windows hosts [24]. The research highlights a deficiency in lightweight, pre-dump, endpoint-friendly RAM inspection that limits scope prior to extensive acquisition and analysis [15,16,17].
To address this limitation, we present MemCatcher, a streamlined live-system technique that examines raw memory segments prior to any comprehensive dump, identifies Windows service processes directly from the Task Manager interface, and systematically prioritizes suspicious targets for targeted acquisition and systematic analysis using volatility3 and PEview. By advancing evaluation, our pipeline reduces storage and latency compared to dump-then-analyze methodologies [15,18,20,22], mitigates excessive dependence on network activity heuristics or external credibility [21], and enhances the detection of fileless behavior that backup- or network-exclusive strategies might overlook [23,24]. All experiments were performed on a Windows 10 endpoint within an Oracle VirtualBox environment to simulate a realistic analysis configuration while assuring safety and repeatability for in-memory malware assessment.

Main Contributions

This study aims to address the critical gap as mentioned in Section Research Gap by proposing a lightweight model for a thorough analysis of in-memory malware, highlighting their diverse characteristics, exploring their underlying mechanisms, and showing the feasibility of automated scripts to detect in-memory malware. The primary contributions of this paper are summarized below:
  • We built a MemCatcher tool to analyze raw-memory regions on live systems before any dumping occurs, which retrieve benign and malicious service processes from the Windows system task manager.
  • After identifying suspicious processes, we examined the system’s memory dump and specific malicious processes to detect harmful traces.
  • Using the volatility3 and PEview tools, we have done an in-depth analysis and assessed the results, and identified suspicious processes.
  • We developed automated scripts to investigate suspicious processes and also conducted experiments to show the validation of suspicious service process detection.
To the best of our knowledge, this technique represents a novel contribution to the field of memory forensics and malware detection on Windows 10. The rest of the paper are structured as follows: An outline of related works on memory malware detection is provided in Section 2. Section 3 covers the proposed approach details in depth and the working of MemCatcher along with the string matching. In Section 4, the results and analysis are discussed. Finally, the paper is concluded and further research is highlighted in Section 5.

2. Related Work

The effectiveness of conventional security measures is constantly being challenged in today’s closely connected digital environment. Memory malware has stood out among them as a particularly potent opponent, focusing on sneaky strategies that evade conventional detection techniques. Recent studies have shed light on these advanced malware strains, revealing their complexities, strategies, and potential effects. The examination of volatile memory is fundamental to sophisticated malware detection methods. It provides insight into obfuscated and memory-based malware that circumvents conventional signature-based techniques. Real-time detection methodologies, although theoretically effective, may encounter obstacles related to resource allocation and scalability. Enhancing computational pipelines is crucial for extensive implementation.
To detect in-memory malware, memory forensics techniques have been widely used. Naeem et al. [25] employed hybrid feature descriptors and a stacked ensemble of CNNs and MLPs from multiple memory dumps, with an accuracy of up to 99.8%. The model is platform-agnostic and proficient in detecting obfuscated malware; yet, it necessitates considerable computational resources because it collects memory dumps periodically, constraining its implementation in resource-limited settings. Bozkir et al. [26] converted memory dumps into RGB images and used manifold learning to identify patterns. Methods such as UMAP and Random Forest classifiers were employed, attaining 96.39% accuracy in malware detection. The visual method is resilient to obfuscation; nevertheless, its computational expense restricts scalability for real-time applications.
In order to enable in-guest monitoring and profiling through hypervisors, Hsiao et al. [27] suggested a novel concept for a hardware-assisted memory redirection technique. This method reduces performance overhead and improves transparency, rendering it appropriate for extensive cloud settings. Nonetheless, its dependence on certain hardware and intricate implementation may obstruct deployment to identify anti-forensic malware that seeks to alter kernel structures and memory regions. Palutke et al. [28] presented detection methods utilizing Rekall plugins to discover concealed memory areas. The research is innovative in revealing sophisticated evasion methods but necessitates manual operations of tools and manual analysis.
Additionally, some studies focused on detecting variation from typical behavior, Lyles et al. [29] uses the Volatility framework to extract the processes and classified it using machine learning model. Their method effectively identifies fileless malware by focusing on behavioral anomalies. Nonetheless, its dependence on high-quality training data and the incapacity to generalize to novel behaviors present obstacles. Carrier et al. [30] devised a system for the classification of malware utilizing memory dumps. The methodology achieves excellent classification accuracy with the extracted process features of Windows systems. The method is applicable to forensic investigations but depends on specific feature sets, limiting its adaptability to emerging threats. Subsequently, VolMemLyzer [31] launched a Python version 3.11.7 -based utility for the extraction of essential kernel-level attributes, attaining elevated true positive rates in malware classification. Their software enables effective feature engineering but is restricted by its reliance on predefined feature sets, hindering adaptability to novel malware variants.

Research Gap

The challenge that previous approaches have not addressed is identifying malware within a computer’s memory during active operation, using learning methodologies independent of external tools or intricate behavioral patterns. Table 1 summarizes the prior methodologies proposed by the researchers and outlines the limitations of the work. Current real-time solutions can be divided into two main types: those that analyze past data, which require memory dumps and offline checks, and those that rely solely on basic knowledge of the host or general rules, using virtualization or external technologies. In other words, existing real-time solutions are either:
  • High computational overheads: The conventional method for memory forensics is to dump the entire system’s memory before conducting an investigation. The problem arises when memory stores enormous amounts of data, making the investigation of each system more time-consuming.
  • Manual forensic efforts: No prior identification makes it easier to find infected malicious Windows service processes that are created by in-memory malware among the running processes. Identifying a malicious application that operates solely in virtual memory might be challenging.
  • Lack of real-time detection: When malicious software exists in the system, the malicious process can be difficult to be identified because it disguises as a legitimate Windows service process.
Our proposed research aims to solve these challenges by examining the effectiveness of directly examining the system’s active processes to enhance the detection of in-memory malware.

3. Our Proposed Method

This section outlines our approach for detecting in-memory malware processes within the targeted Windows operating system. This paper proposes two algorithms: MemCatcher, which focuses on detecting suspicious processes across all running processes in the system, and StringMatcher, which aims to provide deep insight into suspicious processes to identify code-section artifacts associated with malicious in-memory malware.
The framework’s process comprises two main phases: Phase 1, as shown in Figure 2 and Figure 3. The primary purpose of the MemCatcher algorithm is to identify suspicious processes. Phase 2 is to identify malicious code residing in the process’s virtual memory. This is achieved by locating the hidden injected code data within the code or text section of suspected processes. If a process is identified as suspicious based on static characteristics in phase 1, the StringMatcher algorithm examines and compares strings from the code segment of suspicious processes to detect any modifications.
This section outlines our approach for detecting in-memory malware processes within the targeted Windows operating system. We propose two algorithms: MemCatcher, which identifies suspicious processes among all running processes, and StringMatcher, which performs an in-depth analysis of those suspects to reveal code-section artifacts associated with malicious in-memory activity. The framework operates in two phases (see Figure 2 and Figure 3). The purpose of Phase 1 (MemCatcher) is to surface suspicious processes for deeper inspection.
Within this framework, MemCatcher calculates a per-process suspicion factor utilizing lightweight intrinsic runtime data, such as execution from user-writable folders, PID/PPID abnormalities, atypical memory-thread profiles, irregularities in loaded modules, and I/O patterns suggestive of registry interaction. This evaluation highlights a brief list of potential issues for all currently running processes. Phase 2 aims to identify malicious code residing in a process’s virtual memory by locating hidden, injected data within the code or text sections of suspected processes. If a process is flagged in Phase 1, StringMatcher examines and compares discriminative strings from its code segment against clean baselines to detect section-level modifications.
More specifically, StringMatcher conducts section-aware verification by extracting distinctive strings and bytes from each code or text section of Windows services and comparing them with legitimate Windows system baselines to identify injected or altered regions. Significantly, our model includes registry-backed persistence: the malware retains a binary image in the Windows Registry, and a loader regenerates it at startup, thereby reinfecting the system even after reboot. StringMatcher correlates section anomalies with registry-access patterns, linking in-memory artifacts to this persistence mechanism and distinguishing genuine injections from benign counterparts.
Following a general overview of our framework, we will explain the design and implementation of Phase 1 and Phase 2, providing a comprehensive explanation of our proposed algorithm, which will be explored further in Section 3.1 and Section 3.2.

3.1. Phase 1: Suspicious Process Detection

The methodology employed consists of four steps, as illustrated in Figure 2, where the analysis involves setting up a Windows virtual environment using VirtualBox. This environment is used to search for in-memory malware features in potentially malicious processes that persistently run on the system.
  • Step 1: During the initial round of analysis and detection, we initiated the Clean Windows system and captured a snapshot of the benign process that was currently running in the system’s memory.
  • Step 2: After setting the environment to initiate the analysis, we installed in-memory malware executable file samples.
  • Step 3: To search for artifacts resulting from these malware samples in system memory, it is essential to reboot the system because the malware retains a binary image in the Windows Registry. Executable files engage in harmful operations within specific system services shortly after the system is rebooted.
  • Step 4: Detecting potentially harmful services and pinpointing their critical characteristics within in-memory malware requires considerable efforts. The Python-based script MemCatcher, which is explained in Section 3.1.1 MemCatcher Algorithm, starts iterating over the currently running processes in the task manager to look for suspicious processes initiated by the malicious samples. MemCatcher conducts iterative scans and retrievals of each service process occurrence to discern essential details or features such as its name, process identifier (PID), parent process identifier (PPID), status, threads, disk, and memory usage.
  • Step 5: After obtaining all active processes described in Step 4, a CSV file will be created to save the extracted characteristics of suspicious and benign services. This report is required for an in-depth analysis, as detailed in the StringMatcher Section 3.2.1 StringMatcher Algorithm on the identified suspicious processes.

3.1.1. MemCatcher Algorithm

As previously discussed in steps 4 and 5 in Section 3.1, this subsection specifies the detailed implementation of the MemCatcher technique. This algorithm’s primary objective is to gather and export specific features of all running processes on the operating system.
The structure of the MemCatcher script follows a rule-based approach to detecting suspicious processes. In the initial step, we identify suspicious processes based on parent/child relationships by extracting features such as the Parent Process ID (PPID) for each process. Secondly, we have to keep the original system processes linked to Microsoft Windows. We cannot delete or stop the original system processes, such as svchost.exe, so if a process is stopped, it is considered a suspicious service process.
The third criterion emphasizes that the disk value, specifically the process input/output (PIO) count, must not be empty, except for the Windows system process known as the System Idle Process.
As displayed in the Algorithm 1, the algorithm extracts significant characteristics, including the name, PID (process ID), PPID (parent process ID), status, memory usage, session name, and session number. We ran the MemCatcher script on the compromised Windows system to export a list of suspicious processes alongside benign processes. Below are the equations that explain the mathematical representation of the MemCatcher algorithm.
Let the set of all processes on the system be:
P = { p 1 , p 2 , , p n }
where the P is the set of all the n processes running on the Windows system.
For each process p i P , extract the attributes:
info ( p ) = ( name ( p ) , pid ( p ) , status ( p ) , pio , threads ( p ) , mem_usage ( p ) , ppid ( p ) )
where info(p) is the set of seven important feature attributes extracted from the running windows processes on the system.
Let E be the set of processes that raise exceptions:
E = { p P exception on access }
where E is the set of processes that fall into the exception phase while extracting the running processes from the system.
Then the final set of valid process information:
Processes = info ( p ) | p P E
Write the list to a CSV file:
WriteToCSV ( Processes , processes . csv )
The Equation (1) defines the complete set P of processes running on the Windows system. Equation (2) models the extraction of relevant attributes from a given process p into a structured tuple, including the name, PID, parent PID, status, memory usage, thread count, and a constant disk label (“pio”). Equation (3) defines the set E containing processes for which attribute extraction fails due to access errors, such as NoSuchProcess or AccessDenied. Equation (4) filters out the failed processes by computing the set difference P E , retaining only accessible and valid processes. Finally, Equation (5) represents the step of writing the filtered list to a CSV file named processes.csv. Together, these equations represent a complete mathematical abstraction of the MemCatcher process extraction algorithm.
Initially, we ran the MemCatcher script directly in the Jupyter notebook version 7.2.2 by importing the initial Windows APIs. However, this process was time-consuming and required the IDE to run the script on every Windows system. To overcome this limitation, we exported the script as MemCatcher.exe, which is later explained in the Section 4.1.
Algorithm 1: MemCatcher Processes Extraction for Windows OS
  • Data: Windows Operating System
  • Result: CSV file containing process information;
  • Initialize an empty list processes;
  • For each running process do:
  • Try:
  • name← process name;
  • pid ← process ID (PID);
  • ppid ← parent process ID (PPID);
  • Status ← stopped or running;
  • mem_usage ← memory usage in kilobytes;
  • Disk ← ‘Programmed input/output(pio)’;
  • Threads ← ‘running within a process’;
  • processes.append({ ‘Image Name’: name, ‘PID’: pid, ‘Status’: Status, ‘Disk’: Disk, ‘Threads’: threads, ‘Memory Usage (KB)’: mem_usage, ‘PPID’: ppid });
  • Catch NoSuchProcess, AccessDenied, ZombieProcess:
  • Write the list processes to a CSV file ‘processes.csv’

3.2. Phase 2: In-Depth Analysis

In phase 1, feature values for all active processes, both suspicious and benign, are extracted and stored in a CSV file. In phase 2, suspicious processes listed in the CSV file are analyzed in detail, as depicted in Figure 3. The analysis was carried out using the conventional method of memory forensics, as recommended by multiple researchers [33,34,35].
A full snapshot of the previously infected Windows system has been obtained in order to investigate potentially harmful processes. To acquire the virtual memory of the system named Win10x64mal.mem, the Forensic Toolkit (FTK) imager tool is used [36,37]. Following the acquisition of the virtual memory dump, the subsequent phase in the identification of harmful actions, specifically in the field of memory forensics, involves the examination of individual programs within the memory dump. In our research, we used the Volatility3 tool, developed by the Volatility Foundation [38], among other current approaches [37,39,40,41,42] to examine the memory dump file of a system.
The subsequent phase involves the utilization of the different volatility3 plugin commands ‘windows.pslist’ to retrieve static characteristics of processes, as well as to capture information pertaining to the services that are operating on a given system. The analysis of the active processes list, which provides a hierarchical representation of the parent-child relationship between processes, may uncover services that are potentially harmful in phase 1. An example of this would be when the svchost.exe process is not functioning as a subordinate process under the services.exe process.
After suspicious processes have been identified in phase 1, our focus shifts to examining all the code sections within these infected service processes. For a comprehensive examination of processes, it is crucial to consider memory segments that may retain injected code within a memory dump file. In order to accomplish this task, we have undertaken the action of capturing the memory dump of identified suspicious processes and afterward began an investigation of these process dumps using PEviewer version 3.5.0.25 [43,44,45,46]. We compare the code sections of the suspicious processes with those of known benign process dumps, as detailed in the upcoming Section 3.2.1 StringMatcher Algorithm, to detect the presence of malicious code within the suspicious processes.

3.2.1. StringMatcher Algorithm

The concept of performing string matching on suspicious processes stems from the immutable nature of the stored code section in every benign service process on a Windows operating system, which consistently remains unchanged.
We have continued this analysis by implementing some of the previously mentioned actions in Section 3.2, such as dumping the process’s memory and viewing its contents using the PEviwer version 3.5.0.25 tool.
We found that the initial indicator of a suspicious service process had a different file offset of entry point and a different parent process ID (PPID), as shown in Figure 4 and Figure 5.
First, we have exported 512 bytes of the first hexadecimal values in the code section for every benign and suspicious service process and stored them in a CSV file to continue the string matching classification process. The service processes in the exported CSV file, which contains two primary features: the PID and hexadecimal values extracted from a part of the code section. We have predefined certain parameters to facilitate similarity analysis. Below are the equations that explain the mathematical representation of the StringMatcher algorithm.
Let the dataset be the following:
D = { ( s i , PID i ) | i = 1 , 2 , , n }
where s i is a string representing a process and PID i is its process ID.
Let s ˜ i = N ( s i ) and U = { s ˜ 1 , , s ˜ n } . Row-level classification is established as follows:
c i = benign , if s ˜ i = r , malicious , otherwise .
With I p = { i : PID i = p } , the PID-level classification is established as follows:
C ( p ) = malicious , if i I p : c i = malicious , benign , otherwise .
The final output set is as follows:
C = { ( PID i , C ( PID i ) ) i = 1 , , n } .
The Equation (6) defines the dataset D as a collection of strings and their corresponding process IDs. Equation (7) applies a row-level classification of a string based on the normalized string matching method. Equation (8) isolates the reference string and tries to find the exact matching string PID for the classification. Finally, Equation (9) forms the output as a set of PID-to-label mappings. These equations collectively express the logic of string classification for finding the benign and malicious Windows service processes.
We have initialized the StringMatcher method using the simple string-matching method in Python. The initial step involved normalizing the string designated for text embedding to the ASCII format. Each raw string is initially confined to text and may be optionally stripped of leading and trailing whitespace. Missing values are assigned to the empty string to provide complete coverage.
The algorithm subsequently selects a standard reference for normalization if one is provided; otherwise, it automatically selects the most common normalized value from the dataset. Step 2 of the Algorithm 2 each row is designated as benign just if its normalized string precisely corresponds to this reference; otherwise, it is classified as malicious. For PID-level evaluations, Step 3 of the Algorithm 2, we employ moderate aggregation criteria: A PID is classified as malicious if any of its rows are malicious, and it is considered benign only if all rows are benign. The method is entirely predictable, operates in linear time with respect to the number of rows, and uses minimal memory proportional to the number of unique normalized strings, resulting in a straightforward and transparent string-matching pipeline.
Algorithm 2: StringMatcher Classification for Benign and Malicious Processes
Applsci 15 11800 i001

4. Results and Discussion

This section describes experiments and their results. Section 4.1 discusses the experimental setup, including dataset details in Section 4.2. The Section 4.3 provides a detailed explanation of the evaluation results, which are based on the following three research questions:
  • RQ1: Is the proposed method capable of detecting suspicious svchost processes? In this RQ, we aim to explore whether the proposed method, MemCatcher, can detect all suspicious processes running on Windows that exhibit known in-memory malware characteristics.
  • RQ2: Do the code sections of processes differ between malicious processes and benign svchost processes?
    The objective of this RQ is to analyze code sections across various service processes using the StringMatcher algorithm and classify them as either malicious or benign.
  • RQ3: Is the proposed method attainable in real environments? This RQ discusses our proposed method and its significance in detecting in-memory malware among various running processes on the Windows operating system.

4.1. Experimental Setup

We conducted experimental investigations using Windows 10 64-bit on a VirtualBox virtual machine. An Intel(R) Core(TM) i5-4460 CPU, with a processor speed of 3.20 GHz and 10 gigabytes of RAM, powers the workstation. We used the Anaconda Python distribution and Jupyter Notebook for all experiments, incorporating essential libraries such as psutil, pywin32, and psutil for the implementation of MemCatcher. Following the design of the MemCatcher script, the subsequent setup should prioritize optimizing its efficiency and ensuring platform independence for execution on any Windows operating system. To eliminate the constraints of platform and IDE dependencies, we have attempted to export the MemCatcher script as an .exe file using the “Auto Py To Exe” tool. The Memcatcher.exe is able to extract and store all the running Windows system processes, as shown in Figure A1, Figure A2 and Figure A3. Refer to Table 2 for comprehensive hardware and software specifications for phase 1.
We conducted the phase 2 experiment using the same specifications as for Windows 10. Before starting the string-matching process, we used a tool such as FTK Imager to capture the infected system’s virtual memory. We then used Volatility 3 to dump the binary file of a specific process and verified the dump using PEViewer. We implemented the StringMatcher design in Python and used the Anaconda distribution for all research, incorporating essential libraries such as NumPy, Pandas, and Scikit-Learn. The precise hardware and software specs for phase 2 are detailed in Table 3.
We will go into detail about MemCatcher, which aims to systematically enumerate all active Windows processes and persist rich feature extraction, such as PID, process name, executable path, integrity level, full command line, parent PID, and disk I/O counts, via a self-contained executable. To eliminate interpreter and IDE dependencies and ensure portability across Windows hosts, we packaged the implementation with Auto-Py-to-Exe, enabling execution without a local Python installation.
On the other hand, the StringMatcher phase centered on forensic acquisition and analysis: we captured volatile memory from an infected VM, extracted process-resident binaries for inspection, verified Portable Executable (PE) integrity, and evaluated both deterministic string-matching and learned-similarity baselines implemented in Python, NumPy, Pandas, and scikit-learn for model-based comparisons.

4.2. Dataset Details

The most recent memory malware dataset is provided by CIC-MalMem-2022, an open-source dataset from the Canadian Institute of Cybersecurity (UNB) [30]. The dataset includes three main categories of malware: Trojan horses, ransomware, and spyware. The dataset, however, only includes the feature record of 58,556 samples, with an equal distribution of 29,298 benign and 29,298 malicious samples in a CSV file, which is not helpful for our research experiment because of the following:
  • The actual binary files are not provided.
  • Only a part of the provided information is generated from in-memory malware. They included all the malware samples that exploit memory-based vulnerabilities. So, some of the samples are not fileless malware.
This paper utilizes a dataset of malicious files obtained from the AhnLab-V3 report, as detailed in Table 4. These files relate to additional malicious attacks and in-memory malware processes.
Our primary objective is to identify the characteristics of in-memory malware across all provided data. Our proposed method, MemCatcher, identified two significant cases of in-memory malware, resulting from the Windows operating system deceiving the svchost.exe processes.
Each sample is uniquely identified by its SHA-256 hash and annotated with the file type of mostly PE executables, plus one DLL and one PowerShell script. The size of these files ranges from 570 bytes to 5 MB, and they are categorized into malware families such as Downloader and Spyware, which include the LokiBot botnet or spyware, the Rebhip spyware or worm, ransomware, backdoors, and their observed in-memory behaviors. The in-memory characteristics consistently include code injection into trusted system processes, creation of masquerading system binaries, and persistence via the Windows registry or malicious services. Several samples specifically target svchost.exe, dllhost.exe, explorer.exe, or processes labeled mci.exe and server.exe, reflecting a strategy of hiding within legitimate hosts to evade file-based detection.
Our analysis highlights representative flows spanning the backdoor and spyware categories. In the first, a staged injector writes and launches a component named 932.mci.exe, then injects it into the victim system’s service.exe process. In the second, closely related pattern, the injector dispenses with staging; after restarting, it directly spawns a counterfeit svchost.exe and establishes persistence by modifying registry keys.
These malicious processes, as mentioned in Table 4, fall into two separate malware categories: backdoors and spyware. Initially, a malicious process aims to write the process memory name as 932mci.exe and inject it into the victim system’s Server.exe process. After injection, the malicious injector system creates a fake svchost.exe process on the victim machine when the operating system restarts. Once the operating system restarts, the second malicious process acts as an injector, directly generating the false svchost.exe process and persisting in the registry of the victim machine.

4.3. Evaluation Results

4.3.1. RQ1: MemCatcher Results of Detecting Suspicious Svchost Processes

We developed the MemCatcher algorithm to detect suspicious processes operating on the Windows system, as detailed in Section MemCatcher Algorithm, which aligns with the results presented in this RQ. We used the designated rule-based detection method to distinguish between benign and suspicious processes.
As demonstrated in Table 5, the initial Windows service process, services.exe, serves as the parent process under which each svchost.exe process operates. For instance, process IDs 700 and 344 indicate that their parent process is 572, which corresponds to the exact process ID of services.exe. As a result, we classify these processes as benign. Additionally, the status of these processes is running, and the disk parameter, which reflects the process input/output (pio), is not empty, thereby satisfying all criteria for benign processes.
However, the process IDs 5388 and 6580 do not operate under the same parent ID 572 in this case. The process ID 5388 is a newly identified suspicious process, with its parent process being the malicious Server.exe which has the process ID 4340. The other parameter indicates whether this process is stopped and the disk’s input/output is empty of activity, which entirely negates the criteria for being classified as a benign process. The system does not include Process 6580 unique parent process ID among its active processes, and it is currently in a stopped state with no disk activity. We have also seen the memory usage of the processes, even for the suspicious ones that exhibit no disk activity; the space occupied by those processes seems questionable, as shown in Table 5.
Additionally, we have detected the malicious processes mentioned in Section 4.2 including Server.exe, which was discussed before in this section, generates new processes such as svchost.exe as shown in the Figure 6. Furthermore, we have detected a malicious process named 932mci.exe that is currently active on the system. Table 5 displays the disk information for each process in detail. We have uploaded all the results and the MemCatcher.exe file to the GitHub web repository [47] for verification.

4.3.2. RQ2: StringMatcher Evaluation Result to Analyze the Code Section for Suspicious Service Processes

Based on our second research question, this subsection presents the comprehensive results of our further investigation into the StringMatcher algorithm discussed in Section 3.2.1 StringMatcher Algorithm. During this investigation, we attempted to classify each suspicious service process as either benign or malicious, in accordance with Windows operating system rules. To detect malicious processes, we conducted classification based on a Simple string matching method between the strings in the dataset based on the standard reference for the string. Figure 7 illustrates the classification of each process string for the Windows svchost.exe process.

4.3.3. RQ3: Is the Proposed Method Attainable in Real Environments? Discussion

The current research employs a Python-based MemCatcher script that utilizes a rule-based method for detecting suspicious processes automatically. By directly executing this script on the Windows operating system, it exposes the characteristics of in-memory malware processes before memory dumping, which is a challenging task that requires significant time to analyze each process individually. In the proposed approach, whenever suspicious activity is detected, the memory is dumped, and the resulting dump data is assessed using the StringMatcher technique to determine whether it aligns with the specific attributes of a benign service process. The final report provides crucial forensic details regarding any suspicious in-memory malware processes identified within the memory, helping to assess the risk and mitigate its potential impact.
Our detection pipeline functions in linear time, as each input element is processed exactly once with constant work per item: MemCatcher executes a single pass over processes with fixed metadata queries and streamed writes, while StringMatcher normalizes each string and conducts a constant-time equality verification against a single reference. Thus, the overall runtime is proportional to O ( P ) for the number of processes and O ( T + N ) for string data, with constant working memory required beyond the data container and a minimal hash map for mode selection.
We validate this assertion through scaling experiments, runtime versus N and total characters T, high R 2 linear regressions, bootstrapped 95 % confidence intervals for runtime and throughput, and peak-memory curves that remain stable under chunked streaming, as empirical runtime: 3.51 ms, empirical memory: current = 0.013 MB, peak = 0.031 MB, data frame memory: 0.507 MB. illustrating predictable and efficient performance on large-scale memory data.
Generally, as shown in Table 6, the majority of conventional techniques attain satisfactory accuracy just following a complete memory dump and at a medium to high resource expenditure [25,26,29,30,31]. These are effective for post-hoc forensics but do not identify threats in real-time during system response. The one real-time solution in the list [27], relies on hardware/VMI support, which constrains its deployability despite its minimal latency and the studies by [32] are predominantly qualitative.
In comparison, the Proposed (Ours) row presents the sole combination of high effectiveness, real-time capability (pre-dump), and low resource consumption on standard Windows systems. This stems from the design: MemCatcher performs a single, efficient snapshot of active processes and transmits only critical metadata, thereby minimizing CPU and RAM usage, whereas simple StringMatcher employs deterministic normalization and precise classification of suspicious and legitimate service processes. The pipeline operates in linear time with respect to the volume of data processed, sustains a nearly constant working set through streaming, and is delivered as a single executable without the need for specialized hardware, a Python runtime, or extended acquisition periods.
In summary, MemCatcher combined with StringMatcher achieves an optimal balance between offline machine learning and forensics, which offers high accuracy but lacks real-time capabilities, and hardware-assisted monitors, which provide real-time functionality but are cumbersome and intricate. This combination enables actionable, pre-dump detection with consistently low overhead, while maintaining low latency and resource usage suitable for ongoing operation.

5. Conclusions and Future Work

In this paper, we introduce MemCatcher, a highly efficient rule-based in-memory malware detection technique. By focusing on process injection attacks, we demonstrate that automated analysis is a more effective means of identifying such threats. Malicious service processes execute entirely in the system’s memory via an active parent-child structure, making them difficult to detect with traditional methods. MemCatcher addresses this challenge by providing a platform-independent solution for the Windows operating system. This novel approach significantly reduces the time and resources required for detection, while also ensuring compatibility with other operating systems like Linux, iOS, and mobile devices.
Our research lab has provided a comprehensive dataset to validate the effectiveness of our proposed method. The results were evaluated using relevant metrics, confirming MemCatcher’s high accuracy and efficiency. This research marks a significant step towards developing a new automated system capable of addressing in-memory malware challenges. Moreover, the suggested methodology can be expanded to incorporate additional tools, such as StringMatcher, to create a unified automated strategy for examining active processes on the system. This will further enhance the overall effectiveness of our detection techniques.

Author Contributions

Conceptualization, E.G.I.; Methodology, A.R.; Software, A.R.; Validation, E.G.I.; Writing – original draft, A.R.; Writing – review & editing, E.G.I. All authors have read and agreed to the published version of the manuscript.

Funding

This work was supported by the National Research Foundation (NRF) grant (No. NRF-2024S1A5C3A02043653) and the Institute of Information & Communications Technology Planning & Evaluation (IITP) grant (No. RS-2021-II210590) funded by the Korea Government (MSIT).

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

The original contributions presented in this study are included in the article. Further inquiries can be directed to the corresponding author.

Conflicts of Interest

The authors declare no conflicts of interest.

Appendix A

Figure A1. Proposed MemCatcher portal for extracting all the processes running on Windows operating system.
Figure A1. Proposed MemCatcher portal for extracting all the processes running on Windows operating system.
Applsci 15 11800 g0a1
Figure A2. Storing the running processes information in the CSV file.
Figure A2. Storing the running processes information in the CSV file.
Applsci 15 11800 g0a2
Figure A3. After successful execution of MemCatcher for feature extraction of processes the generated confirmation message that all the information is successfully stored.
Figure A3. After successful execution of MemCatcher for feature extraction of processes the generated confirmation message that all the information is successfully stored.
Applsci 15 11800 g0a3

References

  1. Kumar, A.; Choi, B.J.; Kuppusamy, K.; Aghila, G. Malware Attacks: Dimensions, Impact, and Defenses. In Advances in Nature-Inspired Cyber Security and Resilience; Springer: Cham, Switzerland, 2021; pp. 157–179. [Google Scholar]
  2. Nuangpookka, P.; Mengistu, Z.; Bafail, G. Fileless malware and programmatic method of detection. J. Comput. Sci. Coll. 2020, 36, 161–162. [Google Scholar]
  3. Bucevschi, A.G.; Balan, G.; Prelipcean, D.B. Preventing file-less attacks with machine learning techniques. In Proceedings of the 2019 21st International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), Timisoara, Romania, 4–7 September 2019; pp. 248–252. [Google Scholar]
  4. Bajpai, P.; Enbody, R. Memory Forensics Against Ransomware. In Proceedings of the 2020 International Conference on Cyber Security and Protection of Digital Services (Cyber Security), Dublin, Ireland, 15–19 June 2020; pp. 1–8. [Google Scholar] [CrossRef]
  5. Beaman, C.; Barkworth, A.; Akande, T.D.; Hakak, S.; Khan, M.K. Ransomware: Recent advances, analysis, challenges and future research directions. Comput. Secur. 2021, 111, 102490. [Google Scholar] [CrossRef] [PubMed]
  6. Sanjay, B.; Rakshith, D.; Akash, R.; Hegde, V.V. An approach to detect fileless malware and defend its evasive mechanisms. In Proceedings of the 2018 3rd International Conference on Computational Systems and Information Technology for Sustainable Solutions (CSITSS), Bengaluru, India, 20–22 December 2018; pp. 234–239. [Google Scholar]
  7. Saad, S.; Mahmood, F.; Briguglio, W.; Elmiligi, H. Jsless: A tale of a fileless javascript memory-resident malware. In Proceedings of the Information Security Practice and Experience: 15th International Conference, ISPEC 2019, Kuala Lumpur, Malaysia, 26–28 November 2019; Proceedings 15. Springer: Cham, Switzerland, 2019; pp. 113–131. [Google Scholar]
  8. Lee, G.; Shim, S.; Cho, B.; Kim, T.; Kim, K. Fileless cyberattacks: Analysis and classification. ETRI J. 2021, 43, 332–343. [Google Scholar] [CrossRef]
  9. Sudhakar; Kumar, S. An emerging threat Fileless malware: A survey and research challenges. Cybersecurity 2020, 3, 1. [Google Scholar] [CrossRef]
  10. Intezer. Memory Analysis Forensics Tools: A Practical Guide, 2021. Available online: https://intezer.com/blog/memory-analysis-forensic-tools/ (accessed on 7 February 2023).
  11. Shah, S.S.H.; Ahmad, A.R.; Jamil, N.; Khan, A.u.R. Memory Forensics-Based Malware Detection Using Computer Vision and Machine Learning. Electronics 2022, 11, 2579. [Google Scholar] [CrossRef]
  12. Dener, M.; Ok, G.; Orman, A. Malware Detection Using Memory Analysis Data in Big Data Environment. Appl. Sci. 2022, 12, 8604. [Google Scholar] [CrossRef]
  13. Shah, S.S.H.; Jamil, N.; Khan, A.u.R. Memory Visualization-Based Malware Detection Technique. Sensors 2022, 22, 7611. [Google Scholar] [CrossRef]
  14. Sihwail, R.; Omar, K.; Zainol Ariffin, K.A.; Al Afghani, S. Malware Detection Approach Based on Artifacts in Memory Image and Dynamic Execution. Appl. Sci. 2019, 9, 3680. [Google Scholar] [CrossRef]
  15. Hamid, I.; Rahman, M.H. A comprehensive literature review on volatile memory forensics. Electronics 2024, 13, 3026. [Google Scholar] [CrossRef]
  16. Alshamsi, O.; Shaalan, K.; Butt, U. Towards securing smart homes: A systematic literature review of malware detection techniques and recommended prevention approach. Information 2024, 15, 631. [Google Scholar] [CrossRef]
  17. Berrios, S.; Leiva, D.; Olivares, B.; Allende-Cid, H.; Hermosilla, P. Systematic review: Malware detection and classification in cybersecurity. Appl. Sci. 2025, 15, 7747. [Google Scholar] [CrossRef]
  18. Cevallos-Salas, D.; Grijalva, F.; Estrada-Jiménez, J.; Benítez, D.; Andrade, R. Obfuscated privacy malware classifiers based on memory dumping analysis. IEEE Access 2024, 12, 17481–17498. [Google Scholar] [CrossRef]
  19. Owoh, N.; Adejoh, J.; Hosseinzadeh, S.; Ashawa, M.; Osamor, J.; Qureshi, A. Malware detection based on api call sequence analysis: A gated recurrent unit–generative adversarial network model approach. Future Internet 2024, 16, 369. [Google Scholar] [CrossRef]
  20. Mele Pottaraikkal, S.; Sujeer Sugatha, A. Effectiveness of Multiple Memory-Images in detecting Fileless Malware. In Proceedings of the 2023 11th International Symposium on Digital Forensics and Security (ISDFS), Chattanooga, TN, USA, 11–12 May 2023; pp. 1–5. [Google Scholar] [CrossRef]
  21. Nair, S.J.; Syam, S.R. Automated Malware Detection Using Memory Forensics. In Proceedings of the 2024 15th International Conference on Computing Communication and Networking Technologies (ICCCNT), Kamand, India, 24–28 June 2024; pp. 1–5. [Google Scholar] [CrossRef]
  22. Leng, T.; Pan, Y.; Zhao, L.; Yu, A.; Zhu, Z.; Cai, L.; Meng, D. MemInspect: Memory Forensics for investigating Fileless Attacks. In Proceedings of the 2023 IEEE 22nd International Conference on Trust, Security and Privacy in Computing and Communications (TrustCom), Exeter, UK, 1–3 November 2023; pp. 946–955. [Google Scholar] [CrossRef]
  23. Novak, P.; Oujezsky, V.; Kaura, P.; Horvath, T.; Holik, M. Multistage malware detection method for backup systems. Technologies 2024, 12, 23. [Google Scholar] [CrossRef]
  24. Dora, J.R.; Hluchỳ, L.; Staňo, M. In-Memory Shellcode Runner Detection in Internet of Things (IoT) Networks: A Lightweight Behavioral and Semantic Analysis Framework. Sensors 2025, 25, 5425. [Google Scholar] [CrossRef]
  25. Naeem, H.; Dong, S.; Falana, O.J.; Ullah, F. Development of a deep stacked ensemble with process based volatile memory forensics for platform independent malware detection and classification. Expert Syst. Appl. 2023, 223, 119952. [Google Scholar] [CrossRef]
  26. Bozkir, A.S.; Tahillioglu, E.; Aydos, M.; Kara, I. Catch them alive: A malware detection approach through memory forensics, manifold learning and computer vision. Comput. Secur. 2021, 103, 102166. [Google Scholar] [CrossRef]
  27. Hsiao, S.W.; Sun, Y.S.; Chen, M.C. Hardware-assisted MMU redirection for in-guest monitoring and API profiling. IEEE Trans. Inf. Forensics Secur. 2020, 15, 2402–2416. [Google Scholar] [CrossRef]
  28. Palutke, R.; Block, F.; Reichenberger, P.; Stripeika, D. Hiding process memory via anti-forensic techniques. Forensic Sci. Int. Digit. Investig. 2020, 33, 301012. [Google Scholar] [CrossRef]
  29. Lyles, S.; Desantis, M.; Donaldson, J.; Gallegos, M.; Nyholm, H.; Taylor, C.; Monteith, K. Machine Learning Analysis of Memory Images for Process Characterization and Malware Detection. In Proceedings of the 2022 52nd Annual IEEE/IFIP International Conference on Dependable Systems and Networks Workshops (DSN-W), Baltimore, MD, USA, 27–30 June 2022; pp. 162–169. [Google Scholar]
  30. Carrier, T.; Victor, P.; Tekeoglu, A.; Lashkari, A.H. Detecting Obfuscated Malware using Memory Feature Engineering. In Proceedings of the Icissp, Online, 9–11 February 2022; pp. 177–188. [Google Scholar]
  31. Lashkari, A.H.; Li, B.; Carrier, T.L.; Kaur, G. Volmemlyzer: Volatile memory analyzer for malware classification using feature engineering. In Proceedings of the 2021 Reconciling Data Analytics, Automation, Privacy, and Security: A Big Data Challenge (RDAAPS), Hamilton, ON, Canada, 18–19 May 2021; pp. 1–8. [Google Scholar]
  32. Yücel, Ç.; Koltuksuz, A. Imaging and evaluating the memory access for malware. Forensic Sci. Int. Digit. Investig. 2020, 32, 200903. [Google Scholar] [CrossRef]
  33. Varlioglu, S.; Elsayed, N.; ElSayed, Z.; Ozer, M. The dangerous combo: Fileless malware and cryptojacking. In Proceedings of the SoutheastCon 2022, Mobile, AL, USA, 26 March–3 April 2022; pp. 125–132. [Google Scholar]
  34. Panker, T.; Nissim, N. Leveraging malicious behavior traces from volatile memory using machine learning methods for trusted unknown malware detection in Linux cloud environments. Knowl.-Based Syst. 2021, 226, 107095. [Google Scholar] [CrossRef]
  35. Botacin, M.; Grégio, A.; Alves, M.A.Z. Near-memory & in-memory detection of fileless malware. In Proceedings of the International Symposium on Memory Systems, Washington, DC, USA, 28 September–1 October 2020; pp. 23–38. [Google Scholar]
  36. Exterro. FTK Imager. FTk Imager Software 2023. Available online: https://www.exterro.com/ftk-imager (accessed on 18 May 2023).
  37. Daghmehchi Firoozjaei, M.; Habibi Lashkari, A.; Ghorbani, A.A. Memory forensics tools: A comparative analysis. J. Cyber Secur. Technol. 2022, 6, 149–173. [Google Scholar] [CrossRef]
  38. Volatility. Volatility Foundation. Volatility 3 2020. Available online: https://www.volatilityfoundation.org/3 (accessed on 10 June 2023).
  39. Arfeen, A.; Asim Khan, M.; Zafar, O.; Ahsan, U. Process based volatile memory forensics for ransomware detection. Concurr. Comput. Pract. Exp. 2022, 34, e6672. [Google Scholar] [CrossRef]
  40. Inoue, H.; Adelstein, F.; Joyce, R.A. Visualization in testing a volatile memory forensic tool. Digit. Investig. 2011, 8, S42–S51. [Google Scholar] [CrossRef]
  41. Zhang, N.; Zhang, R.; Sun, K.; Lou, W.; Hou, Y.T.; Jajodia, S. Memory forensic challenges under misused architectural features. IEEE Trans. Inf. Forensics Secur. 2018, 13, 2345–2358. [Google Scholar] [CrossRef]
  42. Thing, V.L.; Ng, K.Y.; Chang, E.C. Live memory forensics of mobile phones. Digit. Investig. 2010, 7, S74–S82. [Google Scholar] [CrossRef]
  43. Radburn, W.J. PEviewer. Software by Wayne J. Radburn; Utilities, 2022; p. 1. Available online: http://wjradburn.com/software/ (accessed on 11 July 2023).
  44. Kerns, Q.; Payne, B.; Abegaz, T. Double-extortion ransomware: A technical analysis of maze ransomware. In Proceedings of the Future Technologies Conference (FTC) 2021, Volume 3, Vancouver, BC, Canada, 28–29 October 2021; Springer: Cham, Switzerland, 2022; pp. 82–94. [Google Scholar]
  45. Al-Sofyani, S.; Alelayani, A.; Al-zahrani, F.; Monshi, R. A Survey of Malware Forensics Analysis Techniques and Tools. In Proceedings of the 2023 1st International Conference on Advanced Innovations in Smart Cities (ICAISC), Jeddah, Saudi Arabia, 23–25 January 2023; pp. 1–6. [Google Scholar] [CrossRef]
  46. Prajapati, M.; Dave, D. Host-based Forensic Artefacts of Botnet Infection. In Proceedings of the 2019 International Carnahan Conference on Security Technology (ICCST), Chennai, India, 1–3 October 2019; pp. 1–4. [Google Scholar] [CrossRef]
  47. Andri Rai, E.G.I. In-Memory-Malware-Detecion, Technical Report; Software Security Lab Hanyang University: Seoul, Republic of Korea, 2024. Available online: https://github.com/Freaky-Coder07/In-Memory-Malware-Detecion- (accessed on 2 November 2025).
Figure 1. The overview of the attacks that can happen via in-memory malware on a system.
Figure 1. The overview of the attacks that can happen via in-memory malware on a system.
Applsci 15 11800 g001
Figure 2. The overall framework of proposed model: MemCatcher.
Figure 2. The overall framework of proposed model: MemCatcher.
Applsci 15 11800 g002
Figure 3. The workflow of proposed in-depth analysis of suspicious processes via StringMatcher.
Figure 3. The workflow of proposed in-depth analysis of suspicious processes via StringMatcher.
Applsci 15 11800 g003
Figure 4. File offset of entry point for benign svchost.exe processes: (a) the svchost.exe process, pid 700, has the entry point starting from 00005080. (b) The svchost.exe process, pid 344, has the entry point starting from 00005080.
Figure 4. File offset of entry point for benign svchost.exe processes: (a) the svchost.exe process, pid 700, has the entry point starting from 00005080. (b) The svchost.exe process, pid 344, has the entry point starting from 00005080.
Applsci 15 11800 g004
Figure 5. File offset of entry point for suspicious svchost.exe processes: (a) The svchost.exe process, pid 5388, has the entry point starting from 000032D0. (b) The svchost.exe process, pid 6580, has the entry point starting from 00003A6CB.
Figure 5. File offset of entry point for suspicious svchost.exe processes: (a) The svchost.exe process, pid 5388, has the entry point starting from 000032D0. (b) The svchost.exe process, pid 6580, has the entry point starting from 00003A6CB.
Applsci 15 11800 g005aApplsci 15 11800 g005b
Figure 6. Malicious process data flow and creation of a fake svchost process.
Figure 6. Malicious process data flow and creation of a fake svchost process.
Applsci 15 11800 g006
Figure 7. Benign and malicious svchost.exe process classification.
Figure 7. Benign and malicious svchost.exe process classification.
Applsci 15 11800 g007
Table 1. Summary of techniques used for in-memory or fileless malware Detection.
Table 1. Summary of techniques used for in-memory or fileless malware Detection.
Authors (Year)DatasetTechniqueFocus AreaLimitationsReal-time Detection Before Dump
Hsiao et al. (2020) [27]VMI dataHardware MMUMemory access monitoringRequires hardware modificationsAnalysis on offline memory dump file
Yücel and Koltuksuz (2020) [32]Mem dumpMemory heatmap visualizationImaging-based detectionlimited data, no automationAnalysis on offline memory dump file
Palutke et al. (2020) [28]Windows memMemory forensicmemory hiding by malwareNo detection technique proposedAnalysis on offline memory dump file
Lyles et al. (2022) [29]Volatile memory dumpExtracted memory featuresML classificationLimited data classificationAnalysis on offline memory dump file
Lashkari et al. (2021) [31]CIC-MalMem-2022ML classificationMalware process featureManual feature tuning requiredAnalysis on offline memory dump file
Carrier et al. (2022) [30]CIC-MalMem-2022Feature engineeringObfuscated malware detection in memory dumpNot real-time detectionAnalysis on offline memory dump file
Naeem et al. (2023) [25]mem imagesDeep learningCross-platform in-memory malware detectionplatform setup overheadAnalysis on offline memory dump file
Bozkir et al. (2021) [26]Mixed memory dumpImage conversionmalware classificationmemory overheadAnalysis on offline memory dump file
Bajpai and Enbody (2020) [4]memory samplesMemory reconstructionRansomware behavior reconstruction from memoryOffline analysis onlyAnalysis on offline memory dump file
Bucevschi et al. (2019) [3]Simulated fileless dataML detectionMalware prevention in memory spaceSome benign activity flagged as maliciousAnalysis on running system
Saad et al. (2019) [7]Custom JS malwareBehavior monitoring in memoryFileless JavaScript malware detectionNot generalizedAnalysis on running system
Proposed WorkAhnLab-V3 in-memory dataStatic and behavioral analysisIn depth analysis for in-memory malwareCurrent focus on Windows PEAnalysis on running system
Table 2. The system specifications for Phase 1.
Table 2. The system specifications for Phase 1.
ComponentSpecification
Operating SystemWindows 10
CPUIntel(R) Core(TM) i5-4460 CPU (Intel, Santa Clara, CA, USA)
RAM64 GB–3600 MHz
WorkstationVirtual Box
LanguagePython version 3.11.7
Librariespsutil, pywin32, psutil lief
SoftwareAnaconda version 24.11.3, Auto Py To Exe v2.44.0
Table 3. The system specifications for Phase 2.
Table 3. The system specifications for Phase 2.
ComponentSpecification
Operating SystemWindows 10
CPUIntel(R) Core(TM) i5-4460 CPU
RAM64 GB–3600 MHz
WorkstationVirtual Box
LanguagePython version 3.11.7
Librariespandas, numpy, sklearn
SoftwareFTK Imager version 3.1.2.0, Volatility3 version 2.7.0, PEviewer version 3.5.0.25, Anaconda version 24.11.3
Table 4. AhnLab-V3 antivirus malicious dataset details used in our methodology.
Table 4. AhnLab-V3 antivirus malicious dataset details used in our methodology.
ExtensionSizeMalware FamilySha 256In-Memory Characteristics
PE (win32 exe)48.0 KBDownloader296f6b1a4a50c096834046c45634da8b5826862cc213fd962a74aeec1c4ce834Persistence and function injector
PE (win32 exe)97.0 KBBotnet, spyware (sality)21541b51cfba369b0ab5b633b2e0223866f7fe9ed32b3bbd01f702bf6241d975Persistence and sample injector in all children process, create fake svchost process
PE (win32 exe)235.0 KBDownloader85d2ba3f12877bf7e531ec1970909f2ea20f55ba17d27f4a5b65e8e8dc493909Persistence and function injector in svchost process
rtc (win32.exe)611.2 KBSpyware90a912b2581e448e3bc6248e5abb6f313e010f0664e5758e983824bd47 b815bePersistence and write memory injector named saver in explorer
Dll (win32.exe)5000.0 KBRansomwared895f92119af692221dba7a762fc39d3aad098e3ff966ac442a96deb73489d79Persistence and inject registry file
PE (win32.exe)74.0 KBSpywaree8d6943742663401e5c44a5fa9cfdd8fad6a9a0dc0f886dc77c065a86c0e10aaPersistence and process memory Injector target dllhost
Ps1(win32.exe)570 bytesDownloaderf6a53f10e8590c894aa419c037cb4f14f4444eda855f4c21317f5354a7697210Persistence and function injector to svchost process
PE (win32.exe)378.1 KBSpywarea428ef4c8afc13f9c650bb19c2df5 d7c4cbc671461329f6aa8901feb80adbf06Persistence and process injector named mci process
PE (win32.exe)2.0 MBSpyware (LokiBot)0f627051ad4dd777fe08aed39398f25eba435e592d2b1a4c0324c41acf401727Persistence and write process memory malicious service creator 932.mci.exe, server.exe
PE (win32.exe)283.5 KBSpyware, worm (Rebhip)07b8f25e7b536f5b6f686c12d04edc37e11347c8acd5c53f98a174723078c365Persistence and write memory sample injector in explorer
PE (win32.exe)175.32 KBBackdoor40c913b6837bb03dd168536710d88a05faa6a6956b1c210758a0979a6782bf62Persistence and write process memory malicious service creator 932.mci.exe, server.exe
Table 5. Process information extracted by MemCatcher results for the detection of suspicious and benign processes. The green highlighted row display the benign service.exe process under which all the benign svchost.exe process need to be run. The yellow highlighted row shows the detected malicious processes like Server.exe and 932mci.exe. The red highlighted row shows the new suspicious svchost.exe detected process is running as the child process under the malicious Server.exe. process.
Table 5. Process information extracted by MemCatcher results for the detection of suspicious and benign processes. The green highlighted row display the benign service.exe process under which all the benign svchost.exe process need to be run. The yellow highlighted row shows the detected malicious processes like Server.exe and 932mci.exe. The red highlighted row shows the new suspicious svchost.exe detected process is running as the child process under the malicious Server.exe. process.
Image NamePIDStatusPPIDMemory Usage (KB)Disk Activity (PIO Count)Threads
svchost.exe344running5729800 KBpio = Not Null3
svchost.exe360running5727888 KBpio = Not Null4
services.exe572running4809700 KBpio = Not Null6
svchost.exe604running5727996 KBpio = Not Null3
svchost.exe700running57225,980 KBpio = Not Null13
svchost.exe772running57214,000 KBpio = Not Null4
svchost.exe796running57213,892 KBpio = Not Null11
svchost.exe852running5728264 KBpio = Not Null6
svchost.exe948running5726316 KBpio = Not Null2
svchost.exe972running57219,732 KBpio = Not Null5
svchost.exe1012running57211,468 KBpio = Not Null6
svchost.exe1028running57293,008 KBpio = Not Null5
svchost.exe1048running5726056 KBpio = Not Null3
svchost.exe1084running57212,072 KBpio = Not Null4
svchost.exe1192running5727888 KBpio = Not Null5
svchost.exe1216running5728424 KBpio = Not Null3
svchost.exe1292running57212,928 KBpio = Not Null5
svchost.exe1300running57215,184 KBpio = Not Null8
svchost.exe1340running5728120 KBpio = Not Null2
svchost.exe1348running5727180 KBpio = Not Null5
svchost.exe1364running5727412 KBpio = Not Null1
svchost.exe1384running5727412 KBpio = Not Null4
svchost.exe1540running57210,000 KBpio = Not Null4
svchost.exe1592running57220,600 KBpio = Not Null8
svchost.exe1656running5729384 KBpio = Not Null6
svchost.exe1688running57212,768 KBpio = Not Null12
svchost.exe1760running57214,104 KBpio = Not Null6
svchost.exe1768running5727604 KBpio = Not Null8
svchost.exe1776running5726328 KBpio = Not Null3
svchost.exe1788running5729092 KBpio = Not Null5
svchost.exe1816running57213,120 KBpio = Not Null9
svchost.exe1844running57218,076 KBpio = Not Null15
svchost.exe1924running5726012 KBpio = Not Null2
svchost.exe1944running57212,860 KBpio = Not Null4
svchost.exe1960running57222,208 KBpio = Not Null14
svchost.exe2028running5727620 KBpio = Not Null6
svchost.exe2036running57211,752 KBpio = Not Null2
svchost.exe2136running5728532 KBpio = Not Null5
svchost.exe2232running57216,320 KBpio = Not Null12
svchost.exe2264running57211,348 KBpio = Not Null4
svchost.exe2352running57210,960 KBpio = Not Null6
svchost.exe2480running57210,360 KBpio = Not Null6
svchost.exe2512running57234,992 KBpio = Not Null12
svchost.exe2520running57212,292 KBpio = Not Null11
svchost.exe2644running5728168 KBpio = Not Null4
svchost.exe2652running57231,736 KBpio = Not Null3
svchost.exe2656running5729148 KBpio = Not Null5
svchost.exe2680running5726660 KBpio = Not Null1
svchost.exe2700running5728280 KBpio = Not Null5
svchost.exe2808running5727008 KBpio = Not Null1
svchost.exe2828running57216,672 KBpio = Not Null5
svchost.exe2836running5725920 KBpio = Not Null3
svchost.exe2868running57212,688 KBpio = Not Null3
svchost.exe2924running5725720 KBpio = Not Null2
svchost.exe3312running5729444 KBpio = Not Null26
svchost.exe3752running57221,352 KBpio = Not Null5
svchost.exe4148running57215,912 KBpio = Not Null6
Server.exe4340running435621,252 KBpio = Not Null6
svchost.exe4448running5728684 KBpio = Not Null7
svchost.exe4688running57221,596 KBpio = Not Null5
svchost.exe4760running57210,888 KBpio = Not Null8
svchost.exe5180running5729116 KBpio = Not Null3
svchost.exe5388stopped43401964 KBpio = Null1
svchost.exe5508running57219,264 KBpio = Not Null6
svchost.exe5796running57212,532 KBpio = Not Null3
svchost.exe5852running5729032 KBpio = Not Null9
svchost.exe5972running5729556 KBpio = Not Null10
svchost.exe6580stopped65641980 KBpio = Null1
932mci.exe6900running66968808 KBpio = Not Null2
Table 6. Comparison of the existing techniques with the proposed methodology.
Table 6. Comparison of the existing techniques with the proposed methodology.
ReferenceDatasetEffectivenessReal-Time (Pre-Dump)Resource Use
[25]Volatile memory imagesHighNoHigh
[26]Mixed memory dumpsHighNoHigh
[27]VMI/MMU tracesModerateYesMedium
[29]Volatile memory dumpsModerateNoMedium
[30]CIC MalMem 2022HighNoMedium
[31]Volatile memory dumpsModerateNoMedium
[32]Memory dumpsQualitativeNoMedium
Proposed (Ours)Real-time Detection; small snapshotHighYesLow
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Rai, A.; Im, E.G. MemCatcher: An In-Depth Analysis Approach to Detect In-Memory Malware. Appl. Sci. 2025, 15, 11800. https://doi.org/10.3390/app152111800

AMA Style

Rai A, Im EG. MemCatcher: An In-Depth Analysis Approach to Detect In-Memory Malware. Applied Sciences. 2025; 15(21):11800. https://doi.org/10.3390/app152111800

Chicago/Turabian Style

Rai, Andri, and Eul Gyu Im. 2025. "MemCatcher: An In-Depth Analysis Approach to Detect In-Memory Malware" Applied Sciences 15, no. 21: 11800. https://doi.org/10.3390/app152111800

APA Style

Rai, A., & Im, E. G. (2025). MemCatcher: An In-Depth Analysis Approach to Detect In-Memory Malware. Applied Sciences, 15(21), 11800. https://doi.org/10.3390/app152111800

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop