Provenance-Aware Tracing of Worm Break-in and Contaminations: A Process Coloring Approach(CCF B)
1.Abstract
為了研究自傳播網路蠕蟲的利用和污染,需要一種來源感知的跟蹤機制,來源不明導致難以快速準確地識別蠕蟲的入侵點(即,在受感染的主機中運行的遠程可訪問的脆弱服務),并且會引起大量的日志資料檢查開銷,本文介紹了一種基于源頭感知的蠕蟲入侵和污染追蹤方法——行程著色(Process Coloring)法的設計、實作和評價,
更具體地說,行程著色為每個遠程訪問的服務器或行程分配了一個“顏色”,一個唯一的系統范圍的識別符號,顏色將被派生的子行程繼承或通過行程動作間接擴散(例如讀或寫操作),
1.1行程著色
行程著色帶來了兩個優點:
- 它可以在詳細的日志分析之前,快速基于顏色來識別被蠕蟲利用的斷點.
- 根據關聯的顏色對日志資料進行自然磁區,有效地減少了需要檢查的日志資料量,相應地減少了調查的日志處理開銷
1.2基于虛擬機的自省技術
基于虛擬機自省技術(introspection technique),開發了一種防偽的日志收集方法.
2.Introduction
2.1對抗蠕蟲病毒的要點
在對抗蠕蟲時,以下任務對了解蠕蟲的利用細節和從蠕蟲污染中恢復受感染的宿主至關重要:
- 確定入侵點,即蠕蟲通過其感染受害者的脆弱的、遠程可訪問的服務.
- 確定蠕蟲在受害者體內駐留期間造成的所有污染和損害,要執行這些任務,需要進行各種入侵分析.
2.2基于日志的入侵分析工具的挑戰
- 許多工具依賴于外部確定的檢測點,從檢測點開始對入侵的入侵點進行取證調查,然而,由于蠕蟲“從感染到檢測”的持續時間可能很長,當這樣的檢測點被識別時,可能需要幾天或幾周的時間,因此,希望日志資料包含更多的資訊,并提供“線索”,以發起更及時的調查,
- 當前作業系統缺乏在日志分析之前對日志資料進行預分類的來源感知機制,系統產生的日志數量巨大,未分類的大容量日志資料可能會導致蠕蟲調查持續時間長、開銷大,盡管人工調查人員可以提供啟發式方法(如Backtracking Intrusions中的“過濾規則”)來減少要檢查的日志空間,但這種啟發式方法可能會導致蠕蟲調查結果的不準確或不完整
- 許多基于日志的工具沒有解決防偽日志收集,而這在處理高級蠕蟲時至關重要,
2.3 行程染色的提出
在本文中,我們提出了行程著色的設計、實作和評價,這是一種有效的來源感知方法,蠕蟲入侵和污染調查,更具體地說,行程著色將一個“顏色”,一個唯一的系統范圍的識別符號,關聯到每個遠程訪問的服務器或行程——一個潛在的蠕蟲入侵點,顏色將直接繼承任何派生的子行程,或通過行程的操作間接擴散(例如,讀或寫操作),結果,任何行程或物件(例如,檔案或目錄)受彩色行程影響將被相同的顏色污染,這在相應的日志條目中被記錄,工藝著色自然帶來以下兩個關鍵優勢:
- Color-based identification of a worm’s break-in point(基于顏色的蠕蟲侵入點識別):原來的脆弱服務被蠕蟲利用作為侵入點,所有被蠕蟲感染的行程和被污染的物件都將被與原來的脆弱服務相同的顏色所污染,通過簡單地檢查任何與蠕蟲相關的日志條目或任何受蠕蟲影響的物件的顏色,在詳細的日志分析之前,可以立即確定相應蠕蟲的切入點(通過被不同的顏色污染來判斷是受到了哪個侵入點的影響,注意是不同的侵入點不同的顏色),
- Natural partition of log data(日志資料的自然分類):不需要再查看全部的日志,只需要查看被染上了相同顏色的日志就可以,這樣可以減少相關日志資料的數量,減少開銷,
2.4 防偽日志收集
本文的模型解決了防偽日志資料記錄的重要要求,虛擬機技術,如VMwareDenali、Xen和User-Mode Linux (UML),提供了比系統呼叫鉤子機制更好的檢測工具,可以安全地獲取和收集內部狀態,包括蠕蟲利用和污染資訊,采用了一種類似于tolivewire[28]的技術,并為umlvirtual machinemonitor(VMM)開發了一個擴展,用于防偽登錄
3.Process Coloring Approach(行程著色方法)
3.1 Initial Coloring(初始化著色)
顏色分配發生在服務器行程啟動后,但在服務客戶端請求之前,蠕蟲入侵系統會選擇利用一個系統行程的薄弱點,所以被利用的這個行程所執行的操作都會導致相應顏色的擴散,因此,被相應顏色染色的行程,系統資源,日志物體等就可以為蠕蟲的入侵提供證據,
本文采用的是:在作業系統的內核中定義一個區域(第4部分講的是在PCB中加了一個區域)來記錄行程的當前顏色(一個系統級范圍的唯一識別符號),
之所以沒有選擇用PID(行程識別符號)來及記錄的原因是:即時PID可以唯一表示一個行程,但是他并不適合來表示染色,
- PID并不能表達入侵斷點的資訊 (比如僵尸網路,很難僅僅通過PID或者其父行程的PID就知道起入侵點)
- 行程可能會動態地將Customized Code注入一個活動行程得代碼空間,這樣PID就不能表示出前一個行程對后一個行程的影響(什么意思?沒懂),
3.2 Color Diffusion Model(顏色擴散模型)
在一些行程被Initial Color(初始著色)之后,顏色就會通過被染色得行程得一些活動來擴散到其他的行程上,本文研究的是蠕蟲病毒,所以研究的重點是那些通過系統級的共享資源(比如檔案,目錄,套接字Socket)被染色的行程,通常蠕蟲病毒的擴散都需要伴隨著一些系統呼叫,通過系統呼叫去影響系統資源,
下表給出了一虛擬操作的染色擴散方法:

這種行程顏色的擴散會帶來很多很多資訊流,資訊流中有著各種具體/隱藏的資訊,本文指考慮通過系統呼叫介面來傳遞的資訊流(行程作為Subjects,中間資源作為Objects),下面介紹兩種基于系統呼叫的顏色傳播方法:
- Direct diffusion(直接擴散):
1.1 Process spawning(行程增殖):如果一個行程使用fork, vfork, clone 等系統呼叫,那么創建的子行程就會繼承父行程的顏色
1.2 Code injection(代碼注入):一個行程通過注入代碼來改變其他行程的記憶體空間,從而改變他的功能,那么這個被注入代碼的行程的顏色也將得到相應的更新
1.3 Signal processing(信號執行) :行程可以發送一些特殊信號(比如kill消滅行程),因此來影響這個資訊流執行的程序(顏色怎么染色這里沒有說,不過參照Table1來看,destory應該是不需要染色的,直接把行程銷毀了)
- (Indirect diffusion)非直接的擴散:從行程S1到S2可以被表示為S1->O->S2,這個O就是一個中間資源( intermediate resource),比如在行程運行程序中有些資源會動態的創建,當行程終止就會消失,還有一些資源會持續的存在(比如行程從資源中獲取輸入)并且在之后影響其他行程,這就屬于非直接的傳播,為了支持這種非直接的傳播的影響的記錄,為這種中間資源豐富(enhance)一個系統資料結構,之后一旦這個有行程從這個被"tainted"(污染)的資源獲取輸入的行程,那么這個行程就被被染上和這個資源相同的顏色
Example:

比如上圖這個例子,這個蠕蟲病毒通過利用Apache這個易受攻擊的服務來作為切入點,在圖中,橢圓代表Process,正方形代表File,菱形代表網路套接字Socket,在一開始Apache行程被染成RED,在成功利用這個點之后httpd" process (PID: 2568, color:
RED) 執行(sys-execve syscall) 影響了 “bin//sh” (2568, RED),然后執行(sys_execve
syscall)到了行程"/binhash -i" (2568, RED),然后這個行程進一步Spawns出了兩個新的行程:行程 “/bin/rm-rf/tmp/.bugtraq.c” (2586, RED) and 行程 “/bin/cat” (2587, RED),他們的顏色是繼承他們的父類2568的RED,之后2587行程執行write操作更新檔案 (/tmp/.uubugtraq),所以這個檔案也被污染為RED,然后這個檔案將會被用來產生蠕蟲行程來感染其易受攻擊的主機,通過這種非直接的傳播,被污染的程式也會被染上相同的顏色,
3.3 Log Information Collection(日志資訊的收集)
行程染色使用**系統呼叫攔截(syscall interception)**來產生日志物體,并且用行程的顏色來標記他們,
系統呼叫攔截目前一般是采用系統呼叫為基礎的鉤子機制:
-
Original system calls基本系統呼叫圖

-
Wrapped system calls包裝系統呼叫

這種方式會更改系統呼叫表,并且將回應呼叫(corresponding calls)重定向到它自己的實作,不幸的是,如果之后系統呼叫表被更改,那么之前的重定向和攔截也將變得無效(也就是說這種方法是更改系統呼叫表,當表變化之后,那么之前的攔截也就消失),這種方式容易遭受re-hooking attack -
Intercepted system calls攔截系統呼叫

