# source_code_trojan_backdoor_detection **Repository Path**: lintsinghua/source_code_trojan_backdoor_detection ## Basic Information - **Project Name**: source_code_trojan_backdoor_detection - **Description**: 针对云原生、大数据、智能模型开源项目中,对使用 JAVA、Python、Go 语言的开源软件或组件源代码,检测代码中是否隐藏存在多类型的木马后门,造成安装此类开源软件源代码并运行后,导致计算机被攻击被控制和信息外泄。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-30 - **Last Updated**: 2024-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ⚠️免责声明:本项目是学校小学期研究网络空间安全相关领域所用,仅供网络空间安全专业知识学习交流使用,严禁用于非法用途,因此造成的一切后果与本项目开发人员无关。 # 项目计划书 ## 一、 课题要求 - #### 针对**云原生、大数据、智能模型开源项目**中,对使用 **JAVA、Python、Go** 语言的开源软件或组件源代码,检测代码中是否隐藏存在**多类型的木马后门**,造成安装此类开源软件源代码并运行后,导致计算机被攻击被控制和信息外泄。 > 注:不能使用开源软件实现此题目。 ## 二、 **测试环境:** - #### **Windows 或 Linux 操作系统计算机**,安装所开发的开源软件源代码后门木马检测工具**检测源代码中隐藏的多种类型后门木马等恶意代码**,并**形成检测报告**,**分析准确率和误报率**。 > 提示: > > (1). 学习后门木马等恶意软件代码在代码上的表现形式; > > (2). 学习**模式匹配**、**中间语言转换**、**向量转换**等源代码检测技术。 ## 三、 **评分要点:** - **覆盖的语言**: - Python\Java\Go - **木马后门的种类** - 远程访问木马 (Remote Access Trojans, RATs) - 命令与控制 (Command and Control, C2) 后门 - 隐蔽执行后门 - 恶意脚本/宏后门 - 用户权限提升后门 - 数据窃取木马 - 持久性后门 - 多态后门 - 隐蔽通道 (Covert Channel) 后门 - 恶意更新机制 ...... - **检测方法的丰富性**: - 模式匹配 - 中间语言转换 - 向量转换 - 机器学习 ...... ## 四、 提交材料成果 - **任务分工说明** - **作品技术原理介绍** - **概要设计报告** - **详细设计报告** - **测试分析报告** - **程序编译和安装使用文档** - **程序源代码** - **PPT和答辩** - **截屏录像** ## 五、 项目需求分析 1. 项目为设计一命令行工具针对**云原生、大数据、智能模型开源项目**中,对使用 **JAVA、Python、Go** 语言的开源软件或组件源代码,检测代码中是否隐藏存在**多类型的木马后门**,并**生成检测报告** 2. 输入:**某开源项目源代码** 3. 输出:**检测报告** - 检测目标 - 检测环境 - 操作系统 - 工具版本 - 硬件配置(CPU、内存等) - 检测方法 - **模式匹配** - **中间语言转换** - **向量转换** 与 **机器学习** - 检测结果 - **木马后门数量** 和 **严重程度** - **可疑代码片段对应木马后门类型** - 文件路径与代码行号 - 风险评估(高、中、低) - 统计与分析 - **准确率** - **误报率** (示例) > 假设我们检测了100个代码片段,其中: > > - 实际存在木马后门的代码片段有20个。 > - 实际没有木马后门的代码片段有80个。 > > 检测工具的结果 > > - 工具检测出了25个可疑代码片段,并标记为包含木马后门。 > - 其中,正确检测到的木马后门为18个(True Positives, TP)。 > - 错误标记为木马后门但实际上没有问题的代码片段有7个(False Positives, FP)。 > - 工具未能检测到的实际存在木马后门的代码片段为2个(False Negatives, FN)。 > - 工具正确识别为正常代码的片段有73个(True Negatives, TN)。 > > 1. #### **准确率(Precision)** > > 准确率表示工具所检测出的木马后门中有多少是真正的木马后门。计算公式为: > > > $$ > {准确率} = \frac{\text{True Positives (TP)}}{\text{True Positives (TP)} + \text{False Positives (FP)}} > $$ > > > **在示例中:** > > > $$ > {准确率} = \frac{18}{18 + 7} = \frac{18}{25} \approx 0.72 > $$ > > > - **解释**:工具标记的25个可疑代码片段中,18个是真正的木马后门,因此准确率为72%。这意味着工具每标记100个木马后门,其中72个是正确的。 > > #### 2. **误报率(False Positive Rate)** > > 误报率表示在实际没有木马后门的代码片段中,被错误标记为木马后门的比例。计算公式为: > > > $$ > {误报率} = \frac{\text{False Positives (FP)}}{\text{True Negatives (TN)} + \text{False Positives (FP)}} > $$ > > > **在示例中:** > > > $$ > {误报率} = \frac{7}{73 + 7} = \frac{7}{80} \approx 0.0875 > $$ > > > - **解释**:实际没有木马后门的80个代码片段中,7个被错误地标记为木马后门,误报率为8.75%。这意味着工具在100个正常代码片段中,会错误标记约9个为木马后门。 - 不同编程语言覆盖情况 (示例) | 编程语言 | 总代码行数 | 检测代码行数 | 检测覆盖率 | 检测到的可疑代码数 | | -------- | ---------- | ------------ | ---------- | ------------------ | | Java | 10,000 | 9,800 | 98% | 5 | | Python | 8,000 | 7,500 | 93.75% | 3 | | Go | 5,000 | 4,700 | 94% | 2 | | **合计** | 23,000 | 22,000 | 95.65% | 10 | ## 六、 开发设计 #### 1. **用户引导模块** - **功能**:为用户提供操作指南和帮助信息,帮助用户理解如何使用检测工具、如何输入源代码、如何解释检测结果等。 - 主要功能 - 提供命令行参数帮助说明,解释各个参数的作用。 - 提供示例输入和输出,以便用户理解如何准备源代码和解读报告。 - 提供常见问题解答(FAQ)和故障排除指南,帮助用户解决使用中的常见问题。 - 实现方法 - 使用命令行工具的帮助功能(如`--help`)显示使用说明。 - 提供详细的用户文档和在线帮助页面。 #### 2. **模式匹配模块** - **功能**:通过预定义的规则和模式在源代码中查找已知的木马后门特征。 - 主要功能 - 实现静态代码分析,识别已知的木马后门代码片段和模式。 - 支持用户自定义模式和规则的添加,以提高检测的灵活性。 - 实现方法 - 使用正则表达式、字符串匹配等技术来识别特定的木马后门特征。 - 将检测结果标记在源代码中,生成检测日志。 #### 3. **中间语言转换模块** - **功能**:将源代码转换为中间语言表示,以便进行统一的分析和处理。 - 主要功能 - 将不同编程语言的源代码转换为抽象语法树(AST)或字节码。 - 提供语言转换接口,支持将代码转换为中间表示。 - 实现方法 - 使用现有的解析器和编译器库将源代码转换为中间表示。 - 设计中间表示格式,以便后续的分析和处理模块能够处理。 #### 4. **向量转换与机器学习模块** - **功能**:通过将代码片段转换为向量表示,利用机器学习模型进行木马后门检测。 - 主要功能 - 实现代码片段的特征提取,将代码转换为特征向量。 - 使用训练好的机器学习模型对特征向量进行分类,以识别木马后门。 - 实现方法 - 使用自然语言处理(NLP)技术或其他特征提取方法将代码转换为向量。 - 训练和应用机器学习模型(如支持向量机、神经网络等)对代码进行检测。 - 实现模型的训练、验证和应用过程,并提供模型更新接口。 #### 5. **检测报告生成模块** - **功能**:生成详细的检测报告,包括检测结果、风险评估和统计分析。 - 主要功能 - 汇总检测结果,生成报告内容,包括检测到的木马后门类型、文件路径、代码行号等。 - 计算并展示准确率和误报率,提供统计分析结果。 - 提供不同编程语言和模块的检测覆盖情况。 - 实现方法 - 设计报告模板,定义报告的格式和内容。 - 实现报告生成逻辑,将检测结果和统计数据整合到报告中。 - 提供报告导出功能(如生成PDF、HTML文件),方便用户查看和保存。 ### 各模块之间的协作 - **用户引导模块**:提供用户操作指南,帮助用户配置和运行检测工具。 - **模式匹配模块**与**中间语言转换模块**:在检测过程中,模式匹配模块可以直接处理原始源代码或转换后的中间表示,依据具体实现选择。 - **向量转换与机器学习模块**:可以在中间语言转换之后的特征提取阶段进行工作,通过将中间表示转换为向量,利用机器学习模型进行进一步的检测。 - **检测报告生成模块**:汇总来自所有检测模块的结果,生成最终的检测报告。 ## 七、任务分工及工作量分配 ### **项目完成后,提交 “任务分工及工作量分配说明文档” 时按以下表格编写:** > 注: > > 1. 任务3、4、5、6每项参加两人,每人只能参加一项,其余任务按人数自行分配 > > 2. 最终任务量百分比分配按照自己所参加的各项目任务所占工作量百分比求和 | 任务序号 | **任务名称** | **具体职责** | **主要输出** | **工作量百分比** | 实际人数分配 | **说明** | 成员分配 | | -------- | ------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------- | ------------ | ------------------------------------------------------------ | -------- | | 1 | **项目管理、系统架构设计** | 项目规划与进度管理;研究木马后门技术及检测方法;制定系统架构 | 项目计划书、任务分工说明、概要设计报告、答辩 | 9% | 1 | 统筹全局,制定方案及管理进度,负责架构设计,项目结项答辩、项目Git仓库维护 | | | 2 | **用户引导模块** | 提供用户操作引导 | 源代码、程序编译和安装使用文档、对应模块:演讲稿 | 5% | 2 | 为用户提供清晰的使用指导,确保用户能正确使用工具。 | | | 3 | **中间语言转换模块** | 将不同语言源代码转换为统一的中间表示,便于后续分析处理 | 对应模块:源代码、详细设计报告、测试分析报告、技术原理介绍、演讲稿 | 15% | 2 | 提供统一的代码表示,支持不同编程语言的分析与检测,以便于模式匹配 | | | 4 | **模式匹配模块** | 通过预定义规则和模式识别已知木马后门特征 | 对应模块:源代码、详细设计报告、测试分析报告、技术原理介绍、演讲稿 | 18% | 2 | 利用模式匹配技术识别已知木马后门,提高检测的精准度。 | | | 5 | **向量转换模块** | 对代码片段进行特征提取,转换为向量表示 | 对应模块:源代码、详细设计报告、测试分析报告、技术原理介绍、演讲稿 | 15% | 2 | 将代码片段转换为特征向量,为后续机器学习检测做准备。 | | | 6 | **机器学习模块** | 利用机器学习模型对代码向量进行分类检测,识别潜在木马后门 | 对应模块:源代码、详细设计报告、测试分析报告、技术原理介绍、演讲稿 | 18% | 3 | 应用机器学习技术识别未知的木马后门,提升检测的覆盖面。 | | | 7 | **检测报告生成模块** | 生成检测报告,包括检测结果、风险评估、统计分析等 | 对应模块:源代码、详细设计报告、测试分析报告、演讲稿 | 7% | 2 | 汇总检测结果,生成详细的报告,供用户参考和保存。 | | | 8 | **系统模块集成和系统测试分析** | 将各功能模块进行集成,确保系统的整体性和功能完整性,对集成后的系统进行测试,分析测试结果并进行调优 | 系统最终源代码、集成测试报告 | 8% | 2 | 负责将所有开发完成的模块集成到一个整体系统中。对系统进行全面的测试和分析,确保系统的稳定性和可靠性。 | | | 9 | **答辩材料与截屏录像** | 汇总演讲稿,制作答辩PPT,录制系统演示的截屏录像,准备答辩材料 | 答辩PPT、系统演示视频、演讲稿 | 5% | 2 | 负责项目答辩材料的准备,包括PPT制作和系统演示视频录制。汇总各模块演讲稿,PPT务必根据演讲稿内容制作 | | ## 八、 项目进度安排 ### 1. 答辩日期:**9 月 6 日**,8月31日——9月5日,共6天 ### 2.具体进度安排 #### 第1天——8.31 - **项目管理、系统架构设计**:项目规划与进度管理,研究木马后门技术及检测方法,制定系统架构。生成项目计划书、任务分工说明、概要设计报告、创建Git仓库 - **用户引导模块**:开始设计用户引导模块,撰写初步的使用指导文档。 - **中间语言转换模块**:开始研究和设计不同编程语言的中间语言表示方式。 - **模式匹配模块**:分析已知木马后门的模式,设计匹配规则。 - **向量转换模块**:研究并设计代码片段特征提取方法,将代码转换为向量表示。 - **机器学习模块**:研究并设计机器学习模型 #### 第2天——9.1 - **用户引导模块**:完成用户引导模块的开发,撰写程序编译和安装使用文档。 #### 第3天——9.2 - **中间语言转换模块**:完成中间语言转换模块的开发,编写详细设计报告和初步测试分析报告。 - **向量转换模块**:完成向量转换模块的开发,撰写详细设计报告和测试分析报告。 #### 第4天——9.3 - **机器学习模块**:开始训练数据集。 - **检测报告生成模块**:开始设计报告生成模块,制定报告模板和内容框架。 #### 第5天——9.4 - **机器学习模块**:完成机器学习模块的开发,生成源代码并撰写详细设计报告和测试分析报告。 - **模式匹配模块**:完成模式匹配模块的开发,生成源代码并编写详细设计报告和测试分析报告。 - **检测报告生成模块**:完成检测报告生成模块的开发,编写最终的报告生成代码和详细设计报告。 - **系统模块集成和系统测试分析**(8%):开始集成各个模块,并进行系统初步测试和分析。 #### 第6天——9.5 - **系统模块集成和系统测试分析**:完成系统集成,进行全面的系统测试和优化,生成集成测试报告。 - **答辩材料与截屏录像**(5%):制作答辩PPT,录制系统演示视频,汇总演讲稿,准备最终的答辩材料。 - **项目管理**:项目结项,准备答辩。