跳至主要內容

2-课程简介

Maldevacademy大约 5 分钟安全开发

什么是恶意软件?

恶意软件是一种专门设计的软件,用于执行恶意操作,例如获得对机器的未经授权的访问或从机器窃取敏感数据。术语“恶意软件(Malware)”通常与非法或犯罪行为联系在一起,但它也可能被道德黑客(即白帽子)(例如渗透测试人员和红队成员)用于对组织进行授权的安全评估。

MalDev学院 假设参加本课程的用户只会出于道德和法律目的来使用学到的知识。任何其他用途都可能导致刑事指控,MalDev学院 概不负责。

为什么学习恶意软件开发?

有人想要学习恶意软件开发有多种原因。从攻击安全角度来看,测试人员通常需要针对客户端环境执行某些恶意任务。在参与行动时,测试人员一般有三种主要工具选择:

  1. 开源工具 (OST) - 这些工具通常由安全供应商签名,并在任何得到良好保护或成熟的组织中被检测到。在进行攻击性安全评估时,它们并不总是可靠。

  2. 购买工具 - 预算较多的团队通常会选择购买工具,以节省参与中的宝贵时间。与定制工具类似,这些工具通常是闭源的,并且有较好的机会逃避安全解决方案。

  3. 开发定制工具 - 由于这些工具是定制构建的,因此未被安全供应商分析或签名,这给了攻击团队在检测方面一定的优势。这就是恶意软件开发知识对于成功进行攻击安全评估至关重要的原因。

应使用何种编程语言?

从技术上讲,任何编程语言都可以用来编写恶意软件,例如 Python、PowerShell、C#、C、C++ 和 Go。话虽如此,某些编程语言在恶意软件开发中比其他语言更常见,这通常归结为以下几点:

  • 某些编程语言更难逆向工程。攻击者始终应将确保防御者对恶意软件的行为了解有限作为目标的一部分

  • 某些编程语言需要目标系统具备先决条件。例如,执行 Python 脚本需要目标计算机上存在解释器。如果没有 Python 解释器,计算机就无法执行基于 Python 的恶意软件。

  • 根据编程语言的不同,生成的文件大小会有所不同。

高级编程语言与低级编程语言

编程语言可分为两类:高级语言和低级语言。

  • 高级语言 - 通常更抽象化,对内存使用效率较低,由于对一些复杂功能进行了抽象,因而为开发人员提供了更少的总体控制。高级编程语言的一个示例是 Python。

  • 低级语言 - 提供了一种直接与操作系统交互的方法,在与系统交互时为开发人员提供了更多自由。低级编程语言的一个示例是 C 语言。

根据上述解释,不难理解为什么低级编程语言一直是恶意软件开发的首选,尤其是在针对 Windows 机器时。

Windows 恶意软件开发

Windows 恶意软件开发形势在过去几年中发生了转变,现在高度关注于规避基于主机的安全解决方案,如防病毒 (AV) 和端点检测和响应 (EDR)。随着技术的进步,仅仅构建执行可疑命令或执行“类似恶意软件”操作的恶意软件已不再足够。

MalDev Academy 将教授你构建可以在真实攻击中使用的规避式恶意软件。这些模块还将指出 非安全运维open in new window 操作或可能导致安全解决方案或蓝队检测到你的恶意软件的操作。

恶意软件开发生命周期

从本质上说,恶意软件是一段专为执行特定操作而设计的软件。成功的软件实施要求一个称为软件开发生命周期(SDLC)的过程。同样,构建精良且复杂的恶意软件将需要一个定制版本的 SDLC,称为恶意软件开发生命周期(MDLC)。

尽管 MDLC 并非必须是一个正式的过程,但它在 MalDev Academy 中被用来让读者轻松理解开发过程。MDLC 包含 5 个主要阶段:

  1. 开发 - 开始恶意软件的功能开发或改进。

  2. 测试 - 执行测试以发现迄今为止开发的代码中的隐藏 bug。

  3. 离线 AV/EDR 测试 - 在尽可能多的安全产品上运行已开发的恶意软件。重要的是,该测试应在离线状态下进行,以确保不向安全供应商发送样本。使用 Microsoft Defender,可以通过禁用自动样本提交和云交付保护选项来实现这一点。

  4. 在线 AV/EDR 测试 - 在具有互联网连接的安全产品上运行已开发的恶意软件。云引擎通常是 AV/EDR 的关键组件,因此,针对这些组件测试您的恶意软件对于获得更准确的结果至关重要。请小心,因为这一步可能会导致将样本发送到安全解决方案的云引擎中。

  5. IoC(入侵指标)分析 - 在此阶段,您成为了威胁猎人或恶意软件分析师。分析恶意软件并提取潜在可用于检测或签名恶意软件的 IoC。

  6. 返回步骤 1