Атака АРА. Детальный разбор и методы защиты

13.12.2022
21 мин
3008
0
Атака АРА. Детальный разбор и методы защиты. Заглавный коллаж статьи.

В последние недели участились «атаки отравления» АРА (Address Poisoning Attack) с переводами $0 USD. По данным на 2 декабря в сети «отравлены» свыше 340 тыс. адресов. Всего мы имеем 99 адресов жертв и свыше $1,64 млн украденных средств.

В этой статье X-explore дает всесторонний анализ таких атак, отслеживает злоумышленников ончейн, а также показывает подробную схему реализации АРА.

Хотелось бы, чтобы приложения-кошельки активизировали такие оповещения о рисках. А обычные пользователи были в курсе подобных угроз при переводе крипты.

Перевод статьи от x-explore.eth

История

Недавно наш ончейн-мониторинг рисков показал, что в сетях ETH и BSC часто бывают переводы по $0 USD. Мы взяли данные транзакций BSC-chain в качестве примера, чтобы показать, как это происходит. 

Жертва A делает обычную транзакцию по переводу 452 BSC-USD Пользователю B. Но Пользователь B получет 0 BSC-USD от Атакующего C. В это же время, в той же транзакции хеша сам Пользователь A по ошибке переводит 0 BSC- USD на адрес Aтакующего C (реализация операции перевода 0 BSC-USD «туда-обратно»):

Пример атаки APA

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

Скрины сообщений про атаку

Цели атаки

На самом деле пользователям, которые столкнулись с такой ситуацией, не нужно нервничать. Их активы в безопасности, приватный ключ не взломан. Нужно только внимательно подтвердить адрес и не передавать неверный адрес. Методы хакера очень просты:

  1. Он отслеживает информацию о переводе нескольких стейблкоинов ончейн. Например, он перехватывает информацию о переводе, который адрес Жертвы А часто отправляет Пользователю В.
  2. Далее создает хакерский Адрес C с теми же первыми и последними цифрами, что и адрес пользователя B. Затем жертва A и хакерский адрес C передают друг другу 0 монет. (Здесь злоумышленник может использовать инструмент генерации чисел Profanity, чтобы за несколько секунд сгенерировать адрес с теми же первыми и последними 7 цифрами, что и адрес пользователя).
  3. В следующий раз, когда Жертва А невнимательно копирует адрес исторической транзакции, очень легко скопировать именно Адрес С, подготовленный хакером для уловки. Таким образом средства переводятся на неправильный счет.
Адрес пользователя

Жертвы переводят деньги на нормальные адреса:

Адрес злоумышленника

Хакерские адреса с переводами $0:

Хакерский адрес с переводами

Жертвы переводят деньги на хакерские адреса

Вот наши выводы по поводу атаки «address poisoning attack»:

  1. Во-первых, хакер делает так, чтобы его адрес отображался в истории транзакций пользователя. Цель — чтобы пользователя не досмотрел и принял его за доверенный контакт. То есть адрес, которому часто отправляет деньги.
  2. Во-вторых, хакер создает адрес, совпадающий с доверенным адресом по первым и последним цифрам. По ошибке его может использовать жертва для следующей транзакции.

Пользователи рискуют потерять капитал, так что будьте начеку!

Тенденции

На 2 декабря зафиксировано большое количество таких атак: 290 000 в сети BSC и 40 000 в сети Ethereum. А количество независимых адресов, затронутых атаками, превысило 150 000 и 36 000 соответственно.

С точки зрения трендов, сеть BSC начала подвергаться атакам с 22 ноября, а сеть ETH — с 27 ноября. При этом масштабы атак в обеих блокчейнах усиливаются.

Также мы видим, что атаки имеют некую регулярность по времени. Их объем значительно уменьшается ежедневно в период между 17:00 UTC и 0:00 UTC. Так что подозреваемые злоумышленники, скорее всего, живут в азиатском часовом поясе.

Объем атак

