20199308 2019-2020-2 《網絡攻防實踐》第9周做業

(:」∠)_

1、實踐內容

一、惡意代碼基礎知識

1.1 惡意代碼定義與分類

  • 定義:使計算機按照攻擊者的意圖執行以達到惡意目標的指令集。
  • 分類、特性及實例:

1.2 發展過程

1.3 計算機病毒

  • 我國對計算機病毒的定義:
    計算機病毒是指編制或者在計算機程序中插入的,破壞計算機功能或數據、影響計算機使用,並能自我複製的一組計算機指令或者程序代碼。
  • 基本特性:
    一、感染性
    二、潛伏性
    三、可觸發性
    四、破壞性
    五、衍生性
  • 感染機制:
  • 傳播渠道:
    移動儲存、電子郵件及下載、共享目錄等。

1.4 網絡蠕蟲

  • 定義:
    一種經過網絡自主傳播的惡意代碼,能夠自我複製。它的出現相對於傳統計算機病毒和木馬、後門來講比較晚,但不管從傳播速度、傳播範圍仍是破壞程度上來說,都是以往的惡意代碼所沒法比擬的。
  • 基本特性:
    一、自我複製,感染性
    二、經過網絡的自主傳播
    三、不須要宿主,獨立程序
    四、直接經過網絡傳播,包括內網和互聯網
    五、通常來講不須要用戶交互,經過目標系統上的安全漏洞或錯誤配置進行傳播,但對於一小部分蠕蟲,如郵件蠕蟲,用戶交互是必要的。
  • 內部組成結構

1.5 後門與木馬

  • 後門:
    可以爲攻擊者提供多種不一樣類型的訪問通道,包括:html

    • 本地權限提高和本地帳號
    • 單個命令的遠程執行
    • 遠程命令解釋器訪問
    • 遠程控制GUI
    • 無故口後門
  • 後門工具能夠利用自啓動文件夾、註冊表自啓動項及預約計劃任務這三種主要方法來達到自啓動的效果。ios

  • 特洛伊木馬能夠用於一下目的:shell

    • 欺騙用戶或系統管理員安裝特洛伊木馬程序,這樣木馬程序就經過毫無戒備的用戶進入到計算機系統中;
    • 隱藏在計算機的正常程序中,將本身假裝成看起來屬於該系統,使得用戶和管理員不會察覺到它的存在,一般與後門工具結合,成爲木馬後門。
  • 命名假裝經常使用的攻擊技巧有:windows

    • 混淆文件擴展名
    • 模仿Windows系統文件或服務命名

1.6 殭屍程序與僵屍網絡

  • 僵屍網絡是在網絡蠕蟲、特洛伊木馬、後門工具等傳統惡意代碼形態的基礎上發展融合而產生的一種新型攻擊方式。
  • 僵屍網絡是指攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡。
  • 僵屍網絡區別於其餘攻擊方式的基本特性是使用一對多的命令與控制機制,另外,僵屍網絡還具備惡意性和網絡傳播性。
  • 殭屍程序的功能組成結構
    • 主體功能模塊中的命令與控制模塊做爲整個殭屍程序的核心,實現與僵屍網絡控制器的交互、接受攻擊者的控制命令、進行解析和執行,並將執行結果反饋給僵屍網絡控制器。
    • 輔助功能模塊是對殭屍程序除主體功能外其餘功能的概括,主要包括信息竊取、殭屍主機控制、下載與更新和躲避檢測與對抗分析等功能模塊。
  • IRC僵屍網絡的工做機制:
  • 殭屍程序的命令與控制機制包括:
    • 基於IRC協議的命令與控制機制
    • 基於HTTP協議的命令與控制機制
    • 基於P2P協議的命令與控制機制

