本次做業屬於哪一個課程 | 網絡攻防實踐 |
---|---|
這個做業要求在哪裏 | 惡意代碼基礎知識和分析方法 |
我在這個課程的目標是 | 學習網絡攻防相關技術和原理 |
這個做業在哪一個具體方面幫助我實現目標 | 學習惡意代碼安全攻防的相關知識 |
惡意代碼: | 指的是使計算機按照攻擊者意圖執行以達到惡意目標的指令集。 |
---|---|
分類: | 計算機病毒、蠕蟲、惡意移動代碼、後門、特洛伊木馬、僵屍網絡、內核套件。 |
彈頭: | 獲取計算機的訪問權限 |
---|---|
傳播引擎: | 完成蠕蟲樣本的複製傳播 |
目標選擇算法和掃描引擎: | 一旦蠕蟲在受害計算機中運行,目標選擇算法開始尋找新的攻擊目標,而後利用掃描引擎掃描每個由目標選擇算法肯定的地址,確認其是否能夠被攻擊。 |
有效載荷: | 附加的攻擊代碼。 |
6.3僵屍網絡的功能結構html
6.4僵屍網絡的命令與控制機制ios
7.1 Rootkit定義算法
7.2用戶模式Rootkitshell
7.3內核模式Rootkitwindows
利用對內核的操做,內核模式Rootkit能夠修改內核,完全地隱藏攻擊者在計算機上的活動,大多數內核模式Rootkit採用以下技術手段:安全
8.1惡意代碼分析技術概述服務器
8.2惡意代碼分析環境網絡
8.3惡意代碼靜態分析技術tcp
8.4惡意代碼動態分析技術函數
任務:對提供的rada惡意代碼樣本(U盤或FTP/materials/course9下載),在WinXP_Attacker虛擬機中進行文件類型識別,脫殼與字符串提取,以得到rada惡意代碼的編寫做者。
步驟:
實驗環境:WinXP Attacker虛擬機(安裝有cygwin以及基本的脫殼軟件和字符串提取工具)。
查看RaDa.exe的文件類型:file RaDa.exe
,可知這是一個32位Windows PE可執行文件,而且有圖形化窗口。
使用PEiD工具(查殼)來查看加殼的類型。UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
【版本爲0.89.6的UPX殼(壓縮殼,更多內容參考UPX殼分析)】
查看RaDa.exe中可打印字符串:strings RaDa.exe
,都是亂碼。
進行脫殼:超級巡警
,脫完以後輸出爲RaDa_unpacked.exe
。
進行分析啦:打開IDA Pro Free
選擇脫殼以後的文件。
能夠看到做者的信息DataRescue sa/nv,郵箱,程序由MSVB編寫,函數調用,彙編代碼。
任務:在WinXP Attacker虛擬機中使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其可以輸出成功信息。
實驗環境:裝有IDA Pro的WinXP Attacker虛擬機。下面兩個程序都是靜態分析(利用IDA進行動態分析我不會啊)。
步驟1:
crackme1.exe
,猜想參數執行,猜想這個程序的輸入是一個參數。IDA Pro
,打開Strings
窗口查看該程序中出現的字符串,發現兩種反饋信息I think you are missing something.
和 Pardon? What did you say?
猜想:第一個是參數不對的返回狀況,第二個是給的參數數量對了,繼續進行分析。strcmp
和輸出函數fprintf
和printf
。分析sub_401280
函數。strcmp
,比較輸入的字符串與I know the secret
進行比較,若是不匹配就輸出Pardon? What did you say?
。若是正確,輸出You know how to speak to programs, Mr. Reverse-Engineer。
I know the secret
,結果正確步驟2:
IDA Pro
分析crackme2.exe
,照舊打開Strings
窗口查看該程序中出現的字符串。call function
,咱們能夠看到字符串比較函數strcmp
和輸出函數fprintf
以及輸入函數等。那麼此時應該尋找,sub_401280
這個函數了。2
,若是不是,就返回I think you are missing something。
,ebp+arg_4
,不是上面的ebp+arg_0
了。那就是說咱們這裏匹配的不是執行參數了,那應該是什麼呢?看arg_4
和arg_0
相差了4
(變量定義的時候dword ptr 8
和dword ptr 0C
),那麼arg_0
表明的是第一個參數,其實arg_4
表明的就是第0
個參數,也就是程序名。copy crackme2.exe crackmeplease.exe
給程序改個名字,而後輸入crackmeplease.exe "I know the secret"
發現輸出了一個字符串We have a little secret: Chocolate
xor eax 42h
,這個指令是將eax
與0x42
異或,網上看有個指令是add eax,offset unk_403080。
那麼就很簡單了,後面的操做就是將unk_403080
中的字符逐個與0x42
進行異或運算。能夠驗證0x15 xor 0x42
對應的ascii碼是W
。(此處借鑑了建國的分析進行學習)任務:如今你做爲一名安全事件處理者的任務(若是你接受的話)就是深刻分析這個二進制文件,並得到儘量多的信息,包括它是如何工做的,它的目的以及具備的能力,最爲重要的,請展現你獲取全部信息所採起的惡意代碼分析技術。
步驟:
md5sum RaDa.exe
指令獲得其md5摘要值爲caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
識別出這是32位PE文件,而且仍是個GUI文件RaDa_unpacked.exe
。(進入 Strings
對話框,在 Type
右鍵點擊 Setup
,設置類型爲 Unicode
。)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年編寫的
任務:數據源是Snort收集的蜜罐主機5天的網絡數據源,並去除了一些不相關的流量,同時IP地址和其餘敏感信息被混淆。回答下列問題
因特網中繼聊天(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攻擊、發送垃圾郵件、 監聽用戶敏感信息、記錄鍵盤輸入信息、 擴散新的惡意軟件 和 僞造點擊量,騙取獎金或操控網上投票和遊戲,同時黑客控制的這些計算機所保存的信息也均可被黑客隨意「取用」。
經過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
首先先使用命令tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'
拉取209.196.44.172
與172.016.134.191
之間的全部的 IRC 數據包。這裏通常須要裝一下sudo apt-get install tcpflow
(我又碰到kali出問題了,在問題部分詳細講)
得到三個文件,172.016.134.191.01152-209.196.044.172.06667
、209.196.044.172.06667-172.016.134.191.01152
和report.xml
,report.xml
包含其餘兩個文件的相關信息:上述雙方的ip地址,端口,mac地址,通訊時間等等。
首先咱們計算在當前主機加入IRC時刻,IRC中主機的個數,使用的PY代碼以下所述,主機的個數是 3457。這僅僅是第一步的計算。而後咱們在計算截至結束嗅探的時候的不斷有主機加入和退出IRC頻道,咱們在補充上這個過程當中的主機個數,共計 3608個。具體使用的代碼以下:
import re pattern = re.compile( r':irc5.aol.com 353 rgdiuggac @(.*?):(.*?)\n', re.S) pattern2 = re.compile(r':(.*?)!~', re.S) dict = {} with open("test.txt", 'r') as fp: thisline = fp.readline() while thisline: if thisline.startswith(":irc5.aol.com 353 rgdiuggac"): items = re.findall(pattern, thisline) string = items[0][1] splitstring = string.split(" ") for item in splitstring: dict[item] = 1 else: items = re.findall(pattern2, thisline) print(items) if len(items) == 1: dict[items[0]] = 1 thisline = fp.readline() print(len(dict) - 1)
首先,咱們認爲進入蜜罐的流量都是攻擊。使用如下命令查找端口並輸出到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
(tcpdump -nn: 指定將每一個監聽到的數據包中的域名轉換成IP、端口從應用名稱轉換成端口號後顯示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'爲分隔符的第 10 列;uniq命令用於檢查及刪除文本文件中重複出現的行列; wc -l 用於統計文件的行數)
能夠看到共有148個端口被攻擊了
接着使用以下指令找出全部的可能鏈接的主機的 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 後面作字符串的拼接。)能夠看到一共有165個主機被用於蜜罐入侵
要了解攻擊了哪些安全漏洞首先要了解攻擊了哪些端口,使用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
(0x12表明有回覆)
將協議部分改成 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 查點了。接下來看 tcp 135 號端口和25號端口,咱們看到只是進行了鏈接,可是是沒有數據的交互的,因此這攻擊者多是對這兩個端口進行了 connect 掃描。
而後查看 TCP 80 端口,首先利用 Wireshark 進行篩選tcp.dstport==80 && ip.dst == 172.16.134.191
首先鏈接最多的就是 24.197.194.106 這個IP,他的行爲就是不停的用腳本在攻擊 IIS 服務器的漏洞,從而獲取系統權限。
接下來是210.22.204.101訪問的80端口,攻擊者是想經過緩衝區溢出攻擊來得到一個命令行了
下一個訪問 80 端口的是218.25.147.83,這裏會看到c:\notworm,說明這是一個蠕蟲攻擊。上網搜索發現是紅色代碼(red code)病毒
其他的 ip 地址均爲正常訪問蜜罐.最後看對80端口有沒有攻擊成功了,咱們經過蜜罐主機80端口向外的流量進行分析,發現蜜罐主機作的迴應均爲一個 iis 服務器的默認頁面,因此80端口的這些攻擊均失敗。
而後關注TCP 139號端口。這個也比較簡單,雖然有不少主機鏈接到這個端口的,可是基本都是同樣的,大部分都是鏈接,而後不少空會話,一樣也沒有成功,因此應該是 SMB 查點。
而後分析TCP 445端口。這個端口鏈接很是多,能夠看到許多 \samr, \srvsvc 字符串,查詢字符串後很容易發現一個PSEXESVC.EXE字符串,是由61.111.101.78發起的,經過對這種字符串的搜索,發現這是一種Dv1dr32蠕蟲,這種蠕蟲正是經過IRC進行通訊。
繼續往下看,發現該 ip 地址與蜜罐創建了會話,說明攻擊成功
還有就是 ip 地址爲210.22.204.101的主機進行的攻擊,根據字符串推測應該是使用了LAN Manager口令猜想,一樣創建了會話,攻擊成功
其他的針對 445 端口的數據流量都是一些普通查點,就不一一贅述了最後一個TCP 4899端口。只有 IP 地址 210.22.204.101 訪問過。上網搜索能夠查到 4899 端口是一個遠程控制軟件 radmin 服務端監聽端口,這個軟件不是木馬,應該是上面攻擊成功後上傳這個軟件方便控制。
經過上面的分析可知,成功的攻擊發起者是210.22.204.101
(Dv1dr32 蠕蟲)和 61.111.101.78
( LAN Manager 口令猜想)
問題1:kali又雙叒斷網!!!!!!!!!!!!!
問題1解決方案1:恢復eth0這塊網卡罷工問題,不太管用eth0罷工 Kali Linux沒法訪問網絡的問題
問題1解決方案2:更換DNS,無論用
問題1解決方案3:開啓VMware NET Service服務,原本看着服務是已經處於開啓狀態,覺得又沒戲了,幸虧細心點擊了重啓,成了···
問題2:tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'
提示找不到文件
問題2解決方案1:先借鑑了於淼的博客,給文件更名,可是仍是不行。
問題2解決方案2:靈光一現,把文件類型名也加進去,tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
成了~
啥也不說了,kali你毀我青春。