影子经纪人(Shadow Brokers)最近曝光的NSA方程式Windows攻击程序中有一个针对Mdaemon邮件服务器漏洞的远程攻击程序——Easybee,本文将对Easybee漏洞攻击进行复现,并分析漏洞攻击原理。
专注于为中小企业提供做网站、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业西乡塘免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
环境搭建
Easybee是针对Mdaemon邮件服务器远程逻辑漏洞的攻击程序,它支持对下列版本的Mdaemon服务器进行攻击:
我这里找到一个10.1.1版本的Mdaemon进行测试,首先需要两台测试机:
在靶机上的Mdaemon中添加域名testeasybee.com,由于这个域名并没有在互联网上注册,所以我们自己搭建一个DNS服务器,把testeasybee.com的MX记录设置为192.168.1.105,并在192.168.1.3中设置DNS服务器为我们自己的DNS。然后在Mdaemon的testeasybee.com域名中新建用户admin@testeasybee.com,密码Aa654321。
漏洞利用复现
在攻击机192.168.1.3中运行Fuzzbunch攻击框架,设置Target IP为192.168.1.105,Callback IP为192.168.1.3,Redirection为no。
新建Project设置一些log目录之类的常规参数,然后运行Easybee,设置攻击参数:
具体攻击参数的意义为:
我们看一些靶机上面,我们上传的计算器已经成功执行。
如果Mdaemon是以服务形式运行,那么它的子进程都是SYSTEM权限且没有图形界面,但是计算器也能成功运行。
漏洞分析
经过分析发现,这个漏洞是Mdaemon的Auto Responder(自动应答器)和Content Filter(内容过滤器)的一个逻辑漏洞,具体漏洞利用的步骤是:
1. 通过HTTP协议访问目标3000端口的WorldClient,POST用户名密码进行登录,通过返回Cookie解析出WCSESSIONID
2. 通过HTTP协议访问目标1000端口的WebAdmin,POST用户名密码进行登录,通过返回Cookie解析出WASESSIONID
3. 通过访问WebAdmin的如下URL获取Auto Responder是否开启
http://192.168.1.105:1000/useredit_autoresp.wdm?accountedit=1&user=admin@testeasybee.com
4. 通过POSTXML的方式修改用户自动应答所执行的脚本
运行到这里我们看到自动应答已经被添加了命令执行:
这样一来,每次收到邮件就会把邮件内容中@@后面内容当做CMD命令来执行
5. 以POST方式通过WorldClient发送一封邮件给admin@testeasybee.com去触发自动应答的处理命令,内容是一系列以@@开头的CMD命令:
这段批处理依次执行下面命令:
1)从目标邮箱目录下找到对应的邮件.msg文件,其中iOE4ZuLw44是发送邮件标题中的随机字符串。
2)读取.msg文件的内容。
3)读取UserList.dat文件的内容,这里面有加密过的密码。
4)读取WebAcces.dat文件的内容,把MDaemon@testeasybee.com账号的权限全部打开:Access=YYYYYYYYYYYYYYYYY
5)读取CFRules.dat文件内容,这个是Content Filter内容过滤器规则。
6)读取CFilter.ini文件的内容。Content Filter内容过滤器配置文件。
7)读取MDaemon.ini服务器配置文件。
8)最后把所有内容集合在一起重新写入原邮件的.msg文件中。
可以看出这段批处理的作用是,读取一系列配置文件内容,并且修改MDaemon@testeasybee.com账号的权限为最高。
6. 通过WorldClient确保邮件已收到,读取邮件内容,通过UserList.dat文件内容获取MDaemon@testeasybee.com账号的加密密码,并解出明文密码。
解密算法在trfo-2.dll的TfBase64Decode函数中,就是Base64的一种变形:
- void *__cdecl TfBase64Decode(int a1, unsigned int a2, int a3)
- {
- unsigned int v3; // esi@1
- int v4; // edi@1
- void *result; // eax@2
- int v6; // ebx@4
- unsigned int v7; // ecx@4
- char v8; // al@6
- unsigned __int8 v9; // al@8
- void *v10; // [sp+8h] [bp-10h]@1
- char v11[4]; // [sp+Ch] [bp-Ch]@16
- unsigned int v12; // [sp+10h] [bp-8h]@1
- char Src; // [sp+14h] [bp-4h]@20
- v3 = a2;
- v4 = 0;
- v12 = 0;
- v10 = calloc((3 * a2 >> 2) + 1, 1u);
- if ( v10 )
- {
- if ( a2 > 0 )
- {
- do
- {
- v6 = 0;
- v7 = 0;
- do
- {
- if ( v12 >= v3 )
- break;
- v8 = 0;
- do
- {
- if ( v8 )
- break;
- v9 = *(_BYTE *)(v12++ + a1);
- if ( (unsigned __int8)(v9 - 43) > 0x4Fu )
- v8 = 0;
- else
- v8 = byte_1000711D[v9];
- if ( v8 )
- v8 = (v8 - 61) & ((v8 == 36) - 1);
- }
- while ( v12 < a2 );
- v3 = a2;
- if ( v12 >= a2 )
- {
- v11[v7] = 0;
- }
- else
- {
- ++v6;
- if ( v8 )
- v11[v7] = v8 - 1;
- }
- ++v7;
- }
- while ( v7 < 4 );
- if ( v6 )
- {
- sub_10001000((int)v11, (int)&Src);
- if ( v6 != 1 )
- {
- memcpy((char *)v10 + v4, &Src, v6 - 1);
- v4 += v6 - 1;
- }
- }
- v3 = a2;
- }
- while ( v12 < a2 );
- }
- *((_BYTE *)v10 + v4) = 0;
- if ( a3 )
- *(_DWORD *)a3 = v4;
- result = v10;
- }
- else
- {
- result = 0;
- }
- return result;
- }
7. 通过CFilter.ini文件内容判断Content Filter是否开启,如果没开启还需要发送一封邮件触发自动应答脚本执行批处理命令写入CFilter.ini文件来开启Content Filter。
8. 以获取到的MDaemon@testeasybee.com账号的密码登录进WebAdmin,通过POSTXML的方式添加一条Content Filter规则:
这条规则就是说,当发现邮件标题中包含xxxooo字符串,就执行命令cmd /c “move /Y uu.txt t.exe & t.exe & del t.exe”,把附件uu.txt文件复制为t.exe并运行。
9. 核心一步,发送标题为xxxooo,带有payload附件的邮件。触发Content Filter规则,运行payload。
10. 最后,发送包含命令的邮件清除所做修改和清除邮件。
可以看出来这个漏洞最关键点在于攻击者可以通过WebAdmin以POSTXML的方式修改用户自动应答脚本,以至发送特定内容邮件就可以达到执行任意命令的目的。
解决方案
升级Mdaemon到最新版本可修复此漏洞。
网页题目:NSA方程式Easybee攻击程序漏洞复现与分析
分享地址:http://www.mswzjz.cn/qtweb/news8/77158.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能