В этой статье я приведу
интересное исследование о методах действия
хакеров. Но не буду я говорить о голой
теории типа "обнаруживают жертву,
сканируют, ищут эксплоиты и т.д.". Пора
посмотреть все в живую! Как? Все очень
просто... Идея такова: инсталлируем Unix-платформу,
оборудуем ее в качестве сервера, ставим уйму
логов, снифферов(они тоже пригодятся,
особенно некоторые). Делаем юзверя с
правами root'а, потом заходим на IRC и базарим
типа "I'm trade rootshells, please msg me!". Думаю все
понятно? Вот этим я и занялся. Я нашел у себя
самый старый LInux, находившийся у меня (RedHat 6.0)
и проинсталлил с него весь софт, который
только можно, чтобы хакер убедился в
ламоватости админа... Потом подрубил его к
инету. Мне не хотелось настраивать веб-сервер
и ftp, слишком долго и нудно, да и хакеры
обычно на это смотрят не в первую очередь, а открыл лишь telnet. Теперь создаем
юзверя с правами root'а и одного обычного. Я создал
john с обычными правами и birt с root'ом. Для
начинающих: во многих юниксах вход ИЗ сети
root'а запрещен (можно конечно изменить,
добавив сетевые терминалы
в /etc/securetty, но все же...) для
этого и нужен обычный юзер, а потом su psevdo-root
и вперед...

Итак, основные приготовления
готовы... Осталось самое муторное:
оборудование станции (точнее сервера) для
тотальной слежки над врагом, и конечно
сокрытие своего присутствия... Начнем со
слежки. Нужно проверить конфиги Syslog'а. Здесь
нас только интересуют только /var/log/messages, где
порой содержатся довольно интересные
данные, и /var/log/secure, логи TCPWRAPPER'а (встроенный
фильтр пакетов, как раз он отвечает за hosts.deny[allow]).
Но более-менее грамотный хакер все
эти логи сразу затрет или модифицирует, а их отсутствие
вызовет подозрение... Просто интересные вещи будем пускать
в "свой" файл. Добавим в syslog
такую строку: *.info;authpriv.* /usr/games/spool.tmp (туда он
вряд ли заглянет:)). Хотя он
может и посмотреть syslog.conf, но это не наш главный козырь:).
Да, кстати, если
мы уж в spool.tmp собираем и логи TCP WRAPPER'A (authpriv), то нужно в писать в inetd.conf вместо
telnetd in.telnetd (чтобы телнет работал под
крышей TCP WRAPPERA:)), и послать inetd сигнал отбоя (kill -HUP
inetd or pid). TCP WRAPPER покажет нам IP адрес
взломщика (хотя он может зайти через какой-нибудь шелл,
но
определение адреса чисто символическое...), так что
прогонять команды типа who и last
через cron не имеет смысла. Более интересны команды
взломщика, которые он будет вводить. Думаю все знают команду
history? Выводит список всех команд, вводимых
вами, обычно последние 1000 (можно изменить, модифицировав
переменную HISTSIZE). Но откуда он берет их? Все очень
просто, он записывает все команды в .bash_history
в домашнем каталоге (если конечно
используется оболочка bash). Я написал небольшой скрипт,
периодически
копирующий bash_history в /usr/doc/temp.h (если взломщик
не полный @#$~, то он удалит .bash_history, либо
очистит) и заодно добавил ps -aux, чтобы
просматривать процессы... Но согласитесь, достаточно
нудно пустить взломщика в свой комп, а после всех его
действий тупо просматривать логи, обмозговывая при этом его
команды и разглядывая IP'шник! Нужно следить за хакером
в реальном времени! Для этого нам
понадобится
снифферы. Я проинсталлил dsniff (можно найти на пакетсторме).
Чем он хорош и зачем нужен? Тем, что
в отличии от  какого-нибудь linsniffer'a выводят все в реальном
времени в STDOUT (то есть на монитор:)).Хотя
оговорюсь, что каждый сниффер подходит под определенный
случай! Если конкретней, то этот сниффер контролирует соединения
вашего  компа и вы в любое время можете просто
просматривать вводимые команды, обычный hijack'ing.
Вроде
для наблюдения все. Но остается еще одна нерешенная проблема.
Хакер, попав
на машину, обычно сразу узнает, кто в системе
и если он узнает, что рут там, то может просто выйти...
Проблема 1: команда w выдает список пользователей,
находящихся в
данный момент в системе. Как не засветиться?
Можно модифицировать login, можно /var/run/utmp, но я пошел более
простым путем, просто удалил ее (команду w):). Проблема номер два - ps.
Она
подразделяется на две подпроблемы :). Первая из них - имя
пользователя, от которого запущен процесс...
Хотя, имя пользователя не так
важно, тем более root, так как из под него запущены
почти все процессы. Вторая проблема - процессы.
Именно, процессы. Sendmail или inetd не вызывает
подозрения, ну а вот что-нибудь типа ./dsniff -i ppp0
-w ppp.log довольно подозрительно:). Поэтому
я просто переименовал dsniff в agetty (чтобы и ppp0 не вызвало
подозрений), а имя лога изменил в ATZ:). А шелл скрипт
(там .bash_history и ps -uax) переименовал в errtime. Теперь нужно найти жертву.
Как
обычно, для этого подойдет IRC. Первым делом я залез на канал
#hacker. И начал трубить, что у меня есть
рутшеллы, замессагните мне и все такое... (я умышленно не буду приводить
здесь реальные ники и IP'шники). 

ДУБЛЬ 1.

С XYZ'ом мы договорились обменять
мой рутшелл на прокси лист:).После того как я
передал ему все данные (адрес,L/P), в моем сниффере сразу
отобразилась попытка соединения и успешная
авторизация. Хакер сразу ввел команду w(чтобы узнать, кто в
системе), но если вы помните, я ее удалил:).Потом он начал
качать logwriter (если конкретно, то marry2.c). Разобравшись
с ним, закачал сниффер (linuxsniffer.c), потом качнул datapipe.c и
отправил /etc/shadow себе на мыло, потом вышел. В
общем,
явно сервак ему понравился:). Однако странно,
что
он ДАЖЕ не удалил bash_history, да и все качал в свой
домашний каталог /home/birt, даже не создав
затемненного (типа .birt). В общем обычный
среднестатистический хакер. Кстати, затемненные
каталоги

