20212923 2021-2022-2 《網絡攻防實踐》第八次作業

20212923 2021-2022-2 《網絡攻防實踐》第八次作業

實踐八:惡意代碼分析實踐

課程:《網絡攻防實踐》

班級: 2129

姓名: 王文彬

學號:20212923

實驗教師:王志強

實驗日期:2022年5月1日

必修/選修: 選修

一.實踐內容

1. 實踐要求介紹

  • 動手實踐任務一

    • 任務:對提供的rada惡意代碼樣本,進行文件類型識別,脫殼與字符串提取,以獲得rada惡意代碼的編寫作者,具體操作如下:
      • 使用文件格式和類型識別工具,給出rada惡意代碼樣本的文件格式、運行平臺和加殼工具;
      • 使用超級巡警脫殼機等脫殼軟件,對rada惡意代碼樣本進行脫殼處理;
      • 使用字符串提取工具,對脫殼後的rada惡意代碼樣本進行分析,從中發現rada惡意代碼的編寫作者是誰?
  • 動手實踐任務二

    • 分析Crackme程序
      • 任務:在WinXP Attacker虛擬機中使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其能夠輸出成功信息。
  • 分析實踐任務一

    • 任務:分析一個自制惡意代碼樣本rada,並撰寫報告,回答以下問題:
      • 提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息;
      • 找出並解釋這個二進制文件的目的;
      • 識別並說明這個二進制文件所具有的不同特性;
      • 識別並解釋這個二進制文件中所採用的防止被分析或逆向工程的技術;
      • 對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
      • 給出過去已有的具有相似功能的其他工具;
      • 可能調查處這個二進制文件的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
  • 分析實踐任務二——Windows 2000系統被攻破並加入殭屍網絡

    • 任務:分析的數據源是用Snort工具收集的蜜罐主機5天的網絡數據源,並通過編輯去除了一些不相關的流量並將其組合到了單獨的一個二進制網絡日誌文件中,同時IP地址和其他特定敏感信息都已經被混淆以隱藏蜜罐主機的實際身份和位置。回答下列問題:
      • IRC是什麼?當IRC客戶端申請加入一個IRC網絡時將發送那個消息?IRC一般使用那些TCP端口?
      • 殭屍網絡是什麼?殭屍網絡通常用於什麼?
      • 蜜罐主機(IP地址:172.16.134.191)與那些IRC服務器進行了通信?
      • 在這段觀察期間,多少不同的主機訪問了以209.196.44.172爲服務器的殭屍網絡?
      • 那些IP地址被用於攻擊蜜罐主機?
      • 攻擊者嘗試攻擊了那些安全漏洞?
      • 那些攻擊成功了?是如何成功的?

惡意代碼

  • 知識點總結:
  1. 惡意代碼指的是是計算機按照攻擊者意圖運行以達到惡意目的的指令集合;

  2. 指令集合:二進制執行文件,腳本語言代碼,宏代碼,寄生在文件、啓動扇區的指令流;

  3. 惡意代碼的目的:技術炫耀/惡作劇,遠程控制,竊取私密信息,盜用資源,拒絕服務、破壞等。

  4. 惡意代碼類型:

    • 計算機病毒,蠕蟲,惡意移動代碼,後門,特洛伊木馬,殭屍程序,Rootkit等;
    • 計算機病毒是最早出現的惡意代碼,媒體/工業界的概念混淆,經常以計算機病毒等價於惡意代碼
  5. 計算機病毒的感染機制

    • 感染可執行文件;
      • 前綴感染
      • 後綴感染
      • 插入感染
    • 感染引導扇區;
    • 感染數據文件-宏指令
  6. 後門

    • 後門是允許攻擊者繞過系統常規安全控制機制的程序,按照攻擊者自己的意圖提供通道;
    • 後門類型
      • 本地權限提升;
      • 單個命令的遠程執行;
      • 遠程命令行解釋器訪問-NetCat;
      • 遠程控制GUI—VNC,BO,冰河,灰鴿子;
      • 無端口後門:ICMP後門,給予Sniffer非混雜模式的後門,基於Sniffer混雜模式的後門。
    • 自啓動後門
      • Windows:自啓動文件/文件夾;註冊表自啓動項;計劃任務
      • Linux/Unix:inittab,rc.d/init.d,用戶啓動腳本,cron計劃任務
  7. 殭屍程序與殭屍網絡

    • 殭屍程序(Bot):來自與robot,攻擊者用於一對多控制目標主機的惡意代碼;

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

    • 殭屍網絡的危害——提供通用攻擊平臺

      • 分佈式拒絕服務攻擊
      • 發送垃圾郵件
      • 竊取敏感信息
      • 點擊欺詐
    • IRC殭屍網絡工作機制

    • HoneyBot殭屍網絡跟蹤實現效果

    • 殭屍網絡跟蹤--殭屍網絡列表

    • 殭屍主機地域分佈

