ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

恶意代码开发(免杀)(3)——白加黑免杀

2026/10/7 6:34:19 拓冰建站 浏览量
恶意代码开发(免杀)(3)——白加黑免杀 一、基础环境搭建本部分介绍 Cobalt Strike 基础环境的启动流程包括服务端、客户端的启动以及监听服务的配置。步骤 1启动服务端在 Kali Linux 终端中进入 Cobalt Strike 工具目录使用 teamserver 命令启动服务端。需要指定 IP 地址、密码和配置文件。图1Kali Linux终端中启动Cobalt Strike Team Server步骤 2启动客户端启动 Cobalt Strike 客户端程序连接至已启动的服务端。客户端界面将展示会话管理、载荷生成等功能。图2Cobalt Strike客户端启动界面步骤 3启动监听在客户端中配置并启动监听器Listener设置监听端口和回调地址等待目标机连接。图3配置并启动监听器步骤 4目标机上线目标机运行载荷后Cobalt Strike 服务端将收到连接请求目标机成功上线。可在 Beacons 视图中查看已上线的主机信息。图4目标机成功上线Beacons列表显示在线主机步骤 5使用截图工具上线后可使用 Cobalt Strike 内置的截图工具远程获取目标主机的桌面截图便于后续渗透测试操作。图5Cobalt Strike截图工具获取目标桌面截图二、网络配置在进行渗透测试之前需要确认网络配置确保 Kali 攻击机与目标机之间的网络连通性。步骤 1查看本机 IP 地址在 Kali 终端中使用 ifconfig 或 ip 命令查看本机 IP 地址。注意查看 eth0 网卡的 IP 配置。图6查看Kali本机IP地址注意eth0网卡步骤 2Kali 启动服务端在 Kali 终端中启动 Cobalt Strike Team Server指定正确的 IP 地址和配置文件。图7Kali启动Team Server步骤 3Kali 启动客户端连接服务端启动 Cobalt Strike 客户端使用服务端 IP 地址进行连接。图8Kali启动客户端并连接服务端步骤 4启动监听在客户端中配置监听器。注意 IP 地址填写 tun0 接口的地址VPN 隧道接口。图9配置监听器IP填写tun0接口地址三、Payload 生成与木马制作第 1 次实验本实验使用 Cobalt Strike 的 Payload 生成器制作木马文件包括大马和小马两种类型。步骤 1生成 Payload在 Cobalt Strike 客户端中选择 Payloads 菜单配置载荷参数。IP 地址填写 tun0 接口的 IP左上方显示然后生成 payload。图10配置payload参数并生成IP填tun0接口地址步骤 2保存文件选择保存目录将生成的 payload 文件保存到指定文件夹。步骤 3生成大马和小马本次实验生成了两个木马文件一个大马功能完整的后门程序和一个小马轻量级下载器。将这两个文件直接复制到目标机器上运行即可。图11生成的两个木马文件大马和小马四、文件加密与十六进制转换为了绕过杀毒软件检测需要对木马文件进行加密处理和十六进制转换。步骤 1使用 sgn 工具加密使用 sgn 工具对木马文件进行多轮加密处理生成自解密的 .bin 文件增加逆向分析难度。图12使用sgn工具运行多轮生成自解密.bin文件步骤 2转换为十六进制使用 xxd 工具将 .bin 文件转换为十六进制格式便于后续嵌入 C 代码中编译。图13使用xxd工具将文件转换为十六进制格式步骤 3查看转换结果查看转换后的十六进制内容确认文件数据完整无误。图14查看十六进制转换结果五、Shellcode 编译与可执行程序生成第 2、3 次实验本部分介绍如何将 shellcode 嵌入 C 语言代码中编译生成可执行程序。步骤 1编写 Shellcode 加载器代码编写包含 shellcode 的 C 语言源代码使用 Windows API 函数 VirtualAlloc 分配内存、MoveMemory 拷贝 shellcode、然后通过函数指针执行。#include windows.hunsigned char shellcode[] {0xe8, 0xdc, 0x05, 0x00, 0x00, 0xa0, 0xa6, 0xc3, ...};unsigned int shellcode_len 1641;int main() {void* pMem VirtualAlloc(NULL, shellcode_len, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);MoveMemory(pMem, shellcode, shellcode_len);((void (*)())pMem)();}步骤 2编译生成可执行程序使用 MinGW 交叉编译器x86_64-w64-mingw32-gcc将 C 代码编译为 Windows 可执行程序.exe。图15使用MinGW编译器生成可执行程序实验说明关于实验编号的说明• 第 2 次实验不使用 sgn 工具加密直接将 shellcode 转十六进制后编译生成可执行程序。• 第 3 次实验使用上述方法编译出来的 app 可执行程序。六、DLL 动态链接库制作第 4 次实验本实验将 shellcode 代码装入 DLL动态链接库文件中通过 DLL 注入方式实现渗透。步骤 1创建动态链接库项目在 Visual Studio 中创建一个新的动态链接库DLL项目。图16创建动态链接库项目图17项目配置步骤 2复制 wget 代码将 wget 压缩包中的代码复制进来。这段代码包含特定函数名的函数用于实现 DLL 的导出功能。图18将wget压缩包中的代码复制到DLL项目中步骤 3选择 Release 模式编译在 Visual Studio 中选择 Release 编译模式然后执行 Build生成操作。图19选择Release模式并编译构建图20编译输出结果步骤 4获得 DLL 文件编译成功后获得一个 DLL 文件。其中的函数用于弹窗测试代码是否正确。图21Visual Studio编译DLL成功输出窗口显示生成成功步骤 5插入大马木马将之前生成的大马木马代码插入到 DLL 的函数中实现功能增强。七、部署与攻击本部分介绍如何将制作好的 DLL 文件部署到目标机器并执行攻击。步骤 1找到生成文件在 Visual Studio 项目的 Release 输出目录中找到编译生成的 DLL 文件。图22查找编译生成的DLL文件图23DLL文件所在目录步骤 2获取文件哈希值获取文件的哈希值MD5用于文件完整性验证和特征识别。例如70993a2dd2bcae87026b4413f6a9e53a。步骤 3上传文件到目标机将 DLL 文件和 wget 文件上传/复制到需要攻击的目标机器上。图24将DLL文件和wget文件上传到目标攻击机器步骤 4重命名文件将生成的 DLL 文件重命名为 winget伪装成正常文件降低被检测风险。图25将dll2重命名为winget步骤 5运行 winget在目标机器上运行 winget 程序触发 DLL 加载和 shellcode 执行。图26运行winget后Cobalt Strike收到连接目标机上线攻击结果服务端收到连接请求目标机成功上线。可在 Cobalt Strike 的 Beacons 视图中查看已控制的主机信息包括进程名winget.exe、用户权限Administrator、架构x64等。