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