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 189. Rotate Array (旋转数组)

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...

  2. AI翻译离无障碍交流有多远

    AI翻译服务通过硬件.软件连接千千万万个应用场景,会打破语言不通的尴尬局面吗?会是人工翻译的终结者吗? 世界这么大,我想去看看!十一长假临近,梦想中的你背起行囊,自由行走在异国的大街小巷.然而现实的画 ...

  3. css左侧固定宽度,右侧自适应的几种实现方法

    左侧固定,右侧自适应或者右侧固定在,左侧自适应是一样的.这种布局很常见,而且面试过程中也经常会问到,这里我总结的方法一共有5种.要实现这种布局,也算比较简单.我们先给出html结构: <div ...

  4. Linux库函数制作(静态库、动态库)

    Linux库函数制作(静态库.动态库) 静态库与动态库 链接方式 链接分为两种:静态链接.动态链接 静态链接: 由链接器在链接时将库的内容加入到可执行程序中 静态链接的特点是: 优点: 对运行环境的依 ...

  5. 工控SCADA模型 基于HTML5 Canvas WebGL制作摩托车

    工业方面制作图表,制作模型方面运用到 3d 模型是非常多的,在一个大的环境中,构建无数个相同的或者不同的模型,构建起来对于程序员来说也是一件相当头疼的事情,我们利用 HT 帮大家解决了很大的难题,以下 ...

  6. 对比jquery获取属性的方法props、attr、data

    1.attr,prop 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法.对于自定义的属性是取不到的: 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 2.a ...

  7. C# linq左连接与分组

    1.左连接使用DefaultIfEmpty(): 2.分组时候判断newper.FirstOrDefault() == null ? null: newper.ToList()这个经常出错误,如果不判 ...

  8. What is npm?

    什么是npm ? npm全称是Node Package Manager npm makes it easy for JavaScript developers to share and reuse c ...

  9. HTML5 设备上的API

    一.Vibration API ,接受两种类型参数 vibrate (unsigned long time)   当参数是unsigned long的时候 此时参数表示震动时间.  NotSuppor ...

  10. iOS字符串修改及运用

    //创建字符串 直接赋值 NSString *lytTest = @"A common string"; 1.获取字符串的长度 NSLog(@"%d",lytT ...