首页
社区
课程
招聘
[原创] 震惊!一男子居然用杀软做出这种事情!
2020-7-7 14:43 10105

[原创] 震惊!一男子居然用杀软做出这种事情!

2020-7-7 14:43
10105

目录

思路

利用杀软对感染型病毒的清除过程中对文件名过滤的不严格实现任意目录写任意文件.(包括杀软目录, 但杀软目录下的文件无法覆盖)

原理

//假设以下是杀软的清除代码
int fuckpolyransom(wchar_t* szdir)
{
    //得到被感染文件的原始文件名
    wchar_t* originalfilename = GetInfectedFileOriginalFileName(xxxx);

    wchar_t* fulloriginalfilename = (wchar_t*)malloc(sizeof(wchar_t)*(32767));

    //没有对originalfilename进行检查是否包含'\\','//', 导致了问题.
    StringCbPrintfW(fulloriginalfilename,32767*sizeof(wchar_t),L"%s\\%s",szdir,originalfilename);

    CreateFile(fulloriginalfilename,xxxx);

    return 0
}

发现过程

最近搞polyransom.a. 这个感染型病毒会把目标文件整个包起来,然后执行时会释放, 而且它会保留原文件名信息.

 

之后我用各杀软清理了下被感染的文件,发现杀软会在当前目录下以原文件名创建恢复后的文件. 这时,我想到,如果保留的文件名中包含路径分隔符, 然后我再弄个目录符号链接(文件夹快捷方式应该也行), 岂不是可以利用杀软往任意目录下写任意文件了? 而且还是利用杀软的清除功能, 把内嵌的文件放到了我想要的位置!

 

那么,关键就在,杀软会不会对从感染体中获得的文件名信息进行检查. 经过试验发现, 不会,所以就有了这篇文章.

测试样本构造

随意取一个能查杀的polyransom.a样本, 将路径信息更改成b\fuck.exe

 

原始文件名:

 

 

可以看到文件名为cuninst.exe, 后面紧跟着文件的PE数据. 此处是解密后的数据.

 

重跑程序,来到解密之前, 将数据填成解密之后的数据. 修改解密为加密流程, 得到新文件名的解密前数据:

 

 

od的显示有点bug, \fuck.exe前面的b也应该是被选中的. 得到的数据为:

 

 

利用010editor修改文件数据:

 

 

将修改完的文件跑下,看是否修改成功:

 

 

 

至此,样本构造完成.

杀软测试

卡巴斯基(kis20.0.14.1085_zh-hans-cn_full)

首先, 根据杀软安装目录,创建目录符号链接:

 

 

然后把构造的样本放到C:下, 选择查杀样本.

 

 

 

 

果然, 成功了.

360卫士 (2020-7-7版)

同理,测试,得到结果为:

 

360杀毒(2020-7-7版)

 

同理,测试,得到结果为:

 

应用场景:

​ 你在卡饭论坛上上传了一个这样的样本, 让大家帮你测测看能不能查杀, 于是....

其他

  1. 创建符号链接可能会被拦截, 但这一步并非必须步骤, 只要把样本放到目标目录的上级目录, 或者利用..\相对路径(不过这点得看杀软是否使用的是\\?\开头支持超长路径的绝对路径了).
  2. 一般人点了扫描之后,看到扫出病毒, 点击立即处理,然后看到样本消失,肯定会以为病毒被删除了,却没想到还有这种骚招数,这样隐蔽性就比较高.

附件密码infected

只需在样本所在目录下用mklink /d b <targetdir>,然后用杀软扫描样本, 就可以将文件释放到targetdir中.


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2020-7-8 18:45 被boursonjane编辑 ,原因: 增加目录
上传的附件:
收藏
点赞6
打赏
分享
最新回复 (31)
雪    币: 261
活跃值: (64)
能力值: ( LV7,RANK:111 )
在线值:
发帖
回帖
粉丝
ReeHeiHei 1 2020-7-7 15:11
2
0
放到自启动目录,杀软会自己报自己的警么
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-7 15:17
3
0
ReeHeiHei 放到自启动目录,杀软会自己报自己的警么

2020-7-7 15:17:37 目前不会.

最后于 2020-7-7 15:17 被boursonjane编辑 ,原因:
雪    币: 3006
活跃值: (657)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
越坏 2020-7-7 15:19
4
0
能放dll吗
雪    币: 322
活跃值: (4099)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
pysafe 2020-7-7 15:59
5
0
楼主真的风骚
雪    币: 32238
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2020-7-7 16:07
6
0

