-
-
[原创]从寄生到扩散 感染性病毒与杀毒技术的攻防博弈
-
发表于: 11小时前 53
-
一、引言
什么是感染性病毒
一说起感染性病毒,很多人第一时间想到的,往往是医学范畴里的流感病毒。在人感染流感后,常会出现发热、咳嗽、流涕、咽痛等症状,且流感主要通过飞沫、密切接触等方式进行传播,我们可以通过远离传染源、规范佩戴口罩、接种流感疫苗等方式进行预防。
而计算机中的感染性病毒与医学上面的有异曲同工之妙。比如计算机的感染性病毒行为可以概括为3个步骤。寄生--复制--传播。
寄生:它们都是通过寄生在宿主之上才能正常运作,无法独立运行。医学病毒寄生在活体细胞,计算机病毒寄生在可执行文件、文档、磁盘引导区。
复制:它们都是在宿主活动时进行复制。医学病毒是细胞进行正常生理活动时,计算机病毒是程序被点击运行时
传播:医学病毒靠飞沫、接触等途径传播;计算机病毒靠文件流动传播:U盘、电子邮件附件、下载的软件、网页脚本等等,都是它的“传播媒介”。两者都是通过“接触”在宿主之间转移。
关键差异:医学病毒是自然演化或变异的结果。计算机病毒则几乎全部由人编写,它的“变异”和“进化”通常也来自黑客的人为修改,经过演变,现代恶意软件已具备一定的自动变形能力(如多态病毒),以躲避杀毒软件的检测,这在一定程度上模拟了生物病毒的变异逃逸。
计算机感染性病毒与勒索病毒是什么关系
感染性病毒是按照传播方式进行分类命名,勒索病毒是按照危害目的进行分类命名,两者是交集的关系。

二、病毒与检测方式的迭代
接下来,我们以时间线的形式,梳理病毒形态和检测技术的演变更替,以及火绒是如何应对这些挑战。
目前最新的感染性病毒特征:以更贴合正常文件的逻辑,在尽可能不修改文件结构的情况下,以代码块的形式穿插进原文件。(这好比恶性肿瘤,病灶局限时,切除病变部位就能阻止扩散;可一旦病变存在于遍布全身的血液中,暴力清除的方式就不再适用。)

再来一张图帮助大家理解文件结构,可以看到早期的病毒思路。它更贴近于暴力直接修改文件的入口,先执行他添加的代码块,然后执行正常程序的逻辑。这样的坏处显而易见,因为他与正常文件的运行思路格格不入(很少有正常软件直接跳转到最后一个节执行)。而如今的病毒思路,在不改变文件结构的情况下,进行了尽可能的伪装,包括加密、执行顺序。(可以把头部文件理解为电梯里面的按钮,把恶意代码理解为一层楼,假设给一栋房子加一层楼,那电梯里面的按钮是不是也得加一个对应楼层的按钮。)

三、病毒设计思路剖析
接下来为大家介绍一个最新、较为复杂的Expiro家族感染性病毒。从逆向分析的角度,为大家阐述一下它们的设计思路。

文件结构对比查看
第一步、查看文件结构。从这个地方就能看出来文件存在以下问题。
问题1:末尾节UPX1的名称,UPX是一种压缩壳的命名方式,并且通常使用UPX压缩的节表也只会有2个,一个UPX0,一个UPX1。
问题2:末尾节的大小太大,并且覆盖了WinCertificate。Start是偏移起始地址,Size是长度。很明显WinCertificate在UPX1的[Start,Start+Size]范围内。WinCertificate是签名文件,一般所有上市公司发布的正规软件都会有签名文件,用作校验文件是否被修改,是否是官方发布。所在位置处于文件末尾,不会被某个节包含在内。

第二步:对比一下感染前后的区别。重点是入口节的代码区别,即使没看代码也可以初步了解感染逻辑。
1. 首先是入口节以及入口偏移都没有变动,说明程序入口没有修改。
2. 入口节很多CC CC字节被替换为了有意义的代码。(CC字节在汇编语言中代表int 3。代表异常。)
3.下方右边文件结构对比,明显感染后的文件在末尾多出一大块数据。
没看代码,只看文件结构,即可大概猜到它的工作原理,修改入口代码某处的跳转指令,跳转到这些被修改CC的指令,然后一步一步解密末尾数据块。最后跳转过去执行恶意功能,最后跳转回到正常的功能。