這種方式會在喚醒系統呼叫調度器之前或者之中攔截系統呼叫,這種方法也有更好的抗干擾性,但是仍然有可能被攻擊,
本文的設計思路是:基于虛擬機的自省(introspection)機制,和圖C的區別在于: interception happens not in the syscall dispatcher, but on the virtual machine virtualization path(攔截并不是發生在系統呼叫器上的,而是發生在虛擬機的虛擬路徑上)這種攔截是虛擬機底層實作的一部分,因此有更加強大的抗干擾能力,
關于每個被攔截的系統呼叫的資訊(例如當前行程、系統呼叫號、引數、回傳值和回傳地址)形成一個日志條目,該日志條目用當前行程的顏色標記,
4. Implementation(實作)
模型利用了UserMode Linux (UML),這是一個開放源代碼的evm實作,其中客戶作業系統直接在主機作業系統未更改的用戶空間運行(And only considers the ext2 file systerrt)
4.1 Process Color Setting(行程著色設定)
在這個模型中為行程控制塊(PCB)多加了一個資料結構-Color,同時增加了兩個系統呼叫來利用使用這個Color屬性(sys setcolor 和 sys getcolor),但是兩種系統呼叫的介面一但暴露就有可能被蠕蟲病毒利用,從而隱藏他們的攻擊,所以本文對這個問題的解決方法是:在系統攔截中創建并維護一張分離的顏色映射表,使得行程染色這個程序只能夠在服務開始的某一個時間段進行,
4.2 Color Diffusion(給出顏色擴散的具體操作)
Direct diffusion:
- 如果一個行程是被(fork/vfork/cIone) 這種系統呼叫創建的,那么繼承其父類的顏色,
- 這里先介紹一下petrace(ptrace 提供了一種機制使得父行程可以觀察和控制子行程的執行程序,ptrace 還可以檢查和修改子行程的可執行檔案在記憶體中的image及子行程所使用的暫存器中的值,通常來說,主要用于實作對行程插入斷點和跟蹤子行程的系統呼叫), 如果一個行程正在被系統呼叫petrace操作,那么染色將取決于系統呼叫的引數,如果呼叫引數是:(ptrace_peektext,ptrace_peekdata,ptrace_peekuser),也就是說這些都是主行程從子行程讀取一些資訊,子行程的顏色將被染色到主行程,相反,如果執行的引數是像(ptrace_poketext,ptrace_pokedata,ptrace_pokeuser)這種系統呼叫,相當于是對行程寫入,那么主行程的顏色就會被染色到子行程中,
- 對于Signal processing,發送信號的行程的顏色將會被擴散到接受信號的行程中
- sys_waitpid和 sys-wair4 這樣的系統呼叫也會導致顏色從子行程到父行程的擴散
Indirect diffusion:
非直接的擴散主要是通過中間資源實作的,
- 對于持續性資源,檔案和目錄是兩個最容易被蠕蟲利用的,由于它們是一種持續性的資源,所以它們的顏色需要被持續的更新記錄,由于直接擴充資料結構可能會導致讀寫檔案等程序或者底層檔案系統的崩潰,所以本文作者通過觀察索引結點的資料結構發現i_file_acl這個區域在ext2 檔案系統中是沒有用的,所以不需要額外添加資料結構,直接使用這個資料結構作為記錄顏色的資料結構,
- 對于持續性資源,當前的模型只支持套接字、共享記憶體和管道,但是,對于其他非持久性資源,添加一個新的欄位來記錄是很容易的,
4.3 Log Collection(日志收集)
日志收集機制基于底層虛擬機實作,即uml(UML這里不是統一建模語言,而是UserMode Linux的縮寫,從字面上看,是在用戶態運行linux內核,即將內核當作一個應用程式在跑,這樣我們就可以用除錯應用層程式的方法除錯內核),如圖4所示,uml采用基于系統呼叫的虛擬化方法,在主機作業系統的用戶空間中支持虛擬機,
利用ptrace的能力,會有一個特殊的執行緒被創建來攔截VM中任何行程發出的系統呼叫,并將它們重定向到用戶作業系統內核,系統呼叫日志收集的攔截器位于系統呼叫虛擬化路徑上,因此,它可以抵抗VM內部運行的惡意行程的篡改,
而且,一旦攔截器收集了一定數量的日志資料(例如16K),日志資料將被下推到主機域(Host domain),這樣做的一個重要的好處是,在主機域中對日志檔案的分析不會中斷VM的正常執行,這就產生了基于染色日志資料的外部運行時系統監控(external runtime system monitoring)的可能性,(應該是說這樣處理帶染色的日志資料開銷會比較合理吧)
5. Evaluation
5.1 實驗環境和運行時開銷
本文使用McVoy的LMbench[40]進行了一系列實驗,這是一套針對UNIX平臺各種子系統的基準測驗,實驗是在運行Linux 2.4.18的戴爾PowerEdge 2650服務器上進行的,該服務器使用2.6GHz Intel Xeon處理器和2GB RAM,
本文進行了三組實驗,將LMbenching運行在:
- Original Linux kernel (Linux),
- Unmodified UML kernel (UML)
- Modified UMLkernel with process coloring capability (COLOR)

