1. 程式人生 > 其它 >20211916 2021-2022-2 《網路攻防實踐》第八次實踐

20211916 2021-2022-2 《網路攻防實踐》第八次實踐

1.實踐內容

*1.1惡意程式碼定義
指的是使計算機按照攻擊者的意圖執行以達到惡意目標的指令集。

*1.2分類
計算機病毒、蠕蟲、惡意移動程式碼、後門、特洛伊木馬、殭屍網路、核心套件。

  • 計算機病毒

    • 計算機病毒是一種能夠自我複製的程式碼,通過將自身嵌入其他程式進行感染,而感染過程通常需要人工干預才能完成 。
    • 特性:感染性(最本質的特性 )、潛伏性 、可觸發性 、破壞性 、衍生性
    • 感染及引導機制:感染可執行檔案(字首感染機制、字尾感染機制、中間插入感染機制) 、感染引導扇區 、感染資料檔案-巨集指令
    • 傳播方式:移動儲存( U盤);電子郵件及其下載(郵件病毒);檔案共享(SMB共享服務、NFS、 P2P)。
  • 網路蠕蟲

    • 網路蠕蟲是一種通過網路自主傳播、自我複製的獨立惡意程式碼。
    • 特性:主動傳播性,通常無須人為干預就能傳播。
    • 傳播方式:主動攻擊網路服務漏洞 、通過網路共享目錄 、通過郵件傳播
    • 組成結構:蠕蟲的“彈頭” (滲透攻擊模組);傳播引擎 ( FTP/TFTP/HTTP/SMB/直接傳送/單包);目標選擇演算法+掃描引擎(掃描策略);有效載荷(攻擊負荷)
  • 後門

    • 後門是允許攻擊者繞過系統常規安全控制機制的程式,按照攻擊者自己的意圖提供通道。
    • 型別:本地許可權提升和本地帳號;單個命令的遠端執行;遠端命令列直譯器訪問-NetCat;遠端控制GUI-VNC、BO、冰河、灰鴿子;無埠後門(ICMP後門、基於Sniffer非混雜模式的後門、基於Sniffer混雜模式的後門等)。
  • 木馬

    • 木馬是看起來具有某個有用或善意目的,但實際掩蓋著一些隱藏惡意功能的程式。
    • 偽裝技術:命名偽裝、使用軟體包裝工具、攻擊軟體釋出站點、程式碼下毒。
  • 殭屍程式與殭屍網路

    • 殭屍網路是攻擊者出於惡意目的,傳播殭屍程式控制大量主機,並通過一對多的命令與控制通道所組成的網路。
    • 殭屍程式是攻擊者用於一對多控制目標主機的惡意程式碼。
    • 功能:主體功能包括命令與控制模組、傳播模組;輔助功能包含資訊竊取模組、主機控制模組、下載更新模組和防分析檢測模組。
    • 殭屍網路的工作機制:主要包含以下7步,滲透攻擊、加入控制伺服器、動態影射至IRC伺服器、加入IRC通道、監聽命令、接收命令、執行攻擊。

小結:計算機病毒、蠕蟲、特洛伊木馬、後門和殭屍程式都包含攻擊者新增至系統中的新的程式碼程式,都不會替換或修改受害系統的元件。而下面介紹的Rookit是技術更加高超的惡意程式碼形態。

  • Rootkit
    • 隱藏性的惡意程式碼形態,通過修改現有的作業系統軟體,使攻擊者獲得訪問權並隱藏在計算機中。
    • 分類: 使用者模式、核心模式。兩類Rootkit和普通的應用程式級木馬後門之間的位置對比圖如下:

{{uploading-image-175082.png(uploading...)}}

  • 1.3惡意程式碼分析方法
    • 程式碼分析:又稱程式分析,是按需求使用的一定的規則、方法和工具對計算機程式進行分析,以推匯出其程式結構、資料流程和程式行為的處理過程。
    • 惡意程式碼分析技術的方法:
    • 靜態分析:在不實際執行軟體程式碼情況下對惡意程式碼進行自動化或輔助分析,通常包括使用反病毒引擎掃描識別已知的惡意程式碼家族和變種,逆向分析獲取惡意程式碼的關鍵程式資訊、模組構成、內部資料結構和關鍵控制流程。主要技術手段:反病毒軟體掃描、檔案格式識別、字串提取分析、二進位制結構分析、反彙編、反編譯、程式碼結構與邏輯分析、加殼識別和程式碼脫殼。
    • 動態分析:通過在受控環境中執行待分析的目標惡意程式碼,並利用系統、網路、甚至指令層次上的監控技術手段,來獲取目的碼的行為機理和執行結果。主要技術手段:快照比對、系統動態行為監控、網路協議棧監控、沙箱、動態除錯。