文件代码查看
病毒文件的入口节
我们重点从入口开始查看,因为这是感染性病毒经常修改的地方。果然在第一个函数(.text:0000000140001274 E8 3C FE FF FF call loc_1400010B5)的地方发现了猫腻。点击跳转过去,瞬间明白该代码通过修改入口开始的第一个跳转call指令来达到劫持程序的目的。然后后续代码以缝隙寄生的形式插入到代码中无意义的字节中,在每个代码块之间跳转执行解密逻辑。
这样的好处显而易见
1. 首先代码主体执行顺序是按照原程序进行的。如果原程序本身能够执行,运行肯定没问题。(这是个很现实的问题,很多程序设计思路非常优秀,但是在运行的兼容性的考虑不够,再优秀的设计思路无法运行也等于白设计。)
2.除了劫持的跳转call指令,没有修改任何原程序有意义的指令。修改的都是CC这种无意义的指令。非常小的代码块的形式首先可以防止静态检测(静态检测如果以非常小的代码块做为特征,一定会误报很多白文件)。其次这样会显得程序结构非常正常(假设病毒换个思路单独找一块空白的地方集中写入代码,这样做在杀软看来非常突兀,非常容易查杀的。就像你身上突然某个地方肿了,非常容易被察觉。)


病毒文件的末尾代码节
准备阶段
在经历过上述代码块多次跳转的解密末尾节,最后跳转至末尾节的shellcode部分。
这末尾shellcode部分的经过分析功能之后流程如下:
1. 通过读取配置信息,获取文件的偏移与大小。(重点1)
2. 使用异或算法解密一次
3. 使用RtlDecompressBuffer WindowsAPI函数解密一次
4. 反射内存加载DLL(重点2)
5. 获取导出函数名称a执行。

重点1
刚刚对第一步以及第四步标记了重点,接下来给大家讲一下为什么是重点,首先是第一点,这块地方暴露了病毒开发者的设计的后续该解密块的结构体。对这逆向有助于帮助我们理解这块加密数据,对于后续恢复程序有很大帮助。
这里虽然只调用了两个偏移,实际上可以以这两个偏移作为支点,反推他的整个结构体。(反推需要经验。)

在已经知道[4,7]是长度,[0x10,0x13]是起始偏移。我们查看附近的其他值,这些值我们先同样以长度或者起始偏移来揣测他们。再分别代入到代码中查看对应偏移。细节图片就不放太多,大家感兴趣可以自己手动复现。
{
+0:32位加密文件长度 0x5DD98
+4:64位加密文件长度 0x56DFC
+8:32位加密文件起始偏移 0xAC0
+0xC: 64位加密文件起始偏移 0x61938
+0x10: 32位shellcode入口偏移 0x61B88
+0x14:64位shellcode入口偏移(我们正在查看的代码)0xBC9C4
+0x18:整个加密的文件的总长度 0xBD000
+0x1C:后续加密内容
}

重点2
重点2是ReflectiveLoader函数。
这个函数是什么?
首先这个函数是人工重命名为ReflectiveLoader。其含义代表反射DLL加载技术。这是一个目前流行病毒都会经常使用的一个技术(包括各个APT组织,以及银狐组织)。该技术的细节大家可以通过网络进行了解,只需要知道这个技术有很高隐蔽性,作用是规避检测和防止明文文件落盘。

这个函数为什么是重点?
该函数不仅仅是简单的反射加载函数,病毒开发者很有想法,对其做了很大的改动。
第一步:首先查看它要反射加载的dll在解密后是什么样子。
也是一眼就发现问题所在。
问题1:不是标准的PE格式文件。(标准PE格式文件都是以MZ开头)
问题2:PE头也没有。
问题3:导入表被加密了

问题4:DLL入口函数也识别错误。

第二步,查看该函数的具体实现,可以发现它设计了两条分支,一个是正常的MZ+PE头的分支正常解析。另一条也就是识别PNG开头自定义解析。使用+88偏移(实际上是checksum值作为密钥)解密入口地址,导入表,重定位表。


在通过逆向分析这病毒前期的准备阶段,可以得出以下结论:
通过第一点结构体的逆向外加整个前期病毒的运行模式的查看,我们可以知道病毒开发者有着良好的开发习惯,较强的代码功底。
通过第二点以及第三点,使用异或外加RtlDecompressBuffer Windows的API双层解密,这也是目前很多较强木马的思路(比如银狐以及很多APT木马)。这两个算法,首先实现容易并且不消耗大量算力,该API正常文件也会大量使用。病毒开发者也很了解杀软厂商的想法(这个API以及异或算法即使杀软厂商能够识别也不会去采纳,因为大量白文件也会有误报的风险)
通过第四点,变体的反射dll加载。病毒开发者很了解逆向相关技术和相关防止杀软检测的思路。该变体明显是防止沙盒沙箱产品直接进行dump获取到真实有效dll文件所设计。
感染阶段
已经分析清楚前期的所有准备工作,接下来解密以及手动填充这个dll。后续的所有分析以及截图均以解密之后的dll作为参考。(这个解密以及填充dll就留给大家作为课后作业,感兴趣的话自己实现一下)
即使是在前期准备阶段做了充足的加密工作,后续的dll也存在妨碍分析人员分析的手法。一共有两种手法。
手法1:代码块的形式来拼接代码,这样做的好处之前也讲过了,防止杀软通过静态规则来检测。
手法2:花指令,利用无意义的指令来妨碍ida工具的识别。
手法2中最后三句代码
jz loc_180005BA1 相同则跳转
jnz loc_180005BA1 不相同则跳转
jmp short loc_180005BFB 不用判断直接跳转
实际等效于jmp
loc_180005BA1
这一句代码。第三句是无论如何都没有意义的,因为前两句已经跳转。但这样写会给ida识别时带来很大困扰导致无法反汇编。


在执行感染逻辑之前,该病毒会做一次地区规避,通过API函数GetSystemDefaultLangID获取计算机的系统ID。然后进行比对。


规避地区语言ID

该小章节总结:结合地区规避来看,很大可能性是上述表格这些地区的病毒开发者所开发。
总共分为两个线程,一个执行感染逻辑一个执行回连逻辑。

在地区规避筛选之后,正式进入到感染阶段,病毒开发者设计了接力的形式来运行感染逻辑。
1. 判断是否是管理员权限,不是则退出
2. 枚举服务程序进行判断和感染
3. 全盘感染
服务程序感染
针对服务进程的,首先会解密6个字符串,后续用作筛选。(windefend/`UI0Detect` /`svchost` /`TrustedInstaller` /`DllHost` `.\LocalService`)
筛选对应进程,条件如下:
1. 名称前两个字符为wd,跳过
2. 名称含windefend的,跳过
3. 名称或者路径含`UI0Detect` /`svchost` /`TrustedInstaller` /`DllHost`跳过
4. 在.\LocalService账户下的跳过
5. 路径长度 > 129的跳过

感染逻辑后续与全盘扫描一起讲述,这里直接跳到感染结束之后的动作。在感染相关服务程序之后,会根据当前程序的权限进行权限修改。如果本身就是自启动文件(SERVICE_AUTO_START)则不会修改,如果是手动启动(SERVICE_DEMAND_START)或者禁用(SERVICE_DISABLED)统一修改为(SERVICE_AUTO_START)。
然后对该程序进行权限统一操作:统一设置为内置账户.\LocalService下

全盘感染
全盘感染与服务程序感染也有相似的规避逻辑。
1. 浏览器规避(chrome.exe、msedge.exe)
2. 目录排除(\Winodws \ProgramData \Application Data \Microsoft)
3. 如果是移动硬盘会沉睡100秒再进行感染。

该小章节总结:
1. 病毒开发者非常熟悉服务程序中的优先级。他规避的几个字符串除了是杀软可能在的目录或名称,以及如果感染会影响系统正常运行的svchost共享宿主程序。
2. 并且开发者通过服务设置自启动,这样可以规避注册表自启动和计划任务自启动的检测
3. 开发者也没有一味追求最高权限,在感染结束之后会设置为统一的LocalService。这一步甚至可以说是降权操作,针对原先运行在高权限LocalSystem下的服务符合感染条件会进行降权操作。这是开发者的取舍他更看重“融入正常服务”而不是“拿到最高权限”。
在正常文件中也规避了杀软常扫描的路径以及很容易被用户发现的浏览器程序。
感染逻辑
总共感染4种后缀文件。(exe,scr,docx,xlsm)4种后缀。分别对应标志位docx:1 xlsm:2 exe,scr >3(会在具体逻辑中再次筛选确认)

