标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2025-2319]   作者: 如一 发表于: [2019-03-11]

本文共 [349] 位读者顶过

 一、前言

    本次将从全球战略角度出发,来进行一次在全球范围内开发运维人员常用的某软件更新劫持过程,该打法属于供应链打发,当然本人并不会真正的去做,只会模拟,重点部分也会适当打码。


    当发生网络战时,如何快速打入重点目标内部?

1、  Web层渗透—难度大,各应用经过各大安全公司渗透与众测后剩下漏洞少得可怜甚至都没有任何漏洞,而且还有各种Waf、IDS、流量检测,而且进了DMZ也不一定能进得了生产办公区,更不要说拿到情报。

2、  钓鱼水坑攻击—在特殊时期,重点目标安防会加重,全员安全意识倍数增加,这种类型的攻击中招少之又少,而且还要等目标上钩,去主动催的话会引起警惕。

3、  爆破????

4、  扫操作系统漏洞???

5、  ............

[出自:jiwo.org]

说下更新劫持的好处

1、隐秘,不易被发现。

2、需求,因为软件更新意味着修补了重大bug或漏洞,或者增加了新的功能。

3、每款软件都是特定人群在用,每群人用的软件还不一样。


说了这么多,下面进入正题....


二、正常更新流程

    在安装该软件后,点击检查更新,程序会向事先写在程序里的更新地址发起更新请求,逻辑如下图

如下图


    上图中更新时发送的参数中,经测试参数r的内容为当前版本号,注意,参数r原本内容为16,当将版本号降低后,返回内容中会提示存在更新,并附有下载链接



三、更新劫持调试


   通过第二个环节,我们已经将该软件更新逻辑弄清楚了,所以现在我们可以模拟更新服务器返回内容,给客户端推送更新内容,此时我们需要考虑以下问题:

1、  软件更新时,是否会验证更新服务器域名的解析IP?

2、  是否会验证下载链接的域名与解析IP地址?

3、  程序更新时是否会校验数字签名?  绝多数都会!

下面开始测试上面提出的问题


1、  软件更新时,是否会验证更新服务器域名的解析IP?

我们先要搭建DNS服务器,将更新请求的域名解析到我们自己本地的Web服务器上,并且按照原有文件目录结构新建文件,这里我们通过使用PHPstudy集成环境来给程序返回更新内容。


    如下图,将DNS解析记录指向本地的Web服务器地址


    接下来按照原有更新请求目录结构创建


    php文件内容为

    随后将装有该软件的PC机上的DNS设置为之前搭建好的

    打开程序,检查更新,如下图,程序提示的版本号为刚才我们php文件里设置的版本号

    此时,我们已经可以确定,程序更新时,不会对更新服务器域名解析的IP进行校验。

 --------------------------------------------------------------------------

2、是否会验证下载链接的域名与解析IP地址?

    为了验证这个问题,我们将在返回内容中添加下载链接,并将更新包替换为其它程序

此时将返回内容修改为

    1.exe是微软的Cacheset.exe

    打包成1.zip后,再次检查更新,发现会报错,从请求中可以看到程序没有识别返回内容中下载链接

    将1.zip改成原有的更新返回文件名****.zip后再次检查更新,依然报错

将下载地址中的IP换成域名,再次尝试

    可以发现这次提示存在更新的内容和之前都是不同的

    而且可以成功下载,并且程序提示重新启动进行更新

    这表明,程序不会验证下载链接的域名与解析IP地址

 --------------------------------------------------------------------------

3、程序更新时是否会校验数字签名?

    下一步,我们就对压缩包内容做手脚

    通过参考正常更新时下载的压缩包,发现需要用Cacheset.exe替换压缩包中的主程序,并且程序名称要与正常更新包内相同

    此时再次检查更新并下载更新包,更新后按照提示重新启动程序,会发现如下图中的内容,代表着程序正在解压我们只做的特殊zip压缩包

    点击yes后,会发现我们放在压缩包内的Cacheset.exe被成功运行,这也代表着该程序对更新下载回来的程序并没有校验数字签名

    此时完全可以将Cacheset.exe换成我们的木马。


四、投放后门

    

        假设此时我们在目标内网,或者已经拿到该软件的更新站点权限

1、制作后门

    用C#写个下载者,功能为下载192.168.109.131上的后门并执行,我们使用Cacheset.exe代表真正的后门。

 

    下一步,在用户端检查更新

    OK,存在更新,开始下载


    然后重启,UAC允许


    之后就会运行1.exe下载并运行后门


    说下为什么不直接推送后门,如果直接推送后门程序,那么如果被拿去分析,你的后门将公之于众,使用下载者便不会,就算被拿去分析,暴露的也只是下载者


            


评论

暂无
发表评论
 返回顶部 
热度(349)
 关注微信