Публикации

SEO-спам и скрытые ссылки: как защитить сайт и репутацию

Анализируя контент веб-сайтов в попытках определить, к какой категории относится их содержимое, мы иногда получаем совершенно неожиданный результат. Например, сам ресурс — это может быть официальная страница производителя металлоконструкций, онлайн-магазин цветов или, скажем, сайт юридической фирмы — содержит совершенно нейтральный контент, а наши решения относят его к категории «Для взрослых». Если смотреть на сайт невооруженным глазом, то совершенно непонятно, что стало причиной детектирования, но если взглянуть на лог с результатами анализа страницы движком контентной категоризации, ситуация проясняется.

Невидимый HTML-блок, или SEO-спам

Сайт попадает в сомнительную категорию, поскольку на нем присутствует невидимый для обычных пользователей HTML-блок со ссылками на сторонние сайты. Как правило, эти сайты относятся к определенной тематике (в нашей практике мы чаще всего сталкиваемся с порнографическим и гэмблинг-контентом), а в самом скрытом блоке, помимо ссылок, содержатся релевантные ключевые слова. Подобные приемы являются одним из видов «черного SEO» (Black Hat SEO), или SEO-спама, — манипулирования рейтингом веб-ресурсов в поисковой выдаче в нарушение принципов этического поискового продвижения (SEO). Хотя существует множество уловок, с помощью которых злоумышленники повышают или понижают сайты в рейтинге поисковиков, в последнее время нам стали чаще попадаться на глаза именно скрытые блоки, поэтому в статье мы сосредоточимся на них.

Владельцы сайтов, как правило, даже не подозревают о проблеме, пока нет явных негативных последствий, например резкого падения трафика, предупреждений от поисковых систем или жалоб от посетителей. Если владелец пользуется решениями «Лаборатории Касперского», сигналом о том, что с сайтом что-то не так, может послужить и его блокировка вследствие попадания в запрещенную категорию. Наш движок детектирует как ссылки, так и их описание, которое присутствует в таком блоке.

Невидимые для обычных пользователей гиперссылки, доступные для сканирования разным аналитическим системам, например поисковым движкам или нашей веб-категоризации, называются «скрытыми ссылками» (hidden links). Зачастую их используют для мошенничества, искусственного завышения рейтинга (позиции в поисковой выдаче) своего сайта или снижения рейтинга сайта-жертвы.

Чтобы понять, как это работает, давайте разберемся, как вообще работает современное SEO. За ранжирование сайтов в выдаче, скажем, Google отвечает ряд алгоритмов. Самый старый и самый релевантный для этой статьи называется PageRank. Показатель PageRank, или вес в контексте этого алгоритма, — это числовая величина, определяющая «важность» конкретной страницы. Чем больше ссылок с других сайтов ведет на страницу и чем больше собственный вес этих сайтов, тем выше PageRank страницы.

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

Стоит отметить, что на сегодняшний день PageRank — не единственный способ оценки ценности сайта, используемый поисковиками. Тот же Google применяет и другие алгоритмы, в том числе RankBrain на основе искусственного интеллекта или языковую модель BERT. Они используют более сложные метрики, включая Domain authority (то, насколько сайт «компетентен» в вопросе, который задает пользователь), качество ссылок и контекст. Размещение ссылок на сайте с высоким значением PageRank все еще может быть выгодным, но эффект от таких манипуляций сильно ограничен из-за усовершенствованных алгоритмов и фильтров, нацеленных на понижение в рейтинге ресурсов, нарушающих правила поисковика.

К таким фильтрам относятся, например, следующие.

  • Google Penguin, который выявляет и «наказывает» сайты, использующие некачественные или манипулятивные ссылки, включая скрытые, для повышения собственного рейтинга. При распознавании таких ссылок их вес может быть обнулен, а рейтинг понижен для обоих ресурсов (и жертвы, и спам-сайта).
  • Google Panda, оценивающий качество контента. Если PageRank сайта высокий, а контент низкокачественный, дублированный, сгенерированный и т. д., его могут понизить в рейтинге.
  • Google SpamBrain, который анализирует HTML-разметку, макеты страницы и т. д. при помощи машинного обучения и выявляет манипулятивные паттерны. Этот алгоритм интегрирован в Google Penguin.