1.7 Rootkit

  • 定義: 一類特洛伊木馬後門工具,經過修改現有的操做系統軟件,使攻擊者得到訪問權並隱藏在計算機中。
  • 應用程序級木馬後門、用戶模式Rootkit和內核模式Rootkit位置對比:
  • 用戶模式Rootkit:
    • UNIX用戶模式Rootkit中集成的工具能夠被分爲五種不一樣類型:
      一、提供後門訪問的二進制替換程序
      二、隱藏攻擊者的二進制替換程序
      三、用於隱藏但不替換二進制程序
      四、另一些零散的工具:一些經常使用的攻擊工具,如網絡嗅探器、後門shell監聽器等。
      五、安裝腳本
    • Windows用戶模式Rootkit有三種技術:
      一、Windows爲了支持第三方工具擴展Windows的內置功能特性,提供了一些開發接口。用戶模式Rootkit可使用這些開發接口將自身實現的惡意功能邏輯插入到現有的Windows函數之間,而無需覆蓋Windows代碼。
      二、Windows使用WFP機制來防止操做系統關鍵文件被修改或替換,所以Windows用戶模式Rootkit要想覆蓋操做系統關鍵文件,就必須首先使得WFP功能失效。
      三、用戶模式Rootkit還可使用DLL注入和API掛鉤技術把惡意代碼直接加入運行進程的內存空間中。
  • 內核模式Rootkit的技術手段:
    • 文件和目錄隱藏
    • 進程隱藏
    • 混雜模式隱藏
    • 改變執行方向
    • 設備截取和控制

二、惡意代碼分析方法

2.1 惡意代碼分析與良性代碼分析的區別

區別項 惡意代碼分析 良性代碼分析
目的公開性 目的未知,需分析和推測其目的 通常狀況下,目的是公開且明確的,可輔助分析過程
目的惡意性 目的惡意,須要受控環境 良性,無需受控環境
是否存在源碼 絕大多數狀況無源碼,二進制分析 開源軟件存在源碼,源碼分析;閉源軟件則須要二進制分析
使用對抗分析技術 各類多樣化對抗分析,博弈問題 通常無對抗分析,商業軟件也引入對抗分析保護產權

2.2 惡意代碼發燒友的分析實驗環境

2.3 基於虛擬化技術的惡意代碼分析實驗環境

2.4 用於惡意代碼研究的自動分析環境

2.5 惡意代碼靜態分析技術

  • 做用:可以對惡意代碼的特性和目的有一個大致的瞭解,甚至可以識別出惡意代碼的各個組成部分。
  • 技術列表:

2.6 惡意代碼動態分析

  • 做用:激活一個受控分析實驗環境的代碼,當一個代碼在實際系統中運行時,咱們可以更加迅速地瞭解其行爲。
  • 經常使用的惡意代碼動態分析監控技術和工具
  • 技術列表:

2、實驗過程

動手實踐:惡意代碼文件類型識別、脫殼與字符串提取

任務內容:對提供的rada惡意代碼樣本(U盤或FTP/materials/course9下載),在WinXP_Attacker虛擬機中進行文件類型識別,脫殼與字符串提取,以得到rada惡意代碼的編寫做者。
一、使用文件格式和類型識別工具(file, PEid),給出rada惡意代碼樣本的文件格式、運行平臺和加殼工具。
二、使用超級巡警脫殼機等脫殼軟件,對rada惡意代碼樣本進行脫殼處理。
三、使用字符串提取工具(strings、IDA Pro),對脫殼後的rada惡意代碼樣本進行分析,從中發現rada惡意代碼的編寫做者是誰?安全


過程以下:服務器

  • 打開WinXP Attacker,將RaDa.exe文件放入。
  • 首先利用file RaDa.exe命令查看RaDa.exe的文件類型,可知這是一個32位Windows PE可執行文件,而且有圖形化窗口。
  • 而後使用PEiD工具(查殼)來查看加殼的類型。在這裏咱們能夠看到這個是一個版本爲0.89.6的UPX殼。還能夠看到文件的入口點、EP段、偏移、文件類型等信息。
  • 而後用strings RaDa.exe查看RaDa.exe中可打印字符串,發現都是亂碼,這也驗證了這是一個加殼程序,因此下一步是進行脫殼。
  • 而後用超級巡警這個軟件進行脫殼,這裏也識別出了是一個UPX殼,脫完以後輸出爲RaDa_unpacked.exe。emmm...一下下就脫好了。
  • 脫殼結束,打開IDA Pro Free選擇脫殼以後的RaDa_unpacked.exe文件,能夠看到以下信息。首先是做者的信息DataRescue sa/nv。

