对APT34泄露工具的分析——Jason

3gstudent 技术 2019年8月5日发布
Favorite收藏

导语:Jason是由Lab Dookhtegan在2019年6月3日泄露的另一款工具,用于Exchange账户的暴力破解。

0x00 前言

Jason是由Lab Dookhtegan在2019年6月3日泄露的另一款工具,用于Exchange账户的暴力破解。

然而,泄露的这款工具虽然包括源码,但存在一些bug,无法正常使用。

本文不会分析Jason和APT34之间的关联,仅在技术研究的角度,修复Jason的bug,恢复Jason的功能,分析使用的技术,同其他开源工具做横向比较。

注:

之前关于APT34的分析文章:

《对APT34泄露工具的分析——PoisonFrog和Glimpse》

《对APT34泄露工具的分析——HighShell和HyperShell》

0x01 简介

本文将要介绍以下内容:

· Jason的开源资料。

· 修复Jason的bug。

· 实际测试Jason。

· 同其他开源工具的横向比较。

0x02 Jason的开源资料

Jason最早泄露于Telegram的频道:https://t.me/lab_dookhtegana

p3pperp0tts将其上传至Github,地址如下:

https://github.com/p3pperp0tts/APT34/tree/master/Jason

文件夹decompiled_code内为Jason的源码。

Jason采用EWS Managed API来实现对Exchange资源的访问。

注:

关于EWS Managed API的使用细节可参考之前的文章《Exchange Web Service(EWS)开发指南》

经过简单的修复,我在VS2015下能够编译成功。

但在测试环境中,Jason无法识别正确的邮箱用户名和口令,所有测试结果均失败。

0x03 修复Jason的bug

编译环境: VS2015

为了恢复正常功能,源代码需要修改以下4个位置。

1.添加Microsoft.Exchange.WebServices.dll的引用

我这里是将Microsoft.Exchange.WebServices.dll放在工程的同级目录下,并做了引用。

2.证书信任策略的bug修正

位置:Form1.cs

原代码:

ServicePointManager.ServerCertificateValidationCallback = ((object <p0>, X509Certificate <p1>, X509Chain <p2>, SslPolicyErrors <p3>) => true);

修改后的代码:

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return true; };

3.变量赋值的bug修正

位置:Form1.cs

(1)共有两个位置

原代码:

MainConfig.AppLocation + "out.txt";

修改后的代码:

MainConfig.AppLocation = MainConfig.AppLocation + "out.txt";

(2)共有两个位置

原代码:

MainConfig.UsernameStart + userClass.Username + MainConfig.UsernameEnd;

修改后的代码:

userClass.Username = MainConfig.UsernameStart + userClass.Username + MainConfig.UsernameEnd;

4.EWS和OAB的判断有问题

经过测试,变量MainConfig.Method的值始终为空。

需要修正MainConfig.Method无法取值的bug。

位置:Form1.cs

原代码:

MainConfig.Method = this.cmbMethod.SelectedText;

修改后的代码:

MainConfig.Method = (string)this.cmbMethod.SelectedItem;

实现完整功能的工程我已上传至github,地址如下:

https://github.com/3gstudent/APT34-Jason

0x04 实际测试Jason

编译成功后生成文件Jason.exe。

在同级目录需要文件Microsoft.Exchange.WebServices.dll,程序才可以正常运行。

程序启动后,需要设置的配置如下:

1.Exchange Address

输入Exchange服务器的URL

在我的测试环境下,Exchange Address为:https://192.168.206.17

2.Exchange Version

选择对应的版本

此处选择低版本能够适用于高版本的Exchange服务器

3.BF Method

三个选项:

· EWS(Exchange Web Service)

· OAB(Offline Address Book)

· Full

通常选择EWS。

4.Username File

用户名的字典文件。

格式可参考PassSample.txt中提示的格式。

我的测试环境下,我用的格式示例为:

[email protected] [email protected]

5.Password File

口令字典文件。

6.Number of Threads

设置扫描线程个数。

7.Generate Pass

点击后显示暴力破解使用的字典。

8.Generate Pass Per

点击后生成文件夹PasswordPerUser,文件夹中生成以每个用户名命名的txt文件,内容为口令字典。

9.Add to Username Start

产生新的用户,将输入的字符加在用户名前面。

测试环境下建议不设置。

10.Add to Username End

产生新的用户,将输入的字符加在用户名后面。

测试环境下建议不设置。

我的测试环境下,配置如下图:

Alt text

暴力破解成功后,生成日志文件out-year-month-day-hour-minute-second.txt,保存用户名和对应的口令。

0x05 同其他开源工具的横向比较

1.Jason

· C#实现

· 对Exchange进行暴力破解的位置:

– https://url/ews/exchange.asmx

– https://url/oab

· 支持多线程

· 界面操作

2.MailSniper

· https://github.com/dafthack/MailSniper

· Powershell实现

· 对Exchange进行暴力破解的位置:

· 支持多线程

· 命令行操作

3.Ruler

· https://github.com/sensepost/ruler

· Go实现

· 对Exchange进行暴力破解的位置:

– https://url/autodiscover/autodiscover.xml

· 不支持多线程

· 命令行操作

对于Exchange账户的暴力破解,在原理上大同小异,都是访问Exchange的Web资源,如果返回401表示验证失败,如果获得预期结果代表用户口令正确。

对于Jason,同MailSniper和Ruler相比,原理和功能基本相同,个人认为该工具不存在被大规模滥用的隐患,也不会导致恶意软件技术的升级。

0x06 小结

本文介绍了如何修复Jason的bug,分析其中的技术,同其他开源工具做了横向比较,得出最终结论:个人认为该工具不存在被大规模滥用的隐患,也不会导致恶意软件技术的升级。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址: https://www.4hou.com/technology/19488.html
点赞 0
  • 分享至
取消

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

扫码支持

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

发表评论