20199305 2019-2020-2 《網絡攻防實踐》第九周作業
一、前言
| 問題 | 回答 |
|---|---|
| 作業屬於 | https://edu.cnblogs.com/campus/besti/19attackdefense |
| 作業要求 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
| 課程目標 | 學習教材第九章,完成課后實踐 |
二、知識梳理
1、惡意代碼基礎知識
(1)惡意代碼定類和分類
惡意代碼:惡意代碼(Unwanted Code)是指沒有作用卻會帶來危險的代碼,一個最安全的定義是把所有不必要的代碼都看作是惡意的,不必要代碼比惡意代碼具有更寬泛的含義,包括所有可能與某個組織安全策略相沖突的軟件
惡意代碼的類別:
-
計算機病毒:是編制者在計算機程序中插入的破壞計算機功能或者數據的代碼,能影響計算機使用,能自我復制的一組計算機指令或者程序代碼
-
蠕蟲:蠕蟲病毒是一種常見的計算機病毒。它是利用網絡進行復制和傳播,傳染途徑是通過網絡和電子郵件。它能傳播它自身功能的拷貝或它的某些部分到其他的計算機系統中(通常是經過網絡連接)。與一般病毒不同,蠕蟲不需要將其自身附着到宿主程序,蠕蟲病毒一般是通過1434端口漏洞傳播
-
惡意移動代碼:惡意移動代碼是一段計算機程序,能夠在計算機或網絡之間傳播,未經授權、故意修改計算機系統。一般來說,公認的惡意移動代碼的變異型可以分為3類:病毒類、蠕蟲類和木馬程序
-
后門:后門程序一般是指那些繞過安全性控制而獲取對程序或系統訪問權的程序方法。在軟件的開發階段,程序員常常會在軟件內創建后門程序以便可以修改程序設計中的缺陷。但是,如果這些后門被其他人知道,或是在發布軟件之前沒有刪除后門程序,那么它就成了安全風險,容易被黑客當成漏洞進行攻擊
-
特洛伊木馬:如今黑客程序借用其名,有“一經潛入,后患無窮”之意,特洛伊木馬沒有復制能力,它的特點是偽裝成一個實用工具,誘使用戶將其安裝在PC端,從而秘密獲取信息
-
僵屍程序:僵屍程序通過聊天室,文件共享網絡感染存在漏洞的計算機。這些被感染的計算機所保存的 信息都可被黑客隨意取用
-
內核套件:用以獲取並保持最高控制權的一類惡意代碼
2、惡意代碼發展趨勢
-
(1)惡意代碼的復雜度和破壞力逐漸增強
-
(2)惡意代碼技術的創新越來越頻繁
-
(3)關注重點從計算機病毒轉移到蠕蟲和內核級攻擊工具
3、計算機病毒
(1)計算機病毒基本特性
-
感染性:最本質的特性
-
潛伏性:感染后並非立即開始行動
-
可觸發性:滿足特定條件觸發破壞機制
-
破壞性:目的有二,一種為炫耀技術,另一種為刪除文件、格式化磁盤的真實破壞
-
衍生性:一種病毒可衍生為多種病毒
(2)計算機病毒傳染目標
-
可執行文件
-
引導扇區
-
支持宏指令的數據文件
(3)計算機病毒傳播機制
-
計算機病毒被觸發后,就會尋找宿主程序並開始復制(這個過程跟人類感染病毒是類似的,病毒瘋狂復制RNA),病毒一般寄生在上述三個位置:即可執行文件、引導扇區、支持宏指令的數據文件,同時它的傳播需要借助人類,而不是自動從一台電腦到另一台電腦
(4)計算機病毒傳播渠道
-
計算機病毒的傳播渠道主要是移動存儲、電子郵件下載、共享目錄等

4、網絡蠕蟲
(1)網絡蠕蟲的特性
網絡蠕蟲起步晚,但破壞性遠超前幾代,且無需借助人類外力即可自動復制傳播,且網絡蠕蟲的傳播必須借助網絡,下圖為網絡蠕蟲與計算機病毒的區別
| 網絡蠕蟲 | 計算機病毒 | |
|---|---|---|
| 特性 | 通過網絡自動傳播 | 感染宿主文件/扇區 |
| 宿主 | 無需宿主 | 需要宿主 |
| 傳播是否需要借助人類幫助 | 無需幫助 | 需要幫助 |
(2)網絡蠕蟲組成結構
-
蠕蟲病毒由兩部分組成:一個主程序和另一個是引導程序。主程序一旦在計算機中得到建立,就可以去收集與當前機器聯網的其他機器的信息,它能通過讀取公共配置文件並檢測當前機器的聯網狀態信息,嘗試利用系統的缺陷在遠程機器上建立引導程序。就是這個一般被稱作是引導程序的小程序,把蠕蟲病毒帶入了其他的機器中。如果細分主要是五個部分:彈頭、傳播引擎、目標選擇算法、掃描引擎、有效載荷(類似於導彈)

5、后門與木馬
(1)兩者異同
-
單論定義而言,后門程序一般是指那些繞過安全性控制而獲取對程序或系統訪問權的程序方法,而木馬則是一種隱藏惡意功能“裝好人”的軟件。將提供對受害計算機遠程控制的程序均視為木馬是錯誤的,他們應該被視為后門,在我看來,木馬屬於一個更小的概念,即將后門工具偽裝成良性程序,才應該是木馬。
6、僵屍程序
(1)什么是僵屍網絡?
-
僵屍網絡是網絡蠕蟲、后門程序、特洛伊木馬等傳統惡意代碼形態的基礎上發展融合而成的新型攻擊方式,其攻擊者出於惡意目的,傳播僵屍程序控制大量主機它區別於其他攻擊方式的特性是一對多的命令與控制機制。
(2)僵屍程序功能組成結構
-
其主要分為主體功能模塊和輔助功能模塊,其中主體功能模塊主要包括
命令與控制模塊和傳播模塊,輔助功能模塊主要包括信息竊取模塊、主機控制模塊、下載更新模塊、防分析檢測模塊
(3)僵屍程序工作機制
-
滲透攻擊
-
加入服務器
-
動態影射至IRC服務器
-
加入IRC信道
-
監聽命令
-
接收命令
-
執行攻擊
7、內核模式Rookit
(1)什么是Rookit?
-
Root賬戶是至高無上的跟用戶,因此也是攻擊者永遠的追求目標,而維持一個被攻擊主機的Root權限就是駭客們開發的這款惡意程序的目的。這是一款特洛伊木馬后門工具,通過修改現有的操作系統軟件,是攻擊者獲得訪問權並隱藏在計算機中。
(2)內核模式
-
內核模式Rootkit的攻擊目標直接面向操作系統的控制核心——內核,能更加有效地破壞計算機,大多數內核模式的Rootkit采用以下幾種技術手段:
-
文件和目標隱藏
-
進程隱藏
-
網絡端口隱藏
-
混雜模式隱藏
-
改變執行方向
-
設備截取和控制
8、惡意代碼分析方法
惡意代碼分析與針對良性代碼和軟件的程序分析技術,都可以采用通用的代碼分析技術來作為基礎,主要包括靜態分析和動態分析方法,來對代碼進行逆向工程(Reverse Engineering)來確定其功能。
| 區別項目 | 惡意代碼分析 | 良性代碼分析 |
|---|---|---|
| 目的公開性 | 目的未知 | 目的公開明確 |
| 目的惡意性 | 惡意目的,需要受控環境 | 良性,無需受控環境 |
| 是否存在源碼 | 絕大多數情況無源碼,二進制分析 | 開源軟件存在源碼,閉源軟件二進制分析 |
(1)惡意代碼分析環境
-
惡意代碼發燒友的分析環境
-
基於虛擬化構建惡意代碼分析環境
(2)惡意代碼靜態分析技術
-
反病毒掃描
-
文件格式識別
-
字符串提取分析
-
惡意代碼實例名
-
幫助或命令行選項
-
用戶會話
-
后門口令
-
相關URL信息、Email地址
-
包含庫文件和函數調用
-
二進制結構分析
-
反匯編與反編譯
-
代碼結構與邏輯分析
-
加殼識別與代碼脫殼
(3)惡意代碼動態分析技術
-
基於快照對比的分析方法和工具
-
系統動態行為監控方法:文件行為監控軟件、進程行為監控軟件、注冊表監控軟件、本地網絡棧行為監控軟件
-
網絡協議棧監控方法
-
沙箱技術
-
動態調試技術
三、動手實踐
1、惡意代碼文件類型識別、脫殼與字符串提取
實踐任務:對提供的 rada 惡意代碼樣本,進行文件類型識別,脫殼與字符串提取,以獲得 rada 惡意代碼的編寫作者,具體操作如下:
- 使用文件格式和類型識別工具,給出 rada 惡意代碼樣本的文件格式、運行平台和加殼工具。
- 使用超級巡警脫殼機等脫殼軟件,對 rada 惡意代碼樣本進行脫殼處理。
- 使用字符串提取工具,對脫殼后的 rada 惡意代碼樣本進行分析,從中發現 rada 惡意代碼的編寫作者是誰?
(1)解壓下載的壓縮文件,將RaDa放入虛擬機Windows attck的C盤中,同時打開終端,輸入file RaDa.exe,查看該文件類型,這是一個有圖形化界面(GUI)的 Win32 PE(可移植可執行)程序