Как выглядит блок черного SEO в HTML-разметке страницы

Рассмотрим реальные примеры скрытых блоков, которые мы встречали на легитимных сайтах, и определим атрибуты, по которым можно выявить такие блоки.

Пример 1

В данном примере используется простой CSS-стиль <div style="display: none;">, который является одним из самых базовых и широко известных методов скрытия контента: параметр display: none; обозначает «не отображать». Также мы видим, что в каждой невидимой секции <div> есть набор ссылок на порнографические сайты низкого качества и их описание при помощи ключевых слов. Это явно указывает на спам, так как сам сайт, на котором мы нашли этот блок, не имеет никакого отношения к тематике ссылок.

Еще один признак черного SEO в примере — это атрибут rel="dofollow". Он указывает поисковым системам, что ссылка является link juice (передающей вес). Спамеры специально проставляют этот атрибут, чтобы перекачивать вес с сайта жертвы на продвигаемые ресурсы. В обычной практике веб-мастера могут, напротив, использовать rel="nofollow", что означает, что наличие ссылки на сайте не должно влиять на рейтинг ресурса, на который она ведет.

Таким образом, комбинация скрытого блока ( display: none;) и набора внешних порнографических (в данном случае) ссылок с атрибутом rel="dofollow" однозначно указывает на инъекцию SEO-спама.

Стоит отметить, что все секции <div> сконцентрированы в одном месте, в конце страницы, а не разбросаны по всему ее коду. Этот блок демонстрирует классический подход Black Hat SEO.

Пример 2

В этом примере мы видим чуть более изощренный подход к скрытию блока с черным SEO, указывающий на попытку обойти автоматические фильтры поисковых систем, которые легко выявляют параметр display: none;.

Разберем набор CSS-стилей <div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;">. Свойства position: absolute; height: 0pt; width: 0pt; убирают блок из видимой области страницы, а overflow: auto предотвращает отображение содержимого, даже если оно выходит за пределы нулевых размеров. Это делает ссылки недоступными для человека, но не мешает им сохраняться в DOM (Document Object Model), поэтому системы сканирования HTML-кода, например поисковые движки, его видят.

Помимо нулевых размеров блока, в этом примере, как и в предыдущем, мы наблюдаем атрибут rel="dofollow", а также множество ссылок на порнографические сайты с соответствующими ключевыми словами.

Комбинация стилей, обнуляющая размеры блока, менее очевидна, чем display: none;, так как элемент технически присутствует в рендеринге, хотя и не виден пользователю. Тем не менее стоит отметить, что такие современные защитные алгоритмы поисковых систем, как Google Penguin, детектируют и такой прием. Поэтому злоумышленники могут применять более сложные техники для ухода от обнаружения. Рассмотрим еще один пример.

Помимо уже знакомых нам параметров, отвечающих за скрытие блока ( height: 0px, color: transparent, overflow: hidden), и названия, которое намекает на его содержимое ( <style type="text/css">.ads-gold), в этом примере в самом начале присутствуют строки со скриптами <script src="files/layout/js/slider3d.js?v=0d6651e2"></script> и <script src="files/layout/js/layout.js?v=51a52ad1"></script>. Они указывают, что внешний JavaScript может динамически управлять содержимым страницы, например добавлять или менять скрытые ссылки, то есть в реальном времени модифицировать этот блок. Это более современный подход, чем в предыдущих примерах. Тем не менее он тоже детектируется фильтрами, отвечающими за выявление подозрительных манипуляций.

