Система X Windows предоставляет богатый набор функций, позволяющий многим
программам одновременно использовать один и тот же графический дисплей. Но с
точки зрения безопасности самой большой проблемой системы X Windows является
реализованная в ней модель защиты, которую коротко можно охарактеризовать так:
все или ничего. После того как клиент получил доступ к Х-серверу, ему выдается пол-
ная индульгенция. Клиенты X могут перехватывать нажатия клавиш на пользователь-
ской консоли, закрывать окна, захватывать любые окна сервера и отображать их со-
держимое где угодно, и даже переключать клавиатуру на свою, независимо от того,
какие клавиши нажимает пользователь. Многие проблемы основываются на слабой
парадигме управления доступом или полном равнодушии системного администратора.
Самой простой и популярной формой управления доступом к X является аутентифи-
кация с использованием команды
xhost.
Данный механизм обеспечивает управление
доступом на основе IP-адреса и является при этом наиболее слабой формой аутенти-
фикации. Для удобства работы системный администратор может ввести команду
xhost +, что позволит получить доступ к Х-серверу без какой-либо аутентификации
любому локальному или удаленному пользователю (при использовании параметра +
доступ к серверу разрешен для всех узлов). Что еще хуже, многие
Х-серверы,
рабо-
тающие на платформе PC, по умолчанию настроены именно на использование ко-
манды xhost +, подвергая тем самым огромной опасности ничего не подозревающих
пользователей. Как вы понимаете, этим, казалось бы незначительным, недостатком
могут воспользоваться злоумышленники.
Одной из лучших программ, предназначенной для идентификации Х-серверов, у
которых включен режим xhost +, является утилита xscan. С ее помощью можно вы-
полнить сканирование всей подсети, найти в ней запущенные Х-серверы и записать
все нажатия клавиш в файл журнала.
[tsunami]$
xscan quake
Scanning hostname quake
...
Connecting to quake
(192.168.1.10)
on port 6000...
Connected.
Host quake is running X.
Starting
keyboard
logging
of
host
quake:0.0
to
file
KEYLOGquake:0.0...
Теперь все клавиши, нажимаемые на клавиатуре удаленного компьютера, будут
регистрироваться в файле
KEYLOG.quake.
[tsunami]$
tail
-f
KEYLOG.quake:0.О
su -
[Shift_L]Iamowned[Shift_R]!
Затем достаточно воспользоваться командой
tail,
чтобы увидеть,
что
набирает
на
клавиатуре пользователь в режиме реального времени. В нашем примере пользователь
ввел команду su, а затем, в ответ на приглашение, — пароль
lamowned!
(утилита
xscan умеет даже определять нажатие клавиш <Shift>).
Также просто определить, какие окна открыты на взломанной системе. Для этого
взломщик сначала должен установить шестнадцатеричное значение идентификатора
окна с помощью команды
xlwins.
[tsunami]#
xlswins
-display
quake:0.0
|grep
-i
netscape
0x1000001 (Netscape)
0x1000246 (Netscape)
0x1000561 (Netscape: OpenBSD)
Программа xlswins отображает много информации, поэтому в нашем примере мы
используем утилиту grep, чтобы установить, запушен ли броузер Netscape. К счастью,
нам повезло — броузер Netscape действительно запущен на удаленном компьютере.
Однако ничего не мешает просмотреть все выдаваемые утилитой xlswins результаты
362 Часть II.
Хакинг
систем