
Извлекатель криптографических ключей из памяти Linux

Свойства:
Зависимости:
Ограничения:
Вы, возможно, уже слышали или даже использовали мой проект AES-REX, который делает практически то же самое, но иначе. В то время как AES-REX извлекает криптографические ключи из регистров, CryKeX извлекает их из энергозависимой памяти (RAM).
Некоторые работы уже были опубликованы по теме безопасности криптографических ключей в DRAM. В основном нам нужно найти что-то, что выглядит как ключ (энтропийный и определённой длины), а затем подтвердить его природу, анализируя структуру памяти вокруг него (типы данных C).
Идея заключается в том, чтобы сбросить живую память процесса и использовать эти методы для поиска вероятных ключей, так как отображение памяти не меняется. К счастью, для этой цели существуют инструменты.
Скрипт способен не только внедряться в уже запущенные процессы, но и обёртывать новые, запуская их отдельно и внедряясь вскоре после этого. Это позволяет ему извлекать ключи практически из любого процесса/двоичного файла в системе.
Конечно, доступ к памяти ограничен ядром, что означает, что вам всё равно потребуются привилегии для процесса.
Шифрование диска Linux (LUKS) использует анти-криминалистическую технику для смягчения этой проблемы, однако извлечение ключей из всей памяти всё ещё возможно.
Браузер Firefox использует несколько похожее управление памятью, поэтому, похоже, не подвержен этой уязвимости.
То же самое касается PGP/GPG.
К сожалению, такие решения, как Ansible, подвержены.
Вы можете прочитать больше подробностей в eForensics.
Установка зависимостей:
sudo apt install gdb aeskeyfind rsakeyfind || echo 'have you heard about source compiling?'
Интерактивный пример для ключей OpenSSL AES:
openssl aes-128-ecb -nosalt -out testAES.enc
Введите пароль дважды, затем некоторый текст и перед завершением:
CryKeX.sh openssl
Наконец, нажмите Ctrl+D 3 раза и проверьте результат.
Ключи OpenSSL RSA:
openssl genrsa -des3 -out testRSA.pem 2048
При запросе парольной фразы:
CryKeX.sh openssl
Проверка:
openssl rsa -noout -text -in testRSA.pem
Извлечём ключи из SSH:
echo 'Ciphers [email protected]' >> /etc/ssh/sshd_config
ssh user@server
CryKeX.sh ssh
Из OpenVPN:
echo 'cipher AES-256-CBC' >> /etc/openvpn/server.conf
openvpn yourConf.ovpn
sudo CryKeX.sh openvpn
TrueCrypt/VeraCrypt также подвержены: Выберите файл "veracrypt" в VeraCrypt, смонтируйте с паролем "pass" и:
sudo CryKeX.sh veracrypt
Браузеры на основе Chromium (спасибо Google):
CryKeX.sh chromium
CryKeX.sh google-chrome
Несмотря на то, что Firefox явно не затронут, Tor Browser Bundle всё ещё уязвим из-за туннелирования:
CryKeX.sh tor
Как уже упоминалось, вы также можете обёртывать процессы:
apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
wrap
cipher
Не стесняйтесь вносить вклад и тестировать другие приложения.
"Ключ настойчивости открывает все двери, закрытые сопротивлением"
John Di Lemme