По состоянию на 2 декабря жертвами скама стали 94 уникальных адреса. Они потеряли средства на общую сумму $1 640 000. Мы прогнозируем, что аппетиты злоумышленников будут только расти. В ближайшем будущем все большее пользователей начнут подвергаться такому мошенничеству. 

К-во пострадавших

Также мы проанализировали стоимость атаки злоумышленника. Общая сумма сейчас близка к $26 000 (46 BNB + 10 ETH). При этом злоумышленник предпочитает BSC-USD и USDT – скорее всего, из-за большого оборота и популярности этих стейблкоинов.

Стоимость атаки

Отслеживание преступника

Мы отслеживаем одного из мошенников, который орудовал на двух крупных централизованных биржах. Полный процесс показан на рисунке ниже.

  1. Адрес источника его средств для атаки связан с аккаунтом OKX.com.  Злоумышленник сначала переводит эти монеты из сети TRON в сеть BSC, используя кроссчейн-мост Transit.Finance.
  2. Украденные средства в конечном итоге уходят на Huobi.com. Тут злоумышленник снова использует мост Transit.Finance для перевода в сеть TRON.
Цепочка действий при атаке

Давайте пойдем дальше и проследим поток украденных средств до источника:

  1. Адрес жертвы: 0xe17c2b2b40574d229a251fe3776e6da2cc46aa5e 
  2. Он передает 1300 монет на адрес злоумышленника: 0x720c1cfe1bfc38b3b21c20961262ad1e095a6867 (Перевод был двумя частями).
  3. Далее злоумышленник вносит средства на этот адрес: 0x89e692c1b31e7f03b7b9cbb1c7ab7872ddeadd49.
Последовательность действий злоумышленника
  1. Злоумышленник выполнил кроссчейн перевод средств по адресу: 0x89e692c1b31e7f03b7b9cbb1c7ab7872ddeadd49. В этот хэш: 0x72905bd839f682f795946d285500143ee7606e9690df2ad32968e878ad290d9f
  2. В транзакции, как показано ниже, он передает 10561 USDT через контракт Transit.Finance: 0xb45a2dda996c32e93b8c47098e90ed0e7ab18e39
  3. В журналах событий этой транзакции видно, что монеты USDT ушли в сеть TRON. Вот этот адрес: TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD
    • Он соответствует хешу транзакции в сети TRON: 716507136ad28717ffd5f2f437af753ff96d344d2bcbe83f24d801db49f5a884.
Хеш транзакции в сети TRON
  1. В конце концов злоумышленник добавил адрес TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD в биржу Huobi. Адреса депозитов для пополнения: TPtzsrCAG61QMwig3jZV8Px7Rd1WZVnRXG, TDp7r3S1hJeiNfH1CvCVXeY8notY47nagJ:
Злоумышленник добавил адрес в биржу Huobi

Анализ принципа атаки

Случай атаки 1:

EOA: 0xBAA1451bE8C33998CD43F375c2e67E79c1a104AD

CA: 0x7ceBeb6035B231A73CB5Fb4119c2FbBC04Ec6fD1

Случай атаки 2:

EOA: 0x616384a80f32aDb65243522971aE2ba7664B62E3

CA: 0x6f00Ed594A6AceEf0E1A6FE023Ecd5Eb96c8665a

Пример атаки

Хакер контролирует разные адреса и переводит 0 BSC-USD на адреса жертв в пакетном режиме через контракты.

Атаки на Binance Smart Chain в основном охватывают такие токены: BSC-USD, BUSD, USDC, ETH и т. д. Большинство таких атак осуществляются через пакетный файл, который запускает команду transferFrom() по контракту атаки. Но бывают и случаи ручного запуска функции transfer(). Принцип в основном один и тот же. Ниже мы видим пример контракта на атаку с BSC-USD.

transferFrom()

В транзакции, где злоумышленник использует такие скрипты, контракт атаки вызывает только функцию transferFrom() BSC-USD. После заполнения параметров отправителя, получателя и суммы, хакер может запустить переводы 0 USD между любыми адресами. И в то же время генерировать команды AuthorizeApproval() и TransferTransfer().

