這個做業屬於哪一個課程:https://edu.cnblogs.com/campus/besti/19attackdefensehtml
這個做業的要求在哪裏:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695ios
我在這個課程的目標是:學習網絡攻防相關知識,提高專業技能web
這個做業在哪一個具體方面幫助我實現目標:學習瞭解惡意代碼基礎知識和分析方法算法
Malware is a set of instructions that run on your computer and make your system do somethingthat an attacker wants it to do.編程
使計算機按照攻擊者的意圖運行以達到惡意目的的指令集合。指令集合:二進制執行文件,腳本語言代碼,宏代碼,寄生在文件、啓動扇區的指令流windows
惡意代碼目的:技術炫耀/惡做劇,遠程控制,竊取私密信息,盜用資源,拒絕服務,破壞……安全
計算機病毒,蠕蟲,惡意移動代碼,後門,特洛伊木馬,殭屍程序, Rootkit等...服務器
計算機病毒是最先出現的惡意代碼,媒體/工業界的概念混淆,常常以計算機病毒(ComputerVirus)等價於惡意代碼網絡
[惡意代碼類型.]惡意代碼家族名稱[.變種號]架構
反病毒工業界並無造成規範的定義,概念混淆
各類惡意代碼形態趨於融合
傳播、控制、隱藏、攻擊
針對明肯定義特性對惡意代碼進行分類研究
計算機病毒是一種可以自我複製的代碼,經過將自身嵌入其餘程序進行感染,而感染過程一般須要人工干預才能完成
感染性:最本質的特性
潛伏性
可觸發性
破壞性
衍生性
前綴感染
後綴感染
插入感染
病毒:藉助人類幫助從一臺計算機傳至另外一臺計算機
蠕蟲:主動跨越網絡傳播
移動存儲:軟盤→u盤
電子郵件及其下載:郵件病毒
文件共享: SMB共享服務、NFS、P2P
主動攻擊網絡服務漏洞
經過網絡共享目錄
經過郵件傳播
滲透攻擊模塊
FTP/TFTP/HTTP/SMB/直接傳送/單包
掃描策略
Payload:傳播自身,開放後門, DDoS攻擊……
後門是容許攻擊者繞過系統常規安全控制機制的程序,按照攻擊者本身的意圖提供通道。
本地權限提高、本地賬號
單個命令的遠程執行
遠程命令行解釋器訪問——NetCat
遠程控制GUI-VNC, BO,冰河,灰鴿子
無故口後門:ICMP後門,基於Sniffer非混雜模式的後門,基於Sniffer混雜模式的後門
Windows:自啓動文件/文件夾;註冊表自啓動項;計劃任務
Linux/Unix:inittab, rc.d/init.d, 用戶啓動腳本,cron計劃任務
定義:看起來具備某個有用或善意目的,但實際掩蓋着一些隱藏惡意功能的程序。
錯誤觀點:提供對受害計算機遠程控制的任何程序,或受害計算機上的遠程命令行解釋器看作木馬,他們應被視爲後門。
若是將後門工具假裝成良性程序,才具有真正的木馬功能。
來自於robot,攻擊者用於一對多控制目標主機的惡意代碼
攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡。
定義特性:一對多的命令與控制通道的使用。
分佈式拒絕服務攻擊
發送垃圾郵件
竊取敏感信息
點擊欺詐...
傳統僵屍網絡-基於IRC互聯網實時聊天協議構建
著名案例:sdbot, agobot等
僵屍網絡控制器-Web網站方式構建
殭屍程序中的命令與控制模塊:經過HTTP協議向控制器註冊並獲取控制命令■著名案例: bobax, rustock,霸王彈窗
命令與控制模塊的實現機制一P2P協議P2P殭屍程序同時承擔客戶端和服務器的雙重角色.
著名案例: storm worm
一類隱藏性惡意代碼形態,經過修改現有的操做系統軟件,使攻擊者得到訪問權並隱藏在計算機中。
Rootkit也可被視爲特洛伊木馬
獲取目標操做系統上的程序或內核代碼,用惡意版本替換它們
Rootkit每每也和後門聯繫在一塊兒
植入Rootkit目的是爲攻擊者提供一個隱蔽性的後門訪問
定義特性:隱藏性
用戶模式
內核模式
對提供的rada惡意代碼樣本(U盤或FTP/materials/course9下載),在WinXP_Attacker虛擬機中進行文件類型識別,脫殼與字符串提取,以得到rada惡意代碼的編寫做者。
使用文件格式和類型識別工具(file, PEid),給出rada惡意代碼樣本的文件格式、運行平臺和加殼工具。
使用超級巡警脫殼機等脫殼軟件,對rada惡意代碼樣本進行脫殼處理。
使用字符串提取工具(strings、IDA Pro),對脫殼後的rada惡意代碼樣本進行分析,從中發現rada惡意代碼的編寫做者是誰?
本實驗使用winXP虛擬機進行,首先把雲班課老師給的chapter9壓縮文件下載到本機,解壓rada.rar(解壓密碼rada)後把文件夾複製進XP的C盤
在cmd中切換到惡意程序所在的目錄cd C:\rada
,使用file命令查看file RaDa.exe
RaDa.exe的文件類型
看到RaDa.exe是一個32位的Windows PE可執行文件,GUI表示這個程序是一個有圖形界面的程序,intel 80386表示處理器架構
用執行指令strings RaDa.exe
來查看該程序可打印字符串
執行指令後發現可打印的字符串爲亂碼,沒法分析出有效信息,因此判斷該程序採用了加殼防止反彙編的技術
使用PEiD工具查看RaDa.exe的基本信息
嘗試了一下,PEiD_cn是漢化版界面,PEiD_en是英文版界面,想都不用想用中文的
點擊最上方「文件」右邊的小框框,C盤找到剛剛的RADa.exe文件打開
這裏能夠看到文件的入口點、偏移、文件類型、EP段、彙編程序以及加殼類型。UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
即爲該程序使用的加殼工具
對RaDa.exe進行脫殼
選擇文件
點擊「給我脫」
發如今惡意程序同目錄下生成了一個脫殼之後的程序
再次使用PEiD工具來查看脫殼後的程序
能夠看到編寫該程序所使用的語言和開發工具爲VB6.0
再用strings查看脫殼後的RaDa_unpacked.exestrings RaDa_unpacked.exe
能夠看到有不少程序的交互字符串和程序的函數調用的函數名
打開IDA Pro Free
選擇「new」
菜單欄「file」-「open」打開RaDa_unpacked.exe
這裏憑直覺瞎選擇了第二個exe的(我看了眼孫啓龍君的,他好像是直接默認第一項了,顯示內容稍有區別,不過都能看到做者信息)
從中能夠看到做者的信息DataRescue sa/nv
,還有做者的郵箱 <ida@datarescue.com>
(實驗三中能夠獲取到更詳細的做者姓名Raul siles和David Perze)
程序是由MSVB編寫的,往下是一些函數調用、彙編代碼
關閉
在WinXP Attacker虛擬機中使用IDA Pro靜態或動態分析crackme1.exe和crackme2.exe,尋找特定的輸入,使其可以輸出成功信息。
本實驗使用winXP虛擬機進行,首先把雲班課老師給的chapter9壓縮文件下載到本機,將crackme1.exe和crackme2.exe複製進XP的C盤
cmd切換到惡意程序所在目錄cd C:\
,使用file命令查看crackme的文件類型file crackme1.exe
和file crackme2.exe
兩個文件均爲windows系統下運行的32位可執行程序,且沒有圖形界面,僅使用控制檯操做(console),是命令行程序
首先,咱們先對crackme1.exe進行破解。一開始是嘗試運行該程序,試探其輸入格式
咱們能夠發現,在接受1個參數時,程序的反饋不同凡響,因此咱們猜想該程序接受一個參數。
目前爲止,咱們已經發現了程序的兩種反饋信息。一種是「I think you are missing something.」,這個猜想是參數數目不對的提示;另外一種是「Pardon? What did you say?」,對於這種反饋信息,咱們猜想是參數錯誤的提示。
接着咱們使用IDA pro工具來打開文件,嘗試閱讀其彙編語言,驗證咱們的猜測。
菜單欄「file」-「open」打開crackme1.exe
進去後,後側有個Strings Window
窗口,放大
經過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」這兩個字符串。有內容咱們能夠猜想,前者就是咱們須要的口令,後者就是輸入口令正確時程序的反饋信息。
此外,能夠看到有「GCC」,說明該惡意程序是用C語言編寫的
查看整個程序的call flow
剛打開有點小,點擊100%
這個按鈕放大
咱們能夠得出結論,程序是用C語言寫的,程序估計是使用strcmp函數來比較口令的,關鍵的部分在sub_401280
接下來咱們開始查看sub_401280
的彙編代碼
cmp [ebo+arg_0],2
爲判斷程序是否有兩個參數
在c語言中,main函數一般爲int main(int argc,const char **argv),即第一個參數argc對應argv的大小,第二個參數對應命令行的格式。
如在命令行輸入crackme1.exe 1
,那麼參數對應的值爲argc=2,argv={」crackme1.exe」,」1」}
若是argc=2,那麼去往loc_4012D2
進行下一步判斷
如輸入"I know the secret",則繼續前往loc_401310
測試驗證猜測crackme1.exe "I know the secret"
(此處應用英文狀態下的雙引號)
crackme2.exe的操做同理
猜想該程序一樣是接受一個參數
String界面,發現明文字符串「I know the secret」和「crackmeplease.exe」
直接樸素地輸入"I know the secret"測試,與前者錯誤提示相同
查看整個程序的call flow
關鍵的部分仍是在sub_401280
這裏,查看彙編代碼
一樣,cmp [ebp+arg_0],2
判斷程序參數是否爲兩個
經過參數個數的判斷後,接着去loc_4012D5
用strcmp函數對argc裏面的第一個字符串,即程序名「crackme2.exe」和「crackmeplease.exe」進行判斷
經過判斷後,前往loc_401313
將用戶輸入的口令與」I know the secret」判斷。
經過判斷後,經由loc_401351
和loc_401358
前往loc_401381
、unk_403080
(雙擊跳躍過去)
經過口令判斷後,經過必定規則輸出經過測試的信息
具體是unk_403080
中的字符串分別與0x42h
進行異或運算
測試驗證:
copy crackme2.exe crackmeplease.exe crackmeplease.exe "I know the secret"
如今你做爲一名安全事件處理者的任務(若是你接受的話)就是深刻分析這個二進制文件,並得到儘量多的信息,包括它是如何工做的,它的目的以及具備的能力,最爲重要的,請展現你獲取全部信息所採起的惡意代碼分析技術。
提供對這個二進制文件的摘要,包括能夠幫助識別同同樣本的基本信息
找出並解釋這個二進制文件的目的
識別並說明這個二進制文件所具備的不一樣特性
識別並解釋這個二進制文件中所採用的防止被分析或逆向工程的技術
對這個惡意代碼樣本進行分類(病毒、蠕蟲等),並給出你的理由
給出過去已有的具備類似功能的其餘工具
可能調查出這個二進制文件的開發做者嗎?若是能夠,在什麼樣的環境和什麼樣的限定條件下?
本實驗使用winXP虛擬機進行,繼續使用實驗一中的rada
首先使用MD5對該惡意程序進行摘要信息分析
cd C:\rada md5sum RaDa.exe
獲得md5摘要值爲caaa6985a43225a0b3add54f44a0d4c7
實驗一中已經執行了file RaDa.exe
分析該惡意程序的運行環境,結果爲win32位程序,有圖形界面
該惡意程序已經通過加殼,實驗一中已經完成對其的獲取文件類型、檢測殼、脫殼與分析,再也不重複
打開監視工具process explorer
C盤中雙擊運行惡意程序RaDa_unpacked.exe,打開process explorer
在進程監控裏點擊該惡意程序,右鍵選擇Properties
查看詳細信息
該惡意程序使用http鏈接到目標爲10.10.10.10的主機下的一個名爲RaDa_commands.html的網頁上,而後分別下載和上傳某些文件,而且在受害主機C盤目錄下建立一個文件夾「C:/RaDa/tmp」來保存其下載的文件
將文件RaDa.exe複製到了 C:\RaDa\bin 目錄下,能夠看出該惡意代碼將其自我複製到主機系統盤,並激活了自啓動,還試圖從一個HTML頁面獲取並解析命令,故猜想這應該是一個後門程序
還能夠發現該惡意程序中可執行DDos拒絕服務攻擊
再往下看能夠發現該惡意程序對主機的註冊表進行了讀寫和刪除操做
win+R,輸入regedit
打開註冊表查看,未發現有關於RaDa的信息,多是該惡意程序已經刪除了註冊表信息
再往下看能夠看到一些指令,exe在宿主主機中執行指定的命令,get下載,put上傳,screenshot截屏,sleep休眠
還能夠看到更準確詳細的做者姓名Raul siles和David Perze
打開和掃描工具wireshark
C盤中雙擊運行RaDa_unpacked.exe,設定搜索條件ip.addr==10.10.10.10
,能夠看到受害主機向目標主機 10.10.10.10 發送了大量的數據包
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
是一個32位Windows PE可執行文件,使用了UPX加殼工具進行了加殼處理
鏈接互聯網時,該惡意程序就會經過http請求鏈接到指定主機,進行接受攻擊者指令操做,而且攻擊者能夠徹底控制該系統,因此這應該是一個後門程序。
1.RaDa.exe被執行時,它會將自身安裝到系統C盤中。程序運行後,在實驗主機的C盤下建立了一個RaDa目錄,裏面一個bin文件夾,一個tmp文件夾,tmp前面分析過是用來臨時存儲從目標主機下載到受害主機的文件和從受害主機獲取的文件信息,打開bin文件夾發現裏面安裝了一個RaDa.exe可執行文件
2.經過修改註冊表的方式使得系統啓動,啓動後每隔一段時間會嘗試與10.10.10.10創建tcp鏈接,循環執行以下操做:
從指定的web服務器請求指定的web頁面 → 解析得到的web頁面,獲取其中的指令 → 執行解析出來的指令
3.文件雙雙擊運行後沒有彈出任何窗口與提示信息,只有經過查看進程才能發現,隱蔽性較好。
使用了UPX加殼工具進行了加殼處理
猜想是後門程序,該程序執行須要經過攻擊者遠程發送指令,並且不具備自主傳播模塊,故不屬於病毒和蠕蟲,也並未進行假裝,故不是木馬。
Bobax——2004等也是使用HTTP協議從指定的服務器下載命令文件,而後解析並執行其中的指令。
該惡意程序是Raul siles和David Perze在2004年編寫的。
分析的數據源是用Snort工具收集的蜜罐主機5天的網絡數據源,並經過編輯去除了一些不相關的流量並將其組合到了單獨的一個二進制網絡日誌文件中,同時IP地址和其餘特定敏感信息都已經被混淆以隱藏蜜罐主機的實際身份和位置。回答下列問題:
IRC是什麼?當IRC客戶端申請加入一個IRC網絡時將發送哪一個消息?IRC通常使用哪些TCP端口?
僵屍網絡是什麼?僵屍網絡一般用於幹什麼?
蜜罐主機(IP:172.16.134.191)與哪些IRC服務器進行了通訊?
在這段觀察期間,多少不一樣的主機訪問了以209.196.44.172爲服務器的僵屍網絡。
哪些IP地址被用於攻擊蜜罐主機?
攻擊者嘗試了哪些安全漏洞?
哪些攻擊成功了?是如何成功的?
因特網中繼聊天(Internet Relay Chat),簡稱IRC。IRC的工做原理很是簡單,您只要在本身的PC上運行客戶端軟件,而後經過因特網以IRC協議鏈接到一臺IRC服務器上便可。IRC特色是經過服務器中繼與其餘鏈接到這一服務器上的用戶交流。經過IRC簡介瞭解IRC的相關內容。
註冊時須要發送的消息有三種,分別是口令,暱稱和用戶信息。格式以下:USER
、PASS 、NICK 。註冊完成後,客戶端就使用JOIN信息來加入頻道,格式以下:JOIN 。 IRC服務器明文傳輸一般在6667端口監聽,也會使用6660—6669端口。SSL加密傳輸在6697端口。
攻擊者濫用IRC構建僵屍網絡時,可能使用任意的端口構建IRC僵屍網絡控制信道,那麼基於端口識別服務再也不可靠,要進行基於應用協議特徵進行識別(如USER/NICK)。
僵屍網絡(英文名稱叫BotNet),是攻擊者出於惡意目的,傳播殭屍程序控制大量主機,並經過一對多的命令與控制信道所組成的網絡;是互聯網上受到黑客集中控制的一羣計算機。每每被黑客用來發起大規模的網絡攻擊,如分佈式拒絕服務攻擊(DDoS)、海量垃圾郵件等,同時黑客控制的這些計算機所保存的信息也均可被黑客隨意「取用」。所以,不管是對網絡安全運行仍是用戶數據安全的保護來講,僵屍網絡都是極具威脅的隱患。僵屍網絡的威脅也所以成爲目前一個國際上十分關注的問題。然而,發現一個僵屍網絡是很是困難的,由於黑客一般遠程、隱蔽地控制分散在網絡上的「殭屍主機」,這些主機的用戶每每並不知情。所以,僵屍網絡是目前互聯網上黑客最青睞的做案工具。
本實驗使用虛擬機爲kali,下載雲班課的botnet_pcap_file.dat文件,複製進虛擬機
右鍵使用Wireshark打開數據文件
(原則上這樣應該能夠,但我沒能成功啓動wireshark,因此最後仍是在wireshark裏面open打開的)
由第一問可知,IRC服務器明文傳輸一般在6667端口監聽,因此設置過濾條件ip.src == 172.16.134.191 && tcp.dstport == 6667
咱們能夠找到五個IRC服務器,分別爲:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
將文件更名爲將文件名改爲了botnet.pcap
。
終端使用命令,用tcpflow進行分流
apt-get install tcpflow #出現tcpflow: command not found時安裝更新 tcpflow -r botnet.pcap "host 209.196.44.172 and port 6667" #讀取文件,篩選host和端口6667後進行分流
接着執行如下兩條命令,避免出現字符編碼問題。
export LC_COLLATE='C' export LC_CTYPE='C'
而後利用以下指令進行搜索有多少主機鏈接(grep搜索獲取暱稱輸出行sed去除前綴,g表示全局,tr將空格轉換爲換行,tr -d刪除\r,grep -v就是NOT指令,去除空行,sort -u排序並去除重複,wc -l輸出行數)
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個
使用下面的指令找出全部的可能鏈接的主機的IP地址:
cut -d是指定字段的分隔符,uniq命令用於檢查及刪除文本文件中重複出現的行列,通常與sort命令結合使用.使用下面的指令查找端口並輸出到2.txt中.
tcpdump -n -nn -r botnet.pcap 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
查找到165個被攻擊的端口
使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii
指令先查一下網絡流分佈狀況
發現大部分都是TCP包,有一部分UDP包,因此咱們首先應該篩選出響應的TCP端口和UDP端口。
而後篩選出蜜罐主機相應的TCP端口,指令比上面多了一個篩選條件:響應0x12
tcpdump -r botnet.pcap -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)
一樣的,將指令協議部分改爲UDP就能夠查詢UDP端口響應
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191 and udp ' | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
查到僅有137(netbios-ns)號端口響應
wireshark打開pcap文件,首先查看TCP的135和25端口,設定篩選條件tcp.port==135 || tcp.port==25
發現這倆端口只是用來進行鏈接,沒有發生數據的交互
接下來分析445端口,445端口是SMB端口,設置過濾條件ip.dst==172.16.134.191 and tcp.dstport==445
在61.111.101.78發起的請求中發現了PSEXESVC.EXE,這是一種Dv1dr32蠕蟲,這種蠕蟲正是經過IRC進行通訊。
爲判斷是否成功,查找從蜜罐發往61.111.101.78的信息ip.dst==61.111.101.78
發現每一個IP地址連入的鏈接都有響應的迴應,而且返回信息中含有\PIPE\ntsvcs,這是一個遠程調用,因此攻擊者確定是得到了權限,攻擊是成功的
而後看80端口,設置篩選條件ip.dst==172.16.134.191 and tcp.dstport==80 and http
看到210.22.204.101向蜜罐發送了不少的C,可能在進行緩衝區溢出攻擊
此外,24.197.194.106發起了不少次鏈接,這是不停地使用腳本在攻擊IIS服務器的漏洞,從而獲取系統權限
218.25.147.83也訪問了80端口,下方信息中發現了C:\notworm,這是一個紅色代碼蠕蟲攻擊。
最後是4899端口,ip.dst==172.16.134.191 and tcp.dstport==4899
這個端口只有210.22.204.101訪問過,能夠查得4899端口是一個遠程控制軟件radmin服務端監聽端口
接下來分析UDP的137端口,這個端口是NetBIOS相關協議,ip.dst == 172.16.134.191 and udp.port == 137
能夠看到這裏的全部IP地址進行訪問的負載都是相同的,都是KAAAAA....AA的形式,這裏推測應該是在進行NetBIOS查點
實驗2中,crackme2.exe的測試驗證時候,一開始使用的命令
crackme2.exe crackmeplease.exe
,發現依舊是輸入錯誤的提示
查看了實驗指導書,發現使用了copy命令。回憶代碼分析時的strcmp函數,應當是當文件名是crackmeplease.exe纔可以使用,不能單純的給本來的crackme2.exe文件賦予新名稱參數。使用copy命令後,去C盤發現多了個crackmeplease.exe文件,應該是用copy將crackme2.exe複製並將複製文件改了名。
tcpflow安裝更新失敗,發現kali連不上網……
去作了個飯,回來就行了……多是我網絡不太穩定?
這次實驗任務量比較重,看到題目這麼多問題都幾回敲響了退堂鼓……不過最後好歹是慢慢作完了。
實驗操做也略微複雜,雖然在老師發佈的資料文件裏發現了應該是實驗指導書的PDF文件,但指導書一點都不傻瓜教程,部分步驟沒有詳細操做,好比「查看整個程序的call flow」,怎麼個查見解,我就對着界面那些小按鈕一一試了很久,也去網上找了IDA使用教程。
實驗過程當中也要感謝很多大佬不吝賜教。好比最後一個實驗中查詢UDP端口響應那裏,我一開始沒有顯示出任何響應的UDP端口,但這與snort命令結果是不符的。孫啓龍君幫我捉了蟲~
此爲本人網絡攻防學習第九周的內容,若有不足,還請批評指正,不勝感激。