OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发

摘要:

记录实验过程中踩到的坑。介绍OPNsense防火墙的安装配置并搭建实验环境,利用msf的模块及ssh进行流量转发(LAN向DMZ方向),为内网渗透做好准备。

目录:

一、实验环境

二、OPNsense环境搭建

三、LAN主机控制权,执行反弹shell

四、判断内网网段

五、寻找存活主机并扫描端口

六、msf模块(socks4a)

七、SSH嵌套(socks5):本地端口转发 + 远程端口转发 + 动态端口转发

八、使用proxychains代理

九、其它:nc获取HTTP,\r\n换行符问题

十、总结

正文:

一、实验环境

目标:已控制LAN主机,需要向DMZ进行渗透。

一般DMZ为外网可以直接访问,这里没有添加WAN到DMZ的NAT规则。因为实验只是模拟LAN到DMZ,没有影响。

这里的DMZ可类似等于,LAN中其它网段的内网。

网络初始情况:(防火墙默认的规则)

LAN 可以访问 WAN + DMZ

DMZ 无法访问 WAN + LAN

WAN 无法访问 DMZ + LAN

二、OPNsense环境搭建

1、VM虚拟机的网卡设置:用于 LAN OPT(DMZ)

选择“仅主机模式” 。

不要开启DHCP服务,后续让OPNsense 来完成这个功能。

2、OPNsense硬件:配置三块网卡

第一块 VMnet10 配置成LAN:DHCP服务器 + web管理

第二块 VMnet11 配置成DMZ(OPT1):DHCP服务器

第三块 桥接物理网络 WAN:自动获取IP

3、登陆初始账号密码:root opnsense

4、指定接口(选项1)

5、配置LAN(选项2):DHCP服务器 + web管理

会显示Web管理界面的地址(即防火墙IP)

6、配置DMZ(OPT1)(选项2):DHCP服务器

7、配置WAN(选项2):自动获取IP

8、配置完成

注意:遇到几次 OPT1 显示的ip不是设置的ip,而是DHCP的第一个地址。原因没找到…重新再对OPT1进行设置即可…

9、启动其它虚拟机

配置相应的VM网卡即可

注意:其它虚拟机最好不要先于防火墙启动(除非最后再重新获取一下IP),可能会出现LAN无法访问到DMZ之类的各种问题…

10、web管理界面:

LAN主机访问 192.168.100.1 登陆,进行防火墙规则配置。

三、LAN主机控制权,执行反弹shell

不讨论获取控制权的方法

注意:使用80/22这类防火墙允许出站的端口

直接msf生成,放到LAN执行

kali监听:

四、判断内网网段

LAN网段:

meterpreter命令 ifconfig

DMZ网段:

1、netstat:寻找指向DMZ的连接

2、查看dns缓存记录(windows环境):

ipconfig /displaydns

找到疑似内网的域名进行ping 获取ip

3、查看dns缓存记录(linux环境):

Linux下,默认好像不存在系统级别的dns缓存。

另外,nscd服务可以达到效果,但默认不启动,并且无法查看具体缓存信息。

4、traceroute:通过路由情况 判断控制的LAN主机 是否在更深层的网络

访问外网任意域名即可

五、寻找存活主机并扫描端口

msf 路由功能:

1、post/multi/manage/autoroute

注意:添加DMZ网段时 记得修改 cmd 参数 add ! 否则会直接无视subnet的设置

2、meterpreter的模块autoroute (已经不推荐使用)

扫描端口功能:

注意:发现 RHOST设置太大范围的话 很可能会漏报。

1、post/windows/gather/arp_scanner

2、auxiliary/scanner/portscan/tcp

3、auxiliary/scanner/portscan/syn

4、auxiliary/scanner/portscan/ack

在meterpreter中使用:run + 参数

例子:

在msfconsole中使用:例子:

总结的情况:

SYN/ACK类的都无法转发,完整的TCP可以进行转发

红色对钩:可以扫描

黑色乄(DMZ-ARP扫描中):ARP协议在同一网段中使用,所以对于DMZ无法适用。但又和其余黑色×不同,用wireshark抓包发现,ARP实际发送给了192.168.1.8防火墙(被转发了)。

其余黑色×:封包直接就发送给了不存在的192.168.100.0/24和192.168.150.0/24。(SYN/ACK无法被转发)

六、msf模块(socks4a)

将msf环境下的route供应给其它程序使用

七、SSH嵌套(socks5):本地端口转发 + 远程端口转发 + 动态端口转发

