本文由灯塔实验室翻译,为非官方中文译文,原文来自SCADACS团队《Towards Highly Interactive Honeypots for Industrial Control Systems》。
原文名称 | POSTER:Towards Highly Interactive Honeypots for Industrial Control Systems |
原文作者 | Stephan Lau,Johannes Klick ,Stephan Arndt |
原文发布机构 | CCS’16 Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security |
作者简介 | Stephan Lau毕业于柏林自由大学、SCADACS成员。主要研究方向是逆向工程和PLC虚拟化 |
原文地址 | http://dl.acm.org/citation.cfm?id=2989063 |
摘要
蜜罐(Honeypot)是一种设置入侵警报和研究对计算机系统攻击的常用工具。为了更可信,蜜罐试图表现得像是正常使用的真实系统。最近,研究人员开始开发PLC的蜜罐,我们知道的蜜罐工具与真正的设备相比功能有限,特别是,他们不支持运行真正的PLC程序。
为了能够提高PLC蜜罐的高交互能力,我们开始开发西门子S7-300系列的模拟器,我们现有的原型XPOT支持PLC程序编译和解释,支持专有S7通信协议和简单网络管理协议。尽管支持功能集目前还没有很全面,但已经能够用西门子博途(TIA portal)这样的IDE进行编程。除此之外,为了对抗Nmap这样的操作系统(OS)指纹识别工具,我们模拟可参考的PLC网络协议堆栈特点。
我们与正在培训PLC编程的学生们进行了实验,初步试验表明XPOT可对抗粗略检查,但是对经验丰富和多疑的对手时仍是失败的。我们得出结论,高交互PLC蜜罐需要支持一个相当完整的特征集,从而真正的模拟PLC。
关键词:
蜜罐,可编程逻辑控制器(PLC),工业控制系统(ICS),SCADA
1. 简介
将设备连接到互联网通常会增加他们的功能,但会牺牲其完整性和可用性。特别令人关注的是那些针对关键基础设施的行为,例如针对工业过程的间谍活动和低强度攻击行为。然而,除非有灾难事件发生,不太可能阻止设备联网的趋势。
为了防御这些风险,有必要去构建检测和阻止对关键基础设施威胁的能力。威胁溯源才是针对攻击者有效的威慑。截止到写这篇文章的时候,攻击通常在持续几周或几个月后才被发现。一旦对手意识到他的攻击被检测到,他很可能会采取措施使得溯源更有难度。因此,在攻击者毫无意识被监测到的情况下,观察和研究他的行为过程和技术水平是很有意义的。
蜜罐是典型的检测机制。为了有效,蜜罐需要保持活跃,甚至抵御那些多疑对手企图区分蜜罐和真实系统的尝试。大部分蜜罐技术是为互联网服务开发的而不是为了工业过程。虽然蜜罐能够用真实的控制系统硬件构建,但这并不是一个特别有成本效益或者可扩展的方法。一个基于软件的解决方案一定更为可取。
在我们的文章中,介绍了我们进行的工业控制系统蜜罐技术的开发工作的现状。我们特别专注西门子S7-300系列控制器,因为西门子是工控市场的领导者。
下面介绍的其他几个研究项目也是旨在开发针对工业控制系统的蜜罐。我们只知道这些项目和我们一样是针对西门子PLC的。然而,我们发现这些项目只能提供有限的交互性。对于我们的项目,我们的目的在于提高交互性以便我们能够在检测之外监控和分析对手的行为。
在下文中,我们首先将蜜罐交互的种类进行分级分类,并且我们将根据这个体系分类相关蜜罐研究项目。之后,我们将介绍XPOT及我们的中等交互蜜罐技术。最后,我们将描述我们的评估工作并以简单的总结结尾。
2. 蜜罐的分类:
蜜罐典型的分类是根据他们的交互水平。然而,相关分类不是标准化的且存在许多不同风格的定义 [6,8,11]。低交互和高交互术语被广泛使用,中等交互不那么经常被使用。我们建议通过更严格且清晰圈定的标准进行分类。简单概括PLC,它包括一个主机和一个由主机运行的程序。主机和程序都有输入和输出,一个蜜罐能够具有:
1.低交互性:对手能够与主机但是不能与程序进行交互。
2.中等交互性:对手能够与主机和程序进行交互。
3.高交互性:对手能够与主机和程序进行交互,并且它能够读写程序。
“交互”被定义为发送查询和收到答复。在每个类别中,我们可以通过定义允许对手的交互集合来建立互动的部分顺序。例如,我们能够限制对手在PLC的指令和功能的子集合中。一个蜜罐会比另一个在同一个等级的蜜罐更具有交互性,当且仅当它允许的交互集是另一个蜜罐允许交互集的适当超集。 在下文中,我们将应用分类体系到相关研究项目中。
3. 相关工作:
根据我们的分类,Conpot[10]是一个低交互蜜罐。在其他协议中,它模拟具有Modbus和S7comm连接的西门子SIMATIC S7-200 PLC。它的默认设置能够延伸到模拟其他使用专有S7comm协议的西门子PLC。但是S7comm协议的实现是相当不完整的。截止到写本文的时候,它只能读取系统状态列表(SSL)的条目。默认配置下,Conpot添加了两项标识了西门子PLC的型号和版本的条目。一个真正的西门子PLC有差不多1000个这些条目,缺失的那些使对手很容易识别Conpot。
CryPLH[1]模拟了一个S7-300,作者认为CryPLH是一个高交互蜜罐,其明确目的是提高交互性、可配置性和不可区分性。CryPLH再现了一个看起来与真实界面完全相同的 PLCWeb界面的静态副本。登录被禁用以便对手无法访问状态信息。CryPLH 提供SNMP服务,标识为PLC并提供从主机操作系统获取网络统计信息的功能。对手甚至可以使用西门子的SIMATIC STEP 7软件连接到CryPLH。 但是,CryPLH模拟S7-300 PLC的最高保护级别,并且拒绝任何提交的密码。因此,CryPLH阻止了对手的进一步探索。由于对手既不能观察也不能修改PLC应该运行的程序,CryPLH在我们的分类方案中仍然被归类为低交互。然而,通过Nmap 获取的TCP / IP操作系统指纹与真正的PLC不同,这使得CryPLH可以容易地被对手识别为蜜罐。
灯塔实验室(The ICS Security Workspace [3])运营人员显然有PLC蜜罐。由于他们没有发布他们的蜜罐配置或其功能描述,我们只能从他们发布的蜜罐日志做出推论。他们的日志类似于Snap7 [9]输出,并在SSL(System State List 系统状态列表)中显示许多对标识条目的请求,其中大多数请求源自Shodan [7]和Censys [2]。两个连接特别有趣,一个连接查询其他SSL条目和一些程序及数据块,工程工作站可能被使用了。另一个查询单个配置数据块和一些不寻常的SSL条目。他们在他们的博客[4]中提到了三次尝试的攻击:对手试图停止程序执行,修改内存区域和调整系统时钟。总的来说,灯塔实验室的蜜罐似乎比我们之前讨论过的两种蜜罐允许更大的交互性,但是仍然不支持与模拟PLC程序的交互。基于这个有限的信息,我们将他们的蜜罐分类为低交互。
4. XPOT蜜罐:
我们开发了一个中—高交互的蜜罐。它能模拟我们的参考模型西门子SIMATIC S7 314C-2 PN/DP,它也能够模拟几乎任何其他的S7-300/400模型,因为所有这一系列的模型都相当相似。在下文中,我们归纳对手的攻击模式,并且我们强调两个独特的性能使得我们的蜜罐XPOT有别于其他的相关项目。
攻击模式
我们的目标是允许对手与蜜罐自由交互。特别是,我们期望对手将尝试以下交互,以便快速确定他们是否面对一个低交互蜜罐:(1)执行Nmap扫描,(2)用Step7软件或者TIA portal软件连接蜜罐,(3)读取完整的配置和状态,(4)下载和上传程序,(5)调试运行程序,(6)检查和修改记忆区。显然如果他采用XPOT不支持的真正PLC的功能进行探测,我们的蜜罐将被识别。如果其支持的功能与真正的PLC的功能明显不同,我们的XPOT也将被识别。这产生两类对手:通过支持的功能集进行交互或其他方式交互的对手。
TCP/IP栈操作
为了避免操作系统指纹识别软件的识别,我们处理所有传入和传出的TCP / IP连接,使它们看起来等于我们的参考模型。举几个例子,我们所做的操作涉及到对TCP序列号,ACK号和TCP选项信息的调整。我们获得的XPOT指纹与我们的参考模型几乎相同。例如,Nmap将报告与XPOT和我们的参考模型相同的操作系统。我们的实现建立在nfqueue上,这个项目重定向穿过内核包过滤器进入到由用户空间应用程序处理的队列中。
可编程性
为了根据我们的分类实现高交互性,我们支持执行PLC程序,对手可以使用例如西门子TIA portal将其加载到XPOT上。PLC程序由专有MC7格式编码的字节码组成。MC7类似于一个与IEC 61131-3 [5]中标准化的指令列表(IL)相似的指令集的汇编语言。
MC7由1900个操作码组成,它产生146种不同的指令,其中我们目前支持的指令数量超过100个。西门子PLC可以相当快地执行MC7指令,这使得将字节码编译为本地代码变得有吸引力。缺点是编译字节码需要几秒钟到几分钟,这取决于底层平台和编译程序的大小。一个真正的PLC可以立即开始执行新的程序,因此对手可以很容易地区分XPOT和一个真正的PLC。为了避免这种情况,我们利用LLVM的功能,对字节码进行解释,直到它的编译完成。MC7的解释和编译建立在语义相同的LLVM中间表示(IR)之上,这避免了重复的工作。中间表示(IR)有助于未来潜在的用处,例如代码分析和模型检查(Model Checking)。
5. 评估:
试点试验
在我们的大学定期提供一个关于PLC编程和黑客技术的实践课程,同时我们与完成我们课程的学生进行了试点研究。该课程通常持续三周,其中一周的重点是使用我们提供PLC的编程技能。 我们最近的课程(10个参与者)结束后,我们要求6个随机选择的参与者区分真正的PLC和XPOT。 我们的目标是探讨如何研究PLC蜜罐与具有不同技能的对手的对抗能力。为了这个原因,我们将实验分成不同的阶段。我们给参与者两个IP(一个蜜罐和一个参考PLC),但参与者不知道是哪个。我们从简单的任务开始,并且对于我们要求学生探索的PLC功能集进行限制。在后续阶段,我们逐渐加大给到学生的功能集和操作自由。正如预期,他们在早期阶段不成功,但在后期阶段越来越顺利。当我们取消了他们可使用的工具和功能的所有限制,所有学生在最后阶段都取得了成功。参与者能发现从非功能利用到功能缺失再到PLC输出诊断信息的不同差异。不是所有的差异都能正确识别蜜罐,参与者有时不确定什么构成正确的行为。我们获得的结果与我们在前一年进行的试点研究一致。结果表明,我们很难愚弄那些对PLC编程有理解或已经对操作的对象有所怀疑的对手。因此,高交互的蜜罐必须支持一组相当完整的PLC功能,以便让对手长时间信服。
暴漏在互联网上
我们使用动态DSL链路(即与我们大学无关的链路)在互联网上公开了XPOT一个月。在这个实验中,我们出于好奇而不是进行正式的研究。我们观察到几个完整的S7comm握手和典型查询标识条目。除此之外,我们没有观察到可疑活动。这些结果与CryPLH的结果相似[1]。
6. 结论:
如果暴漏在互联网的西门子系列PLC受到攻击,那么可以说明对手在进攻目标时有选择性。这是鉴于手头筹码的唯一可能预期。另一方面,业余人士进入PLC编程领域的障碍很大,因为这是一个相对生僻的领域。简单尝试任何超出互联网上可找到的工具都需要付出相当大的努力,并且需要承担风险。也许由于这些原因,我们还没有发现业余人士的攻击。
我们虽然付出了相对较多的努力,且它提供了显著增强的交互性和不可区分性,但XPOT仍然是一个早期的原型。尽管我们一直在努力,但对手依然有可能能将XPOT与真正的西门子PLC区分开来。然而,这需要对XPOT尚不支持的不常见或某一特定特征进行一定程度的确定探测,我们认为这是朝着目标迈进的一步。
当然,PLC的精确仿真只是使蜜罐让对手信服的一个方面。对手可能会仔细检查确定PLC可能控制的过程,甚至可能稍微干扰这个过程,以便观测传感器是否受到影响。为了使对手更加信服,我们正在将XPOT加入到工业过程的仿真中。
7. 参考文献
[1] D. I. Buza, F. Juh´asz, G. Miru, M. F´elegyh´azi, and T. Holczer. CryPLH: Protecting Smart Energy Systems from Targeted Attacks with a PLC Honeypot. In Smart Grid Security – Second International Workshop, 2014.[2] Z. Durumeric, D. Adrian, A. Mirian, M. Bailey, and J. A. Halderman. A Search Engine Backed by Internet-Wide Scanning. In Proc. of the 22nd ACM CCS, Oct. 2015.
[3] ICS Security Workspace. ICS/SCADA Honeypot Log. https://plcscan.org/blog/dataanalysis/icsscada-honeypot-log/.
[4] ICS Security Workspace. Security Analysis from Siemens S7 PLC CPU Buffer [chinese]. https://plcscan.org/blog/2016/03/security-analysis-from-siemens-s7-plc-cpubuffer/.
[5] IEC. IEC 61131-3 International Standard, Programmable controllers. Part 3: Programming Languages. 2003.
[6] M. H. L´opez and C. F. L. Res´endez. Honeypots: Basic Concepts, Classification and Educational Use as Resources in Information Security Education and Courses. In Proc. of the Informing Science and IT Education Conference, 2008.
[7] J. Matherly. Shodan. https://www.shodan.io/.
[8] I. Mokube and M. Adams. Honeypots: Concepts, Approaches, and Challenges. In Proc. of the 45th annual southeast regional conference, 2007.
[9] D. Nardella. Snap7. http://snap7.sourceforge.net/.
[10] L. Rist et al. Conpot. http://conpot.org/
[11] C. Seifert, I. Welch, and P. Komisarczuk. Taxonomy of Honeypots, 2006.
附件:面向工业控制系统的高交互蜜罐
面向互联网的西门子PLC
大约有3700台西门子S7 PLC连接到互联网,至少230个蜜罐可以被简单地识别。对手可能知道它们的存在,并可能执行彻底的检查以避免它们。我们应该在交互性层面改进工控蜜罐,以有效地使用它们。
工控世界里的蜜罐分类
不同于普通蜜罐只模拟特定的软件,工业控制系统是通用的计算设备。工控蜜罐允许单独与系统及其加载的程序交互。我们扩展了传统的蜜罐分类来说明:
低交互:对手只能与主机交互
中等交互:对手能够与主机和程序交互
高交互:对手在中等交互之上能读写程序
首个高交互工控蜜罐
XPOT是首个高交互,而且能够用来分散和分析高级对手的PLC蜜罐。由于它是基于软件的,它的可扩展性非常强,并允许大型诱饵或传感器网络。XPOT可以连接到一个模拟工业过程,以使对手的体验全面。
XPOT:一个可编程的PLC蜜罐
我们开发的XPOT,是一个基于软件能够运行程序的高交互PLC蜜罐,它模拟西门子S7-314C-2 PN / DP。
工控蜜罐的特点和分类
低交互 | 中等交互 | 高交互 | |||||||
TCP/IP堆栈欺骗 | 读取系统状态列表 | HTTP SNMP | 列块 | 读取存储 | 写入存储 | 开始/暂停CPU | 上传/下载块 | 执行程序 | |
Conpot | – | √ | – | – | – | – | – | – | – |
Snap7 | – | √ | – | (√) | (√) | (√) | (√) | – | – |
CryPLH2 | (√) | √ | √ | √ | √ | √ | √ | √ | – |
XPOT | √ | √ | SNMP | √ | √ | √ | √ | √ | √ |