内网渗透-横向渗透1
在攻陷一台内网主机后,我们可以通过收集本地信息和用户凭证等数据来实施横向渗透,以获取更多的主机控制权。本文将介绍at和schtasks命令的使用,这两个命令可以在已知目标系统用户明文密码的情况下,直接在远程主机上执行命令。
具体的利用过程如下:首先,获取某个域主机的权限,使用minikatz工具获取密码(明文或哈希),然后将域用户列表作为用户名字典,将密码明文作为密码字典,尝试连接目标主机。接下来,创建计划任务(at或schtasks)并执行一个后门程序或相关命令。
利用流程如下:建立IPC连接到目标主机,将要执行的命令脚本复制到目标主机,查看目标时间并创建计划任务(at或schtasks)定时执行复制的脚本,最后删除IPC连接。
在实施过程中,可能会遇到一些常见的错误代码,例如:5(拒绝访问,可能是由于使用的用户没有管理员权限,需要先提升权限)、51(网络问题,Windows无法找到网络路径)、53(找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题)、67(找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$)、1219(提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除)、1326(账号密码错误)、1792(目标NetLogon服务未启动,连接域控常常会出现此情况)、2242(用户密码过期,目标有账号策略,强制定期更改密码)。
建立IPC连接失败的原因可能有:目标系统不是NT或以上的操作系统、对方没有打开IPC$共享、对方未开启139、445端口,或者被防火墙屏蔽、输出命令、账号密码有错误。
at命令适用于Windows 2012以下版本,而schtasks命令适用于Windows 2012及以上版本。
下面是一个实例演示:首先进入某个域主机,然后获取域控主机的IP地址。接下来,可以使用at命令或schtasks命令进行操作。在实战中,可以使用mimikatz工具获取密码。在DOS运行界面中输入相应命令,找到密码后可以验证密码是否正确,例如尝试使用控制面板修改密码。另外,如果无法将mimikatz工具上传到目标服务器,可以使用procdump将lsass进程的内存文件导出到本地,然后再使用mimikatz读取密码。
除了以上的实例,还有其他一些案例。例如,横向渗透时可以使用atexec-impacket命令进行明文或哈希传递,或者使用批量利用方法。另外,还可以使用SMB和WMI进行域横向渗透,其中Windows 2012以上版本默认关闭了wdigest,攻击者无法从内存中获取明文密码。针对这种情况,我们提供了四种解决方案,包括注册表修改、Procdump+Mimikatz配合获取、Hashcat破解获取Windows NTML Hash等方法。
在域横向移动中,可以利用psexec和smbexec进行SMB服务利用,利用cscript、wmiexec和wmic进行WMI服务利用。其中,WMI是通过135端口进行利用,支持用户名明文或哈希的认证方式,并且不会在目标日志系统留下痕迹。此外,还可以使用impacket wmiexec进行明文或哈希传递,或者使用编译的exe文件进行批量利用。