2018-2019-2 20165330《網絡對抗技術》Exp4 惡意代碼分析

目錄


實驗目的

  • 監控你本身系統的運行狀態,看有沒有可疑的程序在運行
  • 分析一個惡意軟件,就分析Exp2或Exp3中生成後門軟件;分析工具儘可能使用原生指令或sysinternals,systracer套件
  • 假定未來工做中你以爲本身的主機有問題,就能夠用實驗中的這個思路,先整個系統監控看能不能找到可疑對象,再對可疑對象進行進一步分析,好確認其具體的行爲與性質

返回目錄html


實驗內容

  • 系統運行監控
    • 使用如計劃任務,每隔一分鐘記錄本身的電腦有哪些程序在聯網,鏈接的外部IP是哪裏。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出全部連網的程序,連了哪裏,大約幹了什麼(不抓包的狀況下只能猜),你以爲它這麼幹合適不。若是想進一步分析的,能夠有針對性的抓包
    • 安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控本身主機的重點事可疑行爲
  • 惡意軟件分析
    • 分析該軟件在啓動回連安裝到目標機其餘任意操做時(如進程遷移或抓屏,重要是你感興趣)。該後門軟件——
      • 讀取、添加、刪除了哪些註冊表項
      • 讀取、添加、刪除了哪些文件
      • 鏈接了哪些外部IP,傳輸了什麼數據(抓包分析)

返回目錄node


基礎問題

  • 若是在工做中懷疑一臺主機上有惡意代碼,但只是猜測,因此想監控下系統一每天的到底在幹些什麼。請設計下你想監控的操做有哪些,用什麼方法來監控。linux

    • 利用Windows計劃任務netstat,按期查看並分析網絡鏈接狀況
    • 可利用sysmon工具,配置好想要監控的端口、註冊表信息、網絡鏈接等信息,經過其生成的日誌文件進行查看
    • 利用wireshark查看數據包,分析數據流
    • 使用Process Explorer工具,監視進程執行狀況
  • 若是已經肯定是某個程序或進程有問題,你有什麼工具能夠進一步獲得它的哪些信息。git

    • 利用wireshark查看數據包,查找能夠數據鏈接
    • 利用systracer進行快照的對比(註冊表、文件等)

返回目錄web


相關知識

惡意代碼算法

  • 是經過存儲介質和網絡進行傳播,從一臺計算機系統到另外一臺計算機系統,未經受權破壞計算機系統完整性的程序或代碼
  • 最多見的惡意代碼有病毒、木馬、蠕蟲、後門、僵屍網絡、Rootkit等
  • 惡意代碼都有如下共同特徵:
    • 惡意的目的
    • 自己是計算機程序
    • 經過執行發生做用
  • 具體可看惡意代碼

惡意代碼分析chrome

  • 靜態分析(不運行程序)
    • 使用反病毒軟件來確認程序樣本的惡意性(VirusTotal或者virscan,可調用多個反病毒引擎來進行掃描)
    • 哈希值:惡意代碼的指紋(md5deep程序:計算出程序的哈希值)
    • 經過檢索惡意代碼字符串得到相應的功能調用解釋等,查看是否有被加殼處理(字符串檢索:Strings 外殼檢測:PEiD)
    • 可移植執行(PE)文件以一個文件頭開始,包含代碼信息、應用程序類型、所需的庫函數與空間要求。(使用PEview來分析PE文件。使用Resource Hacker工具來瀏覽.rsrc節(資源)。PEBrowse Professional和PE Explorer 也是分析PE文件的兩大工具)
  • 動態分析(運行程序)
    • 沙箱:提供容易理解的輸出結果,用來作初診斷很是有用(Norman沙箱、GFI沙箱等)
    • DLL類型文件執行(PEview、PE Exporer)
    • 用一些系統監視類軟件捕獲運行中惡意程序的系統調用(process monitor、process explorer)

返回目錄shell


實驗步驟

系統運行監控

