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

免杀实战:DLL劫持与白加黑攻击的进阶对抗技巧

1. DLL劫持技术原理与实战应用DLL劫持DLL Hijacking是一种利用Windows系统动态链接库加载机制的安全漏洞进行攻击的技术。简单来说就是当程序运行时它会按照特定顺序搜索并加载所需的DLL文件。如果攻击者能够将一个恶意的DLL文件放置在程序搜索路径中更靠前的位置程序就会加载这个恶意DLL而非原始DLL。在实际操作中我通常会先使用Process Monitor这样的工具来分析目标程序加载DLL的行为。具体步骤是运行Process Monitor并设置过滤器只显示目标程序的DLL加载事件观察程序尝试加载哪些DLL文件特别关注那些加载失败的DLL显示NAME NOT FOUND的结果找到合适的DLL后我会用Visual Studio创建一个DLL项目。这里有个关键点必须确保导出的函数名和原始DLL完全一致。我常用的方法是使用Dependency Walker工具查看原始DLL的导出函数表然后在自己的DLL中实现相同的函数签名。// 示例模拟原始DLL的导出函数 __declspec(dllexport) void OriginalFunction() { // 先执行恶意代码 MaliciousCode(); // 再调用原始函数如果有需要 // 可以通过延迟加载或显式链接原始DLL实现 }2. 白加黑攻击的进阶技巧白加黑White-Black攻击的核心思想是利用受信任的白程序加载恶意的黑DLL。我在实际项目中发现选择合适的目标程序至关重要。经过多次测试以下类型的程序最适合这种攻击带有数字签名的知名软件如办公软件、多媒体工具系统自带的实用程序如记事本、计算器杀毒软件本身的可执行文件极具迷惑性一个实用的技巧是检查目标程序的DLL加载行为。我发现很多程序会加载一些非必要的DLL文件这些往往是很好的劫持目标。例如某知名办公软件会加载一个用于主题渲染的DLL而这个DLL实际上只在特定功能下才需要。在实现上我推荐使用间接劫持技术找到一个会被目标程序加载的合法DLLA.dll修改A.dll使其加载我们的恶意DLLB.dll将修改后的A.dll和B.dll一起部署这样做的好处是即使安全软件检查A.dll也很难发现异常因为A.dll本身可能没有恶意行为。3. 对抗EDR检测的实用方法终端检测与响应EDR系统是现代企业安全防护的重要组成部分。经过多次实战测试我发现EDR主要通过以下几种方式检测可疑行为API调用监控特别是敏感API如VirtualAlloc、CreateRemoteThread进程行为分析如父子进程关系、进程注入内存特征扫描针对这些检测机制我总结出几个有效的对抗技巧3.1 API调用混淆直接调用敏感API很容易触发警报。我常用的方法是动态获取API地址// 动态获取API地址示例 typedef HMODULE (WINAPI* pLoadLibrary)(LPCSTR); pLoadLibrary MyLoadLibrary (pLoadLibrary)GetProcAddress( GetModuleHandle(kernel32.dll), LoadLibraryA);3.2 进程伪装通过修改PEB进程环境块中的信息可以让恶意进程看起来像合法进程。具体实现涉及直接操作内存结构需要一定的汇编知识。3.3 时间延迟执行EDR通常会监控进程的初始行为。我经常在DLL入口点添加随机延迟// 随机延迟示例 Sleep(rand() % 30000 10000); // 10-40秒随机延迟4. Syscall直接调用技术系统调用Syscall直接调用是绕过用户态Hook的高级技术。基本原理是绕过Ntdll.dll中的存根函数直接通过系统调用号进入内核。在实际应用中我发现需要注意以下几点系统调用号会随Windows版本变化需要动态获取直接使用Syscall可能触发某些EDR的内核监控需要处理参数传递和调用约定下面是一个简单的Syscall调用框架// Syscall调用示例x64 DECLSPEC_IMPORT NTSTATUS NTAPI NtAllocateVirtualMemory( HANDLE ProcessHandle, PVOID* BaseAddress, ULONG_PTR ZeroBits, PSIZE_T RegionSize, ULONG AllocationType, ULONG Protect); // 实际调用 NTSTATUS status NtAllocateVirtualMemory( GetCurrentProcess(), baseAddr, 0, memSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);为了增强隐蔽性我通常会结合以下技术动态解析Ntdll.dll中的系统调用号使用间接系统调用通过合法模块跳转混淆系统调用参数5. 隐写分离技术的创新应用隐写分离是指将恶意代码隐藏在看似正常的文件中如图片、文档使用时再提取执行。这种方法能有效绕过静态检测。我在实际项目中开发了一套自动化工具链编码阶段使用LSB最低有效位隐写算法将shellcode嵌入PNG图片加载阶段DLL运行时从图片中提取并解密shellcode执行阶段使用内存映射技术执行shellcode避免直接分配可执行内存一个关键发现是使用常见图片格式的EXIF区域存储加密数据检测率更低。以下是提取EXIF数据的示例代码// 读取图片EXIF数据 void ExtractFromExif(const char* imagePath) { FILE* imgFile fopen(imagePath, rb); if (!imgFile) return; // 定位EXIF标记 fseek(imgFile, 0, SEEK_SET); // 实际实现需要解析JPEG文件结构 fclose(imgFile); }6. 实战中的注意事项与排错在实施这些技术时我踩过不少坑总结出以下经验版本兼容性问题不同Windows版本的系统调用号可能不同必须动态获取权限问题某些操作需要特定权限如调试权限SeDebugPrivilege杀软行为差异不同安全产品的检测逻辑不同需要针对性测试一个常见的错误是忘记处理DLL的加载计数器。Windows会维护每个DLL的加载计数不正确的处理可能导致DLL无法正常卸载。解决方法是在DllMain中正确处理DLL_PROCESS_DETACH通知。BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) { switch (reason) { case DLL_PROCESS_ATTACH: // 初始化代码 break; case DLL_PROCESS_DETACH: // 清理代码 break; } return TRUE; }另一个实用技巧是在开发阶段启用Windows的加载器快照功能gflags.exe这可以帮助调试DLL加载问题。