惡意代碼分析方法

  1. 靜態分析

    • 通過反病毒引擎掃描識別已知的惡意代碼家族和變種名;
    • 逆向分析惡意代碼模塊構成,內部數據結構,關鍵控制流程等,理解惡意代碼的機理,並提取特徵碼用於檢測。
  2. 動態分析

    • 通過在受控環境中執行目標代碼,以獲取目標代碼的行爲及運行結果。
  3. 惡意代碼靜態分析方法列表

  4. 文件格式確定

    • file:確定惡意代碼目標平臺和文件類型
    • peid:文件類型、編輯鏈接器、是否加殼
    • file analyzar:分析win32平臺窗口程序中包含的特殊文件
    • Strings命令:
      • 惡意代碼實例名
      • 幫助或命令行選項
      • 用戶會話
      • 後門口令
      • 相關URL信息
      • 庫、函數調用
    • 結合grep/find尋找關注信息
  5. 惡意代碼混淆機制技術原理

    • 加密:固定加密/解密器;對解密器進行特徵檢測
    • 多樣性:多樣化解密器;
    • 多態:多態病毒能夠通過隨機變化解密器從而使得每次感染所生成的病毒實例都具有唯一性。應對:虛擬機進行脫殼
    • 變形:直接在病毒體中通過各種代碼混淆技術
  6. 惡意代碼動態進行方法列表


任務一:對提供的rada惡意代碼樣本,進行分析

(1)首先我們對老師給的壓縮包進行解壓到XP虛擬機中,解壓密碼是rada;

(2)使用命令file Rada.exe對其文件格式、運行平臺和加殼工具識別:

(3)我們打開超級巡警脫殼機對rada.exe進行脫殼;
image

(4)我們可以在Process Explorer中查看字符串這一項中,我們可以瀏覽看到該惡意代碼在我們計算機做了什麼,同時也可以看到該惡意程序的編寫作者。

(5)我們也可以使用IDA工具打開脫殼以後的惡意代碼,點擊進入Strings項目中,首先進入Edit-->set up-->選中unicode;

(6)我們可以在當前界面靠下看到-author的字眼,可以看到該惡意代碼的編寫作者;

(7)我們還可以進入-author的函數內,點擊View-->Graphs-->Function calls可以看到該函數之間的函數調用,我們可以尋找sub_40b010,在functions界面中我們可以點擊進入sub_40b010後,點擊進入View-->Graphs-->Flow chart,進而找到該惡意代碼的作者。


任務二:分析Crackme程序

分析crackme1.exe

(1)我們首先在bash中對crackme1程序的輸入格式進行試探,我們分別進行如下圖的命令行輸入,可以得到如下的結果:

(2)我們接下來打開IDA工具,點擊PE Execurable打開該程序,我們可以看到如下界面

(3)我們可以在Strings前幾行中看到我們之前在試探輸入格式的錯誤內容;

(4)我們在界面中點擊View-->Graphs-->Function calls,去尋找輸出函數,可以找到如下圖