Существуют и другие параметры и атрибуты, которые злоумышленники используют для скрытия блока со ссылками, которые, однако, тоже могут быть обнаружены:

    • вместо display: none; иногда встречается параметр visibility: hidden;
    • в рамках position: absolute; блок со скрытыми ссылками может не быть нулевого размера, но находиться далеко за пределами видимой области страницы. Это задается, например, при помощи свойства left: -9232px;, как в примере ниже.

Как злоумышленники размещают скрытые ссылки на чужих сайтах

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

Рассмотрим подробнее различные механизмы, с помощью которых злоумышленник получает доступ к редактированию HTML-кода страницы.

  • Компрометация пароля администратора. Злоумышленник может подобрать пароль, выманить его у жертвы при помощи фишинга или украсть посредством вредоносного ПО. Кроме того, пароль может оказаться в базе утекших данных. Нередко администраторы сайтов используют простые пароли для защиты панели управления или же вообще оставляют дефолтный, тем самым упрощая задачу атакующему.
    После получения доступа к панели администратора злоумышленник может отредактировать непосредственно HTML-код страницы или, например, подключить свои плагины со скрытыми SEO-блоками.
  • Эксплуатация уязвимостей в CMS (WordPress, Joomla, Drupal). Если движок или плагины не обновлены, злоумышленники используют известные уязвимости (SQL Injection, RCE, XSS) для получения доступа к коду сайта. После этого, в зависимости от того, какой уровень доступа дает эксплуатация конкретной уязвимости, они могут править файлы шаблонов (header.php, footer.php, index.php и т. п.) вставлять невидимые блоки в произвольные страницы сайта и т. д.
    При атаках типа SQL Injection злоумышленник внедряет в запрос к базе данных свой вредоносный SQL-код. Многие сайты, от новостных порталов до интернет-магазинов, хранят контент (тексты, описания товаров, новости) в базе данных. Если SQL-запрос, например SELECT * FROM posts WHERE id = '$id' , позволяет передавать произвольные данные, атакующий может использовать поле $id для внедрения своего кода. Это позволяет ему изменять содержимое записей, например вставлять HTML со скрытыми блоками.
    При атаках типа RCE (Remote Code Execution) злоумышленник получает возможность запускать свои команды на сервере, где работает сайт. В отличие от SQL-инъекций, которые ограничиваются базой данных, RCE дает почти полный контроль над системой, например позволяет создавать или изменять файлы сайта, загружать вредоносные скрипты и, конечно же, внедрять невидимые блоки.
    При атаке типа XSS (межсайтовый скриптинг) злоумышленник внедряет свой JavaScript-код прямо в веб-страницу, используя уязвимые поля ввода, например в комментариях или поисковых запросах. Когда другой пользователь заходит на эту страницу, вредоносный скрипт автоматически выполняется в его браузере. С помощью такого скрипта атакующий может совершить различные вредоносные действия, в том числе незаметно добавить на страницу скрытый блок <div> с невидимыми ссылками. Для XSS злоумышленнику не нужен прямой доступ к серверу или базе, как в случае с SQL Injection или RCE, ему достаточно найти одну уязвимость на стороне сайта.
  • Атака через хостинг-провайдера. Помимо взлома непосредственно сайта-жертвы, злоумышленник может попытаться получить к нему доступ со стороны хостинга. Если сервер хостинг-провайдера слабо защищен, есть риск, что его взломают. Если же на одном сервере работают несколько сайтов или веб-приложений, уязвимость в одном из них может поставить под угрозу все остальные проекты. Возможности злоумышленника зависят от уровня доступа к серверу. К ним может относиться: внедрение скрытых блоков в шаблоны страниц, подмена файлов, модификация баз данных, подключение внешних скриптов к нескольким ресурсам одновременно и т. д. При этом администратор сайта может не заметить проблему, так как уязвимость эксплуатируется не в коде его ресурса, а в самой серверной среде.

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

Зачем злоумышленникам размещать скрытые блоки

