Untitled
26、杀毒软件
0x00 前言
这一节将来看看杀毒软件相关的概念,毕竟知己知彼才能百战不殆,最后会介绍一下常见的免杀方法。
0x01 目的
常规杀毒软件的目的就是发现已知病毒并中止删除它,而作为攻击者则需要对病毒文件进行免杀处理,从而使杀毒软件认为我们的文件是合法文件。
0x02 杀软受到的限制
1、杀毒软件不能把可疑文件删除或者结束运行,否则用户的正常操作可能就会受到影响,同时也会对杀毒软件公司的声誉、口碑产生影响。
2、杀毒软件不能占用太多的系统资源,否则用户可能会考虑卸载杀毒软件。
3、大多数杀毒软件的一个弱点就是只会在浏览器下载文件或者文件被写入磁盘时才会检查这个文件的特征码,也就是说在这种情况下才会检查文件是否是病毒。
0x03 如何工作
1、在大多数杀毒软件背后都会有一个已知病毒的签名数据库,通过将当前文件的特征码与病毒签名数据库进行比对,如果一致则说明该文件是病毒。
2、同时一些杀毒软件也会去发现用户的一些可疑行为,而且杀毒软件对这种可疑行为的判定会下比较大的功夫。因为如果误杀,造成的后果可能对用户来说是比较严重的。
3、一些杀毒软件会在沙箱环境中去运行可疑文件,然后根据该可疑文件的行为判断是否为病毒。
0x04 如何免杀
首先要判断目标使用了哪款杀毒软件,然后自己在虚拟机中去尝试绕过它。
其次可以使用 Cobalt Strike 的 Artifact Kit 组件制作免杀可执行文件。Artifact Kit 是一个制作免杀 EXE、DLL 和 Service EXE 的源代码框架,在 Cobalt Strike 的 Help --> Arsenal
处可下载 Artifact Kit。
Artifact Kit 的工作原理大概如下:
1、将病毒文件进行混淆处理,使杀毒软件将其判定为可疑文件而不是病毒文件。这种混淆可以逃避那些使用简单字符串搜索来识别恶意代码的杀毒软件。
2、对病毒文件进行一些处理,以绕过沙箱检测。比如 Artifact Kit 中的 src-common/bypass-pipe.c 会生成可执行文件和DLL,它们通过命名管道为自己提供shellcode。如果防病毒沙箱不能模拟命名管道,它将找不到已知的恶意 shellcode。
Artifact Kit 的使用步骤大概如下:
1、下载 Artifact Kit
2、如果需要的话就修改/混淆病毒文件
3、构建
4、使用 Artifact Kit 加载脚本
0x05 Artifact Kit 使用演示
接下来就试试 Artifact Kit 进行免杀的效果,有条件的可以去官网下载支持一下正版。
这里使用 Artifact Kit 中的 dist-peek 方法进行测试。
来到 Cobalt Strike 下打开 Cobalt Strike -> Script Manager
,Load 加载 /Arsenal/artifact/dist-peek/artifact.cna
插件,之后在 Attacks -> Packages -> Windows Executable
中生成木马文件。
使用 VT 检测发现仅有 8 个引擎检测到,感觉效果好像还行。
把每个杀软的病毒库升级到最新后,实测可以过腾讯电脑管家、火绒,但 360 安全卫士 、 360 杀毒不行。
说句题外话,至于为什么用了两款 360 的产品,主要就是为了截图好看些。
0x06 Veil Evasion 使用演示
此外,也可以使用 Veil Evasion 框架,Veil Evasion 的安装也是比较简单的,Veil-Evasion 在 Kali 2020以前是自带的,但 Kali 2020 中是需要独立安装的。在 Kali 中可以直接使用 apt-get 进行安装。none
由于 Veil Evasion 有 200 多 M ,因此建议挂上代理进行下载安装。
安装完成之后,在 Cobalt Strike 里的 Attacks -> Packages -> Payload Generator
中选择 Veil 输出生成一个 payload.txt 文件
随后来到 Kali 下,输入 veil
启动,输入 use Evasion
使用 Evasion 工具,list
查看当前可用的 Payload
这里使用第 17 个即 go/shellcode_inject/virtual.py
Payload 作为示例,因为 go、c 等编译性语言语言相对于 python 等脚本语言来说免杀效果会好些。
之后输入 generate
,选择第三项 Custom shellcode string
,粘贴刚生成的 payload.txt 文本内容,输入要生成的 exe 文件名,即可生成一个免杀木马。
使用 virustotal 查杀了一下生成的 bypass_go.exe,发现被 40 个引擎检测到,不得不说这效果很一般。
实测可以过360 安全卫士、 360 杀毒,但腾讯电脑管家、火绒不行。
看到 VT 的检测结果后,我还以为四款杀软都能检测到呢,没想到啊。
0x07 免杀插件
使用方法可以参考项目中的介绍,目前效果感觉还是可以的,在 virustotal 上只被 10 个引擎检测到。
实测可以过 360 安全卫士、360 杀毒、腾讯电脑管家,但火绒不行。
0x08 总结
在测试完成之后,开始体会到为什么要判断目标使用了哪款杀软的目的了,就上面测试的情况来说,每一家都出现未检测到的情况。在实际的环境中,还是要根据目标的具体情况具体分析。
Emm,浏览器首页又被 360 改成 360 导航了。
另外不得不说一句,从使用的角度来说,火绒是这里面最乖的,没有其他杀毒软件那么多花花肠子。
27、applet渗透测试手法
0x00 前言
在开始今天的内容之前,先来看看什么情况下会进行云查杀:
1、首先判断文件是否为正常文件
2、如果判断为可疑文件,则把文件的 hash 上传到云上
3、同时把这个文件标记为可疑文件,而不是正常文件
因此可以通过修改我们的脚本来使其跳过云查杀,就像是在白名单里的程序一样。
0x01 Java Applet
接下来一起来看看 Cobalt Strike Java Applet 攻击,在 Cobalt Strike 的源码中内置了用于攻击 Java Applet 签名的 Applet 工具。
使用 Applet 工具的步骤如下:
1、到 Help -> Arsenal
2、如果需要的话就修改/混淆病毒文件
3、使用代码签名证书进行签名
4、构建
5、使用 Applet Kit 加载脚本
大概在 2014 年 7 月,开始有人在钓鱼中使用宏攻击,在几年前,这是一种效果还很不错的攻击方式。
0x02 应用程序白名单
站在防御者的角度,一个好的防御应该是列出只允许自己运行的应用程序白名单而不允许他人运行。对于攻击者则是使用白名单应用程序将代理放到内存中的方法来进行攻击,Java Applet 攻击就是这样做的。
一种攻击的方法是直接插入内存进行攻击。Java Applet、Office 宏、CS 下的 PowerShell 命令行都是这样做的。
一些白名单免杀的资料:
注:由于以上只是我个人在学这一节时做的笔记,因此看起来可能会比较意识流,实际上视频中老师也是按照这个顺序讲解的。
28、白名单申请和宏渗透
0x00 前言
这是 Cobalt Strike 学习笔记的最后一节,这节将来学习白名单申请与宏渗透的一些方法。
0x01 白名单申请
Win + R 打开运行窗口,输入 gpedit.msc
,来到 用户配置 -> 管理模板 -> 系统
处,打开 只允许指定的 Windows 程序
在打开的窗口中,勾选已启用
,之后点击显示
按钮,在其中写入白名单的程序名称后,点击两次确定之后即可。
0x02 建立宏攻击
在 Cobalt Strike 客户端上,选择 Packages --> MS Office Macro
,指定一个监听器,点击 Generate
,之后根据提示的步骤生成一个 Word 文档。
大体的步骤如下:
1、打开 Microsoft Word 或者 Excel
2、来到 视图 --> 宏
3、任意填写一个宏的名称
4、宏的位置选择为当前文档
5、点击创建
6、在打开的编辑器中,删除掉原来的内容
7、点击 Cobalt Strike 上的 Copy Macro
按钮
8、将刚复制 Cobalt Strike 生成的内容粘贴到打开的编辑器中
9、关闭编辑器
10、将文档保存为启用宏的文档,这里可以选择保存为 启用宏的 Word 文档
或者 Word 97-2003 文档
接下来使用钓鱼邮件等方式上传到靶机,当靶机运行该文档后启用宏内容即可上线。
这里不得不吐槽一句,Microsoft Office 的东西安装是真的麻烦。
在上面 2-8 步骤创建编辑宏内容的过程,也可以打开 开发工具 --> Visual Basic
界面,这里推荐使用快捷键Alt+F11
打开该界面。
之后编辑ThisDocument
模块,粘贴宏代码也可以达到上述 2-8 步的效果。
0x03 总结
自 4 月 19 日发布 Cobalt Strike 第一节笔记开始,已经过去了半年的时间,踩过了无数坑,解决了无数的坑。
感谢 Cobalt Strike 的作者 Raphael Mudge
的课程,感谢 UP Hack 学习呀
上传的中文翻译版本,感谢 A-Team
团队的 Cobalt Strike 4.0 中文翻译手册,感谢每篇笔记最后参考链接的作者们,感谢曾经帮助我解决所碰到问题的大佬们,谢谢你们。
最后,还有一点要注意的就是, CS学习笔记
系列只是我个人在学习 Cobalt Strike 的过程中所做的笔记,建议不要当做教程看,因为其中我本身已经知道的知识点和感觉不重要知识点我是没有记录的。
Last updated
Was this helpful?