(5)我們進入sub_401280函數中,點擊進入View-->Graphs-->Flow chart,我們可以看到正確的輸入格式及結果;

(6)我們可以去命令行中進行驗證

分析crackme2.exe

(1)與分析crackme1.exe程序過程相似,首先我們在命令行中對該程序的輸入格式進行試探,可以得到如下的界面;

(2)接下來打開IDA工具,點擊PE Execurable打開該程序,我們可以看到如下界面

(3)我們仍舊可以在前幾行看到我們之前在試探輸入格式中的輸出內容,相比於crackme1.exe多了幾行;

(4)我們在界面中點擊View-->Graphs-->Function calls,去尋找輸出函數,可以找到如下圖

(5)我們進入sub_401280函數中,點擊進入View-->Graphs-->Flow chart,我們可以看到正確的輸入格式及結果;

(6)我們可以去命令行中進行驗證


任務三:分析一個自制惡意代碼樣本rada

  • 問題一:提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息
    • 如下圖,我們可以輸入md5sum rada.exe對其進行解析。

    • 我們可以使用命令file rada.exe對其進行分析後可以得到一些可以識別的信息,類似於系統等。

綜上實踐,我們可以看到該文件的摘要是caaa6985a43225a0b3add54f44a0d4c7

是一個UPX加殼文件,UPX段改名爲JDR,版本號從1.25改爲0.99;

同時是PE文件格式;

運行在Windows 2000,xp和2003及以上版的os中;

  • 問題二:找出並解釋這個二進制文件的目的
    • a. 當我們運行該二進制文件後,我們可以使用Process Explorer中對其字符串進行觀察:

      • 我們可以發現該惡意程序對主機註冊表文件進行讀寫和刪除操作;

      • 同時該惡意代碼繼續執行了上傳、下載、休眠、屏幕截圖等命令;

      • 該惡意代碼還進行了查詢受害者主機上可用的網絡適配器的數據庫查詢語句;

    • b.我們可以查看wireshark抓包文件,可以看到惡意代碼在進行ftp上傳下載。

綜上實踐,我們可以瞭解到該二進制文件是一個後門程序,攻擊者可以藉助該後門程序對主機進行操作。

  • 問題三:識別並說明這個二進制文件所具有的不同特性
    • 我們可以分析可知,進入c盤後我們可以看到改二進制文件在c盤中進行復制,同時,點擊則一直運行在後臺,同時重啓後自動運行,我們在字符串分析中也看到該二進制文件對我們主機的註冊表文件進行了修改;

    • 同時我們可以看到該二進制還自動打開網頁進行訪問等功能

綜上實踐,它會自動安裝到C盤中,並修改註冊表跟隨系統開機啓動:訪問http://10.10.10.10/Rada/Rada_command.html,還可以解析指令並執行指令。

該程序支持以下指令:

操作 解釋
put 將宿主主機中的指定文件上傳到服務器
exe 將宿主主機中執行制定的命令
get 將服務器中的指定文件下載到宿主主機中
screenshot 截取宿主主機的屏幕並保存到tmp文件夾
sleep 停止活動一段時間
  • 問題四:識別並解釋這個二進制文件中所採用的防止被分析或逆向工程的技術
    • 我們可以使用查殼工具對該二進制文件進行查殼,因爲我們使用strings Rada.exe命令查看可打印字符串時發現都是亂碼;

    • 同時這個二進制文件使用UPX加殼後又做了手工修改;

    • 我們進行脫殼以後,可以在文件中找到字符串“Starting DDoS Smurf remote attack.”這個語句可以會誤導分析者惡意代碼要發動Ddos攻擊,而實際上並沒有。

綜上實踐,我們可以知道該二進制文件使用的是UPX加殼技術。

  • 問題五:對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由

