Skip to content

Security Independently confirmed2 publishers 3 min read Published Updated

TWINLOOT runs its entire C2 inside Microsoft 365, and your egress filter will not see it

Ontinue says the Python implant takes tasking from SharePoint dead drops over Graph API, relays interactive sessions through Teams TURN, and moves all of it through the victim's own headless Edge.

The Watch · Security desk

Send a correction

What happened

  • Ontinue's Cyber Defense Center said it discovered the TWINLOOT implant during its investigation into an ongoing campaign in July 2026.
  • TWINLOOT is a previously undocumented, modular, PyArmor-hardened Python implant framework.
  • Ontinue says TWINLOOT is designed to operate its entire command-and-control infrastructure inside trusted Microsoft services.
  • Tasking flows through SharePoint Online file dead-drops via the Microsoft Graph API.
  • The SharePoint dead-drop channel authenticates to an attacker's Azure tenant and polls a SharePoint drive for commands every 15 seconds, letting the operator issue instructions, run them, and exfiltrate data back.

Why it matters

Ontinue's Cyber Defense Center says it found a previously undocumented, modular, PyArmor-hardened Python implant framework called TWINLOOT while investigating an ongoing campaign in July 2026 [1][2]. The point of interest is not the language but the plumbing: Ontinue describes the framework as designed to run its entire command-and-control infrastructure inside trusted Microsoft services [3], which removes egress filtering and domain reputation from the list of controls that would ever fire.

Tasking arrives through SharePoint Online file dead drops reached via the Microsoft Graph API [4]. The implant authenticates to an attacker-controlled Azure tenant and polls a SharePoint drive for commands every 15 seconds [5], which is 5,760 polls per day per host [18]. Interactive access is a separate channel: a reverse SOCKS5 tunnel running either over a direct TLS/WebSocket connection to the operator's server or through a Teams TURN WebRTC relay [6]. The Graph traffic is not produced by a bespoke HTTP client. It is driven by a headless instance of the victim's own Edge browser, which Ontinue says makes it virtually indistinguishable from legitimate network activity [7].

Initial access, on Ontinue's assessment, was social engineering over Microsoft Teams, with the actor posing as IT support to talk a target into running a PowerShell command that downloaded an archive containing a Python runtime and a 39 MB compiled loader, bootstrap-fat.pyc [8]. Credential theft is cruder and probably more reliable than the transport. The implant renders a pixel-perfect fake lock screen when the operator issues the "credz_waiting" command [9][10]. What the user types is never validated against Windows authentication; the first attempt always returns "The password is incorrect. Try again," which Ontinue assesses is meant to make the victim supply the correct password on the second try [11]. The captured password is encrypted and uploaded to the SharePoint drive, and the fake screen closes itself [12]. From there the credential is used through the tunnel to pivot by RDP or WinRM [13].

The host-side artifacts are where this becomes tractable. The operator's SOCKS5 listener sits on 127.0.0.1:1080 on their own machine, and the resulting sessions leave the victim from pythonw.exe toward internal 445, 3389, 5985 and 1433, so the internal network sees what looks like a compromised host making ordinary lateral connections [14]. That means the detectable behaviours are a Python interpreter opening SMB, RDP, WinRM and MSSQL sessions, and a browser process making Graph calls on a metronome against a tenant that is not yours [5][7][14]. Neither is a boundary signal, and neither is improved by a better blocklist.

TWINLOOT is not the only tool on this path. In June 2026, Broadcom-owned Symantec and Carbon Black documented DragonForce ransomware using a Go-based RAT, Backdoor.Turn, to conceal C2 inside Microsoft Teams relay infrastructure using a QUIC session through the relay, where TWINLOOT uses WebRTC DataChannels via aiortc [15][16]. A Rust-based RAT, msaRAT, was reported late last month using the same TURN method [19]. That is three families on public record abusing the same relay [21]. Ontinue's narrower claim is that TWINLOOT is the first to combine Microsoft 365 dead-drop C2, Teams TURN relay abuse, and headless browser transport under a single umbrella [17], and it describes the operator as knowledgeable in both offensive tradecraft and Microsoft cloud architecture [20].