(2)接着使用 PEiD 工具查看文件加殼類型。加殼的目的是為了增加逆向難度。

可以看到這個是一個版本為 0.89.6 的 UPX 殼(壓縮殼)

(3)輸入strings RaDa.exe,查看 RaDa.exe 中可打印字符串,發現全是亂碼,這說明被加殼了

(4)接下來使用超級巡警進行脫殼,選擇相應的路徑,發現支持脫殼

按下給我脫,脫殼成功,發現生成了一個新文件RaDa_unpacked.exe(脫殼文件)

打開RaDa文件夾,果然可以看到這個文件

(5)再用 strings 查看脫殼后的RaDa_unpacked.exe,發現了脫殼后的惡意程序的可打印字符串

(6)這時候用 IDA Pro Free 打開這個文件,查看詳細信息,可以在字符串這一欄中看到作者為Raul Siles 和 David Perze


2、分析 Crackme 程序
(1)首先檢查一下兩個文件的完整性,計算其 md5 值

(2)使用file命令查看其文件類型,可以看到這兩個文件都是32位 windows 下 PE 文件

(3)對 crackme1.exe 進行分析,可以發現,在接受一個參數6時,程序的輸出為不好意思,能再說一遍嗎?,其他的都是您是不是遺漏了什么?,所以我們猜測該程序的輸入為一個數。

(4)接下來利用 IDA Pro 打開這個程序分析,打開我們打開通過 Strings 窗口可以查看該程序中出現的字符串。通過 Strings 窗口可以查看到該程序中出現的明文字符串,可以看到前面的兩種輸出信息,“I think you are missing something.” “Pardon? What did you say?”,還發現了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”這兩個字符串。有內容我們可以猜測,前者就是我們需要的口令,后者就是輸入口令正確時程序的輸出信息。

(5)接下來看函數調用圖(Function Call)可以發現:關鍵的部分在sub_401280這里,程序是使用strcmp函數來輸入的,然后利用print和fprint函數輸出


(6)下面來看sub_401280,cmp [ebp+arg_0],2為判斷程序是否有兩個參數。在 C 語言中,主函數通常為int main(int argc,const char **argv),即第一個參數argc對應argv的大小,第二個參數對應命令行的格式。如在命令行輸入crackme1.exe 1,那么參數對應的值為argc=2,argv={”crackme1.exe”,”1”}。


(7)再往下看,可以看到其他幾條口令

(8)猜測正確的口令應該是I know the secret,輸入命令運行改口令,可以得到這樣一條回復您知道如何與項目對話,逆向工程師先生,成功

(9)程序 crackme2.exe 的分析過程與之類似,先打開Function call(函數調用圖),發現關鍵的部分在sub_401280這里

(10)下面來看sub_401280,內容與上一個文件基本一致,大致可以判斷出關鍵口令為I know the secret,只是從下圖可以看到,代碼邏輯中的程序名稱改變了,因此需要對程序名稱進行修改