SSH 有三种端口转发的情况:

本地端口转发

远程端口转发

动态端口转发

草图中 红色箭头是真实流量的方向,黑色箭头是ssh连接的方向

对于本文的情况只能选择远程端口转发,这样可能需要多次使用ssh命令增加转发的规则。

将SSH嵌套使用:本地端口转发(外层)+ 远程端口转发(中层) +动态端口转发(内层)

1、外层:kali 既是ssh服务端,又是ssh客户端

在中层之后,kali监听的是本地的 127.0.0.1。

当我需要使用AWVS这类windows平台工具对DMZ进行渗透的时候,需要借用kali中建立的隧道。

利用本地端口转发 -g 的模式 开放一个端口给整个kali渗透这边的局域网。

2、中层:kali 是ssh服务端 ,LAN主机是ssh客户端

进行两主机间的端口转发

3、内层:LAN主机 既是ssh服务端,又是ssh客户端

将ssh“升级”为动态,避免多次使用ssh命令指定转发规则。

流量转发流向:windows渗透平台(192.168.1.2)

1、软件设置:192.168.1.2 –> 192.168.1.6:6000 (kali)

2、通过外层:192.168.1.6:6000(kali) –>192.168.1.6:7000(kali)

3、通过中层:192.168.1.6:7000(kali) –> 192.168.1.8 (防火墙)

4、通过中层 + 防火墙NAT:192.168.1.8(防火墙) –>192.168.100.22:2000(LAN主机)

5、通过内层:192.168.100.22:2000(LAN主机) –> 192.168.100.22:22(LAN主机)

6、代理访问:192.168.100.22:22(LAN主机) –> 192.168.100.22:xxx(随机端口) –> 192.168.150.80:80(DMZ主机)

步骤:

步骤一:kali:(外层ssh服务端 + 中层ssh服务端)

配置文件:/etc/ssh/sshd_config

步骤二、LAN主机:(内层ssh服务端)配置

配置文件:/etc/ssh/sshd_config

步骤三、LAN主机:(内层ssh进行连接)(自己连自己) 监听在端口2000

步骤四、LAN主机:(中层ssh向kali进行连接) 远程端口转发

1、转发目标为 内层ssh的监听端口20002、会在kali上开启7000端口进行监听 转发流量

步骤五、kali:(外层ssh进行连接)(自己连接自己)监听在6000端口

-g参数!让局域网可用!

步骤六、windows渗透平台,通过 127.0.0.1:6000 进行代理即可

八、使用proxychains代理

配置文件/etc/proxychains.conf添加:

socks4和socks4a协议的 都是写作socks4

进行代理:

1、firefox使用:

注意:在proxychains开启firefox的时候,千万不要已经有firefox实例启动着!!!通通关掉!!!

另外,firefox可以直接指定socks代理 不通过proxychains:

注意:设置socks代理的时候,上面的一些不需要填写!空着!

2、nmap使用:

注意:使用 -sT 参数!

注意:使用 -Pn 参数跳过主机存活检测

socks、proxychains 都无法代理单独的SYN/ACK这类的扫描,只能使用TCP完整连接进行扫描!

nmap 会先 进行DNS的查询(不会有正确的响应),接着会进行转发。

九、其它:nc获取HTTP,\r\n换行符问题

遇到情况:

1、直接连接:回车换行直接发送,导致无法加入其它HTTP头

2、proxychains 代理 nc:回车换行 可能无效(有些网站正常/有些不正常)

原因没有找到

解决办法:

1、将HTTP请求写在文本里 然后重定向到nc

vim编写的时候 需要设置 :set fileformat=dos 让换行成为\r\n

http.txt最后有两个 \r\n 换行

2、echo + 管道:

-e 参数 可以解析\r\n

3、连带最后两个换行,直接右键复制文本到终端窗口…

十、总结

1、实验场景是从LAN到DMZ,不知道真实情况这种多不多(社工?)。一般DMZ是可以外网直接访问到,然后从WEB切入,应该就需要从DMZ渗透到LAN,此时防火墙是会阻止这样的访问,这也是设立DMZ的一个目的。这种情况后续还需要再学习…

2、如同这里写的SSH嵌套使用,其它的DNS隧道/HTTP隧道等好像都有可能相互嵌套。感觉就是俄罗斯套娃…

3、msf的路由功能、socks代理、proxychains 无法转发SYN/ACK这类的扫描,使用完整TCP连接进行扫描。namp 使用 -sT 参数 并用 -Pn 跳过主机发现阶段。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171219B0IHZI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券