26 января 2022

Безопасность & Web 3.0. Часть I. Азы

Давно хотел написать эту брошюру: но годы на bitcointalk, exploit.in, habr, xakep.ru, antichat и подобных ресурсах под разными никами дают о себе знать — раскрывать то, что создано как сокрытое, смысла великого нет. Поэтому решил переписать совсем ВСЁ и начать с простейшего. Дойду ли до сложного? Да, но в какой степени — пока сказать трудно. Время — самый дорогой нынче ресурс. 

В любом случае — начали!

Железо — наше всё?

Здесь есть две крайности:

  1. С одной стороны многие помешаны на аппаратных закладках, которые явно есть и повсюду;
  2. С другой — есть те, которые про “железо” забывает вовсе, хотя оно точно играет не последнюю роль при выборе ПО. Любого. 

Истина не где-то рядом и даже не по середине в этот раз: она в том, что существует простая формула: 

H = Iy * Im

Где H — условный коэффициент / вероятность взлома Вас и Вас именно (hacking), а Iy — Интерес к Вам и Вам Именно, Im — интерес к Вашим деньгам / накоплениям. 

Сразу — к практике:

  1. Полиция или налоговая мало понимает в ПО, компьютерных сетях и т.п., но они спокойно могут изъять носители (известный из прессы отдел К, особенно — в регионах — тоже недалеко в этом плане ушёл). Уровень №00. Сюда же относится и 80% примерно “хакеров” — скрипт-кидди
  2. Эксперты-криминалисты знают уже больше, но малое количество из них умеет делать нечто, что не доступной так называемым “продвинутым пользователям”: форензика — не самая сложная наука. Уровень №01. Сюда же отнесите ещё 15% хакеров: как белых, так и чёрных. Впрочем, красные шляпы тоже сюда входят, но они о другом ;). 
  3. Далее можно сразу перейти к службам безопасности и аналогом российского ФАПСИ, где уже всё может быть сильно серьёзнее (и да, не забывайте, что в суде возможно привлечение экспертов/специалистов самого высокого образца, коих, правда, не много). Уровень №02. И вот они — истинные хакеры всех мастей и направлений: те, которые оптимизируют даже еду в китайских ресторанах, если вы понимаете, о чём я. 

И ни в коем случае не призываю вас, исходя из перечня, начинать творить нечто противоправное — лишь пытаюсь донести простую мысль: “не нужно бояться акул, если вы плещетесь в ванной”. Очевидно? Надеюсь, что да. 

Далее — ещё один априорный тезис, если хотите — аксиома: взломать можно ЛЮБУЮ СИСТЕМУ. Абсолютно. Почему же тогда одни системы взламывают, а другие — нет? 

  • Во-первых, потому что ломают только те системы, где профит от взлома больше затрат на сам взлом: Bitcoin-как-сеть можно взломать, но профит будет настолько мал (особенно — учитывая последствия обвала после взлома) относительно вложений в оборудование, проделанную работу (вспоминаем про PoW), в создание инфраструктуры для атаки и пост-атаки и т.д., что это никого не интересует. Зато атака 51 — одно из следствий децентрализации и BCH, BSV на себе сие ощутили, впрочем, как и ETC и др. 
  • Во-вторых, ломают то, что массово: Windows, а не MAC; IoT-носимые-устройства, а не самосборные Raspberry-девайсы и т.д. Почему? Да потому что вероятность банального взлома и атаки (того же DDoS-а) сильно выше, исходя из теории вероятности. Но это не значит, что Уровень №01 или №02 не может взломать: он не хочет. Пока;
  • В-третьих, в 80% случаев ломают скрипт-кидди, а они не умеют ничего ломать на самом деле: они тупо (именно так) повторяют алгоритмы, сценарии и через банальный брутфорс, те же DDoS-атаки, публичные эксплоиты, фишинг и т.д. стараются выжать максимум, который потом тратят на дорогие машины и квартиры… в нарисованных мирах и на пачку чипсов на сдачу. 

Поэтому ещё одна простая формула выглядит так:

PoH >> CH

