Modern malware campaigns are increasingly shifting away from noisy exploits and instead abusing trusted binaries already present on victim systems. One such technique involves DLL sideloading using ahost.exe, a legitimate Windows executable that quietly enables attackers to execute malicious code under the guise of a trusted process.
This campaign is notable not only for its stealth, but also for its multi-actor adoption, with several unrelated threat groups leveraging the same execution chain to deploy a wide range of payloads, from commodity infostealers to full-featured remote access trojans.
Understanding the Abuse of ahost.exe
Ahost.exe is a legitimate Windows executable bundled with certain Git-related software packages. It depends on the dynamic library libcares-2.dll to perform DNS-related operations. Critically, ahost.exe does not use secure DLL loading mechanisms, making it vulnerable to classic DLL search order hijacking.
When executed, Windows attempts to load required DLLs in the following order :
- The directory from which the application is loaded
- System directories
- Windows directories
- Current working directory
Attackers exploit this behavior by placing a malicious libcares-2.dll in the same directory as ahost.exe. When ahost.exe launches, it loads the attacker-controlled DLL instead of the legitimate one, immediately executing malicious code before any visible malicious behavior occurs.
Attack Chain Breakdown
Stage 1: Initial Delivery
Victims typically receive a compressed archive via phishing or social engineering. The archive contains:
- A renamed copy of ahost.exe
- A malicious libcares-2.dll
- Sometimes a decoy document or loader script
Common archive formats:
.zip.rar.7z
Stage 2: Execution & DLL Sideloading
When the victim launches the renamed executable:
- The process name appears legitimate
- The binary is digitally signed
- Endpoint defenses often allow execution
However, during initialization:
- ahost.exe loads
libcares-2.dllfrom its local directory - The malicious DLL executes its
DllMain()or exported functions - Control is immediately transferred to attacker code
Stage 3: Payload Deployment
The sideloaded DLL typically performs one or more of the following actions:
- Drops an encrypted payload to
%AppData%,%Temp%, or%ProgramData% - Injects shellcode into legitimate processes (e.g.,
explorer.exe,svchost.exe) - Establishes persistence via:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run- Scheduled tasks
- Initiates C2 communication over HTTP, HTTPS, or TCP
Payloads observed include:
- Information stealers (browser data, credentials, crypto wallets)
- Remote Access Trojans (screen capture, keystrokes, command execution)
- Secondary loaders enabling modular malware delivery
Multi-Actor Usage Pattern
One of the defining traits of this campaign is that ahost.exe is not tied to a single malware family. Instead, it functions as a shared execution vector adopted by multiple threat actors.
Distinct indicators include:
- Different encryption routines in malicious DLLs
- Varying persistence mechanisms
- Diverse C2 infrastructures
- Different packing and obfuscation methods
This strongly suggests that the technique is being reused, shared, or independently rediscovered rather than operated by a single group.
Indicators of Compromise (IOCs)
Indicator of Compromise(IOCs):
| SHA256 | Filename |
| 7c41ac7b5bf15e34d50d6abbe28254e94e6c21e0ccab9fa68aca05049a515758 | Cesvaine.dll |
| e7be7413c4cff8595de4cbc9c8621163565afe3e57412e59be3389aef1a18cc5 | Ջերմուկ.dll |
| 0b7660173e0bfe2ff7015014d5c7cc1f27e9e80c330f5553316f5c031b387d15 | Gdansko.dll |
| a7d7965baed40cfd0edbc9d7ef3052dcf20148769b2dfe32d0117dbd762b8a9d | F**kLuciferJesusIsTheLORD.dll |
| 791a7d2710409cf72cf34bd4c29a3ebfe17ad3217d138215c0e03aa3513c8d0e | Emifimozicozopinu |
| e533da586b912241cc8c5d4762d78607b50b75cb7070ad839d72f8ee76cb5636 | Avasirexexoyaxuzo |
Contacted Domains (C2 Communication)
hxxp[:]//dgflex[.]duckdns[.]org
Suspicious File Names (Renamed ahost.exe)
Order.exe
Invoice.exe
Payment_Details.exe
1DOC-PDF.exe
Scan_2024.exe
Quotation.exe
Malicious DLL Name
libcares-2.dll
(Located in the same directory as the executable)
Suspicious Execution Paths
%AppData%\Local\
%Temp%\
%ProgramData%\
%UserProfile%\Downloads\
Registry Persistence Indicators
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
Network Indicators (Generic Patterns)
- Outbound connections shortly after ahost.exe execution
- User-agent spoofing (Chrome, Firefox, curl)
- Encrypted POST requests with small, frequent beacons
- IP-based C2 endpoints instead of domains
- High-entropy POST bodies
Behavioral Indicators
- ahost.exe spawning:
cmd.exepowershell.exemshta.exe
- DLL loaded from non-standard directory
- Network activity from ahost.exe (unexpected behavior)
- Creation of files with random names and no extensions
Why Traditional Detection Fails
This attack succeeds because:
- The executable is legitimate and signed
- The malicious behavior originates from a DLL, not the EXE
- Static hash-based detection is ineffective
- Filename-based trust assumptions are abused
Without behavioral monitoring, this execution chain blends into normal system activity.
Defensive Detection Strategies
Security teams should focus on:
- Monitoring DLL load paths, especially for signed binaries loading libraries from user-writable directories
- Behavioral EDR rules that flag network activity from developer utilities
- DLL allow-listing using hash or certificate validation
- Hunting for renamed legitimate binaries executing outside standard install paths
- Alerting on mismatched file metadata (signed EXE + unsigned DLL)
Final Thoughts
The abuse of ahost.exe highlights a growing trend: attackers no longer need exploits when trust can be hijacked instead. By weaponizing legitimate binaries and exploiting weak DLL loading practices, threat actors can bypass traditional defenses while maintaining a low operational footprint.
This campaign serves as a reminder that execution context and behavior matter far more than file reputation alone. In modern environments, visibility into runtime behavior is not optional — it is essential.
