Как я случайно превратила свой сокращатель ссылок в приманку для мошенников
Пару месяцев назад я запустила сервис y.gy, навороченный сокращатель URL. Вызвано это было личной нуждой: в другом моём проекте, getwaitlist.com, используется множество реферальных ссылок, а доступные сервисы сокращения url не внушали мне доверия. В итоге я решила создать собственный инструмент, который наверняка окажется полезен не только мне.
Я разработала лучший в своём роде сокращатель со всеми возможными примочками, начиная с обширной кастомизации и заканчивая хорошей аналитикой трафика. Это всё, что мне было нужно. По аналогии со многими аналогичными инструментами я разместила интерфейс «Shorten Link» по центру домашней страницы. Регистрация для использования сервиса не требуется. Я сделала доступ бесплатным и неограниченным, опираясь на принцип: «бесплатность – лучшая маркетинговая стратегия». Закончив с настройкой, я без громких заявлений сделала релиз и начала потихоньку продвигать свой проект.
▍ Мошенники тут как тут
С первого же дня мой ресурс облюбовали мошенники. Некоторые из первых отправленных ссылок явно были фишинговыми: фейковые страницы авторизации для Microsoft Online, созданные в бесплатных сборщиках сайтов. Тогда до меня дошло, что самыми заинтересованными пользователями новых бесплатных сокращателей ссылок являются именно киберпреступники, которых регулярно банят на других ресурсах. Они используют подобные сервисы для маскировки своего трафика и затруднения блокировки их зловредных страниц.
Я попробовала отправить некоторые из тех ссылок на другие платформы для сокращения URL вроде Bitly и TinyURL, чтобы понять, как они их обрабатывают. Довольно быстро стало ясно, что они внутренне ведут чёрные списки, по которым исключают определённые домены или типы сайтов. Но другие вредоносные ресурсы всё же проходили. Я решила, что просто буду мониторить всё это сама. Обычно пользователи отправляли не более 100 ссылок в день, так что мне было несложно выделить 20 минут на их проверку. Я создала простую информационную панель для мониторинга ссылок, чтобы отмечать их как легитимные либо заблокированные.
▍ Достоверность на уровне домена
Многие ссылки относились к одним и тем же доменам, и я создала логику деления на чёрный и белый списки. Например, ссылка youtube.com всегда будет легитимной. С другой стороны, я видела, что определённые домены всегда оказывались скамом. Помню домен my-online-store.shop, в котором каждый поддомен вроде etsy.my-online-store.shop или shopify.my-online-store.shop оказывался отдельной фишинговой ссылкой. Кибермошенники имеют огромное число доменов, но не бесконечное (всё же они стоят денег). Так что блокировка на уровне домена оказалась достаточно эффективной.
Иронично, но вскоре я заметила, что преступники с лёгкостью могут обходить подобную блокировку, используя другие сервисы для маскировки своего URL (собственно, для этого они также пытались использовать и мой). Исправить это оказалось несложно. Я сформировала опенсорсный репозиторий всех сокращателей URL и добавила их в чёрный список для автоматической блокировки.
Серьёзной проблемой на уровне доменов стало то, что я бы описала как «доверенный домен» с «недоверенными поддоменами», особенно, когда эти поддомены представляют контент, генерируемый пользователями. Я заметила, что злоумышленники очень любят Hubside, Wix и Replit за их щедрые бесплатные тарифы и низкий уровень безопасности. Порой я обнаруживала вплоть до 500 ссылок с одного только subdomainXYZ.replit.com, которые тут же блокировала. (Только сегодня я забанила кучу ссылок с open-facebook.replit.app и google-official.replit.app. Почему Replit всё это не отлавливает, для меня остаётся загадкой). И напротив, я ни разу не видела, чтобы вредоносный контент размещался на Webflow или Squarespace, где действуют куда более серьёзные условия использования.
▍ Сложности с более находчивыми злоумышленниками
Благодаря своей системе распределения ссылок по чёрному и белому спискам на уровне доменов, я отсекла подавляющий процент спама. Но часть всё же пробиралась. Был случай, когда я получила два письма, от Amazon и Cloudflare (эти сервисы я использую для хостинга), сообщавших, что на моём домене обнаружен вредонос, который был помещён в карантин. Это были фишинговые страницы, которые оказывались таковыми только для пользователей в определённом географическом регионе. Например, если вы заходите на какой-то сайт с IP США, то он будет выглядеть как нормальный блог, но если вы зайдёте на него с французского IP, то он окажется фишинговой страницей для мобильного оператора Orange.
И это повлекло серьёзные последствия: фирмы, которые сообщали в AWS/Cloudflare о проблеме безопасности, также автоматически сообщали об этом и многим разработчикам антивирусов. В итоге некоторые добросовестные пользователи жаловались на невозможность использовать ссылки y.gy, потому что те блокируются корпоративными фаерволами.
Следующим шагом я решила повысить для своих противников уровень игры. Вместо молчаливого удаления вредоносных ссылок теперь я начала перенаправлять их на страницу Scam Warning (предупреждение о скаме). Я также придумала хитрость для обнаружения географически ограниченного контента. После этого активность злоумышленников резко снизилась.
Приём с предупреждением оказался особенно эффективен, так как он уведомляет конечного пользователя, то есть получателя скама, об обмане, что пробуждает у человека бдительность и недоверие к вызвавшим предупреждение сайтам.
Забавно, но большинство этих кибермошенников имеют свой «почерк», отражающийся в использовании только одного вида скама – похожих фишинговых страниц и даже URL. После того, как я начала перенаправлять их трафик на страницу Scam Warning, зачастую этот почерк пропадал – возможно, они переходили на другой сервис для сокращения ссылок, который был менее враждебен к ним и их бизнес-моделям.
▍ Приближаясь к спокойствию
Теперь, когда мне удалось ещё больше сократить наплыв спама и демотивировать его инициаторов, на ресурс стали приходить преимущественно легитимные ссылки. Я отправила тикеты в техподдержку нескольких поставщиков антивирусов, и y.gy разблокировали. Всё наладилось, но даже при наличии больших, проприетарных белых и чёрных списков было по-прежнему утомительно вручную проверять другие присылаемые ссылки. Затруднение вызывали следующие аспекты:
- Ещё более изощрённые мошенники придумали такую схему: размещали на веб-странице легитимный контент, использовали его для прохода первичной проверки и затем меняли этот контент на скам. Для того, чтобы реально предотвратить мошеннические действия, необходимо регулярно повторять сканирование всех ссылок.
- Мы слишком маленький проект для использования коммерческого инструмента сканирования. Например, VirusTotal стоит несколько тысяч долларов в месяц.
Я осознавала, что грамотных решений этих вопросов у меня нет. При этом я также понимала, что они мне необходимы, поскольку в противном случае я буду постоянно сталкиваться с одними и теми же проблемами, ведущими к блокировке моего сервиса антивирусным ПО.
Фундаментальная проблема заключалась в том, что мой API был доступен бесплатно. Естественно, я могу потребовать регистрации и ввода CAPTCHA с верификацией почты, но это не особо отпугнёт продуманных мошенников. Эти проверки пройти несложно. Действительно эффективной мерой против злоумышленников будет требование изначальной оплаты. Её эффективность объясняется тем, что обработчики платежей вроде Stripe очень агрессивно настроены в отношении злоумышленников. Любой промах, который может привести к иску со стороны пользователей, является большой проблемой для Stripe, поэтому сервис реализует очень надёжные механизмы защиты, на которые я готова положиться.
Кроме того, я уже создала довольно неплохой сервис, может, пора ему стать платным? Думаю, стоимость в $4/месяц будет достаточно низкой, чтобы не отпугнуть желанных пользователей: тех, кто реально хочет получать ценность от сервиса и использовать его для достижения какой-то задачи, а не просто между делом. При этом такая система оттолкнёт скамеров.
Недолго думая, я провела выходные, дополняя все свои API пейволлом. Теперь трафика стало существенно меньше, по факту настолько мало, что можно сканировать его бесконечно. При этом его обработка комфортно вписывается в бесплатные и недорогие тарифы коммерческих сканеров ссылок.
▍ Все ли проблемы решает пейволл?
Нет, всё равно встречаются пользователи, которые платят, а затем загружают вредоносные ссылки. Нам не известно, какие они при этом используют банковские карты – законно полученные кредитки или краденые. Но этот механизм можно рассмотреть как воронку: сначала они должны согласиться на платёж, затем им надо пройти защиту платёжного шлюза, потом ввести ссылку, которая автоматически не будет забанена и так далее. В итоге эта воронка сильно сужается, и через неё проходит очень мало ссылок, которые нам нужно прогнать через сканеры. С этим уже проблем нет.
▍ Остались ли у нас бесплатные функции?
Да, я оставила возможность бесплатного создания QR-кодов. Всё дело в том, что QR-код при генерации указывает конкретно на целевой URL и не перенаправляется через серверы Y.GY. То есть возможности замаскировать ссылку этот механизм не даёт, и проблем не возникает. До этого мы предлагали генератор QR-кода, который создавал ссылки Y.GY, имея при этом все те же возможности кастомизации и аналитики, что и при сокращении ссылок – но большинству пользователей эти дополнительные опции не нужны. Им просто нужен QR-код для их ссылки, и мы его с радостью предоставляем.
▍ Чему я научилась
Этот проект стал для меня важным уроком: порой грёзы о чём-то бесплатном слишком хороши для реального мира. Мне пришлось преодолеть немало проблем и потратить много часов своего времени, чтобы в итоге просто закрыть бесплатный доступ. Может, мне следовало сделать это с самого начала?
Этот опыт с созданием сервиса для сокращения ссылок заставил меня оценить то, насколько быстро и неутомимо мошенники придумывают новые решения. Так как их постоянно банят во всех действующих сервисах, они первыми находят ваше новое предложение и используют свой самый лучший эксплойт. А новый проект обычно легко эксплуатировать, поскольку его основатель ещё не реализовал все меры защиты, которые есть у зрелых ресурсов. Это означает, что самый сложный момент в жизни приложения по сокращению ссылок или почтового сервиса – это его первый день работы.
Кстати, о почтовых программах. До этого я написала сервис, который бы мог стать противовесом таким дорогостоящим провайдерам, как Sendgrid или Mailgun. Для запуска ему не хватает только косметического оформления. Почтовые сервисы ещё более уязвимы для скама, чем сокращатели URL. Отправка письма стоит денег и является основным вектором для фишинга и скама.
Теперь, получив весь этот опыт, я знаю, чего ожидать после запуска такого сервиса. Я точно не предоставлю бесплатных вариантов его использования и буду готовиться к нападению скамеров и мошенников. Я рада, что получила этот опыт и уже не стремлюсь сломя голову поскорее начать предоставлять услуги почты – с этим явно возникнет немало проблем.
▍ Неочевидные аспекты потребления ПО
Эту статью я решила написать, потому что сама проявила наивность в отношении того, как мой сервис будет использоваться после релиза. Создатели ПО зачастую оказываются в этом смысле наивны. Люди будут использовать ваше ПО так, как вы и представить себе не могли. Например, когда я создавала y.gy, то предполагала, что в законном русле его в основном будут использовать маркетологи или инженеры для отслеживания ссылок. Но реальность оказалась иной: к примеру, поступало много ссылок от SEO-ферм, создающих бэклинки. Я видела кучу сокращаемых ссылок – и не для маркетинга, а просто потому, что они были слишком длинные.
Ещё я быстро заметила, что получаю много международного трафика – например, некоторые пользователи сокращали ссылки для множества роликов YouTube на арабском языке. Была ещё группа перуанских газет, которые сокращали ссылки для всех своих статей. Некоторые посетители сокращали адреса онлайн-плейлистов, и я до сих пор не знаю, зачем. Когда я начинала этот проект, у меня не было каких-то конкретных ожиданий, так что всё это оказалось очень интересным.