Атака изнутри: хакеры против биткоин
Хочу предложить свежую и реальную айтишную историю на тему биткоин-стартапа и лютого хакерства с ним связанного, которая по моему разумению содержит в себе некое духополезное зерно. История несколько драматична и киношна, потому что содержит каскад из тройного предательства в рамках одного проекта, что в западных СМИ подается как невероятная подлость.
Я не со всем согласен с такой оценкой произошедшего. Свои соображения приведу в конце истории, а пока замечу, что если обобщать, то всё произошедшее словно рентген высвечивает все доступные в обществе роли и сценарии. В этом смысле история является архетипичной и не видится мне столь однозначной, как она была подана в СМИ. По моему разумению, это логическое продолжение к прошлой заметке Как отпрыски элиты развалят ИТ, и показывает на практике, как взаимодействуют в рамках одной ИТ-структуры люди разного психотипа. Кроме того кейс показывает чем опасно пришествие дилетантов от бизнеса в HiTech-индустрию.
Сама история подается от имени Эрика Вурхиса, генерального директора ShapeShift.io, который с надрывом в голосе и рассказывает о произошедшем с ним неприятном приключении.
Под катом многобукаф, в которых хорошие айтишники (не совсем удачно) противостоят против плохих. Забегая вперед: хорошие парни-стартаперы всё-таки побеждают, но привкус от победы остаётся какой-то кислый.
Биткойн, как и любая созданная человеком система, объединяет в себе как самые высокие и даже утопические идеалы, так и самый что ни на есть мусор общества © Эрик Вурхис
Введение
[Примечание: некоторые имена и деликатные подробности были изменены]
Это реальная история о том, как ShapeShift, ведущая платформа по торговле blockchain-активами, была предана. И речь не об одном, не двух, а сразу трех предательствах менее чем за месяц.
В общей сложности мошенники (как в самой системе, так и вне нее) нанесли нам ущерб примерно в двести тысяч долларов, не говоря уже о том, что мы вынуждены были потратить значительные ресурсы на расследование. Однако средства клиентов не пострадали, поскольку ShapeShift, наученная опытом предшествующих инцидентов, сама адаптировалась и перестроилась, предоставив клиентам максимум безопасности для их активов и торговли.
Биткойн — это открытость во всём, поэтому мы хотели бы поделиться этой историей с сообществом. Надеемся, что сможем вас развлечь и даже научить чему-то, но, так или иначе — отвлечь ненадолго от ваших дел.
Bitcoin Weekly 2016 April 20: The epic story of how ShapeShift was hacked, but the fox recovered https://t.co/Uvs2Cz7G6R
— Marcus Tan Ho Meng (@Marcus_homengt) April 21, 2016
Предыстория
С момента своего создания весной 2014 года, ShapeShift непрерывно развивалась. То, что начиналось как быстрый экспериментальный способ переключения между биткойном и лайткойном, переросло в передовую платформу для легкого обмена всех основных блокчейн-активов, превращая один актив в другой без какого-либо пользовательского взаимодействия. У нас нет учетных записей пользователей. Нет и процесса регистрации. Это как Google Translate, но для криптовалюты.
И мы всегда играли в догонялки. Создать широкую индустрию, повязанную не только на Биткойн, а на весь спектр криптовалют, весьма и весьма непросто.
Осенью прошлого года мы поняли, что «минимального жизнеспособного продукта» серверной архитектуры, установленного изначально, для ShapeShift было явно недостаточно. Нам был нужен профессионал, который присоединился бы к нашей команде и создал такую безопасную архитектуру, с которой наша технология могла бы расти и развиваться дальше.
Мы нашли и наняли такого человека, и похвалили сами себя за это решение. На бумаге он выглядел великолепным и ответственным профессионалом, и полностью подходил под ту миссию, для которой мы его избрали. Он даже работал с биткойном уже в 2011–2012 годах и настроил майнер прямо у себя в комнате. Потрясающе. Для простоты будем называть его Боб… это подходит, ведь его настоящее имя начинается с буквы Б.
В течение следующих месяцев Боб создал новую инфраструктуру ShapeShift и успешно управлял ей. Он сделал все как надо, ничего особенного, но мы были довольны, что у нас появился достаточно профессиональный контроль за нашей системой, дающий возможность нашим инженерам опираться на созданную архитектуру.
В первом квартале этого года рынок обнаружил то, что мы итак уже знали — наша система стала одним из многих блокчейн активов, нуждающихся в большой ликвидности по отношению к другим. Объемы обмена на ShapeShift выросли. В частности, сильно вырос Ethereum. Наша инфраструктура не была готова к темпам роста. Это было как езда на велосипеде, на котором внезапно появляются, а затем врубаются на полную мощность реактивные двигатели.
К сожалению, Боб делал не так-то и много полезного. Он бесцельно занимался непонятно чем, в то время как наша команда работала часами, чтобы наша лодка не развалилась от внезапно свалившегося груза.
Но Боб не тратил время зря.
Он готовился обокрасть нас.
Предательство века
Утром 14-го марта, в разгар одной из наших самых тяжелых недель за все время, у меня раздался звонок от нашего руководителя операций, Грега. «Эрик, в нашем горячем кошельке не хватает 315 биткойнов». Почему у нас так много лежало в горячем кошельке, спросите вы? Объемы обмена настолько подскочили, что наш предыдущий кошелек мог опустеть за одно мгновение, поэтому требовалось непрерывная ручная балансировка. Существуют ли способы автоматизировать и уменьшить этот риск? Естественно да, но в ряду приоритетных задач они были весьма далеко.
Так что 315 биткойнов просто пропали.
Тот, кто испытал нечто подобное на себе, может понять нас. Наступает такое состояние, которое проникает в самое твоё естество. И речь тут не столько о потере как таковой, а о том, что так любовно и кропотливо созданная система, которая должна была быть гарантом нашей безопасности, дала сбой. И только потом ты думаешь о деньгах. 315 биткойнов это примерно $130000. Это стоимость обучения в колледже, или части дома, или продуктов питания на десять лет, или много месяцев заработной платы. Весьма крупная получилась сумма.
Я бросился в кабинет, надеясь, что это всего лишь какая-то ошибка. Утешало только то, что мы потеряли только наши собственные деньги. У клиентов нет ни счетов, ни аккаунтов, ни личных данных — поэтому они защищены от взлома. Это было продумано с самого начала ShapeShift и стало одним из наших принципов. Но даже если никто посторонний не пострадал, ситуация не становилась приятнее.
Я, Грег, и наши два инженера перевернули вверх дном все серверы, отчаянно пытаясь выяснить, что случилось. 315 биткойнов ушли на неизвестный адрес, и остались там. В общем-то, они до сих пор там:
blockchain.info/address/1LchKFYxkugq3EPMoJJp5cvUyTyPMu1qBR
Несмотря на наше указание всем сотрудникам срочно прийти в офис, Боб, наш главный ИТ-парень, единолично отвечающий за безопасность и инфраструктуру, пришел лишь в 11:30.
Мы пригласили Боба присоединиться к нашей дискуссии. Рассказали ему про взлом. Спросили, не входил ли он в систему этим утром. Он ответил отрицательно. Он, кажется, не был ни удивлен, ни возмущен этой кражей, хотя это именно его система безопасности нас подвела. Он сразу же начал сыпать неубедительными предположениями: «Наверно взломали наш обменный счет, это бывает». Хм, но ведь наши валютные счета в порядке, Боб.
«Ну, посмотрите на IP-адрес, это произошло где-то в Западной Африке.» Хм, IP-адреса указывают только на первый узел, который заметил транзакцию, и, как правило, это бессмысленно в контексте биткойна, Боб (это знает каждый биткойнер).
Очень быстро мы поняли, что он нам бесполезен. Наш великий айтишник не смог дать ни единого стоящего комментария по поводу взлома его собственной инфраструктуры.
В ходе разбирательства мы обратили внимание на пару ключей SSH (принадлежащих Бобу), по которым производился вход на взломанный сервер за час до кражи, а затем ключи вышли из системы через две минуты после нее. Допустим, ключи Боба могли бы оказаться в системе, хотя время было весьма странным (6 утра). Мы также обнаружили что кражу совершил кто-то в офисе или кто-то с доступом к нашему VPN.
Мы попросили всех, у кого есть доступ к серверу, предоставить свои ключи SSH, чтобы мы могли начать сравнивать их с теми, что заходили на сервер. Все это сделали, но возникла другая странная вещь: ключ Боба в журналах просто не появлялся, будто он совершенно новый. Странно, что ключ администратора сервера никогда не был замечен на сервере.
Вскоре после этого Боб решил, что пришло время обеденного перерыва, и он пропал на целый час, и это в такой-то день! Нас это не сильно волновало, так как он не был полезным, но начали закрадываться подозрения. Он сказал нам, что он оставит свой ноутбук открытым, чтобы загрузить некоторые журналы, и убедился, что мы видим, что ноутбук остается открытым. Это было весьма странно.
Через час он вернулся и сел с другими инженерами, все еще выясняющими, что произошло. Я нахожусь в другой комнате, говоря по телефону. Когда я поговорил, зашел к ребятам проверить, как дела. Боб внезапно получил звонок «от своей матери, которой надо идти в больницу». Он собрал свои вещи, прихватил свою собаку, и был таков. Его уход принес нам одновременно облегчение и страх. Как администратор смог просто оставить нас дважды во время нашего расследования, которое он, вообще-то, должен был возглавить?
Он сказал: «Я вернусь в течение часа». Это было примерно в 3 часа дня, 14 марта.
Больше мы никогда его не видели.
Вскоре после его ухода, один из наших инженеров отвел меня и Грега в сторону, и сказал: «Пока вы отвечали на звонок, мы увидели в журналах, что Боб удалил два ключа SSH, пока сидел там с нами, затем он несколько раз проверил их наличие и ушел. Эти два ключа — как раз те, которые мы видели в журнале утром, зашедшие на сервер прямо перед взломом».
Он просто удалил свои ключи с сервера? Вот черт. Других доказательств тут и не нужно.
Мы сразу предположили, что именно Боб похитил наши деньги. Он ушел, а мы стали закрывать все дырки в безопасности и в спешке поменяли все (ну ладно, почти все) ключи.
Мы работали еще несколько часов, а от Боба так не услышали ни слова. Никаких звонков, никаких сообщений, ничего. К концу дня, спустя 3–4 часа с момента его отъезда, чтобы «отвезти свою мать в больницу», мы решили позвать его, не высказывая пока наши подозрения.
— Привет Боб, а ты где?
— Привет, да я тут домой решил пойти.
— Так ты дома?
— Ну да, работаю тут кое над чем.
Что за черт?
Этот звонок ничего нам не давал, но мы записали его. Мы также записали и следующий звонок 30 минут спустя, в котором мы представили ему некоторые доказательства.
— Боб, ты удалил свои ключи SSH, а нам дал новый ключ, который никогда нигде не появлялся.
— Да, я удалил их, потому что думал, что это не столь важно.
Именно так он и сказал. Наш серверный администратор, в разгар расследования кражи в размере $ 130 000, удаляет два своих (и только этих!) ключа, не сказав никому ни слова, а затем заявляет, что он сделал это, потому что они не были важны!
И это чистое совпадение, что именно эти два ключа зашли на сервер Bitcoin в то утро, и вышли из системы через две минуты после кражи. Ничего важного! Он не дал никаких объяснений своего поведения или действий в тот же день, но увиливание от ответов явно указывало на вину.
— Боб, мы обвиняем тебя, потому что твои ключи были на сервере, и ты удалил их прямо во время активного расследования.
Так продолжалось в течение 45 минут. Он продолжал нести чушь, все было записано.
Когда все встало на свои места, появилось некоторе чувство облегчения, потому что мы знали точно, что произошло, и кто несет за это ответственность. Мы провели остаток вечера, документируя всё это, и готовясь завести административное и уголовное дела против Боба. Я дал ему последний шанс. В сообщении для всех сотрудников, чтобы не дать ему впутать себя, пишу:
Это твой шанс уйти и извлечь из этого урок, и пусть это будет забыто. Мы не будем заводить дело, если 315 биткойнов будут найдены на этом адресе в 10 утра. На этом мы закроем тему и разойдемся полюбовно. Отправь 315 BTC сюда: 35JBgzjyCUPswjRP9iqrUTkkX76QwrKkB9. Эрик.
Я получил ответное сообщение от Боба в 4:36 утра, «Я не удалял никакие ключи, и я регулярно захожу на серверы, чтобы проверить их».
Неплохо, за исключением того, что у нас уже есть его запись, где говорится, что он удалил ключи. Его неумелость во лжи соизмерима только с его некомпетентностью в администрировании сервера.
Он продолжал, с гневом, присущим подростку:
ОБВИНЯТЬ МЕНЯ — ЭТО ЧИСТЫЙ РАСИЗМ! ВЫ ПРОСТО ИЩЕТЕ СПОСОБ ОПРАВДАТЬ СВОЙ РАСИЗМ, А У МЕНЯ НЕТ ЗА ПЛЕЧАМИ НИЧЕГО ПРЕСТУПНОГО, В ОТЛИЧИЕ ОТ ВАС
На следующее утро наш главный юрист написал официальное письмо (по электронной и обычной почте) Бобу, с изложением некоторых из доказательств того, что мы знаем, требуя возврат похищенного имущества. Он также уведомил Боба, что он уволен (я думаю, это было справедливо, принимая во внимание обстоятельства). Боб обратился к адвокату, который не изучил ни одно из доказательств, заявив: «Ваши клиенты — расисты, поэтому убедитесь, что вы знаете, с кем имеете дело».
Видимо, он даже в реальной жизни не расстается с обликом интернет-тролля. Он даже не понимает серьезность ситуации? Все это выглядело крайне нелепо.
В течение следующих дней мы подали официальный иск. Адресом, который Боб дал нам, был абонентский ящик, у нас было его законное имя, его банковские данные. Мы наняли частного детектива. Мы нашли его квартиру в течение пары дней. Попасть к нему нам не удалось, хотя следователь услышал лай собаки за дверью. Один из его автомобилей был также найден (у него было их два).
У меня есть инвесторы, которым я обязан их усердием, поэтому мы активно пустили ход уголовному делу, а такая кража тянула на 4–12 лет лишения свободы. Честно говоря, мне было всё равно, будет ли он наказан. Мне хотелось, чтобы он понял свою ошибку и поменял свою жизнь, чтобы стать лучшим человеком. Но воз и ныне там.
Мы узнали еще несколько вещей. Боб попадал в полицию во Флориде. Кстати, в записях он фигурирует как белый.
Когда были заведены дела, Боб сбежал во Флориду (оставив свою собаку, за которой временно ухаживал его сосед, который кстати не слышал от него ничего в течение нескольких недель), мы думали дело было закрыто. Мы поймали бы его где-нибудь, рано или поздно. И мы надеялись получить наши деньга назад.
Ровион
Мы начали строить новую архитектуру сервера после Боба, предполагая, что его работа в нашей системе была в значительной степени скомпрометирована. Мы создали новую облачную архитектуру с компанией, которую для повествования назовем CloudCo.
Это была уже неделя 4-ого апреля, и мы были почти готовы идти жить с этой новой облачной архитектурой. И тогда опять случилось непоправимое.
7-ого апреля, в четверг, около полудня, мы замечаем, что из кошелька в уже новой архитектуре пропала куча эфириума. Новая инфраструктура. Инфраструктура, которая не была даже пущена в работу с людьми. Сначала мы подумали, что это наш код сделал что-то странное, возможно, средства на развитие адреса сервера или что-то в этом духе. Потом мы заметили пропажу большого количества биткойнов, а затем и лайткоинов.
- Bitcoin-адрес вора: 14Kt9i5MdQCKvjX6HS2hEevVgbPhK13SKD
- Ethereum-адрес вора: 0xC26B321d50910f2f990EF92A8Effd8EC38aDE8f5
- Litecoin-адрес вора: LL9jqgXVqxUbWbWVaJocBcF9Vm8uS3NaTd
У нас возникло что-то вроде дежавю. Снова возникло чувство страха и непонимание того, что за чертовщина только что произошла…
Ключи для не публичных серверов, тем не менее, были скомпроментированы. Мы выключили систему, в том числе наш сайт, на время расследования. Мы потеряли меньше, чем за месяц до этого, так как кошельки были почти пусты, но и это было неприятно. Мы не могли в это поверить. Как могли новые ключи, сгенерированные новой архитектурой, попасть под угрозу?
После нескольких часов бесплодных расследований мы решили, что одно из наиболее вероятных объяснений заключается в том, что нарушение произошло со стороны облачной компании. Такое случалось и раньше в Bitcoinland. Мы думали, что CloudCo можно доверять, но кто знает? Облака очень удобны и масштабируемы, и на каком-то уровне вы доверяете компании с такой инфраструктурой. Мы решили, что стоит придержать сайт выключенным в течение по крайней мере 24 часов, и быть готовыми к созданию всего заново и на новых серверах.
То, что было почти так же плохо, как потерянные неведомо как деньги. Записей в журналах не было, и пользы от них тоже. На самом деле, они были уничтожены.
Несмотря на это, мы отслеживали движение взломанных средств на blockchains. Мы выследили валютный счет. Мы получили информацию о профиле вкладчика.
Имя: Ровион Вавилов
Email: rovion.vavilov@riseup.net
Адрес: ул. Чаянова 15, Москва
Дата рождения: 2 февраля 1980 года
Телефон: +7 9625148445
Может это была и ложная информация, но я написал ему той же ночью.
От: Erik Voorhees erik@ShapeShift.io
Кому: rovion.vavilov@riseup.net
Тема: взлом ShapeShift ...
Неплохо Сработано! Как ты взломал нас? Эрик
Совет от профи: анонимы любят быть признанными за их мастерство, независимо от того, насколько аморально они поступают. Говорите с ними спокойно, как взрослые. Они могут раскрыть информацию, или помочь вам в некотором роде. Это странно, но бывает. В любом случае, я не ожидал никакого ответа от него.
Остальную часть этой ночи и весь следующий день (8ого в пятницу), команда лихорадочно работала, чтобы в очередной раз перенести все на новую инфраструктуру, в совершенно чистой среде на совершенно отдельном хосте.
Теперь многим кажется, что ShapeShift, — это простой веб-сервис. Нам пришлось много работать, чтобы произвести это впечатление. Но на самом деле платформа весьма сложна. Более 1 400 прямых торговых пар активов, интеграция с полудюжиной API-интерфейсов обмена, запрашивающих информацию о ценах в режиме реального времени для всех предлагаемых криптовалют, быстрый API, до нескольких десятков партнеров, мониторинг и расчет постоянно меняющихся обменных курсов и глубина книги заказов для некоторых из самых волатильных рынков на Земле…
И в мире Биткойна нет никаких путеводных книг.
Будучи не-инженером, я могу лишь изредка осознать толику величия того, что мы строим. Для нашей команды хочу заявить — парни, вы создали удивительный сервис и должны очень гордиться этим.
А теперь начинается серьезная история.
Примерно в середине дня в пятницу хакер ответил на мою электронную почту (я спросил его, как он взломал нас)
От: rovion.vavilov@fastmail.com (ага, уже новый домен)
Кому: Эрик Ворхес erik@ShapeShift.io
Тема: взлом ShapeShift ...
Одним словом — БОБ
Всего три слова в письме, а мы были ошеломлены. На мгновение мы подумали: «Неужели Боб — хакер?». Однако мы нашли более вероятный ответ: Боб продал или отдал нашу информацию хакеру, который затем использовал её.
Боб предал нас. Он предал свое привилегированное положение, уничтожив тех, кто доверял ему. Он украл, солгал, убежал, а затем, когда прошло какое-то время, чтобы подумать о своих дальнейших действиях, решил предать нас снова за еще несколько серебряников в это пустой карман. Хакеры взламывают, но надо быть редкостным ублюдком, чтобы подняться до важной должности, работая бок о бок с командой, получать зарплату и уверенность в себе от этой команды, а затем продать их всех за гроши, которых не хватит даже на машину Тесла. Ах да, а затем еще отказаться от собаки, оставив ее голодать в одиночку или попасть в приют.
Опасайтесь таких людей в вашей жизни. Если возникают подозрения, лучше распрощайтесь сразу.
Так или иначе, после титанических усилий, у нас было все готово к пятницу вечером, через 24 часа. Мы запустили сайт на новом провайдере, назовем его HostCo. Несмотря на пару мелких ошибок, система была запущена. Мы рассказали общественности о взломе и решили опубликовать более подробную информацию, как только мы изучим вопрос поподробнее.
Обмен активами начался немедленно. Мы вздохнули с облегчением. Я заснул около 1 часа ночи и мирно спал, изнуренный, но очень довольный командой.
В субботу, в 9 утра, меня разбудил звонок телефона. Это был Грег.
— Нас опять взломали. Биткойны и эфиры были украдены с горячего кошелька HostCo.
Я молчу. Только одна мысль в голове: «Это что, грёбанный апокалипсис?»
Это казалось невозможным. Взлом двухдневной давности тоже казался невозможным, и это было просто невероятно угнетающим. Я сказал Грегу отключить сайт, и что перезвоню через полчаса. Как, черт возьми, мы будем объяснять это сообществу, клиентам, инвесторам? Самим себе, в конце концов?
Я встал, без паники, но с чувством ужасного поражения. Я принял худший душ в моей жизни. Гнев наполнял меня. Мы знали, что Боб причастен к взлому, и знали, что Боб совершил тяжкое преступление 3ого класса, что власти знали это около трех недель назад, и что наш частный следователь предоставил всю информацию, необходимую для немедленной подачи в суд. И теперь происходит это…
Собрав мысли в кучу, я решил позвонить паре человек.
Майкл Перклин, руководитель отдела безопасности и службы расследования Ledger Labs и председатель Руководящего комитета Совета CCSS, был первым в моем списке. Он был в Торонто, и согласился прилететь к нам в тот же вечер. Он был на пути в больницу: он сломал палец при обстоятельствах, которые он предпочел не обсуждать. Но, тем не менее, он полетел к нам. Герой, что сказать.
Я также поговорил с руководителями ряда ведущих бирж. Ни один из них не любил воров, и все были готовы помочь. Несмотря на лихорадочный темп и противоречия мнений и интересов, эта отрасль работает сообща, когда это необходимо.
1500 ETH было возвращено, и биржи начали возвращать нам еще. Вор, вероятно, был расстроен этим. Его обокрали, в конце концов.
Беседы с вором у камина
Пока суть да дело, я решил поболтать с вором по почте. На его последнее сообщение я ответил, запросив у него больше информации (не бесплатно).
Он сказал «привет». Я предложил ему 2 BTC за информацию.
«Мне нужно знать, как ты связан с Бобом», сказал я. Я пытался быть кратким.
Он ответил: «Я узнал, что Боб взломал вас, пока я пытался сделать то же самое. У меня уже был некоторый доступ до взлома вас Бобом, но этого было недостаточно, чтобы получить ваши деньги».
«Что ты знаешь о взломе Боба?» — спросил я
«Взлом изнутри. 315 BTC» — Ответил он. «Я разговаривал с Бобом после того, как он обокрал вас, и спросил его о том, как я мог бы взломать вас тоже. Он дал мне кое-какую информацию об инфраструктуре и некоторые ключи».
Я спросил: «Почему и что конкретно он дал тебе?»
Ровион ответил: «Потому что я предложил ему BTC. Он дал IP-адреса, роли серверов, пользователей, рабочий ключ SSH. Больше не работает, увы».
В дальнейшем общении он сообщил мне почту, по которой Боб связывался с ним: m0money@gmail.com
.
Я видел этот адрес впервые, но он казался знакомым. Вскоре я понял, что Боб часто писал ноль вместо O, в том числе на одном из двух ключей, которые он удалил с сервера (этот ключ, кстати, содержал настоящее имя Боба). Кроме того одним из распространенных паролей Боба был «m0m0ney.» Наш парень использовал пароль l33tspeak. Безопасно, да.
Так же ясно, как то, что Боб обокрал нас несколько недель назад, теперь было ясно, что этот хакер, Ровион, давал нам информацию, относящуюся к Бобу, которую мог знать только сам Боб или его собеседники.
Я подумал:, а может этот хакер вел Боба с самого начала? Конечно, может быть, но каждое действие Боба 14 марта уводит далеко от этого объяснения, в частности, удаление собственных ключей прямо под нашим носом, а затем уход из офиса навсегда. Были и другие доводы, но тут их перечислять не будем.
Итак, переписка с Ровионом… Я спросил, какой «рабочий ключ SSH» он получил. «Это вас не касается», ответил он, «Но он сказал мне, что он получил его из открытого ноутбука коллеги».
Вау. Если это правда, это означает, что Боб во время работы в ShapeShift, получив доступ к компьютеру коллеги, скопировал ключ (или не только?). Он спланировал все это, интересно?
Я стараюсь получить больше информации, но Ровион не хочет рассказывать. Его последнее сообщение …
Ваши миллионы спасут вас, Эрик Вурхис. До свидания, я на связи по почте
Ранним вечером, наш судебно-медицинский следователь, Майкл Перклин, наконец прибыл. Я встретил его в аэропорту. Мы решили воздержаться от ковыряния в наших серверах, пока он не приехал сам. Хакер слегка намекнул на то, как он получил доступ к секретной информации, но точную причину мы знать не можем. Ключи были изменены после ухода Боба, и неизмененным остался только один, но у него не было доступа к серверу, с которого произошла кража в четверг. И опять же, это не объясняло кражу в субботу. И CloudCo, и HostCo были взломаны, несмотря на новые инфраструктуры с совершенно новыми ключами.
Майкл попросил меня рассказать ему всю историю прошлого месяца. Он пропустил это через призму следствия, которая включала предположение о том, что никому в компании нельзя доверять. Трудно было утверждать, что команда заслуживает доверия, учитывая тот факт, что все это началось с работника-мошенника. Это было удручающе…
Можно было бы рассказать о судебных методах, но это долго и неинтересно, да и история не о том. Через некоторое время мы заглянули в журналы в поисках информации о субботнем взломе. Они были удалены, большинство из них. Как они были удалены? Точного ответа не было.
Теперь-то мы знаем, как предотвратить это… на самом деле, опыт, который мы получили на протяжении всего этого инцидента, был чрезвычайно ценным. Хотя это звучит банально, но если ваш стартап как-то связан с безопасностью, лучше сразу взять в помощь профессионалов. Нам это было не нужно поначалу, потому что мы были маленькими. Но чем больше мы росли, тем острее вставала проблема.
В то время как большая часть журналов была удалена, мы фактически восстановили часть из них с «пустого» диска с помощью особой техники. Это было чистое везение. Возможно, Призрак Сатоши присматривал за нами (могли бы использовать его помощь неделю назад, конечно!)
В восстановленных данных мы обнаружили вредоносное ПО, если можно так выразиться. Это была программа, написанная на Go, установленная на основном сервере, который общался с валютой. Эта программа подменяла свою дату создания, чтобы выглядеть незаметно, а имя файла выглядело безобидно. Но это был тот самый инструмент, с помощью которого были украдены деньги.
Она называлась udevd-bridge
Мы были рады найти ее (и да, одно и то же обнаружилась в обеих серверных средах, CloudCo и HostCo). Тем не менее, до сих пор было непонятно, как программа там оказалась. У нас было уже много информации, но не полная картина.
Все было тихо в течение еще нескольких дней. Но потом звезды встали в ряд. Ровион снова написал мне на электронную почту в среду, 13 апреля.
От: Ровион Вавилов rovion.vavilov@fastmail.com
Кому: Эрик Ворхес erik@ShapeShift.io
Re: ShapeShift
Вы были бы заинтересованы в покупке ETH, которые у меня настоящее время есть, по очень льготной ставке в обмен на BTC? Я готов торговать в небольших количествах, так как у вас нет оснований доверять мне
Да, кажется, хакеру не нравилось, что его эфириум не торговался на биржах. Таким образом, он вернулся в магазин, который ограбил, и попросил нас поторговать с ним более ликвидным активом. По существу, мы выкупали нашу собственный эфириум за биткойны.
Очевидно, оно того стоило, если это давало получить более подробную информацию. Так как ни один из нас не доверяет другим, мы устанавливаем протокол:
- Мы платим 2 BTC, чтобы разговор начался
- Ровион дает нам половину нужной нам информации
- Мы, с шагом в 250, обмениваем 2000 ETH на BTC по курсу 0,02 BTC / ETH
- Ровион дает нам вторую половину нужной нам информации
- Мы обмениваем, в с тем же шагом, оставшиеся 2500 ETH на BTC по тому же курсу
- Мы прекращаем связь (это предложил сам хакер)
Он просит нас послать BTC на уже известный нам адрес: 14Kt9i5MdQCKvjX6HS2hEevVgbPhK13SKD
Когда первые 2 ВТС были перечислены, Ровион начал рассказывать про взлом 7 апреля:
Мы связались с Бобом. Он дал нам исходный код ядра ShapeShift, основной IP-адрес сервера, ключ SSH, и [УДАЛЕНО]. Я был авторизованы на главном сервере с этим ключом SSH, установил все что надо и забрал монеты, так как главный сервер имел SSH-доступ к серверу монет
«О каком ключе речь?» — спросил я
»9c:3f:4b: ad: d6:43: ec:9a:55: de: b9:0b: d8: f5:0a: cb»
Мы видим, что это ключ Грега, созданный для среды CloudCo. Его даже не существовало еще неделю после того, как Боб похитил деньги в марте и исчез. Как, черт возьми, этот хакер получил новый ключ?
Я также спросил об упомянутом »[удалено]», но Ровион сказал, что это является частью второго пакета информации. Мы продолжили обмен для второй партии.
Тогда Ровион сказал:
[удалено] это доступ к RDP на машине коллеги, установленный Бобом. Так я и взломал вас во второй раз
Что ж, мозаика начинает собираться вместе, открывая все новые слои предательства Боба. Боб установил RDP (протокол удаленного рабочего стола — в основном показывает экран или предоставляет доступ к управлению) на компьютере Грега. И, возможно, на других, надо признать.
Затем Ровион показал нам электронное письмо от Боба (информацию, которую он купил):
«Привет,
Я получил твои 50 биткойнов. Прикладываю доступ к GH и ключ SSH»
Основной IP: XX.XX.XX.XX
Роутер для переадресации: XX.XX.XX.XX: XXXX
Админка:[redacted password]
Внутренний адрес RDP: XX.XX.XX.XX
acadmin: pass
благодарю за сотрудничество.
[2 прикрепленных файла]
(IP адреса не приведены)
Итак. Боб продал Роивону информацию о серверах, доступ к внутренней сети ShapeShift, часть исходного кода ShapeShift, а также доступ к клиенту RDP, который он установлен на компьютере коллеги, за 50 биткойнов. Информация о IP и внутреннем маршрутизаторе все подтверждает.
Это объяснило почти все. Имея доступ к компьютеру Грега (и, возможно, другие), через RDP, можно было залезать дальше и использовать новые ключи SSH. Это была не вина провайдера облачного сервиса, это была наша собственная вина.
Мы изменили почти всё, но не почистили наши персональные компьютеры, используемые в то время, когда Боб был частью команды. Было бы паранойей сделать это? Да. Было бы правильно сделать это? Несомненно.
И одна из последних вещей, которую Ровион сказал, прежде чем мы закончили общение:
Хоть мы и договорились больше не общаться, сообщите мне, если посадите Боба за решетку, или что вы там хотите делать с ним? Обкрадывать работодателя это крайне подло.
Наведение порядка
Мы решили, что вся эта информация будет доказательством преступного умысла Боба. Это не было спонтанное действие, это было организованным предательством.
Мы также знали, что, хоть история Ровиона и совпадает с фактами, она вполне может быть неполной. Мы должны принять во внимание и другие детали, которые имеют отношение к делу и к нашей инфраструктуре. Вот почему ShapeShift была отключена дольше, чем нам хотелось бы. Мы были очень осторожны, почти как параноики.
Тем не менее, я был очень горд своей командой. Работая в стартапе в мире Биткойна, и без того достаточно напряженной, а потом иметь дело с серией предательств и перенести весь ущерб (в финансовом, техническом, психологическом смысле) — это очень трудно. Вы, ребята проделали потрясающую работу, и я очень рад видеть сплоченность команды и вашу силу духа.
Не помогло даже то, что мы наняли четырех новых сотрудников в ту самую неделю двух инцидентов (почти вдвое увеличив нашу команду). Они были сразу брошены в бой, и бились достойно.
$230,000 in Digital Currency Hacked From ShapeShift.io Exchange — The Merkle https://t.co/bSVCBDCOFn pic.twitter.com/8Pj1w6ynnC
— Royal Macro (@Royalmacro) April 21, 2016
#ShapeShiftUserNotAffected
Чтобы выжить в мире Биткойна, нужно быть оптимистом. В то время как предательство и потери ужасно подрывают мораль, есть и хорошие стороны.
Во-первых, ни одно лицо или организация не является идеальными. Мы увидели некоторые из наших собственных уязвимостей, а также наши собственные ошибки. Мы исправили их, везде, где это возможно. Такое улучшение выходит недешево, но ShapeShift сегодня сделан гораздо лучше, чем он был до этого. Сталь закаляется, сервис улучшается. Хотя ни одна организация не может в конечном счете достичь идеала, мы стараемся приблизиться этому.
Во-вторых, на один из наших клиентов не потерял деньги на протяжении нескольких взломов, даже внутренних. Всё это благодаря децентрализации, с помощью кода, за счет инноваций, через структуру. Защита прав потребителей является одним из наиболее важных аспектов этой отрасли, вкладом в развитие общества — тем, чего целое столетие банковского дела не смогло достичь, как было отмечено печально известным Сатоши.
ShapeShift всегда будет работать, ориентируясь на защиту интересов потребителей. Другие люди из нашего сообщества делают то же самое разными путями. Спасибо за инструменты, которые вы создали, и за работу, которую вы проделали. Нам еще многое предстоит сделать.
Что касается наших клиентов, я хотел бы лично извиниться за наш простой. Хотя мы можем гарантировать, ч