日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

工控安全入门之 Ethernet/IP

發(fā)布時間:2023/12/13 综合教程 21 生活家
生活随笔 收集整理的這篇文章主要介紹了 工控安全入门之 Ethernet/IP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

工控安全入門之 Ethernet/IP

Ethernet/IP

與 Modbus 相比,EtherNet/IP 是一個更現(xiàn)代化的標準協(xié)議。由工作組 ControlNet International 與 ODVA 在 20 世紀 90 年代合作設計。EtherNet/IP 是基于通用工業(yè)協(xié)議(Common Industrial Protocol,CIP)的。CIP 是一種由 ODVA 支持的開放工業(yè)協(xié)議,它被使用在諸如 DeviceNet 和 ControlNet 以及 EtherNet/IP 等串行通信協(xié)議中。美國的工控設備制造商 Rockwell/Allen-Bradley 已經(jīng)圍繞 EtherNet/IP 進行了標準化,其他廠商如 Omron 也在其設備上支持了 EtherNet/IP。EtherNet/IP 已經(jīng)變得越來越受歡迎,特別是在美國。盡管 EtherNet/IP 比 Modbus 更現(xiàn)代化,但仍然存在協(xié)議層面的安全問題。EtherNet/IP 通常通過 TCP/UDP 端口 44818 運行。此外,EtherNet/IP 還有另一個端口 TCP/UDP 端口 2222。使用這個端口的原因是 EtherNet/IP 實現(xiàn)了隱式和顯示兩種消息傳遞方式。顯式消息被稱為客戶端/服務器消息,而隱式消息通常被稱為 I/O 消息。

圖 5-12 Ethernet/IP分組結(jié)構(gòu)

EtherNet/IP 是為了在以太網(wǎng)中使用 CIP 協(xié)議而進行的封裝。EtherNet/IP 的 CIP 幀封裝了命令、數(shù)據(jù)點和消息等信息。CIP 幀包括 CIP 設備配置文件層、應用層、表示層和會話層四層。數(shù)據(jù)包的其余部分是 EtherNet/IP 幀,CIP 幀通過它們在以太網(wǎng)上傳輸。EtherNet/IP 分組結(jié)構(gòu)如圖 5-12 所示。

CIP 規(guī)范對數(shù)據(jù)包結(jié)構(gòu)有很多的規(guī)定,這意味著每個使用 EtherNet/IP 的設備必須實現(xiàn)符合規(guī)范的命令。下面是 EtherNet/IP 首部中封裝的 CIP 幀字段:

圖 5-13 CIP字段

Command
兩字節(jié)整數(shù),對應一個 CIP 命令。CPI 標準要求,設備必須能接收無法識別的命令字段,并處理這種異常。

Length
兩字節(jié)整數(shù),代表數(shù)據(jù)包中數(shù)據(jù)部分的長度。對于沒有數(shù)據(jù)部分的請求報文,該字段為0。

Session Handle
會話句柄(session handle)由目標設備生成,并返回給會話的發(fā)起者。該句柄將用于后續(xù)與目標設備的通信。

Status
Status 字段存儲了目標設備執(zhí)行命令返回的狀態(tài)碼。狀態(tài)碼 “0” 代表命令執(zhí)行成功。所有的請求報文中,狀態(tài)碼被置為 “0”。其它的狀態(tài)碼還包括:

0x0001 無效或不受支持的命令
0x0002 目標設備資源不足,無法處理命令
0x0003 數(shù)據(jù)格式不正確或數(shù)據(jù)不正確
0x0065 接收到無效的數(shù)據(jù)長度

Sender Context
命令的發(fā)送者生成這六字節(jié)值,接收方將原封不動的返回該值。

Options
該值必須始終為 0,如果不為零,數(shù)據(jù)包將被丟棄。

Command-specific data 該字段根據(jù)接收/發(fā)送的命令進行修改。

如果請求發(fā)送方是工程師站,大多數(shù)會話中執(zhí)行的第一條命令是“List Identity”命令。如下所示的數(shù)據(jù)包,命令字段是0x63,代表“List Identity”命令,上下文是“0x00006a0ebe64”。這個命令與 Modbus 功能碼 43 非常相似,可以查詢設備信息,如供應商、產(chǎn)品、序列號、產(chǎn)品代碼、設備類型和版本號等。使用在 Github 項目 pyenip 中找到的 Python 腳本ethernetip.py,你可以查詢 Ethernrt/IP 設備的信息。默認情況下,這個腳本不會解析一些響應,你需要取消腳本底部的testENIP()函數(shù)的注釋后,它才會發(fā)送和接收“List Identity”命令。在執(zhí)行腳本的同時,你可以使用 Wireshark 查看請求和響應的數(shù)據(jù)包。

圖 5-14 Ethernet/IP查詢設備信息

我們在這個例子中沒有提供腳本代碼,因為它大約有 1000 行代碼。你可以通過訪問這里來獲取腳本。

設備信息泄露

流行程度:10
利用難度:8
影響面:3
威脅評分:7

Digital Bond 在項目 Redpoint 中實現(xiàn)了一個和 pyenip 很像的腳本,可以用來從遠程設備中獲取信息。Redpoint 腳本使用了上一節(jié)提到的“List Identity”命令字,并使用 NES 腳本來解析請求。這個腳本有一個有意思的地方,它的“Conmmand Specific Data”部分包含了一個套接字地址(ip 地址和端口號)。這是暴露的遠程設備的真實 ip 地址和端口號,即使它位于 NAT 設備之后。

