12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
三国霸业 战车-珍宝-觉醒-攻城掠地SF-全新玩法 免费玩新区 攻城掠地私服 进入游戏
手游私服盒子 各类免费游戏 0.1折送海量资源 各类手游私服 进入游戏
皇家MU2 《奇迹 2:传奇》韩国网禅公司《奇迹》正统续作。 3D锁视角Mmrpg 暗黑3+传奇+流放之路+奇迹 进入游戏
查看: 550|回复: 0

[原创]断其粮道——内核级拒绝服务攻击

[复制链接]
发表于 2021-7-26 01:37:50 | 显示全部楼层 |阅读模式
1、何为断其粮道?
古时的军队大要分为两部门,一是前线作战的士兵,二是后方运粮的人员,两者共同构成一个系统,双方配合才能完成作战任务。两者之间保持互相通信,前者就可以派人向后者催粮,后者就可以派人向前者运粮,而这个运粮(通信)的关键就在于粮道,假如被敌军切断,那么前线士兵就无法向后勤人员征求粮食(哀求服务),后勤人员也就无法为前线士兵运送粮食(提供服务),此可谓之拒绝服务攻击。

以图示之,前线5万雄师因吃不上饭而开始出现军心不稳的情况了。。。


举一个例子来说明这个过程吧!用Windbg和win7 x86双机调试。
Kernel32.dll中的ReadProcessMemory,其代码如下:


原来是kernelbase.dll中的同名函数,继续反汇编,在+12附近的位置又调用了一个导入函数:


此时就到了关键的地方了。ntdll.dll中的NtReadVirtualMemory函数非常简单,就4句,非常简单,它的作用是什么呢?
在ntdll.dll中,大部门API也是这样的格式:
[Asm] 纯文本查看 复制代码mov eax, API索引号mov edx, 一个地址     ;该地址里的值是一个函数地址call [edx]                     ;调用这个函数,实现进入0环retn 14h

API索引号就是在3环调用了一个API,这个API在内核也就是0环,会有对应的内核函数,这个内核函数的地址在SSDT表中位于某个位置,这个位置就是索引号。进0环后,得找到对应的内核函数进行调用吧,就是根据这个索引号找到的。

一个地址,内里存的值是一个函数地址,反汇编看一下就知道了:


那其实就明确了,通过快速调用进0环后的第一个要执行的函数就是KiFastCallEntry。这个函数的作用就是拿着前面传下来的API索引号,获取相应的内核函数,调用之,从而实现应用层想要的功能。
整个过程整理如下:


此中的“粮道”我把它选为了Ntdll.dll中的KiFastSystemCall,上图蓝色的线,因为这个函数实现进入0环,3环的API就得通过这个必经之路进入0环。假如把这个必经之路给断了,那岂不是3环API进不了0环,从而0环无法为3环提供服务,这就达到了内核级拒绝服务攻击。另有一个地方也可以选为“粮道”,那就是MSR寄存器,进0环后要执行的函数地址是来源于MSR寄存器中的eip值,所以修改MSR寄存器也可以达到截断“粮道”的目的。

3、截断应用程序的粮道

根据第2节可知,3环进0环的关键函数是Ntdll.dll中的KiFastSystemCall,而且是以下面的情势来对它进行调用的:
[Asm] 纯文本查看 复制代码mov edx, 7ffe0300call [edx]                                ;           call KiFastSystemCall

7ffe0300地址里保存了KiFastSystemCall的地址。
其实这里涉及一个名为_KUSER_SHARED_DATA的数据结构,在3环和0环分别定义了一个该结构,此中在3环,这个结构地址固定为7ffe0000;在0环,这个结构地址固定为ffdf0000。这两个结构的内容完全雷同,它们偏移+300处的成员名为SystemCall,保存的正好就是KiFastSystemCall函数的地址,所以上面的7ffe0300就是这么来的。看图。

选b的话,Windbg会再次询问我雷同的问题,再次选b,就会中断了


假如选i的话,步骤和结果如下:

(注:图片是gif格式的,太大了上传不了,看不到动态效果,大家有兴趣的本身做实验就可以看出变化的)

修改ffdf0000+300处的成员也会使系统出现这种现象。以下是修改ffdf0000+300中断后的栈回溯信息。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-11-24 10:37 , Processed in 0.078125 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表