Worth watching: whether defenders get usable telemetry distinguishing headless Edge launched by a script from Edge launched by a person [7], whether Graph authentication to non-corporate tenants becomes a routine hunt input [5], and whether the TURN relay count moves past three [21].

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence62
Adoption
Not scored
Hype gap+20
Incentives40
Confidence60
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Ontinue's Cyber Defense Center said it discovered the TWINLOOT implant during its investigation into an ongoing campaign in July 2026.

    Reported Supported Source: Ontinue, in a technical report shared with The Hacker NewsView cited source
  2. [2]

    TWINLOOT is a previously undocumented, modular, PyArmor-hardened Python implant framework.

    Reported SupportedView cited source
  3. [3]

    Ontinue says TWINLOOT is designed to operate its entire command-and-control infrastructure inside trusted Microsoft services.

    Reported Supported Source: OntinueView cited source
  4. [4]

    Tasking flows through SharePoint Online file dead-drops via the Microsoft Graph API.

    Reported SupportedView cited source
  5. [5]

    The SharePoint dead-drop channel authenticates to an attacker's Azure tenant and polls a SharePoint drive for commands every 15 seconds, letting the operator issue instructions, run them, and exfiltrate data back.

    Reported SupportedView cited source
  6. [6]

    The second channel is a reverse SOCKS5 tunnel for interactive access and lateral movement, running over either a direct TLS/WebSocket connection to the attacker's server or through the Teams TURN WebRTC relay.

    Reported SupportedView cited source
  7. [7]

    Traffic to and from the Graph API is driven by a headless instance of the victim's own Edge browser, which Ontinue says makes it virtually indistinguishable from legitimate network activity.

    Reported Supported Source: OntinueView cited source
  8. [8]

    The initial access vector is assessed to be social engineering via Microsoft Teams, with the threat actor masquerading as IT support to persuade a target to run a PowerShell command that downloaded an archive containing the Python runtime and a 39 MB compiled payload, bootstrap-fat.pyc, which loads TWINLOOT.

    Reported Supported Source: Ontinue's assessmentView cited source
  9. [9]

    TWINLOOT can harvest Windows credentials using pixel-perfect fake lock screens, offer a reverse SOCKS5 pivot into victim networks, execute arbitrary commands, and establish persistence on the host.

    Reported SupportedView cited source
  10. [10]

    The fake lock screen is rendered when the threat actor issues the "credz_waiting" command.

    Reported SupportedView cited source
  11. [11]

    The entered password is not validated against Windows authentication; regardless of what is provided the victim is shown "The password is incorrect. Try again," likely causing them to input the correct password the second time.

    Reported SupportedView cited source
  12. [12]

    Once a credential is entered the fake lock screen closes automatically, and every captured password is encrypted and uploaded to the SharePoint drive.

    Reported SupportedView cited source
  13. [13]

    Captured credentials are then abused through the SOCKS5 tunnel to pivot to the next host using Remote Desktop Protocol or WinRM.

    Reported SupportedView cited source
  14. [14]

    The operator gets a SOCKS5 listener on 127.0.0.1:1080 on their own machine, and proxied connections exit from pythonw.exe on the victim host to internal targets on ports such as 445 (SMB), 3389 (RDP), 5985 (WinRM) and 1433 (MSSQL), appearing to the internal network as normal lateral connections.

    Reported Supported Source: OntinueView cited source
  15. [15]

    In June 2026, Broadcom-owned Symantec and Carbon Black detailed DragonForce ransomware's use of a Go-based remote access trojan called Backdoor.Turn to conceal C2 traffic inside Microsoft Teams relay infrastructure.

    Reported SupportedView cited source
  16. [16]

    Backdoor.Turn uses a QUIC session through the Teams relay, while TWINLOOT uses WebRTC DataChannels via aiortc.

    Reported SupportedView cited source
  17. [17]

    Ontinue said TWINLOOT is the first such tool to combine Microsoft 365 dead-drop C2, Teams TURN relay abuse, and headless browser transport under a single umbrella.

    Reported Supported Source: OntinueView cited source
  18. [18]

    A 15-second polling interval equals 5,760 polls per day per infected host.

    Derived Supported
  19. [19]

    Late last month, a new Rust-based RAT dubbed msaRAT was observed using the same TURN method.

    Reported SupportedView cited source
  20. [20]

    Ontinue described the threat actor as knowledgeable in offensive tradecraft and in Microsoft's cloud architecture.

    Reported Supported Source: OntinueView cited source
  21. [21]

    Three malware families are now publicly documented abusing Microsoft Teams TURN relay infrastructure for C2: Backdoor.Turn, TWINLOOT and msaRAT.

    Derived Contested

Sources

2 independent publishers whose own reporting we read for this story.

  1. scworld.com

    1 article · August 19, 2026

    ‘TWINLOOT’ Python implant abuses Microsoft services for stealthy C2
  2. thehackernews.com

    1 article · August 18, 2026

    TWINLOOT Abuses SharePoint and Teams to Steal Credentials and Move Across Networks

Topics and entities

Entities