Our research honeypot captured this 71,171 byte file on 2026-10-30. It is a 32-bit Windows DLL, not a standalone program, built with Microsoft Visual C++ 2010 (linker 10.00). A DLL like this needs something else to load it, so we infer it was meant to be pushed and loaded by an exploit or another tool rather than double-clicked by a user.
A DLL downloader from our honeypot that pulls three programs from indexsinas.me
A small 32-bit DLL caught by our honeypot exists for one job: the moment it is loaded, it fetches three executables from an operator server on port 811, drops them in C:\Windows and runs them hidden.
Caleb, our malware analysis agent, examined the sample in an isolated container with no network. The program was only read by tools or run inside an emulator, never on a real computer. Analysis steps: Packer check, Static analysis, Emulation, Cross-references, Our rule engine. This write-up is built from that tool output and was reviewed by a person before publishing. The sample came from our own research honeypot; no customer data was used.
- The DLL holds three plain-text URLs on 2[.]indexsinas[.]me port 811 for 86.exe, iexplore.exe and c64.exe, each paired with a save path in c:\Windows.
- Its only network import is URLDownloadToFileA and its execution import is WinExec, which fits a download and run loader with nothing else to do.
- The download code is reached from the DLL entry point when it is loaded, so no export has to be called for the payloads to be fetched.
- Nothing is packed or encrypted: it is an ordinary Visual C++ 2010 build with modest entropy.
- The three payloads were not available to us, so the real goal of the operator sits on a server we did not reach.
How it reached us
entropy: 5.25 type=Tool name=Visual Studio version=2010 info= part=Header packed: false format: PE32
The file is an unpacked PE32 built with Visual Studio 2010, with modest overall entropy.
Stage one: the downloader DLL
It runs the moment it is loaded
We emulated the DLL starting at its entry point as if Windows had just loaded it (DLL_PROCESS_ATTACH). The routine that handles the first download, FUN_10011b70, is reached by an unconditional jump at 0x100114ba in the entry code. This matters to the attacker: whoever loads the DLL does not need to know any export name, simply loading it is enough.
from=0x100114ba function=FUN_10011b70 type=UNCONDITIONAL_JUMP
The first download routine is reached by a direct jump from the DLL's startup code.
Three downloads from one server
The DLL contains three URLs on 2[.]indexsinas[.]me port 811, each used by its own small function (FUN_10011b70, FUN_10011c00, FUN_10011c90). Its only network import is URLDownloadToFileA from URLMON.DLL, which saves a URL straight to disk. Using a non-standard port and a single short domain keeps the loader tiny and lets the operator swap payloads on the server at will.
- WinExec - URLDownloadToFileA - WinExec - URLDownloadToFileA value: hxxp://2[.]indexsinas[.]me:811/86[.]exe value: c:\Windows\86.exe value: hxxp://2[.]indexsinas[.]me:811/iexplore[.]exe value: c:\Windows\iexplore.exe value: hxxp://2[.]indexsinas[.]me:811/c64[.]exe value: c:\Windows\c64.exe - URLDownloadToFileA - WinExec - URLDownloadToFileA - WinExec - hxxp://2[.]indexsinas[.]me:811/86[.]exe - c:\Windows\86.exe - URLDownloadToFileA - WinExec - URLDownloadToFileA - WinExec - hxxp://2[.]indexsinas[.]me:811/iexplore[.]exe - c:\Windows\iexplore.exe - URLDownloadToFileA - WinExec
Plain-text URLs and save paths sit next to the download and execute imports.
Dropped in C:\Windows under familiar names
Each file is saved directly in c:\Windows as 86.exe, iexplore.exe or c64.exe. The name iexplore.exe imitates Internet Explorer; we infer it is chosen so a process list looks normal at a glance, though the real browser does not live in the Windows root folder. The names 86 and c64 suggest 32-bit and 64-bit builds of the same tool, but that is our inference.
Started hidden
The import table pairs WinExec with Sleep, and our reading of the decompiled routines shows each download is followed by a 5 second pause and a WinExec call with a hidden window. The user sees nothing while three new programs start. The IsDebuggerPresent and GetTickCount imports belong to the standard C runtime startup code, not to any anti-analysis check, as the runtime initialisation in emulation shows.
kind: dll_entry.DLL_PROCESS_ATTACH api: KERNEL32.GetTickCount api: KERNEL32.QueryPerformanceCounter - KERNEL32.GetTickCount - KERNEL32.QueryPerformanceCounter
Emulation starts at DLL load and the early timing calls are ordinary runtime initialisation.
What happens when the DLL is loaded.
Talking to the operator
There is no command channel in this DLL: the only contact with the operator is the three HTTP downloads from 2[.]indexsinas[.]me on port 811. Our rule engine matched the domain, the three URL tails, the save paths and the download import in this file and matched none of 598 clean files. Because the URLs are not encrypted, blocking or sinkholing that one host defeats this stage completely.
rule: indexsinas_downloader_dll id=$u1 offset=0xb5de data=3a3831312f38362e657865 id=$u2 offset=0xb62a data=3a3831312f696578706c6f72652e657865 id=$u3 offset=0xb672 data=3a3831312f6336342e657865 matchedCount: 0
A rule built on the URLs and paths matches this sample and no clean files.
Who may be behind it
No tool output named a family or actor, so we do not attribute this sample. The domain name indexsinas.me is the strongest thread for anyone tracking the campaign, and the payload names hint at a toolkit with separate 32-bit and 64-bit builds, but that remains an inference until the payloads are recovered.
Indicators
Every indicator the analysis found. Network indicators are defanged so they cannot be clicked. We never share the sample itself.
| Type | Indicator | Context |
|---|---|---|
| SHA-256 | 56dededa09c602a20079ec6aa5b5be0cab897c92f2b5ad98c9d9c1f401b13fd7 | The sample |
| Domain | 2[.]indexsinas[.]me | Seen in Static analysis (E1) |
| URL | hxxp://2[.]indexsinas[.]me:811/86[.]exe | Seen in Static analysis (E1) |
| URL | hxxp://2[.]indexsinas[.]me:811/iexplore[.]exe | Seen in Static analysis (E1) |
| URL | hxxp://2[.]indexsinas[.]me:811/c64[.]exe | Seen in Static analysis (E1) |
| File path | c:\Windows\86.exe | Seen in Static analysis (E1) |
| File path | c:\Windows\iexplore.exe | Seen in Static analysis (E1) |
| File path | c:\Windows\c64.exe | Seen in Static analysis (E1) |
MITRE ATT&CK
| Tactic | Technique | ID | Evidence |
|---|---|---|---|
| Command and Control | Ingress Tool Transfer | T1105 | Downloads three next-stage executables over HTTP on port 811 from 2[.]indexsinas[.]me (FUN_10011b70, FUN_10011c00 and FUN_10011c90 call URLDownloadToFileA; emulation logged 3 URLDownloadToFileA calls… |
| Defense Evasion | Match Legitimate Resource Name or Location | T1036.005 | Saves the downloads in C:\Windows under the names 86.exe, iexplore.exe and c64.exe. The name iexplore.exe imitates a real Windows program (the purpose is an inference) (Emulation logged file creates … |
| Execution | Native API | T1106 | Starts each downloaded file with WinExec and a hidden window (nCmdShow 0), 5 seconds after the download (Decompiled code shows Sleep(5000) then WinExec(path,0); emulation logged process creation for … |
| Execution | Shared Modules | T1129 | Does all of this as soon as the DLL is loaded, with no export needing to be called (Emulation of dll_entry.DLL_PROCESS_ATTACH reached the download and run calls; FUN_10011b70 is reached by a jump at … |
Detection
Executables written to the Windows root with this loader's names
DeviceFileEvents
| where ActionType == 'FileCreated'
| where FolderPath matches regex @'(?i)^c:\\windows\\(86|c64|iexplore)\.exe