Где PoH — профит от взлома, а CH — вложения на взлом, а >> — сильно больше, а не просто больше. Понятно, что всегда будут исключения:

  1. По политическим мотивам (Ассанж, Сноуден, Ульбрихт, Амос Дов и др.);
  2. При расследовании по-настоящему опасных уголовных дел (коих — не так и много);
  3. При иных незаурядных случаях. 

К последнему пункту стоит отнести и разного рода атаки (будут в следующих выпусках и есть немного тут) на p2p-системы, когда важно получить не профит (с) этих систем, а уничтожить их полностью. Но, если достигли этих уровней, не важно — на Тёмной или Светлой стороне Силы, то сегодня нечего вам поведать. Остальные — могут следовать дальше… 

Итак, железо. 

Если даже НЕ знаете ничего про open source hardware, если не пользуете защищёнными телефонами навроде Purism, не хотите собирать свой мобильник (вариант проще — см. тут), то всё одно стоит соблюдать элементарную гигиену

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

Коротко:

  1. Начните с правильной покупки. Если вы — не White или Black Hat — купите достойный ПК, ноутбук и забудьте про мобильные кошельки и планшеты для начала. Где хранить деньги на хлеб насущный — не мне решать. Хотя и этот вопрос рассмотрим. К слову: ломаное ПО — первый враг Web 3.0 безопасности. Тем паче, что среди open source хватает не просто бесплатного, но и достойного: начиная с Linux-дистрибутивов, в том числе, заточенных под разные нужды, заканчивая разного рода горячими и не очень кошельками;
  2. Купили? Проверьте, что девайс действительно новый: начиная с упаковки и гарантии, заканчивая запросом к УткаУткаИди, если никогда не задумывались ранее об этом, то ещё и вот эти тезисы изучите. Кстати, вот как раз платить за девайс лучше не банковской картой: в худшем случае — условно-анонимной виртуальной, привязанной к чему-то навроде Android Pay (если сможете этот фокус проделать), или наличными, или крипто. В последнем случае можно попробовать разные сочетания “карта + крипто”, чистое крипто (в Грузии, Аргентине, Турции и даже РФ мне удавалось договариваться на сделки по покупке железа с разными людьми, начиная с 2016 года; ныне — проще: магазины есть) и т.д. Этот вопрос, если материал будет интересен, опишу как-нибудь отдельно. В крайне случае — заплатите, предварительно оповестив и договорившись, с карты друга, жены/мужа, брата/сестры, отца/матери и т.д. Зачем? Вспомним некрасивую историю со “взлом” адресов доставки Ledger/Trezor и всё встанет на свои места. При оплате через смартфон (и не забывайте об отпечатках) — не забывайте поставить его в режим полёта хотя бы. В Интернете — покупайте так, чтобы идентификационных данных ваших было как можно меньше: начиная чистого email на Proton-е (который не помогает от Уровня №02 точно, но хорош в описываемой практике), некий “виртуальный” адрес доставки и т.п. Не говорю уже о гигиене с браузером и приложением — об этом будет ещё и чуть ниже. 
  3. Купили. Проверили. Дальше? Назовите девайс сразу как-то не банально: ФИО, год или место рождения, имя возлюбленной и адрес помещения — НЕ подходят. Что-то, чего нет в паблике, но что не бросается в глаза. Это же касается Wi-Fi сетей: WEP/WPA/etc. — не всё, что в них есть. Называть сети, если только вы — не меценат, раздающий бесплатный Интернет, тоже следует с умом. И да, помните, что Wi-Fi-роутер также относится к железу и обычно — он-то и есть самая уязвимая точка (не верите мне? спросите Shodan): поэтому хотя бы длинный пароль (что это и как — см. ниже) точно следует установить и это не 0987654321. Точно не он ;). И да, не забывайте хоть иногда юзать https://www.fing.com или аналоги: много порой интересного находится. 
  4. Переименовали? Создайте две учётный записи: даже на MacOS & Linux лучше так поступить, а уж Windows… лучше забыть об этой ОСи. Если только вы — не продвинутый разработчик, кому она удобна. Или по работе требуется… В общем: даже закрытая MacOS в большинстве простых случаев лучше Win. Поверьте, лучше помучившись, научиться вводить по 2-3 пароля за сеанс (да и то — не во всех случаях), чем потом сожалеть об этом. И да, черви, вирусы и прочие зловреды есть НА ВСЕХ операционках, поэтому лишь вопрос Уровня 00-01-02-etc. отделяет вас от взлома в этом аспекте. Не стройте иллюзий и помните, что антивирусы — далеко не панацея, а часто — враг. Лучше научиться играться с Firewall-ом и политиками безопасности.
  5. Купили. Проверили. Переименовали. Разделили (доступы). Дальше? Обновите ОСь и ПО: обновления латают старые дыры и поэтому без них даже лучшие производители не могут обойтись. И да, перед установкой программ, аддонов, а тем паче — драйверов и прочего низкоуровневого ПО — всегда проверяйте (желательно — с другого девайса и другой сети: например, если рабочий ПК “пашет” через Wi-Fi, то запрос лучше произвести с мобильной сети смарта) не только отзывы, но и хеш-сумму того, что устанавливаете (если это возможно). Как минимум — старайтесь без навыков не устанавливать ПО из неофициальных площадок, а давая аппрувы каким-то не верифицированным централизованными площадками  программам, удостоверьтесь, что это именно то, что нужно. Помните про фейковые кошельки? Я об этом. В этом смысле джейлбрейки — табу. Когда же можно их использовать? Ответ простой: можете сварганить свой? Или хотя бы представляете последовательность создания такового? Тогда — да. В остальных случаях и ДЛЯ работы — точно нет.  
  6. Далее? Настройте активность устройства: всякие там режимы сна и отключения, блокировку экрана и т.д. Чем меньше время без блокировки при неактивности — тем лучше для безопасности и трудней вам. Но научиться закрывать крышку ноутбука в любом случае нужно раньше, чем крышку унитаза: цифровой мир куда шире и опасней оффлайнового, аналогового. И не шучу: отсылка к спец-раковине для стоков здесь к тому, чтобы акцентировать на сих простых действиях внимание, которое после 3.5 страниц текста может быть и рассеянным. Соберитесь!

