摘要:爲了更好地學習工控相關知識,我們使用了Conpot進行搭建,Conpot是Glastopf下一個開源的ICS/SCADA蜜罐系統,工具可以實現ModBus SNMP等PLC的外部子站服務的模擬仿真。工業系統、工業網絡大多以“物理隔離”爲核心安全手段隨着工控安全行業的蓬勃發展,隨着人工智能、大數據、雲計算等新一代信息技術的迅速發展,新技術的應用使得原來封閉的工業控制系統網絡越來開放,尤其是“兩化融合”的深入以及“工業4.0”、“中國製造2025”等戰略的推進,關鍵基礎設施逐漸開始採用以太網、通用協議、無線設備、遠程配置等。

0X00 工控安全案例

2010年6月伊朗核電站“震網(Stuxnet)”事件

2010 年 6 月,一個名爲 Stuxnet 處於休眠狀態的病毒潛伏在伊朗的鈾濃縮設施網絡中,Stuxnet 在位於納坦茲的離心機中被激活,控制了30%的納坦茲設施的計算機,致使伊朗暫時關閉了核設施和核電廠,震網病毒感染了全球超過20萬臺電腦,摧毀了伊朗濃縮鈾工廠五分之一的離心機。震網病毒的感染途經是通過U盤傳播,然後修改PLC控制軟件代碼,使PLC向用於分離濃縮鈾的離心機發出錯誤的命令。

土耳其原油輸送管道爆炸事件:

2014年12月,土耳其境內,由伊拉克向土耳其輸送原油的輸油管道爆炸。 爲監控從裏海通向地中海的1099英里的石油管道內的每一步,這條管道內安裝了探測器和攝像頭,然而管道爆炸破壞前前,卻沒有引發一個遇險 信號,原因是黑客關閉了警報、切斷了通信的同時給管道內原有大幅增壓。

烏克蘭電網BlackEngery病毒事件:

2015年12月23日,烏克蘭電網遭網絡攻擊, 受 影響家庭70萬戶,這是有史以來首次導致大規模 停電的網絡攻擊。以BlackEnergy等相關惡意代碼爲主要攻擊工具,以郵件發送惡意代碼載荷爲最終攻擊的直接突破入口,通過遠程控制SCADA節點下達指令爲斷電手段,以摧毀破壞SCADA系統實現遲滯恢復和狀態致盲,以DDoS 作爲干擾,最後達成長時間停電並製造社會混亂的具有信息戰水準的網絡攻擊事件。

2017年WannaCry病毒席捲全球,中石油2萬多座加油站斷網

WannaCry勒索病毒蔓延全球,感染了150個國家的30多萬臺計算機。中國中石油公司超過2萬座加油站也受到攻擊,在斷網約36小時左右才慢慢恢復。

2018年1月熔斷(Meltdown)和幽靈(Spectre)兩大新型漏洞,思科西門子多款工業交換機受影響

“熔斷”(Meltdown)和“幽靈”(Spectre)兩大新型漏洞通過攻擊獲取數據、讀取內核內存影響AMD、ARM、Intel系統和處理器等設備,思科800系列集成多業務路由器和工業以太網4000系列交換機以及西門子工業設備已確認受到影響。

2018年2月歐洲廢水處理服務器被惡意軟件入侵:

接入歐洲廢水設施運營技術網絡的服務器遭遇加密貨幣採礦惡意軟件入侵,拖垮廢水處理設備中的HMI服務器CPU,導致歐洲廢水處理設備服務器癱瘓 。

2018年4月美國天然氣輸氣管道公司遭到攻擊:

美國4家天然氣輸氣管道公司遭供應鏈攻擊,導致與客戶通信系統被關閉。

2018年6月三一重工泵車失蹤案:

通過源代碼找到遠程監控系統的漏洞,解鎖設備,損失10億元。

2018年8月3日,臺積電感染WannaCry病毒

