<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PepoRoot</title>
    <description></description>
    <link>https://peporoot.github.io/</link>
    <atom:link href="https://peporoot.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 20 Aug 2026 19:05:47 +0000</pubDate>
    <lastBuildDate>Thu, 20 Aug 2026 19:05:47 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Foreigner Sherlock Malware Analysis</title>
        <description>&lt;h1 id=&quot;foreigner-sherlock-malware-analysis&quot;&gt;Foreigner Sherlock Malware Analysis&lt;/h1&gt;
&lt;h2 id=&quot;sherlock-scenario&quot;&gt;Sherlock Scenario&lt;/h2&gt;
&lt;p&gt;An organization has requested assistance after a user followed instructions from a website claiming their system required an urgent fix. The site prompted the user to manually execute several commands to resolve the issue. Shortly afterward, the workstation began exhibiting suspicious behavior, including the execution of unknown processes and unexpected outbound network communications. The organization requires your help to analyze the provided artifacts.&lt;/p&gt;

&lt;h2 id=&quot;task-1-what-compiler-timestamp-is-embedded-in-the-malware-binary-utc&quot;&gt;Task 1 What compiler timestamp is embedded in the malware binary? (UTC)&lt;/h2&gt;
&lt;p&gt;I opened the file with PEstudio and checked the compiler timestamp (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stamp &amp;gt; compiler&lt;/code&gt;) to find the answer.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/1.png&quot; alt=&quot;PEstudio Compiler Timestamp&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2089-10-01 03:41:58&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-2-what-is-the-name-of-the-suspicious-packed-section-found-in-the-executable&quot;&gt;Task 2 What is the name of the suspicious packed section found in the executable?&lt;/h2&gt;
&lt;p&gt;I opened the file with DIE (Detect It Easy) and identified the following section:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/2.png&quot; alt=&quot;Detect It Easy Section Analysis&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The malware checks whether this section exists before performing any operations.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/3.png&quot; alt=&quot;Code Check for Section Existence&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new Publisher&lt;/code&gt; runs, C# creates the object in memory and automatically executes any code written inside its constructor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.CSS&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-3-which-encryption-algorithm-is-used-by-the-malware&quot;&gt;Task 3 Which encryption algorithm is used by the malware?&lt;/h2&gt;
&lt;p&gt;After inspecting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Publish&lt;/code&gt; class:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/7.png&quot; alt=&quot;Publish Class Initialization&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We can see that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DeleteSentence&lt;/code&gt; method accepts 4 parameters:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inputData&lt;/code&gt;: The encrypted input data.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inputDataLength&lt;/code&gt;: The length of the encrypted data.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;decryptionKey&lt;/code&gt;: The decryption key.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;keyLength&lt;/code&gt;: The length of the decryption key.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Additionally, a second &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DeleteSentence&lt;/code&gt; call is made to decrypt the malicious section that the program checks before entering the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Publisher&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;If we look inside the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DeleteSentence&lt;/code&gt; method, we find the following logic:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/6.png&quot; alt=&quot;DeleteSentence Decryption Logic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It initializes an array of 256 bytes filled with values from 0 to 255 in linear order. It also repeats the key &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Sygcydy&lt;/code&gt; across a second array to match the 256-byte length (indicative of the RC4 Key Scheduling Algorithm).&lt;/p&gt;

&lt;p&gt;Let’s examine the result of this decryption. The first output is:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/23.png&quot; alt=&quot;First Decryption Stage Result&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And the second is:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/24.png&quot; alt=&quot;Second Decryption Stage Result&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RC4&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-4-which-winapi-function-is-leveraged-to-execute-the-shellcode&quot;&gt;Task 4 Which WinAPI function is leveraged to execute the shellcode?&lt;/h2&gt;
&lt;p&gt;When analyzing the imported APIs, we see two critical calls: first, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VirtualProtect&lt;/code&gt;, and second, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CallWindowProcA&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/9.png&quot; alt=&quot;VirtualProtect and CallWindowProcA Execution&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VirtualProtect&lt;/code&gt; modifies the permissions of the memory region holding the decrypted &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inputData&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PAGE_EXECUTE_READWRITE&lt;/code&gt;. This is necessary because heap memory is allocated with read/write permissions (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PAGE_READWRITE&lt;/code&gt;) by default, which prevents shellcode execution.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CallWindowProcA&lt;/code&gt; is then used to transfer the execution flow directly to the decrypted shellcode residing in memory.&lt;/p&gt;

