外殼代碼是一系列機器代碼或可執行指令,被注入計算機內存,目的是控制正在運行的程序。在這種攻擊中,其中一個步驟是控制程序計數器,它標識要執行的下一條指令。然后可以將程序流重定向到插入的代碼。入侵的機器代碼稱為攻...
外殼代碼是一系列機器代碼或可執行指令,被注入計算機內存,目的是控制正在運行的程序。在這種攻擊中,其中一個步驟是控制程序計數器,它標識要執行的下一條指令。然后可以將程序流重定向到插入的代碼。入侵的機器代碼稱為攻擊的有效負載,是術語shellcode通常所指的元素。此方法通常用于通過打開操作系統命令外殼來授予攻擊者訪問權限,因此,代碼注入攻擊一般稱為Selcode。
![]()
Shellcode通常是用一種具有C++等低級系統訪問的編程語言編寫的。被攻擊的漏洞通常涉及程序如何分配內存、檢查輸入數據的有效性以及處理內存錯誤。軟件開發人員通常可以通過嚴格定義輸入數據和拒絕不正確的值來避免此威脅。如果未選中,則為如果需要比為該值分配的內存更多的存儲空間,則可能會被接受。這會導致一種稱為緩沖區溢出的安全漏洞,其中一部分數據被寫入到與該值分配的空間相鄰的內存位置中。當小心操作時,這種異常會允許引入侵入性代碼外殼代碼通常是用具有低級系統訪問權限的編程語言編寫的,例如匯編、C或C++但是,根據目標漏洞的不同,可以通過插入解釋腳本語言(如PERL)的代碼或虛擬機的字節碼(如JAVA)來實現相同的結果。代碼可以在程序計數器被劫持之前、期間或之后被植入。因此,入侵代碼可能包含在目標計算機或通過網絡連接實時傳輸。本地外殼代碼攻擊旨在讓攻擊者控制他或她有物理訪問權限的計算機。在這種情況下,目標可能是創建例如,具有管理員權限的帳戶。類似地,如果正在運行的進程具有高權限級別,成功利用此漏洞將暫時授予入侵者相同級別的訪問權限。遠程計算機上運行的進程可以使用標準網絡協議與目標計算機通信。連接回外殼代碼指示目標計算機啟動與入侵者計算機的連接。如果入侵者啟動連接,則該代碼稱為bindshell,因為它試圖控制遠程計算機上稱為端口的網絡連接。連接回接方法的應用更為廣泛,因為防火墻很少禁止出站連接