точной) можно спокойно увидеть командой ls -a.

ДУБЛЬ 2

Этот хакер оказался явно поумнее:), но
обо всем по порядку. Приконнектившись, он сразу набрал
who (кто в данный момент в системе, аналог w). Да,
этого я не
предусмотрел. Как ни странно, увидев там рута,
он не
вышел. Потом последовала команда ps -uax. Потом
пошло самое интересное. У меня вырубился
сниффер. По моему предположению, он увидел в процессах ./agetty -i ppp0 -w
ATZ, заподозрил что-то неладное. Оставалось
надеяться лишь на ./errtime (мой шелл скрипт). Ничего не
оставалось, как выйти покурить:). Вернувшись,
я посмотрел в /usr/doc/temp1.h (это
логи моего скрипта на .bash_history). Я сразу
посмотрел на последнюю команду - exit. Значит он уже вышел.
Начнем
разбираться. Первая команда who, затем ps -uax, ну а
потом и kill -9 483. Скорее всего это он вырубил мой сниффак.
Но
нужно удостовериться. Я открыл temp2.h (это логи на ps -uax) и
посмотрел pid agetty.483. Все верно. Потом он открыл
syslog.conf. Я сразу ринулся посмотреть spool.tmp, но
он был уже пуст... Намылился в /var/log, но увидев
следующие команды о скачке logwriter'а (cloak.c) и его
применении, желание отпало:). Потом пошла скачка многих
эксплоитов (чуть ли ни весь архив антикода:)) и их последующее
копирование в /tmp с замысловатыми именами. А вот это довольно странно,
учитывая
что /tmp во многих юниксах очищается при
перезагрузке. Даже если это и сервак, админы
часто его чистят через крон или своими сценариями...
Потом был скачен и установлен
руткит. Разумно... Последним штрихом стало удаление .bash_history
и аккаунта birt. Ну и exit. Вроде все нормально, но вот
IP'шник не узнали... Я долго думал над этим вопросом и
меня это удручало:). Потом вспомнив, что я сниффал с
последующим логированием всего в ATZ. Да, он его вырубил,
но
первые команды у меня остались, ведь там должен
быть и IP'ник. Открыв ATZ я в этом убедился, увидев в самом
начале source IP (адрес источника). 

ДУБЛЬ 3.

Самый ужасный дубль:). Начнем с того, что он меня рипнул:).
Даже
proxy не дал:). И к тому же этот умник просто
набрал rm -rf *. Оригинально:). После лицезрения этой команды на
сниффере, я немедленно выключил модем, но
после перезагрузки моя система напрочь отказалась
работать, а в однопользовательском режиме я
так ничего и не смог сделать:). Точнее это был дубль 1,
после
этого мне пришлось все переинсталлить для
следующих дублей:).

И ну и еще хочу заметить, что
после взлома машины лучше очень внимательно
посмотреть все логи. Не надо доверять logwriter'ам,
точнее
доверяй, но проверяй! Здесь я привел примеры
некоторый штучек админов против хакеров, но это лишь вершина
айсберга. Например один мой друг побрезговал посмотреть
crontab файл root'а (это только в ATT системах, в BSD немного
другое), в котором висел перл скрипт на выполнение,
содержащий
проверку /etc/passwd на юзверей с uid/gid 0. К
счастью я это заметил, и немного подправил скрипт,
чтобы
вместе с root'ом игнорился и наш root:), но потом мы
просто установили rootkit и забыли про это:).  Также часто админы ставят
дополнительный софт для ведения логов, такие как
Watcher, SWATCH и
т.д. Так что будьте бдительны... 

И еще немного о logwriter'ах. Некоторые
из них оставляют пустые байты и проги типа chkwtmp
могут все спокойно пронюхать... Так что вдвойне
будьте бдительны:). 

P.S. Пользуюсь случаем, хочу
передать привет еще не появившийся на свет рок-группе
АТЛАНТИДА:), предвкушая ее удачное выступление в
аэроплане...

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии