0x01 概述
百香果2.0版本使用指南分为基础篇、进阶篇和高级篇,本篇为进阶篇。在基础篇中,我们介绍了百香果2.0的基本使用方式,本篇我们将指导大家进一步自定义沙盘,从而满足更多场景构建的需要。
0x02 防火墙的基本使用
百香果2.0 使用了开源的OpenWrt作为路由器和防火墙实现了访问控制、NAT上网(SNAT)和端口转发(DNAT)等功能,我们可以通过修改防火墙配置来自定义规则,从而满足更多自定义场景的需要。
在将VMnet1的网卡修改为1.1.1.0/24网段后,我们即可通过浏览器防火墙的管理地址访问相应的防火墙设备(当然也包括路由器设备),具体管理地址如下:
设备名称 | 管理地址 | 设备名称 | 管理地址 |
---|---|---|---|
FW1 | 1.1.1.11 | R1 | 1.1.1.21 |
FW2 | 1.1.1.12 | R2 | 1.1.1.22 |
FW3 | 1.1.1.13 | R3 | 1.1.1.23 |
FW4 | 1.1.1.14 | ||
FW5| 1.1.1.15|
|
FW6| 1.1.1.16|
|
所有网络设备的用户名:root
,密码:goktech
WEB登录(不支持IE,使用谷歌浏览器或360极速模式等):
登录后可以看到设备基础的资源使用情况,DCHP分配情况等。
在状态->实时信息->连接 页面中,我们能看到当前经过设备的数据包的IP地址等情况,在做一些端口转发类的实验时可以帮助我们了解网络运行情况,排查问题等。
在网络->接口 页面中可以查看和修改设备的端口和IP配置
在网络->静态路由 页面可以查看和修改设备的静态路由配置
平台的接口和网络配置都是实现规划好的,一般情况下不需要进行修改。
在网络->防火墙 页面可以看到防火墙基本的区域配置,为了方便配置我们已经默认配置好了每个接口一个区域,大家把区域理解成接口即可,一般情况下不需要进行修改。
0x03端口转发(DNAT)规则自定义
模拟攻击目标的企业总部和分支各有一个接入互联网区的防火墙,将内部服务器映射到互联网上供互联网访问,沙盘默认做了部分映射规则,我们可以根据自己的需求来进行修改。
01 现有规则
在网络->防火墙->端口转发页面 可以查看和修改端口转发相关配置
FW3(总部出口防火墙)
FW3预设了两条端口转发规则,分别映射了10.10.13.100 的80端口和10.10.13.200的8000-9000端口到外网IP(66.28.5.2)上
FW2(分支出口防火墙)
FW2预设了两条端口转发规则,分别映射了10.10.19.100的80端口和10.10.19.200的8000-9000端口到外网IP(66.28.7.2)上
02 新增/修改规则
点击新增按钮可以新增端口转发规则:
一般来说常规设置即可满足要求:
名称:可以任意取名,建议与规则相关;
协议:可以选择TCP、UDP、ICMP,一个规则最好只选一个协议,不然容易出问题;
源区域:这个指的是外网所在的区域,我们事先配置好了每个接口一个区域,因此只要选对应接口即可,FW3选ETH2,FW2选ETH4,FW1选ETH2;
外部端口:这里是外网供访问的端口号,可以填单个端口或者一个端口段,如8000-9000;
目标区域:这里填写的是前往内网服务器路由的出接口,以FW3为例,如果要映射DMZ区的服务器就写ETH1,如果要映射总部服务器区的服务器就填ETH3;
内部IP地址:这里填写内网服务器的IP地址,在下拉框的最后可以输入ip按回车即可变为可选的ip;
**内部端口:**这里填写内部服务器要映射的端口,可以填单个端口或者一个端口段,如8000-9000;
高级设置中还可以设置规则匹配的源IP和端口等,一般不用配置,大家有兴趣可以自己尝试。这里的外部IP是指外网出口的IP,如果外网出口配置了多个IP可以指定映射到哪个IP。
举个栗子:
假设需要在FW3上增加一个映射规则,将总部服务器区10.10.16.100的SSH(TCP 22)端口映射到外网(66.28.7.2)的1022端口上,可以这样配置:
配置完成后点击右下角保存,即可增加规则,但规则不会马上生效。规则是自上而下进行匹配的,可以按住规则右侧的白色按钮上下拖动调整顺序,最后点击"保存并应用"方可生效。
我们可以根据需要启用、停用、修改、删除规则,操作后都需要点击右下角的"保存并应用"按钮方可生效。
特别说明:OpenWrt防火墙的特点是端口转发规则优先级比我们下面要讲的通信规则(也就是访问控制规则)优先级高,因此端口转发配置规则完成后无需再配置通信规则放行相应流量,通信规则的配置也不会对端口转发规则造成影响。
0x04 访问控制规则自定义
百香果2.0内网安全沙盘的攻击目标共有六个区域,区域之间的访问控制通过防火墙的访问控制规则实现,我们可以通过调整防火墙配置来修改这些规则。
特别说明:由于防火墙现有的配置特点,请不要使用防火墙上的ip来进行访问控制规则测试,否则可能会出现与配置的访问规则不符的现象。
01现有访问控制规则
在网络->防火墙->通信规则页面可以查看和修改访问控制规则, 现有配置中默认各接口之间的流量转发是被拒绝的,一定要配置允许访问通信规则才能访问(除非配置了端口转发规则) 。
FW1(攻击区出口防火墙)
默认配置了一条访问控制规则,允许ETH1到ETH2的所有流量,也就是允许攻击区上网,可以访问互联网区和互联网攻击区。
FW2(分支出口防火墙)
默认配置了三条访问控制规则:
-
FWQOUT 放行了ETH3(分支服务器区)发起的所有流量,使得这两个区域可以互相访问、可以上网访问互联网区和互联网攻击区也可以访问总部的网络;
-
FZBGOUT ETH2(分支办公区)发起的所有流量,使得这两个区域可以互相访问、可以上网访问互联网区和互联网攻击区也可以访问总部的网络;
-
ZBBG-FZBG 放行了来自于ETH1且源IP为10.10.15.0/24(总部办公区)到ETH2(分支办公区)的流量。
FW3(总部出口防火墙)
默认配置了三条访问控制规则:
-
ZBSW 放行了ETH3到ETH2的所有流量,也就是允许运维管理区、总部服务器区和总部办公区上网访问互联网区和互联网攻击区;
-
ZB-DMZ 放行了EH3到ETH1的所有流量,也就是允许内网各区域访问DMZ区;
-
MDZ-YG 放行了ETH1(DMZ区)到ETH3 目标IP为10.10.14.0/24(运维管理区)的流量。
FW4(总部分支互联防火墙)
默认配置了三条访问规则:
-
ZB-FZ 放行了ETH1(总部)到ETH2(分支)的所有流量。
-
FZ-YG 放行了ETH2(分支)到EHT1 目标为10.10.14.0/24(运维管理区)的流量
-
FZBG-ZB 放行了ETH2 源IP为10.10.18.0/24(分支办公区)到ETH1目标为10.10.13.0/24(DMZ区)和10.10.14.0/24(运维管理区)的流量(PS:其实10.10.14.0/24在上一条已经匹配了,这里不配也行,但是平台已经发布了,斗哥表示并不想再改了......)。
FW5(总部服务器区防火墙)
默认配置了2条访问控制规则:
-
FWQOUT 放行了EHT2(总部服务器区)到EHT1的所有流量,也就是允许了总部服务器区发出的所有流量;
-
FWQIN 放行了ETH1 源IP10.10.14.0/23(运维管理区和总部办公区)到ETH2(总部服务器区)的流量。
FW6(运维管理区防火墙)
默认配置1条访问控制规则,放行所有流量。
上述六台防火墙的访问控制规则组合后就实现了基础篇中说明的各区域间的访问控制。
02新增/修改访问控制规则
点击新增,可以增加一条访问控制规则:
防火墙配置需要较强的网络技术基础和对于防火墙技术的理解,受篇幅所限我们只能介绍常见的规则配置方法,大家可以参考以下配置说明和我们原有的配置自行对规则进行调整。
名称:随意填写,建议与规则描述相关
协议:包括TCP、UDP、ICMP,可多选,选择"任何"则匹配所有所有协议。
源区域/目标区域:源区域指流量进入设备的接口所在区域,目标区域指流量被转发到的接口所在的区域,如果选择任意区域(转发)则表示不限制源区域或目的区域( 如果大家对于区域的概念不太能理解就默认选择任意区域,只通过协议、ip和端口来配置规则即可) 。
源地址/目标地址:匹配数据包的源地址和目的端口,下拉框中提供了很多默认选项,但一般都是自己输入,如图所示在最后一栏输入地址和掩码位数后按回车键即可添加地址或地址段,不选择表示匹配任意地址。
源端口/目标端口:匹配数据包的源端口和目的端口,可以填入单个端口或一个端口范围(如8000-9000),不填表示匹配任意端口。
动作:常用的只有接受、拒绝和丢弃,接受表示允许匹配的规则的流量通过,拒绝和丢弃都是不允许匹配规则的流量通过,拒绝的时候会回一个拒绝的包( ping的时候会显示目标不可达 ),而丢弃则是直接丢包( ping的时候会显示超时 ),推荐使用拒绝。
特别说明:防火墙的访问控制规则是具备方向性的,如下图所示的规则,表示允许10.10.15.0/24主动访问10.10.16.0/24的网段,假设FW5上只有这一条规则的情况下,10.10.15.0/24的网段可以ping通10.10.16.0/24网段,但反过来使用10.10.16.0/24的网段ping10.10.15.0/24网段则无法ping通。
举个栗子:
目前DMZ区是不能访问总部服务器区的,我们想让总部DMZ区的一个地址10.10.13.20能够访问服务器区,应该怎么配置呢?
首先,分析需要在哪些设备上做配置,DMZ区访问总部服务器区需要经过FW3和FW5两台防火墙,因此两台防火墙都需要做配置。
然后,在这两台设备上,新增规则,源/目的区域选择任意区域,源地址是10.10.13.20,目的地址是10.10.16.0/24,动作为接受,配置完成后点击右下角的保存按钮即可新增规则。如下图所示:
最后,确认一下会不会与已有规则冲突,是否需要调整顺序,问控制规则是自上而下匹配的,如果需要调整顺序可以按住规则后的白色按钮拖动到相应位置。由于目前设备上都是允许流量通过的规则,不存在冲突问题,无需调整,直接点击"保存并应用按钮"生效。
FW5:
FW3:
完成上述配置后在DMZ区接入10.10.13.20地址的虚拟机就能访问总部服务器区的任意地址啦。
我们可以根据需要启用、停用、修改、删除规则,操作后都需要点击右下角的"保存并应用"按钮方可生效。
0x05 源地址转换(SNAT)规则自定义
攻击区、攻击目标的企业分支和总部都分别是通过出口防火墙进行SNAT访问互联网区的,我们可以根据需要自定义SNAT规则。
特别说明:本平台使用的防火墙,SNAT规则的优先级比通信规则低,因此配置完SNAT规则还需要配置相应的通信规则放行流量才能正常访问。
01 现有SNAT规则
在网络-> 防火墙 -> NAT Rules 页面可以查看和配置SNAT规则。
FW1:
默认配置了一条规则,使得防火墙的所有区域在转发到ETH2(连接互联网区)的时候进行SNAT,将源地址转换为66.28.3.2
FW2:
默认配置了一条规则,使得任意区域源地址为10.10.18.0/23网段(分支服务器区和分支办公区网段)的流量在转发到ETH4(连接互联网区)时进行SNAT,将源地址转换为66.28.52。
FW3
默认配置了一条规则,使得任意在区域的流量在被转发到ETH2(连接互联网区)时进行SNAT,将源地址转换为66.28.7.2。
值得注意的是,虽然FW3上配置了任意区域的流量均可以通过SNAT访问互联网区,但是由于通信规则中没有放行DMZ区到互联网区的流量,因此DMZ区还是不能访问互联网区。
新增/修改SNAT规则
点击新增,可以增加一条SNAT规则。
名称:随意填写,建议与规则描述相关
协议:可以多选TCP、UDP、ICMP,选择任何表示匹配所有协议
Outbound zone:这里通常填写连接互联网区的区域,我们事先配置好了每个接口一个区域,因此只要选对应接口即可,FW3选ETH2,FW2选ETH4,FW1选ETH2。
源地址:这里填写需要匹配的源地址,同样是在下拉框最后一栏输入地址和掩码位数后按回车键即可添加地址或地址段,不选择表示匹配任意地址。
目标地址:这里填写需要匹配的目的地址,如果是访问互联网区一般选择任意。
动作: 选择SNAT需要手动配置要转换的地址,选择MASQUERADE为自动转换为出口IP的地址,选择ACCEPT表示不做地址转换直接转发(假设需要让一个地址段中的某个地址不做转换,可以先配一条匹配该地址动作为ACCEPT的规则,再配整个地址段动作为SNAT的规则)。
Rewrite IP address:选择动作为SNAT的时候,需要手动制定SNAT转换的地址,该地址应该与Outbound zone所选择的区域对应的接口一致。
举个栗子:
目前DMZ区是不能访问互联网区的,假设我们想让DMZ区的10.10.13.30能够通过SNAT上网访问互联网区,且源地址转换为66.28.7.3 我们需要做如下配置:
首先,给FW3增加一个66.28.7.3的地址,操作比较简单就直接上图了:
然后,在FW3上增加一条SNAT规则:
接着,需要拖动规则使到第一条(否则会优先匹配SNAT规则将原地转换为7.2),点击保存并应用。
拖动前:
拖动后:
最后,还需要配置一条通信规则,允许10.10.13.30访问互联网区:
测试:
使用任意虚拟机接入VMnet13配置10.10.13.30/24的地址,发现可以访问互联网区了
此时登录fw1,在实时信息、连接处可以查到源地址来自66.28.7.3的ICMP包,说明SNAT规则配置成功(如果没看到日志可能是日志太多被刷掉了,可以长ping 10.10..13.30 持续一阵就能看到了)