動手實踐:分析Crackme程序

實踐內容:使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其可以輸出成功信息。網絡


過程以下:tcp

  • 仍在WinXP Attacker中,放入兩個crackme文件。函數

  • crackme1.exe的分析工具

  • 對crackme1.exe進行執行,猜想參數執行,能夠發現一個參數輸入與其餘的參數輸入獲得的輸出明顯不同,因此能夠猜想這個程序的輸入是一個參數。

  • 接下來利用IDA Pro打開這個程序分析,咱們打開經過Strings窗口能夠查看該程序中出現的字符串,咱們發現了前面的兩種反饋信息,I think you are missing something.和Pardon? What did you say?,這兩個咱們以前已經見過了,很容易猜想,第一個是參數不對的返回狀況,第二個是給的參數數量對了,可是具體的內容不對。

  • 而後將窗口切換到彙編語言窗口IDA View-A,在菜單欄中View->Graphs->Function calls依次點開查看函數結構:

  • 能夠看到字符串比較函數strcmp和輸出函數fprintf和printf。那麼顯而易見,sub_401280這個函數就顯得相當重要了。在函數列表中雙擊這個函數,能夠看到它的彙編代碼:

  • 能夠看到參數爲2和不爲2的狀況,調用了一個字符串匹配函數strcmp,也就是輸入的字符串與I know the secret進行比較,若是不匹配就輸出Pardon? What did you say?若是正確,就輸出You know how to speak to programs, Mr. Reverse-Engineer。


  • 因而進行驗證:

  • crackme2.exe的分析

  • 有了前面的經驗,此次就直接用IDA Pro進行分析。






  • 將原文件重命名爲crackmeplease.exe,而後顯示出Pardon?What did you say?,這說明咱們已經離正確輸出很近了,而後就是修改制定的密文爲:I have the secret",就能夠輸出正確答案:

實踐做業1:樣本分析實踐:分析一個自制惡意代碼樣本rada。

實踐內容:深刻分析這個rada.zip二進制文件,並得到儘量多的信息,包括它是如何工做的,它的目的以及具備的能力,最爲重要的,請展現你獲取全部信息所採起的惡意代碼分析技術。

過程以下:

  • 打開wireshark和已經脫殼的rada_unpacked.exe,在進程探測器process explorer中點擊運行的進程,能夠看到該二進制文件的編碼字符串內容,當惡意程序打開後或以http協議與目標地址10.10.10.10的RaDa_commands.html進行鏈接,在本機目錄下會新建tmp和bin兩個文件夾,註冊表也會有改變:

  • 在wireshark上發現大量發現10.10.10.10的TCP數據包:

  • 而後分別下載和上傳某些文件,而且在受害主機C盤目錄下建立一個文件夾「C:/RaDa/tmp」來保存其下載的文件,往下分析發現該惡意程序中可執行DDos拒絕服務攻擊;而後又發現該惡意程序對主機註冊表進行了讀寫和刪除操做:

  • 而後打開註冊表查看並未發現有關於RaDa的信息,多是該惡意程序已經刪除了註冊表信息:

  • md5sum RaDa.exe指令查看摘要和文件類型,獲得其md5摘要值爲caaa6985a43225a0b3add54f44a0d4c7。利用file RaDa.exe識別出這是32位PE文件,而且仍是個GUI文件:

  • 接下來使用 IDA 對其進行分析。該程序在第一個實踐中已經被脫殼了,脫殼後的文件名稱爲RaDa_unpacked.exe。(進入 Strings 對話框,在 Type 右鍵點擊 Setup,設置類型爲 Unicode。)

  • 查看命令行參數:能夠看到做者、時間等信息。

  • 看到一個熟悉的 IP 地址,雙擊定位:猜想程序被執行後訪問了這個地址。

  • 根據線索分析,獲得RaDa_commands.html。尋找這個字符串對應的函數sub_404FB0,進入這個函數,看黃色部分的彙編代碼,得知是被拷貝到dword_40C030這個變量中。

  • 找到dword_40C030變量對應的函數sub_4052C0 ,打開其Call Graph查看。這裏咱們看到判斷了三個網段分別爲192.168.、172.16.、10.,(三個私有網段,確保服務器在私有網段中,而後到服務器去取命令文件)


