摘要:
记录实验过程中踩到的坑。介绍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 跳过主机发现阶段。
领取专属 10元无门槛券
私享最新 技术干货