Взлом и защита Citrix

Взлом и защита Citrix

Citrix – это приложение удаленного рабочего стола (Remote Desktop), становящееся очень популярным. Он похож на Terminal Services у Microsoft. Но, в отличие от Terminal Services, Citrix позволяет администраторам задавать приложения, которые могут запускаться на сервере. Это позволяет контролировать, какие программы могут использовать конечные пользователи. Существует целая тема, посвященная безопасности Citrix приложений, вследствие смешения технологий Citrix и Microsoft. Серьезная угроза возникает при получении пользователями доступа не только к обычным программам, а и к удаленным рабочим столам. В этой статье будет рассказано, как работает Citrix, и какие недостатки существуют в способе, которым Citrix обрабатывает пользовательский доступ к программам.

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

Введение

Citrix – это приложение удаленного рабочего стола (Remote Desktop), становящееся очень популярным. Он похож на Terminal Services у Microsoft. Но, в отличие от Terminal Services, Citrix позволяет администраторам задавать приложения, которые могут запускаться на сервере. Это позволяет контролировать, какие программы могут использовать конечные пользователи. Существует целая тема, посвященная безопасности Citrix приложений, вследствие смешения технологий Citrix и Microsoft. Серьезная угроза возникает при получении пользователями доступа не только к обычным программам, а и к удаленным рабочим столам. Terminal Services у Microsoft используют RDP, в то время как Citrix использует ICA (Independent Computing Architecture).

В этой статье будет рассказано, как работает Citrix, и какие недостатки существуют в способе, которым Citrix обрабатывает пользовательский доступ к программам.

Как работает Citrix

Существует множество реализаций Citrix, они перечислены ниже.

Citrix MetaFrame

Citrix MetaFrame имеет три разновидности: XPs, XPa, и XPe. Каждая содержит свой набор приложений для администратора. XPs наиболее полная версия, содержит много инструментов для управления системой. В XPa и XPe их несколько меньше. В этой статье мы будет обсуждать XPe, но большинство из нее также применимо и к другим версиям. Сервер Citrix прослушивает по умолчанию порт 1494 и присоединение к нему производится с использованием Citrix ICA клиента, бесплатно доступного с http://www.citrix.com/.

Citrix NFuse / Citrix Secure Gateway

Citrix NFuse позволяет устанавливать соединение через веб-броузер. NFuse работает по умолчанию на IIS 5.0, но можно поставить его и на Apache. Все подключения могут происходить через SSL и 128-битное шифрование.

Стандартная установка с NFuse для удаленного доступа позволяет администраторам также использовать Citrix Secure Gateway. Если NFuse правильно сконфигурирован, удаленный пользователь не сможет напрямую получить доступ к Citrix-серверу. Вместо этого, все соединения фильтруются через сервер NFuse через соединение с Secure Gateway (см. диаграмму)

[user]--->[router]--->[firewall]
                      | |  |
                      | |  +-[DMZ]-->[Citrix NFuse Server]
                      | |    | |         [Citrix Secure Gateway]
                      | +----+ |              |
                      |        +--------------+
                      |
               [Citrix Server]
Теперь пользователь не имеет прямого соединения с Citrix сервером, а проходит через DMZ –> внутренняя сеть. В конфигурации стандартной установки NFuse (без Secure Gateway), пользователь сначала попадает на веб-сервер NFuse, затем, если опубликованное приложение определено, он напрямую подсоединяется к серверу Citrix. В этом и состоит проблема, пользователь по-прежнему может «напрямую» подключаться к серверу Citrix и, используя затем сканер опубликованных приложений, создать свой собственный список опубликованных приложений, а затем свой собственный .ica файл, содержащий информацию, которую он захочет. Это также означает, что если эта конфигурация используется для внешней сети, две уязвимости проходят через файрволл, одна на IIS сервер, и одна на Citrix. Вы можете просканировать 1494 порт, чтобы проверить это.

Citrix MetaFrame обычно имеет очень полезную консоль управления, которая позволяет администратору относительно просто создавать пользователей и публиковать приложения. Сеть Citrix без NFuse использует Independent Computing Architecture (.ICA) файлы, являющиеся текстовыми файлами, в которых содержатся все настройки конфигурации и установки. Эти файлы выдаются конечным пользователям, которые, после установки Citrix-клиентов, запускают файл и автоматически соединяются с сервером, указанном в .ica файле.

