我有一个简单的可执行二进制文件。它将用户提供的字符串作为输入,并使用strcmp. 我怎样才能减慢这个程序的执行速度,以便我可以对字符串比较发起统计计时攻击?目前,提前退出的性质strcmp太轻微而无法检测到。
假设我有本地权限,二进制文件由另一个用户拥有,并且系统ulimit受到保护以免受分叉炸弹。
虽然我知道我可以使用字符串命令或逆向工程来获取私有字符串,但这旨在作为对现代系统上已编译程序进行定时攻击的可行性的 POC。
我有一个简单的可执行二进制文件。它将用户提供的字符串作为输入,并使用strcmp. 我怎样才能减慢这个程序的执行速度,以便我可以对字符串比较发起统计计时攻击?目前,提前退出的性质strcmp太轻微而无法检测到。
假设我有本地权限,二进制文件由另一个用户拥有,并且系统ulimit受到保护以免受分叉炸弹。
虽然我知道我可以使用字符串命令或逆向工程来获取私有字符串,但这旨在作为对现代系统上已编译程序进行定时攻击的可行性的 POC。
只要二进制文件是动态链接的,您就应该能够使用自定义 strcmp 实现对其进行 LD_PRELOAD 它,您可以破解它以与定时攻击更加“合作”。
如果二进制文件是静态链接的,您将不得不使用一些更精确的时间测量 - 也许以某种方式使用 HPET?
只需循环 strcmp() 1.000.000 次。
for(i = 0; i < 1000000; i++) strcmp(a, b);
这应该将比较之间的增量增加一百万倍。
而且...确保您的编译器不会优化它;-)