Откуда деньжата? Разбираем, как ищут криптокошельки
В OSINT и безопасности часто нужны инструменты анализа криптовалют: надо понимать, кто стоит за адресами, куда уходят средства и как отследить активность. Сегодня посмотрим, как устроены адреса в разных блокчейнах, как работает парсинг, какие есть способы идентификации и проверки.
Что такое криптовалютный адрес
В блокчейне криптовалютный адрес — производная от публичного ключа. Он появляется после криптографических операций с парой закрытого и открытого ключей: открытый ключ хешируется, а полученную строку публикуют, чтобы другие участники могли отправлять средства на этот адрес.В биткоине адреса могут начинаться с 1 (P2PKH), 3 (P2SH) или bc1 (Bech32). В Ethereum все адреса начинаются с 0x и состоят ровно из 42 символов. В некоторых криптовалютах, например Monero и Zcash в shielded-режиме, адреса скрыты или снаружи выглядят нечитаемыми, поэтому отслеживать их намного сложнее. Если заранее знать структуру адреса, автоматический поиск становится проще. Например, чтобы найти на форуме все Ethereum-адреса, достаточно задать регулярку вида 0x[a-fA-F0-9]{40}. Но дальше все сложнее.
Где ищут адреса
Адреса можно доставать из блокчейна, внешних источников или объединенных баз. В блокчейне адреса прямо указаны в транзакциях: в Bitcoin лежат в выходах, а в Ethereum — в логах и вызовах контрактов. Если запустить полный узел и пройтись по блокам, можно собрать всю историю появления адресов и проследить их активность.Отдельная важная тема при отслеживании транзакций — временные и случайные адреса. В ходе обычной транзакции в биткоинах кошелек часто автоматически создает новый случайный адрес для сдачи из той же сид‑фразы. Так происходит из‑за модели UTXO: если у тебя есть вход на 1 BTC, а ты отправляешь 0,3 BTC, оставшиеся 0,7 BTC должны куда‑то вернуться. Это усложняет анализ: один пользователь может за короткое время задействовать десятки связанных адресов.
В Ethereum тоже хватает проблем. Там нет понятия сдачи, зато при взаимодействии со смарт‑контрактами часто появляются новые адреса: например, через опкоды CREATE и CREATE2 или просто как новые адреса EOA. Плюс злоумышленники активно используют собственные контракты, чтобы скрывать следы. Например, они могут развернуть промежуточный контракт, который принимает средства и сразу переводит их дальше, на другой адрес.
Во внешних источниках адреса часто встречаются в текстовом виде. Вот несколько реальных кейсов:
- На форумах вроде BitcoinTalk пользователи добавляют адреса в подписи, чтобы принимать донаты.
- На GitHub адреса встречаются в комментариях к коммитам, тестах и файлах README. Иногда это реальные адреса, которые оставили разработчики.
- В Telegram-каналах с фишингом и псевдорозыгрышами часто указывают адрес, куда якобы нужно перевести крипту, чтобы «получить обратно в десять раз больше».
- На Pastebin и в слитых логах часто публикуют кошельки, которые используют в скам‑схемах.
- На даркнет‑площадках адреса размещают на страницах оплаты. Иногда они обновляются автоматически, но шаблоны остаются прежними, и по ним можно идентифицировать площадку.
- В базах данных адреса появляются после парсинга и агрегации. Примеры: WalletExplorer, Chainalysis, Crystal Blockchain. Эти сервисы строят профили адресов, отмечают связи с биржами и другими сервисами, а затем классифицируют их: биржа, миксер, скам, хак, даркмаркет и так далее.
Парсинг
Самый простой вариант — поиск по шаблонам. Сначала система определяет, к какой сети относится адрес: у каждой сети свой формат. Для такой проверки подходят регулярные выражения.Вот пример скрипта на Python, который ищет такие адреса:
import re
from eth_utils import to_checksum_address
ETH = re.compile(r'\b0x[a-fA-F0-9]{40}\b')
BTC = re.compile(r'\b[13][a-km-zA-HJ-NP-Z1-9]{25,34}\b')
BC1 = re.compile(r'\bbc1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39,59}\b')
def is_valid_eth(addr):
if not re.fullmatch(r'0x[a-fA-F0-9]{40}', addr):
return False
try:
return to_checksum_address(addr.lower()) == addr
except:
return False
def find_addresses(text):
found = []
for m in ETH.findall(text):
found.append({
"network": "Ethereum",
"address": m,
"type": "EOA" if is_valid_eth(m) else "EOA (invalid checksum)"
})
for m in BTC.findall(text):
found.append({"network": "Bitcoin", "address": m, "type": "Legacy"})
for m in BC1.findall(text):
found.append({"network": "Bitcoin", "address": m, "type": "Bech32"})
return found
text = "Отправь 0.01 ETH на 0xDD82d93d5da1f7DC89bf3A7f9dE33d2C2F093F5A"
print(find_addresses(text))
Но одного совпадения мало — адрес нужно проверить. Например, адрес биткоина содержит контрольную сумму. У Ethereum ее нет в привычном виде, зато есть правила регистра символов (EIP-55). После извлечения адреса важен контекст: где его нашли — в коде, логе или сообщении? Это было публичное сообщение или слитая база? Адрес принадлежит кошельку, бирже, хакеру или обычному пользователю? Если ты достаешь адреса из блокчейна, важно построить граф транзакций. Так можно понять, откуда пришли средства и куда ушли дальше.
Многие адреса можно объединять в кластеры — например, если они встречаются во входах одной транзакции или связаны цепочкой последовательных переводов. Если два адреса используются как входы в одной транзакции в сети Bitcoin, скорее всего, ими управляет один пользователь. Этот подход называется multi-input heuristic.
Похожая история со сдачей: если после отправки остается сдача, новый адрес для нее часто тоже контролирует тот же пользователь. Такие паттерны легко автоматизировать. Отдельная тема — графовая аналитика: адреса в ней становятся вершинами, а транзакции — ребрами. Так можно искать короткие пути между адресами, анализировать объемы, применять PageRank и кластеризацию.
Методы сбора
На практике адреса не собирают вручную. Обычно используют такие подходы:- Скрепинг — простой скрипт на Python с Beautiful Soup или Scrapy плюс регулярки.
- Парсеры логов для исследования слитых баз и дампов ботов.
- Сервисы с API для сбора данных, например BlockCypher и Etherscan, позволяют загружать транзакции, указав адрес.
- Готовые платформы вроде Chainalysis Reactor строят графы, фильтруют данные, добавляют атрибуты и проверяют связи.
- Для расследований используют Maltego, GraphSense и Elliptic Navigator — они помогают проводить форензику визуально. Еще есть множество самописных фреймворков. В корпоративной среде часто применяют связку PostgreSQL, Python и Redis для кеширования: так быстрее обрабатывать потоки новых транзакций и обновлять состояние адресов в системе.
Утилиты
На практике используют не только библиотеки и API, но и готовые тулзы. Ниже — разбор нескольких популярных утилит и систем, которые находят и анализируют криптовалютные адреса.BlockSci
BlockSci — библиотека и анализатор блокчейна Bitcoin и его форков. Она позволяет работать напрямую с локальным дампом блокчейна.Пример использования:
import blocksci
chain = blocksci.Blockchain("/path/to/bitcoin-data")
wallet = chain.address_from_string("1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY")
print(wallet.total_received())
Плюсы BlockSci — высокая скорость за счет хранения данных в памяти, удобный API и кластеризация адресов. Например, при анализе транзакций кошелька, связанного с WannaCry, с помощью BlockSci можно быстро построить граф переводов. Так ты можешь отследить путь денег до обменника, где их обменяли на Monero.
GraphSense
GraphSense — платформа для визуального анализа и построения связей между адресами. Ее фишка — агрегированная графовая модель и кластеризация адресов и сущностей. В командной строке есть утилиты для импорта, обработки и поиска. Ты можешь писать SQL-запросы к базе адресов и искать цепочки транзакций.Пример:
SELECT *
FROM tx
WHERE amount > 100000000
AND currency = 'BTC';
GraphSense активно использовали в операции Alice. Ее проводила баварская прокуратура вместе с австрийскими исследователями и IKNAIO. Следователи изучали большую сеть мошеннических сайтов в даркнете, где продавался нелегальный контент и краденые данные. Все платежи принимали только в биткоине. С помощью GraphSense аналитики построили граф всех транзакций, кластеризовали адреса и выяснили, что десятки тысяч вроде бы разных сайтов на самом деле контролировал один оператор. В марте 2026 года силовики провели масштабную операцию: сайты заблокировали, а на владельца выдали международный ордер на арест.
Chainalysis
Chainalysis — не утилита в привычном смысле, а закрытая коммерческая платформа. Она дает API и визуальные инструменты для отслеживания транзакций, построения связей и оценки риска адресов. Ее активно используют правоохранители. Например, в 2020 году с ее помощью удалось отследить переводы с биткоин‑кошельков, связанных с группировкой Lazarus из КНДР. Эти сведения вошли в обвинительное заключение Минюста США.Maltego и криптоплагины
Maltego — универсальный инструмент для визуального анализа. Его изначально создавали для расследований по OSINT, но через плагины к нему можно подключать данные блокчейнов. Плагин CipherTrace (сейчас входит в Mastercard) умеет запускать трансформации для адреса: показать владельца, биржу, связанный IP-адрес, если он есть, и категорию риска.Пример сценария:
- в даркнете нашли биткоин‑адрес;
- Maltego показал, что адрес принадлежит известному миксеру;
- дальше отслеживаются входы и выходы, а через три транзакции фиксируется связь с обменником;
- запрос к бирже помогает узнать владельца
WalletExplorer
WalletExplorer — публичный сервис, который создал Алеш Теска (Aleš Teska). У сервиса нет полноценного API, зато он показывает кластеры адресов. Например, можно ввести биткоин‑адрес и узнать, к какому кластеру он относится и сколько транзакций с ним связано. WalletExplorer часто используют как первый шаг при классификации адреса. Например, если кошелек помечен как Binance hot wallet, сразу понятно, что копать глубже не нужно: это централизованный сервис.Боты и утилиты в Telegram
В закрытых сообществах используют самописные инструменты, которые вытаскивают адреса из баз данных или постов. Например, бот, подключенный к поисковику по слитым базам SQL: он ищет адреса, связанные с email или username, и показывает совпадения. Еще встречаются сканеры групп и каналов в Telegram — такие инструменты автоматически извлекают адреса из сообщений. Такие сканеры можно связать с системами оценки рисков, например Crystal или AMLBot, чтобы в реальном времени отслеживать упоминания скомпрометированных адресов.Примеры расследований
Кейс 1: утечка базы MyEtherWallet
В 2018 году хакеры получили доступ к DNS-серверам, которые перенаправляли пользователей на фишинговую копию кошелька. Жертвы вводили приватные ключи, и средства моментально уходили на конкретный адрес Ethereum. Безопасники заметили первые переводы и начали отслеживание. Через Etherscan и собственный блокчейн‑индекс они выяснили, что адрес получателя уже участвовал в других атаках. Все средства быстро переводили на обычные адреса, а затем прогоняли через обменники или другие методы обфускации. Структура адреса и его повторное использование помогли связать атаку с группой, уже известной по предыдущим кейсам.Кейс 2: Lazarus Group и миксеры
Группировка Lazarus активно использует миксеры и цепочки транзакций. Один анализ выявил, что за сутки средства прошли через 18 адресов и каждый использовали только раз. Кластеризация показала, что все адреса создали с одного узла, а их временные метки совпадали. После перевода в Monero отследить средства дальше уже не получается, но цепочка до конвертации помогает определить входящие адреса. Часть из них потом всплыла на централизованных биржах.Кейс 3: фейковые эйрдропы в Telegram
В 2021 году через Telegram-каналы активно распространяли фейковые раздачи токенов. В каждом сообщении указывали один и тот же Ethereum-адрес, на который предлагали отправить 0,01 ETH «для верификации». Скрипт сканировал более 500 каналов и групп, искал строки с 0x и сверял их с базой. Адрес совпал с тем, что в базах Crystal уже был помечен как мошеннический. За три месяца на него поступило больше 30 ETH более чем с 2000 уникальных адресов. Все средства уходили на централизованную биржу без микширования, и это помогло через регулятора получить ордер на раскрытие данных.Юридические аспекты и этические ограничения
Сам по себе поиск криптовалютных адресов не нарушает закон, если ты работаешь с публичными данными. Но как только начинаешь сопоставлять адреса с людьми, организациями или предполагаемыми преступлениями, включаются правила — национальные законы, GDPR, требования финансового надзора и условия использования платформ и сервисов.В ЕС и Великобритании, например, действуют строгие правила работы с персональными данными. Если идентификация идет автоматически, например по хешам email-адресов в связке с криптовалютными адресами, это могут счесть обработкой PII — персонально идентифицируемой информации.
Для правоохранительных органов или сертифицированных аналитиков такие действия допустимы в рамках расследования. А вот частным компаниям и исследователям стоит избегать прямых привязок без достаточных оснований.
Например, если сервис приписывает конкретному человеку криптовалютный адрес на основе анализа транзакций и утечки email-адресов, это могут счесть деанонимизацией. Если анализ строится на утекших базах, отдельно возникает вопрос, законно ли их использовать. Публичный доступ к базе не освобождает от ответственности.
Есть и этическая сторона: при ошибочной идентификации адрес может попасть в «черный список», а это грозит блокировками на биржах, отказом в операциях и заморозкой активов.
Ошибки идентификации и ложные срабатывания
Автоматический поиск криптовалютных адресов в текстах, логах и сообщениях всегда может ошибаться. Вот частые причины ложных срабатываний:- Сходство с форматом. Некоторые строки могут случайно совпадать с шаблоном адреса. Например, 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef подходит под адрес Ethereum по длине и префиксу, но в коде такую строку часто используют как заглушку.
- Неправильная сеть. Один и тот же адрес может существовать в разных сетях, особенно в EVM-сетях. Например, адрес для USDT может относиться к Ethereum, TRON или Omni Layer, а видимые строки выглядят одинаково или очень похоже.
- Повторное использование адреса. Иногда один и тот же адрес используют много клиентов — такое бывает у централизованных кошельков или даркнет‑сервисов. По такому адресу не получится точно привязать конкретного человека.
- Неправильная кластеризация. Если аналитик неправильно применит multi-input heuristic, он может объединить в один кластер адреса разных пользователей. Такое бывает, например, с CoinJoin или PayJoin.
- Намеренная дезинформация. В даркнете иногда размещают адреса известных бирж вроде Binance и Kraken рядом с мошенническими схемами, чтобы сбить с толку аналитические системы. Так создают ложное ощущение, что адрес связан со скамом, хотя он просто оказался рядом.
Применение в AML и комплаенсе
В комплаенсе поиск адресов и их проверка — часть обязательных процедур KYC («знай своего клиента») и AML («противодействие отмыванию денег»).Крупные биржи, платежные сервисы и кастодиальные кошельки должны удостовериться, что адрес не включен в санкционные списки OFAC, FATF и ООН и не связан с хакерскими группами или администраторами даркнет‑ресурсов, проверить происхождение средств (chain tracing) и оценить риск (рейтинг адреса или кластера).
Это работает примерно так:
- Пользователь пытается пополнить счет и указывает внешний адрес.
- Система анализирует данные: сверяет их с базами данных, моделями поведения и историей транзакций.
- Если адрес получает метку «высокий риск», транзакцию замораживают.
- У пользователя могут запросить подтверждение источника средств.
Автоматизировать такие проверки помогают платформы:
- Crystal Blockchain — API и визуальные отчеты;
- Elliptic — показывает оценку риска в баллах и объясняет связь с категориями нарушений;
- Scorechain — поддерживает проверки в разных блокчейн‑сетях;
- CipherTrace — интеграция с платежными шлюзами.
Поиск криптовалютных адресов — это обычно не просто регулярка, а целый стек технологий: от регулярных выражений до графовых моделей, от утилит командной строки до закрытых API, от простого парсинга до поведенческого анализа. Такой поиск нужен не только для технического мониторинга: он помогает в безопасности, финансах и праве, пригодится для анализа угроз, расследований, аудита и прозрачности транзакций. Но важно помнить об ограничениях.
Адрес сам по себе — только начало цепочки. Чтобы понять, кто за ним стоит, нужны данные, контекст и осторожность в выводах. Ошибки здесь стоят дорого.
С каждым годом базы растут, инструменты становятся точнее, а блокчейн — прозрачнее.