Сорок один день пассивной телеметрии на периметре двух организаций позволил зафиксировать 84 785 входящих запросов, из которых только 166 IP-адресов получили статус подтверждённых источников аномальной активности. Исследование, проведённое с 6 июня по 17 июля 2026 года, продемонстрировало методику отбора, при которой 96% "кандидатов" были отсеяны из-за отсутствия прямых доказательств вредоносного поведения. Полученные данные телеметрии показали, что большинство сканирующих хостов принадлежат облачным провайдерам и используют пустые или поддельные строки User-Agent (идентификатор клиента в HTTP-запросе). Ни одна из попыток эксплуатации не увенчалась успехом - серверы целевых организаций не вернули ни одного ответа, отличного от штатной страницы 404 или нормального рендеринга.
Описание
Процесс фильтрации был многоступенчатым. Из 84 785 уникальных запросов после удаления дубликатов осталось то же количество - повторных обращений с одинаковыми идентификаторами за цикл не было. Затем исключены 52 819 запросов от собственных сетей аналитиков, выходных узлов CDN (сети доставки контента) и провайдеров, что сократило массив до 31 966 кандидатов от 3617 IP-адресов. На следующем этапе применялся "шлюз доказательств" - отсеивались те источники, которые не демонстрировали последовательного вредоносного паттерна. В результате осталось 14 133 запроса от 166 IP - всего 4,6% от исходного числа адресов. Примечательно, что ещё 1070 IP имели метки "собственный путь разведки" или "бот-угроза", но не были опубликованы, поскольку сборщик телеметрии срабатывает также на легитимные запросы /robots.txt от поисковых роботов OpenAI, Apple и академических проектов. Метка - это гипотеза, но не улика.
Ни по одному из 14 133 подтверждённых запросов не было зафиксировано успешной аутентификации, доступа к конфигурационным файлам или выполнения PHP-скриптов. Единственные три HTTP-кода 200, возвращённые на эксплойт-полезные нагрузки, оказались обычной отрисовкой index-страницы за 5 миллисекунд - переданные параметры игнорировались, код не выполнялся. Таким образом, ни одна попытка сканирования не привела к компрометации периметра. Однако сам факт массового зондирования представляет ценность для анализа тактик злоумышленников и построения защитных барьеров.
На основе содержимого запросов выделены три кластера поведения, не привязанные к конкретным группировкам. Первый кластер A - распределённый перебор путей веб-шеллов. 119 источников, из которых 105 находятся в Microsoft Azure, использовали пустой User-Agent и с 9 июня по 17 июля последовательно проверяли наличие предустановленных PHP-бэкдоров. Среди искомых имён - файлы семейства WSO (wso112233a.php, .wp/wso.php), w3lls.php, xenon1337.php и сотни рандомизированных вариантов. Ключевая улика: распределение по 105 Azure-адресам покрывает 1379 уникальных путей, и ни один путь не встречается хотя бы у половины источников. Это указывает на разделённую работу по общему списку, а не на случайное совпадение сканеров. Вывод подтверждается тем, что целевой периметр вообще не использует PHP - 8814 запросов к PHP-путям ни разу не вернули код, отличный от 404.
Второй кластер B - систематический перебор учётных данных и конфигурационных файлов. 56 источников, 13 из которых подделывали идентификаторы краулеров, с 6 июня по 17 июля проверяли наличие файлов .env и его двух десятков вариаций, .git/config, .aws/credentials, ключей сервисных аккаунтов GCP, Spring Boot /actuator/env, appsettings.json и дампов баз данных. Тринадцать адресов объявили себя Googlebot, Google-CloudVertexBot, Applebot, Amazonbot, OAI-SearchBot, bingbot, CCBot или cohere-ai, но реальные автономные системы, с которых исходили запросы, не принадлежат этим операторам. Легитимные поисковые роботы не запрашивают /.aws/credentials.
Третий кластер C - два источника из Techoff SRV Limited, отправившие 26 запросов с полезной нагрузкой на проверку выполнения серверного кода Next.js. Использовались закодированные в Base64url данные, направленные на маршруты данных /_next/data/<buildId>/page.json и /api/[[...slug]]. После декодирования они содержали команду require('child_process').execSync(cmd) с обёрткой результата через btoa() (кодирование в Base64) для эксфильтрации. Команда представляла собой безвредный канарей-тест echo VULN_TEST. Это автоматическое обнаружение уязвимостей, а не ручное вторжение, но тем не менее несанкционированное и, как показали данные, безуспешное.
Из публикации намеренно исключены 52 819 запросов, в том числе от собственной сети оператора (подсеть 209.121.229[.]0/24), от TELUS, Shaw, всех выходных узлов Cloudflare, Akamai, Fastly (блокировка CDN-сетей наказала бы реальных посетителей, а не атакующих), а также от iCloud Private Relay. Ещё 1070 IP получили отказ, несмотря на метки угроз, - их запросы были ограничены /robots.txt и не содержали доказательств вредоносности. Например, адрес 138.246.253[.]24 из Leibniz-Rechenzentrum (академическая сеть) сделал 33 запроса к /robots.txt, все с ответом 200, и оказался измерительным краулером. А диапазоны Microsoft 104.210.140[.]0/24 и 74.7.228[.]0/24 принадлежат настоящему OpenAI SearchBot, законно запрашивающему robots.txt. Опубликованные 133 IP-адреса снабжены тегами ephemeral-cloud (облачные и VPS-источники) и имеют срок действия 30 дней с момента последнего наблюдения; для выделенного хостинга - 90 дней. Облачные провайдеры, особенно Azure, переиспользуют адреса, и устаревший индикатор может стать ложноположительным для другого владельца. Потребителям данных советуют учитывать поле valid_until.
Данная статистика подчёркивает важность многоэтапной фильтрации при анализе входящего трафика. Из более чем восьмидесяти тысяч запросов только 0,2% адресов смогли пройти все проверки, продемонстрировав признаки скоординированной разведки. При этом ни одна атака не достигла цели, что говорит об эффективности базовой защиты периметра - отсутствии уязвимых компонентов (PHP, Next.js с открытыми эндпоинтами выполнения кода) и своевременном сокрытии конфиденциальных файлов. Однако сам поток запросов указывает на постоянный интерес злоумышленников к сбору информации о потенциальных точках входа, особенно в облачной инфраструктуре. Компаниям рекомендуется регулярно проверять отсутствие служебных файлов в корневых каталогах веб-серверов, отключать ненужные модули и мониторить запросы к нестандартным путям от облачных IP-диапазонов.
Индикаторы компрометации
IPv4
- 104.215.180.121
- 104.43.131.157
- 117.33.225.239
- 13.201.68.87
- 13.70.33.224
- 135.119.27.130
- 144.172.116.30
- 15.168.138.122
- 151.243.143.47
- 158.158.43.25
- 158.158.49.166
- 158.158.76.105
- 159.13.55.39
- 162.35.163.99
- 165.227.39.234
- 172.161.73.175
- 172.212.179.199
- 18.183.202.246
- 185.213.175.37
- 185.213.175.92
- 191.233.234.186
- 191.237.255.150
- 191.239.249.183
- 195.170.172.102
- 195.178.110.199
- 195.178.110.31
- 20.100.171.63
- 20.100.175.1
- 20.104.198.19
- 20.104.203.253
- 20.104.244.165
- 20.104.50.116
- 20.104.72.147
- 20.104.72.216
- 20.12.202.181
- 20.12.231.72
- 20.151.110.96
- 20.151.112.244
- 20.151.205.204
- 20.151.217.54
- 20.151.225.63
- 20.151.5.99
- 20.194.46.8
- 20.195.177.9
- 20.195.178.90
- 20.197.178.213
- 20.197.232.12
- 20.197.59.67
- 20.200.218.6
- 20.203.151.222
- 20.203.219.109
- 20.205.46.33
- 20.205.96.99
- 20.206.105.139
- 20.206.64.115
- 20.206.73.62
- 20.210.131.207
- 20.212.33.130
- 20.214.184.176
- 20.215.210.222
- 20.215.65.170
- 20.219.164.250
- 20.219.49.21
- 20.220.148.251
- 20.220.166.196
- 20.220.193.126
- 20.220.210.52
- 20.220.225.45
- 20.220.62.118
- 20.220.62.152
- 20.220.9.199
- 20.226.2.115
- 20.226.26.5
- 20.226.32.175
- 20.226.36.195
- 20.226.45.125
- 20.226.60.146
- 20.226.62.44
- 20.226.8.231
- 20.226.80.53
- 20.226.82.126
- 20.226.85.77
- 20.239.184.68
- 20.24.193.69
- 20.24.211.57
- 20.240.51.74
- 20.249.10.17
- 20.250.14.139
- 20.251.117.149
- 20.43.20.191
- 20.43.5.233
- 20.48.176.78
- 20.48.236.161
- 20.48.255.163
- 20.63.216.87
- 20.89.107.188
- 20.89.224.248
- 20.89.237.101
- 20.89.60.120
- 20.9.14.5
- 208.84.101.224
- 23.161.169.113
- 34.125.150.199
- 34.131.242.177
- 34.159.25.14
- 34.162.93.123
- 34.174.166.210
- 34.174.238.61
- 34.181.149.33
- 34.181.231.109
- 34.47.138.199
- 35.196.191.10
- 35.227.116.76
- 35.233.185.108
- 35.242.176.253
- 35.243.243.53
- 35.94.254.69
- 38.248.95.248
- 38.43.93.233
- 4.193.191.49
- 4.193.210.218
- 4.201.96.144
- 4.204.204.10
- 4.210.68.162
- 4.225.202.230
- 4.232.80.255
- 4.232.93.183
- 40.83.92.182
- 40.85.247.124
- 45.148.10.244
- 45.45.237.206
- 45.45.237.7
- 45.45.237.8
- 45.88.138.44
- 47.81.15.95
- 52.138.1.81
- 52.139.36.83
- 52.139.41.31
- 52.175.121.47
- 52.237.126.164
- 63.176.149.38
- 64.89.161.85
- 66.187.4.146
- 74.234.76.171
- 74.248.17.67
- 74.248.36.50
- 74.249.207.185
- 8.231.76.124
- 8.231.97.236
- 80.91.86.169
- 85.11.167.49
- 91.148.244.131
- 91.239.78.39
- 91.92.42.182
- 91.92.42.86
- 92.118.39.32
- 93.123.109.101
- 93.123.109.102
- 93.152.221.13
- 96.44.160.195
IPv6
- 2602:fb54:1400::14f
- 2602:fb54:1400::1e6
- 2602:fb54:1400::49
- 2602:fb54:99a::
- 2605:a140:2338:7143::1
- 2a04:c300:400::1b1