應用

技術

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點新聞
企業(yè)注冊個人注冊登錄

基于Linux沙箱分析物聯(lián)網(wǎng)(IoT)惡意軟件

2022-07-19 16:06 認知計算與云安全

導讀:過去幾年,物聯(lián)網(wǎng)設備的弱安全標準利用了Linux惡意軟件。使用默認密碼、過時的固件或系統(tǒng)漏洞暴露的telnet和ssh服務——所有這些都是讓攻擊者構建由數(shù)千個受感染的嵌入式設備組成的僵尸網(wǎng)絡的方法。

過去幾年,物聯(lián)網(wǎng)設備的弱安全標準利用了Linux惡意軟件。使用默認密碼、過時的固件或系統(tǒng)漏洞暴露的telnet和ssh服務——所有這些都是讓攻擊者構建由數(shù)千個受感染的嵌入式設備組成的僵尸網(wǎng)絡的方法。本文介紹在Linux平臺上用于自動化惡意軟件分析的多平臺沙箱的設計。

1、Linux沙箱技術

在計算機安全領域,沙箱(Sandbox)是一種程序的隔離運行機制,其目的是限制不可信進程的權限。沙箱技術經常被用于執(zhí)行未經測試的或不可信的客戶程序。為了避免不可信程序可能破壞其它程序的運行,沙箱技術通過為不可信客戶程序提供虛擬化的磁盤、內存以及網(wǎng)絡資源,而這種虛擬化手段對客戶程序來說是透明的。由于沙箱里的資源被虛擬化(或被間接化),所以沙箱里的不可信程序的惡意行為往往會被限制在沙箱中。

沙箱技術一直是系統(tǒng)安全領域的挑戰(zhàn),不存在說哪一種方案是足夠安全的。沙箱技術方案通常是需要結合多種系統(tǒng)安全技術來實現(xiàn),采用防御縱深(Defencein Depth)的設計原則,筑建多道防御屏障,盡可能地將安全風險將為最低。下面我們主要討論如何利用Linux kernel所提供的安全功能來建立有效的沙箱技術。

  • Linux安全模型相關的內容:

  • 每個進程都有自己的地址空間;

  • MMU硬件機制來保證地址空間的隔離;

  • Kernel是系統(tǒng)的TCB(Trusted Computing Base),是安全策略的制定者和執(zhí)行者;

  • 進程是最小的權限邊界;root具有最高權限,它能控制一切;

  • 其它用戶受DAC(Discretionary Access Control)限制,如文件系統(tǒng)的UGO權限控制。

進程是最小的權限邊界,其根本原因是MMU能保證進程地址空間的隔離。Linux Kernel還提供了與進程降權(drop privilege)相關的一些功能:

  • setuid

  • POSIX.1e capability

  • Chroot jail

  • Quota control(eg,cgroup,namespace)

  • Linux Container

  • Linux Security Module(LSM)

2、Linux惡意軟件分析的挑戰(zhàn)

頂級分析創(chuàng)建管道的開始。它充當整體分析的主管。在這部分管道中,二進制文件被預先分析,以便為其他分析模塊(例如文件格式細節(jié)或CPU架構)提供必要的元數(shù)據(jù)。

靜態(tài)分析使用許多靜態(tài)分析工具之一搜索相關的靜態(tài)模式??紤]的工具主要是readelf、objdump、pyelf、radare2和RetDecfileinfo。

動態(tài)分析跟蹤運行二進制、新創(chuàng)建的進程、文件系統(tǒng)操作和系統(tǒng)調用。管道應該易于擴展,以便用戶可以定義自己的分析模塊。自定義模塊的示例是Virus Total模塊,它調用免費的Virus Total API來獲取惡意軟件掃描結果。各個模塊的輸出組合成最終的JSON輸出。然后可以進一步處理該最終輸出。進一步的處理可以在網(wǎng)絡圖形用戶界面中手動進行,也可以通過YARA的自定義模塊進行。

3、執(zhí)行分析

在目標架構上運行和分析示例的第一步是準備仿真環(huán)境。物聯(lián)網(wǎng)惡意軟件正在為廣泛傳播的架構而構建。這導致選擇開源項目QEMU作為模擬準備好的系統(tǒng)的唯一可行選項。QEMU支持多種架構,包括MIPS、ARM、SPARC、AArch64、PowerPC。目標系統(tǒng)由自建Linux內核和準備好的文件系統(tǒng)和分析工具組成。為了交叉編譯鏡像,使用了buildroot項目。Buildroot是一個通用工具,有助于為嵌入式系統(tǒng)開發(fā)Linux。

3.1動態(tài)分析

實現(xiàn)動態(tài)分析的關鍵是省略用戶級工具ptrace syscall并準備內核級跟蹤。SystemTap被選為最終解決方案,因為它提供了簡單的類C語言來定義探測器,并且惡意軟件分析師可以更輕松地更改或添加動態(tài)分析功能。當前的實現(xiàn)使用探針來創(chuàng)建進程樹、跟蹤系統(tǒng)調用并標記打開或刪除的文件。

