Подводка ведущего
Всем спасибо. Спасибо. И прежде чем представить нашего следующего спикера, давайте представим сначала одну довольно знакомую всем ситуацию. Открываешь телефон, все удалено, данных, конечно же, нет, записей тоже нет, но все мы прекрасно знаем, что цифровой мир устроен иначе. Как работать с базами SQLite, расскажет нам следующий спикер Алексей Москвичев. Встречайте аплодисментами.
Доклад
Добрый день, уважаемые коллеги. Да, Дмитрий меня представил.
Так, что у нас с кликером. Ага, пошел. Да, сегодня я предлагаю поговорить о журналах баз данных SQLite. Мы с вами коротко рассмотрим, какие данные они хранят, Это как можно посмотреть, найти, казалось бы, на первый взгляд удаленную информацию. Ну и у нас есть три практических кейса, которыми с нами поделились практические сотрудники. Я думаю, что будет интересно. Почему, во-первых, SQLite? Да потому что существует уже больше 20 лет наиболее распространенная, скажем так, система управления базами данных для большинства мобильных и настольных операционных систем. Собственно говоря, не требует отдельного сервера, почти не требует настройки, хранит данные в обычных файлах, ну и отличается довольно высокой производительностью и занимает совсем немного места.
И если посмотреть на нее глазами эксперта, то становится очевидным, что на современном цифровом устройстве находятся десятки, порой сотни различных баз данных, в которых хранятся и сообщения, какие-то данные местоположения, история браузера, сведения банковских приложений в том числе и так далее. Но порой интерес в том числе представляет не сама база данных, а ее журналы, которые могут предоставить не менее ценную информацию.
Итак, давайте представим такую упрощенную картину, назовем так. Пользователь открывает какое-то приложение, пишет сообщение, отправляет его кому-то, потом его редактирует и потом решил его удалить. Какое состояние увидит специалист или эксперт в основной базе данных database.db? Фактически, наверное, итоговое состояние системы, либо вообще отсутствие сообщения, если оно было удалено, но так называемые журналы SQLite способны сохранять все три состояния системы.
Механизм WAL: что сохраняется и почему журнал надо снять первым
Ну и, собственно говоря, давайте с вами коротко, я думаю, что здесь не открою Америку, но здесь присутствуют разные у нас пользователи, в том числе и юристы, чтобы для них было понятно. В целом, с точки зрения механизма WAL разберем, как это работает. То есть раньше все пользовательские данные писались в основной файл баз данных, но с SQLite 3.7 ведется так называемый журнал изменений, все новые какие-то измененные сообщения, в том числе удаленные удаления записываются вот в этот журнал WAL так называемый. После процедуры так называемой чекпоинта или контрольной точки они переносятся в основную базу данных, database.db.
И вот как раз при исследовании мобильного устройства, в частности, при получении физического образа или полной файловой системы, как раз желательно анализировать файлик database.db и database.wal. Еще один файлик есть служебный, в нем пользовательских данных не содержит, но, скажем так, триаж этих файлов позволяет в комплексе анализировать данные приложений. Собственно говоря, я уже сказал, какие записи могут содержаться в журнале. Это какие-то новые записи, еще не перенесенные в database, удаленные, какие-то предыдущие состояния системы, временные состояния, черновики, возможно. Либо незавершенные транзакции ввиду, допустим, устройство резко было выключено, перезагружено грубо и так далее.
Вот, собственно говоря, какие транзакции могут там содержаться. Но здесь не стоит обольщаться. Собственно говоря, эти журналы перезаписываются. Сразу сейчас могут понять юристы, что мы всю удаленку можем найти, посмотреть, она точно там будет. Нет. Все эти журналы перезаписываются. И тут основная цель — зафиксировать этот журнал до момента схлопывания и до того, как эти данные будут перенесены в основную базу данных. И еще один простой пример. Пишу другу в 6 вечера: встречаемся в 18:00, потом я его меняю и удаляю. Вот, собственно говоря, в журнале WAL будут сохранены все три состояния системы, если коротко.
Три кейса: вредоносные APK из Telegram и кредиты на потерпевших
Ну, теории довольно, я думаю, давайте перейдем к практическим кейсам. В одном из регионов произошли похожие инциденты, скажем так. Пользователь, который предоставил нам эту информацию, сейчас нас смотрит. Мы ему передаем большой привет. К сожалению, не смог приехать. Потом потерпевшие обратились с заявлением о том, что были на их имя оформлены кредиты незаконно, сами они никаких действий по оформлению, соответственно, не предпринимали, но незадолго до этих инцидентов переходили по каким-то ссылкам, кто-то устанавливал какие-то приложения.
Ну и, собственно говоря, одна из версий, которая была выдвинута: скорее всего, на устройстве присутствовало какое-то ПО. Для проверки этой версии устройства потерпевших были изъяты, направлены на экспертизу в региональный ЭКЦ. Дальше нашим продуктом было произведено извлечение файловой системы устройств. Методы перед вами. Unisoc / Spreadtrum Android и Samsung потянули данные методом FFS, полная файловая система, уязвимость 31317.
Ну и дальше уже в нашей секции «Вредоносные объекты» просканировали файловую структуру на наличие вредоноса. Данных никаких обнаружено не было. Ну и в дальнейшем эксперт принял решение провести углубленное исследование операционной системы Android, чтобы уже не сами файлы фактически, которых было бы странно, если бы они там находились, искать, а уже поискать следы активности вот этих исполняемых файлов.
Первый инцидент называется «Поиск по ФИО бп», дальше поймете. Ну, первой находкой стал журнал — видите — threats.db-wal приложения Сбера. Собственно говоря, там была обнаружена запись о файле base.apk, который как раз встроенный антивирус Сбера, антивирусный модуль Сбера, определил как троян. Сам файл уже на устройстве отсутствовал, да, но сохранился его уникальный идентификатор. Обратите внимание, то есть вот на этом уже этапе можно было сделать промежуточный вывод, что на устройстве присутствовало какое-то ПО, которое как раз приложение Сбера сдетектировал как потенциально вредоносное.
Дальше служебный журнал Android, тоже вам, наверное, большинству хорошо знаком, который регистрирует все сведения об установленных приложениях на текущий момент. В нем информации не было, приложений не было и данных не было с этим идентификатором. Будем упрощенно называть его «ок». Идентификатор «ок». Не было, но вот еще один служебный журнал устройств бюджетных Tecno, Infinix и itel. Обратите внимание, palm-a, да, он зарегистрировал, как раз сохранил события регистрации приложения в системе 12 ноября 25 года в 4:39.
Дальше, в системной базе данных gass.db, это гугловая база данных, Google Play Protect, да, как раз сохранилась информация о хеше этого исполняемого файла по его идентификатору. Ну а дальше уже можно было поискать по базам какого-то специализированного ПО. Есть, все вы хорошо, наверное, их знаете. Попробовать сопоставить с доп. эпизодами по похожим составам, что, собственно говоря, и было сделано. Следующим шагом для эксперта стал ответ на вопрос, какие вообще возможности имело приложение, что оно могло делать на устройстве. Вот еще в одном файле Android, AndroidManifest.xml, была информация о разрешениях, которые были предоставлены этому приложению.
Обратите внимание, это отправка и получение СМС и подключение к сети. Конечно, никто не говорит о том, что все эти разрешения, если они предоставлены, выполнялись, но тем не менее сам факт этих разрешений говорит о многом. Далее, следующим вопросом, на который предстояло ответить, это, собственно говоря, как оно пользователю-то обычному было известно, под каким именем. И вот здесь еще один служебный файл этих устройств Tecno, Infinix и itel позволил ответить на этот вопрос. Вот это приложение с идентификатором «ОКТ» отображалось на устройстве под именем «Поиск по ФИО бп».
Собственно говоря, дальше нужно было понять, каким образом оно попало на устройство. В самом начале я вам сказал о том, что потерпевшие в показаниях сказали, что кто-то по ссылкам приходил, кто-то что-то устанавливал. И вот здесь база данных Telegram, Павел не подвел, сохранил информацию о получении этого файла «Поиск по ФИО бп» в одном из чатов Telegram. Часть информации мы заблюрили здесь. И вот в дальнейшем нужно было понять, что, узнать, желательно было узнать что-то об этом чате Telegram, да.
Сама вот эта таблица messages_v2, да, была пустая фактически, потому что сообщение, скорее всего, удалили, да, приложение было удалено, но в таблице chats, обратите внимание, сохранилась информация о названии вот этого чата, в котором был получен этот APK-шник: «Пропавшие без вести на СВО». Вот здесь, наверное, это показательно, как мошенники, ну скажем, находчиво, вот такое слово, подходят к преступной деятельности, то есть выбирают темы социально значимые, которые сейчас востребованы в обществе. Вот, собственно говоря, как в первом инциденте развивалась цепочка событий, с чего все началось, помним, с журнала WAL, и в дальнейшем по журналам операционной системы была получена дополнительная информация.
Похожий инцидент называется «Фотоархив 20». Точно так же сберовское приложение, обратите внимание, сохранило журнал, сохранил запись о файлике base.apk, тоже задетектировал, com.example.application. Далее в файле лога была подтверждена информация о том, что вот это приложение, com.example, было назначено дефолтным. Это журнал лога на приложение Samsung Messages, который как раз зафиксировал информацию о том, что конкретно приложение com.example было назначено дефолтным приложением для приема и отправки СМС-сообщений.
Дальше необходимо было понять, когда было приложение удалено. Еще один файл подтвердил удаление приложения 31 января 2025 года. Ну и дальше та же самая гугловая база gass.db, обратите внимание, хеш был получен. Дальше уже антивирус Касперского сохранил информацию об имени вот этого приложения, «Фотоархив 20». Ну и в дальнейшем тоже Telegram использовался как способ доставки вот этого исполняемого файла на устройство. И вот здесь как раз тоже информация была получена из его базы данных в одном из чатов.
Инцидент 3 несколько отличается тем, что приложение Сбера на нем отсутствовало, но как раз встроенный антивирус также сохранил, журнал встроенного антивируса сохранил информацию о записи, классифицировал ее тоже как потенциально вредоносная. Ну и, собственно говоря, еще дополнительно, видите, подсветил информацию о том, что это приложение опасно, есть риск утечки конфиденциальных данных, мошеннического списания денежных средств, то есть рекомендуем его удалить.
Ну и дальше два журнала лога подтвердили установку приложения, обратите внимание, и удаление приложения спустя три дня.
Ну и дальше очередная хеш-сумма была подтверждена в файле gass.db, обратите внимание, и Telegram точно так же здесь поучаствовал в этом инциденте.
Если коротко подытожить, все началось, как я уже сказал, с журнала SQLite, фактически в совокупности с журналами SQLite плюс системными артефактами операционной системы удалось построить полноценную хронологию, отследить хронологию событий на устройстве, начиная от момента попадания на устройство, заканчивая источником получения вот этого APK-шника. То есть фактически в дальнейшем получилось связать эти события с датами мошеннических действий.
Вопросы из зала
В целом у меня довольно короткий доклад. Все, если есть вопросы, задавайте. Коллеги, ваши вопросы тоже через поднятую руку, если они есть. Валерий, ой, Евгения, прошу вас.
— Алексей, буквально несколько моментов. Один. Я смотрю, вы анализировали WAL-файлы FQLite Carving Tool. Это бесплатная какая-то программа, можно использовать ее достаточно удобно. Отображает?
— Да, это не мы анализировали. Я сказал, что эту информацию нам предоставил действующий эксперт. Здесь уже просмотрщик не наш использовался, а сторонний. Все верно. И отсюда тогда вопрос, каким образом Мобильный Криминалист обрабатывает служебные журналы. Я заметил такую вещь, что в зависимости от того, откуда запускаешь, грубо говоря, Мобильный Криминалист учитывает уже при демонстрации, допустим, приложения Telegram, он уже учитывает эти служебные журналы. А если открывать через файловый браузер, Мобильный Криминалист не отображает информацию, как в базе данных, как она есть, без учета служебных этих файлов. Ну да, здесь, наверное, в первую очередь вопрос вкусовщины.
Если что-то Мобильный Криминалист уже отображает, безусловно, наверное, следует нашим просмотрщиком воспользоваться. Если часть какой-то информации не отображает, то вот, как здесь, использовался сторонний продукт. Вопрос больше. Мобильный Криминалист вообще эту информацию не помечает отдельно? Или даже так: он не помечает эту информацию отдельно на текущий момент, а вообще в планах ли реализовать, чтобы отдельно, как удаленная информация? Собственно говоря, поскольку нам эта информация от эксперта поступила, поэтому да, безусловно, эта задача будет стоять.
— Когда — не скажу. Спасибо. Коллеги, еще вопросы. Элеонора, пожалуйста.
— Спасибо за доклад. И, как я знаю, Мобильный Криминалист позволяет исследовать WAL-файлы, не только базы данных, но и WAL-файлы, и разбирать. Так проблема состоит в том, что когда мы получаем копию информации, ну, типа файловой системы, то Мобильный Криминалист исследует базу данных, например, WhatsApp, Telegram по путям по умолчанию, но еще и WAL-файлы, и иногда чаты состоят из затроенной, задвоенной переписки. Можно ли как-то решить эту проблему в дальнейшем, чтобы не было вопросов у следователей, что почему жулик отправлял жертве трижды сообщения, трижды файлы какие-то в переписке? Ведь этого не было по факту. Мы на устройстве видим, что он один раз, а в разборе Мобильного Криминалиста видим задвоенную, затроенную информацию.
Да, такая информация нам поступала, да, и она есть у нашей разработки, поэтому я думаю, что поработаем над этим, да.
— Разрешите вопрос, да. Извините, пожалуйста, пока коллега готовится. Дело в том, что у нас сейчас помимо комплекса законопроектов Антифрод-3, да, есть Антифрод-2, уже вступивший в силу, 210-й федеральный закон. Сейчас готовится доктрина развития системы противодействия ИКТ-преступности. И один из важных вопросов, вы в своем докладе осветили, это как раз противостояние банковскому мошенничеству с помощью вредоносного ПО. Ну, в общем-то, да.
И дело в том, что эта область уже более сильно пересекается с областью информационной безопасности, компьютерных атак в виде вредоносного ПО. Соответственно, пошли роллбеки от регуляторов, от Банка России, ФСТЭК и других регуляторов о том, что когда мы из средств криминалистики делаем систему криминалистики, особенно в ряде ведомственных нормативных правовых актов, нам необходимо убеждаться, во-первых, что результат работы не автоматически автоматизирован, вы только что показали, где аналитический человек вычленял эту информацию, сопоставлял и как результат экспертного исследования ВКЦ давал.
Планируется ли сделать стыковки, одна из первых, наверное, по ФСТЭКу, какие-то версии выборочно, может быть, сертифицировать, чтобы можно было их использовать в системах ведомственных, не в отдельных средствах, которые выезжают на место, а вот именно в системах экспертных, и иметь соответствующую информацию: доверенное программное обеспечение или технический программно-аппаратный комплекс. Первый вопрос. И второй вопрос, он связан как раз с банковскими требованиями и прочими, он связан с тем, что там одно из требований, что любая система, что банковское приложение, что система анализа, где нужно представлять доказательства, она должна иметь информацию об отсутствии вредоносного ПО.
То есть не только получить какую-то версию, например, что это доверенное ПО, а о том, что эксперт, проведя анализ, он использовал помимо средства криминалистического извлечения, анализа, он использовал еще антивирусные средства, и какие. То есть тем самым, что он сам не вносил, не внес и не мог внести какие-то изменения. К сожалению, требование сейчас законодательства, оно прямо распространяется на банковские приложения, но при анализе многие эксперты такие вопросы в суде, особенно от адвокатов, при их допросе судебном, они получают. Как вы убедились, что при вашем экспертном исследовании вы сами либо какое-то ПО, которое исследует, возможно, вредонос с того же телефона, не повредило результаты вашего исследования?
Вот два вопроса, связанные с обеспечением достоверности. Спасибо. На первый вопрос. Я так правильно понял, что с точки зрения продукта нашего конкретно, может ли он признаваться в суде доказательством? Что вы имели в виду? Наш продукт можно ли использовать при выездах на место происшествия?
Я повторю по-русски еще раз. Первый вопрос. Будут ли хотя бы выборочно версии продукта сертифицированы как доверенное ПО в требованиях текущих регуляторов по ИБ? Потому что сфера борьбы с ИКТ-преступностью начинает все больше и больше пересекаться сферой общей информационной безопасности, тем более банковской деятельности. Первый вопрос. Второй вопрос. Будет ли как-либо инструментальное средство взаимодействия с антивирусом, и в журналах работы, в том числе технической, помещаться данные о том, что объекты исследования инструментальным средством прошли антивирусную проверку, например, тем-то, тем-то, тем-то. Не просто мы в своём докладе — там, ну, в LaTeX никто не пишет, в Word — в экспертное заключение вставляем, что мы вот выявили, например, вредонос типа такой-то.
А именно чтобы это была техническая запись, которая, ну, практически в автоматическом режиме или в автоматизированном режиме будет вноситься, и эксперту не надо будет дополнительно никаких поясняющих моментов вносить, потому что это уже требование законодательства. Понятно. Два вопроса. По поводу сертификации, вот здесь я думаю, что вопрос больше к юристу, я сложно на него ответить, не скажу. По второму вопросу, тут я тоже затрудняюсь ответить по тому, как эту информацию для пользователя упростить, эту работу.
Затрудняюсь, честно. Вот здесь с позиции нашего продукта у нас есть отдельно, я уже сказал, секция вредоносных объектов, это чисто интеграция с Касперским. Вот здесь эта информация содержится и в личном кабинете, и в дополнениях в личном кабинете, которые вы будете устанавливать. Что еще нужно показать, подсветить? Я не знаю, как еще упростить. Что здесь?
Коллеги, еще давайте. Время на один ещё. У нас время осталось на один вопрос. Там молодой человек довольно давно поднимал руку. Пожалуйста, с той стороны. Элеонора. Дайте, пожалуйста, микрофон молодому человеку с той стороны. Поднимите руку, пожалуйста, повыше, чтобы она вас увидела. Видела, да. Элеонора, молодой человек.
— Спасибо, что передали ход. Добрый день еще раз. Вопрос такого характера, что в трех кейсах везде фигурировали данные антивируса. И вопрос немного, наверное, отвлеченный, просто в сторону антивирусов на мобильных устройствах. Интересно, действительно ли так было просто определить, какое именно ПО оказалось в конечном итоге вредоносным? Много ли там вообще ложных сработок встроенных антивирусов и встроенных антивирусов в банковской среде? И второй вопрос, может быть, вам известно, я, к сожалению, не совсем эксперт в этой области, сильными ли являются доказательства, которые в таком формате database либо в текстовом, где пишутся логи антивируса, действительно достоверным?
То есть можно ли как-то подтвердить, что такая сработка действительно была? Или, например, была подмена логов антивируса, и злоумышленник мог, скажем, сокрыть следы.
— Ну, в целом данные можно подменить, вы правильно сказали. Но здесь в комплексе артефакты были исследованы. И поэтому, да, безусловно, эти сведения легли в основу заключения эксперта. Они признаны были доказательствами в суде. Что касается первого вопроса по поводу антивирусов. Насколько просто или сложно было все это найти среди замусоренных этих данных. Но здесь не мы проводили эту экспертизу, то есть фактически мы уже со стерильными данными работали, которые нам предоставил эксперт. И вот здесь давайте уточним у него информацию, я к вам вернусь, мы подискутируем с вами более полно. Отлично, спасибо.
Алексей, большое спасибо. Спасибо большое. Давайте проводим Алексея аплодисментами. А я всем сейчас напоминаю, что как раз-таки в задней части зала у нас находится зона стендов, и прожарки у нас сегодня не будет. Поэтому сейчас у нас довольно долгий перерыв до 12 часов утра, и потом мы продолжим. Встретимся снова в зале.
[Здесь в записи вырезан перерыв (по программе 11:55–12:30) — около 39 минут двумя кусками: до фразы ведущего «А мы возвращаемся…» и сразу после неё.]