PowerShell利用工具:扩展你的Empire - FreeBuf.COM | 关注黑客与极客
PsExec已经陪伴了我们逾十年,效果有目共睹。某些黑客喜欢使用网络管理员的工具,以彼之道还施彼身,PsExec自然也不例外。当然我们并不是必须要使用PsExec进行横向扩展(有些团队已经研究出更好的黑科技),但是它在特定的情况下仍然是一个不错的选择。
我们自定义实现的PsExec也就是Invoke-PsExec,其很大程度上基于Metasploit来实现。它利用exploit-monday.com上的法子,实现了对底层的win32 API函数的访问,其操作如下:
1、OpenSCManagerA用来打开受害者机器上服务控制管理器的句柄,此处它使用了SC_MANAGER_ALL_ACCESS (0xF003F)权限。
2、CreateServiceA用来让服务控制管理器,创建一个指定的新服务,运行一个特定的命令。
3、接着用OpenServiceA启动该服务,以StartServiceA启用,在服务启动和执行指定的命令时进行短暂停顿。
4、使用DeleteService删除该服务。
很明显,这工具动静很大,稍微强点的防火墙就能检测到。但是它的优点在于,能直接给我们提供目标的system权限。上述的功能放在lateral_movement/invoke_psexec模块里,你需要设置Listener、ComputerName,并且配置好其它的内容。
Invoke-WMI
我们更喜欢的横向扩展无疑是WMI,虽然使用WMI作为横向扩展有些需要注意的要点(参见kerbero的double hop问题)。它比PsExec的动静要小很多。在这里,我们可以用lateral_movement/invoke_wmi,使用Invoke-WmiMethod -Path Win32_process -Name create …来辅助Empire进行命令执行。因为double hop问题,你需要记住在大多数情况下,除非主机没做约束,这个新的agent是无法访问额外的远程网络资源的。你需要使用runas/pth或者窃取token,以更新你现在运行的agent的身份认证凭据。
Invoke-PsRemoting
如果目标上启用了WinRM(windows远程),你就能轻松用PowerShelly方式启用一个Empire agent。在远程系统上执行Invoke-Command,ScriptBlock参数后面跟上staging代码,横向扩展是非常容易的。如Invoke-PsExec和Invoke-WMI一样,我们的实现可以通过lateral_movement/invoke_psremoting模块,接收一个Listener和ComputerName以及一些可选的选项,最后在远程主机上启动stager。
Read full article from PowerShell利用工具:扩展你的Empire - FreeBuf.COM | 关注黑客与极客
No comments:
Post a Comment