← Reports

Remote Access Trojan

VenomRAT - ClientAny.exe

Author
Moise Medici
Updated
15 Nov 2025 · Completed
Difficulty
Easy
Platform
Windows
Family
VenomRAT
Languages
C#
MITRE
T1059.003 (Command and Scripting Interpreter: Windows Command Shell) T1053.005 (Scheduled Task/Job: Scheduled Task) T1547.001 (Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder) T1027.011 (Obfuscated Files or Information: Fileless Storage) T1027.013 (Obfuscated Files or Information: Encrypted/Encoded File) T1070.004 (Indicator Removal: File Deletion) T1140 (Deobfuscate/Decode Files or Information) T1480.002 (Execution Guardrails: Mutual Exclusion) T1564.003 (Hide Artifacts: Hidden Window) T1620 (Reflective Code Loading) T1010 (Application Window Discovery) T1033 (System Owner/User Discovery) T1057 (Process Discovery) T1082 (System Information Discovery) T1120 (Peripheral Device Discovery) T1518 (Software Discovery) T1518.001 (Software Discovery: Security Software Discovery) T1056.001 (Input Capture: Keylogging) T1074.001 (Data Staged: Local Data Staging) T1095 (Non-Application Layer Protocol) T1102.001 (Web Service: Dead Drop Resolver) T1105 (Ingress Tool Transfer) T1573.002 (Encrypted Channel: Asymmetric Cryptography) T1041 (Exfiltration Over C2 Channel)

Code Analysis

Opening the file with dnSpy shows something similar to the screenshot below:

The sample opened in dnSpy under the assembly name Monotone.exe, with the Client namespaces expanded.
Fig. 6: The sample opened in dnSpy under the assembly name Monotone.exe, with the Client namespaces expanded.

The next step is to understand where to begin the analysis. This can be approached in 3 ways:

  1. Find the Main entrypoint, which is the first part of the code that is executed by the executable, and understand the execution paths;
  2. Find some classes that seem like good starting points; for example, in this case Client.Install, Client.Settings or Client.Algorithms are good starting points. The reasons they are good are different: Client.Install is a generic action that the malware is going to perform and gives good insight on the persistence mechanisms it will use, however it has dependencies with a lot of other parts of the code, so it might be difficult to understand at first. Client.Settings and Client.Algorithms have very small dependencies (number of imports of code from other parts of the exe);
  3. If there is already an idea of what to look for, it is possible to go directly to the function that is likely performing that action, for example the keylogging in Client.Keylogger.

To find the Main class, the search functionality in dnSpy can be used. Click the magnifier at the top, select “Monotone” on the left side and then, in the Search bar that opened at the bottom of the screen, change the scope of the search to “Files in same folder”. Since “Monotone” was selected, the search will only be performed on this folder.

dnSpy's search for Main, scoped to files in the same folder, locating the entrypoint in Client.Program.
Fig. 7: dnSpy's search for Main, scoped to files in the same folder, locating the entrypoint in Client.Program.

The Main entry appears in Client.Program. Double clicking on it brings the view directly to that part of the program.

The reason for starting from Client.Program and not something else is that, after a brief look, it does not seem to be heavily obfuscated, and a lot of details can already be understood from a first read. While going through the code, it becomes clearer what might be useful to investigate next.