(11)修改完后運行文件,輸入crackmeplease.exe "I know the secret",發現回復為我有一個小小的秘密:巧克力,成功

四、實踐分析
1、樣本分析,分析一個自制惡意代碼樣本
實踐任務:現在你作為一名安全事件處理者的任務(如果你接受的話)就是深入分析這個二進制文件,並獲得盡可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最為重要的,請展示你獲取所有信息所采取的惡意代碼分析技術:
- 提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息
- 找出並解釋這個二進制文件的目的
- 識別並說明這個二進制文件所具有的不同特性
- 識別並解釋這個二進制文件中所采用的防止被分析或逆向工程的技術
- 對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由
- 給出過去已有的具有相似功能的其他工具
- 可能調查出這個二進制文件的開發作者嗎?如果可以,在什么樣的環境和什么樣的限定條件下?
(1)查看摘要和文件類型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe識別出這是32位GUI文件

(2)接下來使用 IDA 對RaDa_unpacked.exe進行分析(該程序在第一個實踐中已經被脫殼了),進入 Strings 對話框,在菜單欄中的Edit中點擊Setup,設置類型為 Unicode。

(3)查看命令行參數:可以看到作者

(4)找到一個 IP 地址,一些大佬們用wireshark發現該程序被執行后訪問了這個地址,得到RaDa_commands.html,可以從上圖中畫紅色圈圈的地方看到其對應的函數為sub_404FB0

(5)進入這個函數,看黃色部分的匯編代碼,可以看到其被參數40C030替換,找到該位置,看到該參數對應的函數是sub_4052C0

(6)我們搜索4052C0,打開其Call Graph查看。這里我們看到三個私有網段分別為192.168.、172.16.、10.先確保服務器在私有網段中,然后到服務器去取命令文件

