
属性:
依赖:
限制:
你可能已经听说过甚至使用过我的 AES-REX 项目,它做的是类似的事情,但方式不同。AES-REX从寄存器中提取加密密钥,而CryKeX则从易失性内存(RAM)中提取。
关于DRAM中加密密钥的安全性,已有一些研究 被发表。基本上,我们需要找到看起来像密钥(高熵且特定长度)的东西,然后通过分析其周围的内存结构(C数据类型)来确认其性质。
思路是转储进程的活动内存,利用这些技术来寻找可能的密钥,因为内存映射不会改变。幸运的是,已有现成的工具可用于此目的。
该脚本不仅能够注入到已经运行的进程中,还能通过单独启动新进程并在其后不久注入来包装新进程。这使得它能够从系统上几乎任何进程/二进制文件中转储密钥。
当然,访问内存受到内核的限制,这意味着你仍然需要对目标进程拥有足够的权限。
Linux磁盘加密(LUKS)采用了反取证技术来缓解此类问题,然而,从整个内存中提取密钥仍然是可能的。
Firefox浏览器使用了某种类似的内存管理方式,因此似乎不受影响。
PGP/GPG也是同样的情况。
不幸的是,像 Ansible 这样的解决方案则受到波及。
你可以从 eForensics 阅读更多详细内容。
安装依赖:
sudo apt install gdb aeskeyfind rsakeyfind || echo '你有没有听说过源码编译?'
一个交互式示例,用于OpenSSL AES密钥:
openssl aes-128-ecb -nosalt -out testAES.enc
输入两次密码,然后输入一些文本,在终止之前:
CryKeX.sh openssl
最后,按Ctrl+D三次,并检查结果。
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的浏览器(感谢谷歌):
CryKeX.sh chromium
CryKeX.sh google-chrome
尽管Firefox并未明确受影响,但Tor浏览器捆绑包由于隧道传输仍然易受攻击:
CryKeX.sh tor
如上所述,你还可以包装进程:
apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
wrap
cipher
欢迎贡献并测试其他应用程序。
"坚持不懈的钥匙能打开所有由抵抗关闭的门"
约翰·迪·勒梅