Если используется NFuse, тогда не требуются .ICA файлы. Пользователь открывает веб-броузер, заходит на веб-сервер NFuse и вводит свой доменный логин. После этого пользователь получает список приложений, которые он может использовать в Citrix Farm.

Проникновение на Citrix

Существует так много способов получения remote desktop на Citrix системе, что я не знаю, с чего и начать. Думаю, в первую очередь вы хотите получить удаленный доступ, так что начну с этого. Недавно Ian Vitek создал несколько очень полезных http://www.cqure.net/itools01.html., за что ему спасибо. Больше всего из них я использую Citrix published application scanner (сканер опубликованных приложений).

Эта утилита перечисляет все опубликованные приложения, которые разрешены на удаленном сервере. После получения списка опубликованных приложений, вы можете затем дополнить содержимое ICA файла информацией об опубликованных приложениях. Теперь вы можете предпринять попытку взлома логина грубой силой. Если вы обнаружите, что учетные записи “test” или “backup” имеют угадываемые пароли – вам повезло. Я обнаружил, что вариации test или citrixtest почти всегда существуют.

Если сканер приложений не работает, попробуйте http://sh0dan.org/files/pubappbrute.tar.gz.

Допустим теперь, что у вас есть доступ к Citrix серверу. Предположим, что вы не смогли залогиниться, поскольку найденный эккаунт не имеет привилегий входа в систему. Тогда, если вы использовали сканер приложений и получили список приложений, попробуйте следующее. Может быть, это недостаток Citrix, а может так было задумано. Но Citrix просматривает только поле [Application Name] в .ICA файле для того, чтобы определить, какое приложение запускать. Вот как обычно выглядит опубликованное приложение:

[WFClient]
Version=2
TcpBrowserAddress=ip.ip.ip.ip
[ApplicationServers]
word=
[word]
Address=word
InitialProgram=#word
ClientAudio=Off
Compress=On
TWIMode=On
DesiredHRES=800
DesiredVRES=600
DesiredColor=4
TransportDriver=TCP/IP
WinStationDriver=ICA 3.0
Что произойдет, если мы заменим InitialProgram с #word на cmd.exe или explorer.exe? Вот именно, запустится то приложение, которое мы задали в этом поле. Только убедитесь, что приложение в скобках и Address легитимны, иначе вы можете получить неожиданные ошибки. Таким образом, теперь мы имеем удаленную командную оболочку на citrix-сервере. А если вы предпочитаете GUI, то наберите в командной оболочке explorer.exe, и получите сообщение о том, что вы запускаете remote desktop сессию. Теперь у вас есть desktop. Надеюсь, что вы знаете, как повысить свои полномочия, поэтому не буду останавливаться на этом. Интересное замечание состоит в том, что зайдя под гостевым эккаунтом, я смог в итоге получить доступ к Administrative Tools! Советую взглянуть на другие пользовательские эккаунты, возможно они имеют легко угадываемые пароли. Никогда нельзя недооценивать потенциал глупых паролей. Поскольку вы не являетесь действительным администратором, просто пытайтесь изменять пароли.

А что, если они используют NFuse с Citrix Secure Gateway и фильтруют весь трафик через файрволл? Тогда вы не сможете таким образом изменить свой .ica файл. Напомню вновь, существует множество способов получения удаленного рабочего стола. В большинстве случаев администраторы Citrix имеют опубликованные приложения, такие как офисные. Какой замечательный вид программного обеспечения! Если у вас есть доступ к Excel, используйте vba скрипт для запуска explorer.exe. Если вы слишком ленивы, включите просмотр в режиме web страницы. Тогда откроется Internet Explorer и вы сможете запустить C:\winnt\explorer.exe. Этот трюк также проходит с Microsoft Word и, вероятно, с другими офисными продуктами. Известно, что большинство программ имеют опцию Help -> View online help. Это также откроет Internet Explorer, если он установлен как броузер по умолчанию. Другой выход – winhelp32 - он встроен во многие программы. В нем вы можете "Jump to URL." Теперь вы можете выложить файл cmd.exe на удаленный web сервер, сделать Jump на этот URL и загрузить его, если у вас есть доступ на запись. Теперь модифицируйте свой .ica файл, чтобы при входе в систему запускался cmd.exe – и у вас будет командная оболочка.

