☰
恶意代码开发(免杀)(3)——白加黑免杀
2026/10/7 6:34:15 网站建设 项目流程

一、基础环境搭建

本部分介绍 Cobalt Strike 基础环境的启动流程,包括服务端、客户端的启动以及监听服务的配置。

步骤 1:启动服务端

在 Kali Linux 终端中,进入 Cobalt Strike 工具目录,使用 teamserver 命令启动服务端。需要指定 IP 地址、密码和配置文件。

图1:Kali Linux终端中启动Cobalt Strike Team Server

步骤 2:启动客户端

启动 Cobalt Strike 客户端程序,连接至已启动的服务端。客户端界面将展示会话管理、载荷生成等功能。

图2:Cobalt Strike客户端启动界面

步骤 3:启动监听

在客户端中配置并启动监听器(Listener),设置监听端口和回调地址,等待目标机连接。

图3:配置并启动监听器

步骤 4:目标机上线

目标机运行载荷后,Cobalt Strike 服务端将收到连接请求,目标机成功上线。可在 Beacons 视图中查看已上线的主机信息。

图4:目标机成功上线,Beacons列表显示在线主机

步骤 5:使用截图工具

上线后可使用 Cobalt Strike 内置的截图工具,远程获取目标主机的桌面截图,便于后续渗透测试操作。

图5:Cobalt Strike截图工具获取目标桌面截图

二、网络配置

在进行渗透测试之前,需要确认网络配置,确保 Kali 攻击机与目标机之间的网络连通性。

步骤 1:查看本机 IP 地址

在 Kali 终端中使用 ifconfig 或 ip 命令查看本机 IP 地址。注意查看 eth0 网卡的 IP 配置。

图6:查看Kali本机IP地址(注意eth0网卡)

步骤 2:Kali 启动服务端

在 Kali 终端中启动 Cobalt Strike Team Server,指定正确的 IP 地址和配置文件。

图7:Kali启动Team Server

步骤 3:Kali 启动客户端连接服务端

启动 Cobalt Strike 客户端,使用服务端 IP 地址进行连接。

图8:Kali启动客户端并连接服务端

步骤 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.h>
unsigned 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 文件。其中的函数用于弹窗测试代码是否正确。

图21:Visual Studio编译DLL成功(输出窗口显示生成成功)

步骤 5:插入大马木马

将之前生成的"大马"木马代码插入到 DLL 的函数中,实现功能增强。

七、部署与攻击

本部分介绍如何将制作好的 DLL 文件部署到目标机器并执行攻击。

步骤 1:找到生成文件

在 Visual Studio 项目的 Release 输出目录中找到编译生成的 DLL 文件。

图22:查找编译生成的DLL文件

图23:DLL文件所在目录

步骤 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)等。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询