Думаю, если когда-то посещали, хотя бы просто заходили и одним глазом смотрели, на сайты вот из подобных подборок: forum.antichat.ru/threads/23684/, то не составит труда на каждый пункт набрать ещё по 10 подпунктов. А если нет — берите как ликбез и пользуйтесь. 

“Но, позвольте, сударь”, — спросит меня вдумчивый читатель: “как же вы всё намешали: и железо, и ПО, и ОС, и доступы?”. Отвечу так:

  • Во-первых, не намешал, а умышленно показал, что можно сделать в min комплектации на каждом шаге;
  • Во-вторых, базис этой статьи — описан в заключении как система защитных действий, а уже какие из них, когда и где применять — выбор каждого, поэтому по ходу повествования даю лишь показательные примеры. Не более. 

Поэтому — продолжим. 

Простое — часто самое эффективное

Вот, допустим, создаёте учётную запись. Администратора. Какой пароль зададите? Как назовёте? Ведь пароль, что меньше 14 символов — подвержен перебору через радужные таблицы, а пароль меньше 20-21 символа и вовсе рядом программ считается моветоном. Поэтому ориентируйтесь на хотя бы 20 символов: буквы обоих регистров, цифры, спецсимволы. 

И главное помните: минимализм — наше всё:

  1. Не ставьте лишних програм. Совсем;
  2. Хотите что-то загрузить? Проверьте;
  3. Пароли не нужно писать на компьютере или оставлять в блокноте на столе. Никогда. Совсем никогда;
  4. Не верю менеджерам паролей и вам не советую. По крайне мере — это 100% централизация

Лучше присмотритесь к такому ПО:

  1. VeraCrypt (про TrueCrypt забудьте);
  2. Tor-браузер (по блокировкам — здесь);
  3. Tails (всё ещё в моде);
  4. PGP (например);
  5. И ко всему, что можно считать Web 3.0-совместимым… Об этом будет много и отдельно. 

