美創科技為了更好地進行入侵檢測和防御,參照各種安全威脅框架和自身的實踐與思考,提出了基于入侵生命周期的攻擊管理模型,作為美創新一代安全架構的三大支柱之一。
入侵生命周期v1.0把入侵過程劃分為7個階段:探索發現、入侵和感染、探索感知、傳播、持久化、攻擊和利用、恢復。入侵生命周期v1.0同樣以ATT&CK作為基本戰術知識庫,匹配到不同的入侵階段。需要注意的是,并非所有的入侵都會經歷這7個階段,也沒有絕對的線性次序。
1)探索發現
在這個階段中,攻擊者會先鎖定攻擊對象,然后利用某些技術手段,盡可能多地獲取目標暴露出來的信息,如通過端口掃描、指紋探測等方式,發現敏感端口及版本信息,進而尋找攻擊點,為下一步入侵做準備。
2)入侵和感染
在這個階段,攻擊者會根據“探索發現”階段所發現的重要信息,來對目標暴露出的攻擊面進行攻擊嘗試,在“探索發現”階段收集到的信息越多,攻擊對象所暴露的攻擊面也就越多,攻擊更易成功。
3)探索感知
攻擊者在成功進入系統內部后,由于是首次進入所以會出現對內部環境不熟悉的情況,這時攻擊者的動作一般會是對當前所處環境進行探索,摸清內部大致的網絡結構,常常伴隨著被入侵本機的敏感信息收集以及對內網大量的端口進行掃描,后續根據攻擊者的目的進行下一步操作。
4)傳播
在此階段,攻擊者根據上一階段在內網探索感知收集到的信息,選擇特定的攻擊手法。如若發現內部是域環境,攻擊者可能會嘗試先攻破域控服務器,再傳播其他機器。若是工作組環境,可能會利用收集到的端口和服務信息,選擇特定漏洞進行批量掃描攻擊,來盡可能多地繼續獲得其他計算機的控制權。
5)持久化
攻擊者在對資產進行惡意操作后,為了能夠減少再次連接的攻擊成本,方便下次進入,會進行“留后門”的操作,常見的后門如:建立計劃任務,定時連接遠程服務器;設置開機啟動程序,在每次開機時觸發執行特定惡意程序;新建系統管理員賬號等。這樣便于攻擊者下次快速登錄并控制該系統。
6)攻擊和利用
攻擊者在此階段便會開始對目標資產進行惡意操作,按照攻擊者意愿,對能利用的數據進行竊取、利用;對操作系統、敏感文件進行破壞、刪除。所有的防御手段都應該極力阻止攻擊者進行到這一階段。
7)恢復
攻擊者在執行所有的攻擊操作時,往往會在系統上留下大量的行為日志,因此在這一階段,攻擊者會對記錄自身痕跡的所有日志進行處理,或刪除或混淆,從而消滅證據,逃避追蹤。
本系列文章基于美創科技入侵生命周期1.0架構,細分各階段攻擊者的常用攻擊手段,并對相關攻擊手段的具體實施方式進行逐一剖析,為安全防御建設提供有力知識補充和反制準備。
路徑劫持攻擊(傳播)
路徑劫持(pathinterception)實際上可以算是一種漏洞,惡意軟件以及滲透測試人員都可以利用這項技術來對目標設備進行滲透和入侵。
這一漏洞的最常見形式如下:在Windows操作系統平臺中,系統會等待例如“c:program.exe”形式的路徑地址,并根據這一地址來提供服務,否則其他的應用程序將會使用沒有加引號的路徑地址來啟動和運行。如果沒有使用引號來將路徑地址括起來,那么系統會對給定的路徑地址進行遍歷,當給定的地址中存在空字符或者空格符的話,操作系統將會執行遍歷路徑下任何一個子字符串與給定路徑匹配的應用程序。攻擊者可以根據這一特點來執行自己的惡意負載。
根據攻擊者的入侵流程和操作手段,路徑劫持在入侵過程的多個生命周期流程有發揮舉足輕重的作用,可以幫助攻擊者完成各類操作。從入侵生命周期角度分析,路徑劫持可作用于攻擊者傳播、攻擊和利用以及持久化三個階段。攻擊者在傳播階段,可以利用路徑劫持執行惡意軟件,以盡可能多地獲得其他計算機的控制權,為之后的擴散攻擊以及構建持久化后門提供便利。
從攻擊行為鏈條的上下文來看,針對數據外傳的行為鏈條輸入輸出如下。
· 輸入:以部分目錄名命名的惡意可執行文件;以windows系統程序或無路徑執行的程序命名的文件;
· 輸出:惡意程序的執行結果
針對路徑劫持,目前主要有以下幾種常用手段:
1. 通過未加引號的路徑進行路徑劫持
如果服務路徑(存儲在Windows注冊表項中)和快捷方式路徑具有一個或多個空格,并且沒有用引號引起來(例如,C:\unsafe path with space\program.exe VS "C:\safe path withspace\program.exe"),則很容易受到路徑攔截。攻擊者可以將可執行文件放置在路徑的更高級別的目錄中,Windows會解析該可執行文件而不是預期的可執行文件。
例如,如果快捷方式中的路徑為C:\programfiles\myapp.exe,則對手可能會在此處創建一個程序,C:\program.exe而不是預期的程序。
下面看一個實例:
(1) 在C:\下放一個計算機執行文件(可以是可執行的惡意文件),重命名為Program.exe
(2) cmd中運行C:\Program Files\taskschd.exe
(3) 可以看到此時發生了路徑劫持,運行的是Program.exe文件(若將Program.exe文件換為勒索病毒文件,則運行taskschd.exe受到路徑劫持后,實際運行的為勒索病毒)
2. 按PATH環境變量進行路徑劫持
某些執行程序的方法(即使用cmd.exe或命令行)僅依靠PATH環境變量來確定未給出程序路徑時搜索程序的位置。
例如C:\examplenet.exe(可以是可執行的惡意文件)位于Windows目錄%SystemRoot%\system32(例如C:\Windows\system32)之前的PATH環境變量中列出了任何目錄中,則在C:\example path下,從命令行執行“net”時,將調用名為net.exe的程序,而不是Windows系統“net”。
下面看一個實例:
(1) 正常執行net view時,結果如下圖:
(2) 環境變量中,可以看到Windows目錄%SystemRoot%\system32(C:\Windows\system32)
(3) 因此,將計算機執行文件(可使用惡意可執行文件)放入C:\Windows目錄下,并重命名為net.exe。
(4) 進入C:\Windows目錄下,執行 net view,可發現該命令實際上執行的是net.exe,也就是計算器。
3. 通過搜索順序進行路徑劫持
當攻擊者濫用Windows搜索未指定路徑的程序的順序時,就會發生搜索順序劫持。搜索順序因執行程序所使用的方法而異。但是,Windows通常在搜索Windows系統目錄之前先搜索啟動程序的目錄。
下面看一個實例:
(1) 在桌面隨意新建一個文件夾,并將計算機文件(可使用惡意可執行文件)重命名為net.exe放入文件夾中
(2) cmd中,進入該新建目錄,并執行net user
(3) 此時,可以觀察到該命令執行的是net.exe文件,并非windows系統的net。