创建实验室以测试 ICS/SCADA 协议

创建实验室以测试 ICS/SCADA 协议

40432
Created On 09/26/18 19:10 PM - Last Modified 06/12/23 16:48 PM


Resolution


介绍

有工业控制系统 (ics) 的组织在一段时间内一直在保护 IT (企业网络) 和 OT (ics) 之间的边界的道路上。许多人的第一步是使用帕洛阿尔托网络上的防火墙, 在两个网络之间提供简单的分割。这满足了对恶意活动的可见性和数据包检查的初始要求。随着企业努力提高 ICS 中的安全态势, 在实施前需要进行测试。本文档将演示如何模拟 IT/OT 边界, 以便测试帕洛阿尔托网络防火墙中的 appID、用户 id 和其他功能。整个实验室可以在一台笔记本电脑上进行虚拟化。

 

要求

 

必需项目

说明

帕洛阿尔托网络虚拟设备

测试与 VM50, 帕诺斯8.0.6。

Windows 虚拟机

用于 Java 模拟 HMI 接口。

MAC OSX

使用10.12.6 测试, 需要 Xcode 环境 (也可以安装在卡莉 Linux VM 上)。

MAC 的 VM 融合

测试与融合 Pro v8.5.8。Windows 的 VM 工作站也可以使用。

ModBusPal Java 机器

用 v1.6b 测试。模拟轮询的 PLC 设备。

MBTGET

从 Github 克隆。模拟轮询服务器。

Java (在 Windows VM 上)

已使用 JRE v9 测试, 64 位。

 

 

关系图

用户添加的图像

 

配置 VM 融合

 实验室中使用的两个网络是标记 vmet2 (用于 PLC 区域) 和 vmnet3 (用于投票区)。该示例显示了 MAC 上的 vm 融合, 但同样的原理也适用于 vm 工作站。注意: 不要在 VM50 防火墙上通电, 还有两个重要步骤要做。

 

 

Vmnet2

Picture2.png

 

Vmnet3

Picture3.png

 

在 VM 融合中, 需要将第三个网络适配器添加到 VM50 防火墙设置中。

 

Picture4.png

 

按如下方式分配适配器:

  • 网络适配器 vmnet3
  • 网络适配器2到 vmnet 3
  • 网络适配器3到 vmnet2

 

将需要为 3rd网络适配器编辑 VM 配置文件。在融合中, 转到库并右键单击 VM50, 然后选择 "在 Finder 中显示配置文件"。

 

Picture5.png

 

然后, 您可以右键单击文件夹中的 VM 文件, 然后选择 "显示包内容"。

 

Picture6.png

 

找到. vmx 文件并使用 TextEdit 或其他文本编辑器编辑它。请确保将 ethernet2 的虚拟设备更改为 "vmxnet3", 如下所示。保存文件。包内容文件夹可能已关闭。从融合库中, 现在可以启动 VM50 防火墙。

 

Picture7.png

 

要配置防火墙的管理 IP 地址, 请按照此处的说明操作:

https://www.paloaltonetworks.com/documentation/80/pan-os/pan-os/getting-started/integrate-the-firewall-into-your-management-network/perform-initial-configuration

 

要应用设备许可证和注册:

https://www.paloaltonetworks.com/documentation/80/pan-os/pan-os/getting-started/activate-licenses-and-subscriptions.html

 

配置初始防火墙策略

 初始防火墙策略将允许投票区和 PLC 区域之间的所有应用程序。将记录所有活动, 此时没有配置配置文件。

 

安全策略

Picture8.png

 

NAT 政策

Picture9.png

 

以太网接口

Picture10.png

 

请记住默认的静态路由。我使用的是默认的虚拟路由器。对于 VMWare 融合, 保留的默认网关 IP 在 vmnet3 上192.168.55.2。

 

Picture11. png

 

地址对象

Picture12. png

 

配置服务器和客户端

 在将作为 PLC 设备的 Windows 计算机上, 一定要将它的以太网接口放在 vmnet2 (在防火墙的 PLCZone 上)。请确保它的默认网关指向防火墙接口: 192.168.45.20。

 

ModbusPal 将用于模拟 PLC 寄存器。您可以在这里下载:

https://sourceforge.net/projects/modbuspal/files/modbuspal/RC%20version%201.6b/

 

它需要 Java 运行时环境。满足要求后, 打开一个命令窗口, 然后转到 ModbusPal 驻留的目录, 然后按如下所示启动它。

 

Picture13. png

 

我们将通过选择 "添加" 从 "奴隶" 部分中添加一个 "一个"。

 

Picture14. png

 

现在添加一个从属, 然后单击 "添加"。

 

Picture15. png

 

命名新的奴隶, 然后点击眼睛填充。

 

Picture16. png

 

在 "保存寄存器" 选项卡下, 添加要测试的寄存器数量。

 

Picture17. png

 

为您创建的地址提供值和名称 (可选)。

 

Picture18. png

 

对 "线圈" 选项卡执行相同的方法。添加二进制值和 (可选) 名称。

 

Picture19. png

 

 

完成后关闭从属窗口。单击 "启用所有" 按钮以确保已启用从属项。然后单击 "运行" 启动模拟器。

 

Picture20. png

 

