Новости криптомира

18.01.2024
11:05

Фишинг в Web3: как защитить себя и свои активы

social network hacking

Спам и фишинг — две извечные беды интернета на любом этапе его развития. Web3 здесь не исключение. О том, как противостоять фишинговым атакам на ваши криптоактивы, для читателей ForkLog рассказывает Владимир Менаскоп. 

Три кита: безопасность, диверсификация, кастомизация

Если для вас это просто набор слов — самое время задуматься: без этих трех шагов ваш криптомир никогда не станет прекрасным. Начнем с безопасности.

Про нее я уже рассказывал здесь и здесь, поэтому сейчас подчеркну лишь те моменты, о которых не писал ранее:

  1. Если вы уделяете безопасности время лишь раз в год, то вы уже потенциально взломаны. И неважно, будет это попадание вашей почты в спам-базу или слив пароля с какого-то сайта (скажем, обменника). 
  2. Если используете только удобное, но закрытое ПО, то вы уже потенциально взломаны. OS-сообщество работает, как правило, и оперативней, и дружней, но главное — всегда, а не от случая к случаю. 
  3. Если не пробовали работать со сложными расширениями, кошельками и другими официальным dapps вроде Bitcoin Core или Polkadot JS, то, скорее всего, вы не до конца «прощупали» процесс и потенциально — да — уже взломаны. 

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

Пример №1. Наш заклятый враг — нет, не лестница, но реклама

Однажды поздно вечером мне нужно было обменять небольшую сумму в ETH. Куда в этом случае пойдет большинство из нас? Вот и я пошел на BestChange. Но нарушив собственное правило: «Набирать адрес руками, а не через поиск». 

Вбил в Google (что было роковой ошибкой, но так уж случается, что ошибки всегда следуют друг за другом) и перешел по первой ссылке. 

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

Данные: Google. 

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

Все. Эфир мой навсегда осел в карманах мошенников. 

Как можно было этого избежать? 

Вот набор простых рецептов:

  1. Адреса сайтов, которыми пользуетесь (DEX, кошельки, агрегаторы), надо запоминать и вводить вручную, а также добавлять в закладки: уже как минимум два источника для сверки будет. И лишь потом можно использовать поисковики как третий независимый источник: и желательно не Google, Yandex или Baidu, а что-то без рекламы и прочего спама. Несколько рабочих вариантов можно найти здесь.
  2. Везде, где можно что-то кастомизировать, это нужно обязательно сделать: обои в Gmail, авторизация в партнерке на BestChange, личный кабинет в обменнике и многое другое. Особенно хорошо действуют приветственные записи и внутренние названия аккаунтов: даже CEX до этого доросли и применяют, а в децентрализованном мире обходиться без этого — грех. 
  3. И, конечно, всегда нужно проверять сами кошельки (номера): у обменников они часто индексируются. 

По отдельности эти пункты работают плохо, но вместе — вполне. Фишинговая реклама до сих пор попадается в Facebook, так что мой пример будет актуален еще долго. 

Пример №2. Апрувы — боль криптомира

Этот случай, в отличие от предыдущего, произошел не со мной и совсем недавно. Попробую восстановить хронологию.

Изначально у криптоэнтузиаста (назовем его для краткости Е.) был сид от аппаратного кошелька Trezor, на котором хранился BTC под passphrase, что само по себе отличный набор. 

Но далее началась серия ошибок. Цитирую: «Этот сид импортировал в [мобильный кошелек]. Видимо, чтобы проверить, как работает импорт, и убедиться, что наличия биткоина в мобильном кошельке не видно. Так и было, убедился». 

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

«Осенью 2022 года сменил PC на Mac и поставил на него MetaMask как расширение Chrome, потому что без него тоже неудобно жить. [Но долгое время не] использовал его. Решив использовать этот же сид для операций с токенами BEP-20, пополнил [кошелек] 1 декабря 2022 года небольшой порцией BNB от кого-то и, видимо, стал куда-то коннектиться через Wallet Connect (куда и зачем, не помню)».  