臺積電位於臺灣新竹科學園區的12英寸晶圓廠和營運總部的部分生產設備受到魔窟勒索病毒WannaCry勒索病毒的一個變種感染,具體現象是電腦藍屏,鎖各類文檔、數據庫,設備宕機或重複開機。幾個小時之內,臺積電位於臺中科學園區的Fab 15廠,以及臺南科學園區的Fab 14廠也陸續被感染,這代表臺積電在臺灣北、中、南三處重要生產基地,同步因爲病毒入侵而導致生產線停擺,損失高達26億,發生該事件的原因爲新機臺接入時,未進行隔離,確認無病毒,直接聯網,所有機臺生產程序放在雲端,每次生產需要重新下發安裝,爲提高效率,取消了各廠區間的防火牆,主機設備及系統過於陳舊,未進行升級,未安裝防病毒軟件。

2019年3月,委內瑞拉國內大部分地區停電

委內瑞拉發生全國範圍的大規模停電,首都加拉加斯以及其他大部分地區陷入一篇漆黑,全國18個州電力供應中斷,僅有5個州倖免,此次突發的電力系統崩潰沒有任何預兆。停電給委內瑞拉帶來了重大損失,全國交通癱瘓,地鐵系統關閉,醫院手術中斷,所有通訊線路中斷,航班無法正常起降。

2019年7月,紐約停電4個小時

美方報導稱:伊朗革命衛隊信息戰部隊成功的突破了美國信息戰部隊的圍堵,闖入了紐約市三十多個變電站的控制中心,並對控制中心進行信息站破壞,導致了紐約全城大約4個小時的停電。這是幾十年來的第一次大規模停電造成混亂。

0X01工控系統漏洞存在現狀和不足

目前工控系統安全與傳統IT系統安全不同有以下幾點原因:

一、從安全優先級來說:

 1.工控系統網絡安全焦點問題是生產過程穩定可靠,強調的是可用性,不能停產,不能發生生產安全事故。
 2.工控系統網絡通訊協議不同,大量的工控系統採用私有協議。
 3.系統運行環境不同,工控系統運行環境相對落後,對系統穩定性要求高。
 4.工控系統安全不是按照網絡安全順序排序,而是可用性最重要,完整性和機密性在後,故相對於傳統IT系統的優先級由機密性>完整性>可用性來說,工控系統安全恰恰相反,工控系統優先級爲可用性>完整性>機密性。

二、從防病毒軟件來說:

 1.工控網絡通常不允許連接互聯網,不具備及時更新病毒庫的條件。
 2.工業控制系統通常不允許在生產運行期間進行系統升級。
 3.病毒誤殺在工業控制系統中可能產生致命的後果,所以導致現在大量工作站處於無防護狀態。

三、從傳統防護設備來說(如IDS/IPS:):

 1.工業控制系統通常不允許在運行期間進行系統升級。
 2.工控網絡通常不允許連接互聯網,不具備及時更新攻擊庫的條件。
 3.IDS的高誤報率一直是制約它廣泛應用的主要因素。
 4.IPS爲了降低誤報,很大程度上是以犧牲檢出率爲代價。

四、工控安全當下趨勢

工業系統、工業網絡大多以“物理隔離”爲核心安全手段隨着工控安全行業的蓬勃發展,隨着人工智能、大數據、雲計算等新一代信息技術的迅速發展,新技術的應用使得原來封閉的工業控制系統網絡越來開放,尤其是“兩化融合”的深入以及“工業4.0”、“中國製造2025”等戰略的推進,關鍵基礎設施逐漸開始採用以太網、通用協議、無線設備、遠程配置等。在互聯互通、縱向集成等新的生產模式下,關鍵基礎設施正逐漸暴露於互聯網中,工控系統下的安全問題所包含的軟件隱患、網絡邊界隱患、環境和硬件隱患等問題,以及工控系統的網絡安全協議問題,如操作系統的落後、補丁的更新不及時、緩衝區溢出問題、拒絕服務漏洞、關鍵設備沒有冗餘備份,不安全的遠程訪問ICS組件等問題帶來的安全隱患問題。工控系統漏洞發現數量與日俱增,爲網絡攻擊以及病毒的滋生與傳播創造了適宜環境,如以勒索軟件爲代表的新型惡意軟件不斷出現,對工業系統安全運營構成威脅。針對工業領域的網絡攻擊呈組織化、遞增化發展,且攻擊方式呈現多樣性。