Одной из самых очевидных целей внедрения скрытых блоков в чужие ресурсы является кража PageRank у сайта жертвы. Чем популярнее и весомее сайт, тем интереснее он для злоумышленников. Но это не значит, что веб-ресурсы с умеренным или низким трафиком вне зоны риска. Как правило, администраторы популярных сайтов и крупных платформ стараются соблюдать правила безопасности, и к ним подобраться не так просто, поэтому злоумышленники могут использовать менее популярные — и менее защищенные — сайты.

Как мы уже упоминали, подобный подход к «продвижению» веб-ресурсов хорошо детектируется и пресекается на стороне поисковых систем. Однако в краткосрочной перспективе злоумышленники все же получают от него выгоду: пока алгоритмы поисковика не выявили нарушение, на интересующие их сайты удается нагнать трафик.

В частности, хотя пользователь не видит скрытый блок и не может сам перейти по ссылкам, злоумышленники могут повышать «посещаемость» своих ресурсов при помощи скриптов. Один из возможных сценариев выглядит следующим образом: JavaScript в фоновом режиме создает iframe или отправляет HTTP-запрос на сайт из скрытого блока, который получает информацию о переходе.

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

Наконец, скрытые ссылки позволяют злоумышленникам понижать репутацию атакованного сайта и дискредитировать его для поисковиков. В свете того что алгоритмы наподобие Google Penguin штрафуют сайты, на которых размещены сомнительные ссылки, эта угроза особенно актуальна. Злоумышленники могут использовать такие приемы, как инструмент недобросовестной конкурентной борьбы, хактивизма или любой другой активности, предполагающей дискредитацию конкретных организаций или лиц.

Любопытно, что в 2025 году нам стали чаще попадаться скрытые блоки со ссылками на порнографические ресурсы и онлайн-казино на разного рода легитимных сайтах. С низкой долей уверенности мы можем предположить, что это связано, с одной стороны, с развитием нейросетей и возможностью легко автоматизировать подобные атаки, а с другой — с обновлениями антиспам-систем Google, которые происходят регулярно и в последний раз завершились в конце сентября 2025 года: злоумышленники могли пытаться успеть извлечь максимум выгоды до того, как поисковик еще немного усложнит им жизнь.

Последствия для сайта-жертвы

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

Хотя посетители сайта не видят скрытые ссылки, их могут обнаружить сторонние аудиторы, системы анализа контента или исследователи, рассказывающие о таких находках в публичных отчетах. Это, в свою очередь, может подорвать доверие к сайту. Например, ресурсы, на которых наш движок категоризации обнаружит ссылки на страницы с порнографией, будут отнесены к категории «Для взрослых». Как следствие, все наши клиенты, которые используют веб-фильтрацию с активированной блокировкой по соответствующей категории, не смогут посещать такой сайт. Дополнительно информация о принадлежности веб-сайта к той или иной категории публикуется на нашем Kaspersky Threat Intelligence Portal и доступна всем желающим проверить его репутацию.

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

Как обнаружить на своем сайте блок со скрытыми ссылками

Самый простой и доступный любому пользователю способ проверить сайт на наличие скрытого блока — это посмотреть его исходный код в браузере. Делается это очень просто. Заходите на целевой сайт, нажимаете Ctrl+U, и на соседней вкладке открывается код сайта. В нем надо искать (Ctrl+F) следующие ключевые слова: display: none, visibility: hidden, opacity: 0, height: 0, width: 0, position: absolute. Помимо этого, можно проверить ключевые слова, характерные для самого скрытого контента. Если мы говорим о риске размещения ссылок на порнографические или гэмблинг-сайты, искать стоит porn, sex, casino, card и подобные слова.

Чуть более сложный способ — это исследование DOM на предмет невидимых блоков через инструменты разработчика (DevTools). После того как страница полностью загрузится, в браузере откройте DevTools (F12) и перейдите на вкладку Elements. Используйте поиск (Ctrl+F) по ключевым словам: <a, iframe, display: none, hidden, opacity. Наведите курсор на подозрительные элементы в коде, чтобы браузер подсветил их расположение на странице. Если блок занимает нулевую площадь или находится за пределами видимой области, это признак скрытого элемента. Проверьте вкладку Computed для выбранного элемента — там можно увидеть примененные CSS-стили и убедиться, что он скрыт от глаз пользователя.

