日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
實例講解基于Volatility的內(nèi)存分析技術(shù)Part1

歡迎各位閱讀基于Volatility的內(nèi)存分析系列文章。為了順利閱讀本系列文章,讀者最好具備Windows內(nèi)部運行機制方面的基礎(chǔ)知識。準(zhǔn)確來說,讀者需要了解內(nèi)存在Windows中運行機制方面的基礎(chǔ)知識,為此,我們將給出詳盡的介紹。除此之外,不管你有什么不懂的知識,都不會影響您理解本文的內(nèi)容!

成都創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計客戶千余家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運用,我們將一直專注品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!

閱讀清單:

  •  內(nèi)核模式
  •  用戶模式
  •  虛擬內(nèi)存
  •  Windows進(jìn)程

一點背景知識:

內(nèi)存取證(有時稱為內(nèi)存分析)是指對計算機內(nèi)存轉(zhuǎn)儲中易失性數(shù)據(jù)進(jìn)行的一種分析。信息安全專業(yè)人員可以通過內(nèi)存取證,來調(diào)查和識別那些不會在硬盤驅(qū)動器數(shù)據(jù)中留下痕跡的攻擊或惡意行為。

通過內(nèi)存取證,安全人員可以了解運行時的各種系統(tǒng)活動,例如開放的網(wǎng)絡(luò)連接或最近執(zhí)行的命令和進(jìn)程等。

程序在計算機上運行之前,首先需要被加載到內(nèi)存中,這使得內(nèi)存取證變得非常重要——這意味著所有被創(chuàng)建、檢查或刪除的程序或數(shù)據(jù)都將被保存到RAM中。這其中包括圖像、所有Web瀏覽活動、加密密鑰、網(wǎng)絡(luò)連接或注入的代碼片段。在許多情況下,某些證據(jù)只能在RAM中找到,例如在崩潰期間存在的開放網(wǎng)絡(luò)連接。由于攻擊者可以開發(fā)只駐留在內(nèi)存中而不在硬盤落地的惡意軟件,從而使標(biāo)準(zhǔn)的計算機取證方法幾乎看不到它。這使得內(nèi)存取證工具變得愈發(fā)重要。

Volatility是一個先進(jìn)的內(nèi)存取證框架。它為調(diào)查人員提供了許多自動工具,人們可以利用其先進(jìn)的內(nèi)存分析技術(shù)揭示主機上的惡意活動。需要指出的是,該框架是用python實現(xiàn)的,而且是開源的。該框架的下載地址為https://github.com/volatilityfoundation/volatility,相關(guān)的文檔地址為https://github.com/volatilityfoundation/volatility/wiki/Command-Reference-Mal。

在這個系列文章中,我們將以Coreflood木馬為例,來介紹相關(guān)的內(nèi)存取證方法。

Coreflood是由一群俄羅斯黑客創(chuàng)建并在2010年發(fā)布的木馬和僵尸網(wǎng)絡(luò)。FBI已經(jīng)將“大約17個州或地方政府機構(gòu),包括1個警察局;3個機場;2個國防承包商;5個銀行或金融機構(gòu);大約30個學(xué)院或大學(xué);大約20個醫(yī)院或醫(yī)療公司;以及數(shù)百家企業(yè)”[1]列入受感染系統(tǒng)的名單中。截至2011年5月。它已經(jīng)感染了世界各地230多萬臺計算機;到目前為止,它仍然是一個巨大的威脅?!S基百科

對于該樣本軟件,可以通過下面的地址進(jìn)行下載(.vmem文件):

https://github.com/mgoffin/malwarecookbook/blob/master/16/6/coreflood.vmem.zip

這個文章系列的目標(biāo)是借助于volatility來了解這個惡意軟件的行為,以及相應(yīng)的內(nèi)存取證方法。我將嘗試發(fā)掘所有關(guān)于Coreflood的取證工具,以了解這個惡意軟件背后的動機到底是什么。我希望能從這次取證分析中學(xué)到一些新的東西,并教給大家一些新的東西!

為了開始調(diào)查,我想先搞清楚主機上運行的進(jìn)程。為此,我們只需借助于pslist命令,就能查看是否有明顯可疑的進(jìn)程在運行。

Windows使用一個循環(huán)的雙鏈接列表_EPROCESS結(jié)構(gòu)體來跟蹤所有的活動進(jìn)程;并且,這個列表位于內(nèi)核中。而Volatility就是利用了這個事實:首先,它會尋找PsActiveProcessHead指針,因為該指針指向內(nèi)核的_EPROCESS結(jié)構(gòu)體列表的起始位置;之后,Volatility會遍歷這個列表,從而找出正在運行的所有進(jìn)程。

 主機上正在運行的所有進(jìn)程:volatility -f coreflood.exe pslist命令的輸出結(jié)果

我們可以看到,似乎一切都很正常,不過有幾件事引起了我們的注意。當(dāng)前,IE瀏覽器在運行,同時cmd也在運行,看來正確的做法是檢查出站連接,因為惡意軟件可能偽裝成Internet Explorer瀏覽器,以隱藏自己與C&C的通信流量。