Есть еще несколько способов получения удаленного рабочего стола. Нажав Ctrl+F1, вы получите окно Windows Security. Из него запустите Task Manager start -> new task -> explorer.exe или cmd.exe. А если вы ленивы, просто нажмите Ctrl+F3 и вы получите Task Manager. Но это может быть запрещено в Group Policy (Disable Task Manager), так что может не работать. Большинству программ требуется доступ к файлам или они имеют опцию 'Open' для открытия файлов. Под Windows 2000 перейдите к open a file, затем в My Computer, и получите список дисков и серверов (если у вас есть доступ). Теперь нажмите правой кнопкой мыши на диск и выберите explore, и вновь получите explorer. Как я уже сказал, существует масса способов получения удаленного рабочего стола, и что более важно, командной строки.

Citrix хранит настройки соединений Citrix Program Neighborhood в известном местоположении (%systemroot%\profiles\username\Application Data\ - в NT4, C:\Documents and Settings\username\Application Data\ - в Win2k). Возможно, вы сможете похитить директорию ICAClient с ее содержимым и скопировать ее в свой профайл. Если этот пользователь достаточно ленив, то он наверняка использовал кэширование пароля. Иначе используйте другие методики угадывания пароля, и вы сможете получить доступ к Citrix.

Sniffing – еще один способ. Dsniff имеет возможность Citrix-сниффинга и может стать реальным оружием при использовании совместно с отравлением arp кэша (arp cache poisoning).

Защита Citrix

Вот несколько советов, которые могут помочь администратору защитить Citrix сервер.

Цель в том, чтобы пользователь не мог использовать программы, которые могут использоваться для загрузки или передачи файлов на сервер Citrix.

Внешняя защита:

  1. Используйте конфигурацию NFuse / Citrix Secure Gateway (например, такую, как описано выше).
  2. Убедитесь, что сервер IIS/Apache полностью защищен и находится внутри DMZ. Требуйте использование .htaccess или NTLM аутентификации даже при доступе к webroot сервера NFuse.
  3. Если возможно, требуйте от удаленных пользователей использование SecureID для аутентификации.
  4. Используйте по умолчанию броузер, отличный от Internet Explorer. Большинство приложений используют «броузер по умолчанию» для отображения online справки. Если вы установите Netscape и настроите его как броузер по умолчанию, они не смогут запускать приложения, такие как cmd.exe/explorer.exe.
  5. Создайте группу и поместите в нее всех удаленных пользователей Citrix. Запретите на уровне файловой системы доступ к cmd.exe, ftp.exe, tftp.exe, rcp.exe, net.exe, command.com, iexplorer.exe (если не требуется), и любым другим программам, которые могут запускать или пересылать файлы на Citrix сервер. Убедитесь сначала, что запрет cmd.exe не влияет на исполнение login скриптов.
  6. Всегда устанавливайте последние патчи на Citrix сервер, тогда вы сможете не волноваться о возможном использовании эксплоитов повышения привилегий.
  7. Поскольку существуют пути обхода «броузера по умолчанию», такие как winhelp32, вы можете установить настройки Интернет-безопасности, разрешающие доступ только к определенным страницам. Это наверняка помешает кому-либо загрузить свой собственный cmd.exe.
  8. Если это возможно, запретите доступ на запись к Citrix-серверу.
  9. Также, если возможно, запретите пользователям подключать сетевые диски. Вы можете сделать это через Citrix Connection Configuration. Нажмите дважды на ica-tcp, выберите «client settings». Затем отметьте требуемые пункты.
  10. В Group Policy запретите доступ к TaskMgr.exe.
Внутренняя защита:

Попробуйте использовать те же шаги, что перечислены для внешней защиты. По возможности необходимо использовать файрволл + citrix secure gateway.

Наш канал защищен лучше, чем ваш компьютер!

Но доступ к знаниям открыт для всех

Получите root-права на безопасность — подпишитесь