回答問題:
一、提供對這個二進制文件的摘要,包括能夠幫助識別同同樣本的基本信息。
摘要爲caaa6985a43225a0b3add54f44a0d4c7;Win32 PE 加 UPX 殼 GUI 文件。
二、找出並解釋這個二進制文件的目的。
這個二進制文件經過網絡獲取指令,並執行;攻擊者能夠利用其徹底控制該系統,是一個後門程序。
三、識別並說明這個二進制文件所具備的不一樣特性。
會請求 Web 服務器;解析得到的指令並執行。
四、識別並解釋這個二進制文件中所採用的防止被分析或逆向工程的技術。
UPX 壓縮技術。
五、對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由。
不具備自主傳播模塊,不具備傳播和感染的性質,因此它不屬於病毒和蠕蟲;也沒有將本身假裝成有用的程序以欺騙用戶運行,不是木馬。是一個後門程序。
六、給出過去已有的具備類似功能的其餘工具。
使用http方式來同攻擊者創建鏈接————Bobax、海陽頂端、Setiri等。
七、可能調查出這個二進制文件的開發做者嗎?若是能夠,在什麼樣的環境和什麼樣的限定條件下?
Raul siles和David Perze於2004年編寫的。

實踐做業2:取證分析實踐:Windows2000系統被攻陷並加入僵屍網絡

實踐內容:數據源是Snort收集的蜜罐主機5天的網絡數據源,並去除了一些不相關的流量並將其組合到了單獨的一個二進制網絡日誌中,,同時IP地址和其餘敏感信息被混淆。分析這個日誌文件並回答問題:


過程以下:
一、IRC是什麼?當IRC客戶端申請加入一個IRC網絡時將發送哪一個消息?IRC通常使用哪些TCP端口?

  • 因特網中繼聊天(Internet Relay Chat),簡稱 IRC 。 IRC 的工做原理很是簡單,只要在本身的 PC 上運行客戶端軟件,而後經過因特網以 IRC 協議鏈接到一臺IRC服務器上便可。IRC 特色是經過服務器中繼與其餘鏈接到這一服務器上的用戶交流。註冊時須要發送的消息有三種,分別是:
    • 口令,
    • 暱稱,
    • 用戶信息。
  • 消息格式以下:USER <username> <hostname> <servername> <realname>PASS <password>NICK <nickname>
  • 客戶端就使用 JOIN 信息來加入頻道,格式以下:JOIN <channel>
  • IRC 服務器明文傳輸一般在6667端口監聽,也會使用6660—6669端口。 SSL 加密傳輸在 6697 端口。

二、僵屍網絡是什麼?僵屍網絡一般用於幹什麼?

  • 僵屍網絡是指攻擊者(稱爲botmaster)出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡。

  • 僵屍網絡主要用於:發動DDOS攻擊、發送垃圾郵件、 監聽用戶敏感信息、記錄鍵盤輸入信息、 擴散新的惡意軟件 和 僞造點擊量,騙取獎金或操控網上投票和遊戲,同時黑客控制的這些計算機所保存的信息也均可被黑客隨意「取用」。
    三、蜜罐主機(IP:172.16.134.191)與哪些IRC服務器進行了通訊?

  • 經過Wireshark打開數據文件,並設置過濾條件ip.src == 172.16.134.191 && tcp.dstport == 6667,由於知道 IRC 服務經過6667端口篩選以後,能夠找到全部與蜜罐主機進行通訊的 IRC 服務器:分別爲 209.126.161.29,66.33.65.5八、63.241.174.14四、217.199.175.十、209.196.44.172