2.實踐過程

2.1 實踐一 惡意程式碼檔案型別識別、脫殼與字串提取

對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者,具體操作如下:

(1)使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;

(2)使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;

(3)使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰?

實驗環境:winXP

在cmd中切換到惡意程式所在的目錄,使用file命令檢視 RaDa.exe 的檔案型別,可以看到 RaDa.exe 是一個 Windows PE 可執行檔案,並且有圖形化視窗:

PE32表示這是一個32位的執行在windows作業系統上的程式,GUI表示這個程式是一個有圖形介面的程式,intel 80386表示處理器架構.

  • 使用 PEiD 工具(可在winXPattack的開始點選查詢到),檢視 RaDa.exe 的基本資訊

如圖可以看到檔案的入口點、偏移、檔案型別、EP段、彙編程式以及加殼型別(UPX殼)為:UPX 0.89.6-1.02/1.05-2.90->Markus &Laszlo

  • 使用超級巡警工具對檔案進行脫殼,該工具有這個殼的樣本庫,故可以實現自動脫殼。
  • 使用strings命令,strings RaDa.exestrings RaDa_unpacked.exe分別檢視脫殼前、後的RaDa.exe中可列印的字串。若檢視脫殼之前的,則是一些亂碼;檢視脫殼rada.exe後的檔案RaDa.unpacked.exe可以發現有大量的函式呼叫名(如下圖)。

在脫殼後的檔案中並沒有發現關於作者的任何資訊

  • 使用winxpattack裡的process explorer軟體,檢視程式屬性,找到copyright(版權)發現作者名字Raul siles&David Perze,時間2004年。

2.2 實踐二 分析Crackme程式

在WinXP Attacker虛擬機器中使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其能夠輸出成功資訊。

2.2.1分析crackme1.exe

  • 使用file命令檢視crackme1.exe的檔案型別,可以看出其是32位Windows下的PE檔案,沒有圖形介面,是命令列檔案。
  • 在cmd中直接執行該程式檢視輸出,先猜測該程式帶有一個引數。
  • 使用winxp自帶的IDA pro工具(開始-反彙編-IDA pro free)開啟crackme1.exe,選擇檔案型別為PE。
  • 首先直接檢視程式中的明文字串,發現了兩個測試程式時沒有出現過的字串“I know the secret”、“You know how to speak to programs,Mr Reverse Engineer”。猜測前者為我們需要的口令,後者為口令成功輸入的反饋。
  • 驗證猜想,正確
  • 在IDA pro工具頁面的選單處:點選view——>graphs——>function calls,檢視函式呼叫圖(Function Call)

可以得出結論:程式是用 C 語言寫的,可以發現字串比較函式 strcmp 和輸出函式 fprintf 和 printf ,估計是使用 strcmp 函式來比較口令。那麼關鍵部分就在 sub_401280 函式中。

  • 開啟sub_401280函式的流程圖(方法:首先選中“IDA View-A ”視窗中的00401280,再通過view——>graphs——>flow chart)

cmp [ebo+arg_0],2為判斷程式是否有兩個引數。如在命令列輸入 crackme1.exe 1 ,那麼引數對應的值為argc=2,argv={”crackme1.exe”,”1”}。如果有兩個引數,那麼進行下一步判斷,程式用I know the secret對應的字串和使用者輸入的口令相比較,通過比較的結果反饋口令是否正確。

2.2.2 分析crackme2.exe

  • 對crackme2.exe進行分析,與上述分析步驟crackme1.exe差不多。