(1)使用如計劃任務,每隔一分鐘記錄本身的電腦有哪些程序在聯網,鏈接的外部IP是哪裏。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出全部連網的程序,連了哪裏,大約幹了什麼(不抓包的狀況下只能猜),你以爲它這麼幹合適不。若是想進一步分析的,能夠有針對性的抓包。
  • 使用schtasks指令監控系統
  • 使用schtasks /create /TN netstat5330 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5330.txt"命令建立計劃任務netstat5330
    imagewindows

    其中,TN是TaskName的縮寫,這裏計劃任務名是netstat5330;sc表示計時方式,以分鐘計時填MINUTE;TR=Task Run,要運行的指令是netstat -bn,b表示顯示可執行文件名,n表示以數字來顯示IP和端口。api

  • 在C盤要目錄下建一個文件c:\netstat5330.bat(能夠先在桌面新建txt文本文件,使用記事本寫入後在修改後綴爲.bat,複製到C盤中),寫入內容以下:

    date /t >> c:\netstat5330.txt
     time /t >> c:\netstat5330.txt
     netstat -bn >> c:\netstat5330.txt
  • 在左下角Windows處右鍵打開計算機管理-任務計劃程序,能夠看到咱們新建立的任務:
    image
  • 雙擊這個任務,點擊操做-編輯,將其中的程序或腳本改成咱們建立的netstat5330.bat批處理文件,參數可選項爲空,點擊肯定。(注意看這裏:必定要勾選使用最高權限運行,不然可能致使文件不能自主更新或者記錄裏出現權限問題)
    image
  • 還可在條件中設置其餘屬性,在電源這裏默認操做爲只有在計算機使用交流電源時才啓動此任務,那麼使用電池電源時就會中止任務,因此若保持默認注意電腦保持開機聯網狀態!
    image
  • 在計算機管理界面對該任務右鍵點擊運行,可在netstat5330.bat目錄下看到一個txt文本文件,打開就可看到每隔一分鐘被輸到這裏的聯網數據。
    image
  • 如今咱們等待一段時間,讓記錄項目足夠多了咱們用excel來進行分析
  • 打開Excel表格,選擇數據-獲取外部數據-自文本,在數據類型中選擇分隔符號
    image
  • 點擊下一步,標記全部分隔符號,點擊完成
    image
  • 就能夠看到txt文檔中同樣的信息,而後選擇咱們要分析的那一列
    image
  • 選擇插入-數據透視圖,並默認位置新表格,點擊肯定
  • 在字段中去除不須要的字段(注意去掉TCP)
    image
  • 將該字段拖動到下方的兩個區域中
    image
  • 就能夠清晰的看到聯網信息的統計圖了
    image
    • 由上圖咱們能夠發現以前實驗所生成的後門程序20165330_backdoor.exe,經過查詢他的鏈接數據,發現他所連IP都顯示爲[::1]:8307類,通過查詢::1表明的是ipv6的本機地址,也就是ipv4的127.0.0.1,在查找相關進程在VM有關進程發現vmware-authd.exe(它是虛擬機的受權服務)所連外部IP就是個人kali的IP地址和後門設置的端口,這應該就是後門和個人主機進行通信的一個通道吧。。
      image
    • 鏈接最多的就是QQBrowser.exe,這個是QQ瀏覽器對應的進程,沒什麼可疑的。
    • 再來看看SearchUI.exe,這個原來是win10所帶的Cortana小娜的進程,查了它的兩個鏈接的外部IP,一個顯示是上海市騰訊雲,一個是在美國(這大概是微軟的吧。)
    • 其餘的都是電腦上所下的軟件360有道雲還有office及一些系統服務的,沒有可疑部分。
(2)安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控本身主機的重點事可疑行爲。

Sysmon是微軟Sysinternals套件中的一個工具。能夠監控幾乎全部的重要操做,參考使用輕量級工具Sysmon監視你的系統開始咱們的使用。