問答
Q:提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息。
-
A:文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,這是一個PE可執行文件,同時也是一個UPX加殼文件。
Q:找出並解釋這個二進制文件的目的。
-
A:這個二進制文件是一個后門程序,攻擊者可以利用其完全控制該系統。
Q:識別並說明這個二進制文件所具有的不同特性。
-
A:它會自動安裝到C盤中,並修改注冊表跟隨系統開機啟動:訪問http://10.10.10.10/Rada/Rada_command.html,還可以解析指令並執行指令。
Q:識別並解釋這個二進制文件中所采用的防止被分析或逆向工程的技術。
-
A:UPX 加殼技術
Q:對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由。
-
A:不具有傳播和感染的性質,故不屬於病毒和蠕蟲,同時也未將自己偽裝成良性程序以,不是特洛伊木馬,排除各種可能后這應該是一個后門程序。
Q:給出過去已有的具有相似功能的其他工具。
-
A:木馬Bobax、海陽頂端、木馬Setiri等
Q:可能調查出這個二進制文件的開發作者嗎?如果可以,在什么樣的環境和什么樣的限定條件下?
-
A:2004年,由Raul siles和David Perze二人編寫
2、取證分析,Windows 2000系統被攻破並加入僵屍網絡
實踐任務:數據源是Snort收集的蜜罐主機5天的網絡數據源,並去除了一些不相關的流量,同時IP地址和其他敏感信息被混淆。回答下列問題:
- IRC是什么?當IRC客戶端申請加入一個IRC網絡時將發送哪個消息?IRC一般使用哪些TCP端口?
- 僵屍網絡是什么?僵屍網絡通常用於干什么?
- 蜜罐主機(IP:172.16.134.191)與哪些IRC服務器進行了通信?
- 在這段觀察期間,多少不同的主機訪問了以209.196.44.172為服務器的僵屍網絡。
- 哪些IP地址被用於攻擊蜜罐主機?
- 攻擊者嘗試了哪些安全漏洞?
- 哪些攻擊成功了?是如何成功的?
Q:IRC是什么?當IRC客戶端申請加入一個IRC網絡時將發送哪個消息?IRC一般使用哪些TCP端口?
-
因特網中繼聊天(Internet Relay Chat),簡稱 IRC。IRC 的工作原理非常簡單,只需要在自己的 PC 上運行客戶端軟件,然后通過因特網以IRC 協議連接到一台 IRC 服務器上即可。IRC 特點是通過服務器中繼與其他連接到這一服務器上的用戶交流。
-
注冊時需要發送的消息有三種,分別是口令,昵稱和用戶信息
-
IRC 服務器明文傳輸通常在 6667 端口監聽,也會使用 6660—6669 端口。SSL 加密傳輸在 6697 端口。
Q:僵屍網絡是什么?僵屍網絡通常用於干什么?
-
僵屍網絡是指攻擊者(稱為botmaster)出於惡意目的,傳播僵屍程序控制大量主機,並通過一對多的命令與控制信道所組成的網絡。
-
僵屍網絡主要用於:發動DDOS攻擊、發送垃圾郵件、 監聽用戶敏感信息、記錄鍵盤輸入信息、 擴散新的惡意軟件 和 偽造點擊量,騙取獎金或操控網上投票和游戲,同時黑客控制的這些計算機所保存的信息也都可被黑客隨意“取用”。
Q:蜜罐主機(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

Q:在這段觀察期間,多少不同的主機訪問了以209.196.44.172為服務器的僵屍網絡?
-
這里一般需要裝一下
sudo apt-get install tcpflow,然后輸入命令tcpflow -r botnet_pcap_file.dat'host 209.196.44.172 and port 6667'獲取209.196.44.172與172.016.134.191之間的所有的 IRC 數據包,得三個文件,172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml


Q:哪些IP地址被用於攻擊蜜罐主機?
-
使用以下命令查找端口並輸出到1.txt 中(tcpdump -nn: 指定將每個監聽到的數據包中的域名轉換成IP、端口從應用名稱轉換成端口號后顯示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'為分隔符的第 10 列;uniq命令用於檢查及刪除文本文件中重復出現的行列; wc -l 用於統計文件的行數),總共148個端口
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


Q:攻擊者嘗試了哪些安全漏洞?
-
輸入
snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii查看一下網絡流分布情況。大部分都是TCP包,所以我們首先應該篩選出響應的TCP端口

-
使用指令篩選出蜜罐主機相應的TCP端口。指令為:
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

-
順便篩選出UDP端口

-
用wireshark打開文件botnet.pcap,分析個端口,wireshark中使用條件
tcp.dstport==80 && ip.dst == 172.16.134.191進行篩選,這些是目標地址為172.16.134.191、目標端口為80的數據包。個人未發現攻擊現象(大神們說IIS服務器的漏洞被攻擊,但我不知道在哪兒)

-
再看80端口下一個ip地址
218.25.147.83,在tcp流中看到c:\notworm(蠕蟲攻擊)

-
輸入
tcp.dstport==139 && ip.dst == 172.16.134.191查看139號端口。可以看到有很多主機連接到這個端口的,但是基本都是一樣的,大部分都是連接,個人未察覺到異常

-
tcp.dstport==445 && ip.dst == 172.16.134.191來看TCP 445號端口,發現一個PSEXESVC.EXE字符串,是由61.111.101.78發起的,我搜索了一下這個字符串,感覺和大神們的描述不太一樣,這似乎是一個類似於telnet的遠程控制程序,某些反病毒掃描程序會報告其中的一個或多個工具感染了“遠程管理”病毒。這些 PsTools 都不帶病毒,但是如果病毒使用了這些工具,則它們可能觸發病毒通知。

-
再看,通過字符串信息可以知道主機
210.22.204.101對蜜罐使用了LAN Manager口令猜測,並且成功攻擊

-
而接下來的
135``25``137端口經過檢查均未發現養雞場
Q:哪些攻擊成功了?是如何成功的?
-
通過上面的分析可知,成功的攻擊發起者是218.25.147.83(蠕蟲攻擊)和 61.111.101.78( LAN Manager 口令猜測)
五、總結與反思
本章作業知識點涉及面廣,但具有邏輯上的先后順序,不難理解,前兩個實踐內容難度是適中,但后兩個實踐的分析較難,許多內容不是因為時間太久已經遺忘就是未曾學習過,而且題量很大,所以花費了較長時間,對於我而言,每次實驗都是一場挑戰
六、問題與解決
1、在統計UDP端口數時,顯示沒有此類文件按,發現是因為文件名少加了
.dat
.dat

