(:」∠)_
- 此作業所屬課程:2019-2020-2-1991&1993《網絡攻防實踐》
- 本次作業要求:第九次作業 惡意代碼基礎知識和分析方法
- 課程目標:學習網絡攻防實踐
- 本次作業在哪個方面幫助我實現目標:第九章 惡意代碼安全攻防
一、實踐內容
1、惡意代碼基礎知識
1.1 惡意代碼定義與分類
- 定義:使計算機按照攻擊者的意圖執行以達到惡意目標的指令集。
- 分類、特性及實例:

1.2 發展過程

1.3 計算機病毒
- 我國對計算機病毒的定義:
計算機病毒是指編制或者在計算機程序中插入的,破壞計算機功能或數據、影響計算機使用,並能自我復制的一組計算機指令或者程序代碼。 - 基本特性:
1、感染性
2、潛伏性
3、可觸發性
4、破壞性
5、衍生性 - 感染機制:

- 傳播渠道:
移動儲存、電子郵件及下載、共享目錄等。
1.4 網絡蠕蟲
- 定義:
一種通過網絡自主傳播的惡意代碼,可以自我復制。它的出現相對於傳統計算機病毒和木馬、后門來說比較晚,但無論從傳播速度、傳播范圍還是破壞程度上來講,都是以往的惡意代碼所無法比擬的。 - 基本特性:
1、自我復制,感染性
2、通過網絡的自主傳播
3、不需要宿主,獨立程序
4、直接通過網絡傳播,包括內網和互聯網
5、一般來說不需要用戶交互,通過目標系統上的安全漏洞或錯誤配置進行傳播,但對於一小部分蠕蟲,如郵件蠕蟲,用戶交互是必要的。 - 內部組成結構

1.5 后門與木馬
-
后門:
能夠為攻擊者提供多種不同類型的訪問通道,包括:- 本地權限提升和本地賬號
- 單個命令的遠程執行
- 遠程命令解釋器訪問
- 遠程控制GUI
- 無端口后門
-
后門工具可以利用自啟動文件夾、注冊表自啟動項及預定計划任務這三種主要方法來達到自啟動的效果。
-
特洛伊木馬可以用於一下目的:
- 欺騙用戶或系統管理員安裝特洛伊木馬程序,這樣木馬程序就通過毫無戒備的用戶進入到計算機系統中;
- 隱藏在計算機的正常程序中,將自己偽裝成看起來屬於該系統,使得用戶和管理員不會察覺到它的存在,通常與后門工具結合,成為木馬后門。
-
命名偽裝常用的攻擊技巧有:
- 混淆文件擴展名
- 模仿Windows系統文件或服務命名
1.6 僵屍程序與僵屍網絡
- 僵屍網絡是在網絡蠕蟲、特洛伊木馬、后門工具等傳統惡意代碼形態的基礎上發展融合而產生的一種新型攻擊方式。
- 僵屍網絡是指攻擊者出於惡意目的,傳播僵屍程序控制大量主機,並通過一對多的命令與控制信道所組成的網絡。
- 僵屍網絡區別於其他攻擊方式的基本特性是使用一對多的命令與控制機制,另外,僵屍網絡還具有惡意性和網絡傳播性。
- 僵屍程序的功能組成結構
- 主體功能模塊中的命令與控制模塊作為整個僵屍程序的核心,實現與僵屍網絡控制器的交互、接受攻擊者的控制命令、進行解析和執行,並將執行結果反饋給僵屍網絡控制器。
- 輔助功能模塊是對僵屍程序除主體功能外其他功能的歸納,主要包括信息竊取、僵屍主機控制、下載與更新和躲避檢測與對抗分析等功能模塊。
- IRC僵屍網絡的工作機制:

- 僵屍程序的命令與控制機制包括:
- 基於IRC協議的命令與控制機制
- 基於HTTP協議的命令與控制機制
- 基於P2P協議的命令與控制機制
1.7 Rootkit
- 定義: 一類特洛伊木馬后門工具,通過修改現有的操作系統軟件,使攻擊者獲得訪問權並隱藏在計算機中。
- 應用程序級木馬后門、用戶模式Rootkit和內核模式Rootkit位置對比:

- 用戶模式Rootkit:
- UNIX用戶模式Rootkit中集成的工具可以被分為五種不同類型:
1、提供后門訪問的二進制替換程序
2、隱藏攻擊者的二進制替換程序
3、用於隱藏但不替換二進制程序
4、另外一些零散的工具:一些常用的攻擊工具,如網絡嗅探器、后門shell監聽器等。
5、安裝腳本 - Windows用戶模式Rootkit有三種技術:
1、Windows為了支持第三方工具擴展Windows的內置功能特性,提供了一些開發接口。用戶模式Rootkit可以使用這些開發接口將自身實現的惡意功能邏輯插入到現有的Windows函數之間,而無需覆蓋Windows代碼。
2、Windows使用WFP機制來防止操作系統關鍵文件被修改或替換,因此Windows用戶模式Rootkit要想覆蓋操作系統關鍵文件,就必須首先使得WFP功能失效。
3、用戶模式Rootkit還可以使用DLL注入和API掛鈎技術把惡意代碼直接加入運行進程的內存空間中。