① 基本操做

  • 肯定要監控的目標:在這裏我選擇進程建立進程建立時間網絡鏈接遠程線程建立
  • 寫配置文件
    • 相關事件過濾器選項在可看到,進程建立ProcessCreate我用到了ImageSourceIpSourcePort進程建立時間FileCreateTime我用到了Image網絡鏈接NetworkConnect我用了ImageSourceIpSourcePort遠程線程建立CreateRemoteThread我用了TargetImageSourceImage
    • 開始寫與本身想要監控的事件相對應的配置文件,命名爲20165330Sysmoncfig.txt,內容以下:(配置文件是xml文件,爲了簡單編輯就直接命令爲.txt,每次用寫字本打開。)

      <Sysmon schemaversion="3.10">
         <!-- Capture all hashes -->
         <HashAlgorithms>*</HashAlgorithms>
         <EventFiltering>
           <!-- Log all drivers except if the signature -->
           <!-- contains Microsoft or Windows -->
           <ProcessCreate onmatch="exclude">     
             <Image condition="end with">QQBrowser.exe</Image> 
           </ProcessCreate>
      
           <FileCreateTime onmatch="exclude" >
             <Image condition="end with">QQBrowser.exe</Image>
           </FileCreateTime>
      
           <NetworkConnect onmatch="exclude">
             <Image condition="end with">QQBrowser.exe</Image>
             <SourcePort condition="is">137</SourcePort>
             <SourceIp condition="is">127.0.0.1</SourceIp>
           </NetworkConnect>
           <NetworkConnect onmatch="include">     
             <DestinationPort condition="is">80</DestinationPort>      
             <DestinationPort condition="is">443</DestinationPort>    
           </NetworkConnect>
      
           <CreateRemoteThread onmatch="include">
             <TargetImage condition="end with">explorer.exe</TargetImage>
             <TargetImage condition="end with">svchost.exe</TargetImage>
             <TargetImage condition="end with">winlogon.exe</TargetImage>
             <SourceImage condition="end with">powershell.exe</SourceImage>
           </CreateRemoteThread>
         </EventFiltering>
      </Sysmon>
      • exclude至關於白名單,不用記錄。include至關於黑名單
      • Image condition根據本身使用的瀏覽器更改,如谷歌瀏覽器是「chrome.exe」,IE瀏覽器是「iexplore.exe」,我用的是QQ瀏覽器則更改成「QQBrowser.exe」(可在上面的netstat5330.txt中找到進程名稱),寫在exclude中就是不記錄由QQ瀏覽器建立的進程。
      • 進程建立時間相似,也是不建立瀏覽器建立進程的時間。
      • 網絡鏈接過濾掉了瀏覽器的網絡鏈接、源IP爲127.0.0.1的網絡鏈接和目的端口爲137的鏈接服務,且查看目的端口爲80(http)443(https)的網絡鏈接。(137端口的主要做用是在局域網中提供計算機的名字或IP地址查詢服務,通常安裝了NetBIOS協議後,該端口會自動處於開放狀態。127.0.0.1表示本機IP。)
      • 遠程線程建立記錄了目標爲explorer.exesvchost.exewinlogon.exepowershell.exe 的遠程線程。
      • explorer.exe是Windows程序管理器或者文件資源管理器
      • svchost.exe是一個屬於微軟Windows操做系統的系統程序,是從動態連接庫 (DLL) 中運行的服務的通用主機進程名稱。
      • winlogon.exe是Windows NT 用戶登錄程序,用於管理用戶登陸和退出。
      • powershell.exe是專爲系統管理員設計的新 Windows 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,二者既能夠獨立使用也能夠組合使用。
  • 將配置文件放在C盤中

② 啓動sysmon

  • 下載老師給的安裝包並解壓:SysinternalsSuite201608
  • 右鍵點擊左下角Windows標誌,打開Windows PowerShell(管理員)進入管理員命令行,先cd進入工具目錄,在安裝sysmon:.\Sysmon.exe -i C:\20165330Sysmoncfig.txt(由於按老師的指令報錯我將指令改成如上才成功執行)
  • 彈出窗口點擊Agree,安裝成功以下圖
    image
  • 若是修改了配置文件,要運行指令:.\Sysmon.exe -c C:\20165330Sysmoncfig.txt來更新
  • 輸入.\Sysmon.exe -i命令啓動sysmon

③ 使用sysmon

  • 左下角右鍵Windows標誌,找到事件查看器,在應用程序和服務日誌-Microsoft-Windows-Sysmon-Operational能夠看到按照配置文件的要求記錄的新事件,以及事件ID、任務類別、詳細信息等等
    image
  • 分析實驗二生成的後門程序20165330_backdoor.exe,按步驟執行到回連
    image
  • 在點擊Sysmon-Operational刷新記錄,在12:36:34找到運行後門文件20165330_backdoor.exe相對應的日誌以下
    image
  • 此時咱們還能夠看到有360安全的記錄日誌,在運行時後門程序會被攔截,就會啓動這裏的360RealPro.exe,這是360的實時保護進程名,後續還運行了其餘一些可執行文件,如360sctblist.exe、360sclog.exe。
    image
  • Linux執行shell獲取cmd
    image
    • 在13:11左右我獲取了shell,在事件管理器中,發現C:\Windows\SysWOW64\cmd.exe這樣一個進程,其顯示目錄在後門程序目錄下,很顯然與後門程序相關
      image
      SysWOW64能夠在64bit的Windows中運行32bit的程序,而Windows下的cmd.exe是64bit的,kali回連獲取的windows的cmd程序是32位的
    • 咱們在輸入dir獲取目錄下信息,發現了一個被運行的的進程svchost.exe
      image
      Svchost.exe是微軟視窗操做系統裏的一個系統進程,管理經過Dll文件啓動服務的其它進程,一些病毒木馬假裝成系統dll文件經過Svchost調用它,試圖隱藏本身。每一個svchost能夠同時調用多個dll文件,啓動多個服務。
    • 咱們在輸入webcam_snap獲取攝像頭,一樣也發現了Svchost.exe這個進程。
      image

