|
Что такое win r00tkits и что с ними делать
Xakep, номер #049, стр. 049-064-1 Успешное применение руткитов для NT/W2k Stalsen (stalsen@real.xakep.ru) http://trinux.atanor.ru (thanks to qpyHT) В этой статье мы погорим с тобой о руткитах для операционных систем NT/W2k. Согласись, эта, с позволения сказать, отрасль очень бурно развивается! Если еще год назад мы могли только наслаждаться альфа-версией одного единственного NT-руткита (и каждый ламерский админ знал, что при странном поведении системы следует набрать net stop _root_ :)), то сейчас ситуация в корне меняется в лучшую сторону! История и политика Microsoft ревниво оберегает свое ПО от посягательств. Его лицензиям на текст, код, изображения(!), высказывания Билла Гейтса(!!!) нет конца... Все это обременяет программера, создавая очень тесные рамки для работы (даже легальной). Оффтопик: ты слышал о новой лицензионной политике микрософта? Теперь они имеют право на доступ к информации на компьютерах пользователей!!! И это не просто слова, кто знает, к чему это вообще приведет (сразу в голову лезут мысли о потайных ходах софтверного гиганта). И вот тебе еще для затравки: недавно на одном из Микрософтверных ftp-сервкаков интернета обнаружили приватные данные примерно о нескольких миллионах пользователей windows (включая их адреса, номера телефонов и т.д.). Я советую тебе хорошенько над этим задуматься! Ладно, возвращаемся на землю, главная проблема - закрытые исходники. Если в unix-совместимых достаточно выискать сорс какого-нибудь login, добавить туда пару нужных строчек и скомпилировать, то в nt/w2k все обстоит иначе - надо дизассемблировать (ну, или искать более оригинальные пути), что, во-первых, противозаконно, а точнее, "противолицензионно" (я по поводу дизассемблирования). Во-вторых, все это предполагает хорошие знания асма. А в третьих, сорсы на языках низкого уровня получаются куда длиннее. На первый взгляд кажется, что проприетарный софт (т.е. с закрытыми исходниками) в некотором роде защищает программы от недобросовестных рук, но это иллюзорная безопасность, так как в реале код остается на том же уровне... Например, ты написал скрипт на С, автоматизирующий добавление новостей на сайте, выложил исходники, и вдруг по тупой оплошности твою пагу взломали... С одной стороны обидно, конечно, но с другой стороны - был найден баг. Ты получил опыт, а твои сорсы стали еще безопаснее. Что же касается проприетарного софта - исходники закрыты, и никто не знает что да как (мы даже не можем быть уверены в отсутствии потайных ходов!). Приходится полагаться на русское "авось". Мелкософт частенько не может выложить нормальные патчи (мда, хотя работают они быстро), и если вдруг кто-нибудь найдет очередную дырку в IE, то тебе долго придется ждать официальных заплаток (если он конечно сообщит об этом в M$ :-)). Укрепляться или нет? Стоит ли хакеру укрепляться на nt/2k машине? Согласен, очень спорный вопрос... Unix - свое, родное... А НТ? Она изначально создавалась как ОСь с графическим интерфейсом (gui встроен в ядро!), возможности командной строки минимальны (даже в w2k). Средства удаленного администрирования (вроде pcAnywhere, BO200 etc.) очень легко засечь, кроме того, требуется их как-нибудь запустить. Обычно добавляют нужные строки в какой-нибудь win.ini и перезапускают машину (что очень опасно), но подобная схема не относится к VNC (и еще некоторой радостью является появление Terminal Services). Идем дальше, забудем на некоторое время о gui и перейдем к командной строке. Как с ней быть? Можно поставить ее на netcat (no comments), а можно запускать через Web-сервер (если на взломанной машине он есть, посредством, например, cmdasp.asp). Но опять выходит глупость - неужели админ не заметит новый скрипт (да еще с таким названием, хотя можно и переименовать) или новый открытый порт в системе (со странным приглашением Enter Password: или просто C:\>)? Скрытие папок и файлов. Насчет первого, как обычно, отстой (я опускаю использование attrib +h :) как для каталогов, так и для файлов). Насчет второго есть отличное решение - потоки NTFS, например: cp dsniff.exe C:\WINNT\SYSTEM32\kernel32.dll:dsniff.exe. Теперь можно с радостью удалить исходный файл (del dsniff.exe) и радоваться жизни (а восстановить так: cp C:\WINNT\SYSTEM32\kernel32.dll:dsniff.exe dsniff.exe). Может быть, кто-то возразит и скажет, что средства контроля целостности файлов сразу заметят изменение размера kernel32.dll. А вот и нет! Размер файла не изменяется, изменяется свободное место на диске :). Логи - тут тоже надо радоваться. Предоставляемые данные минимальны, так что админы их обычно сопоставляют с журналами системы обнаружения атак и фаерволами, только так можно добиться хоть каких-нибудь результатов. Но на всякий случай во время твоих действий советую набрать auditpol /disable (а при окончании auditpol /enable). Но стоит ли из-за всего этого считать NT/2k безопасной? Конечно, нет! Подпишись на security-рассылки и составь баланс unix- (даже всех дистрибутивов) и win-багов. Получится соотношение примерно 1 к 3. Это особенно касается IE, OE и IIS. К чему это я? Безопасность NT в ее тупости. Хотя система изначально создавалась для сети, ее возможности не на высоте. К чему мы пришли? Так или иначе, остается несколько белых пятен - скрытие каталогов, получения незаметного удаленного доступа (через gui или cmd) и т.д. И тут на помощь тебе приходят руткиты, к описанию которых мы и перейдем! |