В данной работе ставится задача определить условия, при которых логи (конечно, не сами по себе логи, а производные от них доказательства) могут и должны иметь доказательную силу.
Опубликованная ранее статья И.В.Собецкого на ту же тему, хотя и декларирует мнение, которое автор разделяет, мнение о доказательности компьютерных логов, но, к сожалению, не вносит ясности в вопрос, в каких случаях логи должны иметь доказательную силу, а в каких – не должны.
В судебно-следственной практике автор встречал такие крайности, как полное отрицание следователем какого-либо значения логов вообще или принятие судьёй в качестве доказательства распечатки логов, принесённой потерпевшим (даже без подписи).
В данной работе ставится задача определить условия, при которых логи (конечно, не сами по себе логи, а производные от них доказательства) могут и должны иметь доказательную силу.
Лог (компьютерный лог, компьютерный журнал регистрации событий) – организованный в виде файла, базы данных (реже – массива в оперативной памяти) массив записей о событиях, зафиксированных какой-либо программой, группой программ, информационной системой. Лог ведётся автоматически, без участия человека. Как правило, соблюдается принцип: одно событие – одна запись. Как правило, каждая запись снабжается меткой времени. Обычно записи сохраняются на диске (реже – печатаются на принтере) по мере их генерирования, по возможности, независимо от генерирующей их программы, чтобы они оказались доступны для изучения даже в случае сбоя или аварийного завершения программы.
Форма записей может быть произвольной, на усмотрение автора программы. Записи лога могут иметь более «гуманитарную» форму, то есть, ориентироваться на восприятие человеком. Записи могут быть машинно-ориентированными, то есть, предназначаться для лёгкого восприятия другой программой. Чаще придерживаются промежуточной формы.
Следует отличать генерацию логов и ведение логов. Ведение логов включает: запись их в соответствующий файл или базу данных, снабжение меткой времени и идентификатором источника, агрегирование (объединение одинаковых или схожих записей), своевременное удаление старых записей и т.д. Ведение логов может осуществляться самой генерирующей программой, а может быть передано специализированной (логирующей) программе, такой как «syslogd».
Доказательная сила логов базируется на их коректности и неизменности. Суд должен быть уверен, что представленные логи отражают реальные события с корректными параметрами. Также суд должен быть уверен, что логи не были изменены каким-либо образом, искажающим их смысл. Кроме того, следует позаботиться о корректной интерпретации логов.
Доказательность обеспечивается следующей цепочкой элементов:
В том случае, когда генерирующая программа сама ведёт свои логи (не применяется специализированная логирующая программа), пункт 2 исключается, а пункты 1 и 3 объединяются.
Подчеркнём, что вышеперечисленные пункты составляют именно цепочку, то есть, при выпадении одного звена лишаются опоры последующие звенья.
Рассмотрим каждый из пунктов по отдельности и укажем, какие меры обеспечивают действительность каждого из них.
Любая программа может содержать ошибки. Ошибки эти могут возникать спорадически или систематически. В первом случае запись может быть верной или неверной, в зависимости от сочетания случайных или псевдослучайных факторов. Во втором случае ошибка будет носить регулярный характер.
Вероятность наличия ошибки в программе зависит от её производителя. Считается, что она в целом ниже для производителей, применяющих передовые технологии производства программного обеспечения, организовавших процесс производства в соответствии с современными рекомендациями и сертифицировавших этот процесс по стандарту ISO-9001. Тем не менее, ни у какого производителя вероятность ошибки нельзя считать пренебрежимо малой величиной.
Примеры
В качестве иллюстрации систематических ошибок в логах приведём примеры из практики автора.
Программа «akpop3d» версии 0.7.6 - сервер доставки электронной почты (MDA).
Вот фрагмент лог-файла «maillog», в котором собираются логи как от «akpop3d», так и от сервера электронной почты (MTA) «sendmail».
Dec 12 21:34:28 home sm-mta[4045]: kBCIYOxr004045:
from=<chadwicks_coupon@1-coupon.com>, size=3494, class=0, nrcpts=1,
msgid=<01c71e1c$7a5d7050$6c822ecf@chadwicks_coupon>, proto=ESMTP,
daemon=IPv4, relay=aihs-tun [10.5.0.1]
Dec 12 21:34:39 home sm-mta[4046]: kBCIYOxr004045:
to=<fnn@home.fnn>, delay=00:00:12, xdelay=00:00:11, mailer=local,
pri=33713, relay=local, dsn=2.0.0, stat=Sent
Dec 12 21:38:15 home sm-mta[4051]: kBCIcCrw004051:
from=<Most@andersonagency.net>, size=49465, class=0, nrcpts=1,
msgid=<000c01c71e1c$a3249630$00000000@eigenaarih63rh>, proto=ESMTP,
daemon=IPv4, relay=aihs-tun [10.5.0.1]
Dec 12 21:38:17 home sm-mta[4052]: kBCIcCrw004051:
to=<fnn@home.fnn>, delay=00:00:03, xdelay=00:00:02, mailer=local,
pri=79666, relay=local, dsn=2.0.0, stat=Sent
Dec 12 21:39:08 home akpop3d[1353]: Connection from 0.80.7.40:1033
Dec 12 21:39:08 home akpop3d[4054]: Authenticated fnn
Dec 12 21:41:01 home akpop3d[4054]: Connection closed
Dec 12 21:45:16 home sm-mta[4076]: kBCIjBAE004076:
from=<dhickling@comidamexicana.com>, size=5985, class=0, nrcpts=1,
msgid=<000101c71e82$e4adb7ab$9eb3b218@comidamexicana.com>,
proto=ESMTP, daemon=IPv4, relay=aihs-tun [10.5.0.1]
Dec 12 21:45:21 home sm-mta[4077]: kBCIjBAE004076:
to=<fnn@home.fnn>, delay=00:00:09, xdelay=00:00:05,
mailer=local, pri=36186, relay=local, dsn=2.0.0, stat=Sent
В логе зафиксирован доступ по протоколу POP с IP-адреса 0.80.7.40 (см строку 5), хотя на самом деле доступ был с адреса 10.0.0.2 (в этом сегменте присутствует вообще единственный клиентский компьютер). Подобная запись с некорректным IP-адресом повторяется в логе из раза в раз. Очевидно, что в программе «akpop3d» имеется систематическая ошибка, приводящая к некорректной записи в лог. Скорее всего, происходит непредусмотренный побитовый сдвиг или данные считываются по неверному адресу памяти.
Другая иллюстрация систематических ошибок в логах. Операционная система межсетевого экрана «Cisco PIX».
Для протокола DNS/UDP вместо номера порта показывается ID запроса. Объявлена в версии 4.4(2), исправлена в версии 6.0(1), идентификатор ошибки (caveats) – "CSCdt72080". Всего в системе учёта ошибок (Bug Toolkit) фирмы «Cisco Systems» зарегистрировано 312 ошибок, связанных с логами. Общее же число ошибок за весь период жизни ПО – десятки тысяч.
Справедливости ради следует отметить, что ПО «Cisco Systems» пользуется хорошей репутацией и имеет далеко не самое высокое удельное число ошибок, которые, к тому же, исправно учитываются и своевременно исправляются.
Итак, следует признать, что генерирующая логи программа может допускать ошибки. Однако само по себе это обстоятельство не может служить обоснованием для сомнений. (Имеются в виду именно те сомнения, которые упоминаются в презумпции невиновности - ч.3 ст.14 УК.) Таковым обоснованием является лишь наличие известной ошибки, которая:
При передаче записей от генерирующей программы к логирующей программе ошибки, приводящие к искажению информации, можно не рассматривать. Их вероятность пренебрежимо мала. Зато не мала вероятность недоставки одной или нескольких записей от генерирующей программы к логирующей. Особенно когда эта доставка происходит через сеть по протоколу syslog (RFC-3164 "The BSD syslog Protocol"), который не имеет механизма подтверждения приёма сообщения.
То есть, на этом этапе не следует сомневаться в корректности записи о событии, но стоит предусмотреть возможность пропуска одной или нескольких записей. Особенно если при экспертном исследовании были установлены факты пропуска отдельных сообщений при тех же условиях передачи.
Вероятность ошибки, связанной с искажением записи в процессе ведения логов весьма мала, хотя и ненулевая. Зато весьма существенной является вероятность ошибки, связанной с меткой времени. Время события может содержаться в самой сгенерированной записи, а может и не содержаться. Эта запись передаётся логирующей программе, которая обычно добавляет свою собственную метку времени. Часы на разных компьютерах могут показывать разное время. Ошибка в установке часов компьютера может быть небольшой, вследствие естественной их неточности; такая ошибка обычно не превышает 1-3 минут. Она может быть большой вследствие ошибочной установки часов, намеренно сдвинутого времени или путаницы часового пояса; такая ошибка может исчисляться часами, годами и даже десятилетиями.
В связи с изложенным, при осмотре и экспертном исследовании необходимо фиксировать показания часов обоих компьютеров – где работает генерирующая логи программа и где работает логирующая программа.
Логи обычно хранятся в текстовом файле, бинарном файле или базе данных. Собственно процесс хранения не чреват ошибками и искажениями содержания логов. Следует учитывать лишь два фактора: возможную намеренную фальсификацию логов каким-либо лицом и уничтожение логов по истечении установленного срока хранения.
Поэтому во время изъятия логов или при изучении их экспертом необходимо отметить права доступа на запись для различных пользователей, а также настройки систем хранения, ротации и чистки логов.
Сомнения по поводу намеренного искажения логов не могут возникнуть лишь в силу существования самой технической возможности их искажения. Для обоснованности сомнений требуется наличие признаков, свидетельствующих о факте доступа на запись к логам.
Когда логи осматриваются и изымаются «на месте», без передачи компьютера целиком на экспертизу, возможны следующие ошибки и сложности.
Логи могут иметь достаточно большой размер – миллионы записей и больше. Просмотреть глазами и распечатать на бумаге такие логи невозможно. Для их просмотра и распечатки приходится применять фильтры, например, программу «grep». Задать «фильтрующие» выражения – задача простая лишь на первый взгляд. Здесь легко ошибиться даже для специалиста.
Например, мы осматриваем лог веб-сервера «Apache». Сервер активно используется в основном локальными пользователями из сети 10.0.0.0/16. Есть сведения, что злоумышленник осуществлял несанкционированный доступ к этому серверу, используя IP-адрес из другой сети, какой именно, неизвестно. В суточном логе пара сотен тысяч записей, и просмотреть или распечатать его целиком нельзя.
Участвующий в осмотре специалист, не думая, набирает команду, которая, на первый взгляд, очевидна. Она должна отфильтровать обращения со всех местных IP-адресов, начинающихся на «10.0.», оставив только «чужие» IP-адреса:
grep -v " 10.0." /data/apache/logs/access.log
(показать все записи лога кроме тех, где встречается подстрока, указанная в кавычках; перед «10» поставлен пробел, чтобы не попали записи, где «10» - это третий или четвёртый октет IP-адреса)
В результате происходит незамеченная, но фатальная ошибка! Не обнаруженными оказываются все записи, в которых метка времени соответствует заданному шаблону. То есть, все записи в период с 10:00:00 до 10:09:59. В эти-то десять минут злоумышленник и осуществил свой доступ. Специалист забыл, что в шаблоне команды «grep» символ «.» означает не точку, а любой одиночный символ.
Эту ошибку можно обнаружить постфактум, если в протоколе осмотра точно воспроизведена применённая команда. Эту ошибку можно не только обнаружить, но и исправить, если кроме распечатки выдержки из лога полный лог был скопирован на компакт-диск и приложен к протоколу.
Логи могут храниться в нескольких местах, например, в нескольких файлах. Причём, содержимое разных лог-файлов может (а) совпадать, (б) являться подмножеством одно другого, (в) частично пересекаться, (г) взаимно дополнять друг друга без пересечения. Поэтому при изъятии следует зафиксировать настройки, отвечающие за распределение записей по местам хранения. Также важно не упустить какой-либо лог, который может храниться в нестандартном месте.
В протоколе осмотра должны быть указаны сведения, относящиеся как к корректности, так и к полноте осмотра. То есть, желательно описать все возможные места хранения логов, привести настройки программ, отвечающих за их хранение, осмотреть и приложить к протоколу в бумажном виде наиболее существенные записи, а все прочие логи, программы, настройки в полном объёме скопировать на диск и приложить к протоколу.
Когда есть такая возможность, лучше произвести полное копирование всего содержимого жёсткого диска на самом низком из возможных уровней. Например, при помощи программы «dd» или специальным аппаратным дупликатором дисков.
Изъятые логи либо распечатываются на бумаге и прилагаются к протоколу, либо записываются на компьютерный носитель, который опечатывается и хранится в деле. Лучше совместить оба способа.
Ещё одной гарантией корректности осмотра логов и неизменности информации после изъятия является участие в следственном действии специально подобранных понятых.
В соответствии с УПК, понятой призван удостоверить факт производства следственного действия, а также его содержание, ход и результы (ст. 60 УПК). Для тех действий, которые проводятся непосредственно, понятой не должен обладать какими-то особенными свойствами кроме исправности зрения, слуха, а также дееспособности. Все действия с компьютерной информацией проводятся при посредстве разнообразных технических средств. Для применения этих технических средств, разумеется, нужен специалист. Но понятые также должны понимать смысл проводимых действий, их содержание и последствия. Рекомендуется для участия в таких следственных действиях привлекать понятых, обладающих познаниями относительно осматриваемых аппаратных и программных средств, о чём сделать запись в протоколе.
В ряде случаев записи лога интерпретируются следователем. Иногда спрашивают совета специалиста.
Вспоминается случай, когда материал относительно неправомерного доступа принесли одному генералу. Большую часть материалов составляли разнообразные логи. Также были приложены распечатки записей из базы данных RIPE (регистратора IP-адресов) относительно встречавшихся в логах адресов. Посмотрев бумаги с умным видом, генерал приказал задержать и допросить хакера. Когда опер ему возразил, что злоумышленник пока ещё не установлен, генерал заявил, что доказательства, конечно, ещё предстоит собрать и оформить, но мы-то хакера уже знаем: вот в логах его фамилия, адрес и телефон – и ткнул пальцем в запись типа "person" в распечатке из whois.
Автору представляется, что интерпретация лога как такового, без предварительного ознакомления с программами, его создавшими и обработавшими, а также их настройками – некорректна. Поэтому следует документировать не только сами логи, но также имеющие к ним отношение программы, их настройки и окружение. Кроме того, следует получить мнение специалиста или эксперта относительно интерпретации логов на основании вышеуказанной информации.
Итак, на основании вышеописанной «цепочки доказательности логов» дадим рекомендации по процедуре получения и приобщения к делу соответствующих доказательств.
Предположим, имеются основания считать, что на известном сервере в логах зафиксированы события, связанные с преступлением и позволяющие установить и изобличить преступника. Как провести следственные действия?
Понятно, что нет возможности доказать отсутствие всех ошибок во всех программах и настройках, нет возможности строго доказать отсутствие любых фальсификаций со стороны любых лиц. Однако это не означает, что следует ударяться в противоположную крайность и вовсе никак не проверять и не удостоверять корректность и неизменность информации из логов. Вредны обе крайности – как вообще не проверять условий и окружения, так и требовать полного аудита безопасности осматриваемого сервера.
Степень строгости и подробности зависит от возможностей следствия и от судебной практики. Автор предлагает три варианта, отличающиеся подробностью и строгостью доказывания – нестрогий, промежуточный и строгий. Назовём их соответственно...
Следователь или оперуполномоченный совместно со специалистом (из числа сотрудников, обслуживающих осматриваемый сервер) и понятыми проводит осмотр содержимого сервера. При этом используются штатные программные и аппаратные средства, имеющиеся на сервере. Составляется протокол осмотра, где отражается следующее:
Нужные записи из нужных логов выбираются при помощи соответствующих фильтров, распечатываются на принтере и прилагаются к протоколу осмотра.
Все листы протокола и приложений подписываются участниками осмотра.
Для участия в следственном действии приглашается независимый специалист. Представитель владельца сервера (желательно из числа технических сотрудников) также участвует в осмотре. Понятые приглашаются не любые, а квалифицированные. В протоколе делается запись, что «понятые имеют необходимую квалификацию в области ИТ, знания по осматриваемой технике и ПО и поэтому полностью понимают смысл всех производимых в ходе осмотра действий».
Помимо указанных в предыдущем варианте данных, также собираются и отражаются в протоколе следующие:
Существенные записи из логов выбираются и в печатном виде прилагаются к протоколу. При этом полные логи, задействованные программы и их настройки копируются на компакт-диск типа CD-R или DVD-R, который опечатывается и прилагается к протоколу. В случае необходимости этот диск можно будет отправить на экспертизу.
При участии следователя, квалифицированных понятых, специалиста и представителя владельца сервера нужный сервер отключается, опечатывается должным образом и отправляется на экспертизу.
Перед экспертом ставятся вопросы касательно содержания логов, их интерпретации, а также вопросы о возможности случайных ошибок, о защищённости системы, о следах возможной фальсификации или несанкционированного удаления логов.
В качестве альтернативы изъятию сервера целиком возможно снятие на месте полной копии его дисков при помощи специализированного аппаратного устройства или программным способом. Копия диска или образ диска затем передаётся на экспертизу с такими же вопросами.
Сами по себе логи никакой доказательной силы не имеют. Доказательствами по делу служат "производные" от логов материалы:
Из доказательств должны следовать корректность и неизменность логов на всех этапах их "жизненного цикла" от генерации до интерпретации.
Не могут являться доказательством логи (их копии, распечатки, акты осмотра), полученные заинтересованной стороной.
Компания SoftKey – это уникальный сервис для покупателей, разработчиков, дилеров и аффилиат–партнеров. Кроме того, это один из лучших Интернет-магазинов ПО в России, Украине, Казахстане, который предлагает покупателям широкий ассортимент, множество способов оплаты, оперативную (часто мгновенную) обработку заказа, отслеживание процесса выполнения заказа в персональном разделе.
Спойлер: она начинается с подписки на наш канал