【惡意程序如何實現自我刪除?】內存中找證據!

2021-02-20 電子物證

本文轉譯:北京市人民檢察院科技信息基地    劉伯辰

多數惡意程序都有自我刪除功能,所留下的痕跡僅會存在內存中,因此保存犯罪行為下的易揮發性數據,已是網絡取證調查中不可或缺的一部分。通過分析內存中ELF格式文件來了解惡意程序的行為,有助於增加對未知惡意程序的了解並做為逆向分析的參考。

[本文開頭,大段落介紹背景知識,是為了便於大家了解基礎知識]

「道高一尺,魔高一丈」,隨著時代的發展,不法人士進行犯罪的方式也與傳統的犯罪模式有著天壤之別。早期多半是綁架勒索的傳統刑事案件,通常以要求支付現金為最常見的手法。

隨著科技日新月異的進步,傳統綁架勒索案件也有了不同的變化,取而代之的是成本較低、影響卻更大的網絡攻擊。

有別於以往的黑客是為了證明自己實力、增加知名度而進行攻擊行為,現今更多的黑客是基於有利可圖謀取暴利的目的,促使網絡犯罪開始組織化,例如黑客針對企業發動分散式拒絕服務(DDoS)攻擊,藉此進行勒索行為,因此依賴傳統證據的取證方式已不足以對抗科技導向的信息安全犯罪模式。

2017年初臺灣爆發有史以來第一次券商集體遭受DDoS攻擊勒索事件,券商若不付款則會遭到Tb級的DDoS攻擊。這將會造成券商下單網站因此停擺,使得交易量降低,影響200億股票的交易安全。而全球史上第一次的Tb級DDoS攻擊則發生於2016年。2016年9月下旬,號稱全球第三大、法國最大的雲端服務與網站託管供應商OVH,表示自家IT架構大升級,然而客戶尚未享用到升級後的好處,接連四天,OVH不僅受到多次Gb級的DDoS攻擊,其中最高峰甚至達到每秒1.5Tb流量。此事件不僅震驚全球,也刷新了DDoS攻擊流量紀錄。根據此事件分析結果,發動此次大規模DDoS攻擊的殭屍大軍,是來自全球的CCTV網絡攝影機,其源頭是名為Mirai的惡意程序。

Mirai主要感染的對象為物聯網(Internet of Things,IoT)連接設備,而在Mirai之前,早在2014年便出現過名為Gafgyt(別名Bashlite、Lizard Stresser)的惡意程序,主要感染的對象同樣也是IoT連接設備。且在雲端計算、大數據與無線網絡技術快速發展,促使物聯網興起的時代,IoT連接設備隨處可見。由此可推斷,未來的殭屍大軍只會越來越多,其所造成的傷害將非同小可。因此,對於IoT連接設備的安全問題是不可忽視的議題。

IoT連接設備絕大多數是基於Linux系統開發的,相較於市場佔有率高達90%的Windows系統,Linux系統的使用者較少。且由於多數缺乏信息安全觀念的一般使用者常常也是Windows系統使用者,使得Windows系統較多受到黑客的攻擊,也逐漸形成大多數的人普遍認為「Windows系統不安全,而Linux系統較為安全」的印象。而Mirai的出現,所帶來的Tb級DDoS攻擊。此一現象也打破了「Linux系統較安全」的陳舊觀念,Linux系統潛藏的信息安全風險不容小覷。

若不幸發生信息安全攻擊事件,多半需要尋求執法機關的協助以保障自身權益。因此,取證人員經常使用取證工具以找出隱藏的電子證據,並且藉由分析電子證據從中找出蛛絲馬跡,推測其攻擊手法及攻擊來源,還原整起信息安全攻擊事件。

然而,由於Windows系統較多受到黑客攻擊,因此現有的分析工具多半以支援Windows系統為主,支援Linux系統的分析工具不僅數量少,且多數為商用軟體,而開源(Open Source)工具則較不完善,對於近年來興起的Linux系統網絡攻擊事件的取證更是雪上加霜。