- UNIX用戶模式Rootkit中集成的工具可以被分為五種不同類型:
- 內核模式Rootkit的技術手段:
- 文件和目錄隱藏
- 進程隱藏
- 混雜模式隱藏
- 改變執行方向
- 設備截取和控制
2、惡意代碼分析方法
2.1 惡意代碼分析與良性代碼分析的區別
| 區別項 | 惡意代碼分析 | 良性代碼分析 |
|---|---|---|
| 目的公開性 | 目的未知,需分析和推測其目的 | 一般情況下,目的是公開且明確的,可輔助分析過程 |
| 目的惡意性 | 目的惡意,需要受控環境 | 良性,無需受控環境 |
| 是否存在源碼 | 絕大多數情況無源碼,二進制分析 | 開源軟件存在源碼,源碼分析;閉源軟件則需要二進制分析 |
| 使用對抗分析技術 | 各種多樣化對抗分析,博弈問題 | 一般無對抗分析,商業軟件也引入對抗分析保護產權 |
2.2 惡意代碼發燒友的分析實驗環境

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

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

2.5 惡意代碼靜態分析技術
- 作用:能夠對惡意代碼的特性和目的有一個大體的了解,甚至能夠識別出惡意代碼的各個組成部分。
- 技術列表:

2.6 惡意代碼動態分析
- 作用:激活一個受控分析實驗環境的代碼,當一個代碼在實際系統中運行時,我們能夠更加迅速地了解其行為。
- 常用的惡意代碼動態分析監控技術和工具

- 技術列表:

二、實驗過程
動手實踐:惡意代碼文件類型識別、脫殼與字符串提取
任務內容:對提供的rada惡意代碼樣本(U盤或FTP/materials/course9下載),在WinXP_Attacker虛擬機中進行文件類型識別,脫殼與字符串提取,以獲得rada惡意代碼的編寫作者。
1、使用文件格式和類型識別工具(file, PEid),給出rada惡意代碼樣本的文件格式、運行平台和加殼工具。
2、使用超級巡警脫殼機等脫殼軟件,對rada惡意代碼樣本進行脫殼處理。
3、使用字符串提取工具(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,尋找特定的輸入,使其能夠輸出成功信息。
過程如下:
-
仍在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.,(三個私有網段,確保服務器在私有網段中,然后到服務器去取命令文件)


回答問題:
1、提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息。
摘要為caaa6985a43225a0b3add54f44a0d4c7;Win32 PE 加 UPX 殼 GUI 文件。
2、找出並解釋這個二進制文件的目的。
這個二進制文件通過網絡獲取指令,並執行;攻擊者可以利用其完全控制該系統,是一個后門程序。
3、識別並說明這個二進制文件所具有的不同特性。
會請求 Web 服務器;解析獲得的指令並執行。
4、識別並解釋這個二進制文件中所采用的防止被分析或逆向工程的技術。
UPX 壓縮技術。
5、對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由。
不具有自主傳播模塊,不具有傳播和感染的性質,所以它不屬於病毒和蠕蟲;也沒有將自己偽裝成有用的程序以欺騙用戶運行,不是木馬。是一個后門程序。
6、給出過去已有的具有相似功能的其他工具。
使用http方式來同攻擊者建立連接————Bobax、海陽頂端、Setiri等。
7、可能調查出這個二進制文件的開發作者嗎?如果可以,在什么樣的環境和什么樣的限定條件下?
Raul siles和David Perze於2004年編寫的。
實踐作業2:取證分析實踐:Windows2000系統被攻陷並加入僵屍網絡
實踐內容:數據源是Snort收集的蜜罐主機5天的網絡數據源,並去除了一些不相關的流量並將其組合到了單獨的一個二進制網絡日志中,,同時IP地址和其他敏感信息被混淆。分析這個日志文件並回答問題:
過程如下:
1、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 端口。
2、僵屍網絡是什么?僵屍網絡通常用於干什么?
-
僵屍網絡是指攻擊者(稱為botmaster)出於惡意目的,傳播僵屍程序控制大量主機,並通過一對多的命令與控制信道所組成的網絡。
-
僵屍網絡主要用於:發動DDOS攻擊、發送垃圾郵件、 監聽用戶敏感信息、記錄鍵盤輸入信息、 擴散新的惡意軟件 和 偽造點擊量,騙取獎金或操控網上投票和游戲,同時黑客控制的這些計算機所保存的信息也都可被黑客隨意“取用”。
3、蜜罐主機(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.58、63.241.174.144、217.199.175.10、209.196.44.172

4、在這段觀察期間,多少不同的主機訪問了以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:


5、哪些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:


6、攻擊者嘗試了哪些安全漏洞?
-
用
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 查點了。

7、哪些攻擊成功了?是如何成功的?
通過上面的分析可知,成功的攻擊發起者是210.22.204.101 (Dv1dr32 蠕蟲)和 61.111.101.78( LAN Manager 口令猜測)
三、實驗總結
這周作業好多,實力勸退。。。
參考同學們的博客學了很多:
https://www.jianshu.com/p/d425140c6561
https://www.cnblogs.com/charlesxie/p/12776522.html
https://www.cnblogs.com/20199304lbs/p/12793607.html
https://www.cnblogs.com/louhao-20199310/p/12789892.html
