免杀对抗——C2远控篇&C&C++&抗沙箱虚拟机&抗逆向调试&动态密钥抗分析&对抗VT云感知

作者:lingggggaaaa日期:2025/11/25

文章目录

  • 免杀对抗——第一百五十四天
    • C2远控篇&C&C++&抗沙箱虚拟机&抗逆向调试&动态密钥抗分析&对抗VT云感知
      • 前置知识
          • 蓝队如何对文件进行分析
            * 参考资料
            * 参考项目
        • C2远控 - 抗沙盒沙箱-机器特征&真机判断
        • C2远控 - 抗逆向调试-API&调试器行为功能

免杀对抗——第一百五十四天

C2远控篇&C&C++&抗沙箱虚拟机&抗逆向调试&动态密钥抗分析&对抗VT云感知

前置知识

蓝队如何对文件进行分析
  • 蓝队人员如何对可疑文件进行分析呢,一般有三种方式:
    1. 杀毒软件扫描分析
    2. 上传威胁感知平台分析
    3. 人工的去逆向调试分析
  • 因此我们要逃脱他们的分析,就需要去进行抗沙盒沙箱、抗逆向调试
参考资料
参考项目

C2远控 - 抗沙盒沙箱-机器特征&真机判断

  • 蓝队常用的分析平台像微步、VT、哈勃等等,基本都具有静态分析、动态分析、行为检测等手段去调试上传的文件:
  • 有时候你有一些反调试、反沙箱的行为,它也会检测出来有这种可疑的行为:
  • 上面那个项目的这样一些行为可能就直接被检测出来了,我们就需要发挥自己的想象,比如就是之前讲过的三种思路:
    1. 让程序一开始休眠一段时间再运行恶意代码 => 使用垃圾执行代码浪费时间
    2. 检测目录文件是否正确 => 判断真机常用软件或者自己创建的文件是否存在
    3. 检测目标特征是否正确 => 判断真机目标IP地址或计算机名,用户名等特征
  • 总之一句话,如何让这个沙箱在调试的时候无法运行我们的恶意代码,但是满足一定条件之后这个代码就执行了
  • 比如让程序休眠一段时间,简单代码如下:
1#include <stdio.h>
2
3void loader() {
4    // 加载恶意代码
5}
6
7int main() {
8    // 延时操作
9    for (int i = 0; i < 10000; i++) {
10        for (int j = 0; j < 100; j++) {
11            printf("%d", i + j);
12        }
13    }
14
15    // 执行恶意代码
16    loader();
17    return 0;
18}
19
  • 这个代码之前已经演示过,它会标记为未知应用,不会报毒,动态调试也没有任何异常,所以起到了抗沙盒的一个作用
  • 再比如我们将ShellCode分离出来放到文件当中,然后判断如果有这个文件就运行恶意代码,没有就运行正常代码:
1#include <fstream>
2#include <iostream>
3#include <Windows.h>
4#include<stdio.h>
5#include <string>
6using namespace std;
7
8int main() {
9    // 1. 创建ifstream对象并打开文件
10    ifstream file(".\\1.txt");
11
12    // 2. 检查文件是否成功打开
13    if (!file.is_open()) {
14        std::cerr << "错误:无法打开文件!" << std::endl;
15        return 1;
16    }
17
18    // 3. 逐行读取
19    std::string line;
20    while (std::getline(file, line)) {
21        std::cout << line << std::endl;
22    }
23
24    // 4. 检查是否因错误终止
25    if (file.bad()) {
26        std::cerr << "错误:读取文件时发生错误!" << std::endl;
27    }
28
29    // 5. 关闭文件(也可自动关闭)
30    file.close();
31
32    // 恶意代码写在这
33    ...
34    return 0;
35}
36
  • 这样一混淆之后,直接0/28检出率,并且也没有任何异常行为,但是他还是定性为未知:
  • 可能是它对这个程序进行了逆向调试,对某些操作或者字段有疑问;也有可能是这里我们没有加签名,所以它还是觉得这个程序不太可信,所以定性为未知:

