CyberStrikeAI attacks educational institutionsCyberStrikeAI攻击教育机构
We analyze a series of attacks on educational institutions that were fully automated during the post-exploitation phase using the CyberStrikeAI penetration testing framework.

Timeline of the attack
CyberStrikeAI overview
Execution & Privilege Escalation
Collection & Exfiltration
Detection by Kaspersky solutions
Indicators of compromise
As part of proactive threat monitoring, Kaspersky’s Cyber Threat Intelligence team identified a malicious campaign involving C2 agents controlled by artificial intelligence. Confirmed victims of the campaign included organizations in the education sector in several countries across Africa and Latin America. CyberStrikeAI played a key role in the post-exploitation phase. This is an open-source framework in which an LLM orchestrator on the command-and-control server plans actions, selects tools, and generates commands, while an implant executes them on compromised hosts. Using CyberStrikeAI, the attackers progressed from reconnaissance to full domain compromise.
According to our data, this is one of the first public descriptions of a compromise involving an LLM in the wild. The campaign we discovered clearly illustrates how the role of AI in attackers’ arsenals is evolving: until recently, language models were used primarily during preparatory stages – for writing phishing emails, debugging code, or searching for vulnerabilities. Now, however, they are being embedded into the very core of the attack, automating actions at every stage: payload execution, persistence on the host, discovery, lateral movement, and, finally, data collection and exfiltration. Post-exploitation – the stage that traditionally required manual work by an experienced operator – plays a particularly significant role here.
A key feature of the scheme using the CyberStrikeAI framework is that the implant ceases to be a simple tool for executing the operator’s commands. Decisions are distributed across two levels: the operator defines the task in general terms, while the model determines how to execute it – specifically, which commands to send to the host and in what sequence. Thus, the strategic planning remains with the human, while the choice of technical steps is delegated to the model, and the implant executes the model’s decisions.
To understand how this scheme works in practice, let’s examine the chain of actions taken by the attackers, as reconstructed by our analysts during the incident investigation.
Let’s examine the timeline of the attack using an example from one incident within the detected campaign.
The first phase follows a standard approach: a human operator gains access to the victim’s infrastructure via a compromised SQL Server (version 16.0.1000), then collects basic information about the host, deploys tools, and conducts network reconnaissance. All of this activity takes nearly a day, followed by a two-week pause.
The second phase is fundamentally different. The first step involves deploying the CyberStrikeAI C2 agent, which receives commands from a server-based LLM orchestrator. During the second phase, the agent performs the following:
establishing persistence and conducting local reconnaissance within 2 minutes;
conducting domain reconnaissance over the next 5 hours;
after a brief pause of several days, moving on to the final stage – lateral movement via SMB and WMI, mass credential dumping on hosts, and database export – with the entire operation taking no more than one hour.
We’ll discuss these stages in more detail in the next section.
CyberStrikeAI is an open-source, modular platform written in Go for automating penetration testing. Its key feature is combining LLM-based attack orchestration and a built-in C2 server with agents (beacons) within a single server process.
The entire “intelligent” layer is isolated on the control server. C2 functions (calling reconnaissance and exploitation utilities, managing webshell connections, assigning tasks to agents, and reading results) are available to the model as MCP tools. The implant is a classic C2 agent with no AI functionality – no API keys, no calls to AI service APIs, and no autonomous logic. It periodically polls the listener server via HTTP/S, TCP, or WebSocket, executes shell commands, and interacts with the file system. To the victim, this activity looks like a typical remote-control session, where a server-side LLM orchestrator queues tasks instead of a live operator. The LLM influences how decisions are made, but not how the corresponding commands are delivered to the host.
Although CyberStrikeAI is publicly available, specific instances of the framework can be linked to specific attackers or campaigns. Detection and attribution are possible based on the following artifacts:
Control panel : Upon launch, a self-signed TLS certificate is generated, with the framework’s name appearing in the issuer and subject fields. The certificate is created in memory at each startup, so the not_before field effectively records the time the process was launched. Accordingly, as with Cobalt Strike, the chronology of restarts can be reconstructed from the scan history. CyberStrikeAI control panel’s self-signed TLS certificate
CyberStrikeAI control panel’s self-signed TLS certificate
Implant : The build metadata ( go version -m ) contains a path to the main package, which includes data pointing to the built-in CyberStrikeAI generator – a temporary directory with the build identifier. This path is identical for all payloads, making it a reliable signature. Additionally, the build info field contains version control system metadata, which can be used to compare samples against one another.
Authentication : When communicating with the server, the implant sends an X-Implant-Token header with a fixed value in the HTTP request. The token is unique to each C2 server and is embedded into the malicious payload during the build phase; therefore, it serves as both a network indicator and a sign that the samples belong to the same server.
HTTP header parameters sent by the implant to the server
It should be noted that the implant version does not reflect the server version. The implant can operate for months while the operator updates the server-side components: listener configurations and keys are preserved during updates. In the incidents we detected, we observed the use of a single agent version throughout the entire incident. In such cases, the sample’s build date may indicate the earliest possible deployment date of the CyberStrikeAI infrastructure, but it still does not provide an estimate of the compromise duration.
The first malicious commands on the victims’ systems in the campaign under investigation originated from the sqlservr.exe process, indicating the likely initial access vector and the context in which the attackers gained the ability to execute code. It is important to note that the commands marked as having been executed prior to agent installation were executed manually by the attacker specifically within the context of this process. At this stage, we are not yet dealing with automated implant activity, but rather with manual actions by the operator.
Before launching the agent on the machines, the attackers checked for its presence using a PowerShell script, from which we can deduce its default deployment paths: C:\Windows\Temp\, C:\Windows\, C:\ProgramData\, C:\Temp. At the same time, the attacker can disguise the agent’s name as that of a legitimate system process. In the example below, it mimics svchost.exe (svchost s .exe)
Checking for the presence of the CyberStrikeAI agent on the system
Delivery and execution of the CyberStrikeAI agent
Like most C2 agents for Windows, CyberStrikeAI uses PowerShell to execute its payload. When a request is received from the operator, the commands to be executed are additionally encoded in Base64 to bypass keyword-based detection.
Decoded form of the command:
When administrative privileges were available (for example, a domain administrator account), instead of executing commands directly, the agent on remote hosts often created scheduled tasks so that the malicious payload would run with SYSTEM privileges:
An alternative method that does not use schtasks utility is to create a task via the Schedule.Service COM object:
The payload (p1.ps1) from the example above is a reverse shell that connects to the server at 185.186.245[.]144:5501:
The p1.ps1 payload and similar scripts were distributed across the network using shared network administrative folders and the WMI protocol, which we will describe in more detail in the Lateral Movement section.
In addition to encoding commands in Base64 and obfuscating SQL/LDAP queries – which we will describe in the Collection & Exfiltration and Discovery sections, respectively – the attackers split the malicious payload into multiple files. It is noteworthy that the scripts were transmitted in this manner even before the agent was installed – that is, at a stage where human intervention is typically required – yet they clearly bear the hallmarks of being generated by an LLM.
Below is a sequential record of several script fragments written to the file d3.b64.
Subsequently, the attackers used the certutil utility to decode the resulting file and executed it with the following command:
Once assembled and decoded, the script’s contents looked like this:
The script is a tool for decrypting DPAPI secrets from the file C:\ProgramData\dsn_line.txt. This file, in turn, is populated by the following command, which searches for a DSN string containing connection settings in the SQL Server Reporting Services configuration file rsreportserver.config and copies its contents to dsn_line.txt.
It is worth noting that some of the scripts delivered and executed as described above contain comments in Chinese (## – researcher’s comments).
If the CyberStrikeAI implant was successfully delivered, the first step was to establish persistence on the target system. To do this, the agent created a scheduled task named SystemUpdate , which specified the path to the implant as the action to be performed:
Analysis of the framework’s source code revealed an alternative method of persistence: by adding a value to the registry key HKCU\Software\Microsoft\Windows\CurrentVersion\Run , where the name of the created value matches the task name ( SystemUpdate ).
Agent persistence on Linux systems is also implemented in two ways – by adding the entry @reboot <path_to_beacon> & to the user’s crontab (in which case the process runs at system startup), or by adding the line (nohup <path_to_beacon> &>/dev/null &) to ~/.bashrc (in which case the agent starts when an interactive bash shell is opened).
It is worth noting that the choice of a specific persistence method is delegated to the LLM connected to CyberStrikeAI. However, thanks to the human-in-the-loop (HITL) mechanism, the operator retains full control over the process: commands generated by the model may require manual approval or correction before they are executed.
Before installing the agent on a compromised host, the attackers manually gathered basic system information using a fairly trivial set of commands:
The attackers also manually checked for internet access and obtained the external IP addresses of the compromised machines using the Chinese service dnslog[.]cn. The service generates a random third-level domain, after which the attackers attempt to resolve it on the compromised machine.
If the machine has internet access, the request succeeds, and the attackers obtain the external IP address of the compromised device on the service’s page.
For reconnaissance purposes, the agent generates a more complex script designed to map out a path for further privilege escalation by compromising SCCM or exploiting msiexec (the AlwaysInstallElevated key):
Additionally, to find ways to elevate privileges locally, the agent executed scripts to inventory services running under domain accounts and tasks running under the SYSTEM account:
During their activity, the attackers periodically checked for Microsoft Defender detections:
After gathering information about the compromised host, the attackers proceeded to conduct reconnaissance within the network. During the preparatory phase of the attack, they manually collected additional information about remote hosts using the net.exe utility.
During the main phase, the agent used PowerShell’s built-in functionality to detect accessible hosts without relying on additional utilities (such as nmap or fscan):
Additionally, relevant LDAP queries to Active Directory objects helped build a network map:
Furthermore, the presence of the installed agent on remote hosts was verified using WMI:
The next step was to gather information about the victims’ domains. To this end, before installing the agent, the attackers used standard OS utilities:
However, later on, using the CyberStrikeAI implant, reconnaissance was carried out via generated PowerShell scripts:
In addition to basic domain information, the agent performed LDAP queries to gather information for Kerberoasting and AS-REP Roasting attacks:
Finally, the agent was used to check the domain for the presence of LAPS and Microsoft Azure:
To detect signs of Microsoft Azure usage within the infrastructure, the attackers also searched for the .azcopy directory – created by the AzCopy (Microsoft Azure Storage Copy) utility – in users’ home directories:
After successfully conducting reconnaissance and mapping the network, the attackers moved on to the next stage – dumping credentials. For this purpose, the agent used a classic set of LOLBINs and well-known third-party tools.
The agent dumped registry hives containing credentials using the reg.exe utility:
The agent dumped the lsass.exe process using the MiniDump function of the comsvcs.dll library. In doing so, the target process’s PID was used instead of its name to make static detection based on the command line more difficult:
After successfully compromising privileged domain accounts (specifically, the built-in domain administrator), the attackers also carried out DCSync and Golden Ticket attacks via the agent using a renamed version of the mimikatz utility:
To spread across the network using compromised accounts, the attackers employed utilities from the Impacket toolkit, specifically WMIExec, as indicated by the utility’s characteristic command line:
Once installed, the agent prefers to use standard OS mechanisms, such as shared network folders.
Another method the agent uses to remotely execute commands is the WMI protocol. In particular, the agent used it to distribute the aforementioned p1.ps1 reverse shell script. This involved using compromised user accounts with local administrator privileges on the target hosts:
A second method of lateral movement via WMI uses the Invoke-CimMethod cmdlet:
To deliver the aforementioned tools (malicious scripts, mimikatz, and the agent itself) to the initial nodes in the infection chain, the attackers used standard OS utilities:
After the agent is installed, it checks the availability of the C2 server’s ports. The implementation mechanisms here are virtually unlimited and depend on the “creativity” of the respective LLM agents connected to the server:
To download additional utilities, the CyberStrikeAI implant also used built-in utilities (LOLBINs). The tools could be hosted on the attackers’ own servers or downloaded directly from GitHub:
The data collection phase deserves special attention. It demonstrates yet another capability of LLM orchestration – the automatic generation of SQL and LDAP queries tailored to a specific task.
In one incident during the campaign, the attackers deployed the CyberStrikeAI implant on an educational organization’s SQL server and collected information from the database via PowerShell. Here is an example of a command executed by the agent:
Normalized view of the executed script with comments:
Before accessing the data, the agent checked the privileges of the account under which it connected to the database:
In decoded form, the check looks as follows:
On network resources, file collection was preceded by a recursive directory scan to identify files of interest.
To interact with the file system, the implant provides a built-in interface that supports direct uploading and downloading of files. Files are transferred directly via the main encrypted communication channel with the C2 server (HTTP or TCP), and the data itself is encoded in Base64 and packaged into the agent’s standard JSON responses.
Another built-in capability of the implant is taking screenshots of the infected machine. As with other actions, the implant does not initiate this on its own: the command to capture the screen is issued by the LLM orchestrator, and the agent merely executes it and returns the result via the same control channel.
On Windows, the command for taking screenshots looks like this:
The Linux version looks like this:
In the incidents we detected, data collection was the final stage of the attack: the chain ended there, and we observed no further activity.
The key artifact for attribution in this campaign is the implant’s build metadata. The attackers built the malicious payload inside a Git clone of the project, so the Go compiler embedded version control system information into the binary files – the hash and commit time, as well as the vcs.modified=true flag (analogous to the +dirty suffix) – indicating uncommitted local changes in the working copy. The combination of these fields forms a unique fingerprint for a specific build.
Based on this fingerprint, the samples are divided into two independent groups, in each of which the Windows implant and the Linux implant have completely identical build metadata. A match indicates that, within each group, both payloads were built from the same project working copy.
Identical build metadata for the Windows and Linux implant samples, indicating a shared build environment
However, these groups do not overlap with one another. They do not share a common C2 infrastructure, and different versions of CyberStrikeAI are deployed on the command-and-control servers. In other words, the build metadata reliably links the samples within each group but does not provide grounds for linking the two groups together.
Differences in CyberStrikeAI versions on the command-and-control servers
The available data does not allow us to link the activity to any known group of attackers, nor to state with certainty that the same operator is behind both campaigns. Two factors prevent this. First, the tool’s openness: CyberStrikeAI is publicly available, so different operators could have independently deployed it and assembled malicious payloads under similar conditions. Second, command generation by the model: the “signature” characteristic of a specific operator is largely shaped not by a human but by an LLM. On the one hand, this increases the diversity of commands: the same command, when generated multiple times, can look different. On the other hand, it strips them of their individual characteristics, which reduces the value of behavioral metrics for attribution.
However, the Chinese-language comments found in the attackers’ scripts and the use of Chinese services still suggest a connection between the activity and a Chinese-speaking operator. In addition, analysts noted the timing of the control servers’ restarts: since the self-signed TLS certificate is regenerated each time the process starts, its not_before field records the restart time, and most of these restarts occurred during business hours in the UTC+8 time zone.
The origin of the tool itself also indirectly points in the same direction: CyberStrikeAI was developed within the Chinese cybersecurity community and is well known there.
CyberStrikeAI is a telling – though not unique – example of a shift occurring within the class of C2 frameworks: the LLM orchestrator is no longer merely an add-on to reconnaissance but has become a control layer over post-exploitation. If HexStrike AI and similar tools cover the “find and break” phase, and Sliver/Mythic/Havoc cover the “establish a foothold and control” phase, CyberStrikeAI completes the kill chain: a single server-side process written in Go executes utilities via MCP, handles webshell connections, and assigns tasks to the implant, while the model analyzes the results and decides what to do next.
The key takeaway is that the introduction of AI into the attack chain does not yet present fundamentally new challenges for detection. All the “intelligent” work remains on the attacker’s side, while the compromised host is subjected to familiar actions: from reconnaissance via Kerberoasting and AS-REP Roasting to LSASS dumps, DCSync, and the Golden Ticket attacks. This is a typical, well-documented set of domain compromise techniques. The novelty of the attack lies not in the methods themselves, but in the speed and ease with which they were executed: AI orchestration has lowered the skill requirements for the operator, but has not taken the attack beyond what defenders already know and are capable of detecting. The timing is also telling: individual key phases of the activity (such as establishing a foothold, lateral movement, and obtaining credentials) took only a few hours, and the entire attack – from agent deployment to the compromise of domain administrators – was completed within 3–4 days.
However, the CyberStrikeAI architecture does not limit users to the scenario described. The same mechanisms allow for the on-demand assembly of more complex chains – including DPAPI secret extraction and attacks on SCCM and Azure IMDS – all of which are within reach of the same group of actors, with a relatively low skill barrier. As the models evolve, the gap between the complexity of orchestration and the level of techniques used will narrow, and the operator’s role will gradually shift from setting tasks to monitoring the model’s actions.
It may seem that attacks using AI agents require the creation of fundamentally new detection rules. Indeed, to detect the activity of an LLM agent installed on a host within the infrastructure, it is necessary to create detection logic based on the specific characteristics of the agents. Detection rules for this activity can be found using Hunt Hub with the following filter .
However, in the case of the attack described, a different logic applies. The main difference lies in the architecture of the attack itself: the LLM agent was not located within the corporate network perimeter. It operated remotely via a C2 agent, orchestrating actions, and left no traces of its presence in the infrastructure (such as specific API requests to local LLMs or anomalous patterns of resource consumption by hosts).
The key difference between this activity and an attack by an experienced human operator lies largely in speed. Tactically, technically, and methodologically, AI, for the most part, uses exactly the same tools, utilities, and techniques as a human penetration tester. It does not write unique exploits from scratch, but rather combines known methods and dynamically adapts them to the situation, handling the tools’ errors on its own.
Since the actions performed by an AI agent on the network are indistinguishable from those of a human, classic, well-tuned correlation and behavioral analysis rules are sufficient to detect it. Here are a few examples of how Kaspersky Next EDR Expert successfully detects the attack described:
To detect the execution of a malicious script via a remote scheduled task, you need to monitor the creation of the schtasks.exe process with the /s argument. EDR Expert detects this activity using the rules create_task_on_remote_host_using_standard_tool , scheduled_task_creation_as_system_via_schtasks , and scheduled_task_with_powershell_execution .
During the attack, the adversary will need access to the victim’s credentials; in the described case, one way to obtain them was through a well-known technique that uses legitimate tools to dump LSASS, specifically by calling the MiniDump function from comsvcs.dll. The EDR Expert solution detects this activity using the rules dumping_memory_with_com_services_dll and suspicious_lsass_memory_access .
A significant part of the attack chain is lateral movement, which helps the attacker navigate within the infrastructure and achieve their desired objectives. In the described case, the WinRM protocol is used to initiate connections directly from PowerShell. This is a standard technique that allows the attacker to execute commands on remote machines without using additional network tunnels. The EDR Expert solution detects this activity using the rules using_powershell_for_remote_execution_via_wmi and winrm_send_command.
Kaspersky Anti Targeted Attack (KATA) is used to detect malicious activity in network traffic. Communication between CyberStrikeAI agents and the command-and-control server occurs without accessing AI platforms such as ChatGPT or Claude. Instead, the agent’s C2 server is an infrastructure pre-configured by the attackers, just as in attacks that do not use AI agents. Analysis of decrypted network traffic using NDR-class solutions reveals characteristic communication patterns of CyberStrikeAI agent activity. When these patterns are detected, KATA generates an alert with the verdict Backdoor.CyberStrikeAI.HTTP.C&C .
Alert regarding the detection of CyberStrikeAI communication with a C2 server
To detect post-exploitation activity, you can use not only IDS technology but also NAD (Network Anomaly Detection). It analyzes all traffic for suspicious indicators that do not correspond to a node’s typical network activity.
For example, actions performed by CyberStrikeAI during the Domain Discovery phase are detected by an NDR:NAD rule named “Scanning domain records via LDAP queries.”
NDR:NAD alert: reconnaissance via LDAP queries detected
You can learn more about NDR:NAD technology in our article on Securelist .
You can also visualize the connections between C2 addresses and files used by attackers in the Research Graph section of the Kaspersky Threat Intelligence Portal . This includes tracking the emergence of new CyberStrikeAI implants that communicate with malicious addresses.
Visualization via the Research Graph on the Kaspersky Threat Intelligence Portal
In addition, the Threat Lookup service available on the portal allows you to determine whether malicious files belong to CyberStrikeAI using attribution mechanisms based on the executable file’s code.
Demonstration of attributing a malicious implant to the CyberStrikeAI framework
Kaspersky SIEM detects all stages of an attack by the CyberStrikeAI agent. The product repository contains over 100 rules for detecting the techniques discussed in this article; we will list the most critical ones below.
Execution of various commands from the sqlservr.exe process:
R300_04_Windows shell started by a web application
Downloading and executing a payload via PowerShell:
R110_03_PowerShell code downloaded and executed
Creating Windows scheduled tasks:
R099_04_Suspicious arguments when running schtasks.exe
R300_03_Windows shell started by the scheduler
Persisting via crontab or bashrc:
R099_06_Suspicious cron job activity
R405_02_UNIX shell configuration modification
Rules located at the KUMA Packages/SOC package/Configuration discovery path detect the collection of information about hosts, network settings, and domains using various reconnaissance tools. Rules that aggregate detections by reconnaissance tools:
R224_14_Windows reconnaissance activity
R224_09_System information discovery by running multiple utilities within a short period
R224_04_System information discovery via standard Linux tools
Data collection for Kerberoasting and AS-REP Roasting:
R034_01_Multiple TGS ticket requests (Kerberoasting)
R452_18_AS-REP Roasting
Dumping registry hives containing credentials using the reg.exe utility:
R230_02_Copying data containing credentials from the Windows registry
Dumping the lsass.exe process using the MiniDump function of the comsvcs.dll library:
R233_04_Process memory dump via comsvcs.dll
R262_Suspicious access to the LSASS process
DCSync and Golden Ticket attacks using the renamed mimikatz utility:
R450_41_Golden Ticket Attack
R100_03_Traces of Mimikatz use via cmd
Lateral movement using WMIExec:
R460_08_Lateral movement using WMIexec Impacket
R460_09_Lateral movement using WMIExec and Impacket
For the rules to work, you must configure the SIEM system to receive the relevant events:
Process launches (Windows security log – 4688, auditd – execve) and PowerShell commands (4104)
User logins to the system (Windows security log – 4624, 4768, 4769)
Various object manipulations (Windows security log – 4662, 4663, 4656; auditd – openat)
Interaction with shared resources (Windows security log – 5145)
File-based indicators:
Artificial intelligence
CyberStrikeAI in the wild: the use of AI in real-world attacks on organizations
This site uses Akismet to reduce spam. Learn how your comment data is processed.
袭击事件时间线
CyberStrikeAI概述
执行与权限提升
收集与渗漏
卡巴斯基解决方案的检测
妥协的迹象
作为主动威胁监控的一部分,卡巴斯基网络威胁情报团队发现了一起涉及人工智能控制的C2代理的恶意攻击活动。该活动已确认的受害者包括非洲和拉丁美洲多个国家的教育机构。CyberStrikeAI在后渗透阶段发挥了关键作用。这是一个开源框架,其中命令与控制服务器上的LLM编排器负责规划行动、选择工具和生成命令,而植入程序则在受感染的主机上执行这些命令。攻击者利用CyberStrikeAI,从侦察阶段逐步推进到完全控制域。
根据我们的数据,这是首次公开描述涉及实际攻击中的语言模型(LLM)的入侵案例。我们发现的这次攻击活动清晰地展现了人工智能在攻击者武器库中的作用正在不断演变:直到最近,语言模型主要用于准备阶段——例如编写钓鱼邮件、调试代码或搜索漏洞。然而,现在它们已被嵌入到攻击的核心环节,自动化执行每个阶段的操作:有效载荷执行、在主机上持久化、目标发现、横向移动,以及最终的数据收集和窃取。后渗透阶段——传统上需要经验丰富的操作员手动操作的阶段——在这里扮演着尤为重要的角色。
该方案采用 CyberStrikeAI 框架的关键特性在于,植入体不再仅仅是执行操作员指令的工具。决策被分配到两个层面:操作员负责定义任务的总体方向,而模型则负责确定如何执行任务——具体而言,就是向宿主机发送哪些指令以及发送的顺序。因此,战略规划仍然由人负责,而技术步骤的选择则委托给模型,植入体则执行模型的决策。
为了解该方案在实践中是如何运作的,让我们来研究一下攻击者采取的一系列行动,这是我们的分析师在事件调查期间重建的。
让我们以检测到的攻击活动中的一个事件为例,来分析一下攻击的时间线。
第一阶段遵循标准流程:操作人员通过被入侵的 SQL Server(版本 16.0.1000)获取受害者基础设施的访问权限,然后收集主机的基本信息,部署工具并进行网络侦察。所有这些活动大约需要一天时间,之后会暂停两周。
第二阶段与第一阶段截然不同。第一步是部署 CyberStrikeAI C2 代理,该代理接收来自基于服务器的 LLM 编排器的指令。在第二阶段,该代理执行以下操作:
2分钟内建立持续侦察并进行局部侦察;
接下来5个小时将进行区域侦察;
经过几天的短暂暂停后,进入最后阶段——通过 SMB 和 WMI 进行横向移动、在主机上批量转储凭证以及导出数据库——整个操作耗时不超过一小时。
我们将在下一节中更详细地讨论这些阶段。
CyberStrikeAI 是一个用 Go 语言编写的开源模块化平台,用于自动化渗透测试。其主要特点是将基于 LLM 的攻击编排和内置的 C2 服务器与代理(信标)集成在单个服务器进程中。
整个“智能”层都隔离在控制服务器上。C2 功能(调用侦察和利用工具、管理 Webshell 连接、向代理分配任务以及读取结果)以 MCP 工具的形式提供给模型。植入程序是一个经典的 C2 代理,不具备任何 AI 功能——没有 API 密钥,不调用 AI 服务 API,也没有自主逻辑。它会定期通过 HTTP/S、TCP 或 WebSocket 轮询监听服务器,执行 shell 命令,并与文件系统交互。对受害者而言,这种活动看起来像一个典型的远程控制会话,其中服务器端的 LLM 编排器负责将任务排队,而不是由实时操作员执行。LLM 会影响决策的制定方式,但不会影响相应命令如何传递给主机。
尽管 CyberStrikeAI 是公开可用的,但该框架的特定实例可以与特定的攻击者或攻击活动关联起来。基于以下特征可以进行检测和归因:
控制面板:启动时,会生成一个自签名 TLS 证书,框架名称会出现在颁发者和主题字段中。该证书在每次启动时都会在内存中创建,因此 not_before 字段实际上记录了进程的启动时间。相应地,与 Cobalt Strike 类似,可以从扫描历史记录中重建重启时间顺序。CyberStrikeAI 控制面板的自签名 TLS 证书
CyberStrikeAI 控制面板的自签名 TLS 证书
植入程序:构建元数据(`go version -m`)包含主软件包的路径,该路径包含指向内置 CyberStrikeAI 生成器的数据——一个带有构建标识符的临时目录。所有有效载荷的此路径均相同,因此它是一个可靠的签名。此外,构建信息字段包含版本控制系统元数据,可用于比较不同样本。
身份验证:植入程序与服务器通信时,会在 HTTP 请求中发送一个包含固定值的 X-Implant-Token 标头。该令牌对于每个 C2 服务器都是唯一的,并在构建阶段嵌入到恶意载荷中;因此,它既可以作为网络指示器,也可以作为样本属于同一服务器的标志。
植入体发送给服务器的HTTP标头参数
需要注意的是,植入程序的版本并不反映服务器版本。植入程序可以在操作员更新服务器端组件期间运行数月:监听器配置和密钥在更新过程中会被保留。在我们检测到的事件中,我们观察到整个事件期间都使用了单一的代理版本。在这种情况下,样本的构建日期可能表明 CyberStrikeAI 基础设施最早的部署日期,但仍然无法估算入侵持续时间。
在本次调查的攻击活动中,受害者系统上的首批恶意命令源自 sqlservr.exe 进程,这表明了可能的初始访问途径以及攻击者获得代码执行权限的上下文。值得注意的是,标记为在代理安装之前执行的命令是由攻击者在该进程的上下文中手动执行的。目前,我们尚未发现自动化的植入活动,而是攻击者的手动操作。
在目标机器上启动代理程序之前,攻击者使用 PowerShell 脚本检查其是否存在,由此我们可以推断出其默认部署路径:C:\Windows\Temp\、C:\Windows\、C:\ProgramData\、C:\Temp。同时,攻击者还可以将代理程序的名称伪装成合法的系统进程。在下面的示例中,它模仿了 svchost.exe(svchost s .exe)。
检查系统上是否存在 CyberStrikeAI 代理
CyberStrikeAI代理的交付和执行
与大多数Windows平台的C2代理一样,CyberStrikeAI使用PowerShell来执行其有效载荷。当收到来自操作员的请求时,要执行的命令还会进行Base64编码,以绕过基于关键字的检测。
命令的解码形式:
当拥有管理权限时(例如,域管理员帐户),远程主机上的代理程序通常不会直接执行命令,而是创建计划任务,以便恶意有效载荷能够以 SYSTEM 权限运行:
另一种不使用 schtasks 实用程序的方法是通过 Schedule.Service COM 对象创建任务:
上述示例中的有效载荷 (p1.ps1) 是一个反向 shell,它连接到位于 185.186.245[.]144:5501 的服务器:
p1.ps1 有效载荷和类似脚本通过共享的网络管理文件夹和 WMI 协议在网络中分发,我们将在横向移动部分对其进行更详细的描述。
除了使用 Base64 对命令进行编码以及混淆 SQL/LDAP 查询(我们将分别在“收集与窃取”和“发现”部分进行描述)之外,攻击者还将恶意载荷拆分成多个文件。值得注意的是,这些脚本甚至在代理程序安装之前就以这种方式传输——也就是说,在通常需要人工干预的阶段——但它们显然带有由 LLM 生成的特征。
下面按顺序记录写入文件 d3.b64 的几个脚本片段。
随后,攻击者使用 certutil 工具解码生成的文件,并使用以下命令执行该文件:
脚本组装解码后,内容如下所示:
该脚本是一个用于从文件 C:\ProgramData\dsn_line.txt 中解密 DPAPI 密钥的工具。该文件由以下命令填充,该命令在 SQL Server Reporting Services 配置文件 rsreportserver.config 中搜索包含连接设置的 DSN 字符串,并将其内容复制到 dsn_line.txt。
值得注意的是,如上所述交付和执行的一些脚本包含中文注释(## – 研究人员的注释)。
如果 CyberStrikeAI 植入程序成功部署,第一步是在目标系统上建立持久化。为此,代理创建了一个名为 SystemUpdate 的计划任务,该任务指定植入程序的路径作为要执行的操作:
对框架源代码的分析揭示了一种替代的持久化方法:通过向注册表项 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 添加一个值,其中创建的值的名称与任务名称 (SystemUpdate) 匹配。
Linux 系统上的代理持久性也通过两种方式实现——通过添加 @reboot 条目<path_to_beacon>将其添加到用户的 crontab 中(这样进程就会在系统启动时运行),或者添加一行(nohup)。<path_to_beacon>将 `&>/dev/null &` 添加到 `~/.bashrc`(在这种情况下,当打开交互式 bash shell 时,代理程序就会启动)。
值得注意的是,具体持久化方法的选择由连接到 CyberStrikeAI 的 LLM 负责。然而,得益于人机协同(HITL)机制,操作员对整个过程拥有完全的控制权:模型生成的命令在执行前可能需要人工批准或修正。
在将代理程序安装到受感染的主机之前,攻击者使用一组相当简单的命令手动收集了基本的系统信息:
攻击者还手动检查了互联网访问权限,并使用中国服务 dnslog[.]cn 获取了受感染机器的外部 IP 地址。该服务会生成一个随机的三级域名,然后攻击者尝试在受感染机器上解析该域名。
如果机器可以访问互联网,则请求成功,攻击者可以在服务页面上获取被入侵设备的外部 IP 地址。
为了侦察目的,该代理会生成一个更复杂的脚本,旨在通过入侵 SCCM 或利用 msiexec(AlwaysInstallElevated 密钥)来规划进一步提升权限的路径:
此外,为了找到提升本地权限的方法,代理执行脚本来清点在域帐户下运行的服务以及在 SYSTEM 帐户下运行的任务:
在攻击过程中,攻击者会定期检查 Microsoft Defender 是否检测到攻击:
在收集到有关受感染主机的信息后,攻击者开始在网络中进行侦察。在攻击准备阶段,他们使用 net.exe 工具手动收集有关远程主机的更多信息。
在主要阶段,代理使用 PowerShell 的内置功能来检测可访问的主机,而无需依赖其他实用程序(例如 nmap 或 fscan):
此外,对 Active Directory 对象的相关 LDAP 查询有助于构建网络拓扑图:
此外,还使用 WMI 验证了远程主机上是否已安装代理:
下一步是收集受害者域名信息。为此,攻击者在安装代理程序之前使用了标准的操作系统工具:
然而,后来利用 CyberStrikeAI 植入程序,通过生成的 PowerShell 脚本进行侦察:
除了基本的域信息外,该代理还执行 LDAP 查询,以收集用于 Kerberoasting 和 AS-REP Roasting 攻击的信息:
最后,该代理用于检查域中是否存在 LAPS 和 Microsoft Azure:
为了检测基础架构中是否存在 Microsoft Azure 的使用迹象,攻击者还在用户主目录中搜索了由 AzCopy(Microsoft Azure 存储复制)实用程序创建的 .azcopy 目录:
在成功完成侦察和网络映射后,攻击者进入下一阶段——窃取凭证。为此,攻击者使用了一套经典的 LOLBIN 密钥集和一些知名的第三方工具。
代理使用 reg.exe 实用程序转储了包含凭据的注册表单元:
代理程序使用 comsvcs.dll 库的 MiniDump 函数转储了 lsass.exe 进程。在此过程中,使用了目标进程的 PID 而不是其名称,以使基于命令行的静态检测更加困难:
在成功攻破特权域帐户(特别是内置域管理员帐户)后,攻击者还通过代理使用重命名的 mimikatz 实用程序执行了 DCSync 和 Golden Ticket 攻击:
为了利用被盗账户在网络中传播,攻击者使用了 Impacket 工具包中的实用程序,特别是 WMIExec,这可以从该实用程序的特征命令行看出:
安装完成后,该代理程序倾向于使用标准操作系统机制,例如共享网络文件夹。
该代理程序用于远程执行命令的另一种方法是 WMI 协议。具体来说,该代理程序使用该协议分发了前面提到的 p1.ps1 反向 shell 脚本。这涉及到使用目标主机上具有本地管理员权限的已入侵用户帐户:
第二种通过 WMI 进行横向移动的方法是使用 Invoke-CimMethod cmdlet:
为了将上述工具(恶意脚本、Mimikatz 和代理本身)传递到感染链中的初始节点,攻击者使用了标准的操作系统实用程序:
代理安装完成后,会检查C2服务器端口的可用性。此处的实现机制几乎不受限制,取决于连接到服务器的各个LLM代理的“创造力”:
为了下载其他实用程序,CyberStrikeAI 植入程序还使用了内置实用程序(LOLBIN)。这些工具可以托管在攻击者自己的服务器上,也可以直接从 GitHub 下载:
数据收集阶段值得特别关注。它展现了LLM编排的另一项强大功能——自动生成针对特定任务定制的SQL和LDAP查询。
在本次攻击活动中的一次事件中,攻击者将 CyberStrikeAI 植入程序部署到一家教育机构的 SQL 服务器上,并通过 PowerShell 从数据库中收集信息。以下是该代理执行的一条命令示例:
已执行脚本的规范化视图(含注释):
在访问数据之前,代理程序检查了其连接数据库所用帐户的权限:
解码后的校验结果如下所示:
对于网络资源,文件收集之前会进行递归目录扫描,以识别感兴趣的文件。
为了与文件系统交互,该植入程序提供了一个内置接口,支持直接上传和下载文件。文件通过与 C2 服务器的主加密通信通道(HTTP 或 TCP)直接传输,数据本身采用 Base64 编码并打包到代理的标准 JSON 响应中。
该植入程序的另一项内置功能是截取受感染机器的屏幕截图。与其他操作一样,该植入程序不会自行发起此操作:屏幕截图命令由 LLM 协调器发出,代理程序仅执行该命令并通过同一控制通道返回结果。
在Windows系统中,截屏命令如下:
Linux 版本看起来是这样的:
在我们检测到的事件中,数据收集是攻击的最后阶段:攻击链到此结束,我们没有观察到进一步的活动。
本次攻击活动中,用于溯源的关键证据是植入文件的构建元数据。攻击者在项目的 Git 克隆目录中构建了恶意载荷,因此 Go 编译器会将版本控制系统信息嵌入到二进制文件中——包括哈希值、提交时间以及 `vcs.modified=true` 标志(类似于 `+dirty` 后缀)——这些信息表明工作副本中存在未提交的本地更改。这些字段的组合构成了特定构建的唯一指纹。
基于此指纹,样本被分为两个独立的组,每组中的 Windows 植入程序和 Linux 植入程序都具有完全相同的构建元数据。匹配表明,在每个组内,两个有效载荷都是从同一个项目工作副本构建的。
Windows 和 Linux 植入样本的构建元数据完全相同,表明它们共享同一个构建环境。
然而,这些组之间并无重叠。它们不共享共同的指挥控制基础设施,而且指挥控制服务器上部署的是不同版本的 CyberStrikeAI。换句话说,构建元数据能够可靠地关联每个组内的样本,但无法将两个组关联起来。
指挥控制服务器上 CyberStrikeAI 版本的差异
现有数据不足以让我们将此次攻击活动与任何已知的攻击者组织联系起来,也无法确定两次攻击活动是否由同一攻击者发起。造成这种情况的原因有两个。首先是该工具的开放性:CyberStrikeAI 是公开可用的,因此不同的攻击者可能独立部署了该工具,并在类似的条件下构建了恶意载荷。其次是模型生成的命令:特定攻击者的“签名”特征主要并非由人为设定,而是由逻辑逻辑模型 (LLM) 生成。一方面,这增加了命令的多样性:同一条命令多次生成后可能看起来各不相同。另一方面,这也剥夺了命令的个体特征,降低了行为指标在归因分析中的价值。
然而,攻击者脚本中发现的中文注释以及对中文服务的使用仍然表明,此次攻击活动与讲中文的操作员存在关联。此外,分析人员还注意到控制服务器重启的时间:由于自签名TLS证书在每次进程启动时都会重新生成,其not_before字段会记录重启时间,而大多数重启都发生在UTC+8时区的营业时间内。
该工具本身的起源也间接地指向了同一方向:CyberStrikeAI 是在中国网络安全领域开发的,并在中国广为人知。
CyberStrikeAI 是一个典型的例子——尽管并非独一无二——它体现了 C2 框架领域正在发生的转变:LLM 编排器不再仅仅是侦察的附加组件,而是成为了渗透后阶段的控制层。如果说 HexStrike AI 和类似的工具负责“发现并突破”阶段,Sliver/Mythic/Havoc 负责“建立立足点并控制”阶段,那么 CyberStrikeAI 则完成了整个攻击链:一个用 Go 语言编写的服务器端进程通过 MCP 执行实用程序,处理 webshell 连接,并将任务分配给植入程序,而模型则分析结果并决定下一步行动。
关键在于,将人工智能引入攻击链并未给检测带来根本性的全新挑战。所有“智能”操作仍然由攻击者完成,而受感染的主机则遭受着熟悉的攻击:从通过 Kerberoasting 和 AS-REP Roasting 进行侦察,到 LSASS 转储、DCSync 和 Golden Ticket 攻击。这是一套典型的、有据可查的域入侵技术。此次攻击的新颖之处不在于方法本身,而在于其执行的速度和便捷性:人工智能的编排降低了操作者的技能要求,但并未使攻击超出防御者已知的和能够检测的范围。时间安排也颇具启发性:攻击活动中的各个关键阶段(例如建立立足点、横向移动和获取凭证)仅耗时数小时,而从代理部署到域管理员权限被攻破的整个攻击过程仅用了 3-4 天就完成了。
然而,CyberStrikeAI架构并未将用户限制于上述场景。同样的机制允许按需构建更复杂的攻击链,包括DPAPI密钥提取以及对SCCM和Azure IMDS的攻击——所有这些都可由同一批攻击者在相对较低的技能门槛下完成。随着模型的演进,编排的复杂性与所用技术水平之间的差距将逐渐缩小,操作员的角色也将从设定任务逐渐转变为监控模型的运行。
利用人工智能代理发起的攻击似乎需要创建全新的检测规则。的确,要检测安装在基础设施主机上的LLM代理的活动,必须基于代理的特定特征创建检测逻辑。可以使用Hunt Hub,并配合以下过滤器来查找针对此类活动的检测规则。
然而,在所描述的攻击案例中,逻辑有所不同。主要区别在于攻击本身的架构:LLM代理并非位于企业网络边界内。它通过C2代理远程操作,协调各种行动,并且在基础设施中不留下任何痕迹(例如对本地LLM的特定API请求或主机资源消耗的异常模式)。
这种攻击活动与经验丰富的人类操作员发起的攻击之间的主要区别在于速度。在战术、技术和方法论方面,人工智能在很大程度上使用与人类渗透测试人员完全相同的工具、实用程序和技巧。它不会从头开始编写独特的漏洞利用程序,而是结合已知的方法并根据情况动态调整,自行处理工具的错误。
由于人工智能代理在网络上执行的操作与人类操作难以区分,因此经典的、经过良好调校的相关性和行为分析规则足以检测到此类攻击。以下是卡巴斯基下一代EDR专家版成功检测到所述攻击的几个示例:
要检测通过远程计划任务执行恶意脚本,您需要监控使用 /s 参数创建的 schtasks.exe 进程。EDR Expert 使用规则 create_task_on_remote_host_using_standard_tool、scheduled_task_creation_as_system_via_schtasks 和 scheduled_task_with_powershell_execution 来检测此活动。
在攻击过程中,攻击者需要获取受害者的凭据;在所描述的案例中,获取凭据的一种方法是使用合法工具转储 LSASS 的常用技术,具体来说,就是调用 comsvcs.dll 中的 MiniDump 函数。EDR Expert 解决方案使用规则 dumping_memory_with_com_services_dll 和 suspect_lsass_memory_access 来检测此活动。
攻击链中的一个重要环节是横向移动,这有助于攻击者在基础设施内移动并达成其预期目标。在所描述的案例中,攻击者使用 WinRM 协议直接从 PowerShell 发起连接。这是一种标准技术,允许攻击者在不使用额外网络隧道的情况下在远程计算机上执行命令。EDR Expert 解决方案使用 using_powershell_for_remote_execution_via_wmi 和 winrm_send_command 规则来检测此活动。
卡巴斯基反定向攻击 (KATA) 用于检测网络流量中的恶意活动。CyberStrikeAI 代理与命令与控制服务器之间的通信无需访问 ChatGPT 或 Claude 等 AI 平台。相反,代理的 C2 服务器是攻击者预先配置的基础设施,就像不使用 AI 代理的攻击一样。使用 NDR 级解决方案分析解密的网络流量,可以揭示 CyberStrikeAI 代理活动的特征通信模式。当检测到这些模式时,KATA 会生成一条判定为 Backdoor.CyberStrikeAI.HTTP.C&C 的警报。
警报:检测到 CyberStrikeAI 与 C2 服务器通信
为了检测攻击后的活动,不仅可以使用入侵检测系统 (IDS) 技术,还可以使用网络异常检测 (NAD)。NAD 会分析所有网络流量,查找与节点典型网络活动不符的可疑指标。
例如,CyberStrikeAI 在域发现阶段执行的操作会被名为“通过 LDAP 查询扫描域记录”的 NDR:NAD 规则检测到。
NDR:NAD 警报:检测到通过 LDAP 查询进行的侦察
您可以阅读我们关于 Securelist 的文章,了解更多关于 NDR:NAD 技术的信息。
您还可以通过卡巴斯基威胁情报门户的“研究图谱”部分,可视化C2地址与攻击者使用的文件之间的关联。这包括追踪与恶意地址通信的新型CyberStrikeAI植入程序的出现。
通过卡巴斯基威胁情报门户网站上的研究图表进行可视化
此外,门户网站上提供的威胁查找服务允许您使用基于可执行文件代码的归因机制来确定恶意文件是否属于 CyberStrikeAI。
演示如何将恶意植入物归因于 CyberStrikeAI 框架
卡巴斯基安全信息与事件管理 (SIEM) 系统利用 CyberStrikeAI 代理程序检测攻击的各个阶段。该产品库包含 100 多条规则,用于检测本文讨论的各种攻击技术;我们将在下文列出其中最关键的几条。
从 sqlservr.exe 进程执行各种命令:
R300_04_Windows shell 由 Web 应用程序启动
通过 PowerShell 下载并执行有效载荷:
R110_03_PowerShell 代码已下载并执行
创建 Windows 计划任务:
R099_04_运行 schtasks.exe 时出现可疑参数
R300_03_Windows shell 由调度程序启动
通过 crontab 或 bashrc 进行持久化:
R099_06_可疑的定时任务活动
R405_02_UNIX shell 配置修改
位于 KUMA Packages/SOC package/Configuration discovery 路径下的规则,利用各种侦察工具检测主机、网络设置和域信息的收集情况。这些规则汇总了侦察工具的检测结果:
R224_14_Windows侦察活动
R224_09_通过在短时间内运行多个实用程序来发现系统信息
R224_04_通过标准 Linux 工具发现系统信息
Kerberoasting 和 AS-REP 烘焙的数据收集:
R034_01_多个 TGS 票据请求(Kerberoasting)
R452_18_AS-REP 烘焙
使用 reg.exe 实用程序转储包含凭据的注册表单元:
R230_02_正在从 Windows 注册表复制包含凭据的数据
使用 comsvcs.dll 库的 MiniDump 函数转储 lsass.exe 进程:
R233_04_通过 comsvcs.dll 进行进程内存转储
R262_对 LSASS 进程的可疑访问
使用更名后的 mimikatz 工具进行 DCSync 和 Golden Ticket 攻击:
R450_41_黄金门票攻击
R100_03_通过 cmd 使用 Mimikatz 的痕迹
使用 WMIExec 进行横向移动:
R460_08_使用 WMIexec Impacket 进行横向移动
R460_09_使用 WMIExec 和 Impacket 进行横向移动
要使这些规则生效,您必须配置 SIEM 系统以接收相关事件:
进程启动(Windows 安全日志 - 4688,auditd - execve)和 PowerShell 命令(4104)
用户登录系统(Windows 安全日志 – 4624、4768、4769)
各种对象操作(Windows 安全日志 – 4662、4663、4656;auditd – openat)
与共享资源交互(Windows 安全日志 – 5145)
基于文件的指标:
人工智能
网络打击人工智能实战:人工智能在现实世界中对组织的攻击中的应用
本网站使用 Akismet 来减少垃圾邮件。了解您的评论数据如何处理。