shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进位之机械码,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写,由于现代电脑系统基本上启用NX位元保护使得机械码无法直接执行,可透过返回导向编程编写shellcode。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机械码,让电脑可以执行攻击者的任意指令。

分类

编辑

shellcode可以按照攻击者执行的位置分为本地shellcode和远程shellcode.

本地shellcode

编辑

本地运行的shellcode经常用于利用软件漏洞提升权限。比如在Linux下由普通权限提升至root权限

远程shellcode

编辑

通过使用抓包程式抓取封包并查找封包内的漏洞特征,再经由C、Python、ruby (metasploit)撰写远端攻击程式,这类漏洞如果发生在内核空间,如路由器等嵌入式系统上的可载入核心模组,或是伺服器讯息区块协议的实作漏洞,如永恒之蓝,则可以取得对方电脑之root或SYSTEM权限。如果漏洞发生在用户空间的程式,只能取得此处理程序的使用者权限,除非在本地运行特权提升漏洞利用,或是程序本身就有root权限。