惡意軟件分析

靜態分析

① 使用VirusTotal分析惡意軟件

  • 將exp3中生成的加殼後門在VirusTotal進行掃描
    image
    可疑程度至關高。。
  • 查看這個惡意代碼的基本屬性:能夠看出它的SHA-一、MD5摘要值、文件類型、文件大小,以及TRiD文件類型識別結果
    image
  • 算法庫支持
    image
  • 加殼狀況
    image

② 使用PEiD進行外殼檢測

PEiD(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎能夠偵測出全部的殼,其數量已超過470 種PE 文檔 的加殼類型和簽名

  • 虛擬機win7中下載後點.exe安裝(別安裝捆綁軟件!)
    image
  • 選擇.exe文件路徑或直接把.exe文件拖到裏面,能夠看到所加殼upx版本爲0.89.6
    image
  • 點擊右下角>>查看詳細信息
    image
  • 若沒有加殼則顯示
    image
  • PEiD還可進行脫殼
    • 下面是通用脫殼器
      image
    • 還有專門針對一些殼進行脫殼
      image

③ 使用PE explorer查看PE文件頭中包含代碼信息

PE Explorer是功能超強的可視化Delphi、C++、VB程序解析器,能快速對32位可執行程序進行反編譯,並修改其中資源

  • 虛擬機win7中下載並安裝
    image
  • 打開後門程序20165330_backdoor.exe
    image
  • 查看程序頭部信息
    image
  • 試圖-數據目錄查看程序靜態數據目錄
    image
  • 試圖-節頭查看節頭信息
    image
  • 工具-反彙編器進行反彙編
    image
  • 退出後點擊導入查看所引用的dll庫,分析得知
    image
    • msvcrt.dll是微軟在windows操做系統中提供的C語言運行庫執行文件
    • kernel32.dll屬於內核級文件,它控制着系統的內存管理、數據的輸入輸出操做和中斷處理,是必需的
    • advapi32.dll是一個高級API應用程序接口服務庫的一部分,包含的函數與對象的安全性,註冊表的操控以及事件日誌有關,會受到病毒的侵擾及篡改,致使系統文件丟失、損壞
    • wsock32.dll是Windows Sockets應用程序接口,用於支持不少Internet和網絡應用程序,是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒(如「犇牛」病毒)破壞致使系統找不到此文件,出現錯誤提示框。
    • ws2_32.dll是Windows Sockets應用程序接口。一些病毒會在殺毒軟件目錄中創建僞"ws2_32.dll"的文件或文件夾,在殺毒軟件看來這是程序運行須要的文件而調用,這個所謂的「文件」又不具有系統"ws2_32.dll"文件的功能,因此殺毒軟件等就沒法運行了而提示:應用程序正常初始化失敗。

動態分析

① 使用SysTracer分析後門軟件的運行過程

SysTracer是一款能夠分析你的計算機文件,文件夾和註冊表項目改變的系統實用工具。你能夠在任何想要的時間獲取無數個屏幕快照,比較任何一對想要的屏幕快照,而且觀察其間的不一樣之處。獲取屏幕快照一般會持續幾分鐘的時間,這取決於文件和文件夾的數量和註冊表項目的總數。

  • 最好用兩臺虛擬機:kali和win7
  • 下載SysTracer
  • 進入安裝選擇第二個,next設置端口爲5330(後門生成時利用的端口),安裝完成後進入界面
    image
  • 打開後門前先點擊take snapshot(建立快照),接着Start
    image
  • 建立過程長短視當前系統體量而定,建立好後默認名稱爲Snapshot #1
    image
  • 開啓後門程序回連kali(停在獲取命令的那一刻),此時建立第二個快照Snapshot #2
    image
  • 而後kali中輸入一個ls命令,此時建立第三個快照Snapshot #3
    image
  • 輸入screenshot命令抓屏,此時建立第四個快照Snapshot #4
    image
  • 點擊右下角compare將快照之間進行比較,在Registry可看到註冊表的變化(藍色部分爲有變化的)
    image
  • 咱們按住ctrl鍵,選擇#1和#2進行比較:能夠發如今啓動回連時的變化
    • 註冊表變化
      image
    • 端口變化
      image
    • 新增了一些dll文件
      image
  • 比較#2和#3:能夠看到在獲取win7的cmd命令在Wow3264node這個註冊表發生了變化(它是計算機專門給32位系統訪問的)在上一個軟件分析中咱們可知kali獲取的cmd是32位的,它訪問64位的qin7並獲取命令,就會再次發生變化。
    image
    • 查看opened handles(打開的句柄)來對比他們都作了什麼
      image
  • 比較#1和#4能夠發如今進行截屏時,也修改了不少dll文件
    image
    • 對其餘註冊表咱們會發現SysTracer沒有辦法查看,只能知道這部分作了修改
      image
    • 關於HKEY_LOCAL_MACHINE:它保存了註冊表裏的全部與這臺計算機有關的配置信息
    • 關於HKEY_CURRENT_USER:它管理系統當前的用戶信息。在這個根鍵中保存了本地計算機中存放的當前登陸的用戶信息,包括用戶登陸用戶名和暫存的密碼

② 使用wireshark對流量進行抓包分析

  • 打開Wireshark,選擇本地鏈接接口開始抓包
    image
  • kali中打開監控,win7執行後門程序5330.exe進行回連,輸入過濾條件ip.addr == 192.168.30.129,能夠看到Wireshark上捕獲到大量的TCP傳輸(因爲抓包時Kali一直處於鏈接win7的狀態,所以並無捕獲到TCP四次握手取消鏈接過程)
    image
  • 輸入其餘命令,Kali會不斷給Windows傳一大堆ACK包,有時還伴有PSH+ACK包。(PSH就表示有 DATA數據傳輸)

③ 使用Process Monitor分析惡意軟件

Process Monitor一款系統進程監視軟件,整體來講,Process Monitor至關於Filemon+Regmon,其中的Filemon專門用來監視系統 中的任何文件操做過程,而Regmon用來監視註冊表的讀寫操做過程

  • win7虛擬機中下載並安裝
  • 打開軟件,能夠看出其對各個進程的詳細記錄
    image
  • 能夠點擊過濾器-過濾器,選擇進程名稱,輸入後門名稱5330.exe,選擇包括並添加,點擊應用肯定,就能夠看到監視條目
  • 咱們在kali中打開監控,win7中雙擊程序回連,kali中我輸入了ls查看目錄,在Process Monitor中發現這個操做
    image
  • 咱們右鍵點擊跳轉到能夠跳轉到註冊表,發現指向了這個註冊表
    image
  • 看它的名字我猜想kali爲獲取名稱而修改了這個跟命名相關的註冊表。。

④ 使用Process Explorer分析惡意軟件

Process Explorer讓使用者能瞭解看不到的在後臺執行的處理程序,能顯示目前已經載入哪些模塊,分別是正在被哪些程序使用着,還可顯示這些程序所調用的 DLL進程,以及他們所打開的句柄。Process Explorer最大的特點就是能夠終止任何進程,甚至包括系統的關鍵進程!

  • 在win7虛擬機中下載並安裝
  • 在win7中運行木馬,回連kali時,咱們能夠看到Process Explorer對其進行的記錄,雙擊可查看其屬性
    image
  • Strings一般可以顯示這個進程在運行的時候可能會使用到的一些字符串,好比網址、路徑名、註冊表信息等等蛛絲馬跡。若是是病毒或者惡意軟件經過包含着一個遠程的地址用來下載病毒或者將竊取的信息上傳。這裏一般還會包含其餘信息,對於不一樣的場合來講,總有一些是有用的。一般有些殺毒軟件也會從這裏提取病毒特徵碼的。
    image
    我在其中發現了前面分析到的dll文件:wsock32.dllws2_32.dll,這兩個是會常常被木馬、病毒等進行侵略篡改的文件,能夠分析出咱們的後門程序對其作必定的修改來實現反彈鏈接控制被控機。

返回目錄


實驗過程當中遇到的問題

  • 在安裝sysmon時報錯,提示找不到命令Sysmon.exe,但它確實存在於當前位置
    image

    解決辦法:按照提示要求將命令改成.\Sysmon.exe -i C:\20165330Sysmoncfig.txt便可。

返回目錄


實驗總結與體會

  • 本次實驗從各個軟件入手,對以前的後門程序作出不一樣程度的分析,在學習使用的同時,我也不段掌握了分析的基本方法,從攻擊者轉換到分析者,更全面的知悉後門程序到底作了什麼,通常咱們都是依靠殺軟來檢測出惡意程序,實驗中用到的也都很陌生,但其實也是殺軟的一些基本構件,分析程度也有高低,固然咱們也不能全寄但願於這些工具,也會存在足夠厲害的躲過全部監控的惡意程序,杜絕非法連接,加強安全意識也是很重要的一點。

參開資料

相關文章
相關標籤/搜索