发布于2022年11月8日3年前 0x00 前言 Jason是Lab Dookhtegan在2019年6月3日泄露的另一个工具,用于暴力破解Exchange账号。 不过,泄露的工具虽然包含了源代码,但是存在一些bug,无法正常使用。 本文不会分析Jason与APT34的关系,而是修复Jason的bug,还原Jason的功能,分析使用的技术,从技术研究的角度与其他开源工具进行横向比较。 注: 之前关于APT34的分析文章: 《对APT34泄露工具的分析——PoisonFrog和Glimpse》 《对APT34泄露工具的分析——HighShell和HyperShell》 0x01 简介 本文将介绍以下内容: Jason的开源材料 修复杰森的bug 实际测试Jason 与其他开源工具的横向比较 0x02 Jason的开源资料 杰森首先被泄露给电报的频道:https://t.me/lab_dookhtegana. P3pperp0tts将其上传到Github,地址如下: https://github.com/p3pperp0tts/APT34/tree/master/Jason 文件夹decompiled_code包含Jason的源代码。 Jason使用EWS托管API来访问Exchange资源。 注: 请参考之前的文章《Exchange Web Service(EWS)开发指南》,了解有关使用EWS管理的API的详细信息。 经过简单的修复,我能够在VS2015下成功编译。 然而,在测试环境中,Jason无法识别正确的电子邮件用户名和密码,所有测试结果均为失败。 0x03 修复Jason的bug 编译环境:VS2015 为了恢复正常功能,需要在以下四个地方修改源代码 1.添加Microsoft.Exchange.WebServices.dll的引用 在这里,我把Microsoft.Exchange.WebServices.dll放在项目的同一级目录中并引用了它。 2.证书信任策略的bug修正 位置:Form1.cs 原始代码: ServicePointManager。ServerCertificateValidationCallback=((object,X509Certificate,X509Chain,SslPolicyErrors)=true); 修改后的代码: ServicePointManager。ServerCertificateValidationCallback=(sender,certificate,chain,sslPolicyErrors)={ return true;}; 3.变量赋值的bug修正 位置:Form1.cs (1)有两个位置。 原始代码: 主配置。AppLocation ' out.txt 修改后的代码: 主配置。AppLocation=MainConfig。AppLocation ' out.txt (2)有两个位置。 原始代码: 主配置。UsernameStart userClass。用户名MainConfig。UsernameEnd 修改后的代码: 用户类。用户名=MainConfig。UsernameStart userClass。用户名MainConfig。UsernameEnd 4.EWS和OAB的判断有问题 测试后,变量MainConfig的值。方法始终为空。 需要修复MainConfig的错误。方法不能取值。 位置:Form1.cs 原始代码: 主配置。method=this . CMB method . selected text; 修改后的代码: 主配置。method=(string)this . CMB method . selecteditem; 我已经将项目上传到github,地址如下: https://github.com/3gstudent/APT34-Jason 0x04 实际测试Jason 编译成功后生成文件Jason.exe。 Microsoft.Exchange.WebServices.dll文件需要在同一个目录下,这样程序才能正常运行。 程序启动后,要设置的配置如下: 1.Exchange Address 输入Exchange服务器的URL。 在我的测试环境中,交换地址是:https://192.168.206.17 2.Exchange Version 选择相应的版本。 此处选择较低版本可以应用于Exchange server的较高版本。 3.BF Method 三个选项: EWS(Exchange Web服务) OAB(脱机通讯簿) 全部 正常选择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 生成新用户,将输入字符添加到用户名中。 不建议在测试环境中设置。 在我的测试环境中,配置如下 暴力破解成功后,生成日志文件out-year-month-day-hour-minute-second . txt,保存用户名和对应的密码。 0x05 同其他开源工具的横向比较 1.Jason # c实施 交易所被暴力破解的地点: https://url/ews/exchange.asmx https://url/oab 支持多线程 界面操作 2.MailSniper https://github.com/dafthack/MailSniper Powershell实现 交易所被暴力破解的地点: https://url/ews/exchange.asmx https://url/owa 支持多线程 命令行操作 3.Ruler https://github.com/sensepost/ruler 去实现 交易所被暴力破解的地点: https://URL/自动发现/自动发现. xml 不支持多线程。 命令行操作 从原理上讲,暴力破解Exchange账号是类似的,都是在访问Exchange的Web资源。如果返回401,则验证失败,如果得到预期的结果,则用户密码是正确的。 对于Jason来说,与MailSniper和Ruler相比,原理和功能基本相同。个人认为这个工具不存在被大规模滥用的隐患,也不会导致恶意软件技术的升级。 0x06 小结 本文介绍了如何修复Jason的bug,并对其技术进行了分析,与其他开源工具进行了横向比较,得出了最终结论:个人认为该工具不存在被大规模滥用的隐患,也不会导致恶意软件技术的升级。 留下回复
创建帐户或登录后发表意见