不僅如此,若惡意程序在攻擊後具有自我刪除功能,也將使得取證人員於取證過程中面臨阻礙。但是,根據洛卡德交換原理(Locard Exchange Principle, Locard's Theory),只要有接觸過,必定會留下痕跡,也就是所謂「凡走過必留下痕跡」。任何應用程式執行時,系統都會將資料暫存於隨機存取存儲器(以下簡稱內存)中,使其得以順利執行,這也充分地顯示出內存取證的重要性。

何謂殭屍網絡Botnet

殭屍網絡(Botnet)廣義來說是由殭屍網絡管理者(Botmaster)、殭屍電腦(Bot)以及命令與控制伺服器(Command and Control Server,C&C Server)此三部分組成。

殭屍網絡管理者,也就是黑客本身利用木馬、字典攻擊等方式使易受攻擊的系統感染惡意程序,這些易受攻擊的系統可能是電腦、行動裝置,亦或是IoT連接設備等,而用戶本身通常不知道自己已成為殭屍網絡中的殭屍電腦。

當已有足夠數量的殭屍電腦時,殭屍網絡管理者便可通過命令與控制伺服器以一對多的方式控制殭屍電腦,指示這些殭屍電腦執行某些行為,如DDoS攻擊等,如圖1所示。

▲圖1 殭屍網絡

殭屍電腦如同傀儡般任殭屍網絡管理者擺布,執行各種惡意行為。以殭屍網絡管理者與殭屍電腦通訊方式作為分類,主要可區分為以下兩大類型: 

C&C的殭屍網絡

C&C的殭屍網絡又稱為集中式殭屍網絡(Centralized Botnet),是一種高度集中式的網絡架構。如圖2所示,包含了以網絡聊天(Internet Relay Chat,IRC)及以超文本傳輸協議(HyperText Transfer Protocol,HTTP)作為網絡協議的殭屍網絡。

▲圖2 C&C的殭屍網絡

由於殭屍網絡管理者僅通過C&C Server便可快速地將攻擊指令傳送給殭屍電腦,因此採用此種架構的殭屍網絡執行速率較快。然而,C&C Server因需要大量的交換信息,容易被取證人員發現。

倘若C&C Server被破壞,則IRC或HTTP/HTTPS的殭屍網絡也會瓦解。

P2P的殭屍網絡

此種架構的殭屍網絡,如圖3所示,沒有集中式的C&C Server,取而代之的是殭屍電腦可能是客戶端(Client),也可能是服務端(Server),又或者是兩者兼具。除了接收指令外,也可當作媒介傳送攻擊指令。

▲圖3 P2P的殭屍網絡

由於殭屍網絡管理者可以通過其中的任一臺殭屍電腦作為主控殭屍來控制整個殭屍網絡,倘若其中一臺殭屍電腦被破壞,主控殭屍與其他殭屍電腦依然可以保持連接與溝通,因此無法阻止其惡意行為。這顯示P2P的殭屍網絡韌性較好,然而相較於C&C的殭屍網絡,殭屍網絡管理者要傳達攻擊指令給殭屍電腦的速度較慢,導致接收攻擊指令會延遲。

2018年卡巴斯基第一季度全球DDoS報告顯示,在檢測到的所有攻擊量中,Linux的殭屍網絡佔了61%。換句話說,殭屍網絡絕大多數是基於Linux系統。針對Linux的殭屍網絡惡意程序,其中較知名的是公開原始程序代碼的Mirai。

分析方式探討

目前已知有多種Linux殭屍惡意程序在執行後為了隱藏蹤跡會自我刪除,因此取證人員僅能從受感染設備的內存中取得此殭屍惡意程序,並做後續分析,也說明了內存取證技術的必要性。

在Linux系統中,可執行文件主要以ELF格式儲存於內存中,結構如表1所示。倘若要在Linux系統上執行惡意程序,此惡意程序亦須為ELF文件格式。

因此,這裡嘗試於內存中使用分析ELF格式的方法,流程如圖4所示,從惡意程序中找出其所會使用的函數,藉此初步了解此惡意程序所會觸發的行為。

▲圖4 Linux惡意程序取證分析流程

分析ELF Header

ELF格式文件以ELF Header為起始點,主要記錄了整個文件的結構信息。以表2之ELF Header作為說明,所包含的數據結構如表3所示。 

其中所要探討的部分以e_shoff、e_shentsize及e_shnum為主,表4說明了這三個數據結構所表示的信息。

分析Section Header

得知Section Header Table位置後,便可找到每一個Section Header,以表5之Section Header Table為例。而Section Header中的數據結構整理如表6所示,主要以sh_name、sh_offset及sh_size為主,如表7所示,以得到每一個Section的信息。並找出.shstrab、.strtab及.symtab此三個Section,相關信息如表8所示。 

進行統計

依照上述方法取得資料庫中的惡意程序樣本所使用的函數,以陣列方式儲存。另外,隨機選一個惡意程序樣本的函數以字典方式儲存。

將所有陣列與字典比對,若符合則字典中的Value數值加1,反之則新增為字典的Key,如圖5所示。

▲圖5 函數統計流程

情境模擬說明

近日,路由器製造商行銷部主任強尼正為自身產品遲遲無法提升市場佔有率而煩惱,強尼認為,想要提高市場佔有率,最重要的是要能夠研發出更符合客戶實際需求的產品,於是便與研發部主任約翰一同討論策略。

兩人首先仔細地檢驗查看了現有產品功能的使用效率,通過統計資料作為參考,了解自身產品目前有哪些功能可以符合客戶真正的需求,又或者有哪些功能需求量較小,能夠以其他更重要的功能取代。

然而,在檢驗查看的過程中,約翰發現型號1的路由器的網絡流量紀錄遠高於其他型號的路由器紀錄。依照過往經驗,約翰認為型號1的路由器極有可能被黑客當成了殭屍大軍。為了保障自身產品的安全性,約翰馬上率領其團隊進行研究測試。

研究測試團隊從被黑路由器中搜集了多個惡意程序樣本。由於此路由器是基於Linux系統開發,因此可知惡意程序執行文件為ELF格式。於是研究測試人員便通過分析ELF格式,取得所需的資料,以便更進一步地了解惡意程序。通過此方式並進行統計,測試人員可以得到資料庫當中所有殭屍網絡惡意程序所使用的函數,以做為防禦策略的參考。

為清楚說明,此處以Gafgyt殭屍網絡行為作為分類,說明各分類中使用的函數。因為資料庫中包含有變種的Gafgyt殭屍網絡,所使用的函數會有所出入,因此選擇出現頻率較高的函數作為說明。

Gafgyt惡意程序主要行為及所使用的相關函數,分別說明如下:

與C &C Server建立連接

與C &C Server建立Socket連接所使用的函數如表9所示。其中函數mainCommSock是用來通知系統建立一個新的通訊埠,便於後續發送數據及接收數據。

掃描過程中回傳信息到C &C Server及接收信息

函數sockprintf中使用send將受感染的連接設備相關信息經由Socket回傳給C &C Server,如函數ioctl可取得MAC地址等。而函數recv則是用來接受來自於遠端C &C Server經由指定Socket傳來的數據,如表10所示。

處理C &C Server所傳來的指令

指令主要都存於可執行文件processcmd內,指令簡述如表11所示。其中比較特殊的是SCANNER指令,如表12所示。當一個殭屍電腦接收到這個指令時,將以fork的方式啟動一個子進程,而此子進程不管是否有與主控端連接,都會對公網隨機IP的23埠進行掃描。 

此外,在掃描開始之前會通過使用getrlimit函數計算最大能同時打開的文件數,並將該值的四分之三作為同時掃描的最大IP數,以防止掃描數量過多,影響被感染設備的正常運轉而被受害人察覺。而其餘攻擊指令相關函數,則如表13所示。

研究測試人員通過上述介紹的方法分析殭屍網絡惡意程序後,可快速地了解其所會發生的攻擊行為,便可在最短時間內進行防禦,避免攻擊所造成的影響擴大。

此外,也可從所使用的函數中發現惡意程序攻擊的途徑是通過字典掃描的方式入侵。簡單來說,型號1的路由器之所以會被感染,是因為使用了預設密碼或者弱密碼,導致攻擊者可以控制被黑的路由器,使其成為殭屍網絡的一部分。

編者注】惡意程序的自我刪除是存在期待可能性的。

轉自:資訊時代的犯罪偵查

解析NanoCore犯罪軟體攻擊鏈

相關焦點

  • 惡意程序如何實現自我刪除?內存中找證據!
    通過分析內存中ELF格式文件來了解惡意程序的行為,有助於增加對未知惡意程序的了解並做為逆向分析的參考。本文轉譯:北京市人民檢察院科技信息基地劉伯辰,在此表示感謝。不僅如此,若惡意程序在攻擊後具有自我刪除功能,也將使得取證人員於取證過程中面臨阻礙。但是,根據洛卡德交換原理(Locard Exchange Principle, Locard's Theory),只要有接觸過,必定會留下痕跡,也就是所謂「凡走過必留下痕跡」。
  • 微軟開發分析引擎Freta,掃描內存快照揪出VM惡意程序
    微軟研究院開發了一個雲計算安全分析引擎Freta,可掃描Linux系統的內存快照,找出傳感器和作業系統遭破壞的證據,自動對雲計算Linux虛擬機進行指紋識別並審核內存快照,以發現新形態的Rootkit和高端的惡意程序。現在Freta分析引擎以門戶網站的形式,公開雛形給大眾使用。
  • 微軟推出Project Freta服務 可在系統內存快照中查找惡意軟體
    微軟近日宣布了名為「Project Freta」的全新反惡意軟體服務。官方描述為:「微軟研究院開發的免費服務,用於檢測 Live Linux 系統內存快照中的作業系統和傳感器破壞證據,例如 rootkits 和高級惡意軟體。」
  • 實例講解基於Volatility的內存分析技術Part 1
    信息安全專業人員可以通過內存取證,來調查和識別那些不會在硬碟驅動器數據中留下痕跡的攻擊或惡意行為。通過內存取證,安全人員可以了解運行時的各種系統活動,例如開放的網絡連接或最近執行的命令和進程等。程序在計算機上運行之前,首先需要被加載到內存中,這使得內存取證變得非常重要——這意味著所有被創建、檢查或刪除的程序或數據都將被保存到RAM中。
  • 關於再審程序中新證據的認定和運用
    一、再審程序中新證據的認定  (一)對新證據含義的理解  在訴訟活動中,證據對爭議的解決尤為重要,它是決定案件勝負與否的必然所在。那麼,作為啟動民事再審程序重要環節之一的新證據問題,如何去正確認識、理解,是擺在我們面前的一項重要研究課題。
  • 如何通過wrap malloc定位C/C++程序的內存洩漏
    所以,我們需要藉助工具,比如valgrind,但這些找內存洩漏的工具,往往對你使用動態內存的方式有某種期待,或者說約束,比如常駐內存的對象會被誤報出來,然後真正有用的信息會掩蓋在誤報的汪洋大海裡。很多時候,甚至valgrind根本解決不了日常項目中的問題。
  • 內存安全周報|未雨綢繆 以守為攻
    (0705)一項新研究發現了Apache Guacamole中的多個嚴重反向RDP漏洞,Apache Guacamole是系統管理員用於遠程訪問和管理Windows和Linux計算機的流行遠程桌面應用程式。
  • 惡意程序分析與高級對抗技術
    課程詳情就請看下文哦~本系列課程名為《惡意程序分析與高級對抗技術》,重點給大家介紹各種類型惡意程序的基本分析方法以及針對於某一批類似樣本的高級對抗技術,利用高級查殺技術,從而實現對惡意程序的通殺。相信通過本系列課程的學習,不單單能夠讓大家掌握惡意程序分析的基本技巧,更加能夠拓寬大家的思維,讓大家知道,反病毒領域的工作,不單單是病毒分析,不單單是特徵的提取,其實還有更加廣闊的世界是值得我們去探索的,從而在這場沒有硝煙的戰場中,貢獻自己的智慧。
  • 內存攻擊技術及檢測 - 悅文天下
    從這些類型的內存區域開始的線程是異常的,是惡意活動攻擊的預兆。ProcessHacker還可以顯示惡意軟體線程的調用堆棧,堆棧中有多個函數不映射到已加載模塊關聯的內存。3、內存模塊內存模塊是另一種內存駐留攻擊技術,它類似於反射式DLL注入,注射器或加載器負責將目標DLL映射到內存而不是DLL映射本身。本質上,內存模塊加載器重新實現了LoadLibrary函數,但它在內存中的緩衝區而不是磁碟上的文件中起作用。
  • 腳本類惡意程序分析技巧匯總
    在這裡寫一篇總結性的文章,分享一下各個類型的惡意樣本的分析方法,如果錯誤還望指正。前方內容較多,請準備好花生瓜子python樣本分析對於python打包的exe,如何反編譯得到源碼成了最關鍵的問題。那麼我們首先來將一個py文件打包成exe,了解一下這個過程和python打包的exe的特徵打包一個hello world首先安裝python2.7,記得添加環境變量。
  • C/C++程序調試和內存檢測
    減少程序錯誤最有效的方法是:在敲代碼之前,多花點時間思考,如何構造程序,數據結構和算法,儘量把細節提前寫下來,可以嘗試著在紙上寫出核心代碼,這樣可以減少今後修改代碼的時間。1、常用的調試技巧(1)代碼檢查,重新閱讀程序,排除比較明顯的錯誤。
  • 釋放你的手機內存!這18款小程序,大學老師必備!
    微信小程序作為一種輕應用,無需下載、無需安裝,掃碼即可使用,不想用了就刪除不佔手機內存。
  • 專利無效宣告程序中使用公開證據的認定
    在實務中,關注較多的主要是申請日前為公眾所知這一要件的判斷,較少關注「包含有能夠使公眾從中得知實質性技術知識的內容」這一要件的判斷。那麼「包含實質性技術內容」這一要件的含義是什麼,在實務操作中如何運用,是作為現有技術成立的條件,還是對公開內容範圍的規定,本文結合最高院公布的2019年40大知產案例中的(2019)最高法知行終1號行政判決案,對此問題進行探討。
  • 如何讓手機內存變大 手機釋放內存的方法介紹
    ,所以說一般人要增加機身內存難度很大,可以說是不現實的,如果真的要這麼做,建議你找到生產這部手機的生產工廠,也就是往手機主板上焊接內存的生產線,找具備更換機身內存能力的工人或者技師幫你更換一個同規格大容量的內存,這樣就可以使你的手機自帶內存變大了。
  • 刑事訴訟中的非法證據排除規則的範圍和程序研究
    加強人權保障已成為實現刑事司法價值目標,彰顯司法文明進步,落實公民憲法權利的現實需要,非法證據排除規則的確立能夠有效遏制諸如刑訊逼供等偵查人員非法取證行為,以限制偵查權力,維護犯罪嫌疑人、被告人的合法權利,加強刑事訴訟程序中的人權保障,實現刑事訴訟中的程序公正。
  • 軟體名稱中帶「廈門」的惡意APP有133個
    360數據顯示:手機安全中心共監測發現名稱中帶「廈門」的惡意APP 133個,共計感染6048人次;這些惡意程序以「廈門旅遊攻略」「廈門掌上城市公交」「廈門新聞」等為名,與正版APP相似,誘導手機用戶下載安裝。  這些APP背後暗藏著多少秘密?本報記者對此進行了深入調查分析。
  • 淺析JVM內存模型:虛擬機如何實現多線程而導致的並發問題
    而高並發高吞吐量也越來越成為服 務端普遍需求,所有能夠開發出高效並發的應用程式,也是成為一個高級程式設計師的必備技能。下面我們將從JVM內存模型的角度來分析虛擬機如何實現多線程、多線程之間由於共享和競爭數據而導致的並發問題及解 決思路。
  • 17款感染惡意軟體的Google Play商店應用被強制刪除
    Part MessagePaper Doc ScannerBlue ScannerHummingbird PDF Converter - Photo to PDFAll Good PDF Scanner谷歌已經從Play Store中刪除了這些應用程式
  • 火球惡意軟體爆發感染全球2.5億電腦
    ·名為Fireball的惡意軟體作為瀏覽器劫持者,可以變成一個功能齊全的惡意軟體下載器,Fireball能夠在受害者機器上執行任何代碼,可以實現竊取數據到安裝其他惡意軟體的各種操作。  ·火球大部分通過捆綁傳播,即安裝在受害者機器上以及想要的程序,通常未經用戶同意。  ·由中國數字營銷機構經營Rafotech。
  • 微信聊天記錄刪除了怎麼恢復? iPhone內存不夠解決方法
    但由於iphone手機價格不菲,我們囊中羞澀的時候總會被迫選擇價格更低但內存也相對更小的iphone。而作為iphone8G,16G的用戶,你會不會經常遇到手機提示你內存不足,要清理內存的情況?我想肯定有。每當遇到這種情況是不是很鬧心,後悔當初沒有買個內存更大的手機呢?但是事已至此,我們怨天尤人也沒用,不如試試小編今天要教大家的幾種清理iphone手機內存的方法吧。