Elastic Security Labs uncovers BRUSHWORM and BRUSHLOGGER

Elastic Security Labs uncovers BRUSHWORM and BRUSHLOGGER

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