Alpha_h4ck
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

关于Aladdin
Aladdin是一款功能强大的Payload生成工具,该工具使用了特定的绕过技术和.NET Remoting协议必要的Header字节。在该工具的帮助下,广大研究人员可以轻松对.NET程序执行反序列化,最终在内存中实现代码执行。
工具运行机制
该工具可以使用“/guid:32a91b0f-30cd-4c75-be79-ccbd6345de99”和“/pid:”参数生成AddInProcess.exe进程,该进程将在“\\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99”路径下开启一个命名管道,并等待一个.NET Remoting对象。如果我们生成的Payload拥有恰当的数据包字节并需要跟一个.NET Remoting监听器通信,那么我们就可以从System.Workflow.ComponentModel触发ActivitySurrogateSelector类,并在内存中实现代码执行。
提供的模版
当前版本的Aladdin提供了下列模版:
* HTA
* VBA
* JS
* CHM
工具下载
由于该工具基于C#开发,因此我们首先需要在本地设备上安装并配置好Visual Studio。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/nettitude/Aladdin.git
然后将项目导入至Visual Studio中,完成代码构建和编译即可。
工具使用
需要注意的是,为了确保测试执行成功,.NET程序集必须包含一个单独的公共类,而这个类需要包含一个空的结构体作为反序列化操作的入口点。比如说:
public class EntryPoint { public EntryPoint() { MessageBox.Show("Hello"); } }
工具使用
Usage: -w, --scriptType=VALUE 设置为 js / hta / vba / chm -o, --output=VALUE 生成的输出结果,例如:-o C:\Users\Nettitude\Desktop\payload -a, --assembly=VALUE 提供汇编DLL,例如:-a C:\Users\Nettitude\Desktop\popcalc.dll -h, --help 查看工具帮助信息
注意事项
1、用户提供的.NET源代码会在AddInProcess.exe下执行,并使用HTA / JS Payload生成进程。当前生成的进程会使用9BA05972-F6A8-11CF-A442-00A0C90A8F39 COM对象,它负责将进程以Explorer.exe进程的子进程形式启动;
2、启动Addinprocess.exe进程时传入的GUID是用户可以控制的,工具默认使用的GUID当前已硬编码在的模板和代码中;
3、CHM会通过XSLT转换执行JScript;
缓解方案
Addinprocess.exe会使用/guid和/pid启动,我们可以将其作为基线来在自己的网络环境中检测类似的活动。
许可证协议
本项目的开发与发布遵循BSD-3-Clause开源许可证协议。
项目地址
Aladdin:【GitHub传送门】
参考资料
https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html
https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/
https://github.com/pwntester/ysoserial.net/pull/41
https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)