我們可以從上述的實踐進行判斷,首先該惡意程序一直在重複做訪問固定界面的操作,因此不具有傳播和感染的特性,因此其不屬於病毒或者蠕蟲;另一方面,該惡意程序需要我們進行點擊後纔會運行,同時其並沒有僞裝成我們常用的軟件附着在上面,因此其也不屬於木馬,因此判斷其爲一個後門程序。

  • 問題六:給出過去已有的具有相似功能的其他工具

Bobax,2004年發現的木馬,也是使用HTTP協議從指定的服務器下載命令文件,然後解析並執行其中的指令。還有特洛伊木馬Setiri。

  • 問題七:可能調查處這個二進制文件的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?

我們在第一個實踐中分別在三個地方可以找到該程序的作者,是Raul siles和David Perze於2004年編寫的。


任務四:取證分析,Windows 2000系統被攻破並加入殭屍網絡

  • 問題一:IRC是什麼?當IRC客戶端申請加入一個IRC網絡時將發送那個消息?IRC一般使用那些TCP端口??

(1)IRC指的是因特網中繼聊天(Internet Relay Chat),一般稱爲互聯網中繼聊天,簡稱:IRC。

(2)IRC的工作原理非常簡單,您只要在自己的PC上運行客戶端軟件,然後通過因特網以IRC協議連接到一臺IRC服務器上即可。它的特點是速度非常之快,聊天時幾乎沒有延遲的現象,並且只佔用很小的帶寬資源。所有用戶可以在一個被稱爲"Channel"(頻道)的地方就某一話題進行交談或密談。每個IRC的使用者都有一個Nickname(暱稱)。

(3)註冊時需要發送的消息有三種,分別是口令,暱稱和用戶信息。格式如下:USER <username> <hostname> <servername> <realname>、PASS <password>、NICK <nickname>。註冊完成後,客戶端就使用JOIN信息來加 入頻道,格式如下:JOIN <channel>

(4)IRC服務器明文傳輸通常在6667端口監聽,也會使用6660—6669端口。SSL加密傳輸在6697端口。

  • 問題二:殭屍網絡是什麼?殭屍網絡通常用於什麼?

    • 殭屍網絡(botnet)是在網絡蠕蟲、特洛伊木馬、 後門工具等傳統惡意代碼形態的基礎上發展融合而產生的一種新型攻擊方式。殭屍網絡我在文章開頭也有簡單介紹過,指的是攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並通過一對多的命令與控制信道所組成的網絡。
    • 殭屍網絡一般用於提供通用攻擊平臺
      • 分佈式拒絕服務攻擊
      • 發送垃圾郵件
      • 竊取敏感信息
      • 點擊欺詐
  • 問題三:蜜罐主機(IP地址:172.16.134.191)與那些IRC服務器進行了通信?

    • 我們可以使用wireshark打開該數據包,我們輸入限定條件ip.src == 172.16.134.191 && tcp.dstport == 6667後,可以在交互過程中我們可以發現有五臺IRC服務器,分別是:
Num IP
Num.1 209.126.161.29
Num.2 66.33.65.58
Num.3 63.241.174.144
Num.4 217.199.175.10
Num.5 209.196.44.172

  • 問題四:在這段觀察期間,多少不同的主機訪問了以209.196.44.172爲服務器的殭屍網絡?
    • 當我們在命令行中輸入tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"後,我們在該目錄下可以得到三個文件,分別爲report.xml以及兩個進行分流後的文件,我們主要通過209.196.044.172.06667-172.016.134.191.01152該分流文件對ip=209.196.44.172進行查找。

    • 我們從參考視頻中可以發現,在進行查找主機之前,在命令行中鍵入了export LC_COLLATE='C'和export LC_CTYPE='C',這句命令主要是爲了去除所有本地化的設置,能夠讓命令正確執行。

    • 接下來我們在命令行內鍵入cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l後可以得到如下,可以看到一共有3457個主機訪問了該殭屍網絡。