360就一狗屎,上次去学校后边的复印店用U盘打印了点东西,结果他们安着360还是未能查出来。
回家电脑硬盘灯就亮,还好反映快,马上拔了。网上下载各种杀毒软件全是能检测到,说重启后干净。结果全是饭桶。
换上人家试用版的Norton AntiVirus就一次也没有重启病毒下次再用其他饭桶也没再查出来!这就是事实,一点扒瞎谁也没有。

老牌Norton好,饭桶当自强。


最后于 2020-7-7 16:11 被ninebell编辑 ,原因:
雪    币: 3667
活跃值: (524)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
逻辑错误 1 2020-7-7 16:28
7
0
震惊, 一男子每次踢完杀软的场子以后就 溜了溜了... 
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-7 18:09
8
0
都行
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-7 18:09
9
0
越坏 能放dll吗
都行
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-7 18:15
10
0

n

最后于 2022-1-10 16:59 被boursonjane编辑 ,原因:
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
靴子 2020-7-7 20:37
11
0
我比较关心你是怎么解密的 又是怎么把自己的EXE放里面的?
雪    币: 123
活跃值: (295)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xlshn 2020-7-7 22:31
12
1
没看懂,似乎省略了很多上下文
雪    币: 1042
活跃值: (455)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Rookietp 2020-7-7 23:42
13
0
广告模块我最强、
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-8 08:04
14
0
靴子 我比较关心你是怎么解密的 又是怎么把自己的EXE放里面的?
简单的办法就是你弄好自己的exe, 然后让polyransom.a感染你, 之后你把信息中的名字改了就行.
麻烦的办法就是找出被识别为polyransom的exe的构造方法.
这个变种具体解密方式不属于这帖子讨论的内容, 逆向自己看看就知道了.
理论上来说, 这个病毒有问题, 那么其他的满足以下条件的病毒可能都有问题:
1. 清除过程中会释放文件
2. 名字由被感染体中信息指定
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-8 08:12
15
0
xlshn 没看懂,似乎省略了很多上下文

其实就是这样的过程, 假设以下是杀软的清除代码:


// szdir: 当前扫描目录

int fuckpolyransom(wchar_t* szdir)
{
    //得到被感染文件的原始文件名
    wchar_t* originalfilename = GetInfectedFileOriginalFileName(xxxx);
    
    wchar_t* fulloriginalfilename = (wchar_t*)malloc(sizeof(wchar_t)*(32767));
    
    //没有对originalfilename进行检查是否包含'\\','//', 导致了问题.
    StringCbPrintfW(fulloriginalfilename,32767*sizeof(wchar_t),L"%s\\%s",szdir,originalfilename);
    
    CreateFile(fulloriginalfilename,xxxx);
    
    return 0
}


雪    币: 1688
活跃值: (888)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9521 2020-7-8 10:10
16
0
这个思路有意思
雪    币: 4411
活跃值: (2221)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whitehack 2020-7-8 10:41
17
0
说不定已经有牛逼大佬在用了. 细思极恐.
雪    币: 452
活跃值: (6123)
能力值: (RANK:580 )
在线值:
发帖
回帖
粉丝
UzJu 8 2020-7-8 15:36
18
0
NIU
雪    币: 739
活跃值: (1865)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
梨子 2020-7-8 16:06
19
0
喔嚯,不明觉厉
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-8 17:25
20
0
梨子 喔嚯,不明觉厉
雪    币: 405
活跃值: (1935)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wowocock 1 2020-7-8 18:02
21
0
360正常状况下是不允许你创建链接到他保护目录的吧。
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-8 18:08
22
0
wowocock 360正常状况下是不允许你创建链接到他保护目录的吧。
安全卫士会提示, 360杀毒不提示, 不过符号链接不是必须步骤.
雪    币: 2771
活跃值: (1623)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
wofan[OCN] 21 2020-7-9 07:04
23
0
世上本无毒,就是你们整来整去,到处都是毒,无形间消耗资源。
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
人在塔在 2020-7-9 11:33
24
0
牛逼
雪    币: 2441
活跃值: (2879)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2020-7-10 12:09
25
0
?
游客
登录 | 注册 方可回帖
返回