Также можно воспользоваться специальными инструментами для SEO. Обычно это сторонние решения, которые сканируют данные, связанные с SEO-оптимизацией сайтов, и строят отчеты. Они могут предоставить отчет и о подозрительных ссылках. Чаще всего такие решения платные, при этом при выборе инструмента стоит руководствоваться в первую очередь не ценой, а репутацией вендора. Лучше использовать проверенные известные сервисы, которые точно не содержат вредоносной или сомнительной нагрузки, например Google Search Console, Bing Webmaster Tools, OpenLinkProfiler или SEO Minion.

Еще один способ обнаружить скрытый SEO-спам на сайте — это проверить саму CMS и ее файлы. Для начала стоит просканировать таблицы базы данных на наличие подозрительных HTML-тегов со сторонними ссылками, которые могли быть вставлены злоумышленниками, а также внимательно просмотреть файлы шаблонов сайта (header.php, footer.php, index.php) и подключаемые модули на предмет незнакомого или подозрительного кода. Особенно нужно обращать внимание на зашифрованные вставки, непонятные скрипты или ссылки, которых изначально не должно быть в структуре сайта.

Дополнительно можно проверить репутацию своего сайта на Kaspersky Threat Intelligence Portal. Если сайту присваивается несвойственная ему категория — обычно это «Для взрослых», «Непристойное содержимое» или «Азартные игры», — есть высокая вероятность, что на вашем сайте располагается скрытый блок SEO-спама.

Как защитить свой сайт

Чтобы скрытые ссылки не попали на ваш сайт, следует избегать нелицензированных шаблонов, тем и других готовых решений. Вся инфраструктура сайта должна строиться только на лицензированных и официальных решениях. То же касается и веб-мастеров и компаний, которые вы нанимаете для создания своего сайта: рекомендуем проверять результат их работы на наличие не только скрытых ссылок, но и в целом уязвимостей. Никогда не экономьте на безопасности!

Всегда обновляйте CMS, темы и плагины до последних версий, так как новые версии часто закрывают известные уязвимости, которыми пользуются злоумышленники. Если на сайте присутствуют плагины и темы, которые не используются, следует их удалить. Чем меньше лишнего установлено, тем меньше риск эксплуатации уязвимости в одном из расширений, плагинов и тем. При этом стоит отметить, что этот риск никогда не исчезает полностью — он есть даже при минимальном наборе компонентов, если они устарели или плохо защищены.

Для защиты файлов и сервера важно правильно настроить права доступа. На серверах под управлением Linux и других Unix-подобных систем для файлов используют 644, а для папок — 755. Это означает, что владелец файла или папки может читать и изменять их (в случае папки — также заходить внутрь), а группа и остальные пользователи могут только читать файлы и заходить в папки. Если где-то запись вообще не нужна, например в папках с шаблонами, следует полностью запретить ее, чтобы снизить риск внесения злоумышленниками несанкционированных изменений. Кроме того, необходимо настроить регулярное автоматическое создание резервных копий сайта, чтобы в случае проблем можно было быстро восстановить данные. Дополнительно стоит использовать веб-фаерволы (WAF), которые помогают блокировать вредоносные запросы и защищают сайт от атак извне. Это решение присутствует в Kaspersky DDoS Protection.

Для защиты панели администратора всегда без исключения используйте только сложные пароли и 2FA. Если есть возможность, то не стоит пренебрегать и ограничением доступа к панели управления по IP. Права администратора должны быть только у тех, кому они необходимы для работы.

SEO-спам и скрытые ссылки: как защитить сайт и репутацию

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

Mem3nt0 mori – Hacking Team снова с нами!

Исследователи «Лаборатории Касперского» впервые обнаружили шпионское ПО Dante, разработанное Memento Labs (бывшей Hacking Team) в дикой природе и нашли его связь с APT ForumTroll.