相关文章:

免杀实战:DLL劫持与白加黑攻击的进阶对抗技巧

1. DLL劫持技术原理与实战应用 DLL劫持(DLL Hijacking)是一种利用Windows系统动态链接库加载机制的安全漏洞进行攻击的技术。简单来说,就是当程序运行时,它会按照特定顺序搜索并加载所需的DLL文件。如果攻击者能够将一个恶意的DLL…...

SenseVoiceSmall实战:用AI分析客服录音,自动标记愤怒客户

SenseVoiceSmall实战:用AI分析客服录音,自动标记愤怒客户 1. 引言:客服场景中的情绪识别挑战 在客户服务领域,识别客户情绪是提升服务质量的关键环节。传统客服中心依赖人工质检员抽查录音,这种方式存在明显局限&…...

若依前端部署nginx配置案例

前端配置use strict const path require(path)function resolve(dir) {return path.join(__dirname, dir) }const CompressionPlugin require(compression-webpack-plugin)const name process.env.VUE_APP_TITLE || 若依管理系统 // 网页标题const port process.env.port |…...

告别EEPROM!用STM32的BKP备份寄存器实现低成本数据存储(F103C8T6实战)

低成本数据存储方案:STM32 BKP备份寄存器实战指南 引言 在嵌入式系统开发中,数据存储一直是个绕不开的话题。传统方案往往依赖外置EEPROM或Flash芯片,但这意味着额外的物料成本和PCB空间占用。对于学生创客、硬件初创团队或者资源受限的小型项…...

profibus-PA总线圆形M12全金属连接器螺丝压接三通分支接头分线盒

在石油化工、制药等过程自动化领域,PROFIBUS-PA(过程自动化)总线凭借其两线制供电与通信一体化的特性,广泛应用于压力、温度、流量等仪表的数据采集。圆形M12全金属连接器螺丝压紧三通分支接头分线盒,正是实现PROFIBUS…...

科研提示词

科研提示词 来自于Github项目:https://github.com/Leey21/awesome-ai-research-writing Make AI Writing Better for Everyone 📖 为什么做这个项目 当你第三次调试同一个润色 prompt 时,隔壁组的同学可能已经用现成的模板改完了三篇论文。 …...

VSCode+PyQt5实战:5分钟搞定Python图形界面开发(附完整配置流程)

