Инвентаризация UNIX
Инвентаризация пользователей и групп UNIX
Возможно, самым старым приемом инвентаризации учетных записей пользователей, описанных в данной книге, является утилита finger. Эта утилита предоставляла простой и удобный способ получения информации о пользователях удаленного узла еще в те времена, когда сеть Internet не была настолько большой и простой в использовании. Мы упоминаем здесь об этой утилите в основном для того, чтобы акцентировать ваше внимание на основных способах ее использования. Многие средства проникновения в сеть по-прежнему базируются на использовании этой утилиты, поскольку нерадивые системные администраторы зачастую запускают системный процесс fingerd без каких-либо мер обеспечения безопасности. Как и прежде, мы предполагаем, что в процессе сканирования портов была получена информация о том, что на исследуемом узле запущена служба finger (порт 79).
[root$] finger – 1@target.hackme.com [target.hackme.com] Login: root Name: root Directory: /root Shell: /bin/bash On since Sun Mar 28 11:01 (PST) on ttyl 11 minutes idle (messages off) On since Sun Mar 28 11:01 (PST) on ttypO from:0.0 3 minutes 6 seconds idle No mail. Plan: John Smith Security Guru Telnet password is my birthdate.
Команда finger 0@имя-узла также позволяет получить интересный результат.
[root$] finger 0@192.168.202.34 [192.168.202.34] Line User Host(s) Idle Location * 2 vty 0 idle 0 192.168.202.14 SeO Sync PPP 00:00:02
Как легко заметить, большая часть информации, которая отображается утилитой finger, не имеет особого значения (она выбирается из соответствующих полей файла /etc/password). Можно сказать, что с точки зрения безопасности самой опасной является информация об именах пользователей, зарегистрированных в системе, а также о времени, в течение которой пользователь не выполняет каких-либо операций (idle). Это поможет хакеру определить, кто в данный момент "присматривает" за машиной (возможно, пользователь root?) и насколько внимательно он это делает.
Некоторая дополнительная информация может использоваться при попытке проникновения в сеть с помощью приемов социальной инженерии. (Социальная инженерия (social engineering) – термин из словаря хакера, обозначающий попытку с помощью психологических приемов установить контакт с нужными людьми с целью получения от них информации для проникновения в систему. Более подробная информация об этом содержится в главе 14, "Расширенные методы".) Как показано в этом примере, пользователи, которые помещают в свой рабочий каталог файлы .plan или .project, могут дать очень хорошую наводку хакеру (содержимое этих файлов выводится командой finger).
Обнаружить и устранить подобную утечку информации очень просто. Достаточно не запускать демон fingerd (для этого нужно закомментировать соответствующую строку в файле inetd.conf и выполнить команду killall – HUP inetd), а также заблокировать порт 79 на брандмауэре. Если вам по каким-то причинам все же необходимо иметь доступ к программе finger, используйте TCP-оболочки (см. главу 8, "Хакинг UNIX"), чтобы ограничить доступ к узлу и регистрировать все соответствующие события. Можно также воспользоваться модифицированным демоном finger, предоставляющим ограниченное количество информации.
Существуют также и другие, менее популярные утилиты, например rusers и rwho. Как и в случае с программой finger, от них лучше отказаться (обычно эти утилиты запускаются независимо от демона inetd). Поищите в файлах загрузки ссылки на файлы rpc.rwhod и rpc.rusersd). Утилита rwho возвращает перечень пользователей, которые в данный момент зарегистрированы на удаленном узле.
rwho 192.168.202.34 root localhost:ttyp0 Apr 11 09:21 jack beanstalk:ttyp1 Apr 10 15:01 jimbo 192.168.202.77:ttyp2 Apr 10 17:40
При использовании параметра -I утилита rusers позволяет получить более подробную информацию. Кроме сведений о пользователях она предоставляет данные о времени, прошедшем после последнего нажатия пользователем клавиш на клавиатуре.
rusers -I 192.168.202.34 root 192. 168..202.34:ttyl Apr 10 18:58:51 root 192.168.202.34:ttypO Apr 10 18:59:02 (:0.0)