Введение
Фишинговые веб-сайты представляют значимую угрозу информационной безопасности, поскольку используются для получения учетных и платежных данных посредством имитации легитимных ресурсов. Одной из проблем их обнаружения является короткий жизненный цикл многих фишинговых доменов, вследствие чего методы, основанные преимущественно на заранее сформированных списках известных адресов, не всегда позволяют своевременно выявлять новые атаки.
Обработка естественного языка, или NLP (от англ. Natural Language Processing), – это раздел компьютерных наук о том, как научить машину работать с человеческим текстом: разбивать его на части, оценивать смысл, относить к той или иной категории. Данная задача допускает применение методов NLP, потому что подделка почти всегда оставляет текстовые следы – неестественный адрес, тревожную формулировку, просьбу срочно подтвердить данные.
Прикладную ценность такого подхода отмечает Д.А. Быков в статье «Роль методов машинного обучения в идентификации киберугроз на основе текстовых данных»: «Методы машинного обучения (ML) позволяют автоматически выявлять аномалии, фишинговые атаки, спам и иные вредоносные коммуникации» [1]. Текст перестает быть просто содержимым страницы и становится материалом для автоматической классификации.
Цель статьи – собрать воедино и обобщить методы NLP, которые применяются для детектирования фишинговых веб-сайтов.
Фишинговый веб-сайт
Чтобы понять, что именно анализировать, стоит разобрать подделку по частям. У фишингового сайта обычно три слоя, и каждый оставляет текстовый след.
Первый слой – адрес страницы, URL. Злоумышленнику нужен домен, похожий на настоящий, но ему не принадлежащий. Отсюда приемы вроде добавления лишних слов (sberbank-online-security.ru), подмены зоны (вместо .ru – .net или .top), использования похожих по начертанию символов и длинных путаных адресов с множеством поддоменов. Все это – строка, то есть текст, который можно разобрать по символам и по фрагментам. Для человека разница почти незаметна, а для алгоритма, разбирающего адрес посимвольно, подмена буквы на цифру – явный сигнал.
Второй слой – видимое содержимое страницы: заголовки, подписи к полям, кнопки, текст сообщений. Подделка копирует оформление оригинала, но язык выдает ее чаще, чем картинка. Типичны требование срочно подтвердить учетную запись, угроза блокировки, обещание выигрыша, грамматические и стилистические огрехи при переводе шаблона на русский. Все это поддается анализу методами NLP как обычный связный текст.
Третий слой – структура и код страницы: наличие формы ввода пароля, адрес, куда отправляются введенные данные, встроенные скрипты, мета-теги и атрибуты полей. Эти характеристики могут использоваться как дополнительные структурные признаки модели, однако непосредственно к методам NLP они не относятся. Такое сочетание признаков может использоваться как дополнительный сигнал фишинга.
Отдельно стоят приемы подмены домена. Тайпсквоттинг эксплуатирует опечатки – sberbnak вместо sberbank. Омоглифы подменяют буквы визуально похожими символами из других алфавитов, из-за чего адрес выглядит правильным, но ведет на чужой сервер. Фарминг идет дальше и перенаправляет пользователя на подделку даже при верно набранном адресе. Для текстовых методов первые два приема удобны: они оставляют явный след именно в строке адреса, который модель и улавливает.
Классические методы детектирования и их границы
До распространения машинного обучения фишинг ловили двумя способами – черными списками и правилами. Оба работают и сегодня, но каждый имеет понятный предел.
Черный список – это база заведомо вредоносных адресов. Браузер или почтовый фильтр сверяет открываемый адрес с базой и блокирует совпадение. Способ быстрый и почти не дает ложных срабатываний, но защищает только от того, что уже известно. Новый домен, появившийся недавно, может отсутствовать в списке, вследствие чего такой подход ограничен при обнаружении новых атак.
Сигнатурный и эвристический анализ идет чуть дальше: он ищет не конкретный адрес, а характерные приметы – слова в тексте, подозрительные конструкции в URL, известные шаблоны вредоносного кода. Логику сигнатурного подхода кратко формулируют О.В. Куликова, А.В. Корнилова и Д.В. Буровских в работе «Обнаружение веб-атак с использованием машинного обучения»: «Обнаружение на основании сигнатур – это метод, при котором IDS сравнивает проверяемые данные с известными образцами сигнатур атаки» [4]. Пока атака совпадает с известным образцом, метод надежен. Но стоит злоумышленнику переписать текст или изменить структуру адреса – и сигнатура перестает срабатывать.
Правила к тому же приходится писать и поддерживать вручную. Эксперт перечисляет приметы фишинга, проверяет их на практике, дополняет список. Каждая новая уловка атакующих требует новой правки. Получается гонка, в которой защита всегда на шаг позади, а объем правил со временем разрастается до трудноуправляемого. Вывод подталкивает к смене логики: вместо того чтобы вручную перечислять приметы, разумнее дать алгоритму примеры фишинговых и честных страниц и позволить ему вывести приметы самому. Это и есть переход к машинному обучению, а для работы с текстом – к NLP.
Обработка естественного языка и схема детектора
Модель машинного обучения не понимает слов и букв напрямую – она работает с числами. Поэтому любая текстовая задача начинается с превращения текста в числа, а между исходной строкой и готовым вектором стоит несколько шагов.
Токенизация – разбиение текста на единицы, токены. Чаще всего токен – это слово, но для адресов сайтов удобнее дробить строку по символам или по частям между точками и дефисами. Адрес login-sberbank.account-verify.top распадается на токены login, sberbank, account, verify, top, и каждый из них уже можно оценивать отдельно.
Нормализация приводит токены к единому виду: буквы переводятся в нижний регистр, отбрасываются окончания (лемматизация или стемминг), убираются служебные символы. Слова «подтвердите», «подтвердить», «подтверждение» сводятся к общей основе, и модель перестает считать их разными. Для русского текста этот шаг важнее, чем для английского, из-за богатой системы окончаний.
Удаление стоп-слов убирает частотные слова без смысловой нагрузки – предлоги, союзы, частицы. Они встречаются везде и мало что говорят о том, фишинг перед нами или нет, поэтому их отбрасывают, чтобы не зашумлять модель.
Векторизация – ключевой шаг, превращение подготовленных токенов в числа. От того, как он сделан, зависит, что именно модель сумеет уловить в тексте.
Мешок слов (bag of words) – самый простой способ. Составляется словарь всех встреченных слов, а каждый документ описывается тем, сколько раз в нем встретилось каждое слово. Порядок слов при этом теряется, остается только частота. Для грубой фильтрации спама и фишинга этого иногда хватает: слова «срочно», «блокировка», «подтвердите» в связке уже настораживают.
TF-IDF – усовершенствование мешка слов. Метод взвешивает слова: частые во всех документах понижаются в значимости, а редкие, но характерные для конкретного документа – повышаются. TF-IDF увеличивает вес терминов, которые часто встречаются в конкретном документе, но относительно редко встречаются во всей коллекции документов. Поэтому метод позволяет выделять слова, характерные для отдельных классов текстов.
Отдельный прием, полезный для адресов, – разбиение не на слова, а на n-граммы, короткие цепочки из нескольких подряд идущих символов. Адрес paypa1.com при посимвольном разборе дает подозрительную тройку «pa1», которой не бывает в настоящем paypal. Символьные n-граммы ловят именно такие мелкие искажения, на которые и рассчитывает злоумышленник при подмене букв.
Векторные представления слов (word embeddings), такие как word2vec, пошли дальше. Каждому слову сопоставляется вектор из десятков или сотен чисел, подобранный так, что близкие по смыслу слова получают близкие векторы. «Пароль» и «логин» оказываются рядом в пространстве векторов, хотя пишутся по-разному. Модель начинает улавливать не только наличие слова, но и его смысловое соседство.
Контекстные модели на основе трансформеров, прежде всего BERT, сделали следующий шаг. Вектор слова в них зависит от окружения: «ключ» в тексте про шифрование и «ключ» от двери получат разные представления. Для фишинга это ценно, потому что смысл фразы часто решает больше, чем отдельные слова, – одна и та же просьба «подтвердите данные» звучит невинно в одном контексте и тревожно в другом.
Детектор фишинга на основе NLP проходит пять этапов: сбор размеченных примеров фишинговых и честных страниц, предобработку (очистку, токенизацию и нормализацию), извлечение признаков, обучение классификатора с проверкой на отложенной части данных и принятие решения. Вердикт обычно выдается как вероятность, которую сравнивают с порогом: чем он ниже, тем больше фишинга поймано, но и ложных тревог больше. Схема одинакова и для простого байесовского фильтра, и для тяжелого трансформера – меняется лишь наполнение этапов извлечения признаков и обучения.
Текстовые признаки фишинга
NLP извлекает из фишингового сайта признаки трех типов – по адресу, по содержимому и по языку манипуляции. На практике признаки не используют поодиночке – их объединяют в общий вектор.
Признаки адреса (URL) описывают строку сайта как последовательность символов и фрагментов. Сюда относят длину адреса, количество точек и дефисов, наличие IP-адреса вместо доменного имени, присутствие слов-приманок (secure, login, verify, account), подмену символов, большое число поддоменов, нестандартную доменную зону. Многие из этих признаков считаются без разбора содержимого страницы – достаточно самой ссылки, что ценно: решение принимается еще до перехода на сайт.
Признаки содержимого берутся из видимого текста страницы. Их получают теми же методами векторизации – мешком слов, TF-IDF или эмбеддингами. Фишинговые страницы тяготеют к узкому набору тем: вход в учетную запись, подтверждение платежа, восстановление доступа, предупреждение о блокировке. Частотный портрет такого текста заметно отличается от обычной страницы магазина или блога, и классификатор этот контраст улавливает.
Признаки языка манипуляции – самая «человеческая» группа. Фишинг давит на эмоции, создавая спешку, пугая последствиями и обещая выгоду. Эти приемы выражаются в характерной лексике, обилии повелительного наклонения, восклицаниях. NLP позволяет измерять тон и эмоциональную окраску текста и переводить «ощущение неправильности», знакомое опытному пользователю, в числовые признаки для модели.
Отдельная сложность – русскоязычный фишинг. Богатая морфология, свободный порядок слов, переводные шаблоны с неестественными оборотами требуют аккуратной нормализации и моделей, обученных именно на русском тексте. Инструменты, настроенные на английский, на русском работают хуже, и это приходится учитывать при построении детектора.
От простых классификаторов к нейросетям и трансформерам
Когда текст превращен в векторы, на следующем этапе применяется классификатор – модель, относящая страницу к одному из двух классов: «фишинг» или «легитимная». Исследования последних лет выстраиваются в понятную линию усложнения – от легких статистических методов к глубоким нейросетям.
Наивный байесовский классификатор – один из простых и вычислительно экономичных методов. Он оценивает вероятность того, что текст с данным набором слов относится к фишингу, исходя из того, как часто эти слова встречались в фишинге при обучении. Метод прост, быстр, нетребователен к данным и до сих пор служит отправной точкой, особенно для фильтрации писем. Его слабость – предположение о независимости слов, из-за которого он игнорирует их сочетания.
Логистическая регрессия и метод опорных векторов (SVM) – следующая ступень. Обе модели ищут границу, разделяющую фишинговые и честные примеры в пространстве признаков. В связке с TF-IDF они дают крепкий результат при скромных вычислительных затратах и остаются рабочим инструментом, когда признаки заданы разумно, а объем данных невелик.
Случайный лес (Random Forest) строит множество решающих деревьев и усредняет их голоса. Он хорошо работает с «ручными» признаками адреса – длиной, числом дефисов, наличием подозрительных слов – и устойчив к шуму. Random Forest хорошо подходит для классификации URL на основе заранее выделенных признаков и может использоваться как практичный базовый классификатор.
Нейронные сети сняли с разработчика часть работы по подбору признаков – сеть выделяет их из данных сама. Их преимущества в контексте выявления угроз подчеркивают упомянутые О.В. Куликова и соавторы, перечисляя, что нейросети требуют меньшего вмешательства оператора, способны обнаруживать ранее неизвестные атаки и обучаются автоматически. За это приходится платить потребностью в больших обучающих выборках и вычислительных ресурсах.
Сверточные сети (CNN) изначально созданы для изображений, но применимы и к тексту: они выхватывают локальные сочетания символов или слов – например, подозрительный фрагмент внутри адреса. Рекуррентные сети и их развитие LSTM рассчитаны на последовательности и учитывают порядок элементов, что важно для связного текста и для адреса, читаемого слева направо.
Перспективным направлением являются гибридные модели, объединяющие несколько архитектур. Их устройство поясняет Е.Ю. Кротов в статье «Применение методов глубокого обучения для обнаружения фишинговых веб-сайтов». Две сети дополняют друг друга – одна отвечает за форму, другая за смысл, – и вместе ловят то, что каждая по отдельности пропустила бы. Автор оценивает пользу конкретно: «Гибридная модель CNN+LSTM превосходит SVM по F1-мере на 18–25%, а алгоритмы на основе правил – на 30–40%» [3].
Более сложным классом моделей являются трансформеры, прежде всего модели семейства BERT. Они обрабатывают текст с учетом полного контекста и опираются на предобучение на огромных корпусах, поэтому требуют меньше размеченных примеров под конкретную задачу: достаточно дообучить готовую модель на выборке фишинговых и честных страниц. Расплата – высокие требования к вычислениям и память, что усложняет применение в реальном времени на каждом запросе пользователя. В ответ появляются облегченные версии таких моделей, жертвующие частью точности ради скорости.
Качество детектора определяется не только архитектурой, но и тем, на чем он учился. Модель выводит приметы фишинга из примеров, и если примеры плохи, выводы будут такими же.
Фишинговые образцы обычно берут из открытых баз актуальных подделок, куда адреса попадают по жалобам пользователей и быстро устаревают. Честные страницы собирают из списков популярных и проверенных сайтов. Важно, чтобы оба класса собирались в сопоставимых условиях: если фишинг брать свежий, а честные страницы – из старого архива, модель рискует научиться отличать не подделку от оригинала, а новое от старого, и на реальном потоке ошибется.
Две проблемы обучающих выборок – дисбаланс и устаревание. Дисбаланс: честных страниц в мире несравнимо больше, чем фишинговых, и если это соотношение перенести в выборку без поправок, модель склонится к тому, чтобы все подряд считать честным. С этим борются, выравнивая классы или назначая ошибкам на фишинге больший штраф. Устаревание: фишинг меняется за недели, поэтому выборку приходится регулярно обновлять, иначе точность на свежих атаках падает.
Сравнение подходов
Чтобы сравнивать методы между собой, нужны общие меры качества. Все они строятся на четырех возможных исходах, которые модель выдает на проверочных данных.
Истинно-положительный исход – фишинг распознан как фишинг. Истинно-отрицательный – честная страница признана честной. Ложноположительный – честную страницу ошибочно сочли фишингом (ложная тревога). Ложноотрицательный – фишинг пропущен как честный, и это самая опасная ошибка, потому что именно она оставляет жертву беззащитной. Из этих четырех чисел собираются все метрики.
Доля верных ответов среди всех (accuracy) – самая очевидная мера, но при перекосе классов она обманчива. Если фишинга в выборке всего 2%, модель, объявляющая все подряд честным, получит 98% верных ответов, не поймав при этом ни одной атаки. Полагаться на одну эту цифру нельзя.
Precision (точность в узком смысле) отвечает на вопрос: из страниц, помеченных как фишинг, какая доля действительно фишинг? Высокая precision означает мало ложных тревог. Recall (полнота) отвечает на другой вопрос: какую долю настоящего фишинга модель сумела поймать? Высокий recall означает мало пропусков. Для защиты от фишинга пропуск опаснее ложной тревоги, поэтому recall здесь часто важнее.
Между precision и recall почти всегда компромисс. Можно блокировать все подозрительное – вырастет recall, но вместе с ним и число ложных тревог, а precision упадет. Можно блокировать только очевидное – картина обратная. F1-мера соединяет обе величины в одно число как их гармоническое среднее и потому удобна для сравнения моделей; именно ее приводят в большинстве процитированных здесь работ.
Еще одна распространенная мера – ROC-AUC – показывает, насколько хорошо модель разделяет классы при разных значениях порога. Значение около 0,5 соответствует угадыванию наугад, близкое к 1,0 – почти безошибочному разделению. Разумно смотреть на несколько метрик сразу: высокая accuracy при низком recall выдает модель, которая на деле пропускает атаки.
Выбор метода зависит от того, что в задаче нужнее: скорость, точность, объем доступных данных или прозрачность решения.
Таблица 1.
Сравнение подходов для обнаружения фишинга
|
Подход |
Сильные стороны |
Ограничения |
|
Черные списки |
Высокая скорость, почти нет ложных тревог |
Бессильны против новых адресов |
|
Сигнатуры и правила |
Прозрачность, надежность для известных атак |
Ручная поддержка, обход при малейшем изменении |
|
Наивный Байес |
Простота, скорость, мало данных |
Игнорирует сочетания слов |
|
SVM, логистическая регрессия + TF-IDF |
Хороший баланс точности и затрат |
Нужен ручной подбор признаков |
|
Случайный лес |
Точность на признаках URL, устойчивость к шуму |
Слабее работает с «сырым» текстом |
|
CNN, LSTM и гибриды |
Признаки выделяются автоматически, высокая точность |
Требуют много данных и вычислений |
|
Трансформеры (BERT) |
Учет контекста, меньше разметки за счет предобучения |
Тяжелы для работы в реальном времени |
Порядок величин точности для моделей, работающих с адресом, приводят Е.Д. Шустова и О.Р. Лапонина в статье «Состязательные атаки на модели обнаружения фишинга на основе URL-адресов»: «URL-based классификаторы на основе Random Forest, сверточных нейронных сетей и рекуррентных сетей с долгосрочной памятью достигают F1-score 0,95–0,99 на стандартных наборах данных» [7]. Приведенные значения получены на стандартных наборах данных и поэтому не обязательно отражают качество модели в условиях реальной эксплуатации. На практике атакующие специально подстраивают подделки под модель, и реальная точность оказывается ниже.
Общая закономерность читается просто. Чем сложнее модель, тем выше потолок ее точности, но тем больше данных и вычислений она требует и тем труднее объяснить ее решение. Поэтому в боевых системах методы комбинируют: быстрая проверка по спискам и правилам отсеивает очевидное, спорные случаи передаются тяжелой модели, а окончательный порог настраивают под допустимый уровень ложных тревог.
Заключение
Обработка естественного языка является подходящим инструментом для выявления фишинговых сайтов, так как она позволяет преобразовывать текстовые признаки подделки в числовые представления, пригодные для последующей классификации..
Обзор показал движение этой области от черных списков и ручных правил, не поспевающих за новыми атаками, к обучаемым моделям. По мере усложнения векторных представлений – от мешка слов и TF-IDF к эмбеддингам и контекстным трансформерам – и самих классификаторов – от наивного Байеса к гибридным нейросетям – точность растет, но вместе с ней растут требования к данным и вычислениям и падает прозрачность решений.
Универсального метода, обеспечивающего оптимальное соотношение качества, вычислительной сложности и устойчивости к изменениям атак, не существует. Практика идет по пути их сочетания: легкие проверки отсеивают очевидное, сложные модели разбирают спорное, а меры качества вроде precision, recall и F1 позволяют честно сравнивать варианты. Нерешенными остаются состязательные атаки, устаревание обучающих выборок, слабая поддержка русского языка и новый вызов – фишинг, написанный генеративными моделями.
Для практической разработки из обзора следует осторожный вывод: разумная отправная точка – связка понятных текстовых признаков с легким классификатором, дающая прозрачный и быстрый базовый результат, поверх которого затем можно наращивать более сложные модели.
Список литературы
- Быков, Д.А. Роль методов машинного обучения в идентификации киберугроз на основе текстовых данных / Д.А. Быков // Universum: технические науки. – 2025. – № 4 (133). – DOI 10.32743/UniTech.2025.133.4.19826.
- Красов, А.В. Анализ фишинговых сайтов и способы их обнаружения / А.В. Красов, П.Е. Петров // Научный аспект. – 2024. – № 4.
- Кротов, Е.Ю. Применение методов глубокого обучения для обнаружения фишинговых веб-сайтов: анализ эффективности и оптимизация моделей / Е.Ю. Кротов // Актуальные исследования. – 2025. – № 21 (256), Ч. I. – С. 60–69.
- Куликова, О.В. Обнаружение веб-атак с использованием машинного обучения / О.В. Куликова, А.В. Корнилова, Д.В. Буровских // Молодой ученый. – 2023. – № 20 (467). – С. 10–13.
- Лукманова, К.А. Распознавание фишинговых ссылок с использованием методов машинного обучения / К.А. Лукманова, В.М. Картак // Безопасность цифровых технологий. – 2024. – № 3 (114). – С. 9–20.
- Тен, И.А. Защита электронной почты от фишинга и вредоносного программного обеспечения в корпоративной сети / И.А. Тен // Молодой ученый. – 2025. – № 42 (593). – С. 13–25.
- Шустова, Е.Д. Состязательные атаки на модели обнаружения фишинга на основе URL-адресов / Е.Д. Шустова, О.Р. Лапонина // International Journal of Open Information Technologies. – 2026. – Т. 14, № 6. – С. 32–42.


