Home Assessments Solutions Reports Blog Contact
Part 2 of 2 — ChatGPT Stealer Campaign
January 30, 2026 | Reading time: 18 minutes

Inside the ChatGPT Stealer Campaign: Live C2 Verification and Technical Teardown

From Detection to Analysis

On January 11th, I published findings on malicious ChatGPT extensions we detected in client environments, affecting up to 900,000 users. That article (Malicious "ChatGPT Helper" Chrome Extensions Are Stealing Prompts — And We've Seen It Firsthand) focused on SOC hunting, incident response, and the operational risk of "prompt poaching."

Highlights from Part 1:

But questions remained:

This article answers those questions through reverse engineering, live C2 verification, and infrastructure analysis.


What This Technical Analysis Reveals

Key Discoveries

Impact Assessment

ExtensionInstallsC2 DomainStatus
Extension 1600,000deepaichats[.]comActive
Extension 2300,000chatsaigpt[.]comActive

Total: 900,000+ users having conversations/browsing exfiltrated. Campaign remains active despite public disclosure.


Technical Analysis: How the Malware Works

Stage 1: Content Interception

After installation, the extension injects deepseekContent.js into ChatGPT, DeepSeek, and similar AI platforms.

Capture Triggers:

  1. User sends prompt to ChatGPT
  2. AI generates response
  3. "Bad response" button appears in DOM
  4. Extension captures both prompt and response
  5. Data stored in local extension storage (base64 encoded)
deepseekContent.js MutationObserver code capturing AI conversations

Extension 2 content interception code — MutationObserver captures user prompts and AI responses via DOM selectors

What Gets Captured:

Stage 2: Browsing Surveillance

The background script (blueBackground.js) monitors tab activity.

Browsing Data Captured:

blueBackground.js browsing surveillance code capturing URL history

Browsing surveillance code — monitors tab activity, stores last 2,000 URLs with navigation patterns and timestamps

Why This Matters: Browsing history reveals:

Stage 3: Data Exfiltration

Upload Triggers:

Extension 2 data exfiltration code building payload and uploading to C2

Extension 2 exfiltration code — builds payload with device fingerprint, stolen conversations, and browsing history, then uploads base64-encoded to C2

C2 Endpoints:

Comparison table of payload formats between Extension 1 and Extension 2

Payload format comparison — different C2 domains, endpoints, JSON keys, and storage keys for detection evasion


Live C2 Verification

To validate the threat and confirm operational status, I conducted controlled testing in an isolated Windows VM.

Test Environment

Chrome Extensions page showing malicious AI Sidebar extension installed

Extension 2 loaded in isolated Chrome instance — "AI Sidebar with Deepseek, ChatGPT, Claude" (ID: inhcgfpbfdjbjogdfjbclgolkmhnooop v1.6.1)

Test Data

I created realistic test conversations to simulate what victims might share:

Conversation 1: Database Credentials

"I need help with my database connection string:
Server=prod-db.company.com;User=admin;Password=SecretPass2024!;"

Conversation 2: AWS Keys

"Our AWS keys are:
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

Conversation 3: Financial Data

"Q4 revenue $18M ARR, Microsoft deal $2M, Amazon deal $3M,
burn rate $800K/month, Series B target $40M"

C2 Upload Results

Browser DevTools showing base64-encoded payload in network request

Raw base64-encoded payload captured in browser DevTools — the actual stolen data being sent to C2

Decoded base64 payload showing stolen AI conversations with test credentials

Decoded payload — stolen conversations clearly visible including database credentials, AWS keys, and financial data from test data

Extension 2 → chatsaigpt.com: POST Status 200 OK

C2 server response showing HTTP 200 OK with success:true

C2 server response — POST to chatsaigpt.com/ext2/switchModel returns HTTP 200 OK with {"success":true,"message":"updated"}

Browser console showing successful C2 upload and C2 SERVER IS ACTIVE message

Console output confirming successful data upload — C2 SERVER IS ACTIVE

DevTools network headers showing 200 OK response from chatsaigpt.com

DevTools network tab — POST to chatsaigpt.com/ext2/switchModel confirmed 200 OK

Critical Finding: Both C2 servers confirmed operational. Campaign active >1 month after public disclosure. Infrastructure redundancy protects against single-domain takedown. 900,000+ users continue having data exfiltrated.


Infrastructure Analysis: Why Two Extensions?

The existence of two separate C2 domains reveals sophisticated operational planning.

I also verified Extension 1's C2 infrastructure:

Extension 1 C2 server deepaichats.com responding HTTP 200 OK

Extension 1 C2 — POST to deepaichats.com/ext/aimodel also returns HTTP 200 OK

Console showing both C2 servers verified active with infrastructure redundancy confirmed

Both C2 servers verified operational (Jan 25, 2026) — infrastructure redundancy confirmed, 900,000+ users affected

Redundancy Strategy

If deepaichats.com is seized/blocked:

If chatsaigpt.com is blocked:

To fully disrupt the campaign requires:

  1. Simultaneous takedown of both domains
  2. Coordinated action across registrars
  3. Removal of both extensions from Chrome Web Store
  4. Enterprise-wide blocking at network perimeter

Shared Infrastructure

Both extensions connect to extensions.aitopia.ai for command/control coordination, and share:

This shared infrastructure suggests a single operator managing both variants with centralized command and control.

Detection Evasion

The two extensions use different signatures, different storage keys, and different payload formats — allowing Extension 2 to bypass detection rules built for Extension 1.

Different file signatures between Extension 1 and Extension 2

Different file signatures across extensions

Different storage keys between Extension 1 and Extension 2

Different storage keys for captured data

Different payload formats between Extension 1 and Extension 2

Different JSON payload formats for C2 communication

AttributeExtension 1Extension 2
AI conversation storage keygptContentdeepseekContent
Device fingerprint keygptChatIdchatId
Monitoring flag keygptFlagValuechatFlag
Browsing history keysaveChatAnswersaveChatAnswer
C2 endpoint/ext/aimodel/ext2/switchModel

Real-World Impact: What Attackers Get

From AI Conversations

Credentials frequently shared:

Corporate intelligence:

From Browsing History

Infrastructure mapping — browsing history tells attackers exactly what systems you have access to:

Browsing history revealing infrastructure access including GitHub repos, AWS console, Datadog, Grafana

Browsing history reveals: GitHub infrastructure repos, AWS admin console, Datadog, internal Grafana hostname — complete attack surface mapping

Confidential resource access — high-value targets identified through browsing patterns:

Browsing history revealing access to email, board documents, executive wiki, recruiting, Stripe

Email, board-level documents, executive wiki, recruiting data, Stripe dashboard — high-privilege target identified


Enhanced Detection: Technical IOCs

Extension IDs

Extension IDDescriptionInstalls
fnmihdojmnkclgjpcoonokmkhjpjechgExtension 1600K
inhcgfpbfdjbjogdfjbclgolkmhnooopExtension 2300K

C2 Domains (Block These)

DomainPurpose
deepaichats[.]comExtension 1 C2
chatsaigpt[.]comExtension 2 C2
chatgptextension[.]aiShared infrastructure
extensions[.]aitopia[.]aiCommand coordination

Network Signatures

Extension 1 Traffic:

Extension 1 network traffic signature showing POST to deepaichats.com

Extension 1 network signature — POST /ext/aimodel to deepaichats.com with gptVersion payload key

Extension 2 Traffic:

Extension 2 network traffic signature showing POST to chatsaigpt.com

Extension 2 network signature — POST /ext2/switchModel to chatsaigpt.com with model payload key

File Hashes — Extension 2 (SHA-256)

FileSHA-256
chatResponse.js2387372acfe38efd31e662b61b6b44aabb01181c5a2b2f0f1e82f5d4680e505c
deepseekContent.js7369d8780d2a103319b368abcaf002a679fc4bad705ae5c4399e611f3010d5ae
blueBackground.js42785eecf5c0bffe693f180b277cd34ceec75cbc3096b814331787c4dfc61736
manifest.json128811e6ea1fb732254867a326a079f4c69044504224ce610b4f05d874d060a5

YARA Rules

rule ChatGPT_Stealer_Extension2 {
    meta:
        description = "Detects ChatGPT malware Extension 2"
        author = "Security Researcher"
        date = "2026-01-26"
        extension_id = "inhcgfpbfdjbjogdfjbclgolkmhnooop"
        c2_domain = "chatsaigpt.com"

    strings:
        $manifest = "AI Sidebar with Deepseek, ChatGPT, Claude"
        $storage1 = "deepseekContent"
        $storage2 = "chatId"
        $c2_domain = "chatsaigpt.com"
        $c2_endpoint = "/ext2/switchModel"
        $payload_key = "\"model\":"
        $encoding = "btoa(binaryStr)"
        $observer = "MutationObserver"

    condition:
        3 of them
}

Mitigation: Enhanced Recommendations

For SOC Teams (Expanding Part 1 Hunting)

Snort/Suricata Rule:

alert http any any -> any any (
  msg:"ChatGPT Stealer C2 Communication";
  flow:established,to_server;
  content:"POST"; http_method;
  content:"/ext2/switchModel"; http_uri;
  content:"chatsaigpt.com"; http_host;
  content:"model"; http_client_body;
  classtype:trojan-activity;
  sid:1000001;
  rev:1;
)

Firewall Blocking (add to Part 1's recommendations):

For Incident Response

If Extension Detected — Immediate Actions:

  1. Isolate endpoint from network
  2. Capture Chrome extension folder before removal
  3. Export chrome.storage.local for forensics
  4. Collect browser history (last 30 days minimum)

Credential Impact Assessment:

  1. Review user's recent AI conversations (ChatGPT history)
  2. Identify any credentials/secrets mentioned
  3. Rotate ALL potentially exposed credentials
  4. Force password reset for affected users

Data Exposure Analysis:

  1. Interview user about AI usage patterns
  2. Check for mentions of customer data
  3. Review compliance implications (GDPR, HIPAA, etc.)
  4. Document exposure for breach notification assessment

Lateral Movement Hunt:

  1. Check if credentials were used elsewhere
  2. Review authentication logs for anomalies
  3. Search for follow-on phishing attempts
  4. Monitor for insider knowledge in attacks

Operational Security Lessons

Why This Campaign Succeeds

Red Flags (Retrospective)

What should have raised suspicion:


Conclusion

Confirmed Threats:

New Intelligence:

The Bigger Picture

This isn't just about two malicious extensions. It's about:

Organizations that detected these extensions (Part 1) now have the technical intelligence to block C2 infrastructure completely, detect variants with similar patterns, assess data exposure accurately, and build defense-in-depth controls.

For SOC teams following this campaign: Part 1 gave you hunting queries and incident detection. Part 2 gives you C2 IOCs and technical understanding. Combined: complete intelligence package for defense.


What's Next

For Defenders

  1. Implement network blocking for both C2 domains
  2. Add YARA rules to extension scanning
  3. Review Chrome enterprise policies
  4. Audit AI usage policies and awareness training

For the Community

This research is shared openly to help defenders. If you detect these extensions in your environment, share anonymized telemetry. If you find additional variants, contact us or publish findings. If you develop enhanced detections, contribute to community defense.


References

← Part 1: Malicious "ChatGPT Helper" Chrome Extensions Are Stealing Prompts — And We've Seen It Firsthand

Technical Artifacts: Full code samples, network captures, and detection tools available on request.


This analysis was conducted in a controlled environment for security research purposes. No unauthorized access to systems was performed.