Elastic Security Labs discovered two custom tools deployed against a South Asian financial institution: BRUSHWORM, a modular backdoor that establishes persistence, downloads plugins, spreads via USB, and steals a broad set of file types; and BRUSHLOGGER, a DLL side-loading keylogger that captures system-wide keystrokes with window context and writes XOR-encrypted logs. Analysis found scheduled-task persistence, C2 communication to resources.dawnnewsisl[.]com/updtdll, AES/XOR handling of configuration and logs, and multiple iterative testing builds on VirusTotal, indicating an inexperienced or still-developing author. #BRUSHWORM #BRUSHLOGGER
Keypoints
- Two custom binaries were found on the victim: BRUSHWORM (paint.exe) as the primary modular backdoor and BRUSHLOGGER (libcurl.dll) as a DLL-side-loading keylogger.
- BRUSHWORM establishes persistence via scheduled tasks, downloads modular DLL payloads from resources.dawnnewsisl[.]com/updtdll, and records stolen files and hashes before exfiltration.
- BRUSHWORM spreads via removable media using socially engineered filenames and can stage stolen files on USB drives to bridge air-gapped environments.
- BRUSHLOGGER installs a system-wide low-level keyboard hook (WH_KEYBOARD_LL), logs window context and timestamps, and writes XOR-encrypted keystroke logs to C:programdataPhotoes_.trn.
- Both binaries include basic sandbox/anti-analysis checks (screen resolution, username/computer name, CPUID hypervisor checks, and mouse activity), but overall code quality and operational security are low.
- Multiple development/testing versions (e.g., V1.exe, V2.exe) were identified on VirusTotal, some using free dynamic DNS in testing, suggesting iterative development and limited OPSEC.
- Elastic published YARA rules and observables (SHA-256s, domain, filenames) to detect these samples and will continue monitoring the activity cluster.
MITRE Techniques
- [T1053.005 ] Scheduled Task/Job â Used to maintain persistence and execute payloads (âcreates a Windows scheduled task named MSGraphics through the COM Task Scheduler interfaceâ and âMSRecorder that uses rundll32.exe to load and run itâ).
- [T1574.001 ] DLL Search Order Hijacking / DLL Side-Loading â BRUSHLOGGER masquerades as libcurl.dll to execute malicious code via DLL side-loading (âmasquerades as libcurl.dll by exporting seven standard curl_easy_* API functionsâ and âmalicious functionality executes entirely from the DllMain entry pointâ).
- [T1218.011 ] Signed Binary Proxy Execution: rundll32.exe â The backdoor runs downloaded DLL modules by invoking rundll32.exe to load Recorder.dll (âThe downloaded DLL is executed by creating a second scheduled task named MSRecorder that uses rundll32.exe to load and run itâ).
- [T1056.001 ] Input Capture: Keylogging â BRUSHLOGGER installs a system-wide low-level keyboard hook to capture keystrokes and window context (âSetWindowsHookExA(WH_KEYBOARD_LL, keyboard_hook_callback, NULL, 0);â and âretrieves the foreground window handle via GetForegroundWindowâ).
- [T1052 ] Exfiltration Over Physical Medium â BRUSHWORM copies stolen files to removable drives when network access is unavailable to physically remove data from air-gapped or restricted environments (âit additionally copies stolen files and files from the userâs profile directory ⌠to the removable drivesâ).
- [T1105 ] Ingress Tool Transfer â The backdoor downloads modular payloads from its C2 using WinHTTP to retrieve DLLs (âuses the WinHTTP library to issue a GET request to the C2 server at the URI /updtdll to download a DLL payloadâ).
- [T1071.001 ] Application Layer Protocol: Web Protocols â C2 communication and payload retrieval occur over HTTP(S) to a web-hosted endpoint (âC2 server at the URI /updtdll to download a DLL payloadâ and âThe C2 serverâs SSL certificate is issued by Letâs Encryptâ).
- [T1497.001 ] Virtualization/Sandbox Evasion: Check for Virtualization/Sandbox â The malware performs environment checks including screen resolution, username/computer name, CPUID hypervisor checks, and mouse activity to detect analysis environments (âScreen resolution check: If the display resolution is less than 1024Ă768 pixels, execution terminatesâ and âthe malware checks whether the machineâs username or the computer name is âsandboxââ).
- [T1005 ] Data from Local System â BRUSHWORM enumerates and collects a wide range of document, spreadsheet, email archive, archive, and code file types from local and removable storage for staging and exfiltration (âstolen files are staged in the C:UsersPublicSysteminfo directoryâ and targets extensions such as .docx, .xlsx, .pst, .zip, .py, etc.).
Indicators of Compromise
- [SHA-256 ] Malware samples â 89891aa3867c1a57512d77e8e248d4a35dd32e99dcda0344a633be402df4a9a7 (paint.exe, BRUSHWORM), 4f1ea5ed6035e7c951e688bd9c2ec47a1e184a81e9ae783d4a0979501a1985cf (libcurl.dll, BRUSHLOGGER).
- [Domain ] C2 / download endpoint â resources.dawnnewsisl[.]com/updtdll (used by BRUSHWORM to GET Recorder.dll and perform C2 communication).
- [File name ] Observed binaries and test builds â paint.exe (BRUSHWORM), libcurl.dll (BRUSHLOGGER), and testing uploads named V1.exe, V2.exe (iterative development on VirusTotal).
- [File path ] Installation and staging directories â C:ProgramDataPhotoes (installation folder) and C:UsersPublicSysteminfo (staged stolen files).
- [Task names ] Persistence / execution artifacts â MSGraphics (scheduled task for backdoor persistence) and MSRecorder (scheduled task to execute downloaded Recorder.dll).
Read more: https://www.elastic.co/security-labs/brushworm-targets-financial-services