0X02 工控蜜罐CONPOT ICS/SCADA搭建

1、Conpot介紹

爲了更好地學習工控相關知識,我們使用了Conpot進行搭建,Conpot是Glastopf下一個開源的ICS/SCADA蜜罐系統,工具可以實現ModBus SNMP等PLC的外部子站服務的模擬仿真。Conpot是一個部署在服務端的低交互ICS蜜罐,能夠快速地部署、修改和拓展。開發者通過提供一系列的通用工控協議,使得我們能夠非常快速地在我們的系統上構建一套複雜的工控基礎設施用於欺騙未知的攻擊者。 Conpot一共支持bacnet、enip、guardian_ast、ipmi、kamstrup、misc、modbus、s7comm和snmp等10個協議。

協議 介紹
bacnet 用於智能建築的通信協議
enip 基於通用工業協議
ipmi 智能平臺管理接口,可以智能地監視、控制和自動回報大量服務器的運作狀況
modbus 一種串行通信協議
s7comm 西門子S7通訊協議簇裏的一種
snmp 簡單的網絡管理協議
http 超文本傳輸協議

2、蜜罐搭建方法

注意:使用docker安裝後的docker不是直接在conpot目錄下,而應該在/home/conpot/.local/bin下。

三種安裝方式:

- Pre-Build鏡像:
  (1)docker pull honeynet/conpot
  (2)docker run -it -p 80:80 -p 102:102 -p 502:502 -p 161:161/udp --network=bridge honeynet/conpot:latest /bin/sh
  (3)conpot --template default
  (4)訪問http://MY_IP_ADDRESS
- 從源代碼構建Docker映像
  (1)git clone https://github.com/mushorg/conpot.git
  (2)cd conpot
  (3)docker build -t conpot .
  (4)docker run -it -p 80:80 -p 102:102 -p 502:502 -p 161:161/udp --network=bridge conpot
   (5)訪問http://MY_IP_ADDRESS
 -從源代碼構建並使用docker-compose運行
 (1)安裝docker-compose
 (2)git clone https://github.com/mushorg/conpot.git
 (3)cd conpot/docker
 (4)docker-compose build
 (5)docker-compose up
  (6)docker-compose up -d
  (7)訪問http://MY_IP_ADDRESS
- ubuntu安裝
  (1)sudo apt-get install libsmi2ldbl snmp-mibs-downloader python-dev libevent-dev libxslt1-dev libxml2-dev
  (2)pip install conpot
  (3)訪問http://MY_IP_ADDRESS

3、搭建過程

這裏我使用了從源代碼構建並使用docker-compose進行蜜罐搭建:(1)git clone (2)cd conpot/docker 後執行docker-compose build (3)docker-compose up (4)訪問

0X03工控系統漏洞利用框架:

1、框架介紹:

工控ISF(Industrial exploit Framework)是一個基於Python的工控系統漏洞利用框架,整體類似於metasploit框架,我們使用該框架配合以上蜜罐環境進行演示。

工控協議客戶端