Главное вот что (эмпирически:)

  1. Чистый WordPress почти всегда безопасен, WordPress с 1 плагином менее безопасен процентов на 30-50, с двумя — на 50-75%, а с тремя и более — небезопасен вообще. Не лепите плагинов, аддонов и прочих дополнений лишних. MetaMask? Да. Проверка ссылок? Возможно. PGP-аддон? Наверняка. Но не 100500 на рабочий браузер. Поэтому! Постарайтесь разграничивать учётные записи в браузере/приложениях: скажем, если смартфон с крипто-кошельками — не ходите с ним в кафе, если браузер — кроме аддонов кошельков не ставьте ничего лишнего. 
  2. Не используйте публичный email, номер телефона и прочие данные, что есть в соцсетях для доступа к непубличным кошелькам и прочим Web 3.0 сервисам. Да и вообще — забудьте о связке email/телефон => кошелёк/аккаунт. Насколько это возможно и где уместно. Номер телефона лучше оформить на человека, которому доверяете. Сообщать сей номер никому не нужно (sim/sms-спуфинг см. по ссылке), а при доступе через СМС (к сожалению, всё ещё бывает нужно) — купить кнопочный девайс без выхода в сеть. Итого выйдет: кнопочный телефон, смартфон для работы, смартфон для общества, компьютер для работы, запасной девайс, резервные хранилища. Могу подробней: жду запрос от вас. Идём дальше?
  3. Не храните в браузере много: доступ к паролям, сохранённым в браузере / менеджере паролей должен быть сложным; сохранённых паролей — минимум (лучше вообще нисколько); и уж точно в рабочем аккаунте не должно быть никаких социальных сетей, тем паче — авторизованных учётных записей, централизованных бирж и прочего; и да — всегда наблюдайте за сертификатами, которые ставите и проверяйте https://, если выходите в Web 2.0 на минуточку. 
  4. Не забывайте, что от простых атак помогают простые же средства защиты: если настроили почту через сборщик — “разукрасьте” аккаунт, чтобы никто кроме вас не знал, как именно он выглядит. Это же касается браузера: рабочий цвет и “домашний” должны отличаться. Авторизовались через Wallet Connect и можно кастомизировать как-то сие dApp-чудо? Сделайте это: поставьте уникальный аватар, задайте секретное слово и т.п. 
  5. И уж точно не беритесь за то, в чём мало смыслите: не принимайте .pdf/.jpg и подобные файлы; не разрешайте автоматическую загрузку изображений в email; не назначайте папку сохранённых файлов по умолчанию; не переписывайтесь с незнакомыми (для вас) номерами/email/аккаунтами; не трольте спамеров; научитесь архивировать, а не удалять: история может не только во вред использоваться, но и во благо — просто делайте это правильно; flash умер — запомните это; помните, что Google-анкеты и прочие документы сами по себе могут быть и безопасны, а вот ссылки внутри них и сбор данных от них — нет и т.д., и т.п. Кстати, у Гугла, ФБ и прочих гигантов тоже есть настройки безопасности: https://myaccount.google.com/security — вышли в Web 2.0? Не забудьте туда нагрянуть и всё пере- и просто проверить. И да, ещё раз: никаких соц. сетей в рабочем браузере! 
  6. Общайтесь тоже защищёно: TOX, Signal, Treema, Discord и ряд других подойдут для начала. Telegram? Конечно же нет, но ведь не говорю о том, чтобы всех и всё запретить: речь именно о том, что лучше использовать для совместного труда, а не для ведения каналов и т.п. Антиспам-помощники для телефона — тоже подойдут… если только им доверяете. Лучший дворецкий для входящих — вы сами. 
  7. Никогда не работайте поздно: по крайне мере финансовые транзакции после 21:00 в вашем часовом поясе, к которому (вспоминаем про джетлаги) вы привыкли, — не просто плохой тон, а то, что подводит многих, кто попадается и на простейший фишинг, и на атаки куда более изощрённые. 

