渗透基础——Exchange一句话后门的扩展 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

渗透基础——Exchange一句话后门的扩展

3gstudent 内网渗透 2021-05-27 10:40:00
5644913
收藏

导语:本文对Exchange一句话后门的功能进行了扩展,以导出lsass进程的口令hash为例,介绍了内存加载PE文件的实现方法,开源测试代码,分析利用思路,给出防御建议。

0x00 前言

在上一篇文章《渗透基础——Exchange一句话后门的实现》介绍了两种Exchange一句话后门(内存加载.net程序集和文件写入),本文将要对Exchange一句话后门的功能进行扩展,以导出lsass进程的口令hash为例,介绍内存加载PE文件的实现方法,开源测试代码,分析利用思路,给出防御建议。

0x01 简介

本文将要介绍以下内容:

· Exchange一句话后门的编写

· 通过内存加载.net程序集实现导出lsass.exe进程的dmp文件

· 通过内存加载PE文件实现内存加载Mimikatz并解析指定位置的dmp文件

· 开源代码

· 防御建议

0x02 Exchange一句话后门的编写

(1)基本的实现代码

示例代码如下:

image.png

代码会判断是否带有POST请求的参数demodata,如果存在会将POST请求中参数demodata的内容作base64解密,在内存加载并调用名为Payload的实例

(2)冰蝎的实现代码

默认启动代码如下:

image.png

提取其中使用的解密代码如下:

image.png

参照解密代码,推出对应的加密代码如下:

image.png

Exchange下直接使用冰蝎会报错,错误原因:

image.png

这里需要修改Webshell路径对应的web.config文件,找到位置:

image.png

去掉< remove name="Session" / >即可

类似的还有Godzilla

(3)修改后的实现代码

在Exchange下应避免使用Session传递数据,这里改用POST请求传递数据,最终代码如下:

image.png

POST请求中的参数k作为密钥,参数data作为加密的数据,解密后在内存加载并调用名为U的实例。

接下来两节内容将介绍连接上述Exchange一句话后门的客户端开发细节。

0x03 通过内存加载.net程序集实现导出lsass.exe进程的dmp文件

这里需要通过C#实现导出lsass.exe进程dmp文件的功能。

新建文件dumplsass.cs,代码如下:

image.png

编译生成dll文件,命令如下:

image.png

生成的dumplsass.dll即为实现导出lsass.exe进程dmp文件的Payload数据。

加载后获得lsass.exe进程的dmp文件,保存位置:C:\Windows\Temp\lsass.bin。

0x04 通过内存加载PE文件实现内存加载Mimikatz并解析指定位置的dmp文件

这里分为两阶段:

1.通过C++实现解析指定位置的dmp文件并提取hash,可以在Mimikatz的基础上进行修改。

2.通过C#实现内存加载PE文件的功能。

1、通过C++实现解析指定位置的dmp文件并提取hash

mimikatz解析指定位置dmp文件的命令:

image.png

修改mimikatz源码,涉及以下两部分:

手动传入命令参数,添加如下代码:

image.png

指定日志保存路径为C:\Windows\Temp\mimikatz.log,修改以下代码:

image.png

编译后生成新的mimikatz.exe。

2、通过C#实现内存加载PE文件的功能

使用SharpPELoaderGenerater读取新生成的mimikatz.exe,生成可用的内存加载代码SharpPELoader_x64.cs。

注:

内存加载的实现细节可参考《通过.NET实现内存加载PE文件》

修改SharpPELoader_x64.cs的格式,使其能够被Exchange一句话后门加载,完整代码已上传至github,地址如下:

https://github.com/3gstudent/test/blob/master/SharpPELoader_parselsass.cs

编译生成dll文件,命令如下:

image.png

生成的SharpPELoader_parselsass.dll即为实现内存加载Mimikatz解析dmp文件C:\Windows\Temp\lsass.bin并将导出结果保存为C:\Windows\Temp\mimikatz.log的Payload数据。

0x05 开源代码

完整的客户端代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpExchangeDumpHash.cs

使用C#开发,支持.Net3.5及更高版本。

编译命令如下:

image.png

代码支持以下三个功能:

· generate,生成Exchange一句话后门

· dumplsass,获得lsass进程dmp文件

· parsedump,解析dmp文件,导出hash

连接Exchange一句话后门时可选择是否使用凭据登录,通信数据使用AES加密。

代码细节:

POST请求中的参数k作为密钥,参数data作为加密的数据。

字符串base64dumplsass为dumplsass.dll作Base64编码后的结果。

字符串base64parsedump为parsedump.dll作Base64编码后的结果。

0x06 防御建议

对于Exchange一句话后门,不仅需要判断是否有新的文件写入,还需要判断正常的页面是否被插入恶意内容。

在静态分析上面,可以查看aspx文件中是否包含涉及内存加载的敏感函数:

· Assembly.Load

· Assembly.LoadFrom

· Assembly.LoadFile

0x07 小结

本文对Exchange一句话后门的功能进行了扩展,以导出lsass进程的口令hash为例,介绍了内存加载PE文件的实现方法,开源测试代码,分析利用思路,给出防御建议。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务