名稱 路徑 描述
modbus_tcp_client icssploit / clients / modbus_tcp_client.py Modbus-TCP客戶端工具
wdb2_client icssploit / clients / wdb2_client.py WdbRPC版本2客戶端工具(Vxworks 6.x)
s7_client icssploit / clients / s7_client.py s7comm客戶端工具(S7 300/400 PLC

漏洞利用模塊

名稱 路徑 描述
s7_300_400_plc_control exploits / plcs / siemens / s7_300_400_plc_control.py S7-300 / 400 PLC啓停腳本
s7_1200_plc_control exploits / plcs / siemens / s7_1200_plc_control.py S7-1200 PLC啓停/重置
vxworks_rpc_dos exploits / plcs / vxworks / vxworks_rpc_dos.py Vxworks RPC遠程拒絕服務(CVE-2015-7599)
quantum_140_plc_control exploits / plcs / schneider / quantum_140_plc_control.py quantum_140_plc_control.py 施耐德Quantum 140系列PLC啓停腳本
crash_qnx_inetd_tcp_service exploits / plcs / qnx / crash_qnx_inetd_tcp_service.py QNX Inetd TCP服務崩潰
qconn_remote_exec exploits / plcs / qnx / qconn_remote_exec.py qconn_remote_exec.py QNX QCONN遠程代碼執行
profinet_set_ip exploits / plcs / siemens / profinet_set_ip.py Profinet DCP設備IP配置

掃描模塊

名稱 路徑 描述
profinet-dcp-scan scanners/profinet-dcp-scan.py Profinet DCP 掃描器
vxworks_6_scan scanners/vxworks_6_scan.py Vxworks 6.x 掃描器
s7comm_scan scanners/s7comm_scan.py S7comm 掃描器
enip_scan scanners/enip_scan.py EthernetIP 掃描器

ICS 協議模塊 (使用Scapy編寫)

這些協議模塊能夠與其他Fuzz框架進行結合,具體Fuzz模糊測試相關內容,可以參考團隊專欄小夥伴文章《基於Peach的Modbus協議模糊測試》。

名稱 路徑 描述
pn_dcp icssploit/protocols/pn_dcp Profinet DCP 協議
modbus_tcp icssploit/protocols/modbus_tcp p Modbus TCP 協議
wdbrpc2 icssploit/protocols/wdbrpc2 WDB RPC Version 2 協議
s7comm icssploit/protocols/s7comm.py S7comm 協議

2、漏洞利用框架搭建

1)Python所依賴環境

在個人安裝過程中,python-nmap,gnureadline使用pip安裝未成功,單獨下載相關依賴包進行安裝

gnureadline (OSX only)requestsparamikobeautifulsoup4pysnmppython-nmapscapy

安裝方式:

1)git clone https://github.com/dark-lbp/isf/

2)cd isf

3)python isf.py 啓動

安裝完成後,使用python isf.py,啓動框架,如下圖所示: 由於掃描和攻擊操作僅模塊不同,所以我們直接使用西門子plc漏洞利用模塊進行攻擊嘗試,首先show options參數可以需要設置的相關參數如下圖所示,:

exploits/plcs/siemens/s7_300_400_plc_control

此處設置攻擊目標爲我們上面搭建的蜜罐靶機,然後執行攻擊模塊:

set target 192.168.0.105
run

查看蜜罐發現收到了來自於攻擊模塊數據包。 至此,一個簡單的模擬攻擊流程結束。

0X04工控資產識別及發現

1.網絡空間搜索:

以以下案例簡單介紹幾個網絡空間安全搜索引擎,排名不分先後,若想了解更多資料,請至”TideSec安全團隊“專欄查看。

FOFA-網絡空間安全搜索引擎

網絡空間資產檢索系統(FOFA)是世界上數據覆蓋更完整的IT設備搜索引擎,擁有全球聯網IT設備更全的DNA信息。探索全球互聯網的資產信息,進行資產及漏洞影響範圍分析、應用分佈統計、應用流行度態勢感知等。

例如搜索全球範圍內,端口爲102協議爲S7的網絡空間資產port=”102″ && protocol==”s7″

ZoomEye-網絡空間搜索引擎

鍾馗之眼網絡空間搜索引擎是國內安全公司知道創宇開發的網絡空間搜索引擎,通過這個搜索引擎開放他們的海量數據庫,包括操作系統,Web服務,服務端語言,Web開發框架,Web應用,前端庫及第三方組件等等,結合NMAP大規模掃描結果進行整合。

例如搜索全球範圍內,端口爲102協議爲S7的網絡空間資產port:102 +app:”Siemens S7 PLC” Shodan-物聯網的搜索引擎

相對於ZoomEye,Shodan更側重於主機層面,作爲一個針對網絡設備的搜索引擎,它可以在極短的時間內在全球設備中搜索到你想找的設備信息,此外Shodan是世界上第一個針對Internet連接設備的搜索引擎。