C2远控 - 抗逆向调试-API&调试器行为功能

1BOOL IsDebuggerPresent();
2BOOL CheckRemoteDebuggerPresent(HANDLE hProcess, PBOOL pbDebuggerPresent);
3......
4
  • 那我们在上面那个“未知“的代码中加上这些抗调试的代码,再看看有没有什么区别:
1#include <fstream>
2#include <iostream>
3#include <Windows.h>
4#include<stdio.h>
5#include <string>
6using namespace std;
7
8int main() {
9	// 加入反调试代码
10	if (IsDebuggerPresent()) {
11	    cout << "正在被调试!" << endl;
12	    return 1;
13	}
14
15    // 1. 创建ifstream对象并打开文件
16    ifstream file(".\\1.txt");
17
18    // 2. 检查文件是否成功打开
19    if (!file.is_open()) {
20        std::cerr << "错误:无法打开文件!" << std::endl;
21        return 1;
22    }
23
24    // 3. 逐行读取
25    std::string line;
26    while (std::getline(file, line)) {
27        std::cout << line << std::endl;
28    }
29
30    // 4. 检查是否因错误终止
31    if (file.bad()) {
32        std::cerr << "错误:读取文件时发生错误!" << std::endl;
33    }
34
35    // 5. 关闭文件(也可自动关闭)
36    file.close();
37
38    // 恶意代码写在这
39    ...
40    return 0;
41}
42
  • 我们加了这个代码然后再上传检测,可以很明显的看到它就没有上面的静态分析了:
  • 本节课讲的这两个技术都是针对威胁感知平台、以及蓝队分析人员的,对实实在在的免杀作用比较小

免杀对抗——C2远控篇&C&C++&抗沙箱虚拟机&抗逆向调试&动态密钥抗分析&对抗VT云感知》 是转载文章,点击查看原文


相关推荐


ESP32 物联网宠物喂食器:实现远程智能投喂的完整方案
编码追梦人2025/11/23

一、项目概述 随着物联网技术的普及,智能家居设备正逐渐渗透到生活的方方面面,宠物护理领域也不例外。本项目设计了一款基于 ESP32 开发板的智能宠物喂食器,通过结合 Wi-Fi 网络、舵机驱动、超声波检测等技术,实现远程控制喂食、定时定量投喂、食物余量监测等功能。用户可通过手机 APP 或 Web 界面随时查看喂食状态并下发指令,解决了传统喂食器需手动操作、无法远程管理的痛点,为宠物饲养提供了更便捷、智能的解决方案。 二、硬件选型与接线设计 (一)核心硬件组件 ESP32 开发板:作为主


kafka的替代品redpanda部署与SpringBoot集成使用案例
昵称为空C2025/11/22

一、Kafka与Redpanda对比分析 1.1 核心差异 特性Apache KafkaRedpanda架构JVM-based,需要ZooKeeperC++编写,无外部依赖性能高吞吐量,相对较高延迟更高吞吐量,更低延迟资源占用较高(JVM开销)更低(原生编译)部署复杂度需要ZooKeeper协调单二进制文件,简化部署兼容性原生Kafka协议完全兼容Kafka协议运维成熟工具链简化运维,内置监控 1.2 适用场景 选择


5步构建企业级RAG应用:Dify与LangChain v1.0集成实战
AI大模型2025/11/20

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。 今天,我们将通过五个关键步骤,带您从零开始掌握Dify与LangChain v1.0的集成技术,构建属于自己的企业级RAG应用。 Dify核心功能解析:低代码开发的强大引擎 Dify作为开源的LLM应用开发平台,其核心优势在于将复杂的AI工程能力封装为直观的可视化工具。在集成LangChain时,以下特性尤为关键: 可视化工作流编排允许开发者通过拖拽节点构建复杂AI流程。Dify的Chatflow引擎支持条件分支、循


Python 的内置函数 any
IMPYLH2025/11/19