&lt;p&gt;This technique is known as Callback Execution, which malware developers often use to evade EDR (Endpoint Detection and Response) detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CallWindowProcA&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-5-which-process-is-targeted-by-the-shellcode-for-injection&quot;&gt;Task 5 Which process is targeted by the shellcode for injection?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msbuild.exe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/12.png&quot; alt=&quot;Memory Dump with MSBuild.exe Path&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is the decrypted data extracted from memory for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inputData&lt;/code&gt;. It contains several API calls and the path to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MSBuild.exe&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-6-what-technique-is-used-to-execute-the-second-stage-payload&quot;&gt;Task 6 What technique is used to execute the second-stage payload?&lt;/h2&gt;
&lt;p&gt;Analyzing the extracted input data from memory reveals the process hollowing steps:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/12.png&quot; alt=&quot;Process Hollowing Memory Indicators&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CreateProcess&lt;/code&gt; launches a new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MSBuild.exe&lt;/code&gt; process (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe&lt;/code&gt;) in a suspended state.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VirtualAllocEx&lt;/code&gt; allocates a new block of executable memory inside the target process.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WriteProcessMemory&lt;/code&gt; copies the decrypted malicious shellcode into the allocated memory space.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetThreadContext&lt;/code&gt; reads the target process’s registers to prepare to alter the execution entry point.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SetThreadContext&lt;/code&gt; overwrites the entry point register inside the suspended &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MSBuild.exe&lt;/code&gt; to point directly to the base address of the newly injected payload.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ResumeThread&lt;/code&gt; wakes up the suspended &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MSBuild.exe&lt;/code&gt; process, executing the payload.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;process hollowing&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-7-which-computer-name-does-the-second-stage-malware-check-for-to-evade-analysis-environments-lowercase&quot;&gt;Task 7 Which Computer name does the second-stage malware check for to evade analysis environments? (lowercase)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/13.png&quot; alt=&quot;Sandbox and Emulation Evasion Check&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This check is located in the startup function. The malware checks for the sequence &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;j o e h 9&lt;/code&gt;. If it detects this sequence, it terminates execution. This is shorthand for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JohnDoe&lt;/code&gt; (username) and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HAL9TH&lt;/code&gt; (computer name), which are hardcoded default system values used by Microsoft Defender’s emulation and sandbox environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hal9th&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-8-what-string-does-the-second-stage-malware-register-to-prevent-multiple-executions-on-the-same-host-format-lowercase-string&quot;&gt;Task 8 What string does the second-stage malware register to prevent multiple executions on the same host? (Format lowercase: string)&lt;/h2&gt;
&lt;p&gt;By debugging the malware and tracing the event creation APIs (such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OpenEventA&lt;/code&gt;), we find the following registration string:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/8.png&quot; alt=&quot;Debugging OpenEventA Mutex/Event Name&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;approve_april&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-9-which-function-address-initializes-the-malwares-internal-string-structure-by-setting-the-fields-to-zero&quot;&gt;Task 9 Which function address initializes the malware’s internal string structure by setting the fields to zero?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/15.png&quot; alt=&quot;Repeated Function Calls in Decompiler&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This initialization function is called frequently throughout the code. Examining its disassembly:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/16.png&quot; alt=&quot;Initialization Function Disassembly&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x40f3b0&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-10-besides-filezilla-which-other-file-transfer-client-is-targeted-for-credential-extraction&quot;&gt;Task 10 Besides FileZilla, which other file transfer client is targeted for credential extraction?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/17.png&quot; alt=&quot;WinSCP Credential Harvesting&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As shown in the disassembly, the malware targets WinSCP (a free, open-source file manager and transfer client for Microsoft Windows) to extract stored credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winscp&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-11-what-is-the-function-address-that-starts-crawling-the-steam-process-by-acquiring-its-handle&quot;&gt;Task 11 What is the function address that starts crawling the Steam process by acquiring its handle?&lt;/h2&gt;
&lt;p&gt;When searching for references to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;steam.exe&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/25.png&quot; alt=&quot;Steam Process Search Routine&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sub_411250&lt;/code&gt; searches all currently running processes on the system to locate a process matching &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;steam.exe&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Once found, it passes control to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sub_40ee70&lt;/code&gt;, which acts as a memory stealer targeting Steam authentication tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x40ee70&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-12-what-type-of-authentication-artifact-does-the-second-stage-malware-search-for-in-steams-process-memory&quot;&gt;Task 12 What type of authentication artifact does the second-stage malware search for in Steam’s process memory?&lt;/h2&gt;
&lt;p&gt;By converting the extracted hex values to ASCII using CyberChef, we can see the target token type:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/19.png&quot; alt=&quot;CyberChef JWT Token Extraction&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JWT&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-13-what-unique-hardcoded-identifier-does-this-second-stage-malware-instance-use-to-identify-itself-during-data-exfiltration&quot;&gt;Task 13 What unique hardcoded identifier does this second-stage malware instance use to identify itself during data exfiltration?&lt;/h2&gt;
&lt;p&gt;Analyzing the exfiltration routine shows the following hardcoded campaign/bot identifier:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/20.png&quot; alt=&quot;Hardcoded Unique Campaign ID&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ee4724586a69cda3db87344f07509f40&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-14-what-special-marker-string-did-the-second-stage-malware-use-in-the-discord-crawling-process&quot;&gt;Task 14 What special marker string did the second-stage malware use in the Discord crawling process?&lt;/h2&gt;
&lt;p&gt;Searching for Discord-related token extraction logic:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/21.png&quot; alt=&quot;Discord Decryption Key Regex and Marker&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dQw4w9WgXcQ&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;task-15-which-messaging-platform-does-the-second-stage-malware-exfiltrate-stolen-data-to&quot;&gt;Task 15 Which messaging platform does the second-stage malware exfiltrate stolen data to?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Foreigner/22.png&quot; alt=&quot;Telegram Bot API Exfiltration Endpoint&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;telegram&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords&quot;&gt;Knowing when to use override and new keywords (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/windows/win32/memory/memory-protection-constants&quot;&gt;Memory Protection Constants (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-callwindowproca&quot;&gt;CallWindowProcA function (Microsoft Learn)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://winscp.net/eng/docs/introduction&quot;&gt;WinSCP Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Thu, 20 Aug 2026 19:01:58 +0000</pubDate>
        <link>https://peporoot.github.io/Foreigner-malware-analysis</link>
        <guid isPermaLink="true">https://peporoot.github.io/Foreigner-malware-analysis</guid>
        
        <category>Sherlocks</category>
        
        <category>Foreigner</category>
        
        <category>malware analysis</category>
        
        <category>Vidar</category>
        
        <category>.NET</category>
        
        
      </item>
    
      <item>
        <title>Lupin Sherlock Malware Analysis</title>
        <description>&lt;h1 id=&quot;lupin-sherlock-malware-analysis&quot;&gt;Lupin Sherlock Malware Analysis&lt;/h1&gt;

&lt;h2 id=&quot;sherlock-scenario&quot;&gt;Sherlock Scenario&lt;/h2&gt;
&lt;p&gt;After a security incident, unusual activity on Samira’s workstation led to the discovery of a suspicious binary operating stealthily in the background. The executable evades standard detection while maintaining persistence and network communication. Your mission is to reverse the binary and extract the attacker’s TTPs for the endpoint security team.&lt;/p&gt;

&lt;h2 id=&quot;task-1-what-is-the-entropy-value-of-the-executable-file&quot;&gt;Task 1: What is the entropy value of the executable file?&lt;/h2&gt;

&lt;p&gt;I opened the file in &lt;strong&gt;DIE (Detect It Easy)&lt;/strong&gt; to analyze its entropy, which helps malware analysts determine if a binary is packed:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;6.41450&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Let’s begin the Advanced Static Analysis.&lt;/p&gt;

&lt;h2 id=&quot;task-2-what-is-the-consistent-filename-used-by-the-malware-when-replicating-itself-across-different-locations&quot;&gt;Task 2: What is the consistent filename used by the malware when replicating itself across different locations?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In this image, we can see the call to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetModuleFileNameW()&lt;/code&gt;, which gets the full path of the current module.&lt;/p&gt;

&lt;p&gt;Then, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PathFindFileNameW()&lt;/code&gt; takes the full file path and returns a pointer to the filename, which is then passed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wsprintfW()&lt;/code&gt; to build a new full path.&lt;/p&gt;

&lt;p&gt;Afterwards, the malware attempts to delete its original binary, rename itself to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syscrondvr.exe&lt;/code&gt;, and establish persistence in the registry &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Run&lt;/code&gt; keys to start automatically.&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syscrondvr.exe&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-3-following-filename-verification-which-win32-api-does-the-binary-use-to-enforce-region-based-execution-constraints&quot;&gt;Task 3: Following filename verification, which Win32 API does the binary use to enforce region-based execution constraints?&lt;/h2&gt;

&lt;p&gt;Looking at the previous image, if the file finds &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syscrondvr.exe&lt;/code&gt;, it proceeds to execute the function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sub_40EA40&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This function checks if the system’s locale is Ukraine (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UKR&lt;/code&gt;). It returns &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt; if the system is NOT in Ukraine, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt; if it is, allowing the malware to avoid infecting systems in Ukraine. The Win32 API used for this check is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetLocaleInfoA&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetLocaleInfoA&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-4-the-function-at-relative-address-0x407680-makes-a-winapi-call-immediately-before-initiating-the-network-request-which-winapi-function-does-it-call-to-ensure-fresh-data-is-retrieved-from-the-c2-server&quot;&gt;Task 4: The function at relative address 0x407680 makes a WinAPI call immediately before initiating the network request. Which WinAPI function does it call to ensure fresh data is retrieved from the C2 server?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When I jumped to the address mentioned in the task (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x407680&lt;/code&gt;), I found a call to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DeleteUrlCacheEntry&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;This function is often used to clear cache/remove evidence of communication, or to force a new request to the C2 server to fetch fresh commands rather than reading cached data.&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DeleteUrlCacheEntry&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-5-samira-noticed-unusual-behavior-during-the-paste-operation--what-is-the-relative-address-of-the-function-that-is-responsible-for-this-strange-activity&quot;&gt;Task 5: Samira noticed unusual behavior during the paste operation — what is the relative address of the function that is responsible for this strange activity?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From the import section, we can see that the malware uses clipboard functions:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It monitors the clipboard and steals any text the user copies, specifically targeting cryptocurrency addresses.&lt;/p&gt;

&lt;p&gt;So, the address is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x405B90&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-6-which-windows-message-serves-as-the-primary-trigger-for-initiating-the-clipboard-content&quot;&gt;Task 6: Which Windows message serves as the primary trigger for initiating the clipboard content?&lt;/h2&gt;

&lt;p&gt;By analyzing the clipboard monitoring function, we can find the message used as a trigger:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WM_DRAWCLIPBOARD&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-7-what-is-the-relative-address-of-the-function-used-to-modify-samiras-clipboard-content-by-replacing-it-with-new-data&quot;&gt;Task 7: What is the relative address of the function used to modify Samira’s clipboard content by replacing it with new data?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Looking at this function, we can see that it attempts to identify the copied cryptocurrency wallet address and replace it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, the address is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x404A60&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-8-a-transaction-was-made-from-jamilaaidoseth-what-is-the-transaction-hash-associated-with-the-user-latest-operation&quot;&gt;Task 8: A transaction was made from “jamilaaidos.eth”; what is the transaction hash associated with the user latest operation?&lt;/h2&gt;

&lt;p&gt;After analyzing the clipboard replacement function, we can identify the attacker’s wallet address:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Performing OSINT on this wallet leads us to the Etherscan page:
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://etherscan.io/address/0x46e5cc402bc848cec9f4d65c9b48ae7d7a24821b&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We can also get the address of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jamilaaidos.eth&lt;/code&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0x75D4A4B37177c92B26D7563fbB7EF4758fE9aa03&lt;/code&gt;), which allows us to find the transaction hash on-chain:&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0xab2d474dad344da1e3b7ece6e7022c3295c52b176978337be82288a59e5a2a40&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-9-what-specific-multicast-ip-address-is-targeted-by-the-ssdp-m-search-discovery-probes&quot;&gt;Task 9: What specific multicast IP address is targeted by the SSDP M-SEARCH discovery probes?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/Sherlock/Lupin/11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Looking at the SSDP function, we can see the targeted multicast IP address:&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;239.255.255.250&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-10-what-standard-udp-port-number-is-used-for-the-ssdp-m-search-discovery-requests&quot;&gt;Task 10: What standard UDP port number is used for the SSDP M-SEARCH discovery requests?&lt;/h2&gt;

&lt;p&gt;From the same function call, we can determine the UDP port used:&lt;/p&gt;

&lt;p&gt;So, the answer is: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1900&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;task-11-what-is-the-malware-family-associated-with-the-malware&quot;&gt;Task 11: What is the malware family associated with the malware?&lt;/h2&gt;

&lt;p&gt;By performing threat intelligence queries on the indicators discovered during our investigation, such as the C2 IP &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;185.156.72.39&lt;/code&gt; and the dropped filename &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syscrondvr.exe&lt;/code&gt;, we find that this malware is related to the &lt;strong&gt;Phorpiex&lt;/strong&gt; malware family.&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 23:47:00 +0000</pubDate>
        <link>https://peporoot.github.io/lupin-malware-analysis</link>
        <guid isPermaLink="true">https://peporoot.github.io/lupin-malware-analysis</guid>
        
        <category>Sherlocks</category>
        
        <category>Lupin</category>
        
        <category>malware analysis</category>
        
        <category>stealer</category>
        
        <category>phorpiex</category>
        
        
      </item>
    
  </channel>
</rss>