15 июня 2022

Атаки на крипто-активы. Часть I

Криптовалюта и блокчейн — это замечательно. Это будущее. Но в каждом светлом начинании есть и тёмные силы. О них и начнём разговор. Но зачем? 

Во-первых, чтобы научиться этим атакам противостоять со стороны пользователя. Во-вторых, чтобы лучше разбираться в Web 3.0 системах: само знание — ваш лучший щит. В-третьих, чтобы выстроить собственную систему риск- & time-менеджмента, которая поможет вам в управлении крипто-активами

Содержание всех частей

-Часть I. Общие атаки и предпосылки

-Часть II. Атаки на DeFi/DEXs/мосты

-Часть III. Атаки на NFTs

-Часть IV. Будущее атак и DAOs

-Часть V. Нетривиальные атаки: сборная солянка

Вводные

Во-первых, отмечу, что атаки бывают разные:

1.Сугубо технические: пример;

  1. Социальные:
  2. Такие как фишинг (социальные + технические);
  3. Социальная инженерия;

2.Организационные;

3.Иные подобные;

4.Экономические;

5.Прочие. 

Меня в первую очередь интересуют технические атаки, но рассматривать придётся все, поскольку “чистых” атак и их векторов фактически нет и/или они используются крайне редко. 

Ниже представлены разные типы (виды) атак, а в последней части предпринята попытка их полной (хотя и открытой) классификации. 

Глава I. Общее об атаках

Подглава №01. Простейшие

01.01. DDoS

До сих пор не все понимают, что BTC — монета, которая имеет внутри сети несколько явно выраженных функций:

1.Оплата труда DAO Bitcoin (майнеров);

2.Внутренняя ценность сети Биткоин.

Поэтому, когда вам говорят, что в какой-то сети возможны “быстрые и дешёвые” транзакции — не верьте: быстрые и дешёвые транзакции всегда кто-то оплачивает. В Web 2.0 — пользователь за счёт своих персональных данных, связок с разным ритейлом и т.д. В Web 3.0 — валидаторы, энтузиасты и т.д. 

В любом случае DDoS — фактически нулевой шаг атак, который потом помогает организовать:

  1. Атаку 51 (для соблюдения условия двойной траты);
  2. Разные виды атаки Сивиллы;
  3. Любые атаки на исключения (и в мире шардинга это будет заметно: и пусть вас не смущает п. 2: данный аспект сильно шире, поэтому пока просто выделю отдельно его);
  4. Прочие.

01.02. Фишинг

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

При этом фишинговым ресурсом может быть как app (приложение), так и dApp (децентрализованное приложение). Примеры:

  1. Сайт; 
  2. Мобильное приложение;
  3. Письмо (email);
  4. Прочее.

Среди “прочего” отмечу поддельные расширения для браузеров, которые умеют подделывать данные на лету. 

В качестве общего примера приведу “случай, когда мошенники создали сайт, на котором предлагали до 10 NFT Bull & Ape. При этом когда пользователь пытался получить 10 NFTs, у него запрашивали сид-фразу”. 

И потому противостоять таким атакам можно по нескольким векторам:

1.Технически:

1)Установить приложения/аддоны для браузеров для проверки посещаемых сайтов: безусловно, здесь также возможна атака на самое приложение, поэтому полного доверия ему нет; 

2) Использовать максимально “чистый” браузер со строго ограниченным числом разрешённых/доступных аддонов;

3)Устанавливать приложения только через Google.Store/AppStore, если только вы не продвинутый пользователь, который понимает, зачем нужна хеш-сумма в разном ПО и как её проверить, а равно — как сделать установку от доверенных разработчиков же и что такое загрузка через командную строку и гит;

4)Использовать проверенный антивирус (ещё расскажу, что антивирусные компании сами часто грешат в крипто-мире) и, что важнее, файрволл с понятными вам правилами;

5)Конечно же, следовать правилам общей безопасности: обновлять вовремя ОС и ПО и т.п. Об этом читайте подробно в части первой и второй материала, посвящённого защите, а сегодня, всё же, говорим о нападении.

2.Организационно:

1)Очень важно научиться не заходить на ресурсы без https:// и уметь читать сертификаты, потому как фишинговые ресурсы всё чаще устанавливают разного рода бесплатные сертификаты, чтобы больше сбить с толку;

2)Выучить наизусть 10-15 ресурсов, на которые заходите, чтобы избежать явной подмены адресов; 

3)Стараться не заходить через поиск (особенно — Google/Yandex, где есть реклама) на популярные сайты, поскольку один из векторов фишинга — покупка рекламы для зловредного ресурса и вывод его в искусственный ТОП;

