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的更多相关文章

  1. Process Doppelgänging

    进程注入:Process Doppelgänging   攻击者可以通过Process Doppelgänging将恶意代码注入到进程中,从而逃避基于进程的防护,并且进行可能的特权提升.Process ...

  2. IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页

    因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...

  3. C#的Process类调用第三方插件实现PDF文件转SWF文件

    在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...

  4. C# ShellExcute与Process

    C#运行外部程序的两种方法 ShellExecute using System.Runtime.InteropServices; public enum ShowWindowCommands : in ...

  5. 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方

    刚上线一个新版本,其中有台电脑打开软件就报[xx的类型初始值设定项引发异常](还好不是一大波电脑,新东西上线就怕哀鸿遍野),如图: 显然是该类型的静态构造函数中抛异常了(红线处就是类名),遂打开该类, ...

  6. C# - 多线程 之 Process与Thread与ThreadPool

    Process 进程类, // 提供对本地和远程进程的访问,启动/停止本地系统进程 public class Process : Component { public int Id { get; } ...

  7. Java Business Process Management(业务流程管理) 初识环境搭建

    一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...

  8. 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 ...

  9. 更新过程 renewal process

    一类随机过程.是描述元件或设备更新现象的一类随机过程.设对某元件的工作进行观测.假定元件的使用寿命是一随机变量,当元件发生故障时就进行修理或换上新的同类元件,而且元件的更新是即时的(修理或更换元件所需 ...

随机推荐

  1. LeetCode 88. Merge Sorted Array(合并有序数组)

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  2. LeetCode 48. Rotate Image(旋转图像)

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  3. Java常用类(四)之数组工具类Arrays

    前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...

  4. mysql中多个left join子查询写法以及别名用法

    不多说 直接上语句   SELECT     a.id,     a.thumbNail,     a. NAME,     a.marketPrice,     a.memberPrice,     ...

  5. 话说LightningChart是最快最美的图表控件,到底先进在哪里?

    LightningChart Ultimate v.8.2 最新版本新特征告诉你它先进在哪里! 1. Headless 模式 headless模式允许在没有GUI的情况下使用LC.例如,在Window ...

  6. A计划(双层bfs)

    A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

  7. Linux学习决心书

    学习Linux决心计划书 我叫耿长学,来自河南省邓州市,经过老男孩教育运维班5个月学习后,我一定要达到的薪水目标是11000元,为了达到此目标我将采取如下10大行动或方案: 1.每天早上5:30-6: ...

  8. Hibernate开发文档

    hibernate配置 映射约束文件 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3. ...

  9. C#三步实现标准事件处理程序

    事件,MSDN解释:类或对象可以通过事件向其他类或对象通知发生的相关事情.发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. 有关事件的理论与好处,在这里就不再废话了,感兴趣的 ...

  10. .net core 同时实现网站管理员后台、会员、WebApi登录及权限控制

    我们在开网站信息系统时,常常有这样几个角色,如后台的管理员,前台的会员,以及我们各种应用的WebAPI 都需要进行登录操作及权限控制,那么在.net core如何进行设计呢. 首先我使用的是.net ...