例如搜索全球範圍內,端口爲102協議爲S7的網絡空間資產module: s7 port:102″

2.nmap腳本

Nmap是一款開源免費的網絡發現(Network Discovery)和安全審計(Security Auditing)工具。軟件名字Nmap是Network Mapper的簡稱。Nmap最初是由Fyodor在1997年開始創建的。隨後在開源社區衆多的志願者參與下,該工具逐漸成爲最爲流行安全必備工具之一。一般情況下,Nmap用於列舉網絡主機清單、管理服務升級調度、監控主機或服務運行狀況。Nmap可以檢測目標機是否在線、端口開放情況、偵測運行的服務類型及版本信息、偵測操作系統與設備類型等信息。

我們利用Nmap腳本可以對S7、modbus的plc設備進行詳細掃描探測。

Nmap默認安裝在Windows環境下的腳本位置:

C:\Program Files (x86)\Nmap\scripts,首先我們將自己收集有關工控掃描腳本複製到scripts目錄下,如下圖所示:

以下爲Nmap腳本參數的規則:

-sC: 等價於 –script=default,使用默認類別的腳本進行掃描。
–script=: 使用某個或某類腳本進行掃描,支持通配符描述
–script-args=: 爲腳本提供默認參數
–script-args-file=filename: 使用文件來爲腳本提供參數
–script-trace: 顯示腳本執行過程中發送與接收的數據
–script-updatedb: 更新腳本數據庫
–script-help=: 顯示腳本的幫助信息,其中部分可以逗號分隔的文件或腳本類別。

以下爲Nmap腳本執行格式:

執行單個腳本:nmap –script /path/to/script.nse
執行多個腳本:nmap –script /path/to/script.nse,/another/path/script2.nse
執行文件夾包含的所有腳本:nmap –script/path/to/folder/

探測s7協議的設備詳細信息:

nmap -v -script s7-info 172.16.111.162 -p 102,如下圖所示:

工控協議還有還有很多,由於團隊內小夥伴文章中已經對工控的資產發現和識別進行了詳細的闡述,故此處暫時以探測s7協議的設備爲舉例。

Modbus
Modbus協議是應用於電子控制器上的一種協議。通過此協議設備間可以通信。它已成爲一通用工業標準。
port:502
module modbus
Siemens S7
s7協議是SIEMENS s7協議族的標準通信協議,使用s7-應用接口的通信不依賴特定的總線系統。
port:102
module: s7
DNP3
DNP(Distributed Network Protocol,分佈式網絡規約)是一種應用於自動化組件之間的通訊協議,常見於電力、水處理等行業。SCADA可> 以使用DNP協議與主站、RTU、及IED進行通訊。
port:20000 source address
module: dnp3
Niagara Fox
Fox協議是Tridium公司開發的Niagara框架的一部分,廣泛應用於樓宇自動化控制系統。
port:1911,4911 product:Niagara
module: fox
BACnet
樓宇自動控制網絡數據通訊協議(BACnet)是針對採暖、通風、空調、製冷控制設備所設計,同時也爲其他樓宇控制系統(例如照明、安保、消防等系統)的集成提供一個基本原則。
port:47808
module: bacnet
EtherNet/IP
Ethernet/IP是一個面向工業自動化應用的工業應用層協議。它建立在標準UDP/IP與TCP/IP協議之上,利用固定的以太網硬件和軟件,爲配置、訪問和控制工業自動化設備定義了一個應用層協議。
port 44818
module: ethernetip, ethernetip-udp
GE-SRTP
GE-SRTP協議由美國通用電氣公司開發,GE PLC可以通過GE-SRTP進行數據通信和數據傳輸。
port:18245,18246 product:"general electric"
module: general-electric-srtp
HART-IP
HART協議是美國Rosement公司於1985年推出的一種用於現場智能儀表和控制室設備之間的通信協議。現已成爲全球智能儀表的工業標準 。
port:5094 hart-ip
module: hart-ip-udp
PCWorx
PCWorx協議由菲尼克斯電氣公司開發,目前廣泛使用於工控系統。PCWORX3.11是菲尼克斯電氣公司的專用協議。
port:1962 PLC
module: pcworx
MELSEC-Q
MELSEC-Q系列設備使用專用的網絡協議進行通訊,該系列設備可以提供高速、大容量的數據處理和機器控制。
port:5006,5007 product:mitsubishi
module: melsec-q-tcp
OMRON FINS
歐姆龍PLC使用網絡協議FINS進行通信,可通過多種不同的物理網絡,如以太網、控制器連接等。
port:9600 response code
module: omron-tcp
Crimson v3
協議被Crimson桌面軟件用於與Red Lion G306工控系統的HMI人機接口。
port:789 product:"Red Lion Controls"
redlion-crimson3
Codesys
CoDeSys編程接口在全球範圍內使用廣泛,全球上百個設備製造商的自動化設備中都是用了該編程接口。
module: codesys
IEC 60870-5-104
IEC 60870-5-104是國際電工委員會制定的一個規範,用於適應和引導電力系統調度自動化的發展,規範調度自動化及遠動設備的技術性能。
port:2404 asdu address
module: iec-104
ProConOS
ProConOS是德國科維公司(KW-Software GmbH)開發的用於PLC的實時操作系統,它是一個高性能的PLC運行時引擎,目前廣泛使用於基於嵌入式和PC的工控系統。
port:20547 PLC
module: proconos
moxa-nport
Moxa 串口服務器專爲工業應用而設計。不通配置組合的串口服務器更能符合不同工業現場的需求。NPort系列串口服務器讓傳統 RS-232/422/485設備立即聯網,提供您基於IP的串口聯網解決方案。
port:4800
moxa-nport

