01
阅读须知
此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。
02
基本介绍
本文内容部分节选自小报童《.NET 通过 CryptoService 解密Cookie票据》,完整的文章内容请加入小报童后订阅查看。现在限时只需69元,永久买断!目前已有300+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!
03
原理分析
在红队实战中,传统的内存注入技术,比如通过 VirtualAllocEx和 CreateRemoteThread 的组合实现注入,已逐渐失去其隐蔽性。这些 API 的调用行为特征明显,极易被 EDR、HIDS等安全产品捕获并拦截。
为了规避传统注入方式的不足,研究人员开始探索更为隐蔽且系统化的技术路径。其中,文件映射注入作为一种经典且低检测率的技巧,通过利用 Windows 内核对象机制实现跨进程内存共享与代码执行,从而绕过传统注入路径,达成无声执行的效果。
3.1 技术原理
文件映射注入的核心思想在于:利用 Windows 文件映射机制:将 Shellcode 或可执行映像内容映射至目标进程的虚拟地址空间,避免直接调用高敏感 API,比如 WriteProcessMemory。其关键流程可分为以下四个步骤:
1. 创建内存映射区域通过 CreateFileMapping 创建一个内存映射对象,2. 使用 MapViewOfFile 将映射对象映射到当前进程的地址空间。3. 共享映射对象至目标进程:将映射对象注入或共享至目标进程。4. 通过 NtCreateThreadEx 等方法在目标进程中执行映射内存中的代码。
这一流程规避了大部分传统写入与分配 API,从而实现了较强的隐蔽性和绕过能力。
3.2 核心API函数
CreateFileMapping:此API函数用于创建文件或内存的映射对象,Mapping Object,相当于在物理内存中申请一块区域,并允许其后续被映射到一个或多个进程中,具体声明如下所示。
[DllImport("kernel32.dll", SetLastError =true, CharSet = CharSet.Auto)]publicstaticexternIntPtrCreateFileMapping(IntPtr hFile,IntPtr lpFileMappingAttributes,FileMapProtection flProtect,uint dwMaximumSizeHigh,uint dwMaximumSizeLow,string lpName);
MapViewOfFile:此API函数用于将 CreateFileMapping 创建的对象映射到本地进程的地址空间,供读取或执行。
[DllImport("kernel32.dll")]publicstaticexternIntPtrMapViewOfFile(IntPtr hFileMappingObject,FileMapAccessType dwDesiredAccess,uint dwFileOffsetHigh,uint dwFileOffsetLow,uint dwNumberOfBytesToMap);
在红队实战中,这几个函数可能会被一起使用,作为加载和执行Shellcode等恶意代码的一种手段,我们以 ntdll.dll 文件作为映射对象。
string filename_path ="c:\windows\system32\ntdll.dll";IntPtr NtdllFile_handle =CreateFileA( filename_path, EFileAccess.GenericRead, EFileShare.Read, IntPtr.Zero, EFileMode.OpenExisting,0, IntPtr.Zero);
最后,通过导入的函数,在目标进程中分配内存并写入 Shellcode,并使用 NtCreateThreadEx 执行代码。
Func_address = MainFunctions.Export_Function_Address(NtdllMapViewOfFile_address,"NtCreateThreadEx");var NtCreateThreadEx = Marshal.GetDelegateForFunctionPointer( Func_address,typeof(DelegatesFunctions.DFNtCreateThreadEx))asDelegatesFunctions.DFNtCreateThreadEx;
一旦线程执行完毕,注入的代码也就在目标进程中得到了执行。运行时的状态如图所示。
综上,文件映射注入技术为内存注入领域提供了新的思路。通过利用 Windows 系统底层的文件映射机制,将恶意代码藏身于共享内存中,并结合系统 DLL 的影子映像,实现了高隐蔽性与高兼容性的注入效果。想要了解完整或者更多的内网安全方向的文章,可以移步订阅小报童《.NET 内网实战攻防》电子报刊。
04
欢迎加入.NET 电子报刊
我们的小报童电子报刊【.NET内网安全攻防】也开始运营,引入小报童也是为了弥补知识星球对于轻量级阅读支持的不足,为用户读者提供更佳的阅读体验。如果您对阅读体验的需求比较高,那么可以订阅这个专栏。
本次电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。
1) .NET 安全防御绕过2) .NET 本地权限提升3) .NET 内网信息收集4) .NET 内网代理通道5) .NET 内网横向移动6) .NET 目标权限维持7) .NET 数据传输外发8) .NET 目标痕迹清理
原价899,现在限时只需69元,永久买断!目前已有300+位朋友抢先预定,我们会长期更新,初步计划保持每周更新1-2篇新内容,对.NET内网安全的朋友们请尽快订阅该报刊!
每增加五十人涨价10元,抓紧订阅,超值!订阅后请关注公众号:dotNet安全矩阵,发送订单截图和您的微信号,邀请您加入专属交流群。感兴趣的朋友,可以点击链接:https://xiaobot.net/p/dotNetAttack,或者扫描下方海报微信二维码加入即可,订阅后小报童定时会将最新内容通过微信推送给您。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...