И вот здесь хорошо заметна разница: сама библиотека Wallet Connect не раз подвергалась атакам, в том числе фишинговым, и фактически средства находились уже не офлайн, а онлайн (после импорта сид-фразы). То есть опасность возросла минимум в два раза в сравнении со стандартным хранением на Trezor. 

Идем далее по рассказу потерпевшего: «В процессе коннекта и [тестов] сделал апрув мошеннику на операции с BUSD (зачем, не помню), а поскольку это был Wallet Connect и интерфейс там не очень, [плюс] — торможение, [то] этого не понял или не придал значения. Важно, что апрув сделан мною на [мобильном кошельке] через Wallet Connect. Уточнил [это] у [разработчиков мобильного кошелька], скрин это показывает точно. То есть MetaMask тут ни при чем».

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

«[Позже в мобильном кошельке] не работал Wallet Connect, а мне надо было сделать SBT, и я перешел в MetaMask и [стал] делать операции в сети BSC с него, коннектиться к сайту dapps... Все было ок, а поскольку токен BUSD BEP-20 тут не участвовал, красть скамеру, у которого был доступ, было нечего, апрув ждал своего часа». 

Так оно и есть. Апрув, выданный на скомпрометированный адрес или смарт-контракт, может висеть почти бесконечно. Поэтому первое, что нужно при восстановлении действий с тем или иным аккаунтом (кошельком), — это проверить выданные апрувы. Где и как? Расскажу ниже. 

Идем дальше по рассказу: «На прошлой неделе прошла информация о том, что Binance будет делистить оригинальный BUSD от Paxos до 15 декабря [2023 года], и я под это дело решил избавиться от всех централизованных стейблов. Поменял крупную сумму USDT TRC-20 на биткоин (удачно, он пошел в рост), оставался BUSD BEP-20 на другом кошельке ($2640 — вся сумма). Тут коллеге в [городе] потребовалась [фиатная валюта] на карту [банка], в связи с чем я [помаялся c] MetaMask и оставил вопрос на потом, решив, что, пожалуй, обменяю таким образом часть BUSD BEP-20 на рубли в [обменнике] и переправлю человеку. В общем, BUSD в уме я решил израсходовать на текущие дела, так как избавляться от CEX-стейблов фундаментально надо. Мотив — „BUSD в расход полностью...“» 

То есть, как видим, средства лежали на кошельке какое-то время, и поэтому аккаунтом человек активно не пользовался. А вот чем история закончилась:

«Сегодня ночью перед сном думаю, не поменять ли в [мобильном кошельке] BUSD на биткоин, чтобы не гонять его туда-сюда (лучше б поменял). Отказываюсь, решаю таки перекинуть BUSD BEP-20 полностью ($2640) на сид в MetaMask, чтобы потестить [обменник]... ну и вообще избавиться путем расходования. Выполняю операцию в [мобильном кошельке] из одного сида, убеждаюсь, что на второй сид (который в [мобильном кошельке] и MetaMask) токены пришли в полном объеме, и засыпаю. Ну а утром вижу уведомления на почте от BscScan, что токены списаны на левый адрес сразу после поступления вот этой транзакцией… Написал тебе, и ты выяснил, что апрув годичной давности лежал и ждал своего часа. Дождался». 

История грустная. Итог плачевный. Но давайте попробуем выудить нечто позитивное.

1. Холодный кошелек и горячий на одном MetaMask быть не могут. Также нет смысла куда-то интегрировать аппаратный кошелек через сид (кроме случаев экстренного восстановления). А вот интеграция Trezor и MetaMask вполне уместна.

2. Если долго не пользовались кошельком, обязательно проверьте апрувы. Где? По ссылкам (условно можно выделить работу с аппрувами через сканеры и через специальные сервисы, но здесь будет единый перечень):

  • Ethereum — etherscan.io/tokenapprovalchecker;
  • Polygon — polygonscan.com/tokenapprovalchecker; 
  • BSC — bscscan.com/tokenapprovalchecker; 
  • Optimism — optimistic.etherscan.io/tokenapprovalchecker; 
  • Arbitrum — arbiscan.io/tokenapprovalchecker; 
  • approvals.xyz;
  • cointool.app/approve;
  • approved.zone;
  • revoke.cash.