Docx\xlsm
这两个类型的感染方式大同小异。都是给头部的声明文件添加几个字段,后续把恶意代码拼接到尾部。(由于该两类型文档实际上都是解释性代码文件组成,技术实现都非常简单就不过多讲解感染原理。直接解释感染前后结构图片。感兴趣的读者可以自己随便找一个对应格式文件,通过右键---解压操作查看一下内部的明文代码文件)


该小章节结论:
1. 通过代码的设计,docx是开发者的主要目标,xlsm代码设计有缺陷(恶意代码在其中缺少触发开关,相当于一伙劫匪去银行,拿了一堆工具撬开保险柜,保险柜差临门一脚打开,但他们留下工具人就走了),疑似开发者自身没有完成直接拿半成品开始投毒释放,也不排除是故意的。
2. xlsx与xlsm的区别在于xlsm自带宏启用。(但实际上国内大家常用xlsx很少用xlsm)
3. Docx是用户使用量非常多的文件,但感染的本质是宏代码调用VB语言代码进行运行。宏的危险性相信大家都已经深有体会。他还会把docx修改为docm的后缀,这可以作为大家判定文件是否被感染的一个证据。
虽然作者设计了xlsm分支,但是在该分支在设计以及最终实现上都并不合理。在实际运行中是不会发生感染操作。推测该分支是病毒开发者还未完成的分支。
Exe\scr
这两种文件的变化其实与docx\xlsm也很像,也是头部字段声明的修改数据+尾部数据添加,但是多了一个中间执行的加解密变化,并且有5种入口模式的变化。

这5种入口模式hook或者说修改的原理如下。按照优先级讲述一下5种入口模式的原理。

3种解密代码写入,3种解密代码的其中的算法密钥是每次25字节去与末尾节异或解密。算法密钥是随机生成。所以理论上该解密算法的变种3x25x255 = 19,125种。再结合5种入口模式理论上变种数量为95,625。(这里在实际环境中更为复杂,在实战当中,病毒交叉感染,开发者未考虑到的细节损坏感染,各种意外导致文件残缺并非特例情况)