圖 5-15 CompactLogix系統(tǒng)掃描結(jié)果

通過 Shodan 搜索( https://www.shodan.io/search?query=port%3A44818 ),我們發(fā)現(xiàn)大量的設備暴露的 IP 字段和實際掃描的 IP 地址不同。所以我們得出結(jié)論,大多數(shù)的 Ethernet/IP 設備部署在內(nèi)部網(wǎng)絡中,而不是直接暴露在互聯(lián)網(wǎng)上。如下圖 5-15所示的是使用 nmap 掃描 CompactLogix 控制系統(tǒng)的掃描結(jié)果,可以看到暴露的設備 ip 和掃描 ip 不匹配,說明目標系統(tǒng)位于路由器或防火墻之后。

上圖顯示了一些信息,包括設備的制造商 “Rockwell”。設備的制造商在響應中是一個兩字節(jié)的制造商 ID,它映射了一組支持 Ethernet/IP 的廠商名單。但是,這個廠商名單不是公開的。我們在深入研究 Wireshark 捕獲的數(shù)據(jù)包后,發(fā)現(xiàn)數(shù)據(jù)包被 Wireshark 解析后,制造商 ID 被替換成了制造商名稱。這說明 Wireshark 擁有如何映射制造商ID和名稱的信息。通過對 Github 上 Wireshark 源代碼的一些搜索,我們發(fā)現(xiàn)了如下代碼片段,它告訴我們該如何解析制造商 ID。在解析工控協(xié)議的時候,Wireshark 常常是一個強大而好用的資源。

圖 5-17 制造商ID和制造商名稱的對應關系

使用像 “List Identity” 這樣的命令,你可以簡單的重放數(shù)據(jù)包,幾乎不用修改數(shù)據(jù)包。會話句柄將被設置為 0,意味著沒有會話生成,因為該命令只是簡單的發(fā)送命令和接收系統(tǒng)響應。為了進一步與設備進行通信,需要發(fā)送注冊會話命令(0x65)。這個命令會設置會話句柄 ID,這個 ID 將用于后續(xù)會話的通信。如下圖 516所示,注冊會話的請求使用標準ID“0x00000000”,目標設備返回了它生成的會話句柄“0x03A566BB”

圖 5-16 會話句柄生成過程

Ethernet/IP 中間人攻擊

流行程度:5
利用難度:8
影響面:8
威脅評分:7

Ethernet/IP 具有和大多數(shù)工控協(xié)議相似的問題。資訊和培訓公司 Kenexis 發(fā)布了針對 Ethernet/IP 的中間人攻擊示例演示。這些示例可以在它們的 Github 項目主頁上找到( https://github.com/kenexis/PortableICS-MITM )。與 Modbus 不同,簡單的數(shù)據(jù)包重放對 Ethernet/IP 的某些指令無效。這使得攻擊變得稍微復雜了一些。然而,對于大多數(shù)攻擊者而言,只要對 Ethernet/IP 的協(xié)議稍有了解,這點困難將是微不足道的。一旦會話句柄通過協(xié)商被確定,只要通過手動改變序列號,就可以實現(xiàn)像之前 Modbus-vcr 工具那樣的中間人攻擊。

Ethernet/IP 高危命令字

流行程度:5
利用難度:8
影響面:8
威脅評分:7

就像 Modicon 利用功能碼 90 來終止 CPU,一些 Ethernet/IP 設備也支持類似的命令字。Digital Bind 的 Basecamp 項目中,發(fā)布了一個Metasploit模塊,可以被用來終止一個 Allen-Bradley ControlLogix 控制系統(tǒng)中的大量 PLC,以及其它的一些壞壞的事情,比如使以太網(wǎng)卡崩潰。

Digital Bond 的 Ruben Santamarta 在撰寫 Basecamp 項目的Writeup“Attacking ControlLogix”時寫道“我們發(fā)送的每個數(shù)據(jù)包必須包含會話句柄。這就是全部,然后我們 Hack 了控制器。在協(xié)議層面沒有更多的安全機制了。” [譯者注:reversemode.com 上的文檔我下載不下來,有能夠下載的朋友求分享]。Ruben 指出,只要了解 Session Handle 即可輕松攻擊 Ethernet/IP。是這個攻擊奏效的另一個關鍵是 Allen-Bradley 實現(xiàn)的一個命令字。Allen-Bradley 在 NOP(0x00)命令中實現(xiàn)了終止 CPU 的功能。

這個命令在 CPI 或 Ethernet/IP 的規(guī)范中沒有記錄,是 Allen-Bradley/Rockwell 控制器的私有實現(xiàn)。通過對大量設備的測試,我們發(fā)現(xiàn),在一些舊的固件中,不僅 ControlLogix CPU 被終止,而且設備崩潰,需要重新啟動硬盤。對于當前的型號,PLC 必須拔下并重新插入才能再次運行。極少數(shù)情況下,PLC 需要重新編程。

我們還是堅持一貫的建議,如果你想測試你的 Ethernet/ip 設備,請只對非生產(chǎn)設備執(zhí)行這些測試,并確保你已經(jīng)被授予對設備執(zhí)行 exploit 的許可,因為在設備上執(zhí)行這些測試的后果是不可測的。

總結(jié)

以上是生活随笔為你收集整理的工控安全入门之 Ethernet/IP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。