shellcode简介
shellcode是一段用于利用软件漏洞而执行的代码,也可以认为是一段填充数据,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
下面这张图就是shellcode工作流程,从功能上看,shellcode在整个漏洞利用过程中发挥主要作用就是对计算机端的控制。
基本模块
基本模块:用于实现shellcode初始运行、获取kernel32基址和获取api地址的过程。
获取kernel32基址
获取Kernel32 基址的常见方法有暴力搜索、异常处理链表搜索和TEB ( Thread EnvironmentBlock)搜索。这里只介绍目前最常用的动态获取Kernel32.dll 基址的方法一-TEB 查找法。其原理是:在NT内核系统中, fs 寄存器指向TEB结构, TEB+0x30偏移处指向PEB ( Process EnvironmentBlock )结构,PEB+0x0c偏移处指向PEB LDR DATA结构, PEB LDR_ DATA+0xlc 偏移处存放着程序加载的动态链接库地址,第1个指向Ndl.dII, 第2个就是Kerel32.dl的基地址。
功能模块
功能模块:实现漏洞利用目的那部分的shellcode,签名介绍的基础模块所做的工作,其目的就是在这里实现相应的功能。
常见功能:下载执行、捆绑、反弹shell
下载执行
具有这个功能的shellcode最常被浏览器类漏洞样本使用,其功能就是从指定的url下载一个exe文件并运行。
URLDownloadToFile:指从指定URL地址读取内容并将读取到的内容保存到特定的文件里的实现方法。
winexec:运行指定的程序。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!