总结:
1. 病毒开发者非常熟悉PE程序的运行流程,所设计的5种模式几乎涵盖了所有情况。并且基本可以做到在真正的代码运行前运行恶意逻辑。
2.病毒的变体逻辑设计也是让静态扫描作用无法涵盖所有情况。
回连域名逻辑
病毒的回连域名生成逻辑也能体现出病毒开发者的小心谨慎。
//伪代码只供阅读,无法运行
alphabet = "a".."z" // 26 个(ctx+0x130 = 26)
loop: // 每 30 分钟一轮
tries = 0 // ctx+0x78
while (tries < 512) { // 一轮最多 512 次查询
tries++
idx = ctx.idx // ctx+0x08:0 ~ 127 循环
ctx.idx = (idx + 1) % 128 // 128 回绕 → 只有 128 个不同域名
L = 5 + rand(ctx.seed, 0) % 5
name = ""
for (i = 0; i < L; i++)
name += alphabet[ rand(ctx.seed, i + 1) % 26 ]
if (DnsQuery_W(name + ".biz", A) == 0)
break // 命中即停,不再往后查
// 轮内没有 Sleep,直接发下一个
}
Sleep(1800000) // 0x1B7740 ms = 30 分钟,然后下一轮通过这个域名的生成逻辑,我们可以得出开发者真的非常小心谨慎,不想被溯源发现。每一轮128个biz生成,谁能被dns解析就尝试连接。这样总共有接近26^5+26^6+26^7+26^8+26^9 = 5,646,683,350,880的组合。这样做的好处显而易见,只需要注册biz相关域名即可尝试准备接收数据。
本篇文章重点强调感染逻辑,回连以及相关功能逻辑如果想要看详细文章就去私信火绒公众号后台吧。
目前,火绒安全软件已实现对该感染性病毒的查杀。
四、本篇要回答的问题:如何防御
医学上,预防流感的基础手段是远离传染源、佩戴口罩、接种疫苗。而在计算机世界里,火绒安全软件也在承担和这三项对应的防护工作。
远离传染源:火绒的工程师时刻关注着互联网上的最新动态(不论是用户的反馈还是火绒工程师的网络勘探都会留意各类病毒的情况)。在以往的案例中很多个人或者团队开发者,在自身电脑已经处于感染情况下,由自己打包的程序发布导致成为大规模感染源头。
(他们并非病毒的开发者,只是在不知情的情况下,成为病毒传播的载体。案例参考:
612K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2Z5N6h3!0J5L8$3&6Y4i4K6u0W2j5$3&6Q4x3V1k6V1L8$3y4#2L8h3g2F1N6q4)9J5c8Y4c8W2j5$3S2Q4x3V1k6$3K9i4u0Q4y4h3k6J5k6i4m8G2M7Y4c8Q4x3V1j5I4z5o6p5K6i4@1f1J5i4K6R3H3i4K6V1@1i4@1f1J5i4K6R3H3i4K6V1@1i4@1f1%4i4@1q4o6i4@1q4o6i4@1f1@1i4@1t1^5i4K6R3&6i4@1f1$3i4K6V1$3i4@1t1&6i4@1f1#2i4@1q4p5i4@1p5$3i4@1f1^5i4@1u0p5i4@1p5$3i4@1f1&6i4@1p5&6i4@1t1I4i4@1f1#2i4K6S2m8i4@1p5^5i4@1f1%4i4@1p5^5i4K6S2n7i4@1f1#2i4@1u0m8i4K6S2r3i4@1f1$3i4K6R3@1i4K6W2r3i4@1f1$3i4K6W2r3i4K6V1K6i4@1f1$3i4@1u0m8i4K6V1H3
550K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2Z5N6h3!0J5L8$3&6Y4i4K6u0W2j5$3&6Q4x3V1k6V1L8$3y4#2L8h3g2F1N6q4)9J5c8Y4c8W2j5$3S2Q4x3V1k6$3K9i4u0Q4y4h3k6J5k6i4m8G2M7Y4c8Q4x3V1j5I4y4U0j5%4i4@1f1J5i4K6R3H3i4K6V1@1i4@1f1J5i4K6R3H3i4K6V1@1i4@1f1$3i4K6R3&6i4K6S2n7i4@1f1$3i4K6W2o6i4@1u0m8i4@1f1#2i4K6R3^5i4@1t1%4i4@1f1$3i4K6W2o6i4@1u0m8i4@1f1^5i4@1u0p5i4@1q4r3i4@1f1@1i4@1u0n7i4@1t1$3i4@1f1$3i4K6R3@1i4K6W2r3i4@1f1$3i4K6W2r3i4K6V1K6i4@1f1$3i4@1u0m8i4K6V1H3
845K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2Z5N6h3!0J5L8$3&6Y4i4K6u0W2j5$3&6Q4x3V1k6V1L8$3y4#2L8h3g2F1N6q4)9J5c8Y4c8W2j5$3S2Q4x3V1k6$3K9i4u0Q4y4h3k6J5k6i4m8G2M7Y4c8Q4x3V1j5I4y4K6V1%4i4@1f1J5i4K6R3H3i4K6V1@1i4@1f1J5i4K6R3H3i4K6V1@1b7f1y4s2i4@1f1^5i4@1t1#2i4K6R3@1i4@1f1$3i4@1u0m8i4K6V1H3i4@1f1%4i4@1u0p5i4K6V1I4i4@1f1%4i4@1q4n7i4K6V1&6i4@1f1$3i4K6R3@1i4K6W2r3i4@1f1$3i4K6W2r3i4K6V1K6i4@1f1$3i4@1u0m8i4K6V1H3
)
戴好口罩:火绒病毒库就是火绒软件准备的口罩。火绒坚持每日更新情报库、病毒库为大家保驾护航。病毒库的工作原理很简单,样本的恶意代码反馈到计算机底层也就是一段有规律的数字,提取这段有规律的数字用作检验的规则。情报库功能包括反馈给用户的画面是右小角的钓鱼网站或者危险网站提醒。

