APP下载

基于缓冲区溢出攻击的shellcode编码技术研究

2018-08-31沈阳理工大学信息科学与工程学院李爱华赵晓雯

电子世界 2018年16期
关键词:指令

沈阳理工大学信息科学与工程学院 高 珊 李爱华 赵晓雯

1 引言

缓冲区是程序运行期间在内存中分配的一个连续的区域。所谓缓冲区溢出,就是向固定长度的缓冲区中写入超出其预告分配长度的内容,从而覆盖了缓冲区周围的内存空间。攻击者要实现缓冲区溢出攻击,一般都要完成下面三个步骤:

(1)构造需要执行的代码shellcode(即缓冲区溢出攻击中植入进程的代码,可用来实现特定攻击或获取权限),并将其放到目标系统的内存;

(2)获得缓冲区的大小和定位溢出点ret的位置;

(3)控制程序跳转,改变程序流程。

对于缓冲区溢出攻击来说,shellcode起到了至关重要的作用。然而在很多漏洞利用场景中,shellcode的内容将会受到限制,通过对其编码可以在一定程度上解决该问题。

2 shellcode常用编码

要想突破重重防护,把shellcode安全送入堆栈,不难想到的一个方法就是给shellcode乔装打扮,让它通过防守再采取行动。首先设计好shellcode,然后使用编码技术对其进行编码,使它达到各种限制要求,最后构造解码程序,在真正的shellcode之前加上几条解码指令。当exploit成功后,首先运行顶端的解码程序,这会将经过编码的shellcode还原成原来的样子,然后再执行。

2.1 异或法

最简单的编码方式莫过于异或运算了,该方法所依据的原理是一个数与另一个数做两次异或运算,得到的还是它本身,即A xor B xor B=A。可以通过编程让shellcode逐个字节地与某个特定数据(key)做异或运算,使shellcode的内容符合要求。

在编码时需注意以下几点:

(1)在选取key时,不要选择shellcode中已有的字节,这样会导致NULL字节的出现;……

登录APP查看全文

猜你喜欢

指令
听我指令:大催眠术
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
杀毒软件中指令虚拟机的脆弱性分析
巧用G10指令实现椭圆轮廓零件倒圆角
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究
一种基于滑窗的余度指令判别算法
欧盟修订电气及电子设备等产品安全规定
MAC指令推动制冷剂行业发展