软件防护技术

image.png

一、windows操作系统中提供的主要几种软件漏洞利用的防范技术

1 ASLR

地址空间分布随机化(addressspace layout randomization)是一项通过将系统关键地址随机化,从而使攻击者无法获得需要跳转的精确地址的技术。

image.png

使用ASLR技术的目的

使用ASLR技术的目的就是打乱系统中存在的固定地址,使攻击者很难从进程的内存空间中找到稳定的跳转地址。

执行时间

当程序启动将执行文件加载到内存时,操作系统通过内核模块提供的ASLR功能,在原来映像基址的基础上加上一个随机数作为新的映像基址。


image.png

2 GS stack protection

GS stack protection 技术是一项栈缓冲区溢出的检测防护技术。编译器会针对函数调用和返回时添加保护和检测功能的代码,在函数被调用时,在缓冲区和函数返回地址增加一个32位的随机数security_cookie(用来检测是否发生的溢出),在函数返回时,调用检查函数检查security_cookie的值是否有变换,如果发生了变换说明产生了溢出,终止程序。


image.png

GS stack protect 针对栈溢出起到了很好地防范作用

3 DEP

数据执行保护(data execute prevention)技术可以限制内存堆栈区的代码为不可执行状态,从而防范溢出后代码的执行。


image.png
现在的攻击主要考虑如何绕过DEP

DEP分为软件DEP和硬件DEP,硬件DEP需要cpu的支持,需要CPU在页表增加一个保护位NX(no excute)来控制页面是否可执行。现在的DEP保护机制一般都采用硬件DEP。


image.png

SafeSEH

用于异常处理的防护措施
SEH (structured exception handler)是windows异常处理机制所采用的重要数据结构链表

发生异常时,系统调用异常处理函数,但是这个异常处理函数被恶意程序覆写了。


image.png

image.png

当PE文件被加载时,系统读出SEH函数表的地址,使用随机数加密后,存储在一个地方,当PE文件执行时,解密SEH,从而获得SEH函数表的地址,然后针对程序中每个异常处理函数检查是否在合法的SEH函数表中,如果没有则说明非法。同时也要检测异常处理函数是否在栈上,如果在栈上也将停止异常处理。(不能在堆栈中存放可执行代码)

SEHOP

SEH是window异常处理机制所采用的的重要数据链表,是一个SEH函数表(里面有各种异常处理函数)。
SEH攻击是通过栈溢出或者其他漏洞,使精心构造的数据覆盖SEH上面的某个函数或者多个函数,从而控制EIP(控制程序执行流程)

image.png

SEHOP的核心是检测程序栈中所有SEH结构链表的完整性
image.png

image.png

漏洞利用技术——地址利用技术

1 静态shellcode地址的利用技术 (可以准确定位局部变量位置)

如果存在溢出漏洞的程序,是一个操作系统每次启动都要加载的程序,操作系统启动时为其分配的内存地址一般是固定的,则函数调用时分配的栈帧地址也是固定的。
溢出后写入栈帧的shellcode代码其内存地址也是静态不变的,所以可以直接将shellcode代码在栈帧中的静态地址覆盖原有返回地址。
总的来说就是shellcode代码写入的地址是静态不变的,可以准确定位到该位置。

image.png

image.png

2 动态变化的shellcode地址的利用技术 (可以利用esp准确定位返回地址下面的地址)

某些软件的漏洞存在于某些动态链接库中,这些动态链接库在进程运行时被动态加载,因而在下一次这些动态链接库被重新装载到内存中,其在内存中的栈帧地址是动态变化的,则植入的shellcode代码在内存中的起始地址也是变化的。

image.png

通过ESP寄存器的特性来实现。ESP寄存器中的栈顶指针总是指向返回地址在内存高地址方向的相邻位置,从而可以实现准确定位到返回地址,在与返回地址相邻的高地址位置写入shellcode代码,这样就能通过ESP寄存器来实现定位shellcode代码地址
具体实现步骤:

  • 第一步,找到内存中任意一条汇编指令jmp esp的地址
  • 第二步,设计好输入数据,使缓冲区溢出后,前面的内容为任意数据,覆盖返回地址的是jump esp指令的地址,紧接着覆盖返回地址下面的地址并写入shellcode代码。(之前是在上面写shellcode代码,但现在上面的局部变量难以定位)
  • 第三位,函数调用完成后函数返回,根据返回地址中的地址去执行jump esp指令,而此时esp指向的是返回地址相邻的高地址位置,在这个位置中保存着shellcode代码


    image.png

    image.png

总的来说就是当局部变量的局部地址难以定位时,可以利用函数执行完后esp指向返回地址下面的地址的特性来作为跳板实现shellcode的准确定位。

image.png

image.png

3 堆喷洒技术heap spray

当准确定位shellcode的地址难以实现时,可以采用堆喷洒技术。

heap spary堆喷洒技术,是在shellcode前面加上大量的滑板指令slide code,组成一个非常长的注入代码段。然后向系统申请大量内存,并且反复用这个注入代码段来填充。这样就使得内存空间被大量的注入代码段所占据
这样当程序跳转到堆中被填充了注入代码段的任一地址,程序指令就会顺序滑板指令最终执行到shellcode代码

image.png

通过反反复复填充,当程序落到滑板指令上时,就会执行shellcode

滑板指令(slide code)是由大量的NOP(no-operation)空指令组成的指令序列,cpu遇到滑板指令会一直执行下去,中间不作任何操作。


image.png

网页木马通常使用堆喷洒技术来实现


image.png

image.png

漏洞利用技术——绕过DEP

image.png

返回导向编程ROP

利用现成的可执行的代码区域的指令片段来组成恶意代码。

image.png

找一些已经存在的并且以retn结尾的代码块,把这些代码块布置在堆栈上,当控制EIP并返回时,程序就会跳转去执行这些代码块

换言之,ROP允许攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。


image.png
image.png
  • ROP是通过ROP链(retn)来实现有序汇编指令的执行
  • ROP链是由一个个ROP小配件组成
  • ROP小配件是由 “目的执行指令+retn指令组成”
    retn指令相当于 pop EIP EIP指向新的配件的地址


    image.png

    image.png
ROP技术成功的关键是从未启用ASLR的模块去寻找这些小的配件。
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343