外壳代码是一系列机器代码或可执行指令,被注入计算机内存,目的是控制正在运行的程序。在这种攻击中,其中一个步骤是控制程序计数器,它标识要执行的下一条指令。然后可以将程序流重定向到插入的代码。入侵的机器代码称为攻...
外壳代码是一系列机器代码或可执行指令,被注入计算机内存,目的是控制正在运行的程序。在这种攻击中,其中一个步骤是控制程序计数器,它标识要执行的下一条指令。然后可以将程序流重定向到插入的代码。入侵的机器代码称为攻击的有效负载,是术语shellcode通常所指的元素。此方法通常用于通过打开操作系统命令外壳来授予攻击者访问权限,因此,代码注入攻击一般称为Selcode。
![]()
Shellcode通常是用一种具有C++等低级系统访问的编程语言编写的。被攻击的漏洞通常涉及程序如何分配内存、检查输入数据的有效性以及处理内存错误。软件开发人员通常可以通过严格定义输入数据和拒绝不正确的值来避免此威胁。如果未选中,则为如果需要比为该值分配的内存更多的存储空间,则可能会被接受。这会导致一种称为缓冲区溢出的安全漏洞,其中一部分数据被写入到与该值分配的空间相邻的内存位置中。当小心操作时,这种异常会允许引入侵入性代码外壳代码通常是用具有低级系统访问权限的编程语言编写的,例如汇编、C或C++但是,根据目标漏洞的不同,可以通过插入解释脚本语言(如PERL)的代码或虚拟机的字节码(如JAVA)来实现相同的结果。代码可以在程序计数器被劫持之前、期间或之后被植入。因此,入侵代码可能包含在目标计算机或通过网络连接实时传输。本地外壳代码攻击旨在让攻击者控制他或她有物理访问权限的计算机。在这种情况下,目标可能是创建例如,具有管理员权限的帐户。类似地,如果正在运行的进程具有高权限级别,成功利用此漏洞将暂时授予入侵者相同级别的访问权限。远程计算机上运行的进程可以使用标准网络协议与目标计算机通信。连接回外壳代码指示目标计算机启动与入侵者计算机的连接。如果入侵者启动连接,则该代码称为bindshell,因为它试图控制远程计算机上称为端口的网络连接。连接回接方法的应用更为广泛,因为防火墙很少禁止出站连接