Phalcon Blockchain Transaction Explorer

Binance Smart Chain transaction hash parse for txhash 0x825a3281e1897239c01797e590d3d62c1f9ab4c323bd8484c142541ac77ad73e

phalcon.blocksec.com

Скрипт transferFrom()

Информации о транзакциях из блокчейн-браузера Blocksec phalcon

Исходный код контракта BSC-USD показывает, что функция transferFrom() последовательно вызывает функции _transfer() и _approve():

Информации о транзакциях из блокчейн-браузера Blocksec phalcon

Опция _transfer() имеет простую функцию. Во-первых, она исключает все нулевые адреса из транзакции. Затем вычитает деньги для отправителя и добавляет деньги для получателя. И, наконец, записывает событие перевода. Используемые здесь функции сложения и вычитания add()/sub() — это библиотека SafeMath, созданная в коллекции смарт-контрактов OpenZeppelin. При переполнении она сообщит об ошибке возврата:

Информации о транзакциях из блокчейн-браузера Blocksec phalcon

Функция _approve() также исключает полный нулевой адрес и меняет значение авторизации. Основное внимание в этой функции уделяется вычислению параметра вызова transferFrom для утверждения. Он использует такой скрипт:

 _allowances[sender][_msgSender()].sub(amount, “BEP20: transfer amount exceeds allowance”)

Данный скрипт вычитает количество существующих токенов авторизации из передачи. Оставшаяся сумма авторизации помещается в утверждение и повторно авторизуется. Используемая здесь функция вычитания sub() представляет собой тоже библиотеку SafeMath от коллекции смарт-контрактов OpenZeppelin.  При переполнении она сообщает об ошибке возврата. Однако, если параметр суммы всего процесса равен нулю, никакой механизм обнаружения не может отклонить транзакцию. Это также приводит к большому количеству нулевых переводов ончейн, которые могут быть отправлены в обычном режиме. Хакеру нужно только заплатить комиссию, чтобы получить солидный доход.

Информации о транзакциях из блокчейн-браузера Blocksec phalcon

transfer()

Вызов функции transfer() имеет такой же принцип действия, как описан выше. Только весь процесс добавляет или вычитает обнаружение переполнения. Тут нет фильтрации нулевых переводов:

Вызов функции transfer()

BNB

В процессе трассировки (отслеживания) токен-атаки мы также нашли первую и последнюю идентичные фишинговые атаки через перевод 0 BNB. Принцип тут аналогичен токен-фишингу: хакер строит первый и последний идентичные адресов для фишинга.

Транзакции с атакой:

https://bscscan.com/tx/0x5ae6a7b8e3ee1f342153c1992ef9170788e024c4142941590857d773c63ceeb3

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

Обычный адрес пользователя: 

0x69c b60065ddd0197e0837fac61f8de8e186c 2a73

Адрес хакера: 

0x69c 22da7a26a322ace4098cba637b39fa0a4 2a73

Атака с BNB

Выводы

Сейчас команда X-explore обеспечивает онлайн-мониторинг таких атак в режиме реального времени. Чтобы избежать дальнейших угроз, мы рекомендуем:

  • Установить приложение, которое помогает пользователям различать адреса по цвету или другим подсказкам. 
  • Пользователи должны тщательно перепроверять исторические адреса транзакций при переводе средств.
  • Желательно вести отдельные записи с адресами где-то на отдельных документах. Это не очень удобно, зато надежно.

Берегите свои финансы и не забывайте читать наши свежие обучающие материалы.

Как вам статья?

0
0

статьи на эту же тему

Где хранить криптовалюту в 2024...
avatar Anastasia Mirza
27.02.2024
Что такое браузер Tor: чем он интересен...
avatar Ivan Pavlovskyy
19.12.2023
Ledger Nano X. Детальный обзор кошелька: где...
avatar Ilya Surgan
21.11.2022