此外,我們也可以檢查一下cmd在那邊做什么,這一點將在后面討論。

一個最簡單的操作就是查看出站連接。如果IE出站連接沒有找到可疑之處,我們就需要從其他地方尋找惡意活動的蹤跡。

下面,我們將使用connscan命令來檢查之前終止的和當(dāng)前活動的連接:

“要想使用池標(biāo)簽掃描功能查找_TCPT_OBJECT結(jié)構(gòu)體,請使用connscan命令。這樣做的好處是,我們不僅可以從活動的連接中查找證據(jù),還可以從之前被終止的連接中搜索證據(jù)?!薄訴olatility的官方文檔

實際上,這種工作方式就是先通過掃描物理內(nèi)存,找到4個字節(jié)的簽名0x54455054(“TCPT”),然后,解析出接下來的28個字節(jié),并將其作為完整的_TCPT_OBJECT結(jié)構(gòu)體。

 volatility -f coreflood.vmem connscan命令的輸出結(jié)果

從上面的輸出結(jié)果來看,主機好像正在進(jìn)行正常的通信,所有的通信都是由pid 2044進(jìn)程(IEXPLORE.EXE)創(chuàng)建的。我查了一下這些IP的地理位置,它們都是注冊在一些大公司的名下,比如微軟、AT&T等公司。當(dāng)然,關(guān)于這些IP的數(shù)據(jù)可能已經(jīng)改變了,因為當(dāng)前考察的vmem文件已經(jīng)有些陳舊了;此外,這些也可能是黑客為了欺騙調(diào)查人員而對這些IP地址數(shù)據(jù)做了手腳。

為了確保的確沒有惡意通信,我們應(yīng)該檢查入站連接是否安全。為此,我們可以使用sockscan命令,該命令將掃描內(nèi)存中的_ADDRESS_OBJECT結(jié)構(gòu)體。通過掃描內(nèi)存中的這個內(nèi)存結(jié)構(gòu),我們可以深入了解以前打開的套接字和當(dāng)前打開的套接字。

 volatility -f coreflood.vmem sockscan命令的輸出結(jié)果

正如我們所看到的,進(jìn)程pid 2044(即IEXPLORE.EXE)中有一些非常奇怪的入站連接。這看起來非??梢?,所以,是時候拿出我們的內(nèi)存取證神器Volatility,檢查一下該進(jìn)程中是否隱藏著惡意軟件了。

我們之所以說Volatility是一個內(nèi)存取證神器,是因為它提供了許多功能強大的惡意軟件分析工具。

我們經(jīng)常用到的第一個分析工具就是malfind命令。這個命令可用于尋找進(jìn)程內(nèi)存中的注入代碼。它是通過尋找已分配內(nèi)存的段(通過查看VAD樹數(shù)據(jù)結(jié)構(gòu)),并檢查它們是否有未映射到磁盤上任何文件的可執(zhí)行代碼的線索來實現(xiàn)這一點的。

“VAD節(jié)點還引用了一些其他的內(nèi)核結(jié)構(gòu)體,這些結(jié)構(gòu)體可能對調(diào)查人員非常有用……因此,如果該內(nèi)存區(qū)被用于已映射的文件(如加載的DLL),則可以引用相應(yīng)的_FILE_OBJECT結(jié)構(gòu)體,并提取文件的名稱。這可以為調(diào)查人員提供一種替代的方法來列出進(jìn)程加載的模塊,然后可以與其他方法找到的模塊進(jìn)行比較,從而找到庫注入和隱藏模塊的相關(guān)證據(jù)。”——Science Direct

用于檢查一段內(nèi)存是否包含注入代碼的方法是檢查VAD的頁面權(quán)限,例如EXECUTE權(quán)限等。如果內(nèi)存中的某一段具有執(zhí)行權(quán)限,并且它沒有映射到磁盤上的任何可執(zhí)行文件的話,就說明這里很可能存在注入的代碼。

 volatility -f coreflood.vmem malfind命令的輸出結(jié)果,這里似乎存在誤報

正如我們在上圖中看到的,該命令的輸出結(jié)果好像并沒有帶來太多真正有價值的信息。

這可能是該惡意軟件沒有加載任何顯式PE(可移植可執(zhí)行文件)代碼到內(nèi)存中,而只是注入了一些shellcode所致,又或者映像的頭部被分頁了所致。此外,還有一種可能——惡意軟件通過調(diào)用注入的DLL的ImageBase上的VirtualFree,從內(nèi)存中清除PE的頭部,以避免檢測到。當(dāng)然,也可能是由于某些原因,這部分內(nèi)存被分頁或無法訪問。無論如何,我們還不能確定這里存在惡意活動,因為我們沒有找到確切的證據(jù)。

接下來我們可以使用的命令是apihooks。

“它可以用來查找IAT、EAT、Inline式hook,以及幾種特殊類型的hook。對于Inline hook,它可以檢測直接和間接位置的CALL和JMP指令……以及對內(nèi)核內(nèi)存中未知代碼頁的調(diào)用?!薄猇olatility官方文檔