*file crackme2.exe

  • 直接使用IDA pro工具來開啟crackme2.exe,可以看到明文字串如下:
  • 再來看函式呼叫圖,發現核心函式還是sub_401280。
  • 主要檢視sub_401280:
  • cmp [ebp+arg_0],2判斷程式引數是否為兩個;通過引數個數的判斷後,接著用strcmp函式對argc裡面的第一個字串,即程式名,和 crackmeplease.exe 進行判斷
  • 通過程式名判斷後,使用者輸入的口令與 I know the secret 判斷。
  • 通過口令判斷後,通過一定規則輸出通過測試的資訊。具體是 unk_403080 中的字串分別與0x42h進行異或運算。

  • 進行測試:

2.2.3 實踐三 樣本分析實踐

分析一個自制惡意程式碼樣本rada,並撰寫報告。

  • 首先使用MD5對該惡意程式進行摘要資訊分析,md5摘要值為caaa6985a43225a0b3add54f44a0d4c7。

  • 開啟Process Explorer軟體對脫殼後的檔案:RaDa_unpacked.exe進行監測,執行RaDa_unpacked.exe,斷開主機網路。程式執行詳細如下:

通過HTTP協議請求 10.10.10.10\RaDa\RaDa_commands.html,連線到目標為10.10.10.10的主機下的一個名為RaDa_commands的網頁,之後又下載和上傳檔案到 C:/RaDa/tmp 。

將檔案 RaDa.exe 複製到了 C:\RaDa\bin 目錄下,(REG-SZ:在登錄檔中,代表一個簡單的文字字串,最常見的一種資料型別)可以看出該惡意程式碼將其自我複製到主機系統盤,並激活了自啟動,還試圖從一個HTML頁面獲取並解析命令,故猜測這應該是一個後門程式。

再往下,starting DDos smurf remote attack,該惡意程式可能對主機實行了DDos拒絕服務攻擊

  • 再往下看可以發現該惡意程式對主機的登錄檔進行了讀寫和刪除操作。

圖中可以看到一些指令:exe在宿主主機中執行指定的命令,get下載,put上傳,screenshot截圖,sleep停止活動一段時間。

wireshark監聽如下圖:

可以看到受害主機(192.168.200.2)向目標主機(10.10.10.10)傳送了大量資料包,但是追蹤其tcp資料流並未發現任何相關資訊

  • 回到IDA工具檢視脫殼後的檔案,(進入 Strings 對話方塊,在Type 右鍵點選Setup,設定型別為 Unicode。),也可以找到作者資訊
  • 找到一個 IP 地址,雙擊定位:猜測程式被執行後訪問了這個地址。
  • 根據上圖ip地址往下,發現得到RaDa_commands.html。尋找這個字串對應的函式sub_404FB0,(雙擊sub_404FB0)進入這個函式,看黃色部分的彙編程式碼,得知是被拷貝到dword_40C030這個變數中。

****由上圖找到dword_40C030變數對應的函式sub_4052C0 ,開啟其Call Graph檢視(方法與實踐二里的相同,在選單view處)。這裡我們看到判斷了三個網段分別為192.168.、172.16.、10.,(三個私有網段,確保伺服器在私有網段中,然後到伺服器去取命令檔案)

回答問題:
(1)提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊。

MD5摘要資訊:caaa6985a43225a0b3add54f44a0d4c7
是一個 Windows PE 可執行檔案
使用了UPX加殼工具進行了加殼處理

(2)找出並解釋這個二進位制檔案的目的。

通過上面的分析可知,連線網際網路時,該惡意程式就會通過http請求連線到指定主機,進行接受攻擊者指令操作,並且攻擊者可以完全控制該系統,所以這應該是一個後門程式。

(3)識別並說明這個二進位制檔案所具有的不同特性。

該程式啟動之後將自己複製到c盤之中,並且每過一段時間就會嘗試與10.10.10.10建立tcp連線。

(4)識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術。

使用了UPX加殼工具進行了加殼處理

