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
一类随机过程.是描述元件或设备更新现象的一类随机过程.设对某元件的工作进行观测.假定元件的使用寿命是一随机变量,当元件发生故障时就进行修理或换上新的同类元件,而且元件的更新是即时的(修理或更换元件所需 ...
随机推荐
- 基于webuploader.js的单图片上传封装
HTML代码 <div class="manageImgUp">点击图片上传</div> <div class="manageImgUpLc ...
- Java常用类(四)之数组工具类Arrays
前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...
- 快速部署Telegraf & Influxdb
是什么? Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库.Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其 ...
- python matplotlib 图表局部放大
import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes ...
- 从零使用Python测试。Testing Using Python.
0. 写在前面 本人使用Python测试已有多年,略有些皮毛经验.每次有新员工入职,都会从头教一遍如何入门上手使用Python进行测试.趁这段有空,整理成文档,也好方便后续新员工学习.文章如有不妥之处 ...
- bug:翻页
本章主要分享下,个人测试经历中遇见过的翻页bug 一.列表翻页 1.bug1:去请求翻页page=0,从0页开始算.一般来说page=0 和 page=1的数据是一模一样,所以翻第2页时会发现和第1页 ...
- VS2012环境下C#调用C++生成的DLL
1.VS2012 C++生成DLL 这个过程仿照http://www.cnblogs.com/LCCRNblog/p/3625200.html创建DLL即可,暂时不用创建测试工程,因为下面有测试工程的 ...
- 多项式求和,素数判定 HDU2011.2012
HDU 2011:多项式求和 Description 多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和. Input ...
- AngularJS学习篇(十)
AngularJS Select(选择框) 使用 ng-options 创建选择框 在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如 ...
- Python 解决面试题47 不用加减乘除做加法
在看<剑指Offer>过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制.但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于 ...