В настоящее время многие Web администраторы столкнулись с серьезными вторжениями в свои сервера, которые часто заканчивались судебными исками. Первым очевидным свидетельством для обнаружения злоумышленников, конечно, являются лог-файлы IIS. Однако в этом случае сразу же возникает вопрос о том, возможно ли использовать IIS лог-файлы в качестве свидетельских показаний в суде. Может ли представитель защиты заявить, что записи в этих файлах недостаточно достоверны и поэтому не могут считаться свидетельским показанием?
Марк Бернетт <mailto:mburnett@xato.net>
В настоящее время многие Web администраторы столкнулись с серьезными вторжениями в свои сервера, которые часто заканчивались судебными исками. Первым очевидным свидетельством для обнаружения злоумышленников, конечно, являются лог-файлы IIS. Однако в этом случае сразу же возникает вопрос о том, возможно ли использовать IIS лог-файлы в качестве свидетельских показаний в суде. Может ли представитель защиты заявить, что записи в этих файлах недостаточно достоверны и поэтому не могут считаться свидетельским показанием?
Недавно в рамках одного криминального расследования я занимался исследованием серьезного вторжения. Злоумышленник проник в IIS сервер, загрузил свои программные инструменты, с помощью которых вторгся во внутреннюю базу данных компании. Мы приблизительно знали, когда это случилось, но было неизвестно, через какой из нескольких сотен веб-сайтов на дюжине серверов произошло вторжение.
"Перекопав" сотни лог-файлов Web серверов, я натолкнулся на один лог-файл, в котором среди тысяч отметок о вхождениях имелась одна пустая строчка. Я проверил последнее изменение даты этого файла и обнаружил, что она была изменено спустя два дня после того, как лог-файл был закрыт. Сотни мегабайтов показаний лог- файла внезапно стали бесполезными из-за единственной пустой строчки. Поскольку лог-файлы хранились на том же самом сервере, через который произошло вторжение, злоумышленник, возможно, легко удалил отметку о своем вхождении или, хуже того, заменил ее ложной записью. Изменение всего лишь одного лог-файла заставляет подвергнуть сомнению истинность всех лог-файлов на этом сервере.
Для доказательства подлинности ваших лог-файлов необходимо привести убедительные аргументы, так как только в этом случае эти лог-файлы могут быть приняты судом в качестве свидетельства. Поэтому необходимо предпринять меры защиты ваших лог-файлов, которые бы гарантировали их точность, подлинность, а так же возможность обращения к IIS лог-файлам. Хотя, следует отметить, что существует множество юридических сложностей, и в каждом конкретном случае необходимо найти верное решение проблемы. Ниже приведены некоторые советы, которые должны увеличить достоверность ваших IIS лог-файлов.
Понятие точность лог-файла означает, что Вы можете доказать точность данных этого файла. Даже самая небольшая неточность может поставить под сомнение истинность данных. Следующие действия помогают Вам обеспечить точность данных:
Регистрируйте всё. Настройте свои IIS лог-файлы так, чтобы в них записывались все действия. Хотя некоторые администраторы не видят большой ценности в хранении этой дополнительной информации, тем не менее, каждая такая запись имеет значение, если мы производим расследование. Однажды, проверяя лог-файлы после вторжения, я по некоторым признакам обнаружил, что нападавший создал файлы в директории C:\ \WINNT. Однако я не мог определить местонахождение этих файлов на жестком диске. Просмотрев более внимательно лог-файлы, я заметил, что имя сервера не соответствовало имени, зарегистрированному в IIS лог-файлах. Оказалось, что компания недавно перевела веб-сайт на новый сервер. Проверив старый сервер, я немедленно нашел нужные файлы. Без зарегистрированного имени хоста я не смог бы сделать это.
Кроме того, информация о посетителях сети помогает устанавливать, что нападение исходит от определенной компьютерной системы или зарегистрированного пользователя. Например, предположим, ответчик утверждает, что хакер вторгся в его компьютер и установил анонимный прокси сервер, а затем использовал его для нападения на другие системы. Как доказать, что трафик прибыл от веб-браузера некоторого пользователя или нападение исходило от кого - то еще? Хотя не всегда это можно доказать, но чем больше информации Вы соберете, тем больше шансов разобраться с данным конкретным случаем.
Синхронизируйте время. Синхронизируйте ваши IIS серверы с внешним источником времени пользуясь службой времени Windows. Если Вы используете домен, служба времени будет автоматически синхронизирована с контроллером домена. На автономном сервере, Вы можете синхронизировать время следующим образом:
Key: HKLM\SYSTEM\CurrentControlSet|Services\W32Time\Parameters\
Setting: Type
Type: REG_SZ
Value: NTP
Key: HKLM\SYSTEM\CurrentControlSet|Services\W32Time\Parameters\
Setting: NtpServer
Type: REG_SZ
Value: tock.usno.navy.mil (see <http://tycho.usno.navy.mil/ntp.html> для списка NTP серверов.)
Key: HKLM\SYSTEM\CurrentControlSet|Services\W32Time\Parameters\
Setting: Period
Type: REG_SZ
Value: 24 (количество синхронизаций в день. Если 24, то синхронизация будет производиться каждый час. Можно устанавливать меньшее количество.)
Другая проблема, связанная со временем, заключается в том, что IIS записывает лог-файлы, используя единое время. Предполагается, что это помогает синхронизации, когда сервер обслуживает зоны во многих часовых поясах. Однако Windows вычисляет единое время, изменяя системное время на поясную поправку. Единственный способ быть уверенным в правильности установки единого времени - правильная установка местного времени.
Существует способ, позволяющий проверить то, что IIS лог-файлы используют местное время. Вы можете проверить установку часового пояса сервера, просмотрев первые вхождения в лог-файле. Если на вашем сервере поясная поправка равна -0600, то первые вхождения (за день) в лог-файле должны появиться около 18:00 (00:00 - 06:00 = 18:00). Поскольку в едином времени не учитываются переходы на летнее время, Вы должны также обращать внимание на дату. Например, поясная поправка - 6:00 через полгода будет равна -5:00.
Используйте множественные датчики. Трудно опровергнуть регистрацию вхождения, если оно записано двумя различными устройствами. Комбинируя лог-файлы от нескольких устройств, Вы усиливаете ценность каждого из них. Лог-файлы Firewall и IDS и даже столь же простые, как TCPDump могут помочь доказать, что с данного IP адреса происходит атака на определенный сервер в определенное время.
Избегайте пропускать лог-файлы. Одна из проблем IIS лог-файлов состоит в том, что, если сервер не атакуется в течение 24 часов, то лог-файлы не создаются. А когда лог-файлов нет, невозможно узнать, подвергался ли сервер атаке (например, работал в автономном режиме в течение дня) или лог-файл был удален. Чтобы избежать возникновения этой проблемы, я предпочитаю организовывать несколько запланированных атак каждый день. Так как в этом случае я могу быть уверенным, что лог-файл всегда создается.
Для этого, я использую Graburl, который Вы можете найти на <http://www.kiraly.com/software/utilities/graburl/>
Используя планировщика задач (Task Scheduler), я организовываю две атаки на сервер сети: одну от своего хоста, а другую - от внешнего, при помощи простой команды:
Graburl.exe www.example.com
Причина того, что требуются две атаки, состоит в следующем: первая атака со своего хоста проверяет, что сервер работает, а вторая проверяет, что сервер доступен из Интернета. Кроме того, вторая атака также проверяет синхронизацию времени. Если вторая атака запланирована в 1:00, AM каждый день, соответствующие вхождения в лог-файле должны всегда происходить в 1:00 AM. В общем, запланированные атаки помогают доказывать, что механизм лог-файлов работает должным образом.
Если сервер сети выключен более чем на 24 часа, лог-файл не будет записан, но ваш EventLog укажет, что сервер был выключен. Применяя эти инструменты, Вы можете быть уверены, что, если лог- файл отсутствует, то это скорее всего связано с тем, что файл был преднамеренно удален.
Подлинность лог-файла
Лог-файлы называются подлинными, если можно доказать, что они не были изменены со времени первоначальной записи. IIS лог-файлы являются обычными текстовыми файлами, которые легко изменить. Дата файла и отметки времени также могут легко быть изменены. В случае недоверия IIS лог-файлы не могут считаться подлинными, но при помощи следующих действий, Вы можете исправить эту ситуацию.
Переместите лог-файлы. Чтобы гарантировать подлинность, переместите IIS лог-файлы из Веб-сервера. Если сервер был компрометирован, Вы должны предполагать, что лог-файлы также, возможно, были скомпрометированы. Переместите лог-файлы на мастер-сервер, после чего, как можно быстрее, переместите их (в автономном режиме) на ленту, компакт-диск, или WORM device.
Подписи, кодирование и контрольные суммы. Единственный способ, абсолютно гарантирующий, что лог- файл не был изменен, - это подписать и закодировать лог-файл при помощи PGP или другой схемы кодирования. Подписи файла полезны, потому что, если отдельный лог-файл испорчен, другие файлы истинны. Вы можете также использовать инструмент типа Fsum <http://www.slavasoft.com/fsum/>, чтобы быстро сгенерировать MD5 - таблицы для файлов. Храните подписи и хэш-таблицы вместе с лог-файлами, но также храните и защищенную копию в отдельном месте.
Обратите внимание, что, если Вы используете автоматизированный процесс подписывания файлов, Вы должны всегда иметь собственноручную подпись администратора, которому доверяете.
При шифровке файлов, Вы должны иметь в виду воздействие на созданные, измененные, и входные данные, которое может произойти. Вы можете сделать запись этих данных в отдельном месте, используя утилиту типа Fdir <http://www.roninsg.com/fdir.zip>.
Работайте с копиями. При выполнении анализа лог-файла, никогда не работайте с оригинальными файлами. Делайте копии перед выполнением любой последующей обработки или анализа. Создание уверенности, что оригинальные лог-файлы не затронуты, помогает Вам гарантировать, что они все еще подлинны. Если Вы используете лог-файлы в качестве свидетельских показаний, Вы должны представить оригинальные файлы в их первоначальном виде. Заметим, что в Федеральном законе Соединенных Штатов о свидетельских показаниях записано: точная распечатка также может рассматриваться, как свидетельское показание (см. Federal Rules of Evidence 1001(3) <http://www.law.cornell.edu/rules/fre/>).
Следите за целостностью системы. Вы всегда должны проверять сервисные пакеты и hotfixes, чтобы гарантировать, что ваши системные файлы в порядке. Вы должны также проверять все изменения в бинарных файлах вашей директории WINNT. Если злоумышленник способен изменить системные файлы, которые делают запись лог-файлов, то лог-файлы не могут являться свидетельским показанием.
Установите процесс. Имейте в виду, что хорошо установленный и зарегистрированный процесс может реально помочь устанавливать подлинность. Процедура, дающая состоятельные результаты, может помочь установить, что файлы подлинны. Кроме того, убедитесь, что у вас есть зарегистрированный и состоятельный метод для того, чтобы захватывать дополнительное свидетельства (типа использования диагностических утилит сети против нападающего), потому что деловые отчеты, созданные в ожидании тяжбы могут не всегда быть приемлемы на суде. Это особенно верно, когда желание следовать закону требует от вас использование инструментов типа сниффера, чтобы собирать дополнительные свидетельства.
Установление процесса означает создание документа, который записывает все ручные или автоматические действия. Кроме того, любые записи, которые Вы используете при обработке лог-файла, должны также содержать комментарии, точно объясняющие, какая обработка производится. Методы, которые Вы используете в вашем процессе, должны быть общепринятыми процедурами для управления лог-файлами.
Контроль доступа
Как только лог-файл создан, важно предохранить его от возможности проникновения и проверять все законные и незаконные доступы. Если Вы должным образом обеспечиваете и проверяете лог-файл, пользуясь NTFS разрешениями, Вы имеете документальное свидетельство, помогающее установить его достоверность.
Ограничьте доступ к файлу. Лог-файл должен иногда разрешать доступ, чтобы IIS мог записывать в файл. Но после того, как лог-файл закрыт, ни у кого не должно быть разрешения на изменение содержание файла. Вы можете использовать список команд для блокирования разрешений и проверок после закрытия лог-файла. Кроме того, когда Вы перемещаете лог-файлы, убедитесь, что NTFS разрешения правильно установлены в новом месте.
Цепь охраны. Когда Вы перемещаете лог-файлы с сервера на автономное устройство, Вы должны сохранить путь следования Вашего файла. Это может быть сделано с помощью технических или нетехнических методов. Например, один мой клиент опечатывал свои ленты с резервными копиями и использовал специальный лэйбл для записи физического движения ленты. Прослеживание охраны свидетельств особенно важно при восстановлении содержания резервных копий в криминальном расследовании.
Имейте в виду, что каждодневный процесс сбора лог-файлов однажды может стать частью сбора свидетельских показаний в криминальном расследовании. Вы всегда должны рассматривать ваш IIS веб- сервер, как место возможного преступления и поэтому содержите свои лог-файлы так, чтобы они могли использоваться в качестве свидетельских показаний.
В мире имеется множество законов. В современной юридической практике лог-файлы часто рассматривают всего лишь как деловые отчеты. Если Вы хотите, чтобы суд принял лог-файлы в качестве свидетельских показаний, то необходимо следовать некоторым правилам, чтобы гарантировать их достоверность. Не всегда есть четкое определение того, что является допустимым, а что является достоверным. Но, как и в случае со свидетелями суда, эти понятия часто сводятся к правдоподобности. Чем больше у Вас зарегистрированных свидетельств, тем более правдоподобны Ваши IIS лог-файлы.
Конечно, Ваши местные законы могут различаться, и ваш адвокат может иметь другое мнение о том, что делает лог-файл достоверным. Обсудите эти проблемы с вашим адвокатом, и установите процесс, который будет гарантировать точность, подлинность, и управляемый доступ к Вашим IIS лог-файлам.
Гравитация научных фактов сильнее, чем вы думаете