(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由。

猜測是後門程式,因為該惡意程式碼不具有自主傳播模組,故不屬於病毒和蠕蟲,也並未進行偽裝,故不是木馬,並且該程式執行需攻擊者遠端傳送指令。

(6)給出過去已有的具有相似功能的其他工具。

Bobax——2004也是使用HTTP協議從指定的伺服器下載命令檔案,然後解析並執行其中的指令。

(7)可能調查出這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?

可以,通過Process Explorer軟體對脫殼後的檔案:RaDa_unpacked.exe進行監測,在strings視窗發現是Raul siles和David Perze於2004年編寫的。(見實踐一最後)

實踐四 Windows 2000系統被攻破並加入殭屍網路

任務:分析的資料來源是用Snort工具收集的蜜罐主機5天的網路資料來源,並通過編輯去除了一些不相關的流量並將其組合到了單獨的一個二進位制網路日誌檔案中,同時IP地址和其他特定敏感資訊都已經被混淆以隱藏蜜罐主機的實際身份和位置。回答下列問題:

1、IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?

IRC是Internet Relay Chat的英文縮寫,中文一般稱為網際網路中繼聊天。IRC的工作原理:您只要在自己的PC上執行客戶端軟體,然後通過因特網以IRC協議連線到一臺IRC伺服器上即可。
特點是:速度非常快,聊天時幾乎沒有延遲的現象,並且只佔用很小的頻寬資源。
-IRC是一種公開的協議,採用TCP和SSL協議。一個IRC伺服器可以連線其他的IRC伺服器以擴充套件為一個IRC網路。
-IRC使用者通過客戶端軟體和伺服器相連。IRC是一個分散式的客戶端/伺服器結構。通過連線到一個IRC伺服器,我們可以訪問這個伺服器以及它所連線的其他伺服器上的頻道。IRC頻道存在於一個IRC伺服器上。一個頻道類似於一個聊天室,頻道名稱必須以#符號開始,例如#irchelp。IRC機器人是一些執行在後臺或者伺服器上的程式,通過登陸某一個頻道,分析接受到的內容並做出相應的動作。
IRC伺服器明文傳輸通常在6667埠監聽,也會使用6660—6669埠。SSL加密傳輸在6697埠。

2、殭屍網路是什麼?殭屍網路通常用於什麼?

殭屍網路是攻擊者出於惡意目的,傳播殭屍程式控制大量主機,並通過一對多的命令與控制通道所組成的網路。
殭屍網路通常用來發起大規模的網路攻擊,如分散式拒絕服務攻擊(DDoS)、海量垃圾郵件、竊取祕密、濫用資源、殭屍網路挖礦等。同時黑客控制的這些計算機所儲存的資訊也都可被黑客隨意“取用”。

3、蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?

IRC伺服器通常在6667埠監聽,故只需知道蜜罐主機發出的嘗試連線6667埠的資料包即可,連線時使用的是TCP三次握手。使用“ip.src == 172.16.134.191 and tcp.dstport == 6667” 過濾規則進行查詢,發現蜜罐主機與5臺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為伺服器的殭屍網路?

  • 使用kali環境,sudo apt install tcpflow
  • 首先使用tcpflow分流(篩選指定host與埠),命令tcpflow -r botnet_pcap—_file.dat "host 209.196.44.172 and port 6667",產生了三個檔案,<209.196.044.172.06667-172.016.134.191.01152>、<172.016.134.191.01152-209.196.044.172.06667>、<report.xml>(在桌面出現)
  • 先看一下report.xml檔案(直接點選即可),可以看到如下圖的內容,包括上述雙方的ip地址,埠,mac地址,通訊時間等等。
  • 因為我們要找的是訪問209.196.44.172的主機,故著重看一下第一個檔案。在當前主機進入到IRC的頻道之後,頻道會將當前頻道中所有的主機的資訊都發送過來,我們可以從其中的資料包中計算當前頻道共有多少主機。這個計算分為兩部分。首先我們計算在當前主機加入IRC時刻,IRC中主機的個數。然後我們在計算截至結束嗅探的時候的不斷有主機加入和退出IRC頻道,我們在補充上這個過程中的主機個數。程式碼如下,其中的test.txt檔案是複製的<209.196.044.172.06667-172.016.134.191.01152>檔案,輸入如下:
  • 再輸入: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

5、那些IP地址被用於攻擊蜜罐主機?

  • 因為蜜罐的特殊性,只要是進入蜜罐的流量都應該被認為是攻擊。所以首先明確被攻擊的埠。使用指令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查詢埠並輸出到1.txt中,其中tcpdump -nn指定將每個監聽到的資料包中的域名轉換成IP、埠從應用名稱轉換成埠號後顯示;grep -v排除指定字串;cut -d '.' -f 10擷取以'.'為分隔符的第 10 列; uniq 命令用於檢查及刪除文字檔案中重複出現的行列; wc -l 用於統計檔案的行數。

如圖所示,查詢到148個被攻擊的埠。其中cut -d是指定欄位的分隔符,uniq命令用於檢查及刪除文字檔案中重複出現的行列,一般與sort命令結合使用。

接著使用如下指令找出所有的可能連線的主機的IP地址。這個指令的作用就是將連線IP地址輸出2.txt中: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 其中 awk -F 就是指定分隔符,可指定一個或多個, print 後面做字串的拼接。

產生了兩個檔案1.txt與2.txt在kali資料夾裡。

6、攻擊者嘗試攻擊了那些安全漏洞?****7、那些攻擊成功了?是如何成功的?

  • 攻擊了哪些安全漏洞首先要了解攻擊了哪些埠,使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令先查一下網路流分佈情況。我們發現大部分都是TCP包,有一部分UDP包,所以我們首先應該篩選出響應的TCP埠和UDP埠。
  • 利用下面的指令篩選出蜜罐主機相應的 TCP 埠。輸出可以看到 TCP 響應埠為135(rpc),139(netbios-ssn),25(smtp)445(smb),4899(radmin),80(http)。

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 ,同樣可以篩選出 udp 埠137(netbios-ns)
    tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
  • 接下來逐個分析上面的埠,首先是udp 137號埠,這個是在區域網中提供計算機的IP地址查詢服務,處於自動開放狀態,所以訪問這個埠是 NetBIOS 查點。
    udp.port==137
  • tcp 135號埠和25號埠,我們看到只是進行了連線,但是是沒有資料的互動的(len=0),所以這攻擊者可能是對這兩個埠進行了connect掃描。
    tcp.port==135 || tcp.port==25
  • 然後看TCP 80埠,首先利用Wireshark進行篩選tcp.dstport==80 && ip.dst == 172.16.134.191,發現連線最多的就是24.197.194.106這個IP地址,他的行為就是不停用指令碼攻擊IIS伺服器的漏洞,從而獲取系統許可權.因為用的指令碼,所以才會有這麼多記錄。
  • 然後是210.22.204.101訪問的80埠,可以看到超多的C,可能攻擊者是想通過緩衝區溢位攻擊來獲得一個命令列。
  • 最後一個訪問80埠的是218.25.147.83,看到這麼多N以為是緩衝區溢位攻擊,但是繼續往下看會看到c:\notworm,通過百度可以發現這是一個紅色程式碼蠕蟲攻擊。
  • 我們通過蜜罐主機80埠向外的流量進行分析,發現蜜罐主機做的幾次迴應均為一個iis伺服器的預設頁面http/1.1,所以80埠的這些攻擊均失敗。
    tcp.srcport==80 && ip.src== 172.16.134.191 && http
  • 接下來是TCP 139號埠。雖然有很多連線到這個埠的,但是基本都是一樣的,大部分都是連線,然後很多空會話,同樣這個也沒有成功,這個應該是個SMB查點。
    tcp.dstport==139&& ip.dst== 172.16.134.191
  • 下面分析445埠。查詢字串後可以發現一個PSEXESVC.EXE字串,同時你在Wireshark中也能找到,是由61.111.101.78發起的,通過對這種字串的搜尋,發現這是一種Dv1dr32蠕蟲,這種蠕蟲正是通過IRC進行通訊。通過找出口流量,發現每個IP地址連入的連線都有響應的迴應,並且返回資訊中含有\PIPE\ntsvcs,通過搜尋可知,這是一個遠端呼叫,所以攻擊者肯定是獲得了許可權,因此這個攻擊成功的。
    tcp.dstport==445&& ip.dst== 172.16.134.191
  • 最後還剩一個TCP 4899埠。這個埠是一個遠端控制軟體radmin服務端監聽埠,這個軟體不是木馬,應該是上面攻擊成功後上傳的這個軟體方便控制。

3.學習中遇到的問題及解決

問題1:通過Process Explorer軟體檢視脫殼後的檔案RaDa,未成功。

解決:RaDa.exe和RaDa_unpacked.exe注意區分!不要搞錯了。

4.學習感想和體會

這周實踐內容很複雜,需要耐心慢慢來。