Shellcode
此條目没有列出任何参考或来源。 (2021年11月2日) |
系列條目 |
資訊安全 |
---|
![]() |
相關安全分類 |
威脅 |
防禦 |
shellcode是一段用于利用软件漏洞而执行的代码,shellcode為16進位之機械碼,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写,由於現代電腦系統基本上啟用NX位元保護使得機械碼無法直接執行,可透過返回導向編程編寫shellcode。 可在暫存器eip溢出後,塞入一段可讓CPU執行的shellcode機械碼,讓電腦可以執行攻擊者的任意指令。
分类
shellcode可以按照攻击者执行的位置分为本地shellcode和远程shellcode.
本地shellcode
本地运行的shellcode经常用于利用软件漏洞提升权限。比如在Linux下由普通权限提升至root权限。
远程shellcode
遠端 Shellcode 用於當攻擊者希望針對本地網絡、內部網絡或遠程網絡上運行的弱點進程進行攻擊時。如果成功執行,Shellcode 可以讓攻擊者通過網絡訪問目標機器。遠端 Shellcode 通常使用標準的 TCP/IP 套接字連接,以允許攻擊者訪問目標機器上的 Shell。這樣的 Shellcode 可以根據連接的建立方式進行分類:如果 Shellcode 建立連接,則稱為“反向 Shell”,或稱為“連接回 Shellcode”,因為 Shellcode 連接回攻擊者的機器。另一方面,如果攻擊者建立連接,則稱為 bindshell,因為 Shellcode 會綁定到受害者機器上的某個端口。有一種特殊的 Shellcode 名為 bindshell random port,它跳過了綁定部分,並在操作系統提供的一個隨機端口上進行監聽。因此,bindshell random port 成為迄今為止 x86_64 中最小的穩定 bindshell Shellcode。第三種非常不常見的類型是 socket-reuse Shellcode。當漏洞利用建立到未在 Shellcode 運行之前關閉的弱點進程的連接時,有時會使用這種 Shellcode。然後,Shellcode 可以重複使用此連接與攻擊者通信。Socket 重用 Shellcode 更加精緻,因為 Shellcode 需要找出要重複使用的連接,並且機器上可能有多個打開的連接。
防火牆可用於檢測由連接回 Shellcode 進行的外部連接以及由 bindshell 進行的入站連接。因此,即使系統存在弱點,它們仍可以對抗攻擊者,防止其連接到 Shellcode 創建的 Shell。 Socket 重用 Shellcode 有時會被使用的原因之一是它不會創建新的連接,因此更難檢測和阻止。
![]() | 这是一篇與软件相關的小作品。您可以通过编辑或修订扩充其内容。 |