為了理解這里到底發(fā)生了什么,我們需要快速回顧一下IAT和EAT。

當(dāng)可執(zhí)行文件第一次被加載時,Windows加載器將負(fù)責(zé)讀取文件的PE結(jié)構(gòu),并將可執(zhí)行文件的映像加載到內(nèi)存中。其中一步,就是加載應(yīng)用程序使用的所有dll,并將它們映射到進(jìn)程地址空間。

此外,可執(zhí)行文件還會指出在每個dll中需要的所有函數(shù)。不過,由于函數(shù)地址不是靜態(tài)的,所以,我們必須開發(fā)一種機制,以允許修改這些變量,這樣就不必在運行時修改所有已編譯的代碼了。

這一點是通過導(dǎo)入地址表(IAT)實現(xiàn)的;而IAT,實際上就是由windows加載器在加載dll時所填寫的函數(shù)指針表。

EAT的工作方式和IAT基本一致,只不過它是供代碼庫用于將函數(shù)導(dǎo)出到映像可執(zhí)行文件中的,以便供程序從其中將函數(shù)地址導(dǎo)入到IAT中(具體細(xì)節(jié)我就不多說了)。

惡意軟件可以通過操縱這兩個內(nèi)存結(jié)構(gòu)體,使得可執(zhí)行文件調(diào)用其他函數(shù),而非原本要調(diào)用的函數(shù)。

我之所以要在IEXPLORE.EXE上使用apihooks參數(shù),是因為根據(jù)sockscan的輸出結(jié)果,我已經(jīng)懷疑它可能被篡改了。

 我們將使用apihooks參數(shù)并將輸出結(jié)果保存在一個文本文件中

難以置信! Internet Explorer已經(jīng)被鉤取了十幾次以調(diào)用同一個函數(shù)。

 上圖內(nèi)容摘自保存apihooks命令輸出結(jié)果的文本文件。實際上,這只是十幾個不同函數(shù)的hook中的一個而已;它們都調(diào)用同一個地址0x7ff82a6e。

我們可以看到,在這個例子中,惡意軟件在WINHTTP.dll中“掛鉤”了LoadLibrary。

LoadLibrary可用于將庫模塊加載到進(jìn)程的地址空間中,并返回一個句柄,該句柄可用于GetProcAddress以獲取DLL函數(shù)的地址。因此,LoadLibrary是一個非常顯而易見的鉤取對象,因為我們知道很多PE都會使用其他dll,并導(dǎo)入這些庫中的相關(guān)函數(shù)。

我們需要搞清楚惡意軟件在這里試圖達(dá)到什么目的。為了做到這一點,我們需要嘗試深入到惡意軟件試圖執(zhí)行的那段代碼中。因此,我們要使用Volatility的volshell工具。Volshell是一個非常強大的工具,可以用來瀏覽內(nèi)存的內(nèi)容。我們可以跳轉(zhuǎn)到內(nèi)存的各個部分,之后,我們不僅可以查看其中的內(nèi)容,還可以反匯編或讀取其中的內(nèi)容。

 輸入volshell命令,然后按照流程操作即可。

在輸入volshell命令后,我使用cc(

 上面高亮顯示的文字(從上到下)向我們展示了被鉤住的地址,在它的下面,還高亮顯示了惡意軟件希望我們的代碼要跳轉(zhuǎn)到的地址。

如上圖所示,為了弄清楚該惡意軟件的意圖,我們需要反匯編相關(guān)的地址。為此,我將這個地址作為參數(shù)復(fù)制到volshell命令dis(

我們最終得到的輸出結(jié)果,就是惡意注入的代碼。

關(guān)于這個惡意代碼的作用,我們將在后面的文章中加以介紹。心急的讀者,也可以自己動手嘗試一下。

在本文中,我們?yōu)樽x者介紹了如何使用volatility在主機運行的進(jìn)程中查找潛在的惡意代碼。為此,我們首先介紹了一些基本的操作,比如確保沒有任何可疑的東西,這樣,一旦出現(xiàn)可疑的進(jìn)程或不常見的IP地址相關(guān)的流量,我們就能立即察覺。最后,我們通過volatility考察了惡意軟件樣本是否通過向無辜的進(jìn)程注入代碼來實現(xiàn)隱身,并發(fā)現(xiàn)了一些有趣的代碼。在下一篇文章中,我們將深入研究這些代碼,看看這個惡意軟件到底想達(dá)到什么目的。

祝閱讀愉快,我們下篇見。

本文翻譯自:https://medium.com/bugbountywriteup/memory-analysis-for-beginners-with-volatility-coreflood-trojan-part-1-89981433eeb6如若轉(zhuǎn)載,請注明原文地址。


網(wǎng)頁題目:實例講解基于Volatility的內(nèi)存分析技術(shù)Part1
標(biāo)題鏈接:http://www.dlmjj.cn/article/dpjhppo.html