Артефакты браузера и веб-активности
Браузер — это дневник цифровой жизни пользователя: история, кэш, куки и загрузки вместе восстанавливают, какие сайты он открывал, что искал и что скачивал.
Артефакты браузера — следы веб-активности, которые браузер сохраняет локально: журнал посещений, кэш страниц, куки и токены сессий, история загрузок, сохранённые формы и пароли. По ним реконструируют действия пользователя за компьютером.
Этот урок — про чтение браузерных артефактов при расследовании инцидента или экспертизе устройства. Анализируем свои системы или устройства, исследуемые правомерно (с согласия владельца либо в рамках расследования с надлежащими полномочиями). Несанкционированный доступ к чужому устройству и данным — ст. 272 УК РФ.
Зачем это знать защитнику
В инциденте браузер отвечает на вопросы, которых нет нигде больше: с какого сайта пришёл вредоносный файл (история + загрузки), переходил ли пользователь по фишинговой ссылке, заходил ли на C2-панель, какие сервисы открывал перед утечкой. При разборе компрометации учётной записи именно куки и токены сессий объясняют, как злоумышленник вошёл «без пароля» — украв активную сессию. А история и кэш показывают «намерение и активность» пользователя: что он реально делал, а не что говорит. Это делает браузер одним из самых ценных источников в форензике конечной точки.
Где и как браузер хранит следы
Большинство современных браузеров (на движке Chromium, а также Firefox) хранят данные в базах SQLite в профиле пользователя — отдельных файлах для истории, куки, логинов. Это удобно для анализа: к ним применимы обычные SQL-запросы. Схематичный профиль:
Профиль браузера/
History (SQLite: посещения, загрузки, поисковые запросы)
Cookies (SQLite: куки и токены сессий)
Cache/ (тела загруженных ресурсов: страницы, картинки, скрипты)
Login Data (SQLite: сохранённые логины/пароли, обычно шифрованы)
Web Data (SQLite: автозаполнение форм)
Sessions/ (открытые вкладки для восстановления)
Поскольку это SQLite, аналитик читает таблицы напрямую (с копии файла, не с «живого» профиля). Учебная иллюстрация на стандартном SQL — как такие таблицы устроены и как из них достают картину посещений:
CREATE TABLE urls (
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT,
title TEXT,
visit_count INTEGER
);
INSERT INTO urls (url, title, visit_count) VALUES
('http://intranet.local/report', 'Внутренний отчёт', 12),
('http://files.example/invoice.zip', 'Загрузка архива', 1),
('http://bank-secure.example/login', 'Вход (фишинг?)', 3),
('http://search.example/?q=vpn+bypass', 'Поиск', 2);
-- Самые посещаемые и подозрительные адреса
SELECT url, title, visit_count
FROM urls
ORDER BY visit_count DESC;
Вывод:
http://intranet.local/report | Внутренний отчёт | 12 http://bank-secure.example/login | Вход (фишинг?) | 3 http://search.example/?q=vpn+bypass | Поиск | 2 http://files.example/invoice.zip | Загрузка архива | 1
На реальных профилях у каждой записи есть точные временные метки (когда и сколько раз посещалось), и именно временная линия посещений и загрузок — самая ценная часть.
Что рассказывает каждый артефакт
История и поисковые запросы
Журнал посещений с метками времени строит таймлайн: какие адреса и в каком порядке открывались, как часто, по каким переходам. Поисковые запросы добавляют контекст намерения. Это отвечает на «куда ходил пользователь» и помогает связать загрузку вредоноса с конкретным сайтом-источником.
Кэш
Кэш — локальные копии загруженных страниц, картинок и скриптов для ускорения. Криминалистическая ценность: можно увидеть содержимое страницы, какой её застал пользователь, даже если сайт уже изменился или удалён, и восстановить картинки/файлы, которые он просматривал.
Куки и сессии
Куки хранят токены аутентификации — «пропуск», по которому сайт узнаёт пользователя без повторного ввода пароля. Для расследования это двояко: куки показывают, на каких сервисах пользователь был залогинен, и одновременно объясняют атаку кражи сессии — похитив cookie активной сессии, злоумышленник входит как жертва, минуя пароль и даже многие виды MFA. Данные восстановления сессий показывают, какие вкладки были открыты в момент инцидента.
Загрузки и автозаполнение
История загрузок фиксирует имя файла, URL-источник и путь сохранения — прямая связь «откуда пришёл вредонос». Автозаполнение форм и сохранённые данные раскрывают вводившиеся адреса, имена и иногда учётные данные (пароли обычно зашифрованы ключом ОС/профиля).
Как это работает под капотом
Браузер ведёт эти базы ради удобства пользователя — быстрый доступ к истории, мгновенная загрузка из кэша, «остаться в системе» через куки. Побочный эффект — богатый форензический след. Чтения SQLite-файлов достаточно, чтобы извлечь записи, но есть тонкости. Временные метки хранятся в своих эпохах (например, у Chromium — микросекунды от 1601 года, у Firefox — микросекунды от 1970-го), и их нужно корректно переводить. Удалённые записи нередко остаются в файле как «дырки» в SQLite (в области freelist) и частично восстановимы. Режим инкогнито важен как ограничение: он не пишет историю и куки на диск, поэтому таких артефактов не будет — но активность всё равно может всплыть в DNS-кэше, сетевых логах и временных файлах. Поэтому браузерные артефакты сопоставляют с другими источниками, а не считают единственной истиной.
Как защититься
1. Сохраняйте профиль как улику корректно. Анализируйте копию файлов профиля (браузер закрыт), фиксируйте хеши — «живая» работа в профиле изменит данные и испортит доказательство.
2. Стройте единый таймлайн. Сшейте историю, загрузки и куки с временными метками в одну ленту — она показывает последовательность действий и связывает заражение с источником.
3. Помните про защиту сессий (для Blue Team). Раз кража куки обходит пароль, защищайтесь привязкой токенов к устройству, коротким временем жизни сессий и MFA, устойчивым к угону токена; это снижает ценность украденного артефакта.
4. Учитывайте инкогнито и шифрование. Отсутствие истории не значит отсутствия активности — проверяйте DNS-кэш, сетевые и системные логи. Сохранённые пароли в профиле зашифрованы ключом ОС, и без него не извлекаются.
5. Соблюдайте границы доступа. Исследуйте только свои устройства или те, на которые есть правомерные полномочия/согласие; доступ к чужим данным — ст. 272 УК РФ, плюс требования к приватности и хранению персональных данных.
Итоги
- Браузер хранит богатый след в SQLite-базах профиля (история, куки, загрузки) — к ним применимы обычные SQL-запросы.
- История и загрузки строят таймлайн действий и связывают вредоносный файл с сайтом-источником; кэш сохраняет содержимое страниц, какими их видел пользователь.
- Куки/токены сессий объясняют вход «без пароля» через кражу активной сессии — отсюда защита токенов на стороне Blue Team.
- Временные метки в своих эпохах, удалённые записи частично восстановимы, а инкогнито не пишет историю — следы ищут и в DNS/сетевых логах.
- Профиль анализируют копией с фиксацией хешей и только на правомерно исследуемых устройствах (ст. 272 УК РФ, приватность данных).