代码注入技术之Shellcode注入

来源:岁月联盟 编辑:猪蛋儿 时间:2020-01-29
4.nSize:必须写入的数据量(以字节为单位);
5.* lpNumberOfBytesWritten:指向SIZE_T的指针,该指针将存储在该目标中写入的字节数。
如果函数由于某种原因而失败,它将返回false;如果成功,则将返回true。
至此,所有设置都已准备就绪,只需要在远程进程中创建一个线程并运行它即可。
执行shellcode
为了在远程进程中创建线程,我们使用Win32 API提供的函数CreateRemoteThread。
1.CreateRemoteThread是一个用于创建在另一个进程的虚拟空间中运行的线程的函数。 2.CreateRemoteThread提供的功能有限,并且可以访问可以为线程指定的扩展属性,可以使用CreateRemoteThreadEx,但在本文的示例下,前者就足够了。
CreateRemoteThread的原型为:

CreateRemoteThread有七个参数,其中只有三个对我们有用。其余的可以具有默认值,尽管通过调整它们可以对新创建的线程进行更多控制。
我们感兴趣的参数是:
hProcess:受害者进程的句柄,我们希望在其中创建线程。
lpStartAddress:它是指向THREAD_START_ROUTINE的指针,THREAD_START_ROUTINE是线程一旦创建即将从其开始执行代码的位置。
lpParameters:指向LPTHREAD_START_ROUTINE所需参数的指针。由于在本例中,它是一个简单的shellcode,因此不需要任何参数,因此,我们将其保留为NULL,该参数在DLL注入中有重要意义。
演示
在演示视频中,你可以看到我使用了一个Shellcode在Windows 10 RS6 (x64)上启动cal .exe(使用msfvenom生成)。
该方法的优势
与其他代码注入技术相比,使用CreateRemoteThread进行代码注入具有多个优势,比如:
1.最容易实现;
2.不需要对库函数进行地址解析;
3.不需要等待事件的发生;
4.不需要操作内存中的文件结构;
该方法的缺点
该方法除了优点之外,还有一些缺点,这些缺点使其无法成为流行的代码插入技术,比如:
1.只能注入二进制代码;
2.更改Shellcode时需要进行大量更改;
3.使用shellcode可以实现的数量有限。
 
 

上一页  [1] [2]