Но это всё больше про то, чего не делать или делать с опаской. А как же поступать в активной фазе?

    1. Менять пароли хотя бы 1 раз в 3 месяца. Желательно — максимально оффлайн;
    2. Придумать свою систему записи паролей (позже покажу пару приёмов);
    3. Всегда имейте резервный канал связи с коллегами на резервных устройствах. Пример: вы общаетесь через TOX на 2х компьютерах? Попробуйте на запасных смартфонах установить Signal, привязанный к другим данным, включая — сети, и в случае подозрения вышлите сигнал бедствия или запрос на верификацию коллеги. Каким образом? Лучше всего голосовое/видео сообщение (не забываем про DeepFake) с некой секретной фразой, понятной только вам. Или ещё из элементарного: меняетесь? Просите подтверждение голосом у второй стороны ОТС: ломают не только соцсети и не только для слива данных.
    4. Важные документы — архивируйте, но парольте и главное — по системе. Иначе запутаетесь и всё п… пропадёт. Примеры? Будут, но если захотите.
    5. Заметили замедление работы компьютера? Сети? Смартфона? Остановитесь. Оцените ситуацию. Вирусы и прочая малварь жрёт ресурсы. При захвате условного периметра сети — тоже всё может работать неладно. 
    6. А ещё есть кейлоггеры: и вот их даже антивирусы не всегда ловят (впрочем, 0day на Уровне №02 хватает). И как быть? Максимально использовать закрытые поля (аля формата password — закрытых “звёздочками”), виртуальные клавиатуры и подобные ухищрения. А ещё? А ещё не проговаривать вслух то, что сокрыто на бумаге или где-то в иных местах. Кстати, на бумаге записывать лучше и карандашом, и ручкой: они по-разному в разных средах сохраняются.
    7. Читайте дайджесты от https://www.securitylab.ru или любого аналога (xakep.ru и т.п. если начинаете). Читайте больше бюллетеней безопасности: лет чреез 5-10 вы начнёте их понимать ;). 
    8. И начните, наконец, с главного:
      1. https://book.cyberyozh.com/ru/ 
      2. https://cawiki.herokuapp.com/cryptoanarchism_faq/ 
      3. https://t.me/web3news/2033 
      4. https://t.me/web3news/1022 
      5. https://xakep.ru/2014/03/15/62206/ 
  1. И больше практики:
    1. https://webkay.robinlinus.com 
    2. https://privacy.net/analyzer/ 
  2. И да, научитесь собирать, разбирать, чинить хотя бы половину своих девайсов: так узнаете сильно больше. Намного.

Подведу промежуточные итоги:

  1. Всё перечисленное касается в первую очередь Web 2.0. Но почему? Потому что, если хотите ездить на современном скоростном электрокаре по дорогам общественного пользования, в любом случае нужно знать а) правила дорожного движения и б) правила поведения в общественных местах. А уж потом… 
  2. Выше обратил внимание на ряд аспектов лишь, из которых следует сделать такие выводы:
    1. Железо, ПО, сеть — три основных вектора по безопасности, каждый из которых отдельно и в совокупности с 1-2 другими рождает свои вопросы; 
    2. Банальный атаки — самые простые. Возникают они из-за вашей с нами безалаберности, поэтому первичные табу:
      1. Слабые пароли. К слову, сброс — тоже отдельное искусство, но его до меня прекрасно описали:
        1. Часть: https://habr.com/ru/company/vdsina/blog/523690/;
        2. Часть: https://habr.com/ru/company/vdsina/blog/524014/
      2. Нелицензионное ПО и железо (open source рулит);
      3. Man-in-the-middle должен видеться всегда и всюду;
      4. Никаких общественных Wi-Fi-ев для работы;
      5. Никакого администратора как основной учётной записи;
      6. Без обновления ОС, ПО, аддонов — всё коту под хвост;
      7. Фишинг прост и примитивен — раскрашивайте учётные записи чаще потому;
      8. Всегда помните, что доступ по API — самый опасный… 
  3. И зарубите на носу: не нужно преувеличивать степень и силу Зла: не так страшен чёрт, как его малюют. 
  4. А далее? Зная хотя бы это — давайте попробуем зацепить верхний слой и Web 3.0 сервисов.

