Process Doppelgänging
Process Doppelgänging
-- 新的代码注入技术,通杀windows系统的所有版本,并且能绕过绝大多数的安全软件。
介绍
今天(2017-12-07),在伦敦举行的2017年黑帽欧洲安全会议上,来自网络安全公司enSilo的两位安全研究人员描述了一种新的代码注入技术“ProcessDoppelgänging”。
研究人员介绍这种新的攻击方式适用所有的Windows版本,它可以绕过当下绝大多数的安全产品。
Process Doppelgienging与Process Hollowing的技术有些相似,但是有一个不同的地方,它利用了Windows的NTFS Transactions机制。
Doppelgänging利用两个关键特征,可以屏蔽加载修改后的可执行文件。 通过使用NTFS transactions,我们可以直接修改PE文件而不用保存到磁盘上。 然后,我们可以不回滚对PE文件的修改,直接使用未公开的方法来加载该PE文件。此时已成功创建了一个修改过的PE文件进程,整个过程对安全产品来说是完全透明的。
Process Doppelgänging 绕过主流AVs
研究人员表示,由于使用Process Doppelgänging的恶意代码永远不会被保存到磁盘(无文件攻击),这使得所有主要安全产品都无法检测到该代码。
研究人员成功测试了对卡巴斯基,Bitdefender,ESET,赛门铁克,McAfee,Windows Defender,AVG,Avast,奇虎360和Panda等产品的攻击。 而且,即便是像Volatility等先进的取证工具也无法检测到。
在实验中,研究人员使用Process Doppelgaynging来运行Mimikatz,这是一种用于窃取密码的已知程序,实现隐藏恶意程序的方式来避免检测。

PS:在老外眼里,国内的安全软件仿佛只认360。
Process Doppelgänging 一种无文件攻击
“该技术允许恶意软件在目标机器的合法进程上下文中执行任意代码(包括已知的恶意代码),”两名发现这个攻击的enSilo研究人员,Tal Liberman&Eugene Kogan在电子邮件里解释了他们的新研究。
“与Process Hollowing非常相似,但有一个不同点。在于不使用可疑的进程和内存操作,如SuspendProcess,NtUnmapViewOfSection函数。
“为了达到这个目标,我们利用了NTFS Transactions。我们在一个事务的上下文中覆盖了一个合法的文件,然后从被修改的文件(在事务的上下文中)创建一个section,并创建一个进程(没想通具体是怎么实现的?)。整个过程对安全产品来说几乎就是透明的,根本无法检测,并且由于我们回滚了事务,所以我们的活动没有留下任何痕迹。
对于安全产品来说,一切看起来都是正常的,因为恶意进程看起来是合法的,并且会正确映射到磁盘上的映像文件,就像任何合法的进程一样。不会有“未映射的代码”,这通常是安全产品寻找的。
好消息和坏消息
好消息是,在制作Process Doppelgänging方面“存在很多技术挑战”,攻击者需要知道“流程创建方面许多未公开的细节”。
坏消息是,攻击“由于利用Windows的进程加载机制的基本特征和核心设计,所以这种漏洞是不能修补”。
Process Doppelgienging加入到了去年发现的新攻击方法列表中,这些攻击方法很难在现代AV(如Atom Bombing,GhostHook和Propagate)中检测和缓解。
关于ProcessDoppelgänging的研究材料将在接下来的几天内在黑帽网站上发布。
读后感
整个思路和以前的傀儡进程是一致的,不同的是这个方法没有使用一些列敏感函数:SuspendProcess,NtUnmapViewOfSection之流去实现进程启动,而是利用的NTFS事务的某种特性和一些未公开的细节,实现对合法程序的无文件修改并启动,达到绕过安全产品,实现任意功能的目的。后续细节等公开之后再关注一下。
原文
引用地址:"Process Doppelgänging" Attack Works on All Windows Versions
Process Doppelgänging的更多相关文章
- Process Doppelgänging
进程注入:Process Doppelgänging 攻击者可以通过Process Doppelgänging将恶意代码注入到进程中,从而逃避基于进程的防护,并且进行可能的特权提升.Process ...
- IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页
因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...
- C#的Process类调用第三方插件实现PDF文件转SWF文件
在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...
- C# ShellExcute与Process
C#运行外部程序的两种方法 ShellExecute using System.Runtime.InteropServices; public enum ShowWindowCommands : in ...
- 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方
刚上线一个新版本,其中有台电脑打开软件就报[xx的类型初始值设定项引发异常](还好不是一大波电脑,新东西上线就怕哀鸿遍野),如图: 显然是该类型的静态构造函数中抛异常了(红线处就是类名),遂打开该类, ...
- C# - 多线程 之 Process与Thread与ThreadPool
Process 进程类, // 提供对本地和远程进程的访问,启动/停止本地系统进程 public class Process : Component { public int Id { get; } ...
- Java Business Process Management(业务流程管理) 初识环境搭建
一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...
- Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details
thinkphp 在Apache上配置启用伪静态,重启Apache1 restart 竟然失败了,报错 Job for httpd.service failed because the control ...
- 更新过程 renewal process
一类随机过程.是描述元件或设备更新现象的一类随机过程.设对某元件的工作进行观测.假定元件的使用寿命是一随机变量,当元件发生故障时就进行修理或换上新的同类元件,而且元件的更新是即时的(修理或更换元件所需 ...
随机推荐
- LeetCode 88. Merge Sorted Array(合并有序数组)
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- LeetCode 48. Rotate Image(旋转图像)
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- Java常用类(四)之数组工具类Arrays
前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...
- mysql中多个left join子查询写法以及别名用法
不多说 直接上语句 SELECT a.id, a.thumbNail, a. NAME, a.marketPrice, a.memberPrice, ...
- 话说LightningChart是最快最美的图表控件,到底先进在哪里?
LightningChart Ultimate v.8.2 最新版本新特征告诉你它先进在哪里! 1. Headless 模式 headless模式允许在没有GUI的情况下使用LC.例如,在Window ...
- A计划(双层bfs)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- Linux学习决心书
学习Linux决心计划书 我叫耿长学,来自河南省邓州市,经过老男孩教育运维班5个月学习后,我一定要达到的薪水目标是11000元,为了达到此目标我将采取如下10大行动或方案: 1.每天早上5:30-6: ...
- Hibernate开发文档
hibernate配置 映射约束文件 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3. ...
- C#三步实现标准事件处理程序
事件,MSDN解释:类或对象可以通过事件向其他类或对象通知发生的相关事情.发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. 有关事件的理论与好处,在这里就不再废话了,感兴趣的 ...
- .net core 同时实现网站管理员后台、会员、WebApi登录及权限控制
我们在开网站信息系统时,常常有这样几个角色,如后台的管理员,前台的会员,以及我们各种应用的WebAPI 都需要进行登录操作及权限控制,那么在.net core如何进行设计呢. 首先我使用的是.net ...