構建過程如下:

  • 將SystemTap(.stp)腳本翻譯成C語言。

  • 針對已經準備好的內核,將C代碼交叉編譯為目標架構的內核模塊。

  • 將構建的內核模塊插入目標文件系統(tǒng)。

3.2網(wǎng)絡分析

網(wǎng)絡分析模塊加載tcpdumppcap文件并提供逐包分析。在最初的原型中,我使用了Python庫——Scapy和dpkt。事實證明,這兩種方法在分析時都很慢,甚至在加載更大的pcap文件時也遇到了問題。因此,我準備了與Python綁定的C++庫來解析pcap數(shù)據(jù)。

網(wǎng)絡分析儀中實現(xiàn)的第一個重要功能是端點檢查。Analyzer使用免費的Geolite國家、城市和ASN(自治系統(tǒng)編號)數(shù)據(jù)庫。然后在多個黑名單中搜索IP地址。

其他通用指標包括端口統(tǒng)計信息、每個端點傳輸?shù)臄?shù)據(jù)量、TCPSYN、TCPFIN數(shù)據(jù)包。最后,analyzer提供L7分析。目前輸出的L7信息包括解析的DNS查詢、HTTP請求、IRC消息和telnet數(shù)據(jù)。

還注意到網(wǎng)絡異常。這些異常是例如命中列入黑名單的IP地址、發(fā)送格式錯誤的數(shù)據(jù)包或明顯的IP和端口掃描。

4、分析構建及結果

基于Docker容器化,各個沙箱元素的連接構建。單個沙箱包括:

Flask API-WebAPI具有用于創(chuàng)建新任務(完整文件分析或僅pcap分析)、查看任務狀態(tài)、結果和下載分析相關文件(例如捕獲的pcaps)的端點。

  • RabbitMQ-它用作使用AMQP協(xié)議的消息代理。

  • 它存儲和控制著進入沙箱的任務隊列。

  • MariaDB-開源MySQL替代方案。

  • 它存儲分析任務結果。

  • Nginx-在實施的系統(tǒng)架構中,nginx代理將傳入請求傳遞給uwsgi服務器(運行Web API)。

  • Sandbox workers-運行分析管道的工作者節(jié)點。

Docker容器使用與主機相同的內核,因此它們的開銷最小。配置文件——Dockerfiles——由指令組成。Dockerfile指令描述了構建最終docker鏡像的過程。這些docker鏡像帶有它們的所有依賴項,并且應該在所有安裝了docker的系統(tǒng)上正常運行。我準備了最適合運行多容器應用程序的docker-compose文件??梢院唵蔚剡\行:

docker-compose up –scale worker=10

啟動完整的系統(tǒng)并擴展沙箱工作人員的數(shù)量以滿足所有請求。

在分析的惡意軟件中看到的行為包括:

  • IP掃描——我們數(shù)據(jù)集中最常見的行為。由于當前大多數(shù)物聯(lián)網(wǎng)惡意軟件都會創(chuàng)建僵尸網(wǎng)絡,因此其目標(機器人)通過在其他設備中發(fā)現(xiàn)漏洞來傳播。

  • LiSa區(qū)分本地網(wǎng)絡和Internet掃描,并在發(fā)生此類事件時觸發(fā)異常。通常的目標端口是端口23(SSH)。

  • 端口掃描——惡意軟件掃描本地網(wǎng)絡中的許多端口以查找打開的端口。

  • HTTP請求–檢測到多個異常HTTP請求并將其標記為異常。HTTP請求可能包含垃圾或目標端點以獲取數(shù)據(jù)(例如GET/version)。

  • 格式錯誤的DNS數(shù)據(jù)包——這些數(shù)據(jù)包在標頭值中包含大量數(shù)字(問題、答案、權限和其他資源記錄的數(shù)量)。

  • IRC–惡意軟件連接到IRC服務器并等待來自CC服務器的命令。

  • 針對特定國家——樣本僅與特定國家的數(shù)百個主機聯(lián)系。這些國家是越南、中國、孟加拉國、泰國和印度。

  • 更改了進程名稱——使用帶有請求PRSETNAME的Syscallprctl來隱藏惡意軟件進程。

  • 列入黑名單的端點——在黑名單中發(fā)現(xiàn)了幾個端點的IP地址。

  • 以指定應用程序為目標——示例以Wordpress應用程序及其端點/wp-login.php為目標。

  • Ptrace–Ptrace系統(tǒng)調用被檢測為一種反調試技術。

  • 進程創(chuàng)建——檢測到的通常用于守護應用程序的分叉進程。

5、結論

首先,廣泛的網(wǎng)絡分析、異常檢測和使用Python綁定實現(xiàn)C++庫,克服了常用的包Scapy和dpkt。其次是SystemTap監(jiān)控環(huán)境及其交叉編譯工具鏈的準備。使用內核級分析可以擴展到完整的系統(tǒng)監(jiān)控解決方案。