日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
NSA方程式Easybee攻擊程序漏洞復現(xiàn)與分析

影子經(jīng)紀人(Shadow Brokers)最近曝光的NSA方程式Windows攻擊程序中有一個針對Mdaemon郵件服務(wù)器漏洞的遠程攻擊程序——Easybee,本文將對Easybee漏洞攻擊進行復現(xiàn),并分析漏洞攻擊原理。

專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)西鄉(xiāng)塘免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

環(huán)境搭建

Easybee是針對Mdaemon郵件服務(wù)器遠程邏輯漏洞的攻擊程序,它支持對下列版本的Mdaemon服務(wù)器進行攻擊:

  • 9.5.2
  • 9.6.0
  • 9.6.1
  • 9.6.2
  • 9.6.3
  • 9.6.4
  • 9.6.5
  • 9.6.6
  • 10.0.1
  • 10.0.2
  • 10.0.3
  • 10.0.4
  • 10.0.5
  • 10.1.0
  • 10.1.1
  • 10.1.2

我這里找到一個10.1.1版本的Mdaemon進行測試,首先需要兩臺測試機:

  • 192.168.1.3——攻擊機 Win2003安裝Python,運行Fuzzbunch
  • 192.168.1.105——靶機 WindowsXP安裝Mdaemon 10.1.1

在靶機上的Mdaemon中添加域名testeasybee.com,由于這個域名并沒有在互聯(lián)網(wǎng)上注冊,所以我們自己搭建一個DNS服務(wù)器,把testeasybee.com的MX記錄設(shè)置為192.168.1.105,并在192.168.1.3中設(shè)置DNS服務(wù)器為我們自己的DNS。然后在Mdaemon的testeasybee.com域名中新建用戶admin@testeasybee.com,密碼Aa654321。

漏洞利用復現(xiàn)

在攻擊機192.168.1.3中運行Fuzzbunch攻擊框架,設(shè)置Target IP為192.168.1.105,Callback IP為192.168.1.3,Redirection為no。

新建Project設(shè)置一些log目錄之類的常規(guī)參數(shù),然后運行Easybee,設(shè)置攻擊參數(shù):

具體攻擊參數(shù)的意義為:

  • TargetIp —— 目標IP地址,這里是192.168.1.105
  • TargetWCPort —— WorldClient端口,默認為3000
  • TargetWAPort —— WebAdmin端口,默認為1000
  • WorldClientProtocol —— WorldClient協(xié)議,默認為http
  • WorldClientDomain —— WorldClient所屬域名,這里是testeasybee.com
  • WorldClientPort —— WorldClient端口,默認為3000
  • WebAdminProtocol —— WebAdmin協(xié)議,默認為http
  • WebAdminDomain —— WebAdmin所屬域名,這里是testeasybee.com
  • WebAdminPort —— WebAdmin端口,默認為1000
  • TargetAcctDomain —— 目標域名,testeasybee.com
  • TargetAcctUsr —— 目標賬號,這里是admin
  • TargetAcctPwd —— 賬號密碼,這里是Aa654321
  • TargetAcctIsAdmin —— 賬號是否為管理員,這里是yes
  • CFEmailFrom —— 用于觸發(fā)內(nèi)容過濾器的發(fā)件人,我是自己發(fā)給自己就寫admin@testeasybee.com
  • CFEmailSubj —— 用于觸發(fā)內(nèi)容過濾器的郵件標題,隨便寫xxxooo
  • CFEmailFile —— 用于觸發(fā)內(nèi)容過濾器的附件名,這個要求是允許的附件類型,最好是.txt類型
  • AREmailFrom —— 同CFEmailFrom即可
  • AREmailSubj —— 發(fā)送郵件標題,隨便寫hahahoho
  • PTEmailFrom —— 同CFEmailFrom即可
  • PTEmailSubj —— 同AREmailSubj即可
  • PayloadName —— 上傳到服務(wù)器運行的文件名,隨便寫個t.exe即可
  • PayloadFile —— 要上傳的木馬程序,我這里只是測試就傳個計算器,寫C:\windows\system32\calc.exe
  • WorldClientVersion —— Mdaemon的版本,我這里選10.1.1execute之后,經(jīng)過一系列的攻擊,最終攻擊成功。

我們看一些靶機上面,我們上傳的計算器已經(jīng)成功執(zhí)行。

如果Mdaemon是以服務(wù)形式運行,那么它的子進程都是SYSTEM權(quán)限且沒有圖形界面,但是計算器也能成功運行。

漏洞分析

經(jīng)過分析發(fā)現(xiàn),這個漏洞是Mdaemon的Auto Responder(自動應(yīng)答器)和Content Filter(內(nèi)容過濾器)的一個邏輯漏洞,具體漏洞利用的步驟是:

1. 通過HTTP協(xié)議訪問目標3000端口的WorldClient,POST用戶名密碼進行登錄,通過返回Cookie解析出WCSESSIONID

2. 通過HTTP協(xié)議訪問目標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的方式修改用戶自動應(yīng)答所執(zhí)行的腳本

運行到這里我們看到自動應(yīng)答已經(jīng)被添加了命令執(zhí)行:

這樣一來,每次收到郵件就會把郵件內(nèi)容中@@后面內(nèi)容當做CMD命令來執(zhí)行

5. 以POST方式通過WorldClient發(fā)送一封郵件給admin@testeasybee.com去觸發(fā)自動應(yīng)答的處理命令,內(nèi)容是一系列以@@開頭的CMD命令:

這段批處理依次執(zhí)行下面命令:

1)從目標郵箱目錄下找到對應(yīng)的郵件.msg文件,其中iOE4ZuLw44是發(fā)送郵件標題中的隨機字符串。

2)讀取.msg文件的內(nèi)容。

3)讀取UserList.dat文件的內(nèi)容,這里面有加密過的密碼。

4)讀取WebAcces.dat文件的內(nèi)容,把MDaemon@testeasybee.com賬號的權(quán)限全部打開:Access=YYYYYYYYYYYYYYYYY

5)讀取CFRules.dat文件內(nèi)容,這個是Content Filter內(nèi)容過濾器規(guī)則。

6)讀取CFilter.ini文件的內(nèi)容。Content Filter內(nèi)容過濾器配置文件。

7)讀取MDaemon.ini服務(wù)器配置文件。

8)最后把所有內(nèi)容集合在一起重新寫入原郵件的.msg文件中。

可以看出這段批處理的作用是,讀取一系列配置文件內(nèi)容,并且修改MDaemon@testeasybee.com賬號的權(quán)限為最高。

6. 通過WorldClient確保郵件已收到,讀取郵件內(nèi)容,通過UserList.dat文件內(nèi)容獲取MDaemon@testeasybee.com賬號的加密密碼,并解出明文密碼。

解密算法在trfo-2.dll的TfBase64Decode函數(shù)中,就是Base64的一種變形:

 
 
 
 
  1. void *__cdecl TfBase64Decode(int a1, unsigned int a2, int a3)
  2. {
  3.   unsigned int v3; // esi@1
  4.   int v4; // edi@1
  5.   void *result; // eax@2
  6.   int v6; // ebx@4
  7.   unsigned int v7; // ecx@4
  8.   char v8; // al@6
  9.   unsigned __int8 v9; // al@8
  10.   void *v10; // [sp+8h] [bp-10h]@1
  11.   char v11[4]; // [sp+Ch] [bp-Ch]@16
  12.   unsigned int v12; // [sp+10h] [bp-8h]@1
  13.   char Src; // [sp+14h] [bp-4h]@20
  14.   v3 = a2;
  15.   v4 = 0;
  16.   v12 = 0;
  17.   v10 = calloc((3 * a2 >> 2) + 1, 1u);
  18.   if ( v10 )
  19.   {
  20.     if ( a2 > 0 )
  21.     {
  22.       do
  23.       {
  24.         v6 = 0;
  25.         v7 = 0;
  26.         do
  27.         {
  28.           if ( v12 >= v3 )
  29.             break;
  30.           v8 = 0;
  31.           do
  32.           {
  33.             if ( v8 )
  34.               break;
  35.             v9 = *(_BYTE *)(v12++ + a1);
  36.             if ( (unsigned __int8)(v9 - 43) > 0x4Fu )
  37.               v8 = 0;
  38.             else
  39.               v8 = byte_1000711D[v9];
  40.             if ( v8 )
  41.               v8 = (v8 - 61) & ((v8 == 36) - 1);
  42.           }
  43.           while ( v12 < a2 );
  44.           v3 = a2;
  45.           if ( v12 >= a2 )
  46.           {
  47.             v11[v7] = 0;
  48.           }
  49.           else
  50.           {
  51.             ++v6;
  52.             if ( v8 )
  53.               v11[v7] = v8 - 1;
  54.           }
  55.           ++v7;
  56.         }
  57.         while ( v7 < 4 );
  58.         if ( v6 )
  59.         {
  60.           sub_10001000((int)v11, (int)&Src);
  61.           if ( v6 != 1 )
  62.           {
  63.             memcpy((char *)v10 + v4, &Src, v6 - 1);
  64.             v4 += v6 - 1;
  65.           }
  66.         }
  67.         v3 = a2;
  68.       }
  69.       while ( v12 < a2 );
  70.     }
  71.     *((_BYTE *)v10 + v4) = 0;
  72.     if ( a3 )
  73.       *(_DWORD *)a3 = v4;
  74.     result = v10;
  75.   }
  76.   else
  77.   {
  78.     result = 0;
  79.   }
  80.   return result;
  81. }

7. 通過CFilter.ini文件內(nèi)容判斷Content Filter是否開啟,如果沒開啟還需要發(fā)送一封郵件觸發(fā)自動應(yīng)答腳本執(zhí)行批處理命令寫入CFilter.ini文件來開啟Content Filter。

8. 以獲取到的MDaemon@testeasybee.com賬號的密碼登錄進WebAdmin,通過POSTXML的方式添加一條Content Filter規(guī)則:

這條規(guī)則就是說,當發(fā)現(xiàn)郵件標題中包含xxxooo字符串,就執(zhí)行命令cmd /c “move /Y uu.txt t.exe & t.exe & del t.exe”,把附件uu.txt文件復制為t.exe并運行。

9. 核心一步,發(fā)送標題為xxxooo,帶有payload附件的郵件。觸發(fā)Content Filter規(guī)則,運行payload。

10. 最后,發(fā)送包含命令的郵件清除所做修改和清除郵件。

可以看出來這個漏洞最關(guān)鍵點在于攻擊者可以通過WebAdmin以POSTXML的方式修改用戶自動應(yīng)答腳本,以至發(fā)送特定內(nèi)容郵件就可以達到執(zhí)行任意命令的目的。

解決方案

升級Mdaemon到最新版本可修復此漏洞。


名稱欄目:NSA方程式Easybee攻擊程序漏洞復現(xiàn)與分析
標題網(wǎng)址:http://www.dlmjj.cn/article/dpidjoh.html