Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
maldev-for-dummies — 恶意软件开发研讨会 | Kitploit
工具/GitHubGitHub/chvancooten/maldev-for-dummies
漏洞利用Shellcode恶意软件分析学习与教育红队Payload 开发实验室与实践
GitHubchvancooten/maldev-for-dummies

maldev-for-dummies

恶意软件开发研讨会

查看仓库
1.8k23563年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

菜鸟恶意软件开发指南

在 EDR 时代,红队操作人员再也无法依赖预编译的有效载荷了。因此,恶意软件开发正在成为每位操作人员的必备技能。开始接触恶意开发可能看起来令人生畏,但实际上非常简单。本次动手实践将告诉你开始所需的一切!

该仓库包含了在 Hack in Paris 2022 和 X33fcon 2023 上举办(或即将举办)的“菜鸟恶意开发”动手实践的幻灯片和配套练习。虽然这些幻灯片是为“现场”演示而设计的,但相关材料和练习将一直保留在此处,供你按自己的节奏完成——学习过程不应仓促!欢迎对本仓库提出问题或建议,提交 Issue 和 Pull Request。

⚠ 免责声明: 恶意软件开发是一项可以——也应该——用于善行的技能,以推动(进攻性)安全领域的发展并保持我们的防御能力敏锐。如果你利用这项技能进行未经授权的活动,那么你比本动手实践针对的“菜鸟”还要更“菜”,你应该赶紧离开这里。

动手实践简介

随着防病毒(AV)和企业检测与响应(EDR)工具日益成熟,红队被迫保持领先。execute-assembly 和将未修改的有效载荷存放在磁盘上的时代已经一去不复返——如果你希望你的行动持续时间超过一周,就必须提升你的有效载荷创建和恶意软件开发水平。然而,进入这个领域可能令人望而却步,而且找到合适的资源并不总是那么容易。

本动手实践面向该领域的新手,将引导你迈出作为恶意软件开发人员的第一步。主要面向进攻性安全从业者,但也非常欢迎防御性安全从业者参加,以拓宽他们的技能集。

在动手实践中,我们将探讨一些理论,然后为你搭建一个实验环境。根据你当前的技能水平和对该主题的熟悉程度,会有各种练习供你完成。然而,本次动手实践的目标是学习,明确地说,不是完成所有练习。你可以自由选择自己喜欢的编程语言进行恶意软件开发,但在动手实践期间,主要支持 C# 和 Nim 编程语言。

在动手实践中,我们将讨论开始构建自己的恶意软件所需的关键主题。这包括(但不限于):

  • Windows API
  • 文件类型与执行方法
  • Shellcode 执行与注入
  • AV 和 EDR 规避方法

开始之前

要开始恶意软件开发,你需要一台开发机器,这样就不会受到主机上可能运行的任何防御工具的干扰。我个人偏好 Windows 进行开发,但 Linux 或 MacOS 也同样适用。安装你喜欢的编辑器/IDE(除了 C# 我使用 Visual Studio 之外,几乎其他所有语言我都用 VS Code),然后安装所选恶意开发语言所需的工具链:

  • C#:Visual Studio 会提供包含开发 C# 所需的 .NET 包选项。如果你想在没有 Visual Studio 的情况下开发,可以单独下载 .NET Framework。
  • Nim 语言:按照 下载说明 操作。Choosenim 是一个方便的实用工具,可用于自动化安装过程。
  • Golang(感谢 @nodauf 的 PR):按照 下载说明 操作。
  • Rust:Rustup 可用于安装 Rust 以及所需的工具链。

别忘了禁用 Windows Defender 或添加适当的排除项,以免你辛苦的成果被隔离!之后,我们可以在另一台启用了 AV 等防御控制的机器上进行测试。

ℹ 注意: 通常,诸如 apt 的包管理器或 Chocolatey、Winget(现已内置!)等软件管理工具可用于以方便且可重复的方式自动安装和管理依赖项。但要注意,包管理器中的版本可能比实际版本落后几个版本!下面是一次性安装上述工具集的示例命令。

root@kitploit:~
choco install -y nim choosenim go rust vscode visualstudio2019community dotnetfx

编译程序

本次动手实践讨论的语言都是编译型语言,这意味着需要使用编译器将你的源代码翻译成所选格式的二进制可执行文件。编译过程因语言而异。

C#

C# 代码(.cs 文件)可以直接编译(使用 csc 工具)或通过 Visual Studio 本身编译。本仓库中的大部分源代码(除了 加分练习 3 的解决方案外)都可以按如下方式编译。

ℹ 注意: 请确保在“Visual Studio 开发人员命令提示符”中运行以下命令,以便它知道在哪里找到 csc。建议使用适用于你的 Visual Studio 版本的“x64 Native Tools 命令提示符”。对于大多数直接访问底层功能的脚本,需要 /unsafe 标志。

root@kitploit:~
csc filename.exe

你可以使用 /optimize 标志启用编译时优化。还可以添加 /target:winexe 来隐藏控制台窗口,或将其编译为 DLL(/target:library,但需确保代码结构适合此操作)。

Nim

Nim 代码(.nim 文件)使用 nim c 命令编译。本仓库中的源代码可以按如下方式编译。

root@kitploit:~
nim c filename.nim

如果你想优化构建以减小大小并剥离调试信息(对 OPSEC 更有利!),可以添加以下标志。

root@kitploit:~
nim c -d:release -d:strip --opt:size filename.nim

可选地,你可以添加 --app:gui 来隐藏控制台窗口。

Golang

Golang 代码(.go 文件)使用 go build 命令编译。本仓库中的源代码可以按如下方式编译。

root@kitploit:~
GOOS=windows go build

如果你想优化构建以减小大小并剥离调试信息(对 OPSEC 更有利!),可以添加以下标志。

root@kitploit:~
GOOS=windows go build -ldflags "-s -w"

Rust

Rust 代码(.rs 文件)通过 cargo 命令编译。Cargo 可用于管理依赖项并构建项目。本仓库中的源代码可以通过导航到项目文件夹并运行以下命令来编译。

root@kitploit:~
cargo build

如果你想优化构建以减小大小并剥离调试信息,可以添加以下标志。有关一些编译时的 OPSEC 选项,请参考每个 Cargo.toml 文件中的 [profile.release] 部分。

root@kitploit:~
cargo build --release

依赖项

C#

大多数解决方案可以在没有依赖项的情况下编译。如果需要依赖项,则提供链接到相应 NuGet 包的 Visual Studio 项目。

Nim

大多数 Nim 程序依赖于一个名为“Winim”的库来与 Windows API 交互。你可以在安装 Nim 后通过 Nimble 包管理器安装该库,如下所示:

root@kitploit:~
nimble install winim

Golang

本仓库的源代码中使用了某些依赖项。你可以在安装 Go 后按如下方式安装它们:

root@kitploit:~
go mod tidy

Rust

某些示例依赖于 windows-sys crate 来调用 Windows API。由于我们使用 Cargo,当你编译测试或发布构建时,包将自动管理。

资源

动手实践的幻灯片引用了一些你可以用来入门的资源。其他资源,如相关的博客或代码片段,列在每个练习的 README.md 文件中!

下载工具