Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
snapshot-demo — CVE-2022-27499 | Kitploit
Инструменты/GitHubGitHub/web-logs2/snapshot-demo
Encryption/Decryption ToolsVulnerability AnalysisExploitationPenetration TestingHardware SecurityRed Teaming
GitHubweb-logs2/snapshot-demo

snapshot-demo

CVE-2022-27499

Репозиторий
3 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Демонстрация атаки Snapshot

Это оригинальная демонстрация неожиданной атаки Snapshot, обнаруженной нами. Спасибо Intel за Security Advisory.

Сборка демонстрации

Установка Intel SGX SDK и Occlum

Прежде всего, любой желающий запустить демонстрацию должен установить Intel SGX SDK и Occlum (вы можете выбрать использование нашей модифицированной SGX SDK). Мы предоставляем Dockerfile для быстрой установки Occlum/SDK. Модифицированная SGX SDK помогает злоумышленнику определить время.

Вы также можете установить Occlum на хост-машину. (Пожалуйста, обратитесь к https://github.com/occlum/occlum для получения дополнительных сведений об установке.) В любом случае, вам сначала нужно установить Intel SGX driver на ваш хост или использовать драйвер SGX в ядре.

root@kitploit:~
(sudo) docker build -t $Your_Image_Name .

После сборки образа выполните

root@kitploit:~
(sudo) docker run -it --privileged -p $Redis_Server_Port:6379 -v $Host_SGX_Driver_Path:/dev/sgx --name "snapshot-demo" $Your_Image_Name

Здесь $Redis_Server_Port — это номер порта хоста, который вы хотите открыть для Redis-сервера в контейнере, а $Host_SGX_Driver_Path — это вышеупомянутый путь к устройству вашего установленного драйвера SGX.

Сборка целевой программы

Целевая программа находится в папке bash_redis.

Программа-жертва выполняет bash-скрипт (occlum_bash.sh). Сначала она получает заданный пароль для создания настраиваемого конфигурационного файла Redis с заполненным полем "requirepass". Затем она запускает Redis-сервер в соответствии с настраиваемым конфигурационным файлом.

Для сборки программы генерации конфигурации выполните make. Для сборки Redis-сервера выполните следующие команды.

root@kitploit:~
cd bash_redis
./download_and_build_redis_glibc.sh

Запуск демонстрации

Убедитесь, что программа Redis жертвы работает

Откройте терминал для жертвы. Запустите run_redis.sh, проверяя, работает ли Redis-сервер корректно.

Используйте команду redis-cli -h $Redis_Server_IP -p $Redis_Server_Port -a admin123456, чтобы проверить, установлен ли пароль (admin123456) в конфигурационном файле.

Нажмите ctrl + C, чтобы завершить работу Redis-сервера.

Захват снимка

Подготовьте 2 терминала: один для жертвы, другой для злоумышленника. Вы можете открыть только один дополнительный терминал (для злоумышленника), если один терминал уже открыт для жертвы.

Снова запустите run_redis.sh в терминале жертвы. Этот скрипт запустит целевую программу.

Злоумышленнику нужно сделать снимок (с помощью ./take_snapshot_step-1.sh), когда он сможет определить, что снимок сбрасывается. В демонстрации злоумышленник получает четкое уведомление из терминала жертвы следующим образом:

root@kitploit:~
...
Run ./take_snapshot_step-1.sh NOW!
line 4522: # passwords, then flags, or key patterns. However note that the additive
line 4523: # and subtractive rules will CHANGE MEANING depending on the ordering.
line 4524: # For instance see the following example:
...

Запустите скрипт ./take_snapshot_step-1.sh в терминале злоумышленника.

Если вы собрали Occlum с нашей модифицированной SGX SDK, вы увидите больше подсказок. Это связано с тем, что мы модифицировали ненадежную часть Intel SGX SDK, выводя вспомогательные сообщения, чтобы облегчить злоумышленнику определение времени. Для удобства злоумышленника мы зарезервировали временные слоты, чтобы позволить ему запустить ./take_snapshot_step-1.sh. На самом деле злоумышленник, имеющий привилегии root на хосте, может перехватить выполнение анклава и захватить любые снимки, модифицировав ненадежную часть SGX SDK.

Как только Redis-сервер запущен и работает, выполните ./take_snapshot_step-2.sh, чтобы завершить сбор снимков.

Воспроизведение анклава

Злоумышленник выполняет replay_redis.sh, чтобы воспроизвести анклав с использованием собранного снимка. Любой клиент может войти на Redis-сервер без аутентификации.

Пример команды для Redis-клиента:

root@kitploit:~
redis-cli -h $Redis_Server_IP -p $Redis_Server_Port
keys *

Если появится сообщение (error) NOAUTH Authentication required., это означает, что для доступа к Redis-серверу потребуется пароль. Введите auth $Your_Password, чтобы пройти аутентификацию. В этой демонстрации используйте auth admin123456.

Если появится сообщение (empty array), это означает, что для доступа к Redis-серверу пароль не требуется.

Примечание

Иногда демонстрация завершается ошибкой из-за проверки целостности Occlum. Вы, вероятно, увидите следующее сообщение.

root@kitploit:~
Replaying ...
~/snapshot-demo/bash_redis_replay/occlum_instance ~/snapshot-demo/bash_redis_replay
In: writing meta-data in write_all_changes_to_disk
In: writing meta-data in write_all_changes_to_disk
Error: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }
[ERROR] occlum-pal: The init process exit with code: 1 (line 59, file src/pal_api.c)
[ERROR] occlum-pal: Failed to run the init process: EINVAL (line 129, file src/pal_api.c)

Просто запустите демонстрацию заново (с этапа записи), и ошибка исчезнет навсегда.

Удачи и веселья!

Скачать инструмент