VSCodePyQt5极速开发指南:从零到可视化的Python界面实战 在当今快节奏的开发环境中,能够快速构建出功能完善且美观的图形用户界面(GUI)已成为Python开发者的必备技能之一。PyQt5作为Qt框架的Python绑定,提供了丰富的组件库和强大的功能&#…...

5分钟搞定OCR服务!cv_resnet18_ocr-detection部署常见问题解决

5分钟搞定OCR服务!cv_resnet18_ocr-detection部署常见问题解决 你是不是也遇到过这种情况:想快速搭建一个OCR文字检测服务,结果被各种环境配置、依赖冲突、模型部署搞得焦头烂额?明明只是想“识别一下图片里的文字”,…...

Milvus 2.0 保姆级安装指南:从Docker部署到Python连接实战

Milvus 2.0 全栈实战:从零搭建高性能向量检索系统 在人工智能和机器学习领域,向量数据的高效存储与检索已成为现代应用的核心需求。作为一款开源的向量数据库,Milvus 2.0凭借其分布式架构和出色的性能表现,正在重塑相似性搜索的技…...

UDOP-large快速部署指南:英文文档处理从零开始,小白也能学会

UDOP-large快速部署指南:英文文档处理从零开始,小白也能学会 1. 引言:为什么选择UDOP-large 处理英文文档是许多专业人士和研究人员的日常需求。想象一下这样的场景:你收到100份PDF格式的英文研究报告,需要快速整理出…...

Maxwell仿真直线电机空载反电动势仿真+直线电机推力输出仿真+直线电机磁阻力、端部力、齿槽力仿真(附有平板型直线电机仿真说明)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

学习笔记day2

1.基于接口而非实现编程更好的说法是基于抽象而非基于实现编程。具体来说,在接口名字上不要暴露实现的细节,比如用upload而非uploadaliyun,后者会暴露出是发到阿里云的,如果接口这样命名,新的实现需要新的方法&#xf…...

基于MPC、PID、Stanley、PP控制算法的车辆横向轨迹跟踪Simulink与Carsim联合仿真(配套联合运行说明文档)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Deepin 20 安装 MySQL 避坑指南:解决 ‘E: 软件包 mysql-server 没有可安装候选‘ 错误

Deepin 20 系统 MySQL 安装全流程解析与疑难排解 在基于 Debian 的 Deepin 20 操作系统中安装 MySQL 数据库服务时,许多开发者会遇到各种依赖关系和软件源配置问题。本文将系统性地梳理从环境准备到完整安装的每个环节,并提供多个验证有效的解决方案。 1…...

WuliArt Qwen-Image Turbo惊艳图集:低光照场景下噪点抑制与动态范围保留能力

WuliArt Qwen-Image Turbo惊艳图集:低光照场景下噪点抑制与动态范围保留能力 在图像生成领域,低光照场景一直是个不小的挑战。光线不足、明暗对比强烈,这些条件很容易让生成的图片出现恼人的噪点,或者丢失暗部和高光的细节&#…...

告别虚拟机!在MacOS上用VSCode和SDL2搭建LVGUI模拟开发环境全流程

在MacOS上构建LVGL高效开发环境:VSCodeSDL2全流程指南 对于嵌入式UI开发者而言,反复烧录硬件调试界面的痛苦经历一定不陌生。每次微调一个按钮位置都要经历漫长的编译-烧录-重启循环,这种开发效率在现代敏捷开发中显得格格不入。本文将带你用…...

这10个免费网站,影视音乐工具全搞定,最后三个资源太实用了!

另附3个稀缺资源,手慢无!👋 哈喽,大家好!今天给大家整理了 10个超实用的免费网站,涵盖:🎬 免费影视 | 🎵 免费音乐 | 🛠️ 实用工具 | 🤖 AI神器 …...

SQLite µLogger:面向嵌入式系统的轻量级二进制日志引擎

1. 项目概述 Sqlite Logger(微日志器)是一个专为资源受限嵌入式系统设计的轻量级 SQLite 数据持久化库。其核心目标是在仅具备 2 KB SRAM 的微控制器(如 Arduino Uno)上,实现结构化数据的可靠写入、高效检索与断电恢…...