3. И, конечно, всегда надо рассчитывать не только на себя, но на выстроенную и верифицируемую (важно: кем угодно, а не единожды и вами) систему безопасности. Примеров обратного хоть отбавляй: вот один из последних, а вот еще один. Ломают всех: и если против вас еще не совершались векторные атаки, то это лишь потому, что вы как Неуловимый Джо — пока в списках не значитесь. 

Нулевое правило безопасности для меня потому и звучит так: «Взломать можно любую систему». Вопрос всегда в цене и во времени. Если это слишком долго или дорого, то ломать не будут (кроме деструктивных атак, речь о которых надо вести отдельно). 

Пример №3. Диверсификация работает, но требует привычки

Представим, что вы охотник за баунти, аирдропами и подобными вещами. Что именно вы делаете? Тестируете новые сервисы и системы. Сначала немного, потом больше, затем несколько сразу, и вот вы уже наловчились работать с разными стартапами: от нишевых до отраслевых. 

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

В этот момент на вас непременно начнут нападать:

  1. Через поддельные аккаунты в X. Даже если вы устоите в игре «найди 10 отличий», никто не застрахован от взлома официального аккаунта и фишинговых ссылок от него. Такое, как видимо, происходит даже с SEC или Виталиком Бутериным. 
  2. Через электронную почту. Спамить будут много и хорошо, как через специальные сервисы, так и стандартные рассылочные, а еще через подписки. Поэтому у меня Gmail открыт как адрес для всех, а для важных сервисов есть адреса непубличные — тем более что в Web3 давно нет дефицита необходимых инструментов.
  3. Через Telegram, Discord и прочие мессенджеры. С этим жить вообще тяжело. Если вы активный участник криптокомьюнити, то сами замечали, что спам по группам рассылается молниеносно и параллельно. 

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

Скажем, получили ретродпроп на кошелек, предварительно проделав все описанные выше процедуры (проверили апрувы и тому подобное). Что потом? Надо все перевести на другой кошелек, который или вообще не взаимодействует с онлайном, или делает это крайне редко. Так вы сможете оставлять на горячем кошельке только то, что готовы потерять — и не более. 

Здесь стоит привести еще ряд немаловажных советов:

  1. Надо всегда оставаться в курсе. Читать ForkLog и другие издания — скажем, через агрегатор. Кажется, что совет так себе, но он на самом деле позволяет выявить до двух третей атак. Каким образом? Взломали чей-то сайт, протокол, подменили DNS, а вы уже в курсе и не идете на тот ресурс сегодня. Когда восстановят — пожалуйста, а сегодня — нет. Благо жизнь фишинговых сайтов крайне короткая. 
  2. Хотя бы бегло изучать что-то по безопасности:
  • Xakep.ru — мой личный гость в выходные вот уже лет 15; 
  • AuditDB, Dynamic и другие специализированные ресурсы;
  • закрытые форумы вроде Exploit.in.
  1. Обязательно нужно подтверждать любые аирдропы и прочее через несколько ресурсов. Вспомните о взломе Galxe — хотя бы для предотвращения подобного. Стандартный набор: а) официальный сайт; б) социальные сети; в) СМИ. 

Опять же, все по отдельности это работает плохо, а вот в совокупности дает преимущество. К перечисленному добавлю еще три эмпирических правила (читай — закона):

  1. Если можешь подождать — подожди. Но не слишком долго: не так давно мне удалось пропустить ретродроп, потому что просто перепутал даты.
  2. Если взломали кого-то из ваших знакомых, от открытого комьюнити до друзей, родственников и прочих близких — будьте на чеку.
  3. Если считаете, что все знаете, то вспомните про взлом через обратный апрув в BSC и забудьте об окончательности и универсальности подобных знаний. Навсегда. 

Ваши ключи — ваши деньги

Многие считают: все рассказанное выше и подобные случаи — прямое свидетельство того, что абстракция аккаунта и разного рода отзывные (обратимые) транзакции решат проблему. 

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

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