3.wireshark

Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並儘可能顯示出最爲詳細的網絡封包資料。Wireshark使用WinPCAP作爲接口,直接與網卡進行數據報文交換。

使用Wireshark抓取並分析西門子S7協議: 使用Wireshark抓取並分析Modbus協議

0X05工控系統安全防護建議:

 1)網絡邊界加強防護網絡邊界可部署訪問控制設備,對需要遠程訪問的工控系統增加白名單的控制策略,僅開放需要的端口地址,如關閉Telnet等不必要端口。
 2)安全漏洞加強管理 定期對工控系統進行漏洞掃描,對關鍵漏洞的修補制定跟蹤計劃。
 3)重視網絡安全工作 重視網絡安全工作,加大工控系統暴露公網的整改力度。
 4) 只有可信任的設備,才能接入控制網絡,如外設管理,禁止未授權的U盤接入主機。
 5) 只有可信任的消息,才能在網絡上傳輸,應用白名單代替防病毒軟件,例如設置應用程序白名單,阻止未授權程序運行,只有可信任的軟件,才允許被執行。
 6)工業防火牆代替IT防火牆,工控網絡異常檢測代替IDS,做好網絡隔離,部署工業控制網絡監測與審計設備。
 7)重要工業控制設備前端部署工業協議DPI功能的工業防火牆,可將工業控制設備的控制參數限定在正常的範圍,避免超出限值的違法操作或失誤操作。
 8)定時對數據進行備份,及時做好數據備份工作,及時建立應急響應及災難恢復演練等流程。

0X06 結束語

該文章爲Parad0x個人工控安全入門一些想法,還請各位大佬斧正,文中若涉及到攻擊等手段,僅可用於研究測試使用,請勿非法用作他途。

除本文中所涉及到的蜜罐及工控掃描腳本外個人還收集了部分工控資料,包括但不限於工控利用腳本、工控掃描探測腳本、工控設備默認密碼、協議數據包、PLC、Scada等相關工具及資料,可以關注“TideSec安全團隊”公衆號回覆”工控工具包”獲取。

0X07參考及感謝:

https://www.jianshu.com/p/4c*dcf7ce7

https://www.freebuf.com/articles/ics-articles/209786.html

http://www.mei.net.cn/jxgy/201904/819900.html

*本文原創作者:Parad0x,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載

相關文章