說明:整個分析花費了我很長的時間,每一個點基本都詳細分析了,篇幅較長。php
本次做業屬於哪一個課程 | 網絡攻防實踐 |
---|---|
這個做業要求在哪裏 | 惡意代碼基礎知識和分析方法 |
我在這個課程的目標是 | 學習網絡攻防相關技術和原理 |
這個做業在哪一個具體方面幫助我實現目標 | 學習惡意代碼安全攻防的相關知識 |
第九章的內容比較複雜,結構性不強,我主要從兩個方面介紹,惡意代碼基礎知識和惡意代碼分析技術。其中分不少小點,如惡意代碼基礎知識分爲計算機病毒、蠕蟲、RootKit等,而惡意代碼分析技術分爲分析環境、分析方法、反彙編等知識。html
- 惡意代碼基礎知識
惡意代碼簡單介紹
計算機病毒
網絡蠕蟲
後門與木馬
殭屍程序與僵屍網絡
Rootkit- 惡意代碼分析技術
惡意代碼分析基礎
惡意代碼分析環境
惡意代碼靜態分析
惡意代碼動態分析
定義:Malware is a set of instructions that run on your computer and make your system do something that an attacker wants it to do.linux
指令集合:二進制執行文件、腳本語言代碼、宏代碼、寄生在文件或者啓動扇區的指令流。ios
目的:炫耀、遠程控制被攻擊主機、知足施跳板攻擊或進一步傳播惡意代碼、竊取私人信息或機密信息、竊取計算存儲帶寬資源、拒絕服務等。web
類型:分爲計算機病毒、蠕蟲、惡意移動代碼、後門、特洛伊木馬、殭屍程序、Rootkit等。這裏就不具體講各個的定義或者是什麼了,下面具體分開具體講。給出一個惡意代碼的分類依據。算法
類別 | 實例 |
---|---|
不感染的依附性惡意代碼 | 特洛伊木馬、邏輯炸彈 |
不感染的獨立性惡意代碼 | 點滴器、繁殖器 |
可感染的依附性惡意代碼 | 病毒 |
可感染的獨立性惡意代碼 | 蠕蟲 |
感染可執行文件(最爲廣泛的方式):前綴感染機制(病毒將自身複製到宿主程序的始端)、後綴感染機制(病毒將自身複製到宿主程序的末端)、插入感染機制(病毒在感染宿主程序時,病毒代碼放在宿主程序的中間)。
shell
感染引導扇區:經過BIOS定位磁盤的主引導區,運行存儲的主引導記錄,接着從分區表中找到第一個活動分區,讀取並執行這個活動分區的分區引導記錄,而分區引導記錄負責裝載操做系統。windows
感染數據文件(支持宏的數據文件):將自身以宏指令的方式複製到數據文件中,當被感染的數據文件被應用程序打開時,將自動執行宏病毒體,完成病毒的引導。安全
inittab
、rc.d/init.d
文件。定義:隱藏性惡意代碼形態,經過修改現有的操做系統軟件,使攻擊者得到訪問權並隱藏在計算機中。換句話說,就是root權限的kit工具包。服務器
用戶模式Rootkit:惡意修改操做系統在用戶模式下的程序/代碼,達到隱藏目的(木馬化操做系統用戶模式應用程序)。主要分爲五種類型:提供後門訪問的二進制替換程序、隱藏攻擊者的二進制替換程序、用於隱藏但不替換的二進制程序、一些零散工具如網絡嗅探器、安裝腳本。
內核模式Rootkit:惡意修改操做系統內核,從而達到更深的隱藏和更強的隱蔽性(對內核組件的惡意修改和木馬化)。主要有以下方式:文件和目錄隱藏、進程隱藏、網絡端口隱藏、混雜模式隱藏、改變執行方向、設備截取和控制。
Linux內核Rootkit:參考Linux Rootkit Learning,這篇博文講的很好!。下圖所示是利用LKM機制實現Linux內核模式Rootkit,LKM就是可裝載內核模塊。下圖主要是經過insmod命令插入惡意內核模塊,而後進行系統調用表的修改。
採用虛擬化技術構建惡意代碼分析環境:這是通常狀況下咱們使用的環境,其實也沒什麼好說的,以前的博客都已經詳細說明了。主要重點是在進行惡意代碼分析時,必定要保證主機和虛擬機的隔離,防止主機收到傷害,同時最好讓你的整個主機也隔離網絡鏈接,不要玩火,人人有責!!!
用於研究的惡意代碼自動分析環境:專業人員使用的,分爲靜態分析機、動態分析機、網絡分析機和綜合分析機。
分析方法 | 目的 | 使用工具 | 難度 |
---|---|---|---|
反病毒軟件掃描 | 標識已知惡意代碼 | 反病毒引擎,VirusTotal | 低 |
文件格式識別 | 肯定攻擊平臺和類型 | file,peid,FileAnalyzer | 低 |
字符串提取 | 尋找惡意代碼分析線索 | strings | 低 |
二進制結構分析 | 初步瞭解二進制文件結構 | binutils (nm, objdump) | 中 |
反彙編 | 二進制代碼->彙編代碼 | IDA Pro,GDB,VC | 中高 |
反編譯 | 彙編代碼->高級語言 | REC,DCC,JAD | 中高 |
代碼結構與邏輯分析 | 分析二進制代碼組,理解二進制代碼邏輯結構 | IDA Pro,Ollydbg | 高 |
加殼識別和代碼脫殼 | 識別是否加殼及類型、對抗代碼混淆恢復原始代碼 | UPX,VMUnpacker,手工 | 高 |
nm
指令在可執行文件中查找symbols
重要元素。objdump
主要功能有從可執行文件中限制不一樣類型的信息、編譯器類型、代碼段數據段位置、反彙編。分析方法 | 目的 | 使用工具 | 難度 |
---|---|---|---|
快照比對 | 獲取惡意代碼行爲結果 | FileSnap,RegSnap,完美卸載 | 低 |
動態行爲監控 | 實時監控惡意代碼動態行爲軌跡 | Filemon,Regmon,Process Explorer,lsof | 中 |
網絡監控 | 分析惡意代碼網絡監聽端口及發起網絡會話 | Fport, lsof,TDImon,ifconfig,tcpdump | 中 |
沙盒 | 在受控環境下進行完整的惡意代碼動態行爲監控與分析 | Norman Sandbox,CWSandbox,FVM Sandbox | 中高 |
動態跟蹤調試 | 單步調試惡意代碼程序,理解程序結構和邏輯 | Ollydbg,IDAPro,gdb,SoftICE,systrace | 高 |
任務:對提供的rada惡意代碼樣本(U盤或FTP/materials/course9下載),在WinXP_Attacker虛擬機中進行文件類型識別,脫殼與字符串提取,以得到rada惡意代碼的編寫做者。
Solution
重要說明:在進行靜態分析的時候,請務必斷開與物理機的網絡鏈接,最好也斷開物理機與外部網絡的鏈接,即便rada惡意代碼並無惡意行爲。
實驗環境:WinXP Attacker虛擬機(安裝有cygwin以及基本的脫殼軟件和字符串提取工具)。
首先利用file RaDa.exe
命令查看RaDa.exe
的文件類型,可知這是一個32位Windows PE可執行文件,而且有圖形化窗口。
下面來看看有沒有加殼,下面使用PEiD工具(查殼)來查看加殼的類型。在這裏咱們能夠看到這個是一個版本爲0.89.6的UPX殼(壓縮殼,更多內容參考UPX殼分析)。還能夠看到文件的入口點、EP段、偏移、文件類型等信息。
下面用strings RaDa.exe
查看RaDa.exe中可打印字符串,發現都是亂碼,這也驗證了這是一個加殼程序,因此下一步是咱們要進行脫殼。
咱們用超級巡警這個軟件進行脫殼,這裏也識別出了是一個UPX殼,這個壓縮殼仍是比較容易脫,脫完以後輸出爲RaDa_unpacked.exe
。自動脫殼實在是無聊,我簡直是工具人,那麼找個帖子手動脫殼吧,掌握ESP定律,參考這個帖子新手脫殼必看基礎教程,做業寫不完了,先不拓展了,繼續。
脫殼結束,咱們就能夠進行分析啦!打開IDA Pro Free
選擇脫殼以後的文件,一直next就行,能夠看到以下信息。首先是做者的信息DataRescue sa/nv
,甚至是郵箱都一目瞭然。同時這個程序是由MSVB編寫的。繼續往下是一些函數調用,甚至彙編代碼都一目瞭然。到這裏本次實驗結束,結束以後就把內容打包,文件刪除吧。
任務:在WinXP Attacker虛擬機中使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其可以輸出成功信息。
實驗環境:裝有IDA Pro的WinXP Attacker虛擬機。下面兩個程序都是靜態分析(利用IDA進行動態分析我不會啊)。
首先分析crackme1.exe
。對crackme1.exe
進行執行,猜想參數執行,能夠發現一個參數輸入與其餘的參數輸入獲得的輸出明顯不同,因此能夠猜想這個程序的輸入是一個參數。
接下來利用IDA Pro打開這個程序分析,咱們打開經過Strings窗口能夠查看該程序中出現的字符串,咱們發現了前面的兩種反饋信息,I think you are missing something.
和Pardon? What did you say?
,這兩個咱們以前已經見過了,很容易猜想,第一個是參數不對的返回狀況,第二個是給的參數數量對了,可是具體的內容不對。還有兩個咱們不知道啥意思,因此咱們要繼續進行分析。同時,在這裏咱們應該要有一種敏感,就是看到字符串,那麼字符串操做函數就要回想在你腦子裏。
接下來看函數調用圖(Function Call),上面說了,要找字符串操做相關的函數,以及輸出函數,由於咱們測試程序的時候明顯是有輸出的。若是你能理解,那麼你確定找的是下圖部分,能夠看到字符串比較函數strcmp
和輸出函數fprintf
和printf
。那麼顯而易見,sub_401280
這個函數就顯得相當重要了。
下面咱們就看這個函數的彙編代碼了,其實彙編我也不大會,不過不打緊,能看懂基本操做就好了。打開這個函數,你就能夠看到push
、sub
、move
等操做,這些都是基本的彙編操做,想補如下就去網上稍微看看,我就不展開了,直入主題,首先push
了ebp入棧,而後比較最後一個cmp
比較函數參數是否是2(這裏爲何是2?去學C吧)。
下面就是比較了,很容易看到左邊就是函數參數不爲2的狀況(不爲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進行分析,不猜想了。首先仍是看明文字符串,有五個,本身先有個印象就好,下面咱們仍是要尋找字符串操做函數
咱們首先仍是打開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個參數,也就是程序名(這裏可能又有人要問爲何是4,32位平臺堆棧指針每次4字節變化)。其實下面是能夠驗證的,由於在下面進行第一個參數匹配的時候先執行了add eax, 4
指令,也就是地址變回去了。
下面就是判斷失敗的輸出了。判斷成功的輸出,咱們能夠看到對第一個參數進行了匹配,那麼這個應該就是咱們的第1個參數應該輸入的值了。同時下面還給出了輸入第一個參數不對的狀況。
分析了這麼多,好像是分析完了,因而咱們就去測試,首先呢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
。至此分析惡意代碼樣本實驗結束。
任務:如今你做爲一名安全事件處理者的任務(若是你接受的話)就是深刻分析這個二進制文件,並得到儘量多的信息,包括它是如何工做的,它的目的以及具備的能力,最爲重要的,請展現你獲取全部信息所採起的惡意代碼分析技術。
拿到一個程序第一步咱們應該是幹嗎,固然是打開他,在打開他以前,那這是一個惡意軟件,打開以前咱們至少要打開監控工具吧。這也就是咱們一般說的動態分析。
首先打開Filemon(文件),Regmon(註冊表),Wireshark(網絡)三個軟件進行監測。這個時候能夠啓動這個惡意軟件了。(軟件在網上找的,古老)
觀察Filemon咱們能夠看到程序文件RaDa.exe
複製到了C:\RaDa\bin
目錄下,而且新建了temp
目錄。
繼續觀察Regmon,咱們能夠看到進行了不少註冊表的操做,其中其中有一個時在自啓動項裏面加入了RaDa: C:\RaDa\bin\RaDa.exe
。
繼續看Wireshark給咱們的結果,時不時的訪問10.10.10.10
,並且是80端口,估計是訪問某個html頁面,這個我也沒看懂,可是這個惡意軟件確定是和網絡有關的無疑了。動態分析給咱們的信息是在太少了,只能靜態分析了。
下面就是靜態分析了。首先準備工做一鼓作氣:摘要
、file
、strings
,脫殼
。
利用md5sum RaDa.exe
指令獲得其md5摘要值爲caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
識別出這是32位PE文件,而且仍是個GUI文件,當時打開怎麼沒反應,難道是要參數?同時這是一個加殼文件,能夠用strings RaDa.exe
輸出看是否是所有亂碼。
下面咱們超級巡警進行脫殼,這是一個UPX殼,而且成功脫殼。
脫殼以後就是利用IDA Pro進行分析了。那麼按照以前靜態分析的套路,咱們首先就應該看字符串。
首先你應該把Type改爲unicode
類型,不出意外你確定會看到下列這些字符串。看下面幾種字符串,首先第一張圖明顯就是命令行參數了,能夠本身逐個試一下,看看都有什麼含義。第二張圖咱們看到是一個版本做者的字符串。第三張圖能夠看到是一個註冊表的字符串,可是這裏有兩個,還有一個VMware tools
值得咱們注意。最後一張圖的字符串時RaDa_commands.html
,很明顯,這個應該就是咱們以前進行訪問的那個html網頁了。看明文字符串能帶給咱們不少信息,篩選重要的字符串對於咱們分析來講相當重要。
字符串看完下一步咱們就看彙編代碼邏輯了。首先咱們仍是看命令行參數的代碼邏輯。咱們能夠看到命令行參數都在sub_405E40
這個函數中,這個函數應該就是處理命令行參數的。最下面給出每一個命令行參數的詳細解釋,我也沒有一個一個分析。
參數 | 做用 |
---|---|
--verbose |
顯示Starting DDoS Smurf remote attack |
--visible |
決定在獲取html文件時,IE窗口是否可見 |
--server |
指定命令文件控制服務器的ip地址、訪問協議及目錄等,默認是http://.10/RaDa |
--commands |
指定命令文件,默認是RaDa_commands.html |
--cgipath |
指定服務器上cgi文件的根目錄,默認是cgi-bin |
--cgiget |
指定負責文件上傳的cgi腳本,默認是upload.cgi |
--cgiput |
指定負責文件下載的cgi腳本,默認是download.cgi |
--tmpdir |
指定臨時文件夾的位置,默認是C:\RaDa\tmp |
--period |
指定兩次向服務器請求命令文件的時間間隔,默認是60秒 |
--cycles |
指定多少次向服務器請求命令文件後退出,默認是0(沒有限制) |
--help |
輸出版權信息 |
--gui |
使用該參數會使樣本出現一個GUI窗口 |
--installdir |
指定樣本的安裝路徑,默認是C:\RaDa\bin |
--noinstall |
使用該參數,樣本將不會安裝、也不會添加註冊表 |
--uninstall |
卸載樣本 |
--authors |
若是確認不是在VMware的虛擬機中運行,則顯示樣本的做者;不然顯示參數不存在 |
繼續根據線索分析,咱們知道RaDa_commands.html
這個字符串極其重要,由於咱們看到有網絡訪問,那麼咱們就去尋找這個字符串對應的函數了。首先咱們確定很簡單的能尋找到這個字符串對應的函數是sub_404FB0
,咱們進入這個函數,看黃色部分的彙編代碼,很容易知道他是被拷貝到dword_40C030
這個變量中了。還能看到不少其餘的字符串拷貝(這些字符串就是默認的一些值)。
那麼咱們確定也很是容易找到這個dword_40C030
變量對應的函數了(鼠標放在上面就有了),也就是函數sub_4052C0
,找到這個函數,而且打開其Call Graph方便查看。這裏咱們看到判斷了三個網段分別爲192.168.
、172.16.
、10.
,很明顯,這是三個私有網段,也就是說確保服務器在私有網段中,而後到服務器去取命令文件。
有命令文件就必定有命令,那麼下面就是一些具體的命令以及其功能。其實sleep應該是咱們以前在作動態分析的時候最能感知的。
命令 | 功能 |
---|---|
exe |
在宿主主機中執行指定的命令 |
put |
將宿主主機中的指定文件上傳到服務器 |
get |
將服務器中的指定文件下載到宿主主機中 |
screenshot |
截取宿主主機的屏幕並保存到tmp文件夾 |
sleep |
中止活動一段時間 |
最後一部分分析,就是關於咱們找到的字符串中有Vmware Tools
,因此咱們猜想這個程序是否是對虛擬機有所檢測(仍是要說一下字符串對咱們的分析來講相當重要)。
首先咱們找到該字符串對應的函數sub_404FB0
,在這個函數中,這個字符串被拷貝到變量dword_40C070
,繼續尋找這個變量對應的函數,找到是sub_40AAA0
。接下來咱們主要看看這個函數幹嗎了以及哪裏調用了這個函數。
咱們看到這個函數進行了網卡配置信息的查詢(Select),而後進行了右邊就確認dword_40C070
對應的字符是否存在,並進行了Mac地址查詢,註冊表的查看等操做(Wscript.shell)。也就是判斷vmware tools
是否是在註冊表裏面。
咱們注意觀察當--authors
在咱們的虛擬機上輸出的是Unknow argument
,但是咱們確實也能在明文字符串信息中找到做者的信息。這個時候咱們觀察到--authors
參數對應的處理函數是sub_40B010
,找到以後,咱們打開Call Graph進行觀察,結果就顯而易見意見了,這裏調用了sub_40AAA0
函數,也就是上面虛擬機對應的處理函數,咱們發現,這裏的處理是若是是虛擬機就輸出Unknow argument
,若是不是,就輸出正確的做者信息。到此,咱們的分析部分也就結束了。
分析部分其實已經講了很是透徹了,下面簡要梳理答案。
問題一:md5摘要值爲caaa6985a43225a0b3add54f44a0d4c7
。32位PE GUI可執行程序,同時這是一個UPX加殼文件。
問題二:經過上面的分析,咱們知道用戶上網,就獲得了攻擊者的指令,而且攻擊者能夠徹底控制該系統(指令),因此這應該是一個後門程序或者殭屍程序。
問題三:RaDa.exe
被執行時,它會將自身安裝到系統C盤中,並經過修改註冊表的方式使得每次系統啓動,啓動後主要就是如下過程:
問題四:防分析技術以下:
—-authors
參數時將不會輸出做者信息。問題五:首先這個樣本不具備傳播和感染的性質,因此它不屬於病毒和蠕蟲。而後它也沒有將本身假裝成有用的程序以欺騙用戶運行,因此他也 不屬於木馬。因此我認爲他是一個後門程序或者殭屍程序。
問題六:Bobax,2004年發現的木馬,也是使用HTTP協議從指定的服務器下載命令文件,而後解析並執行其中的指令。還有特洛伊木馬Setiri。
問題七:很簡單了,做者在上面的分析中給出了是Raul siles和David Perze於2004年編寫的。
任務:數據源是Snort收集的蜜罐主機5天的網絡數據源,並去除了一些不相關的流量,同時IP地址和其餘敏感信息被混淆。回答下列問題
IP:172.16.134.191
)與哪些IRC服務器進行了通訊?209.196.44.172
爲服務器的僵屍網絡。USER <username> <hostname> <servername> <realname>
、PASS <password>
、NICK <nickname>
。註冊完成後,客戶端就使用JOIN信息來加 入頻道,格式以下:JOIN <channel>
。6667
端口監聽,也會使用6660—6669
端口。SSL加密傳輸在6697
端口。USER/NICK
)。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
209.196.44.172
爲服務器的僵屍網絡。說明:這裏先不要用kali嘗試了,在kali下tcpflow輸出的文件用grep
命令有點問題(grep不到所有的字符串),這裏坑了我好久,因此我就直接用在macOS上作了。估計是文件編碼的問題,若是有誰知道麻煩告知,謝謝。
這裏仍是主要參考答案方法3的思路。首先咱們用tcpflow進行分流,指令爲tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"
,這條指令的含義就是讀取文件,篩選host和端口6667
後進行分流。生成了一個report文件和兩個分流的文件,固然咱們主要看的就是209.
開頭的文件。從這個文件中找到有多少個主機訪問了209.196.44.172
。
下一步,因爲macOS字符編碼的問題,參考RE error: illegal byte sequence on Mac OS X。因此使用sed命令可能致使illegal byte sequence問題。因此限先執行如下兩條指令export LC_COLLATE='C'
和export LC_CTYPE='C'
。同時下面會用到不少Linux指令,建議你們參考Linux菜鳥教程查看相關的教程。
下面咱們輸入以下指令進行搜索有多少主機鏈接。下面講解這個指令:首先這個指令確定是管道鏈接的,第一條是cat
命令,鏈接209.
輸出文件。第二條grep
搜索獲取暱稱輸出行。第三條sed
去除前綴,最後的g
是全局的意思。第三條tr
將空格轉換爲換行。第四條tr -d
刪除\r
。第五條grep -v
就是NOT
指令,去除空行。第六條sort -u
排序並去除重複。最後一條wc -l
輸出行數。因此看到輸出咱們就知道總共有3457個主機訪問了以209.196.44.172
爲服務器的僵屍網絡。
cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^: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
cut -d
是指定字段的分隔符,uniq命令用於檢查及刪除文本文件中重複出現的行列,通常與sort命令結合使用。tcpdump -n -nn -r botnet_pcap_file '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
awk -F
就是指定分隔符,可指定一個或多個,print
後面作字符串的拼接。tcpdump -n -nn -r botnet_pcap_file 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
攻擊了哪些安全漏洞首先要了解攻擊了哪些端口,使用snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii
指令先查一下網絡流分佈狀況。咱們發現大部分都是TCP包,有一部分UDP包,因此咱們首先應該篩選出響應的TCP端口和UDP端口。
利用下面的指令篩選出蜜罐主機相應的TCP端口,指令上面都講過了,差很少,多了一個篩選條件就是響應0x12
。輸出能夠看到TCP響應端口爲135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
。一樣的,將指令協議部分改爲udp就能夠查詢udp端口響應,咱們能查到僅有137(netbios-ns)
號端口響應。
tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | 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服務器的漏洞,從而獲取系統權限,正是由於用的腳本,因此纔會有這麼多記錄。
接下來是68.169.174.108
訪問的80
端口,好吧,都是正常的HTTP訪問,並沒有異常。同時,最後還有一個192.130.71.66
也是一個正常的訪問,就再也不敘述了。
210.22.204.101
訪問的80
端口,這麼多C
是什麼狀況,看來攻擊者是想經過緩衝區溢出攻擊來得到一個命令行了。最後一個訪問80
端口的是218.25.147.83
,看到這麼多N
我還覺得是緩衝區溢出攻擊呢,可是繼續往下看,你會看到c:\notworm
,稍微百度下你就會發現這是一個紅色代碼蠕蟲攻擊。
最後就是看80
端口有沒有攻擊成功了,咱們經過蜜罐主機80端口向外的流量進行分析,發現蜜罐主機作的幾回迴應均爲一個iis服務器的默認頁面,因此80
端口的這些攻擊均失敗。
接下來是TCP 139
號端口。這個也比較簡單,雖然有不少鏈接到這個端口的,可是基本都是同樣的,大部分都是鏈接,而後不少空會話,一樣這個也沒有成功,這個應該是個SMB查點。
下面分析與139端口關係極其密切的TCP 445
端口。這個端口鏈接很是多,同時咱們也能看到許多\samr
, \srvsvc
,這些都是基本的查點,這裏確實很差找,建議用strings查詢相關的字符串進行分析,或者就像我同樣硬看,查詢字符串後很容易發現一個PSEXESVC.EXE
字符串,同時你在Wireshark中也能找到,是由61.111.101.78
發起的,經過對這種字符串的搜索,發現這是一種Dv1dr32蠕蟲,這種蠕蟲正是經過IRC進行通訊。那麼咱們怎麼判斷是否是攻擊成功了呢?咱們一樣找出口流量,發現每一個IP地址連入的鏈接都有響應的迴應,而且返回信息中含有\PIPE\ntsvcs
,經過搜索可知,這是一個遠程調用,因此攻擊者確定是得到了權限,所以這個攻擊成功的。
最後還剩一個TCP 4899
端口。只有一個IP訪問過,即210.22.204.101
。能夠查得4899端口是一個遠程控制軟件radmin服務端監聽端口,這個軟件不是木馬,應該是上面攻擊成功後上載的這個軟件方便控制。到此,咱們的分析就結束啦。