Как проследить транзакции Биткоин кошелька.

Тема в разделе "IT криминалистика (Forensics)", создана пользователем Admin, 25 мар 2020 в 11:56.

  1. Admin Администратор Команда форума

    Регистрация:
    13 мар 2015
    Сообщения:
    218
    Симпатии:
    43
    Jabber:
    [email protected]
    Информация о Биткоин кошельках
    Все транзакции в сети блокчейне (сети Биткоин) являются публичными. То есть для интересующего вас кошелька, даже если это чужой кошелёк, вы в любой момент можете узнать:

    • текущий баланс
    • общее количество транзакций, в том числе транзакций поступления и отправки денег
    • суммы прихода и расхода за всё время
    • адреса кошельков, которые отправили деньги или на которые были отправлены деньги с этого кошелька
    Вся эта информация доступна на официальном сайте blockchain.com, который поддерживает поиск по сайту. Адресом Биткоин кошелька является длинная строка, которая состоит из букв и цифр, например: 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr

    Кроме поиска, можно обратиться к сайту по прямым адресам:

    1
    https://www.blockchain.com/btc/address/АДРЕС_КОШЕЛЬКА
    Если вам нужна информация в сыром виде, например, для обработки в вашей программе, то вы можете использовать адрес вида:

    1
    https://blockchain.info/rawaddr/АДРЕС_КОШЕЛЬКА
    Например, для кошелька 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr: https://www.blockchain.com/btc/address/1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr

    [​IMG]

    Пролистнув чуть ниже вы сможете увидеть информацию о транзакциях, зелёным цветов обозначен приход средств, а красным — расходование:

    [​IMG]

    Если кликнуть на адрес любого кошелька, то можно увидеть аналогичную информацию для него.

    У каждой транзакции есть уникальный идентификатор, если кликнуть на него, то можно увидеть более подробную информацию:

    [​IMG]

    Там вы увидите дополнительную информацию: время, стоимость перевода и прочее.

    При переходе по ссылке «Посмотреть древовидную схему» вы сможете проследить последующий путь денег:

    [​IMG]

    Информация для кошелька 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr вы сыром виде доступна по соответствующей ссылке https://blockchain.info/rawaddr/1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr

    Как можно увидеть, сайты blockchain.com и blockchain.info предоставляют нам достаточно информации о совершённых транзакциях. Но существуют и специальные программы для отслеживания пути Биткоинов.

    Как построить схему движения денег Биткоин
    Поскольку все данные являются открытыми, то достаточно провести их анализ. То есть для интересующего кошелька посмотреть, с какими другими кошельками он имеет транзакции, а затем посмотреть транзакции для каждого из найденных кошельков и так далее. Таким образом можно проследить путь любой длины.

    Проблема в том, что данных много, и без каких-то средств содействия в них легко запутаться. Одним из вариантов является визуализация транзакций Bitcoin. Для неё можно использовать, например, инструмент Orbit.

    Как установить Orbit
    Программа Orbit устанавливает одинаково в любой Linux. Если у вас ещё не установлен пакет git, то начните с его установки, затем просто выполните команды:

    1
    2
    3
    git clone https://github.com/s0md3v/Orbit
    cd Orbit/
    python3 ./orbit.py -h
    Если появилась справка, значит всё в порядке.

    Как пользоваться Orbit
    Графы, используемые для визуализации данных, полностью не решают проблему с избытком данных. Но с помощью них иногда можно раскрыть главный источник денег, конечные точки, куда были слиты средства или подозрительные транзакции.

    Я покажу пример анализа своего кошелька о котором я что-то знаю. Точнее, я знаю только об исходящих транзакциях. Смогу ли я в этой ситуации сказать хоть что-то дополнительно, найти ещё хоть какую-нибудь информацию? Давайте проверим.

    Как запустить Orbit для отслеживания биткоинов
    Адрес кошелька для примера 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr

    Кошелёк для анализа нужно указывать после опции -s. Все другие опции являются необязательными. Но первый запуск мы сделаем с опцией -d, которая регулирует глубину обхода. По умолчанию глубина обхода равна 3. Установим уровень на 1, чтобы посмотреть только кошельки, с которых или на которые делались транзакции в отношении этого кошелька:

    1
    python3 ./orbit.py -s 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr -d 1
    При первом запуске программа выведет:

    1
    2
    [-] Quark is neccessary to view graphs generated by Orbit.
    [~] Downloading Quark [2.37 MB]
    [​IMG]

    Эти строки означают, что установлена дополнительная программа Quark, которая необходима для генерации графов.

    Когда все запросы будут завершены, то результаты будут сохранены в файл и этот файл будет открыт в веб-браузере. При анализе одного уровня получается такое солнышко, каждый луч которого показывает адрес кошелька, с/на который была сделана транзакция.

    [​IMG]



    Продолжим и теперь сделаем анализ на два уровня:

    1
    python3 ./orbit.py -s 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr -d 2
    В самом начале получаем такую схему:

    [​IMG]

    Давайте проведём небольшой анализ. Начнём с поиска интересующего кошелька, вводим 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr и нажимаем кнопку Find. Искомый элемент будет выделен жёлтым, я вытащу его из общей группы, чтобы всегда знать, где он:

    [​IMG]

    Теперь нажимаем кнопку Make Clusters, чтобы сформировать кластеры на основе алгоритма определения сообществ. После этого используем Color Clusters, чтобы назначить кластерам разные цвета. Наконец нажимаем Spacify, чтобы исправить перекрывающиеся узлы и грани:

    [​IMG]

    Стало заметно лучше.

    Продолжу анализ. Для демонстрации интересных находок, я удалю некоторые «кусты». Можно удалять узлы по одному, для этого нажмите в меню кнопку Delete. Также можно выделять сразу несколько используя инструмент Lasso:

    [​IMG]

    Посмотрите на выделенный зелёным треугольник:

    [​IMG]

    Все полученные биткоины я обналичиваю в обменниках (мне не нужны биткоины, мне нужно платить по счетам). То есть этот «кучерявый» узел, который я обозначил буквой B — это обменник. Свой кошелёк я обозначил буквой A. Следовательно, можно сделать вывод: жертвователь (кстати, спасибо ему за поддержку, и вообще, спасибо всем, кто поддерживает, особенно материально!), так вот, жертвователь купил биткоины в этом обменнике (они пришли в узел C), а затем отправил на другой кошелёк (D) и затем часть суммы отправил мне.

    Исходя из графика можно подумать, что мы одновременно воспользовались одним обменником — но это необязательно так, поскольку на графике показаны вообще все транзакции, которые когда-либо были сделаны моим кошельком. Ещё один вариант — транзакция AB это тоже пожертвование, которое было сделано кем-то напрямую через обменник.

    Немного перераспределил узлы, посмотрите на точку B — она связана с теми же узлами, что и мой кошелёк (A), то есть с D, E, F, G. От пользователя B пришло пожертвование, то есть он где-то на обменнике купил Биткоины, и отправил часть суммы мне, а я вернул эти биткоины обратно на обменники.

    [​IMG]

    Это же самое можно сказать и про точку C, этот пользователь покупает-продаёт на обменниках и однажды часть суммы прислал мне. Как вариант, эти кошельки получили средства из другого источника (не обменники), но обналичивали их через них, и также прислали мне несколько баксов.

    По умолчанию глубина поиска равна трём, то есть если запустить без опции -d:

    1
    python3 ./orbit.py -s 1CeePVnmoGD3xpDtnFtshLHqA2jNrCNeEr
    то можно получить примерно такую картину:

    [​IMG]

    По умолчанию Orbit обрабатывает только последние 50 транзакций от каждого кошелька. Вы можете изменить это значение опцией -l. Можно как уменьшить, так и увеличить количество охватываемых переводов.

    Кошельки, которые сделали всего пару взаимодействий с нашей целью, могут быть неважны, можно сказать Orbit обходить топ N кошельков на каждом уровне, это делается опцией -t.

    Если вы хотите просмотреть собранные данные просмотрщиком графов по вашему выбору, вы можете использовать опцию -o. После неё нужно указать один из поддерживаемых форматов:

    • graphml (поддерживается большинством просмотрщиков графов)
    • json (для сырой оработки)
    Заключение
    Инструмент Orbit не предназначен для деанонимизации пользователей Биткоин, но он может помочь собрать интересную информацию. Например, как выяснилось, мир довольно тесен, и я вместе с другими пользуемся примерно одними и теми же обменниками.

    Под пристальным вниманием находятся биткоины с интересной «судьбой» или происхождением. Например, общественность наблюдает за самыми первыми биткоинами, которые намайнил автор Bitcoin. Этих биткоинов много, и попытка обналичить вполне может раскрыть загадку, кто изобрёл Биткоин. Также общественность наблюдает за биткоинами, которые захватила ФБР у Silk Road и разными криминальными биткоинами.

    Это возможно благодаря тому, что анонимность и децентрализация находятся в конфликте. В качестве меры противодействия такому анализу можно создавать уникальные адреса кошельков для каждой транзакции, например, wikileaks генерирует уникальный адрес кошелька для каждого жертвователя. Но если затем они сливаются (на любом этапе) в один кошелёк, то эта мера теряет смысл.

    Можно предположить другие проблемы связанные с прозрачностью блокчейна: например, кому-то (допустим мне, в пожертвовании на сайт), перевели криминальные биткоины. А я без задней мысли поменял их на рубли через обменник, где указал номер своей карты. Получается, у правоохранительных органов ко мне могут, как минимум, возникнуть вопросы…