ARTEX Intel中文

Timeline

ConnectWise Cloud Backup credentials abused; Storm-0940 targets M365 tenants

Event date2026-10-10 to 2026-10-15
Disclosed2026-10-16
TypeSupply chain compromise
ConfidenceConfirmed
ARTEX statusARTEX named by sources
Countries and regionsGlobal
SectorsMSP, IT services, Multiple sectors

Discovered on Oct 14, disclosed on Oct 16, attributed by Microsoft on Oct 21. Most targets were not successfully compromised, but several attacks gained privileged cloud access, some in under 3 hours from first targeting to privileged access. Microsoft gave no count of successes.

Confirmed victims

  • ConnectWise (Cloud Backup)
  • 162 tenants confirmed by Huntress

Targets

  • 2,250+ M365 tenants (attempted sign-in)
  • 327 accounts at 8 organizations (password spraying, no success observed)

Attribution

ARTEX basis
Microsoft says Storm-0940 used ARTEX for automation but does not explain how it identified ARTEX. Huntress points this out. The ConnectWise text says only agentic AI framework.
Actor
Microsoft: a China-state aligned actor (Storm-0940, active since 2021).
Same attacker?
This and the Korean bank case are two actors and are not merged. GTIG's UNC7228 overlaps with it.

Figures and definitions

2,250+Number of tenants with attempted sign-ins, not the number compromised
OrganizationsMicrosoft: hundreds; digit.in headline: over 100
Password sprayingOct 10 to 14: 327 accounts, 8 organizations, 151,000+ failures; peak of 2,900 per minute on Oct 11
Huntress162 tenants confirmed (as of Oct 16 19:00 UTC); nearly 1,000 tenants with activity, 300+ successful
LLM involvementHuntress: low to medium on its own data alone; medium to high with Microsoft's attribution added

Notes

Related IoCs

TypeValueRoleCheck
App ID0de14c77-b9b0-4137-9360-34878a929827ConnectWise - MS GraphSource report only
App ID2399d300-6fca-4e6a-a686-399fefe75b83ConnectWise Cloud Management: application identity disabled on October 17Source report only
App ID24205314-2b89-4e07-a2a4-579e898a5640ConnectWise - MS TeamsSource report only
App ID3f9cd7a0-127a-4ed4-bf06-2f830d5616b7Application owner tenant ID seen on the app's service principal events (the vendor's tenant)Source report only
App ID412dcf96-176d-4b3a-a1b0-4981ad66971eCloud Management - Partner Center: application identity disabled on October 17Source report only
App ID506e08f9-6e9a-4da4-942b-a099a03644aeConnectWise Cloud BackupSource report only
App IDb2b55f5b-7758-4719-8d8f-88ae172e6bdbCloud Management - SharePoint Online: application identity disabled on October 17Source report only
App IDb78f6a77-d4e5-46fb-87e5-d1648bd02519Cloud Management - Exchange Online: application identity disabled on October 17Source report only
Network range144[.]172[.]64[.]0/24IP range referenced by Microsoft and Huntress as the range containing the associated activitySource report only
IP104[.]194[.]150[.]21Not attributed to Storm-0940. No first or last seen datesPlatform: no verdict
IP144[.]172[.]64[.]128Storm-0940 infrastructure (Microsoft)Platform: malicious
IP144[.]172[.]64[.]60Storm-0940 infrastructure (Microsoft)Platform: no verdict
IP144[.]172[.]64[.]99Storm-0940 infrastructure (Microsoft)Platform: no verdict
IP144[.]172[.]94[.]243Broad failed login spray, ongoing, many organizationsPlatform: malicious
IP167[.]88[.]172[.]97Not attributed to Storm-0940. No first or last seen datesPlatform: no verdict
IP187[.]15[.]88[.]186VPN IP that accessed Graph API via compromised appsPlatform: no verdict
IP187[.]15[.]89[.]186VPN IP that accessed Graph API via compromised appsPlatform: no verdict
IP187[.]15[.]90[.]217VPN IP that accessed Graph API via compromised appsPlatform: no verdict
IP194[.]165[.]16[.]21Possible link based on re-use of python-requests/2.31 in a password spray during the same timeframePlatform: malicious
File path/assets/config.jsonpath in the post bodySource report only
File path/env.jspath in the post bodySource report only
File path/sign_in/oauth/microsoft/callbackpath in the post bodySource report only
File path/swagger/?format=openapipath in the post bodySource report only
File path/zzz-nonexistent-xyz123path in the post bodySource report only
User-Agent(Boto3 1.43.112) Boto3/1.43.112 md/Botocore#1.43.112 ua/2.1 os/linux#6.8.0-147-generic md/arch#x86_64 lang/python#3.12.14 md/pyimpl#CPython m/n,Z,b,D cfg/retry-mode#legacy Botocore/1.43.112The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-Agent(Boto3 1.43.113) Boto3/1.43.113 md/Botocore#1.43.113 ua/2.1 os/linux#6.8.0-147-generic md/arch#x86_64 lang/python#3.12.14 md/pyimpl#CPython m/e,b,Z,D cfg/retry-mode#legacy Botocore/1.43.113The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-Agent(aws-cli 1.46.1) aws-cli/1.46.1 md/Botocore#1.43.62 ua/2.1 os/linux#6.8.0-147-generic md/arch#x86_64 lang/python#3.12.14 md/pyimpl#CPython m/b,Z,D cfg/retry-mode#legacy botocore/1.43.62The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64)The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36The source says most UAs are not unique, and hunting on them alone is noisySource report only
User-AgentPython-urllibuser agent in Graph/sign-in logsSource report only

View all 51

Related events

Sources (12)