要使用 MBTGET 工具模拟轮询服务器, 您需要从 GitHub 克隆该工具。您可以在此下载免费的 MAC/Windows 客户端:

https://desktop.github.com/

 

可以选择将该工具克隆到卡利 Linux 虚拟机上。要克隆 MBTGET 工具, 请按照终端或命令提示符下的这些说明进行操作。

 

Picture21. png

 

MBTGET 帮助屏幕:

 

Picture22. png

 

为了达到 PLC 模拟器, 需要在承载图像的膝上型计算机上创建静态路由。

 

MAC:

# sudo 路线-n 加网 192.168.45.0/24192.168.55.20  

 

测试环境

要确保图像正常工作, 请打开终端窗口并使用 MBTGET 启动投票。生成的轮询应显示您在 ModbusPal 内的寄存器中创建的值。"-n" 之后的值应与您创建的寄存器的数量相匹配。

 

Picture23. png

 

使用 appID 测试

 

要朝着更积极的安全态势迈进, 您可以开始实施 appID。在这里, 我们只需添加我们希望允许的 subfunctions 应用程序和。在我的示例中, 我将添加一个基元和 PollingZone 读取寄存器, 作为唯一允许从 PLCZone 中使用的应用程序。

 

Picture24. png

 

运行 MBTGET 工具后, 查看日志以查看应用程序认可, 并且该策略允许该操作。

 

Picture25. png

 

在我们的 appID 规则中, 我们允许只保留寄存器的读请求。我们可以用 MBTGET 来请求读取线圈。请求失败。

 

Picture26. png

 

日志显示请求失败, 并且试图读取线圈寄存器, 这不是我们在策略中允许的。

 

Picture27. png

 

使用 appID 和用户 id 测试

 

要进一步减少攻击面, 请强制用户 id 只允许从特定使用者持有寄存器读取。

 

在 "设备/本地用户数据库/用户" 下, 添加两个测试用户。

 

Picture28. png

 

在 "设备/本地用户数据库/用户组" 下, 将每个用户置于不同的组中。在我的示例中, 我将 user1 添加到组 "CanReadHolding" 和 user2 组 "CanReadCoils" 中。

 

Picture29. png

 

在 "设备/身份验证配置文件" 下, 创建新的身份验证配置文件。选择类型的本地数据库。

 

Picture30. png

 

在 "高级" 选项卡中, 选择 "全部" 用户。

 

Picture31. png

 

在 "网络/接口/环回" 下, 创建一个环回地址以重定向用户进行身份验证。

 

Picture32. png

 

在 "IPv4" 选项卡下提供 IP 地址。确保它与您的 PollingZone 的范围相同。

 

Picture33. png

 

在 "设备/用户标识/固定门户" 下, 编辑所显示的固定门户设置。使用刚刚创建的 IPv4 环回地址。

 

Picture34. png

 

在 "策略/身份验证" 下, 使用显示的值创建新的身份验证策略。

 

Picture35. png

 

在 "策略/安全性" 下, 编辑第一条规则并添加用于读取寄存器的用户组。

 

Picture36. png

 

修改后的规则应该看起来像这样。

 

Picture37. png

 

添加新规则以允许对环回的身份验证通信, 因此固定门户将工作。

 

Picture38. png

 

提交更改。

 

尝试阅读持有 MBTGET 的寄存器, 我们看到它失败。

 

Picture39. png

 

通信日志显示读取请求被 ExplicitDeny 规则拒绝。这是因为用户 id 要求不满足。

 

Picture40. png

 

要在此安装程序中启动用户身份验证, 请浏览到为固定门户创建的环回地址, 并与允许读取持有寄存器的用户登录。

 

Picture41. png

 

在 "监视器/用户 ID" 下, 查看列表中经过身份验证的用户。

 

Picture42. png

 

重试 MBTGET 轮询, 它应该再次成功。

 

Picture43. png

 

通信日志还显示与注册读取器关联的经过身份验证的用户。

 

Picture44. png

 

在防火墙 CLI 中, 发出这两个命令以清除所有用户 id 数据。

 

Picture45. png

 

使用未授权读取寄存器的其他用户再次启动登录。

 

Picture46. png

 

尝试 MBTGET 寄存器读取, 并看到它 user2 失败。

 

Picture47. png

 

注意, 由于通信量与任何其他规则不匹配, 通信日志中的失败原因是由于 ExplicitDeny。具体地说, user2 不是 CanReadHolding 组的成员, 因此寄存器读取失败。

 

Picture48. png

 

 

摘要

还有更多的方案可以与这个虚拟实验室一起使用, 这可以进一步提高 ICS 环境中的安全态势。例如, 为用户获取对 OT 网络的访问权限而添加多因素身份验证。将安全配置文件添加到规则集是另一种情况。攻击可以模拟, 以及使用工具, 如 metasploit。有关使用 PAN OS 8.0 的日志配置文件功能监视恶意活动并在发生冲突时可能将 ICS 用户置于隔离状态的想法, 请参阅本文: https://live.paloaltonetworks.com/t5/Learning-Articles/Protecting-ICS-and-SCADA-Networks-with-PAN-OS-8-0/ta-p/180651  

 



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000Cm2pCAC&lang=zh_CN&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language