Reverse shell что это

Reverse-shell или Бэкконнект

Привет друзья, сегодня я Вам поведаю о такой простой но ужасной вещи, как Реверс шелл или в простонародье Бэкконнект.

Reverse Shell (или Reverse TCP, или connect-back, или обратное подключение) — это схема взаимодействия с удалённым компьютером. При её использовании нужно, чтобы атакующий сначала запустил на своей машине сервер, при этом целевая машина будет играть роль клиента, который подключается к этому серверу, после чего атакующий получает доступ к оболочке целевого компьютера.

Reverse shell что это. netcat reverse shell. Reverse shell что это фото. Reverse shell что это-netcat reverse shell. картинка Reverse shell что это. картинка netcat reverse shell

Перед началом, хочу обратить Ваше внимание на наш Дисклеймер: Данная статья написана только в образовательных целях и автор не несёт ответственности за ваши действия. Ни в коем случае не призываем читателей на совершение противозаконных действий.

Ниже примеры 3 легко запоминающихся шага, которые должны работать на большинстве Unix-подобных систем. Обнаруживает доступное программное обеспечение на цели и запускает соответствующую полезную нагрузку.

Пользуйтесь своим устройством или виртуальной машиной. В данном конкретном случае мы будем пользоваться сервисом shell.now.sh как посредником между нами и жертвой, итак Погали

Netcat И shell.now.sh

1. Откройте прослушивание портов с помощью netcat

2. На целевой машине перейдите по ссылке и тем самым перенаправьте вывод на https://shell.now.sh/ip:port

Поскольку это обратное соединение, оно может пробивать брандмауэры и подключаться к Интернету только если эти порты у Вас открыты в обе стороны.

Мы так же можем ходить на свой домен (evil.com) который лежит на хостинге с открытым портом и получать реверс.

По умолчанию при выходе из оболочки вы теряете соединение. Вы можете сделать это случайно или по запаре неверной командой (чаще из-за работы в текстовых редакторах vi и nano при нажатии ctrl+c). Но Вы можете легко создать оболочку, которая попытается восстановить соединение, поместив ее в цикл while.

Reverse shell что это. . Reverse shell что это фото. Reverse shell что это-. картинка Reverse shell что это. картинка

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

Если у вас установлена ​​неправильная версия netcat которая не поддерживает некоторые параметры, Джефф Прайс указывает здесь, что вы все равно сможете вернуть обратно свою оболочку, например так:

Расмотрим и другие варианты исполнения, подробно разъяснять не вижу смысла, первого примера думаю должно быть достаточно чтобы понять что она делает.

Bash TCP

А этот пример, на мой взгляд самый опасный т.к. по сути кроме интерпретатора bash(sh,ksh,zsh,etc…) не требует никакого дополнительного софта, а нужен только доступ к подсистеме dev

Bash UDP

Также как и Python, почти во всех современных дистрибутивах Linux присутствует в системе Perl

Python

В современных дистрибутивах Python присутствует почти всегда, и стандартных библиотек вполне хватит, чтобы совершить бэкконнект

Источник

Reverse shell на Python. Осваиваем навыки работы с сетью на Python на примере обратного шелла

Reverse shell что это. rs h. Reverse shell что это фото. Reverse shell что это-rs h. картинка Reverse shell что это. картинка rs h

Содержание статьи

Существует два низкоуровневых протокола, по которым передаются данные в компьютерных сетях, — это UDP (User Datagram Protocol) и TCP (Transmission Control Protocol). Работа с ними слегка различается, поэтому рассмотрим оба.

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

Важно здесь то, что UDP не гарантирует доставку пакета (правильнее говоря, датаграммы) указанному узлу, так как между отправителем и получателем не установлен канал связи. Ошибки и потери пакетов в сетях случаются сплошь и рядом, и это стоит учитывать (или в определенных случаях, наоборот, не стоит).

Протокол TCP тоже доставляет сообщения, но при этом гарантирует, что пакет долетит до получателя целым и невредимым.

Переходим к практике

Писать код мы будем на современном Python 3. Вместе с Python поставляется набор стандартных библиотек, из которого нам потребуется модуль socket. Подключаем его.

Дальше мы договоримся, что у нас есть сервер и клиент, где клиентом обычно будет наш компьютер, а сервером — удаленный. В реальности все это условности, и речь может идти о любых двух компьютерах (в том числе виртуальных машинах) или даже просто двух процессах, запущенных локально. Важно только то, что код по разные стороны будет разным.

На каждой из сторон первым делом создаем экземпляр класса socket и устанавливаем для него две константы (параметры).

