________ _________ _____ _ _____ __
/ ___| \/ || ___ \ / ___| (_) / ___| / _|
\ `--.| . . || |_/ / \ `--. ___ ___ ___ _ ___ _ __ \ `--. _ __ ___ ___ | |_ ___ _ __
`--. \ |\/| || ___ \ `--. \/ _ \/ __/ __| |/ _ \| '_ \ `--. \ '_ \ / _ \ / _ \| _/ _ \ '__|
/\__/ / | | || |_/ / /\__/ / __/\__ \__ \ | (_) | | | | /\__/ / |_) | (_) | (_) | || __/ |
\____/\_| |_/\____/ \____/ \___||___/___/_|\___/|_| |_| \____/| .__/ \___/ \___/|_| \___|_|
| |
|_|
欢迎! 这是一个可以用 Visual Studio 2019(或更新版本)编译的实用程序。该程序的目标是创建一个虚假的 SMB 会话。主要目的是作为一种方法,引诱攻击者访问诱捕设备。此程序不附带任何担保或保证。
本程序需要你对代码稍作修改。在第 144 行,调用了 Windows API CreateProcessWithLogonW,其中有两个参数默认提供为 svc-admin(用户名)和 contoso.com(域名)。你需要将这些值修改为与你生产网络匹配的内容。
CreateProcessWithLogonW(L"DomainAdminUser", L"YourDomain.com", NULL, LOGON_NETCREDENTIALS_ONLY, <snip>);
修改代码并编译后,必须安装该服务。可以使用以下命令进行安装:
sc create servicename binpath="C:\ProgramData\Services\Inject\service.exe" start="auto"
要验证程序是否正常运行,应检查系统上存在哪些会话。可以使用以下命令完成:
C:\ProgramData\Services\Inject> net sessions
计算机 用户名 客户端类型 打开数 空闲时间
-------------------------------------------------------------------------------
\\[::1] svc-admin 0 00:00:04
命令成功完成。
大约 13 分钟后,你应该再次检查,以确认已创建新会话并且程序正常工作。
其原理是,当对手运行 SharpHound 并收集会话、分析已控制主体的攻击路径时,他们可以发现一个高权限用户已登录到 Tier-2 基础设施(工作站),这看起来他们可以访问该工作站并转储凭据,从而获得域管理员访问权限。
在上述场景中,攻击者已攻陷了用户“[email protected]”,该用户是 lab-wkst-2.contoso.com 上的本地管理员。用户 svc-admin 已登录到 lab-wkst-2.contoso.com,这意味着攻击者只需登录该工作站,运行 Mimikatz 并转储凭据即可。那么,如何监控这一点?
此工具的实施很重要,监控也同样重要。如果实施该工具而没有监控,它实际上毫无用处;因此,监控是必须的。 监控此主机最有效的方式是对任何登录行为发出警报。该程序最好在加入域且无用户活动的主机上使用,该主机应配备标准的企业监控工具(EDR、AV、Windows 事件日志转发等)。强烈建议尽可能配置电子邮件警报、短信警报等多种通知方式,以确保涉及此机器的事件能够尽快得到分类处理,因为这是真实攻击者最有可能与该工作站交互的场景。
感谢微软提供的服务模板代码以及出色的 Windows API 文档。