Test Report from Malcat MCP with Claude on YAPA binary
The following is a test run of using Malcat with MCP.
Malware Analysis Report — xchanger.exe
Malware Analysis Report
File: xchanger.exe | Analyzed: 2026-03-12 | Tool: Malcat + .NET Disassembly
MALICIOUS — Trojanized Installer / C2 Dropper
File Metadata
Filename
File Size
1,779,416 bytes (~1.7 MB)
Type
PE / .NET (DOTNET)
Version
2.0.20.403
Internal Name
XChanger.exe
Copyright
XChanger Copyright © 2026
SHA-256
356ca46f39b480d0ab523535f98e64ae0ec58fe1fdbb8ffc02f54b814445e9d0
Hardcoded XOR Key
NetworkManager — Scramble / Unscramble
Xt7Kp2Lm9Qw4Rv8Y-x1729583156
Length: 29 characters | Found at EA: 0xE771, 0xFB1A
// Rolling XOR per character, then Base64-encoded for transmission
byte lambda(char c, int i) {
return (byte)(c ^ "Xt7Kp2Lm9Qw4Rv8Y-x1729583156"[i % 29]);
}
// Called by: PostPayloadAsync, SendConfigNotificationAsync,
// TransmitProfileReportAsync, BeginSessionAsync
Network Indicators — Domains & URLs
| URL | Domain | Classification | Purpose |
|---|---|---|---|
https://rol.chanleil.com/custom |
chanleil.com | C2 / Suspicious | Custom config check-in |
https://rol.chanleil.com/XR |
chanleil.com | C2 / Suspicious | Unknown — short path beacon |
https://rol.chanleil.com/XU |
chanleil.com | C2 / Suspicious | Likely update/upload endpoint |
https://rol.chanleil.com/X |
chanleil.com | C2 / Suspicious | Unknown — short path beacon |
https://white.chanleil.com/XIn |
chanleil.com | C2 / Suspicious | Likely initial check-in (XIn = XChanger Init?) |
https://white.chanleil.com/XRT |
chanleil.com | C2 / Suspicious | Likely report transmission |
https://white.chanleil.com/XSC |
chanleil.com | C2 / Suspicious | Likely send config |
https://white.chanleil.com/XRF |
chanleil.com | C2 / Suspicious | Likely report/refresh |
https://www.xchangerapp.com/xch-welcome |
xchangerapp.com | Decoy / Legit-looking | Welcome page (cover) |
https://www.xchangerapp.com/xch-terms |
xchangerapp.com | Decoy / Legit-looking | Terms of service (cover) |
https://www.xchangerapp.com/xch-privacy |
xchangerapp.com | Decoy / Legit-looking | Privacy policy (cover) |
Registry Activity
| Key Path | Access Type | Purpose |
|---|---|---|
SOFTWARE\Microsoft\Cryptography |
Read | Reads MachineGuid — unique host fingerprinting |
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ |
Read / Write | Registers as installed software (persistence/legitimacy cover); also used to enumerate installed programs |
Behavioral Analysis
| Behavior | Severity | Evidence |
|---|---|---|
| Embedded Executable Dropper | Critical | Contains a second PE binary in a high-entropy resource; loaded via .NET reflection at runtime |
| C2 Communication | Critical | NetworkManager class — BeginSessionAsync, PostPayloadAsync, TransmitProfileReportAsync, SendConfigNotificationAsync |
| XOR + Base64 Traffic Obfuscation | Critical | Scramble / Unscramble methods apply rolling XOR with hardcoded key, then Base64-encode all outbound data |
| Host Fingerprinting | High | Reads MachineGuid from registry; BuildSidString, EvaluateProfiles, ComposeStatusDetails methods compile system profile |
| Dynamic Code Loading | High | Uses Assembly.Load / Reflection (2 hits) to load and execute embedded payload at runtime — evades static analysis |
| HTTP Form Data Exfiltration | High | YARA: PostHttpForm — posts data as application/x-www-form-urlencoded |
| Installed Software Enumeration | Medium | YARA: FingerprintSoftware — reads Uninstall registry hive to enumerate all installed programs |
| Installer Masquerading | Medium | Drops files, creates Start Menu entry, registers in Add/Remove Programs — presents as legitimate XChanger installer |
| Auto-Update / Download Mechanism | Medium | DownloadUpdateZip with retry logic — can pull and execute updated payloads |
| PE Timestamp Manipulation | Medium | TimeDateStamp set in the future — anti-forensics / evades time-based sandbox detection |
Static Anomalies
| Anomaly | Level | Description |
|---|---|---|
| TimeDateStampInTheFuture | 4 / Critical | PE header timestamp is set in the future |
| NoImportTable | 4 / Critical | No valid Import Table — all imports resolved via .NET runtime |
| DotnetDynamicLoadingApiUsage | 3 / High | Uses Assembly.Load / Reflection for runtime code execution (2 hits) |
| EmbeddedProgram | 3 / High | A second executable is embedded inside the file |
| BigResourceHighEntropy | 2 / Medium | Large non-image resource with high entropy — likely encrypted payload |
| WeirdFileAlignment | 2 / Medium | FileAlignment is non-standard |
NetworkManager Class — Identified Methods
| Method | Role |
|---|---|
Scramble | XOR-encodes plaintext with hardcoded key, returns Base64 string |
Unscramble | Reverses Scramble — decodes Base64, XOR-decodes inbound data |
PostPayloadAsync | HTTP POST of XOR+Base64 encoded payload |
BeginSessionAsync | Initial C2 check-in, likely sends MachineGuid + profile |
SendConfigNotificationAsync | Transmits local config data to C2 |
TransmitProfileReportAsync | Sends collected host profile to C2 |
EvaluateProfiles | Enumerates and scores local profiles |
ComposeStatusDetails | Builds status/environment info string |
ComposeProfileOverview | Compiles full host profile for exfiltration |
BuildSidString | Retrieves user/machine SID for identification |
UrlEncode / ToBase64 | Encoding helpers for HTTP transmission |
Thoughts:
This assists with some basic analysis, but I still had to know a bit about analysis to get it to give me more. What I found is that I had to have claude disassemble the .NET to extract the various namespace, classes, methodes etc... This was required to get the hard-coded XOR key. I noticed after the report that I don't have the certificate signer, so I asked it to use certutil to dump the cert on the binary and get that information.

Comments
Post a Comment