Используем UDP

Сначала создадим место для обмена данными.

Сторона сервера

Далее код различается для стороны сервера и клиента. Рассмотрим сначала сторону сервера.

Здесь s.bind((‘127.0.0.1’, 8888)) означает, что мы резервируем на сервере (то есть на нашей же машине) адрес 127.0.0.1 и порт 8888. На нем мы будем слушать и принимать пакеты информации. Здесь стоят двойные скобки, так как методу bind() передается кортеж данных — в нашем случае состоящий из строки с адресом и номера порта.

Ну и наконец, вызов метода close() необходим, чтобы остановить прослушивание 8888-го порта и освободить его.

Таким образом, сторона сервера имеет следующий вид:

Сторона клиента

У метода есть два параметра. Первый — сообщение, которое ты отправляешь. Буква b перед текстом нужна, чтобы преобразовать символы текста в последовательность байтов. Второй параметр — кортеж, где указаны IP машины-получателя и порт, который принимает датаграмму.

Таким образом, сторона клиента будет выглядеть примерно так:

Тестируем

Для тестирования открываем две консоли, одна у нас будет работать сервером, другая — клиентом. В каждой запускаем соответствующую программу.

Reverse shell что это. 1 TnmDBoo. Reverse shell что это фото. Reverse shell что это-1 TnmDBoo. картинка Reverse shell что это. картинка 1 TnmDBoo Вывод на стороне сервера

На стороне клиента мы ничего увидеть не должны, и это логично, потому что мы ничего и не просили выводить.

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

Используем TCP

Сторона сервера

Снова резервируем порт, на котором будем принимать пакеты:

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

Страшновато? Начнем по порядку. Сначала мы создаем обработчик исключения KeyboardInterrupt (остановка работы программы с клавиатуры), чтобы сервер работал бесконечно, пока мы что-нибудь не нажмем.

Теперь посмотрим вот на эти три строчки:

В них мы останавливаем прослушивание и освобождаем порт, только если сами остановим работу программы. Если прерывания не произошло, то выполняется блок else :

Здесь мы сохраняем пользовательские данные в переменную result, а функцией print() выводим на экран сообщение, которое нам отправлял клиент (предварительно превратив байты в строку Unicode). В результате сторона сервера будет выглядеть примерно так:

Сторона клиента

Далее мы отправляем пакет данных получателю методом send() :

В конце останавливаем прослушивание и освобождаем порт:

Код клиента будет выглядеть примерно так:

Тестируем

Запустим в двух разных консолях код сервера и код клиента. На выходе мы должны получить примерно то же самое, что и с протоколом UDP.

Reverse shell что это. 2 u8DL2aH. Reverse shell что это фото. Reverse shell что это-2 u8DL2aH. картинка Reverse shell что это. картинка 2 u8DL2aH Вывод на стороне сервера

Успех! Поздравляю: теперь тебе открыты большие возможности. Как видишь, ничего страшного в работе с сетью нет. И конечно, не забываем, что раз мы эксперты в ИБ, то можем добавить шифрование в наш протокол.

В качестве следующего упражнения можешь попробовать, например, написать чат на несколько персон, как на скриншоте.

Reverse shell что это. 3 h4JjzFi. Reverse shell что это фото. Reverse shell что это-3 h4JjzFi. картинка Reverse shell что это. картинка 3 h4JjzFi Самодельный чат, вид со стороны сервера

Применяем знания на практике

Я дважды участвовал в InnoCTF, и работа с сокетами в Python очень пригождается при решении задач на взлом. По сути, все сводится к тому, чтобы очень много раз парсить поступающие данные с сервера InnoCTF и правильно их обрабатывать. Данные могут абсолютно любыми. Обычно это математические примеры, разные уравнения и прочее.

Для работы с сервером я использую следующий код.

Делаем полноценный reverse shell

От обучающих примеров переходим к реальной задаче — разработке обратного шелла, который позволит выполнять команды на захваченной удаленной машине.

Здесь метод call() вызывает (запускает) указанную программу.

Переходим к разработке шелла. В данном случае сторона сервера будет атакующей (то есть наш компьютер), а сторона клиента — атакованной машиной. Именно поэтому шелл называется обратным.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

О создании пэйлоадов для разных платформ с помощью msfvenom

«Голова — лучший антивирус», — эта идея никогда не потеряет актуальности. Для того, чтобы эффективно бороться с компьютерными угрозами, надо знать своих врагов. Среди таких врагов — программы, которые позволяют незаметно подключаться к компьютеру и выполнять с ним некие действия, проще говоря, софт для взлома систем. Полагаем, знание того, как создают подобный софт, хотя бы на базовом уровне, понимание того, как он работает, полезно любому, кого волнуют вопросы компьютерной безопасности. Кроме того, такой софт можно использовать для проверки защищённости собственных систем.