Пример №4. KYA, или знай с чем и кем работаешь

Случай произошел недавно. Человек торговал через CEX и решил вывести средства. Скопировал адрес и вставил в строку вывода. Нажал подтверждение и ушел пить чай. 

Вернувшись, он увидел, что средства ушли не туда. Сработала стандартная система подстановки адреса. И модификаций у нее множество:

  • «отравленные» транзакции и адреса, с которыми теперь приходится бороться и кошелькам, и сканерам; 
  • стандартные кейлогеры, трояны и прочее вредоносное ПО, которого пруд пруди в даркенте и которым могут пользоваться, что самое страшное, скрипт-кидди; 
  • подмена кошелька: мобильного, десктопного или в виде расширения — неважно. Скачали не тот бинарник — и все. И даже загрузка с офсайта не поможет — достаточно вспомнить случай Atomic Wallet. 

Но и с этим можно бороться. Вот простые механики:

  • обновляйтесь после просмотра новостей, а не до;
  • если обновление не критическое, подождите несколько дней и понаблюдайте за лентой: от уязвимостей нулевого дня это не спасет, но от многих более мелких бед — вполне; 
  • постарайтесь изучить документацию того ПО, которым пользуетесь: почитайте гит, познакомьтесь с разработчиками (в мире OS это не так сложно), полистайте форумы, а главное — попробуйте стать хотя бы продвинутым пользователям этого софта; 
  • если есть возможность, а она почти всегда есть, сверять хеш-суммы, SSL-сертификаты, PGN и так далее.

Нельзя забывать, что в технологиях самое слабое звено — человек. Усталость, работа без перерывов и без жесткого финансового графика ведут в итоге к потерям, а не дополнительному заработку. Помните об этом. 

Итог. Идеальная схема брони против фишинга

Ее не существует. Почему? Потому что идеальная в данном случае значит индивидуальная. Конечно, какие-то моменты игнорировать не стоит, но в остальном фантазия — лучший помощник. 

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

  1. Ограничьте себя во времени. С 9:00 до 21:00 в будние дни — вполне хватает, чтобы решать 99% задач. Но можете индивидуализировать и здесь: например, работать с активами больше определенной суммы только по выходным. 
  2. Кастомизируйте все, что можно: от почты и мессенджеров до кошельков и личных кабинетов DEX. Чем больше деталей, о которых знаете только вы, тем сложнее будет вас подловить. 
  3. Не гнушайтесь разного рода уведомлениями и дополнительными средствами защиты. Разграничивайте холодные и горячие кошельки, ставьте оповещения на сканерах и специальных сервисах (HAL.xyz, Cielo). Словом, учитесь создавать IFTTT-режим под себя. 
  4. Диверсифицируйте активы хотя бы по трем категориям: базовые инвестиции, рабочие инструменты, стабилизационный фонд. И помните, что диверсификации, как и децентрализации, много не бывает. 
  5. Будьте в курсе. Изучайте новости до того, как перевести крупную сумму денег со скомпрометированной сервиса, а не после. Помните, что уже сегодня есть видео- и голосовые дипфейк-сообщения и ищите свои способы верификации на ОТС/P2P-обменах. 
  6. Не забывайте, что мы работаем в недоверенной среде. Спам-фильтры Gmail не идеальны, кошельки на CEX — не кошельки, ваши ERC-20 с апрувом на любом протоколе — не ваши. И если подверглись атаке, помогите другим: сообщите о фишинге в Google, Yandex и специализированные ресурсы вроде AMLBot и Chainabuse.
  7. Не проходите мимо новых функций кошельков. Меня, к слову, не так давно спасла вот эта наработка от MetaMask. 
  8. Постарайтесь усложнять уровень работы с сервисами. Скажем, фишинговых токенов в Ethereum полно, но в 9 из 10 случаев сканер отображает их довольно оперативно и точно, а продвинутые инструменты — тем более.  
  9. И главное правило безопасности: взломать можно любую систему. Исходите из этого тезиса, тогда станут понятны и объяснимы все вышеперечисленные пункты.