Услуги Кибердетектива










Мы специализируемся на предоставлении комплексных решений в области цифровой криминалистики и кибербезопасности. Мы предлагаем широкий спектр профессиональных услуг, направленных на защиту вашей информации и репутации в интернете.
Удаление информации из поисковых систем: Мы эффективно удаляем нежелательную или конфиденциальную информацию из результатов поиска, помогая Вам контролировать свою цифровую репутацию.
Поиск киберпреступников: Наши эксперты проводят тщательные расследования для выявления и привлечения к ответственности лиц, причастных к киберпреступлениям.
Поиск людей в интернете: Мы используем передовые методы и технологии для нахождения нужных Вам людей, будь то потерянные связи или скрывающиеся злоумышленники.
Наша команда состоит из опытных специалистов, обладающих глубокими знаниями в области цифровой криминалистики и кибербезопасности. Мы используем новейшие технологии и методики, чтобы предоставлять нашим клиентам лучшие решения и достигать оптимальных результатов.
Многие разработчики и безопасники искренне верят в магию команды git commit --amend или принудительного пуша с флагом --force. Реальность куда прозаичнее: Git спроектирован как структура данных на основе направленного ациклического графа (DAG), которая по умолчанию ничего не удаляет, а лишь переставляет указатели веток.
Анатомия каталога .git и висячие объекты
Когда файл случайно попадает в коммит, а затем разработчик пытается «замести следы» быстрым откатом ветки, содержимое файла никуда не исчезает. Оно остается в виде сжатого blob-объекта внутри внутренней базы данных под каталогом .git/objects.
Такие объекты переходят в категорию dangling (висячих) объектов, на которые больше не ссылается ни одна вершина графа. Внутренний сборщик мусора git gc не трогает их неделями, давая форензик-специалисту огромное окно возможностей для извлечения чувствительных данных.
Извлечение улик из скрытого журнала
Если коммит перезаписали или затерли локально, первым делом исследуют журнал ссылок git reflog. Он ведет строгий учет каждого перемещения указателя HEAD, сохраняя историю всех переключений, слияний и правок.
git fsck --lost-found моментально находит все потерянные коммиты и распаковывает их содержимое в отдельную папку.git cat-file -p <HASH> позволяет восстановить исходный текст любого найденного blob-объекта напрямую по его хешу.git log -g раскрывает полную хронологию локальных действий пользователя до момента принудительной перезаписи истории.Удаленные репозитории и публичные зеркала
Попытка переписать публичную ветку на GitHub или GitLab через git push --force создает лишь иллюзию безопасности. Платформы кэшируют старые коммиты во внутренних хранилищах, и они остаются доступными по прямому хешу через API событий или Pull Requests.
Любой приватный ключ, токен API или пароль от базы данных, попавший в публичный доступ хотя бы на пять секунд, уже спарсен ботами поисковых систем и зеркал. Использование инструментов вроде BFG Repo-Cleaner или git-filter-repo зачищает граф, но не отзывает скомпрометированные секреты у внешних систем.
Практические правила для расследователя
Никогда не доверяйте внешнему виду ветки main, пока не выгрузили сырые объекты и не провели глубокий статический анализ. Полноценная очистка репозитория требует полного пересчета всех деревьев и принудительного сброса кэша сборщика мусора.
--mirror.Если девопсы и хакеры свято верят, что после команды уничтожения контейнер растворяется в цифровом небытии без следа, то у меня для них плохие новости. Эфемерность Docker обманчива: хост помнит практически всё, если специалист понимает архитектуру ядра Linux и структуру демона.
Анатомия слоев и OverlayFS
Главный миф микросервисов – иллюзия полной бесследности запущенных приложений. На самом деле контейнер представляет собой изолированный процесс на хосте, пишущий временные данные в выделенный рабочий слой файловой системы.
Каталог /var/lib/docker/overlay2 хранит все разрозненные слои образов и контейнеров. Пока сущность не вычищена с диска принудительно через docker system prune, рабочий каталог diff содержит абсолютно каждый измененный или созданный файл, включая загруженные бэкдоры.
Снятие дампа оперативной памяти
Атакующие нередко держат вредоносный код исключительно в памяти, избегая записи бинарников на диск. Пространства имен лишь разграничивают видимость, поэтому для хостового ядра память изолированного процесса ничем не отличается от локальной службы.
Вытащить оперативную память можно напрямую из каталога /proc/<PID>/mem или с помощью gcore на хосте, определив родительский PID контейнера. Для глубокого исследования инъекций и анализа скрытых сокетов применяют профилированный модуль LiME в связке с фреймворком Volatility.
Тактика сбора цифровых доказательств
Первое правило реагирования на инцидент – забыть про спонтанный перезапуск служб. Обычная остановка контейнера может запустить скрипты самоуничтожения малвари или обнулить ценные точки монтирования в памяти tmpfs.
docker pause, чтобы зафиксировать состояние всех регистров и процессов.docker commit.docker save или docker export для изолированного препарирования на стенде.Логирование и сетевой контекст
Попытка зачистить историю shell внутри окружения – классический ход, который не спасает от внешнего аудита. Если на хосте развернуты auditd или eBPF-зонды, каждый системный вызов внутри cgroups уже сохранен в централизованном журнале.
Файл конфигурации /var/log/docker.log и метаданные команды docker inspect содержат точную хронологию запуска, смонтированные тома и скрытые переменные окружения. Таблица трансляции conntrack и цепочки iptables хоста сохраняют адреса удаленных серверов управления, с которыми контактировал скомпрометированный узел.
Главные правила работы эксперта
Не проводите эксперименты на живой рабочей инфраструктуре без предварительного снятия дампов, я серьезно. Неаккуратное движение уничтожит цепочку улик и превратит потенциальное доказательство для отчета в бесполезный мусор.
docker history, чтобы отделить артефакты компрометации от заводских уязвимостей.История браузера врёт охотнее, чем расширение. Пользователь жмёт «очистить всё», чистит cookies, включает инкогнито – и искренне верит, что стёр следы. Расширение в это время спокойно пишет LevelDB, IndexedDB и свой локальный склад. «Очистить историю» его, как правило, не трогает.
Это не магия. Это архитектура: плагин – отдельное приложение внутри профиля, со своим storage API и своими файлами. Для форензики это золото. Для тех, кто «просто почистил Chrome» – неприятный сюрприз.
Не повторяйте это дома, я серьезно: ниже – разбор своих профилей, лабораторных образов и кейсов с законным основанием. Чужой диск без мандата – уже не OSINT, а статья УК.
Почему плагин помнит больше браузера
Chromium и Firefox дают расширениям chrome.storage.local, chrome.storage.sync, IndexedDB, Cache Storage и (у старых) WebSQL. Браузер не считает это «историей». Поэтому:
Local Extension Settings.Исследование 2026 года по conversational AI-расширениям прямо указывает: основные артефакты лежат в Local Extension Settings, формат – LevelDB. Не в History. Не в cookies.
Отдельный бонус: состояние расширений переживает Clear All History. Password managers, ad blockers, «продуктивность» и даже тупые темы часто оставляют навигационный контекст.
Карта диска: Chromium-семья
Chrome, Edge, Brave, Opera, Vivaldi, Яндекс – одна кухня, разные адреса профиля.
Windows (пример Chrome):
%LOCALAPPDATA%\Google\Chrome\User Data\<Profile>\
| Что смотреть | Путь относительно профиля | Зачем |
|---|---|---|
| Код и манифест | Extensions\<extension_id>\<version>\ | ID, версия, permissions, update URL, подозрительный CWS vs self-hosted |
| Настройки браузера | Preferences, Secure Preferences | список установленных, enabled/disabled, install time, pin to toolbar |
| Локальный storage | Local Extension Settings\<extension_id>\ | LevelDB: *.ldb, *.log, CURRENT, MANIFEST-* |
| Синк | Sync Extension Settings\<extension_id>\ | то, что уехало в аккаунт Google/Microsoft |
| Состояние | Extension State\ | LevelDB, runtime-флаги |
| IndexedDB | IndexedDB\chrome-extension_<id>_0.indexeddb.leveldb | крупные объекты: кошельки, заметки, чаты |
| Cache Storage / Service Worker | Service Worker\, CacheStorage\ | кэш UI и иногда токены |
Edge: ...\Microsoft\Edge\User Data\Default\Extensions\...
Opera: чаще %APPDATA%\Opera Software\Opera Stable\Extensions\
extension_id – 32 символа латиницы (nkbihfbeogaeaoehlefnkodbefgpgknn = MetaMask, и да, это уже мем в инцидентах). Не гадай: сверяй с manifest.json и Preferences.
Linux: ~/.config/google-chrome/<profile>/
macOS: ~/Library/Application Support/Google/Chrome/<profile>/
Что внутри LevelDB
Это не SQLite. Открывать «как таблицу» бесполезно. На диске – SST/LDB плюс WAL-подобный *.log. Значения часто JSON или protobuf. Строки ключей иногда читаются strings, но для суда нужен парсер (Hindsight, leveldbdump, кастом на Python plyvel – только с копии, не с живого профиля).
Типичный улов:
Infostealer’ы (Vidar 2.0 и наследники) целенаправленно грабят Local Extension Settings, Sync Extension Settings и IndexedDB\chrome-extension_*. Если в IR видишь, что малварь ходила именно туда – это не «ещё один путь», это приоритет: там деньги и сессии.
Firefox: другая религия, та же жадность
Профиль: %APPDATA%\Mozilla\Firefox\Profiles\<random>.default-release\
extensions.json – каталог аддонов, состояние, даты.extensions\ – XPI/распакованные.addonStartup.json.lz4 – что реально поднималось при старте.storage\default\moz-extension+++<uuid>\ – IndexedDB/local storage в SQLite (idb, ls).browser-extension-data\<id>\ – storage.local в JSON у части аддонов.prefs.js – флаги, в том числе отключённые плагины.UUID в storage\default не равен addon id с AMO. Связка: extensions.json → path / id → storage. Пропустишь маппинг – получишь красивый дамп ни о чём.
Что именно доказывать
Расширение само по себе не преступление. Цепочка обычно такая:
update_url в манифесте: Chrome Web Store vs левый CDN – уже сюжет).<all_urls> + webRequest + debugger у «ускорителя PDF» – красный флаг, не диагноз.History/places.sqlite, с Secure Preferences и с prefetch браузера.Пример из практики (лаборатория, не «взлом соседа»): пользователь чистит историю после спорной сессии. В History пусто. В storage адблока – счётчики хитов по доменам за тот же день. В AI-сайдбаре – промпт с реквизитами. Timeline собирается без единого URL из visits.
Ещё один классический слой: Clear All History режет таблицы urls/visits, но WAL/History-wal и freelist SQLite ещё часы живут. Плюс Top Sites, Network Action Predictor, Service Worker. Расширения – четвёртый слой, который вообще не входил в «очистить».
storage\default, не LevelDB.Preferences, IndexedDB, Yandex-специфики (Ya Passman Data и т.п.).Не тащи «Inspect background page» на боевой машине подозреваемого, если задача – изъятие. Это изменение состояния. Для своего лаба – пожалуйста: DevTools → Application → Extension storage. Для суда – файл с диска.
Грязные зоны (и почему я не дам рецепт)
Криптокошельки в расширениях, менеджеры паролей, сессионные токены SaaS – это не «интересно посмотреть JSON». Это доступ к чужим деньгам и аккаунтам. Разбор формата vault’а, обход мастер-пароля, эксплуатация уязвимого плагина – за скобками. Если на образе лежит nkbihfbeogaeaoehlefnkodbefgpgknn и жирный LevelDB, фиксируешь факт, хеши, версию, permissions. Дальше – уполномоченные и политика кейса.
То же про вредоносные расширения из supply chain: анализируй манифест, сетевые IOC, persistence. Не пиши и не запускай эксплойт «чтобы проверить».
Короткий чеклист на изъятие
User Data / Firefox profile, не только Extensions.Local Extension Settings, Sync Extension Settings, IndexedDB, Extension State.Preferences, Secure Preferences, Local State, extensions.json.Маленький плагин с большой памятью – это не поэзия. Это каталог на диске, который пользователь не считает уликой. Ты – считаешь. И да, сначала свой профиль: открой Local Extension Settings и посмотри, сколько о тебе помнит «просто блокировщик рекламы». Спойлер: больше, чем тебе комфортно.