Reverse shell что это. 430af00b0d9216e5d3dec89d93a2bbde. Reverse shell что это фото. Reverse shell что это-430af00b0d9216e5d3dec89d93a2bbde. картинка Reverse shell что это. картинка 430af00b0d9216e5d3dec89d93a2bbde

Предварительные требования

Для того, чтобы попробовать то, о чём пойдёт речь, на практике, вам понадобится компьютер с установленной на нём Kali Linux, компьютеры под управлением Windows и Linux, Android-смартфон. В процессе работы, при составлении команд, мы будем пользоваться следующими ключами:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Организация Bind Shell-подключения

Bind shell — это схема взаимодействия с удалённой консолью, при которой на целевом компьютере запускается сервис, к которому может подключиться атакующий. Фактически, речь идёт о прямом подключении к атакуемому компьютеру. Для того, чтобы создать соответствующий пэйлоад для Windows, нужно выполнить следующую команду в терминале:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Теперь запустим msfconsole и введём нижеприведённые команды для того, чтобы открыть сессию:

После выполнения файла в нашем распоряжении окажется meterpreter-подключение к целевому компьютеру:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

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

Организация Reverse Shell-подключения

Reverse Shell (или Reverse TCP, или connect-back, или обратное подключение) — это схема взаимодействия с удалённым компьютером, обратная вышеописанной. При её использовании нужно, чтобы атакующий сначала запустил на своей машине сервер, при этом целевая машина будет играть роль клиента, который подключается к этому серверу, после чего атакующий получает доступ к оболочке целевого компьютера.

Для того, чтобы создать соответствующую полезную нагрузку, нужно ввести в терминале Kali следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

В данном случае мы включаем в команду некоторые новые параметры, такие, как lhost (локальный хост), lport (локальный порт) для того, чтобы принять обратное соединение от компьютера жертвы.

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

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Организация Reverse HTTPS-подключения

Обратите внимание на то, что обе вышеописанные атаки осуществимы в том случаем, если на машине жертвы имеются подходящие работающие порты. Сейчас мы попытаемся найти выход из ситуации, когда на интересующем нас компьютере порты заблокированы. В подобном случае можно сориентироваться в ситуации и создать пэйлоад, например, воспользовавшись портом 443 для HTTPS. Для этого нужно ввести в терминале Kali следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После создания пэйлоада и отправки его жертве, которая, как ожидается, рано или поздно запустит соответствующий файл, мы переходим к следующему шагу. Запускаем msfconsole и вводим следующие команды для организации подключения:

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

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Скрытое Bind Shell-подключение

Исследуем ещё одну возможность msfvenom и попытаемся с её помощью обрести контроль над удалённым компьютером. В этот раз мы хотим заполучить доступ к командной оболочке, а не к сессии meterpreter.

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

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После того, как файл готов и отправлен жертве, мы можем перейти к следующему шагу. А именно, воспользуемся Netcat, введя в терминале Kali следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Reverse Shell-подключение с помощью Netcat

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После создания файла и отправки его на атакуемый компьютер, создадим прослушиватель порта с использованием netcat :

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

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Пэйлоады-макросы на VBA

Создадим пэйлоад в виде VBA-скрипта, который будем использовать в качестве макроса MS Excel для атаки на целевую машину. Для того, чтобы это сделать, выполним следующую команду в терминале Kali:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После этого надо вставить в редакторе VBA ранее скопированный код пэйлоада, закрыть редактор и включить макросы.

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Когда Excel-файл будет открыт на интересующем нас компьютере, жертве будет предложено включить макросы. После их включения выполнится VBA-скрипт, который создаст обратное подключение к удалённому компьютеру. Выглядеть это будет так, как показано ниже.

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

VNC-пэйлоад

Хотя и неприлично, без ведома человека, наблюдать за тем, что он делает за компьютером, тот пэйлоад, который мы создадим сейчас, занимается именно этим. Откроем терминал Kali и введём следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После создания пэйлоада мы, как обычно, отправляем его жертве, после чего начинаем готовиться к подключению. Для этого вызываем в терминале команду msfconsole и делаем следующее:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Тут можно видеть, что выполнена VNC-инъекция, что установлено удалённое соединение. Так же на компьютере под управлением Kali откроется окно Remote Desktop.

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Пэйлоад для Android

