Как ломали наше ICO

DDOS на preICO

DDOS — это когда на сервер производится огромное количество запросов с разных IP адресов одномоментно и он захлебывается, не в силах справиться с нагрузкой. Нас атаковали дважды во время preICO, каждая атака длилась примерно 30–40 минут. Затем у атакующих видимо заканчивались деньги и атака прекращалась. Мы, честно признаться, сами виноваты что это допустили: мы не думали, что нас, таких маленьких еще тогда и незаметных, не проводящих большие пиар-акции, кто-то вообще заметит и отнеслись к этому вопросу достаточно беспечно. А зря. Впрочем, атакующие ничего не добились, кроме того что некоторое время сайт работал не очень хорошо и иногда на него зайти не получалось. Атака производилась фейсбук-аккаунтами, как это ни странно. Мы получали десятки тысяч запросов с Фейсбука во время DDOS атаки, но собрать goal, а затем cap в 5000 ETH нам это не помешало.

Зачем они это делали стало понятно позднее, когда я получил письмо следующего содержания: «Здравствуйте, мы видим что вас ДДОСят, давайте мы вас защитим!». Отличная попытка, но нет.

Что делать: подключить промежуточный CDN-сервис. Мы подключили Cloudflare и больше DDOS атак не замечали. Лучше сделать это ДО начала ICO кампаний.

Фишинг атака на наше ICO

Это уже более серьезная атака, и мошенникам удалось обмануть десяток пользователей, собрав где-то $50 тысяч. Мы знали, что такие атаки будут происходить и зарегистрировали схожие с нашим домены, но не все. Это моя ошибка: я купил пакет доменов KICKICO.* в Godaddy, но не все. Я не обратил внимание, что туда не входил домен .co, чем и воспользовались мошенники.

Как производили атаку: мошенники зарегистрировали одноименный домен в зоне .со и полностью клонировали наш сайт, включая все кампании. Понять, что это фишинг, можно было только пройдя по какой-нибудь ссылке, но даже они вели через прокси-сервис, чтобы мы не вычислили IP злоумышленников, если они случайно перейдут. Более того, ими же был клонирован репозиторий платформы Starbase в гитхабе, и назван kick-ico. Как я понимаю, план был следующий: организовать DDOS-атаку на наш сайт и, когда он перестанет работать, кидать во все паблики и чаты ссылку на фишинг, заявляя что там работает зеркало и все хорошо, можно платить. Однако DDOS-атака не случилась. Кроме того, я быстро написал письма регистраторам в Клаудфлар и Гитхаб с отчетом об атаке и просьбой заблокировать репозитории, разделегировать домен, отключить хостинг. Гитхаб заблокировал злоумышленников практически сразу, Клаудфлар сделал это в течение двух часов. Доменные регистраторы не ответили, но этого оказалось достаточно, чтобы нарушить планы мошенников и уберечь наше сообщество от потери денег.

Что делать: регистрировать ВСЕ схожие домены. Мониторить Гитхаб и искать в гугле схожие названия, которые могут быть фишингом. Мониторить Гитхаб и Битбакет на предмет фишинга и запретить любые ссылки или публикацию любых адресов в пабликах и чатах. В Твиттере и во всех своих официальных СМИ указать единственный верный адрес сайта и смарт-контракта краудсейла. В чаты посадить саппорт, которы 24/7 будет мониторить сообщения и удалять фишинговые посты, ведущие на поддельные ресурсы или поддельные адреса. Предупреждать сообщество об атаке, но при этом ни в коем случае не публиковать ссылки на поддельные ресурсы самим. Я это делал картинкой с красным текстом SCAM!, в результате чего никто туда не перешел бы по ошибке.

Уязвимости в Slack

Как и подобает каждому большому ICO, мы создали канал в Слаке. Считается, что если нет Слака у компании, значит с ней что-то не то. Могу сказать прямо обратное: если у компании есть Слак, то как раз в этом случае с ней что-то не то. Слак полон уязвимостей, которыми пользуются злоумышленники: например, ничего не стоит создать аккаунт, точь-в-точь как у модератора и начать писать персональные сообщения с поддельным адресом кошелька. Более того, любой желающий может менять тему в чате (мы не нашли где это отключается, видимо, нигде) и поставить туда поддельный адрес. Самое плохое это то, что заблокировать такие мошеннические аккаунты дольше, чем их создать заново. Премодерации или фильтров на сообщения, содержащие адреса — нет. Наверняка можно потратить месяц и написать слак-бота, который бы их автоматически удалял, но обилие уязвимостей в Слаке наверняка позволит найти какой-то иной способ. Личные же сообщения вообще не проконтролировать. В итоге, мы приняли решение удалить Слак канал вообще и перевели сообщество оттуда в Телеграмм.

Атака на бэкенд и смарт-контракт

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

Тут мы понесли потери: до атаки скорость сборов составляла $18–19 тысяч в минуту. После полуторачасового перерыва, когда мы возобновили сборы, мы собирали уже «всего» $4–5 тысяч в минуту. Это не помешало нам достичь цели в 50 тысяч эфира, но замедлило процесс и, что самое неприятное, нам придется переначислять всем нашим пользователям новый токен. В результате те, кто купил токены до атаки, получат новую версию в течение недели, но до этого момента не будут видеть их на своих счетах. Это, конечно, неприятно. Однако, деньги остались в безопасности и ничего, кроме небольшого репутационного урона, злоумышленники нам не нанесли.

Что делать? Очень, очень тщательно проверять смарт-контракт и максимально защищать сервера. Закрывать все порты, создавать белые списки IP, по которым к ним можно попадать. Заказывать аудиты смарт-контрактов и тестировать, тестировать, тестировать. Заказывать тестирование на проникновения, нанимать хакеров чтобы пытались сломать все: от сервера до смарт-контрактов. Во время аудитов мы закрыли более двадцати уязвимостей, в том числе серьезных, но все же одну упустили. За это приносим наши искренние извинения.

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

Stay, как говорится, tuned!