如上圖所示,圖( a )是3種方法的行程操作開銷,圖( b )是context switch times (環境交換次數?)圖( c )是檔案和虛存的延遲,
從上面這幾張圖看的出來,由于用戶級的應用(UML)使得開銷較原始系統有了很大的提升,但是可以看出CLOLR系統對UML來說,開銷的增加并不大,原因在于:
- 攔截器的位置:通過在系統呼叫虛擬化路徑中定位攔截,我們的原型可以避免額外的背景關系切換系統呼叫,這在其他系統呼叫攔截方案[39]中是需要的,
- 日志資料下推不會在每次系統呼叫時執行,相反,一個內部快取(l6K)被維護來分攤整個磁盤寫操作,
- 我們注意到程序著色并不依賴于特定的虛擬機平臺,造成損失降低的主要因素是虛擬機本身而不是程序著色造成的,未來使用性能更強大的虛擬機能進一步增強其效能,
5.2 真實的蠕蟲病毒測驗
本文測驗了三種蠕蟲病毒Lion Slapper SARS
使用了一種虛擬分布式的蠕蟲場地-vGround,這是一個現實的、受限的、縮小的網路環境,由網路物體和終端主機組成,它們是由具有程序著色能力的虛擬機實作的,
其具有以下優點:
- vGround使創建運行真實服務的虛擬機以及作為服務客戶端運行的虛擬機變得簡單而高效,
- vGround通過限制vGround內的所有流量來實作安全的蠕蟲實驗,
- vGround有助于用多載體蠕蟲(如拉面蠕蟲[4])進行實驗,這種蠕蟲通過不同的切入點感染不同的宿主(vm),
行程染色有以下幾個關鍵的好處:
- 我們可以在詳細的日志分析之前就識別出蠕蟲的入侵點
- 在染色的情況下,需要被詳細審閱的日志會有所減少,由于日志會被染色自然的分類,所以不斷增加的后臺服務訪問( background service accesses)將會進一步減少與蠕蟲相關的日志資訊(我感覺應該是:訪問會導致染色,染色會導致自然分類,從而更好地判斷哪些日志是有用的資訊,然后減少需要審閱的日志)
- 由于日志分析之前就知道入侵點,所以可以進一步根據入侵點過濾掉那些和入侵點有關的正常訪問(和蠕蟲病毒感染有不同的足跡的正常訪問)
下面部分介紹3種蠕蟲病毒的調查結果:
5.2.1 Lion Worm Contamination Investigation
5.2.2 Siapper Worm Contamination Investigation
5.2.3 SARS Worm Contamination Investigation
具體不在這里展開
6. Other Applications and Possible Attacks
6.1 Other Applications
6.1.1 Malware investigation
行程染色可以自然支持于惡意軟體調查,其目標是:理解惡意軟體可能的行為和對系統的影響,從而更好的引導系統從惡意軟體的感染里修復自己,著色程序非常有效的暴露了以下兩個有趣的例外點:
-
Color Mixing(顏色混合):就是可能會遇到不同的顏色會擴散到一個已經被染色的行程上的情況,這表明這個行程被另一個不同顏色的其他行程所影響,考慮到最初給相互無關的服務流程分配了不同的顏色,這種跨服務影響很可能是一種例外現象,需要進一步研究調查,
例子:我們在一個VM中運行Bind和Apache服務,并讓Lion蠕蟲通過bind vulnerability感染vm,Lion通過替換索引來污染系統,我們觀察到記錄后續web訪問的日志條目帶有colors of both Bind and Apache(為什么會這樣?) -
Dangling File(檔案懸掛):識別懸垂檔案實際上可以幫助揭示rootkit的存在(不懂!)
6.1.2 Run-time monitoring and log visualization
日志下推機制(這個機制的實作原理到底是什么)和基于顏色的日志磁區提供了一種方便的方式,可以從外部監控網路服務器系統的運行狀態,而不中斷系統的操作,程序著色可用于識別運行時日志顏色所顯示的可能例外(例如,顏色混合,特定顏色/服務的日志模式偏離),從而發出更及時的警報,本文作者目前正在使用一種日志可視化工具擴展其原型,這使得管理員更直觀地監控系統狀態,
6.2 Possible Attacks and Counter-Measures(可能的攻擊和對策)
- Jamming attack:蠕蟲可以故意引入許多噪聲日志條目來隱藏它的實際意圖,例如,蠕蟲可以呼叫大量無害的或不相關的系統呼叫,只是為了隱藏其真正的感染嘗試,這些日志也會被染上特定的顏色,從而也會觸發警報,基于顏色的蠕蟲入侵點識別能力在這種攻擊下仍然有效,盡管需要更仔細的分析來揭示模糊的意圖(我感覺對于這種攻擊分析會導致分析大量的無用日志,這一點還沒有解決)
- Low-level attack:活動的行程和中間資源相關的顏色的完整性對蠕蟲研究至關重要,由于當前的原型在被檢查的系統內核中維護著顏色資訊,因此這些資訊有可能被某些低級攻擊所操縱,目前已經提出了CoPilot[43]、Livewire[28]和Pioneer[46]等解決方案來解決內核完整性問題,一種可能的對策是創建陰影結構(shadow structure),它由虛擬機監視器(VMM)維護,并且完全無法從虛擬機內部訪問,與現有原型相比,影子解決方案在從虛擬機內省收集的底層資訊中提取虛擬機操作語意方面面臨更大的挑戰,這可能會影響蠕蟲調查結果的準確性和完整性,
- Diffusion-cutting attack:比如通過一個入侵點進行入侵之后盜取了密碼,然后使用密碼從另外一個入侵點進行入侵,系統是無法將這兩個入侵點聯系在以前的,然而,第二次入侵的任何例外都會立即暴露負責的登錄會話,這也許能夠識別被破解的密碼,基于第一次入侵的日志資料,管理員可能仍然能夠將這兩次間斷的入侵聯系起來,(還是非常的麻煩)
- Color saturation attack:如果蠕蟲知道配色方案,它可能會嘗試從不同的服務獲得更多的顏色后,這樣相關的顏色不能唯一地識別斷點,然而,顏色飽和攻擊將立即導致警報顏色混合-會觸發進一步的調查,顏色飽和攻擊暴露了一個弱點,本文目前的原型使用單一的顏色進行,盡管本文的模型是可以適配多種顏色的(每一個不同的位元位就可以代表一種顏色),但是無法區分繼承來的顏色和擴散來的顏色:繼承的顏色行程只能從它的父行程繼承,不會被它自己或別人的行為改變,另一方面,擴散的顏色通過它自己或別人的動作(例如sys-read sys-write)來反映顏色的擴散,有了這種區別,繼承的顏色可以用來劃分日志資料,而擴散的顏色可以用來檢測顏色飽和度攻擊,并自然地識別所有混色點,以便進一步檢查受影響的磁區,
7 Related Work
-
程序著色可以集成到現有的基于日志的入侵調查工具中,從而使它們變得具有來源意識:
BackTracker識別可能影響這個檢測點的檔案和行程,并顯示的依賴關系圖,backtracker的后續作業提出了一種前向跟蹤功能,該功能可以在回溯會話之后識別所有可能由入侵造成的損害,BackTracker以及 forward tracking 都需要整個日志資料作為輸入,通過程序著色增強,可以首先通過檢測點的顏色識別入侵點蠕蟲,并通過基于顏色的日志磁區減少輸入日志資料量,從而實作更高效的回溯和前進跟蹤會話,此外,日志條目的顏色和模式可能在運行時提供警報,從而導致更及時的調查, -
行程著色也可以應用于增強檔案和事務修復/恢復系統
-
程序著色作為一種高級的日志記錄機制,可以集成到其他基于虛擬機的網路系統中,為這些系統添加源感知,
8 Conclusion
本文提出行程染色(Process coloring)一種新穎的系統方法,可以感知源跟蹤蠕蟲入侵和污染,通過為每個遠程可訪問的服務關聯一種獨特的顏色(目前我認為是不同的入侵點有不同的顏色,不一定對,我暫時這么理解),并根據系統中行程執行的操作擴散顏色,行程著色實作了兩個關鍵好處:
(1)在詳細日志分析之前基于顏色識別蠕蟲的侵入點,
(2)基于顏色的flog資料磁區,程序著色改進了基于日志的蠕蟲調查工具,減少了要處理的條目的數量,并提供了與顏色相關的“線索”,以便更及時地調查,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352108.html
標籤:其他
上一篇:簡要SQL注入
