BD Platform
Security Operations, Accelerated.
Engineered to evade top security products and stealthily harvest credentials from the LSASS process, LetMeowIn represents a significant challenge for cybersecurity defenders.
By ARC Labs contributors, John Dwyer and Harold Tabellion
In April 2024, security researcher Meowmycks released LetMeowIn which was designed to harvest credentials from the LSASS process on Microsoft Windows systems. In this blog, ARC Labs will provide an overview of how LetMeowIn works and provide some detection guidance for defenders.
Dumping credentials from LSASS is nothing new and has been a part of offensive and criminal tradecraft for many years. At its core, LetMeowIn uses MiniDumpWriteDump function from dbghelp.dll to create a memory dump of the LSASS process, but instead of writing the dump directly to disk, it employs MINIDUMP_CALLBACK_INFORMATION to manipulate the dump in memory first, enabling the tool to manipulate the dump data in memory before writing it to disk. LetMeowIn touts some additional stealth and evasion capabilities that enable it to bypass common endpoint security products such as CrowdStrike Falcon and Microsoft Defender. ARC Labs was able to confirm that LetMeowIn was able to dump LSASS while multiple security endpoint solutions were running.
Analyzing the code of LetMeowIn as well as the supplied documentation, LetMeowIn uses various methods to avoid detection by endpoint security tools such as obfuscating Windows API functions, indirect syscalls, tampering with Event Tracing for Windows, indirect LSASS handles, and anti-analysis of dump files.

In the following code snippet, the library “dbghelp.dll” is split into an array of single characters and read into the variable “lldplehgbd”. The same obfuscation technique is used for “minidumpwritedeump” which is stored in a variable named dwdm. LetMeowIn leverages this same obfuscation technique in different areas for common keyword detections.

Additionally, LetMeowIn obfuscates WinAPI Functions by storing the function names by encoding the function names with Unicode Code Points and storing the values in an array. When the array is called, LetMeowIn calls a function named unASCIIme which decodes the array to WinAPI function name as a string.


For example, “ISQtN[] = { 81, 117, 101, 114, 121, 83, 121, 115, 116, 101, 109, 73, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110}” will decode to “QuerySystemInformation”.
Indirect syscalls are a common defense evasion technique which involves designing malware to not directly invoke system calls using standard library functions or direct syscall instructions. Instead, the malware will execute system calls through an intermediary step, often involving code obfuscation or redirection. This method can involve manipulating function pointers, using inline assembly, or leveraging other forms of code indirection to invoke syscalls in a way that is not easily recognizable by standard detection mechanisms.
The following snippet is a sample of one of the indirect syscalls in LetMeowIn.

Event Tracing for Windows (ETW) is a high-performance logging mechanism provided by the Windows operating system to collect detailed system and application performance data. It is often used by endpoint security solutions to gather telemetry to aide in detection of malicious activity.
LetMeowIn has a function named Gluttony which implements a technique first documented by “acebond” which attempts to prevent ETW providers from gathering information from a process by maxing out the number of providers a single process can have. The function Gluttony leverages the EventRegister function in a loop to register providers until the maximum number is reached before any legitimate providers can be registered for LetMeowIn.

As most antivirus and endpoint detection and response (EDR) solutions will detect any process attempting to open a handle to LSASS directly, LetMeowIn uses a technique introduced by SkelSec to get a copy of an existing open handle to LSASS using the NtDuplicateObject function. With an open handle to LSASS, LetMeowIn can dump the contents of LSASS to extract the credentials from the dump file.
LetMeowIn implements this technique within a function named HijackHandle which goes through the following high-level steps to hijack a process’ existing handle to the LSASS process:

Before the dump file is written to disk, LetMeowIn runs a function called GenerateInvalidSignature to corrupt MDMP signature of the file. This prevents the file being analyzed by common analysis tools to confirm if the dump file contains credentials. The LetMeowIn project contains a python script which restores the proper file signature enabling the credentials to be extracted using tools such as Mimikatz.