四、在這段觀察期間,多少不一樣的主機訪問了以209.196.44.172爲服務器的僵屍網絡。

  • 這裏須要用到tcpflow這個命令,首先有關apt-get install tcpflow進行安裝,而後執行tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667',會生成172.016.134.191.01152-209.196.044.172.06667,209.196.044.172.06667-172.016.134.191.01152和report.xml三個文件。
  • 這裏一部分是從目標服務器發送出來的,一部分是從其餘主機發送到目標主機的,統計獲得主機個數爲3457:

五、哪些IP地址被用於攻擊蜜罐主機?

  • 利用tcpdump指定IP地址收集被攻擊的端口寫入1.txt,而後執行tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt;統計個數:

  • 經過snort獲取全部可能連接的主機IP地址,將內容輸出到2.txt,能夠看到一共有165行共計165個:tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt:

六、攻擊者嘗試了哪些安全漏洞?

  • snort統計一下網絡流量包分佈狀況:

  • 以上能夠看出大部分爲tcp數據包,少部分爲udp數據包,而後分別篩選這兩種端口:

  • 輸出能夠看到 TCP 響應端口爲135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin)和80(http)。將協議部分改成udp,能夠篩選出udp端口137(netbios-ns)。

  • 下面依次分析這些端口:TCP135端口,只是進行了鏈接,沒有數據內容交換,頗有多是對這個端點進行了connect掃描:

  • TCP25端口,與135端口類似,也沒有進行數據內容的交換,猜想攻擊機對其進行了connect掃描:

  • TCP139端口,這裏大部分鏈接也沒有傳遞具體會話內容,主要也是SMB查點:

  • TCP445端口,這裏發現有一個PSEXESVC.EXE的文件,這個二進制文件主要是一種Dv1dr32蠕蟲,這種蠕蟲經過IRC進行通訊。

  • 而後該源IP地址與蜜罐主機創建了會話,攻擊成功,這裏Windows的svcctl MSRPC接口用於同SCM(服務控制管理器)通信,svcctl漏洞容許匿名用戶鏈接到SCM,而後就能夠枚舉所安裝的或正在運行的服務。

  • TCP80端口,這裏主要經過該端口使用腳本攻擊IIS服務器的漏洞,從而獲取系統權限。

  • 210.22.204.101訪問了80端口,攻擊者經過緩衝區溢出得到命令行:

  • 這裏訪問的是218.25.147.83,這裏會看到c:\notworm,是一個蠕蟲攻擊:

  • UDP137端口,網絡基本輸入/輸出系統 (NetBIOS) 名稱服務器 (NBNS) 協議是 TCP/IP 上的 NetBIOS (NetBT) 協議族的一部分,它在基於 NetBIOS 名稱訪問的網絡上提供主機名和地址映射方法,在局域網中提供計算機的IP地址查詢服務,處於自動開放狀態,因此訪問這個端口確定就是 NetBIOS 查點了。

七、哪些攻擊成功了?是如何成功的?

經過上面的分析可知,成功的攻擊發起者是210.22.204.101 (Dv1dr32 蠕蟲)和 61.111.101.78( LAN Manager 口令猜想)

3、實驗總結

這周做業好多,實力勸退。。。
參考同窗們的博客學了不少:
https://www.jianshu.com/p/d425140c6561
http://www.javashuo.com/article/p-rngemveb-cb.html
http://www.javashuo.com/article/p-xqprimkh-cp.html
http://www.javashuo.com/article/p-fksychdp-cz.html

相關文章
相關標籤/搜索