导语:近日,Proofpoint的MatthewMesa和Axel F发现了一种新型钓鱼方式,攻击者将故障排除包 作为邮件附件,欺骗用户运行,隐蔽执行Payload。

前言

近日,Proofpoint的MatthewMesa和Axel F发现了一种新型钓鱼方式,攻击者将故障排除包 (troubleshooting pack)作为邮件附件,欺骗用户运行,隐蔽执行Payload。他们在文章中 介绍了攻击者采用的方法和隐藏手段,提示用户对此提高警惕。

本文将站在技术研究的角度,介绍如何开发一个包含payload的故障排除包,并结合攻击思路分析防御方法,希望能帮助大家对这项技术有进一步的认识。

简介

Windows故障诊断平台:英文翻译Windows Troubleshooting Platform,缩写为WTP 开发商可基于该平台编写故障排除包(troubleshooting pack),帮助用户解决遇到的PC问题 WTP结构如图

简要流程如下:

1. 检查故障排除包的数字签名,如果不可用,直接退出
2. 依次执行检测脚本(detection scripts)、解决脚本(resolution scripts)、验证脚本 (verification scripts),尝试解决故障
3. 生成结果报告和调试报告

故障排除包:

由五个组件构成:

1. 故障排除清单(Troubleshooting manifest) 
2. 检测脚本(detection scripts) 
3. 解决脚本(resolution scripts)
4. 验证脚本(verification scripts) 
5. 本地化资源(localized resources)

详情如图

开发故障排除包

官方开发工具: TSPDesigner

注: 该工具包含于Windows 7 SDK中,实际测试只有v7.0和v7.1包含此工具

Windows 7 SDK version 7.0需要搭配.NET Framework 3.5 SP1,下载地址如下:

https://www.microsoft.com/en­us/download/details.aspx?id=3138

Windows 7 SDK version 7.1需要搭配.NET Framework 4,下载地址如下:

https://www.microsoft.com/en­us/download/details.aspx?id=8279

TSPDesigner位于默认目录 C:ProgramFilesMicrosoft SDKsWindowsv7.1BinTSPDesigner 下,包含以下内容:

详细开发介绍可参照: https://msdn.microsoft.com/en-us/library/windows/desktop/dd323712(v=vs.85).aspx

下面实例演示如何通过TSPDesigner生成测试故障排除包 

1.设置属性,也就是故障包的第一页

Project Name: testwtp
Project Description: troubleshooting pack test 
Privacy URL: https://3gstudent.github.io/

2.添加root cause,点击Add New Root Cause,设 置故障信息

Root Cause ID: ServiceIsStopped

Root Cause Name: The service is stopped.

Root Cause Description: The service is stopped.You need enable it.

3.设置Troubleshooter 

指定需要提升权限,关闭交互

4.设置Resolver

Resolver Name: StartTheService 

ResolverDescription: Start the service. 

Prompt the User: No

Elevation: Yes

Interactions: No

指定需要提升权限,关闭用户警告,关闭交互

5.设置Verifier

选择No,不需要确定故障被解决

6.设置Scripts

注:由于在步骤3、4指定了提升权限,所以此处的TroubleshooterScript和Resolver Script已经具有管理员权限,可在此处添加payload 

7.设置数字签名

选择Project­Options,找到Code Signing

可选择使用Test Certificate或是指定一个证书 

测试默认选择Use Generated Test Certificate

8.生成

选择Build­Build Pack 

生成如下文件:

1.

TS_ServiceIsStopped.ps1对应Troubleshooter Script
RS_ServiceIsStopped.ps1对应Resolver Script

注: 查看这两个ps脚本可以发现其中包含的payload

2.

testwtp.diagpkg为清单文件,包含troubleshooting pack中的参数,格式为xml,具体语法可参考:

https://msdn.microsoft.com/en­us/library/windows/desktop/dd323781(v=vs.85).aspx

3.DiagPackage.cat保存该troubleshooting pack的数字签名 

注:DiagPackage.cat文件中的数字签名可通过双击查看如图

4.cab目录下的testwtp.diagcab为封装好的troubleshooting pack,包含以上文件的信息如图,运行过程中执行payload,弹出管理员权限的cmd.exe

测试运行故障排除包

将生成的.diagcab文件放到另一个测试系统 

报错,如图

这是由于使用的默认Test Certificate在新系统无法被识别,可在TSPDesigner同级目录下找 到证书文件 TestWindowsTroubleShooting.cer ,安装至受信任的根证书颁发机构,如图

数字签名成功识别,如下图

注: 此处显示的发布者名称对应签名证书使用的颁发者, 为TestCertforWindowsTroubleShooting

当然,如果使用一个默认可信的证书,那么该故障排除包默认被信任,可直接运行 点击隐私声明,弹出步骤1中设置的Privacy URL:https://3gstudent.github.io/

至此,成功实现测试故障排除包 

小结

在渗透测试中,使用troubleshootingpack有如下好处:

1. 更加隐蔽,.diagcab文件不常见 
2. 更具欺骗性,用户往往对故障排除功能失去警惕 
3. 可直接获得管理员权限 
4. 内嵌钓鱼页面,可指定隐私声明的链接

防御建议:

微软在一开始就已经注意到了这个问题,所以为troubleshooting pack添加了数字签名验证, 所以当遇到troubleshooting pack时(比如某个操作触发了故障修复),首先要对发布者的身 份进行判断。

注:微软提供的troubleshootingpack中发布者名称默认为Microsoft Corporation

源链接

Hacking more

...