4)Необходимо тренироваться проверять все данные при вводе/выводе средств. Для этого можно:

  1. Добавить в Метамаск “железный” кошелёк Trezor/Ledger/etc.;
  2. Проводить транзакции, сверяясь с табло Trezor/Ledger;
  3. Научиться сверять: первые 3-4, последние 3-4 знака в каждом аккаунте/операции, а также 2-4 запасные цифры в центре, потому как одна из атак (см. ниже) — создание похожих кошельков и вставка их через связки кейлоггер+троян и т.п.;
  4. Обязательно делать скриншот до операции и во время, чтобы зафиксировать любые аномалии;

3.Экономически:

  1. Не хранить яйца в одной корзине: распределять всё между “холодным” и “тёплым” хранением;
  2. Не проводить транзакции в заданный период (скажем, с 21:00 до 07:30; в праздники и т.п.);
  3. Не участвовать во всём подряд на кошельках, где есть хоть что-то. 

Последний пункт поясню. Отдельно. 

Часто фишинг строится на жадности. Простейший пример — псевдо-форки. Так, скажем, и у Эфира, и у Биткоина были форки, которые создавались для одной цели — чтобы вы отдали свою seed-фразу. Ведь обычно как бывает:

  1. Чтобы открыть кошелёк в новой сети — нужен какой-то клиент: скажем, кошелёк;
  2. Для нового форка ничего найти не можете и идёте на сайт “производителя”, где скачиваете “официальный” валет; 
  3. Затем — вводите там seed-фразу, вам даже могут сделать “начисление” какого-нибудь Ethereum Anti Classic, а потом — все деньги просто уйдут в закат. 

Фишинг имеет массу форм и имплементаций, но в целом он сводится к трём примитивам:

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

Вот примеры сложных атак, где фишинг сыграл важную роль:

  1. Фейковые airdrops;
  2. Взлом CEXs.

Кстати, последние (централизованные биржи) из упомянутых могут многому научить в противостоянии фишингу:

  1. Обращайте внимание на https:// и проверяйте сертификат;
  2. Не торопитесь: никогда;
  3. Используйте виртуальную клавиатуру везде, где возможно;
  4. Не говорите вслух пароли;
  5. Научитесь кастомизировать страницы сайтов и прочих (d)Apps: от email до личных кабинетов;
  6. Старайтесь усложнить процесс первичной авторизации (сложный пароль >14 символов; Oauth 2.0; ограничение по IP; код для транзакций и т.п.).

При этом стоит помнить, что к фишингу относится и реклама фейковых обменников, бирж, IDO и прочего всё ещё проскальзывает в Google, хотя нормальные при этом блокируются при рекламе. Совпадение ли тот факт, что “одним можно, а другим нельзя”? Не думаю. Помните и об этом тоже. 

Что же касается fake airdrop: пожалуй, эта атака сейчас стала даже популярней, чем в хайп 2016-2018 гг. Вот пример: говорящее название Fake_Phishing4953? как по мне — да. Не спешите выводить средства за счёт ввода приватного ключа (и тем более — seed-фразы). и всегда лучше подождите: хочется скинуть быстро? возможно, у вас просто нет сил заниматься этим рынком. это же касается фейковых форков: их проще отследить по массовости, но тоже попадаются многие до сих пор.

Наконец, примитивы в письмах: тот же фишинг — вид сбоку. точнее так: одно дело, если переходите на подставной сайт — там всё понятно. другое дело — продвинутый спуфинг, но третье — это открытие .pdf- и даже .doc(x)-файлов: зачем это делать? начиная от уродливых макросов и заканчивая продвинутым вшитием в тело документа — механик нападения через доки — множество. вам оно надо? сделайте белый список email-адресов (да, даже если их будет 1000 — заодно проверите: на кой чёрт вам столько?) и не принимайте файлы от неизвестных.

Подглава №02. Атаки на L1

Обычно начинаю с L0, но, поскольку атаки на атомарные свопы и подобные структуры схожи с атаками на DeFi, но куда сложнее, то вынесу этот аспект в отдельную главу. Плюс — для понимания L0-атак важно разобраться в архитектуре L1. 

PoW-семейство

Тут будем рассматривать атаку 51 и связанные с ней; эгоистичный майнинг; атаки на полные ноды; прочие.

PoS-семейство

Здесь см. трилогию: атак довольно много и на примерах Polygon, Avalanche, Near, Solana (особенно), BSC разберём и их. 

А пока — буду закругляться: вопросов ещё очень много, но

До!