Python 内建函数列表 > Python 的内置函数 any any() 函数用于判断可迭代对象中是否存在至少一个为 True 的元素,它就像是一个"是否存在"的快速检测器。想象一下,当你需要检查列表中是否有元素满足某个条件时,any() 可以让你用一行代码就搞定原本需要多行循环才能实现的功能。接下来,让我们一起探索这个函数的用法、原理和实际应用场景吧! any 的函数原型如下: def any(iterable): ''' 判断可迭代对象内容是否存在真值 :


深度学习:从零开始手搓一个深层神经网络
xier_ran2025/11/17

本文将带你不依赖任何深度学习框架(如 TensorFlow 或 PyTorch),仅用 NumPy 从头实现一个完整的深层神经网络(Deep Neural Network, DNN)。我们将一步步构建前向传播、反向传播、参数更新等核心模块,并在真实的猫图识别数据集上训练模型——真正“手搓”AI! 🧱 第一步:初始化网络参数 神经网络的“大脑”就是它的参数:权重矩阵 W 和偏置向量 b。我们需要为每一层随机初始化这些参数。 def initialize_parameters_dee


Python 的内置函数 property
IMPYLH2025/11/16

Python 内建函数列表 > Python 的内置函数 property Python 的内置函数 property() 是一个非常重要的工具,用于管理类属性的访问。它提供了一种优雅的方式来定义属性访问器(getter)、设置器(setter)和删除器(deleter)方法,同时保持简洁的接口。 基本用法 class Person: def __init__(self, name): self._name = name @property


🌐 实时协同 AIGC:多人在线 Web 创作的技术架构设计
LeonGao2025/11/15

🧠 一、前言:从单机AI到群体创作的演化 一个人对着AI画图、生成文案,像独自谈恋爱。 而当你和5个伙伴一起实时改提示词、AI同步绘画时,那就是多线程的爱情故事。 实时协同 AIGC(AI Generated Content)正处在科学与艺术的交汇点: 它要保证同步性、一致性、低延迟感,同时让AI像“艺术助理”,在多用户同时操作下保持逻辑优雅,而非精神分裂。 🧩 二、传统AIGC协作的问题:AI 总慢半拍 在经典 AIGC 应用中,我们常见的交互模式是: 用户提交提示词; 服务端执行推理


Python 的内置函数 list
IMPYLH2025/11/14

Python 内建函数列表 > Python 的内置函数 list Python 的内置函数 list() 是用于创建列表对象的构造函数,它是 Python 中最常用的数据结构之一。 def list(x=None): ''' 类型转换为 list :param x: 一个变量 :return: 转换为 list 后的值 ''' 详细功能说明 创建空列表: 最简单用法是不带任何参数调用 list()示例:my_list = list()


T型槽平台:工业制造中的多功能基础工装
泊头北重机械2322025/11/13

T型槽平台的结构特点 T型槽平台通常由高强度铸铁或钢材制成,表面加工有均匀分布的T型槽。这些槽口贯穿平台表面,形成网格状结构,便于通过螺栓快速固定工件、夹具或设备。平台经过精密研磨或刮研,确保平面度与平行度符合工业标准,部分高精度平台可达到0.01mm/m的精度等级。 槽口设计遵循标准化尺寸,常见宽度包括12mm、14mm、18mm、22mm等,适配不同规格的T型螺栓。平台边缘通常带有刻度尺或螺纹孔,辅助定位测量。部分重型平台会增设加强筋或地脚螺栓孔,提升稳定性和抗变形能力。 核心功能与应


个人笔记|单臂路由,子接口,VLAN标签
学渣676562025/11/11

你这个问题太棒了! 你问的,就是“VLAN 的生命周期”! 我们(在这次会话里)已经把 Access 口、Trunk 口、子接口都聊过了,现在我们就用你这道“单臂路由”题,把它们“串”成一个完整的故事! “旅程”开始: 目标: PC1 (VLAN 10) 要 ping PC2 (VLAN 20)。网关: PC1 的网关是 192.168.1.254 (R1 的子接口)。“铁律” 1 (Access): Access 口收包“贴签”,发包“撕签”。“铁律” 2 (Trunk): Trunk 口**

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读