Как заметать следы (Часть 4)
Как заметать следы (Часть 4)
"О божественное искусство тайны и непостижимости!
Благодаря тебе искусный мастер не оставляет следов.
Благодаря тебе искусный мастер не издает ни звука.
И благодаря тебе судьба недруга в его руках".
2 Это четвертая часть, продолжающая цикл статей Ван Хаузера "Как скрывать свои следы". По возможности я буду и далее снабжать этот обзор своими комментариями и дополнениями применительно к Windows-системам. Вопросы взлома и защиты систем, работающих под управлением Novell Netware, рассматриваться не будут.
4. LOG-и (Журналы регистрации активности)
Существует три важных журнала, протоколирующих активность:
"WTMP" — регистрация начала и завершения каждого сеанса, со временем входа и выхода из системы, время регистрации, "TTY" и именем хоста.
"UTMP" — содержит информацию об on-line пользователях, подключенных в данный момент.
"LASTLOG" — содержит информацию о том, откуда происходят подключения.
В Windows NT также есть три "штатных" журнала регистрации активности:
"AppEvent.Evt" — журнал приложений ("application log"), протоколирующий события, связанные с конкретными приложениями, такие как: программой диагностики источника бесперебойного питания, программой резервного копирования, другие запланированные по регламенту (конфигурации системы) процедуры.
"SecEvent.Evt" — журнал безопасности ("security log"), протоколирующий события, касающиеся защиты, такие как: неудачные попытки регистрации в системе, доступа к ресурсам на основании встроенных или установленных "политик безопасности" .
"SysEvent.Evt" — системный журнал ("system log"), протоколирующий события, связанные с работой самой операционной системы, например: загрузка (выгрузка) драйверов, запуск (остановка) сервисов, проверка свободного места на диске и т.д.
В Windows NT при установке IIS ("Internet Information Server") может быть запущен журнал регистрации событий о работе запущенных служб. Журналы в IIS могут быть двух видов: текстового файла или базы данных, совместимой с ODBC.
Есть и другие журналы, но о них речь пойдет в разделе о "продвинутой технике". Каждое подключение через "telnet, "ftp", "rlogin" и через некоторые системные "rsh" регистрируется в этих журналах. Очень важно удалить следы своей активности из этих журналов, если вы проводили взлом, в противном случае из них выяснится:
А) точное время, когда вы проводили взлом
Б) с какого места происходило ваше подключение
В) как долго вы были в on-line и характер ваших действий
Никогда не удаляйте log-файлы. Это самый простой способ, чтобы показать администратору, что машину посетил хакер. Найдите программу для модификации лог-файлов. Часто отзываются о ZAP или ZAP2 как о самых лучших, но это не так. Все что они делают — это забивают нулями данные о последнем подключении. CERT уже выпустил простые утилиты, проверяющие эти забитые нулями записи, — что легкий путь по выявлению хакеров, для администраторов в том числе. Когда администратор узнает, что кто-то получил доступ на уровне "корня", весь ваш труд станет напрасным. Еще одно важное замечание по ZAP — она не сообщает о том, что не смогла найти журналы регистрации, поэтому сами перепроверьте пути перед компиляцией! Достаньте другую утилиту, реально изменяющую данные (такую как CLOAK2) или удаляющую записи (такую как CLEAR).
Обычно у вас должен быть доступ к "корню" для изменения лог-файлов (это не касается старых версий систем, у которых был глобальный доступ на запись к "UTMP" и "WTMP"). Что можно сделать, если доступ на уровне "корня" получить не удалось? Не очень многое: подключитесь через "rlogin" к компьютеру, где вы были, чтобы добавить запись "LASTLOG", не привлекающую особого внимания, которую увидит пользователь, подключаясь следующим. Он ничего не заподозрит, если увидит "localhost".
Много версий UNIX имеют ошибку в команде "login". Когда эта команда еще раз запускается на исполнение, после того как вы уже подключились к системе, она перезаписывает поле "login-from" в журнале "UTMP" (в котором содержится информация о том, откуда вы пришли!) вашим текущим "TTY".
Где эти лог-файлы размещаются по умолчанию?
Это зависит от версии UNIX.
"UTMP" | "/etc", "/var/adm", "/usr/adm", "/usr/var/adm", "/var/log" |
"WTMP" | "/etc", "/var/adm", "/usr/adm", "/usr/var/adm", "/var/log" |
"LASTLOG" | "/usr/var/adm", "/usr/adm", "/var/adm", "/var/log" |
Журналы в Windows NT располагаются в "%root%\SYSTEM32\CONFIG " . Хакеру не стоит сильно беспокоиться о журнале приложений "AppEvent.Evt", а обращать серьезное внимание на записи в системном журнале ("SysEvent.Evt") и журнале безопасности ("SecEvent.Evt"). "По умолчанию" легальные пользователи имеют доступ "на чтение" системного журнала. И если есть разрешение, то, при желании, можно его просмотреть и увидеть, остались ли в нем следы вашего визита. Если это так, необходимо подумать, как добавить записи от других пользователей, подобных вам, регистрируясь в системе с других учетных записей.
5. Не оставляя следа
Я встречал много хакеров, которое удаляли себя в журналах регистрации. Но они забывали стереть другие следы, оставшиеся в машине: файлы в директориях "/tmp" и "$HOME".
История оболочки командного процессора.
Она будет меняться в зависимости от того, какой пользователь подключился в данный момент. Некоторые оболочки оставляют файл истории (зависящий от конфигурации системного окружения), со всеми набиравшимися командами. Они — злейший враг для хакера. В данной ситуации лучше всего — это запустить самой первой командой новую оболочку командного процессора и проверять всякий раз файл истории в вашей директории "$HOME".
Файлы истории:
"sh" | ".sh_history" |
"csh" | ".history" |
"ksh" | ".sh_history" |
"bash" | ".bash_history" |
"zsh | ".history" |
"dead.letter, *.bak, *~"
Другими словами, перед отключением выполните команду: "ls —altr".
Вот пример четырех команд для "csh" (оболочки), удаляющие файл ".history", не оставляя никакого следа, перед завершением сеанса.
"mv.logout save.1"
"echo rm.history>.logout"
"echo rm.logout>>.logout"
"echo mv save.1.logout>>.logout"
История работы пользователя в Windows-системе кроме специальных журналов, протоколирующих события, хранится в системном реестре. Об этом у меня был цикл из трех статей в КГ, опубликованных в номерах с 15 по 17, под общим заголовком "Анализ активности". Копии есть у меня на сайте. Правда, следует сделать оговорку: "анализ активности", рассмотренный в статьях, велся применительно и преимущественно к локальным Windows-системам.
6. Чего следует избегать
У большинства компьютерных систем пароль пользователя участвует как параметр в криптоалгоритме для генерации хэш-значения ("hash" — дословно мусор). Для справки: хэш-функции широко используются в базах данных или в языке "Java" для сопоставления каждому объекту уникального значения. Однако, уникальность хэш-значения для каждого объекта в Java, да и не только в Java, не более чем идеализация, и у разных объектов (и у значений хэш-функций после криптопреобразования с участием пароля) хэш-значения могут совпадать. На этом принципе основана криптоатака под названием "коллизия паролей". Следующее требование, которое предъявляется хэш-значению — это отсутствие возможности или сложность в реальном масштабе времени на реальных компьютерных системах восстановить оригинальное значение по соответствующему хэш-значению.
Далее хэш-значение, сгенерированное после введения пароля, сравнивается со значением, хранящимся в системе. Если значения совпали, то пароль и пользователь, соответственно, считаются легальными. Это общий принцип проверки при регистрации в системе. Хотя бывают более сложные протоколы регистрации, когда идет проверка путем так называемого "рукопожатия", при которой клиент и сервер обмениваются паролями и проверяют валидность друг друга.
Процесс взлома пароля чаще всего состоит из получения доступа к файлу, хранящему пароли (хэш-значения) пользователей, последующему его копированию и, затем, подбору паролей до тех пор, пока не совпадут хэш-значения. В реальности хэш-функции или слабы, или имеют специально поставленные "люки", и одному значению могут соответствовать несколько паролей (коллизия) либо иметь "универсальные пароли". Перебор через сеть, без получения копии файла с паролями, я здесь не рассматриваю, это тоже практикуется, но слишком медленно, в особенности, если атака идет не через локальную сеть.
Далее я, в общих чертах, покажу самые ходовые способы атак на пароли. Это информация вряд ли представляет какой-либо интерес или новизну для хакеров, скорее это "информация к размышлению" для пользователей.
Для взлома пароля практикуют в основном три метода:
1. Подбор "социально-ориентированных" паролей. Другими словами, многие пользователи из-за собственной лени или отсутствия фантазии для пароля используют само имя учетной записи (грубейшая ошибка, какую вообще можно совершить), либо берут слово из своей жизни: свое имя, часто — имя любимого человека. Об этом у меня была статья в Компьютерных вестях "Слабые пароли", опубликованная в 8(239) номере за 4-10 марта 1999 года. Копия есть у меня на сайте. Подобное "головотяпство" встречается часто (до 30% случаев), на этом допущении был основан знаменитый "сетевой червь" Морриса. И этой "рабочей гипотезой" широко пользуются начинающие хакеры.
2. Атака "грубой силой" ("brute force" в английском варианте) или прямым перебором. Здесь имеется в виду простая проба перебором всех возможных комбинаций, пока не будет найдено совпадение хэш-значений. Утилиты для атак "грубой силой" имеют встроенные функции задания диапазона символов и максимальную длину пароля.
3. Атака "по словарю" подразумевает перебор возможных (если точнее, то прогнозируемых) вариантов, хранящихся в словаре. Кроме возможности подключения новых словарей, новейшие утилиты имеют функции постановки "фильтров": замены символов в заданной позиции, превращающих, например, слово "elite" в "e1i4e" или "idiot" в "1d10t", или задания правил манипуляции со словами: склейка двух или более слов, перестановка символов в обратном порядке, добавление в начало, в конец, в середину слова служебных символов и т.д.
4. Похищение пароля. Для этого используют разрушающие программные средства во всех вариантах: "клавиатурных шпионов", "троянских коней", "вирусов-разведчиков". Суть в перехвате клавиатурного ввода, копировании содержимого окна с введенным паролем и последующей его передачей по сети, сохранении в файле. Также используется так называемое "подставное окно", которое эмулирует "настоящее", и после введения пароля выдается ошибка о том, что пароль "неверен", пользователь вводит пароль еще раз, но уже в "настоящее" окно. Рекомендую следить за окнами тем, кого это действительно заботит.
4. Атака "по открытому тексту". Это уже "чистейшей воды" криптоанализ. Здесь для успешной криптоатаки нужна часть файла, о которой точно известно, что она хранится в зашифрованном файле. Это широко практикуется, например, при взломе архивов, закрытых паролем, и сокращает время подбора пароля до считанных минут. Так что пользователям, ведущим "борьбу с проникновением извне", следует тщательно удалять временные файлы, файлы резервных копий и проводить зачистку свободного пространства и файла "виртуальной" памяти.
Более продвинутые методы "компрометации шифросистем" или криптоанализа здесь не будут рассматриваться.
Не взламывайте пароли ни на каких машинах, кроме своей собственной и только на защищенном разделе. Если вы ломаете их, например, в университете и "корень" (root) видит ваш процесс, к тому же администратор проверит — в "истории" засветится не только ваша хакерская учетная запись, но и информация о сайте, с которого взят файл с паролями, и весь университет будет таращить на вас глаза. Скачайте данные с паролями и ломайте их на стороннем компьютере в фоновом режиме. Нет необходимости иметь много "ломанных" учетных записей, достаточно нескольких.
Windows 95/98 хранит свои пароли к "экранной заставке" ("ScreenSaver") и к "разделяемым" ("shared") ресурсам — в системном реестре и Пароли пользователей на вход в систему в файлах с расширением "*.PWL", находящимся в "%WinDir%\<имя_пользователя>.PWL", где "%WinDir%" — каталог, в который установлена Windows. По умолчанию папка "C:\Windows". Переменные окружения и каталог Windows можно легко вывести командой "set", набрав ее в DOS-сеансе в командной строке.
Учетные записи пользователей в Windows NT ведет SAM (security account manager — "диспетчер учетных записей"). Размещение базы данных пользователей находится в "\SYSTEM32\CONFIG\SAM", обычно глобально доступной "на чтение", однако, при работе ОС доступ к ней заблокирован, так как она используется компонентами системы. Возможно наличие в системе файлов "SAM.SAV", которые будет разрешено читать и которые тоже нелишне будет взять для получения информации о паролях. В процессе инсталляции Windows NT копия базы данных с паролями, в которой будут только гостевая и администраторская учетные записи, помещается в "\REPAIR". Этой копии вполне хватит при условии, что администратор не сменил пароль. Если администратор обновил диски для аварийного восстановления, то копия базы данных паролей "SAM._" будет в каталоге "ERD".
В системном реестре Windows NT информация об учетных записях пользователей с их правами и паролями хранится в разделе "HKEY_LOCAL_MACHINE\SAM". Файл резервной копии "SAM.LOG" тоже может быть мишенью для хакерских атак. Обобщая, можно сказать, что для получения доступа к паролям с последующей на них атакой необходимо искать те или иные версии "SAM.*" файлов.
Файл с похищенными паролями рекомендовано хранить зашифрованным и открывать только для "работы". Если его обнаружат у вас, он будет важной уликой, и не в вашу пользу. Необходимо иметь также файл с легальными паролями (своими собственными). При желании можно импортировать базу данных с учетными записями взламываемых данных. При раскрытии вашей активности можно будет сослаться на то, что вы были заняты "реставрацией" собственных паролей или тестированием системы, хотя это не лучшее оправдание.
Если вы запускаете критичные утилиты, такие, как ypx, iss, satan, или взламываете программы, переименуйте их перед запуском или используйте немного общих данных для обмена с работающей программой, присутствующей в списке процессов. Любой пользователь подкованный в безопасности (и вне сомнения администратор) поймет, что происходит, когда увидит 5 ypx программ, работающих в фоновом режиме... И, конечно, если это возможно, не вводите параметры в командной строке, когда программа поддерживает интерактивный режим, например, такая как telnet. Наберите "telnet" и затем лишь "open target.host.com", не засветив имя целевого хоста как параметр в списке процессов.
Атака "по словарю" затребует скоростных дисковых ресурсов, тогда как для атак "прямым" перебором нужен быстрый процессор. "Прямой перебор" может существенно захватить вычислительные ресурсы, поэтому процессы, запущенные утилитой, по возможности, необходимо перевести на пониженный приоритет ("idle"), иначе машина, однопроцессорная в особенности, может просто "впасть в коллапс". Windows 95, в отличие от NT, не имеет возможности манипулировать приоритетом процессов встроенными средствами. Для этого я бы рекомендовал утилиту PrcView для Windows 9.x и Windows NT (бывший PView95), позволяющую менять приоритеты и "убивать" процессы.
Компьютеры с медленным процессором, но с высокоскоростными жесткими дисками лучше подходят для атак "по словарю", тогда как компьютеры с быстрым процессором, но "слабым" диском лучше использовать для атак "грубой силой".
Далее я приведу список утилит для взлома паролей Windows:
Утилита | Автор | Среда компиляции | Комментарии |
c50a-nt-0.20.tgz | Боб Тинсли (Bob Tinsley) | Unix | Взломщик "по словарю", часть взломщика Алека Муффетта (Alec Muffett) версии 5.0 для Unix |
lc201exe.zip | Мужд (Mudge) и Уелд Понд (Weld Pond) из группы "L0pht" | Unix, включая версии под GUI NT и DOS | Лучший продукт в своей области, включает в себя быстрый взломщик "грубой силой", может использовать словарь. Доступны исходники утилит |
NTCrack.tar.gz | Джонатан Уилкинс (Jonathan Wilkins) | Unix, включая версию под NT | Взломщик "атакой по словарю" |
В Windows-системах обычно для постановки "backdoor" и автоматического запуска при старте системы внедряют "троянец" и модифицируют код "Internat.exe" — индикатора-клавиатуры или реже "Systray" — утилиты управления питанием. Если применена не стандартная "программная закладка" (вроде "Back Orifice" или "NetBus"), а утилита, разработанная самостоятельно, то вероятность ее обнаружения стандартными антивирусными пакетами сводится практически к нулю. Для противодействия здесь необходимо использовать дисковые ревизоры, подсчитывающие контрольные суммы, такие как "инспектор" AVP Никишина из пакета Касперского или Adinf Мостового. Об этом пойдет речь в следующих статьях, отмечу, что при грамотном применении для большинства хакеров эти ревизоры становятся непреодолимым или труднопреодолимым препятствием.
www.geocities.com/werebad/
(c) компьютерная газета
Компьютерная газета. Статья была опубликована в номере 45 за 2000 год в рубрике безопасность :: разное