框架介紹
聲明:ISF該框架是北京xx科技基于開源框架自研的一套工控滲透框架,僅用于工控安全教學,公司實驗箱產品的安全研究,使用該框架進行非法操作產生的一切后果公司一概不負責。
框架主要使用Python語言開發,通過集成ShadowBroker釋放的NSA工具Fuzzbunch攻擊框架,開發一款適合工控漏洞利用的框架。由于Fuzzbunch攻擊框架僅適用于Python2.6,很多核心的功能都封裝成了DLL,通過函數進行調用,不便于后期的移植和使用。但是,Fuzzbunch的命令行使用的確很方便,所以就有了現如今這款適合工控漏洞利用的框架,取名isf。
環境準備

注:如果想在windows平臺上安裝,除了需要安裝其它兩個依賴:pypiwin32、dnet==1.12以外,window平臺和linux平臺下的使用沒有什么區別。
命令行啟動:
這里所說的安裝,其實是該工具所需環境的安裝與配置,當運行環境配置好后,只需要在網站[https://github.com/w3h/isf]下載該工具,然后在項目目錄下運行python2 isf.py即可。出現如下圖所示證明安裝成功。

WEB啟動
該構架不僅可以通過命令行進行操作,還可以通過WEB的方式運行,通過WEB的方式進行操作,可以做到只需要部署一套環境,多個人同時使用的效果,且其他人不需要安裝和配置,只需要通過瀏覽器的方式即可擁有一套工控代理框架。
WEB啟動分為兩種,一種是通過Docker容器方式進行部署,一種是直接在宿主機上運行,兩種方式本質上是一樣的,只是運行的宿主不一樣而已。
Docker部署:
不懂docker的請向下看宿主部署章節
mkdir -p /root/isfdocker
cd /root/isfdocker
wget https://github.com/w3h/isf/raw/master/docker/Dockerfile
docker build -t isf:v1 . # 構建一個isf:v1的docker容器,并使用Dockerfile安裝好相關依賴
docker run --net=host isf:v1 butterfly.server.py --host='0.0.0.0' –unsecure
#or 新版的docker使用下面命令
docker run --network=host isf:v1 butterfly.server.py --host='0.0.0.0' –unsecure
運行完上面的命令之后,在瀏覽器中輸入http://192.168.223.129:57575(這里的ip換成自己的)輸入默認密碼:123456,即可登錄,如下圖所示:

宿主部署
如果是通過上面的docker方式進行部署,那么只需要按照命令執行即可,所需依賴都將通過Dockerfile進行安裝。如果想在宿主機上直接使用WEB控制臺的方式進行訪問的話,就需要安裝butterfly依賴,命令pip2 instll butterfly,安裝好后,通過butterfly.server.py --host="0.0.0.0" --port="55555"啟動WEB控制臺。然后就與docker的方式一樣,通過瀏覽器訪問。
代碼解釋:
• --host="0.0.0.0"是在所有網卡上啟用
• --port="55555"通過55555端口進行訪問(默認是57575)
isf使用
不管是docker的方式,還是宿主的方式,只要能正常運行,那么使用時就與上面章節中“命令行啟動”的方式一模一樣。多種安裝方式介紹完之后,那我們就來看看isf的具體功能以及如何使用。
help
雖然該工具不大,但是它的功能也不少,所以一個章節不能完全掌握它的全部功能,我們決定將該工具的使用分多個章節進行講解。
首先,通過help命令查看isf都有哪些功能:

結果是不是很驚喜,居然有這么多功能!小伙伴們不要著急,通過后面章節,我們會一一講解每個命令的用途。
今天我們就通過一個實例來演示一下,這個框架的簡單用法,以及它在工控系統中的實際作用。
use
可以通過use加tab鍵的方式,查看可用模塊,當前版本共有9個功能模塊。如果你是工控安全大牛,那么你也可以通過向該框架貢獻各種exp的方式豐富該框架的攻擊面。

use plcscan
我們先通過plcscan小試牛刀

當輸入use plcscan后,提示我們是否設置變量,這里當然要先yes了,因為我們還沒有設置targetIp的值呢,它怎么知道要掃描哪個目標呢?所以按回車鍵后,提示我們輸入targetIp。

這里我們就以公司自研的工控實驗箱為攻擊目標,掃描實驗箱中目標系統的相關信息,下圖為公司自研的工控實驗箱示意圖:

輸入目標系統IP地址(192.168.1.100),如下圖所示:

因為目前我們的工具只集成了Siemens和modbus設備,所以它需要你選擇目標設備的品牌,這里我們選擇0,即直接按回車。

后面會需要設置目標系統的端口號,Siemens默認是102,這里直接回車即可。后面還有幾個參數,想必很多人都不知道這些參數是干什么的,大家暫時先不用管,后期隨著對工控系統的了解,你會知道每個參數的含義,這里我們全部選擇默認即可。
當最后一個回車鍵入之后,系統就列出你剛才輸入的所有參數,如果沒有錯誤的話,直接回車即可開始掃描。

當掃描結果后,系統會返回該目標設備的詳細信息,或者是失敗。

這里我們成功識別出該目標系統的詳細信息,如品牌是Siemens,型號是S7-200等,是不是方便。說到這里想必有些人會問,識別到目標系統的這些信息后能做什么?看來你不是做安全的,做安全的都知道前期的信息收集是多么的重要,知道了目標系統的品牌、型號等信息之后,就可以使用公開或未公開的漏洞進行攻擊。
原文地址:https://www.freebuf.com/sectool/243118.html