火绒科普:火绒杀毒软件报毒Virus前缀代表感染性病毒。W64代表64位PE程序。Expiro代表命名。r代表变种的序号。

打疫苗:有小“火”伴可能会有疑问,现在病毒不是在不停地迭代,如果它规避了那一段有规律的数字怎么办?这正是火绒虚拟沙盒的核心。程序的运行万变不离其宗,不管如何混淆代码、加密加壳、怎么变来变去,它执行的核心一定是围绕着寄生--复制--传播进行。火绒使用高仿真度的虚拟沙盒,模拟出真实的用户环境,通过这种方式在有限的资源内还原尽可能多的恶意逻辑,实现高效的威胁识别和查杀。(虚拟沙盒技术:不会产生任何可能影响到用户环境的结果)

五、判断是否中招以及解决方案
该病毒感染范围:
1. Windwos机器
2. 所有磁盘,包括移动磁盘,移动磁盘感染会先进行沉睡100秒,并非立刻感染
3. 后缀为docx,xlsm,exe,scr文件(他是以最后一个.作为判定比如123.exe.abc判定为abc后缀文件不会感染,dll文件不被感染)(目前xlsm文件正常执行是不会感染的,因为这是病毒开发者还在构造的逻辑,属于半成品,但并不排除已经有迭代完成的版本已经被投放)
4. chrome.exe、msedge.exe名称不感染
5. (\Winodws \ProgramData \Application Data \Microsoft)目录含有以上字符串的不感染
6. 还有一些极个别情况,阅读全文了解。
如何知道自己是否中招:
1. docx文档后缀文件变为docm后缀文件
2. 电脑运行与以往明显变卡。
3. 杀软不停的报毒,报毒名称含有Virus
4. 文件增加大小约700kb。
5. 查看疑似被感染的PE文件,末尾节表为UPX1。
6. 每30分钟,512个连续.biz域名查询。
7. Win+R输入lusrmgr.msc。查看用户分组下是否有LocalService
有以上的特征,很可能已经中招。
中招之后:
如果经验不足:
1. 拔掉网线或断掉wifi,连接过这台电脑的U盘或者硬盘不要去其他电脑使用。马上换一台设备联系相关防护软件的客服,也可以联系火绒客服协助解决。
如果经验充分:
1. 断网,尤其是能访问公司共享文件夹的公司局域网,然后寻求公司相关人员进行帮助或者联系杀软厂商。
2. 如果你是不能断网的机器,这种情况出现,首先也要在网络配置中规避掉公司的共享文件夹。一定要让自己的机器不能访问任何共享文件夹或者外部磁盘,已经插上的磁盘千万不要去别的电脑上运行。
3. 设置电脑的区域与显示语言为 章节感染阶段规避地区语言地区之一,注意是区域与语言都要改。这一步可以咨询AI如何操作,在向AI提问的时候一定要把你电脑的版本提供清楚给AI,因为Win7,WinXp,Win10,Win11.每个版本的操作并不相同。
4. 处理完必须处理的事情之后,可联系火绒客服,在处理期间不能给其他好友或者电脑传输感染范围内的文件,也最好不要运行。
5. 该病毒存在交叉感染实例,如果想联系火绒处理,请务必保留最原始的文件,不要做任何处理。(如果做了人为修改之后提交,这样不利于工作人员复现排查问题,不好定义问题)
六、感染源头溯源
目前国内没有明确的正常软件被感染成为第二次感染爆发的源头,但结合外网的诸多情报显示有4种情况比较可能。
- 破解/打过补丁的软件
- Drive-by download(访问被入侵网站后下载的文件)
- 被其他恶意软件释放
- U 盘/可移动介质

