点击上方蓝字关注我们
建议大家把公众号“TeamSecret安全团队”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。
免责申明
"本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我们不鼓励也不支持任何非法活动。"
"我们创建这个社区是为了促进技术交流和知识分享。我们希望每位成员都能在遵守法律法规的前提下参与讨论和学习。如果使用本文档中的信息导致任何直接或间接的后果和损失,我们提醒您,这将由您个人承担。我们不承担由此产生的任何责任。如果有任何内容侵犯了您的权益,请随时告知我们,我们将立即采取行动并表示诚挚的歉意。我们感谢您的理解和支持。"
概述
一起小结下浅析常见杀软及cobaltstrike过windows defender、卡巴实践。文章有很多待补充及实践的地方,谢谢大家。
杀软常见查杀分类
静态查杀:主要基于hash和特征码,hash可以是文件的hash或导入表之类的hash,特征码可以是是PE头、pdb、全局字符串、互斥体之类的信息。
动态查杀:基于API的监控和沙箱执行,杀软会通过对ntdll的关键API进行hook,实现对程序的API监控。另外可以在内核中注册一系列的回调函数实现对行为的监控。
启发式:多数杀软采用的是基于权重的启发式,就是一套加减分的规则,用于检测程序的潜在恶意行为,如程序在沙盒或模拟器环境运行,在此过程中有操作端口和通讯的函数,并将自身加载到启动项中等上述行为,则很有可能被判定为恶意,另外一些畸形区块也可触发。
杀软行为浅析
杀软的基本功能包括:反病毒内核、扫描引擎、特征库、解包程序、模拟器、流量监控、浏览器安全插件、自我保护及更新等。
首先我们可以先从相应的驱动着手,杀软已经在system进程中加载了不同功能的驱动:
我们可以简单瞅瞅里面的驱动,先以360FsFlt.sys为例子:
根据导入表中的回调函数,可见该驱动对进程、线程、模块、对象及注册表均进行了相应的监控操作:
然后一系列Flt系列的函数,可见该驱动是Minifilter文件监控:
其中FltRegisterFilter()是用来注册为过滤器的(注意第二个参数是一个微过滤器注册结构体),然后通过FltCreateCommonicationProt()注册通讯端口与用户态通讯,最后调用FltStartFiltering()开始过滤操作:
微过滤器注册结构体,注意其第五个属性Operation Registion,为文件操作的回调函数注册的地方。
我们再外后看,像比较敏感explorer、wscript等程序运行时也会挂载相应的dll:
当我们的文件落盘后360的托盘程序也会拉起,:
我们自身程序在双机运行后,360的托盘程序也同样会拉起:
对我们所运行的程序进行一系列文件相关的操作:
我们可以观察其调用堆栈,由此可以决定处出每次createFile是由那个dll拉起的:
同样我们可以使用Autorun 过滤关键字得知360在注册表哪些地方做了持久化:
HKLMSOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRun
HKLMSystemCurrentControlSetServices
Ntdll HOOK
Edr通常会hook住ntdll,是程序后续的操作走入edr的流程,下面在edr中是被hook住的函数:
下面图片中红色框中的是正常的NtWriteVirtualMemey()流程,而在下方的NtWriteVirtualMemory()已经被hook住了 jmp指令跳转到了其他的流程。
内核回调:
内核回调是杀软检测出敏感行为的一个重要手段,常用的由进程监控、线程监控、模块监控、对象监控、文件的过滤器、网络监控等等,如下图所示。
应对小手段
4.1花指令
花指令本质上是一段可有可无的代码,插入花指令后会使反汇编器出错,但不影响程序的实际执行。如下图,用xor/cmp/jz/jnz方式迷惑了x32dbg,使其不能正确显示出call eax:
4.2沙箱模拟器
对comodo类型沙箱,可以尝试使用不常见的系统API,如SetErrorMode;当我们自己的代码调用SetErrorMode并向其传入参数为1024,然后再次调用SetErrorMode,但传入不为1024的参数值,此时第二次调用SetErrorMode的返回值一定为第一次所设的参数值;尝试修改在用户态不能修改的寄存器,如CR0等;当文件区块数为0或大于96个时,部分杀软有可能会认为该PE文件已损坏,因为当在xp时最大支持的区段块为96个,超过就无法执行,目前vista开始最大支持65535个;区块数也可为0,即NumberOfSections值为NULL。另外AddressOfEntryPoint值也可为NULL,即表示入口点在偏移量在0x00处。
对微步、VT类型沙箱,可以从进程,有几个用来分析的进程检测,process name : AcrylicService.exe // DNS代理程序,用来检测DNS流量;
壁纸,微步沙箱的壁纸(桌面图标)每次是不变的
C:UsersvbccsbAppDataRoamingMicrosoftWindowsThemesTranscodedWallpaper.jpg //路径
1645643018 //壁纸文件的hash
系统用户名 ,每次运行沙箱的用户名不变 ,都是vbccsb
主机名:VBCCSB-PC
用户名:vbccsb_*
系统制作厂商和型号 , 正常PC的系统制作厂商都是电脑的牌子 DELL、LENEVO、ASUS
// 微步
System Manufacturer: System manufacturer
System Model: System manufacturer
性能指标,例如 内存大小、CPU核数等,现在很少见内存少于4G的PC
Total Physical Memory: 3,071 MB
4.3 特征码
常见的特征码有字节流、某段数据的校验和、文件的hash、模糊散列算法(针对变化较小的样本集合)、基于流程图调用图的散列算法(一般不用),这里以字节流特征码为例。
特征码定位是比较经典的技术了,主要用于静态文件查杀的对抗,常用的工具有myccl、virtest等,其工具原理在保留pe格式下不断抹去其中的数据(逐块暴露),最终得到一个免杀的文件,而被抹去的数据就是相应的特征码(还是分治算法那套)。
同一个样本在不同杀软下定位出来的特征码是有很大差别的,特征码可以在数据段、代码段、导入表、重定位表等地方出现,下面分别以cs生成的bin在wd和火绒作为例子:
在wd环境下定位出3处特征,两处在代码段一处在重定位表中,代码段第一处为FF 15call 调用了writeProcessMemory
第二处是在sub_10009708函数中,其中dword_10039888这个全局变量为被异或后的配置信息:
第三处特征码在LoadConfigurationDirectory载入配置表中:
在火绒下所定位到的特征,在data段和rdata。
4.4 混淆
混淆包含常见的字符串混淆和控制流混淆等,其中控制流混淆又分为控制流平坦化、虚假控制流和指令替换。常见控制流平坦化,就是在不改变源代码的功能前提下,将C或C++代码中的if、while、for、do等控制语句转换成switch分支语句。如下图所示:
由上图可见左图的单一循环,在控制流平坦化后分成多个case代码块和一个入口块。前驱模块(case 2)主要是进行基本块的分发,分发通过改变switch变量来实现。后继模块(case3)也可用于更新switch变量的值,并跳转到switch开始处。
项目参考:https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0
下图是加入混淆后的main函数,可见函数的流程已经被混淆。
-mllvm -sub -mllvm -fla -mllvm -split -mllvm -split_num=2
通过BeyondCompare观察得每次所生成的可执行文件中的代码段会发生明显差异(也可通过BIndiff观察):
4.5 替换敏感的API
通常我们会使用CreateThread去执行shellcode,目前我们可以利用某些函数中的callback填入需要执行的shellcode地址,利用其去执行shellcode。如SetTimer就是这种API函数,其位于user32.dll中,函数原型为:
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
我们可以在第四个参数(即回调函数)中填入shellcode地址;
更多的执行方式可以参考这个项目:https://github.com/S4R1N/AlternativeShellcodeExec
同样复制shellcode到内存中的操作可以使用不同的API,如LdapUTF8ToUnicode、UuidFromStringA,或者使用挂在pe节,使用系统对其自行加载,我们再执行。
4.6 Syscall对抗ntdll的hook
因为ntdll.dll是普通应用程序从3环进0环的必经之路,而通过hook ntdll中的敏感函数可以使得改程序的后续流程走到杀软程序,从而对其后续行为做相应的检测,常用的syscall项目有HellsGate、syswhipers。当程序使用syscall就像红色的箭头,直接到达syscall table,绕过了被hook所圈起来的ntdll。
4.7 分离加载对抗沙箱
分离加载(Installer、Code、Loader)的方式,这种三端分离的方式能更好的反沙箱,因为通常情况下只会上传Loader进沙箱,而Code是可以在伪装成bmp图片后另外存放的,Install将加密后的Core隐藏在注册表、UUID、WMI中,最后Loader在相应空间提取出Core后,再利用保存在自身中的Key将其解密,最后内存加载执行加载。
4.8 执行敏感行为后的操作
在执行CreateProcess(启动进程)CreateRemoteThread(远程注入)或一些网络行为后,是我们需要对其进行处理的。我们通过openProcess打开其他线程后,再通过VirtualAllocEx、WriteProcessMemory写入相应的shellcode后,需要使用VirtualProtectEx将其内存属性设置为PAGE_NOACCESS(而杀软通常是不会扫描此属性的内存)。当在CreateRemoteThread创建注入时会触发相应的检测机制,所以我们在CreateRemoteThread在创建线程时使用挂起创建,即第六个参数为0x00000004,然后sleep休眠一段时间,待检测完后主动调用ResumeThread 恢复线程的执行。
参考项目:
https://github.com/plackyhacker/Suspended-Thread-Injection/blob/main/injection.cs
免杀演示
6.1 shellcode框架免杀火绒、360演示
6.2 loader 免杀卡巴、wd演示
文章有很多待补充及实践的地方,如不同格式文件的特征码、特征码的存放文件及格式、杀软的攻击点等等。最后谢谢大家观看。
2024Hvv专栏
目前纷传已更新漏洞如下:
1. U8cloud系统MeasureQueryframeAction SQL注入漏洞 2. 用友 GRP-A-Cloud 政府财务云 selectGlaDatasourcePreview SQL注入漏洞 3. 北京致远互联软件股份有限公司AnalyticsCloud分析云存在任意文件读取漏洞
4. 蓝凌KEP前台RCE漏洞
6. 1Panel面板最新前台RCE漏洞(CVE
7. SuiteCRM系统接口responseEntryPoint存在SQL注入漏洞(CVE
8. Netgear-WN604接口downloadFile.php信息泄露漏洞(CVE
9. Nacos远程代码执行漏洞
10. LiveNVR流媒体服务软件接口存在未授权访问漏洞 livenvr 青柿视频管理系统 channeltree 存在未授权访问漏洞
11. fogproject系统接口export.php存在远程命令执行漏洞(CVE
12. 全息AI网络运维平台ajax_cloud_router_config.php存在命令执行漏洞
13. 广联达OA接口ArchiveWebService存在XML实体注入漏洞
14. 亿赛通数据泄露防护(DLP)系统NetSecConfigAjax SQL 注入 漏洞
15. 亿赛通数据泄露防护(DLP)系统 NoticeAjax SQL 注入漏洞
16. 用友CRM系统import.php任意文件上传漏洞
17. 用友GRP A++Cloud政府财务云存在任意文件读取漏洞
18. 瑞友天翼应用虚拟化系统hmrao.php存在SQL注入漏洞
19. 红海云eHR-PtFjk.mob存在任意文件上传漏洞
20. 福建科立讯通信指挥调度管理平台ajax_users.php存在SQL注入漏洞
21. 泛微OA E-Cology ln.FileDownload文件读取漏洞
22. 大华DSS数字监控系统存在SQL注入漏洞
加入纷传
掌握免杀艺术,深入内网核心。
我们是您网络安全技能提升的加速器,专注于免杀技术和内网渗透的深度培训。在这里,您将学习如何无声无息地穿透防御,掌握网络安全的高级技巧。
-
免杀专精:学会如何在不触发警报的情况下进行有效渗透。
-
内网精通:深入网络的心脏地带,学习如何识别和利用关键漏洞。
-
实战演练:通过模拟真实攻击场景,提升您的应对策略。
加入我们,让免杀和内网渗透成为您网络安全职业生涯的利器。
Tips:
每周不定时纷传小圈子都会开启公开课!
TeamSecret安全团队初衷
我们的目标是:
-
知识普及:让更多人了解网络安全的基础知识和最新动态。
-
技能提升:为网络安全从业者和爱好者提供实战技能的提升。
-
案例分析:深入剖析国内外网络安全事件,提炼经验教训。
-
攻防演练:模拟攻击与防御场景,提高应对网络威胁的能力。
我们的内容涵盖:
-
攻击队常用的网络攻击技术与工具。
-
网络攻防演练的策略与实战案例。
-
系统漏洞分析与防御措施。
-
网络安全法律法规与伦理道德。
-
网络安全行业动态与未来趋势。
加入我们,您将获得:
-
专业的网络安全知识分享。
-
与行业专家的互动交流机会。
-
网络安全防护的实用技巧。
-
网络安全事件的深度解析。
安全第一,技术先行。 我们相信,通过不断的学习和实践,我们能够共同构建一个更加安全、稳定的网络环境。
关注我们,一起探索网络安全的奥秘,成为网络世界的守护者!
添加作者微信发送:进群,邀请你加入学习交流群
原文始发于微信公众号(SecretTeam安全团队):免杀专题-杀软浅析及cobaltstrike免杀wd卡巴实践
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论