在Linux中通過locale來設置程序運行的不同語言環境,locale由ANSI C提供支持。locale的命名規則爲<語言>_<地區>.<字符集編碼>,如zh_CN.UTF-8,zh代表中文,CN代表大陸地區,UTF-8表示字符集。

  1. LC_COLLATE:定義該環境的排序和比較規則;
  1. LC_CTYPE:用於字符分類和字符串處理,控制所有字符的處理方式,包括字符編碼,字符是單字節還是多字節,如何打印等。是最重要的一個環境變量。
  • 問題五:哪些IP地址被用於攻擊蜜罐主機?

    • 當我們在命令行內鍵入tcpdump -n -nn -r /home/user/Desktop/botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > tcpdump.txt;wc -l tcpdump.txt命令後,我們可以得到如下的結果

    • 可以得到,一共有165個ip被用於攻擊蜜罐主機。

  • 問題六:攻擊者嘗試攻擊了哪些安全漏洞?

    • 利用指令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 我們可以篩選出蜜罐主機相應的TCP端口,我們可以得到以下端口,對應的是135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)

      • TCP135號端口和25號端口

        • 我們可以看到其只是進行了鏈接,但是沒有數據的交互,所以攻擊者可能只是對這兩個端口進行了connect掃描。
      • TCP80號端口

        • 當我們輸入篩選條件tcp.dstport==80 && ip.dst == 172.16.134.191後,我們可以看到IP爲24.197.194.106的設備有很多通信記錄,正是因爲其行爲就是不停的用++腳本++在攻擊IIS服務器的漏洞,從而獲取系統權限。

        • 我們可以看到ip爲210.22.204.101的設備出現了很多C,攻擊者想通過緩衝區溢出攻擊來獲得一個命令行

        • 我們可以看到IP爲218.25.147.83的設備,在發送N,我們追蹤流後可以發現,攻擊者正在使用紅色蠕蟲病毒

        • 我們增加篩選條件tcp.srcport==80 && ip.src == 172.16.134.191&&http後,我們發現通過蜜罐主機80端口向外的流量均被迴應一個lis服務器的默認界面,表示攻擊失敗。

      • 139號端口

        • 當我們對139號端口進行篩選時,我們可以看到有很多連接到該端口,但是卻有很多空會話,判斷爲SMB查點,但沒有成功。
      • 445號端口

        • 發現有一個PSEXESVC.exe的文件,該文件是一種Dv1dr32的蠕蟲,主要通過IRC進行通信

        • 找到出口,發現每一個IP都能夠有一個響應,同時返回信息包含有\pipe\ntsvcs,因此我們可以知道,攻擊者肯定獲得了權限,該攻擊是成功的

      • 4899號端口

        • 4899端口是一個遠程控制軟件radmin服務端監聽端口,該軟件不是木馬,是藉助445端口攻擊成功後,進行下載爲了進行遠程控制。
    • 同樣對UDP短褲進行篩選,使用命令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq ,只有137端口

      • UDP137號端口:這個是在局域網中提供計算機的IP地址查詢服務,處於自動開放狀態,所以訪問這個端口肯定就是NetBIOS查點。
  • 問題七:那些攻擊成功了?是如何成功的?

    • 該題答案可以參考問題六。

二、 實驗過程中遇到的問題和解決過程

1.在進行查找有多少主機訪問過殭屍網絡過程中,按照步驟進行後,總是輸出0

  • 在於輸入grep命令過程中,在該試驗中我們應當輸入grep -a,因爲grep原本是搜尋文字文件,若拿二進制的檔案作爲搜尋的目標,則會顯示如下的訊息: Binary file 二進制文件名 matches 然後結束。若加上-a參數則可將二進制檔案視爲文本文件搜尋,相當於--binary-files=text這個參數。

三、感想

在此次實踐中,從分析角度更深刻的瞭解了惡意代碼的攻擊原理,同時也學習了相關對於惡意軟件分析工具的使用等知識。

四、參考文獻

linux grep -a命令,linux grep用法

網絡攻防技術與實踐課程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章