七、总结
文章中有很多缩写字符含义解释:
Oep:全称 Original Entry Point(原始入口点),所处位置 PE 可选头(Optional Header)中的 AddressOfEntryPoint 字段,是一个 RVA(相对虚拟地址)。作用是指示程序加载后开始执行的第一条指令的位置。可以理解为:地铁公交站的入口。
Tls:全称 Thread Local Storage(线程局部存储),所处位置 PE 的 .tls 节及相关数据目录(TLS Directory),其中包含 TLS 回调函数数组的指针。作用是让每个线程拥有各自独立的局部数据副本;其回调函数可在传统入口点(OEP)执行之前被系统调用,因此也常被恶意软件用来在调试器到达 OEP 前抢先运行代码。可以理解为考驾照科目3开车之前先围着车转一圈检查一下。
API:全称 Application Programming Interface(应用程序编程接口),在 PE 结构中主要体现于导入表(Import Table)及相关导入地址表(IAT)等数据目录。作用是在 PE 文件里记录该程序需要从外部 DLL 调用的函数,使程序能够使用操作系统或其他模块提供的功能(如文件操作、内存分配、网络通信等)。可以理解为:小区物业提前为户主修好水管和煤气管,户主可以直接拿现成的管子接上水龙头或者煤气灶直接使用。
CFG:全称 Control Flow Guard(控制流防护),所处位置与 PE 的加载配置目录(Load Configuration Directory)相关,核心是其中的 GuardCFFunctionTable(GFIDS 表)以及 GuardFlags 等元数据。作用是在编译/链接阶段标记合法的间接调用目标,并在运行时由系统检查间接调用是否指向这些合法地址,从而增加攻击者劫持控制流的难度。可以理解为菜鸟驿站的作用,承担商家与个人用户之间的转发。
Shellcode:一段功能代码但无法直接独立运行,需要可运行程序先运行提供环境。可以理解为鼠标键盘,单独拿出来没法使用,必须接入到主机通电才可以发挥作用。
PE:windows操作系统下可执行文件的结构。
docx,docm,exe,scr,xlsx,xlsm,dll:文件后缀名称
在阅读完本篇对计算机感染性病毒的特点之后,相信大家对感染性病毒应该有一个新的认识。结合以往所有感染病毒的情况:
1. 感染性病毒的投递一般并非点对点定投(不会像APT组织只针对某一行业的公司)。开发者或者开发者团队为了不被溯源,通常会采用先在不被起眼的地方投递,在各种机缘巧合的情况下,感染某一活跃量高的软件之后才出现大规模扩散感染,这对溯源来说呈现指数级难度。针对这一情况,大家的安全意识也需要提高,在获取到软件之后,最好经过杀软或者上传至病毒扫描网站,尤其是各类小众软件。
2. 该病毒目前火绒定性为expiro家族的新变种,新增docx感染能力,xlsm格式属于未完成状态,并且对感染逻辑进行了多形态的变化。详细技术细节阅读全文了解。(目前火绒已支持查杀,恢复功能后续将择机推出。)
3. 推测该病毒的开发者是一位俄语地区专职构造病毒人员。再与以往变种的对比当中,发现很多逻辑优化之处,阅读完本篇文章了解病毒感染细节。该病毒早在2013年之前已经有初始的版本(不排除之前还有更早的版本),该新变种最近流行于国内用户。但具体是如何流入国内还需要验证。(目前有很大可能是maze勒索组织所遗留的技术与框架被二次开发。该组织在2020年宣布解散)
4. 感染中招后的处理,是否被感染的判断方法也在其中,参考章节判断是否中招以及解决方案。
可上传检验文件是否为病毒平台:
国家计算机病毒协同分析平台:f6aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6$3K9i4u0#2M7#2)9J5k6h3y4$3k6i4u0U0i4K6u0W2L8%4u0Y4i4K6u0W2j5$3&6Q4c8f1k6Q4b7V1y4Q4z5o6S2Q4c8e0g2Q4z5f1u0Q4b7V1c8Q4c8e0g2Q4z5o6k6Q4z5o6g2Q4c8f1k6Q4b7V1y4Q4z5o6V1`.
VirusTotal:55aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2$3K9i4u0#2M7%4c8G2N6r3q4D9i4K6u0W2j5$3!0E0i4K6u0r3i4@1g2r3i4@1u0o6i4K6R3^5i4@1f1#2i4K6W2n7i4@1u0p5i4@1f1#2i4@1p5@1i4K6V1$3i4@1g2r3i4@1u0o6i4K6R3&6
微信公众号:火绒安全
火绒论坛:1cdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5Y4y4Q4x3X3g2Z5N6h3!0J5L8$3&6Y4i4K6u0W2j5$3^5`.
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。