Взлом мобильных устройств всегда привлекал к себе немалое внимание, поэтому рассмотрим методику создания пэйлоадов для платформы Android. Откроем терминал Kali и введём следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После подготовки apk-файла его нужно передать на интересующее нас мобильное устройство. Затем нужно подготовиться к подключению на Kali:

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

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Пэйлоад для Linux

Откроем терминал Kali и введём следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

После создания файла его нужно отправить на компьютер жертвы и подготовиться к подключению:

После выполнения пэйлоада будет создано обратное TCP-подключение к нашему компьютеру, которое предоставит в наше распоряжение сессию meterpreter.

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Пэйлоад для PowerShell

Для того, чтобы создать пэйлоад для PowerShell, откроем терминал Kali и введём следующую команду:

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

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

После запуска пэйлоад создаст обратное подключение к оболочке. Выглядит это так, как показано ниже.

Reverse shell что это. image loader. Reverse shell что это фото. Reverse shell что это-image loader. картинка Reverse shell что это. картинка image loader

Итоги

Как видите, с использованием msfvenom очень просто создавать программы, предназначенные для удалённого подключения к самым разным системам. То, что это доступно даже пользователям с минимальной подготовкой, придаёт особую актуальность правилу, которое знают все, но далеко не все соблюдают: «Не открывайте файлы, в происхождении которых сомневаетесь».

Уважаемые читатели! Известны ли вам случаи взлома систем с использованием пэйлоадов, похожих на те, о которых мы сегодня говорили?

Источник

Reverse shell с помощью Netcat

Эти шеллы разделают на два вида:

Shell
Reverse Shell (обратный шелл)

Они различаются особенностями подключения. Первый (прямой) — просто Shell — когда бэкдор прослушивает порт на удалённом компьютере в ожидании, когда на этот порт придёт подключение.
Второй (обратный) — Reverse Shell означает, что с удалённого компьютера делается запрос на машину атакующего, на которой, в свою очередь, уже запущена программа для управления бэкдором — которая также ожидает подключения от компьютера «жертвы».
Оба они имеют разные случаи использования. Прямой шелл используется если у компьютера жертвы белый IP адрес (без использования NAT). Обратный шелл используется, если удалённый компьютер находится за NAT (имеет только локальный IP адрес), либо если файервол блокирует входящие соединения — большинство файерволов настроены пропускать исходящие соединения.
В качестве бэкдоров и программ для создания шэллов могут использоваться разные инструменты, здесь я покажу как создать шелл используя легитимную программу Netcat или Ncat, которые по умолчанию установлены на многих компьютерах Linux и серверах.

Bind shell — это схема взаимодействия с удалённой консолью, при которой на целевом компьютере запускается сервис, к которому может подключиться атакующий. Фактически, речь идёт о прямом подключении к атакуемому компьютеру. Для того, чтобы создать соответствующий пэйлоад для Windows, нужно выполнить следующую команду в терминале:

В результате будет создан exe-файл, который будет сохранён по адресу, указанному при выполнении команды, а именно — это /root/Desktop/bind.exe. Полученный файл нужно каким-то образом доставить на компьютер жертвы и выполнить его. Например — воспользоваться методами социальной инженерии или выложить его на сервис обмена файлами.
Теперь запустим msfconsole и введём нижеприведённые команды для того, чтобы открыть сессию:

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/bind_tcp
msf exploit(handler) > set rhost IP 192.168.0.100
msf exploit(handler) > set lport 4444
msf exploit(handler) > exploit

После выполнения файла в нашем распоряжении окажется meterpreter-подключение к целевому компьютеру.
Использованная здесь опция bind_tcp полезна в тех случаях, когда мы отключаемся от компьютера жертвы, но он при этом ещё работает. Мы можем выполнить ту же команду и подключиться снова, при этом не нужно, чтобы эксплойт снова запускали на удалённом компьютере.

Netcat – это утилита Unix, которая позволяет устанавливать соединения TCP и UDP, получать оттуда данные и передавать их.
Несмотря на ее полезность и простоту, многие не умеют им пользоваться и незаслуженно обходят ее стороной.
С помощью этой утилиты вы можете выполнить некоторые из этапов тестирования на проникновение.
Это может быть полезно, когда на атакованной машине нет установленных пакетов (или привлечет внимание), есть ограничения (например, IoT/Embedded устройства) и т. д.

Что можно сделать с помощью netcat:

Сканировать порты;
Форвардить порты;
Собирать баннеры сервисов;
Смотреть прослушиваемые порты (привязка для обратного подключения);
Скачивать и выгружать файлы;
Выводить необработанный HTTP-контент;
Создать мини-чат.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *