Вопрос или проблема
Учитывая информацию: У меня есть доступ root к машине по ip 1.1.1.1 и открыт порт 22.
Вместо того, чтобы снова входить в систему через эксплойт для получения доступа root И не устанавливать приложения на их машине (если я создам обратный шелл на машине, его могут обнаружить), я решил попробовать новый подход: портовое перенаправление и прокси-цепочки.
Идея, которая у меня возникла, заключалась в том, чтобы установить туннель к веб-серверу и просто передавать информацию, чтобы начать картографировать внутреннюю сеть. Я наткнулся на proxychains, что так же просто, как настроить порт, скажем 8080, в конфигурационном файле, а затем выполнять команды: proxychains ifconfig
и затем proxychains nmap --script=discovery $ip
Кажется, нужно сделать какую-то конфигурацию, прежде чем вы сможете использовать Proxy chains, и вот здесь я думаю почему?. Я приложу ниже.
Итак, во-первых, как root на веб-сервере, я открою порт 22 и создам пользователя с правами администратора, скажем jakefromstatefarm.
Затем я сделаю следующее с моего атакующего компьютера:
ssh -f -N -R 2222:127.0.0.1:22 [email protected]
# Введите пароль для jakefromstatefarm
ssh -f -N -D 127.0.0.1:8080 -p 2222 [email protected]
# Введите пароль для atkMachineUser
Теперь я буду использовать proxychains на порту 8080, редактируя конфигурационный файл
proxychains ifconfig
Мой вопрос, который меня смущает, в том, почему мы должны устанавливать эти наборы туннелей заранее? Это связано с необходимыми учетными данными пользователя для общения с различными машинами? Таким образом, машина будет сохранять учетные данные, и с этого момента proxychains не нужно будет ничего поддерживать?
Я был смущен, потому что не понимал, почему я не мог теоретически настроить proxychains для использования порта 22, чтобы напрямую общаться с веб-сервером на 1.1.1.1 и выполнять соответствующие команды.
Я пытаюсь убедиться, что правильно понимаю SSH-туннелирование.
Я прочитал множество информации, вики-страниц и книг, и хотя я смутно понимаю некоторые концепции, у меня еще нет теплого и уютного чувства. Тем не менее, я был бы рад, если бы кто-то мог объяснить это мне, как будто мне 5 лет, или, ну, с меньшим количеством сложных слов.
Объяснение SSH
Возможно, кто-то может вмешаться, если я неправильно понял, но вот как я это понял.
Вы создаете слушающий порт на удаленном хосте и перенаправляете его локально. Это исключает вашу машину из уравнения по решению, куда должен быть направлен трафик, поэтому вам не нужно настраивать маршруты после этого. Таким образом, удаленный хост принимает решение на основе полученного трафика о том, куда его отправить.
proxychains отправляет трафик на 8080 -> Отправка трафика на слушающий порт 2222 на удаленной жертве, который затем возвращается к циклическому 22 на этом хосте. Теперь этот хост контролирует, куда идет трафик. Поэтому вам нужно следовать этому пути.
Использование этого метода оставляет ответственность за маршрутизацию на жертве, что и есть смысл поворота.
[АТАКУЮЩИЙ]8080 <–> 2222[ЖЕРТВА]<–>22[ЖЕРТВА:]
Если пропустить первый шаг, ваша машина в конечном итоге решит, какой маршрут выбрать, и даст вам нежелательные результаты, отправляя трафик по любому сетевому маршруту, который она может получить для этого… обычно маршрутизируя через вашу сеть ISP или какой-то публичный сервер, вместо сегментированной сети с другой стороны хоста.
[АТАКУЮЩИЙ]8080 <–> 22[ЖЕРТВА:]
Ответ или решение
Изучение SSH-туннелирования и использования ProxyChains — это важный аспект для понимания сетевой безопасности и управления трафиком в сложных сетевых архитектурах. Давайте подробно разберем, почему настройка туннелей и использование ProxyChains обязательны в вашем случае, чтобы понять этот процесс более глубоко.
Что такое SSH Туннелирование?
SSH (Secure Shell) туннелирование позволяет создать защищённый канал связи между клиентом и сервером. Оно используется для передачи данных по незащищённым сетям, таких как интернет, шифруя весь обмен данными, что делает его невозможным для перехвата третьими лицами. При создании SSH-туннеля у вас есть возможность направлять трафик через удалённый сервер, что в вашем случае играет ключевую роль в дальнейшем взаимодействии с внутренними ресурсами сети.
Зачем нужно ProxyChains?
ProxyChains — это инструмент, который позволяет перенаправлять сетевые запросы через различные прокси-серверы (в данном случае через SSH-туннель). Он обеспечивает анонимность и может обойти некоторые ограничения сети. Назначение ProxyChains в вашей ситуации заключается в следующем:
-
Анонимность и безопасность: Используя ProxyChains, вы сможете скрыть свои действия от непосредственно наблюдаемых систем, идущих дальше по цепочке сети.
-
Управление маршрутами: Поскольку вы указали на необходимость маршрутизации через определённые порты и IP-адреса, ProxyChains позволяет настроить это более гибко, даже не вмешиваясь в сетевые настройки целевой машины.
Почему нужно настраивать туннели перед использованием ProxyChains?
-
Аутентификация и маршрутизация: Подключаясь по SSH и создавая туннели, вы получаете доступ к удаленной машине, а затем перенаправляете трафик через свой локальный порт. В вашем случае это выходит так: вы создаете соединение, которое позволяет вам использовать ресурсы на удаленной машине (например, чтобы выполнить команды и сканирование).
-
Контроль маршрута: Как вы уже отметили, создание SSH туннелей позволяет перенаправить ответственность за маршрутизацию на удаленную машину (в вашем случае на веб-сервер). Это означает, что когда вам нужно сделать запрос через ProxyChains на внутренний IP, запрос будет перенаправлен через созданный вами туннель, который контролирует удалённый сервер.
-
Избежание ограничений: Если бы вы просто использовали ProxyChains для обращения к веб-серверу по порту 22 без предварительной настройки туннелей, запросы могли бы быть блокированы или не достигли цели, так как они не будут обрабатывать требуемую аутентификацию и маршрутизацию.
Простое объяснение
Представьте, что ваш компьютер — это водопроводный кран, который открывает доступ к водопроводной системе (интернету). Если вы просто открываете кран, вода (ваши данные) может пойти куда угодно — например, к соседям. Но если вы создаёте специальный шланг (SSH-туннель) к конкретному месту (веб-серверу), а затем через этот шланг подаете воду в нужный бассейн (ProxyChains), вы контролируете, что произойдёт с вашими данными, и куда они будут направлены.
Заключение
Таким образом, перед использованием ProxyChains необходимо настроить туннели, чтобы обеспечить безопасный и контролируемый доступ к удалённым ресурсам. Вы получаете возможность аутентифицироваться на удаленной машине, направляя трафик и получая доступ к внутренней сети. Это упрощает процесс взаимодействия с сетью и помогает избежать проблем с маршрутизацией, что важно в ситуациях, требующих повышенной безопасности и конфиденциальности.