Arctic Wolf Labs has published research confirming that threat actors are actively abusing AntiFox, an open-source, Chinese-language agentic penetration testing platform, in real-world intrusions targeting Microsoft IIS web servers and AWS cloud accounts. Unlike traditional pentest frameworks that require an operator to drive each stage, AntiFox chains attack steps together autonomously — reconnaissance, exploitation, credential access, and cloud enumeration — with minimal human involvement. In several observed intrusions, Alibaba Cloud systems hosting exposed AntiFox interfaces were directly tied to the malicious activity.
This is a pivotal moment for defenders. Offensive AI tooling has crossed the line from conference demo to operational abuse in the wild. The speed at which an agentic framework can move from web shell to cloud credential theft compresses your detection window from days to minutes. If you run internet-facing IIS or hold AWS access keys on any server, this campaign is your problem today.
This article is classified as a TECHNICAL THREAT — full detection content follows.
Technical Analysis
What Is AntiFox and Why It Matters
AntiFox is an open-source, Chinese-language agentic penetration testing platform — meaning it uses AI-driven decision-making to autonomously plan and execute multi-stage attacks. Rather than a human operator running nmap, then Metasploit, then manual credential harvesting, an agentic framework reasons about each result and selects the next action on its own. The practical consequence for defenders:
- Velocity: Attack stages that normally take hours compress into minutes. Your mean-time-to-detect (MTTD) must shrink accordingly.
- Consistency: The tool follows a repeatable playbook, which is actually a defensive gift — its behaviors are fingerprintable.
- Lower skill floor: Actors who couldn't manually pivot from web server to cloud account can now do so by pointing the agent at a target.
Observed Attack Chain
Based on the Arctic Wolf Labs reporting, the intrusions follow this general pattern:
- Initial access against IIS: The attackers target internet-facing Microsoft IIS servers, consistent with web shell deployment or exploitation of common web-facing weaknesses. The IIS worker process (
w3wp.exe) spawning command interpreters or scripting engines is the classic post-compromise indicator. - Post-exploitation tooling dropped via the web process: Commands execute under the IIS worker process context (typically
IIS APPPOOL\<name>), including discovery commands (whoami,ipconfig,netstat) and download/cradle activity. - AWS credential access: The actors hunt for cloud credentials on the compromised host — the AWS CLI credentials file (
%USERPROFILE%\.aws\credentialsor/root/.aws/credentials), environment variables containingAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, and IMDS (instance metadata) queries if the target is an EC2 workload. - Cloud account abuse: Stolen keys are used to enumerate and access AWS accounts from attacker-controlled infrastructure — notably, systems in Alibaba Cloud that also hosted exposed AntiFox management interfaces, tying the infrastructure back to the tooling.
Exploitation Status
- No CVE is associated with this campaign — AntiFox is a tool, not a vulnerability. Do not search for a patch; there isn't one. This is a detection-and-hardening problem.
- Confirmed active exploitation: Arctic Wolf observed these intrusions in real customer environments. This is not theoretical.
- Infrastructure overlap: The same Alibaba Cloud-hosted systems running AntiFox interfaces were implicated in the intrusions, meaning defenders can hunt both on endpoint behavior and on inbound/outbound network relationships with suspicious cloud-hosted management panels.
Why IIS → AWS Is the Killer Combo
Organizations routinely deploy AWS SDK-based applications on Windows/IIS and leave long-lived IAM access keys in config files, environment variables, or ~/.aws/credentials. A single web shell on a single IIS box can therefore become full cloud account compromise. The agentic framework simply automates the harvest.
Detection & Response
The detections below focus on the highest-signal, lowest-noise behaviors: IIS worker processes spawning shells or discovery commands, access to AWS credential material, and egress to instance metadata or suspicious automation infrastructure.
Sigma Rules
---
title: IIS Worker Process Spawning Command Shell or Discovery Tools
id: 3f8a2b71-6c4d-4e9f-b1a7-9d5c2e8f3a01
status: experimental
description: Detects w3wp.exe spawning cmd.exe, powershell.exe, or common post-exploitation discovery binaries — consistent with web shell activity observed in AntiFox-driven IIS intrusions.
references:
- https://securityaffairs.com/202880/hacking/ai-pentest-tool-antifox-abused-to-steal-aws-credentials.html
- https://attack.mitre.org/techniques/T1505/003/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.persistence
- attack.t1505.003
- attack.execution
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\w3wp.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\whoami.exe'
- '\net.exe'
- '\net1.exe'
- '\ipconfig.exe'
- '\curl.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
condition: selection_parent and selection_child
falsepositives:
- Rare — some legacy web applications legitimately shell out; baseline per application pool
level: high
---
title: AWS Credentials File Access by Non-Interactive Process
id: 8c1d4e62-2a7b-4f35-9d08-6b3e1a9c5f42
status: experimental
description: Detects read access to the AWS CLI credentials file by processes outside an expected admin/developer context — consistent with cloud credential harvesting observed in AntiFox intrusions.
references:
- https://securityaffairs.com/202880/hacking/ai-pentest-tool-antifox-abused-to-steal-aws-credentials.html
- https://attack.mitre.org/techniques/T1552/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.credential_access
- attack.t1552.001
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains: '\.aws\credentials'
filter_legit:
Image|endswith:
- '\aws.exe'
- '\awscliv2.exe'
condition: selection_path and not filter_legit
falsepositives:
- Backup agents or EDR scanners reading user profile directories; tune by Image hash
level: high
---
title: Web Server Process Querying Cloud Instance Metadata Service
id: 5e9b3d18-7f2a-4c61-a384-2d8f6b0e9c17
status: experimental
description: Detects IIS or script processes issuing HTTP requests to the EC2 instance metadata endpoint (169.254.169.254) — a hallmark of IAM role credential theft from compromised cloud-hosted web servers.
references:
- https://securityaffairs.com/202880/hacking/ai-pentest-tool-antifox-abused-to-steal-aws-credentials.html
- https://attack.mitre.org/techniques/T1552/005/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.credential_access
- attack.t1552.005
logsource:
category: network_connection
product: windows
detection:
selection_dest:
DestinationIp: '169.254.169.254'
selection_proc:
Image|endswith:
- '\w3wp.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\cmd.exe'
- '\curl.exe'
- '\python.exe'
condition: selection_dest and selection_proc
falsepositives:
- Legitimate applications that retrieve IMDS configuration at startup; correlate with timing and command line
level: critical
KQL — Microsoft Sentinel / Defender
This query hunts the full kill chain: IIS worker process spawning shells or discovery tools, plus credential-file access and metadata queries from web processes. Run it over at least a 14-day lookback given the speed of agentic tooling.
// Hunt: AntiFox-style IIS compromise -> shell spawning -> AWS credential theft
let lookback = 14d;
let webShellProcs = DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where InitiatingProcessFileName =~ "w3wp.exe"
| where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe","whoami.exe","net.exe","ipconfig.exe","curl.exe","certutil.exe","bitsadmin.exe")
| project WebShellTime=TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, ReportId;
let credAccess = DeviceFileEvents
| where TimeGenerated > ago(lookback)
| where FolderPath has @"\.aws\credentials"
| where InitiatingProcessFileName !in~ ("aws.exe","awscliv2.exe","MsMpEng.exe")
| project CredTime=TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FolderPath;
let imdsAccess = DeviceNetworkEvents
| where TimeGenerated > ago(lookback)
| where RemoteIP == "169.254.169.254"
| where InitiatingProcessFileName in~ ("w3wp.exe","powershell.exe","pwsh.exe","cmd.exe","curl.exe","python.exe")
| project ImdsTime=TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl;
webShellProcs
| join kind=leftouter credAccess on DeviceName
| join kind=leftouter imdsAccess on DeviceName
| project DeviceName, WebShellTime, FileName, ProcessCommandLine, CredTime, InitiatingProcessFileName1, ImdsTime, RemoteUrl
| order by DeviceName asc, WebShellTime asc
For environments ingesting IIS logs into Sentinel (via W3CIISLog or Custom Logs), add a check for anomalous POST requests to unexpected .aspx/.ashx endpoints followed by 200 responses — a classic web shell tell.
Velociraptor VQL
Use this hunt to sweep your IIS fleet for web-shell-adjacent process lineage and AWS credential file presence. Deploy as a hunt across all servers running the Web-Server role.
-- Hunt: IIS post-exploitation lineage + AWS credential artifacts (AntiFox campaign)
LET suspicious_children = SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Name =~ '(?i)w3wp|cmd|powershell|pwsh|whoami|curl|certutil'
LET parent_lookup = SELECT Pid AS P_Pid, Name AS P_Name, Exe AS P_Exe
FROM pslist()
LET webshell_lineage = SELECT s.Pid, s.Name, s.CommandLine, s.Username, s.CreateTime,
p.P_Name AS ParentName, p.P_Exe AS ParentPath
FROM suspicious_children s
JOIN parent_lookup p ON s.Ppid = p.P_Pid
WHERE p.P_Name =~ '(?i)w3wp'
LET aws_cred_files = SELECT FullPath, Size, Mtime
FROM glob(globs=['C:/Users/*/.aws/credentials','C:/Windows/System32/config/systemprofile/.aws/credentials','C:/Windows/SysWOW64/config/systemprofile/.aws/credentials'])
SELECT * FROM webshell_lineage
UNION ALL
SELECT NULL AS Pid, 'AWS_CRED_FILE' AS Name, FullPath AS CommandLine,
'' AS Username, Mtime AS CreateTime, '' AS ParentName, '' AS ParentPath
FROM aws_cred_files
Remediation Script
Run this on each IIS server to (1) identify suspicious child processes of w3wp.exe, (2) locate AWS credential files in service/system profiles where they should never exist, (3) audit for recently written .aspx files in web root (web shell triage), and (4) verify IMDSv2 enforcement is not your responsibility on-prem but IS on EC2 — the script flags EC2 instances still allowing IMDSv1 via instance metadata options.
# AntiFox Campaign - IIS + AWS Credential Exposure Triage & Hardening
# Run elevated on each IIS server. Outputs to C:\IR-Triage\ for collection.
$out = "C:\IR-Triage"
New-Item -ItemType Directory -Path $out -Force | Out-Null
# 1. Detect suspicious child processes spawned by IIS worker processes
Get-CimInstance Win32_Process | Where-Object {
$_.Name -match '^(cmd|powershell|pwsh|whoami|net|net1|ipconfig|curl|certutil|bitsadmin)\.exe$'
} | ForEach-Object {
$parent = Get-CimInstance Win32_Process -Filter "ProcessId=$($_.ParentProcessId)" -ErrorAction SilentlyContinue
if ($parent -and $parent.Name -eq 'w3wp.exe') {
[PSCustomObject]@{
Alert = 'IIS_SPAWNED_SHELL'
Time = $_.CreationDate
ChildProc = $_.Name
CommandLine= $_.CommandLine
ParentPID = $_.ParentProcessId
}
}
} | Export-Csv "$out\iis_spawned_shells.csv" -NoTypeInformation
# 2. Hunt for AWS credential files in profiles where they should NOT exist
$credPaths = @(
"$env:SystemRoot\System32\config\systemprofile\.aws\credentials",
"$env:SystemRoot\SysWOW64\config\systemprofile\.aws\credentials"
)
$credPaths += Get-ChildItem "C:\Users" -Directory -ErrorAction SilentlyContinue |
ForEach-Object { Join-Path $_.FullName ".aws\credentials" }
foreach ($p in $credPaths) {
if (Test-Path $p) {
$f = Get-Item $p
"[ALERT] AWS credentials file found: $p (Modified: $($f.LastWriteTime)) - ROTATE THESE KEYS NOW" |
Out-File "$out\aws_cred_exposure.txt" -Append
}
}
# 3. Triage: recently written script files in web roots (potential web shells)
$webRoots = (Get-WebConfigurationProperty "//site/application/virtualDirectory" -Name physicalPath -ErrorAction SilentlyContinue).Value | Sort-Object -Unique
if (-not $webRoots) { $webRoots = @("C:\inetpub\wwwroot") }
foreach ($root in $webRoots) {
if (Test-Path $root) {
Get-ChildItem $root -Recurse -Include *.aspx,*.ashx,*.asmx,*.asp -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) } |
Select-Object FullName, LastWriteTime, Length |
Export-Csv "$out\recent_webroot_scripts.csv" -NoTypeInformation -Append
}
}
# 4. If this host is EC2: verify IMDSv2 is enforced (blocks SSRF-style credential theft)
try {
$token = Invoke-RestMethod -Method PUT -Uri "http://169.254.169.254/latest/api/token" `
-Headers @{ "X-aws-ec2-metadata-token-ttl-seconds" = "21600" } -TimeoutSec 3
$instanceId = Invoke-RestMethod -Uri "http://169.254.169.254/latest/meta-data/instance-id" `
-Headers @{ "X-aws-ec2-metadata-token" = $token } -TimeoutSec 3
"[INFO] EC2 instance $instanceId - enforce IMDSv2:" | Out-File "$out\imds_check.txt"
"aws ec2 modify-instance-metadata-options --instance-id $instanceId --http-tokens required --http-endpoint enabled" |
Out-File "$out\imds_check.txt" -Append
} catch {
"[INFO] Not an EC2 instance or IMDS unreachable." | Out-File "$out\imds_check.txt"
}
# 5. Restrict outbound metadata access from the web process context (defense in depth on EC2)
# NOTE: Test before enforcing - legitimate apps may need IMDS.
New-NetFirewallRule -DisplayName "Block IMDS for w3wp" -Direction Outbound `
-RemoteAddress 169.254.169.254 -Program "C:\Windows\System32\inetsrv\w3wp.exe" `
-Action Block -ErrorAction SilentlyContinue | Out-Null
Write-Host "Triage complete. Review $out and rotate any discovered AWS keys immediately."
Remediation
There is no vendor patch — the fix is architectural and operational. Prioritize in this order:
- Rotate every AWS credential that ever touched a web server — now. If
~/.aws/credentialsexisted on an IIS host, assume compromise. Revoke the access keys in the IAM console, review CloudTrail for the key's usage over the past 90 days (look foriam:List*,ec2:Describe*,s3:ListAllMyBucketsfrom unfamiliar source IPs — especially Alibaba Cloud ASN ranges), and reissue only if operationally necessary. - Eliminate long-lived IAM keys on servers entirely. Migrate to IAM Roles for EC2 (instance profiles), IAM Roles Anywhere for on-prem, or OIDC federation. A server with no stored keys has nothing to harvest. This single step breaks the AntiFox playbook's monetization stage.
- Enforce IMDSv2 (
HttpTokens=required) on all EC2 instances, and add a hop-limit of 1 so containers can't reach the host metadata endpoint. Use the command emitted by the script above. - Isolate IIS app pools with least privilege. App pool identities must not be local admins, must not hold cloud credentials, and should be denied outbound internet access except to explicitly required endpoints via egress firewall rules.
- Block web-process egress to 169.254.169.254 and to known-bad automation infrastructure. Add detections for outbound traffic to Alibaba Cloud (AS37963 and related) from server VLANs that have no business justification.
- Web shell sweep. Audit all IIS web roots for recently modified
.aspx/.ashx/.asmxfiles (script above), review IIS logs for POSTs to endpoints with no corresponding GET traffic, and check forw3wp.exechild processes historically via your EDR. - Treat exposed pentest/agentic tooling interfaces as hostile reconnaissance. If your team legitimately evaluates agentic platforms like AntiFox, bind interfaces to localhost, require authentication, and never host them on cloud instances with internet exposure — the Arctic Wolf research shows the panels themselves become infrastructure fingerprints.
- Shrink your detection window. Agentic frameworks operate in minutes. Ensure the Sigma rules above are deployed with near-real-time alerting, not hourly batch correlation. Pair process-lineage detection with automated key-quarantine playbooks in your SOAR.
Related Resources
Security Arsenal Red Team Services AlertMonitor Platform Book a SOC Assessment pen-testing Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.