Web 3.0. Начало

Тесты. Прежде чем что-то установить в боевой режим — протестируете. Прежде чем переводить ETH — возьмите тестовых и попробуйте отправить в сети. Прежде чем настроиться на L2 — попробуйте на малых суммах мосты и свопы. 

Далее. Seed-фраза и/или приватный ключ — и есть ваши деньги: как одно превратить в другое и что это? Вот те вопросы, с которых рекомендую начать. НЕ понимая Web 3.0 механик — рано или поздно станете жертвой, а не HODL-ром. 

Доступы. Запомните: деньги у вас только тогда, когда у вас приватный ключ. Даже деньги на смарт-контракте — уже не ваши. Поэтому wBTC круче: можно заработать (и порой — неплохо), но это уже не холодное хранение. Что такое холодный” стейкинг объяснять не буду, но и он != HODL точно. Поэтому не забывайте проверять и отзывать при необходимости доступы: https://etherscan.io/tokenapprovalchecker — аналоги на EVM-совместимых чейнах найдёте сами, а дальше — по накатанной и в не EVM-подобных. Если не следили за историей своих аккаунтов, то настоятельно рекомендую это делать: https://zapper.fi/ru/dashboard/ — начните хотя бы отсюда. Или через dAPP от MEW, или через аналоги. Не важно. Важно, чтобы начали. Сейчас. 

Стеганография и не только. Жёлтые точки — это реальность (да ещё какая!). Такая же реальность идентификация через airdrop-ы (впрочем, есть и другие способы): поэтому никогда не смешивайте публичные горячие кошельки и ваши же холодные. Иначе — идентифицируют, сопоставят и сольют в DarkNet… Шучу, но не сильно.   

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

  1. Атака Сивиллы; 
  2. Атака информационного затмения;
  3. Вампирский майнинг;
  4. Front-Running Attacks;
  5. Атака 51;

А самое главное: какие ещё атаки на p2p-системы и конкретно блокчейн-подобные / DAG-совместимые системы вы знаете? 

Уровни защиты. Резюме

Итак, пройдитесь по этим уровням:

  1. Техническая защита;
  2. Организационная;
  3. Правовая;
  4. Иная.

Далее: создайте схему — железо, ПО, сеть, вы (да-да, социальная инженерия — главный подвох). После — уже пробуйте детализировать.

Что будет в следующих частях?

Прежде всего — холодное хранение:

  1. Холодное и аппаратное хранение:
    1. Бумага vs. Металл;
    2. Trezor vs. Ledger Nano;
    3. Какие ещё способы существуют?
    4. В яйце — игла:
      1. Защищённые флеш-носители;
      2. Защищённые программные контейнеры в них;
      3. Мобильные ОС;
      4. Оффлайн-транзакции и физический доступ. 
  2. Меш-сети и не только:
    1. Статические;
    2. Динамические;
  3. Биометрия и блокчейн (или сразу Метавселенная?):
    1. Способы идентификации;
    2. Противостояние им;
  4. Трилемма блокчейна и безопасность как таковая;
  5. Airdrop-ы и безопасность:
    1. Fake-airdrop;
    2. Атака сканированием;
    3. Прочие атаки;
  6. DarkWeb & DeepWeb: что есть, было и будет;
  7. Смарт-контракты и не только:
    1. Что решит nocode;
    2. Цеппелин и его стандарты;
    3. Механики разбора;
    4. Примеры атак на DeFi и не только;
    5. Стандарты: есть ли они?;
  8. Классификация и разбор основных атак;
  9. И как всегда — ваши предложения. 

А пока — до!

P.S. Коли вы — продвинуты больше моего, критикуйте, но главное — давайте наводки на продолжение темы: иначе мы рискуем не обучить нужное количество людей для создания критической массы положительного прорыва Web 3.0 механик.