HELIOS_Si7021嵌入式温湿度驱动库:轻量、可移植、线程安全

1. HELIOS_Si7021 库概述 HELIOS_Si7021 是一个面向嵌入式平台的通用 Si7021 温湿度传感器驱动库。该库不依赖特定硬件抽象层(HAL)或实时操作系统(RTOS),采用纯 C 语言编写,以轻量、可移植、低耦合为设计目…...

【2.21】基于FPGA的Garnder环开发课程学习总结

目录 1.Gardner环基本原理的深度剖析 2.Gardner环的FPGA开发流程 2.1 时偏定义和Gardner环理论分析 2.2 基于MATLAB的Gardner环仿真与性能分析 2.3 基于FPGA的Gardner环硬件开发与实现 2.4 Gardner环的核心性能分析 2.5 硬件片内测试 Gardner环是一种经典的定时同…...

【2024 秋招必看】操作系统核心面试题深度解析(面经总结)

【2024 秋招必看】操作系统核心面试题深度解析 在程序员的面试中,操作系统(OS)是计算机基础考查重灾区。无论是校招还是社招,掌握好 OS 的核心原理都是进入大厂的“敲门砖”。本文针对 2024 年面试高频题进行了系统性总结。一、 进…...

探索Ryujinx:开源Switch模拟器完全指南

探索Ryujinx:开源Switch模拟器完全指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 当你拥有一台性能强劲的PC,却因Switch硬件限制无法体验《塞尔达传说&…...

微积分的学习记录

在看一个介绍微积分的视频时,我和豆包(AI)讨论了关于微积分的思维公式两方面的内容。微积分的思维比较容易学,而微积分的公式就比较复杂,基于此我就有了将思维和公式拆开学习的想法,以前在大学学微积分学了…...

开发者必看:Nanbeige 4.1-3B Streamlit UI深度解析与本地部署教程

开发者必看:Nanbeige 4.1-3B Streamlit UI深度解析与本地部署教程 1. 引言:当大模型遇上极简美学 如果你厌倦了千篇一律、布局拥挤的大模型Web界面,如果你希望给本地部署的AI助手一个清爽、现代、像手机聊天软件一样的家,那么今…...

DeOldify对比传统工具:在图像修复工作流中的优势分析

DeOldify对比传统工具:在图像修复工作流中的优势分析 每次看到那些泛黄、褪色的老照片,你是不是也想过,要是能让它们重新焕发光彩就好了?过去,这要么需要请专业设计师在电脑前花上好几个小时精修,要么就得…...

GLM-OCR入门:3步完成CSDN星图GPU平台一键部署与测试

GLM-OCR入门:3步完成CSDN星图GPU平台一键部署与测试 你是不是经常遇到需要从图片里提取文字的情况?比如整理扫描的文档、识别截图里的信息,或者处理一些带文字的图片。手动输入不仅慢,还容易出错。 今天要聊的GLM-OCR&#xff0…...

JDK 26 正式发布:十一大新特性深度解读

欢迎关注公众号【拿客】,星标公众号获取最新技术内容,内容聚焦低延迟架构、AI智能体、高并发系统设计领域。 JDK 26 正式发布:十一大新特性深度解读 Oracle 已于 2026 年 3 月 17 日正式发布 JDK 26,这是Java平台继JDK 25之后的半…...

XLR8AddrPack:FPGA-ARM异构平台的硬件地址契约库

1. XLR8AddrPack 库深度解析:面向硬件工程师的地址定义规范与工程实践指南1.1 XLR8 平台背景与地址管理的底层必要性XLR8 系列是 Alchitry 公司基于 Intel(原 Altera)Cyclone V SoC 构建的高性能 Arduino 兼容开发平台,其核心创新…...

ArduinoHttpClient嵌入式HTTP通信实战指南

1. ArduinoHttpClient 库深度解析:嵌入式 HTTP/HTTPS 通信的工程实践指南ArduinoHttpClient 是一个面向资源受限嵌入式平台(尤其是基于 AVR、ARM Cortex-M0/M4 的 Arduino 兼容开发板)设计的轻量级 HTTP 客户端库。其核心定位并非替代成熟的 …...

【开题答辩全过程】以 基于Java的一鸣企业人事管理系 统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...