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

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

WEB啟動(dòng)
該構(gòu)架不僅可以通過命令行進(jìn)行操作,還可以通過WEB的方式運(yùn)行,通過WEB的方式進(jìn)行操作,可以做到只需要部署一套環(huán)境,多個(gè)人同時(shí)使用的效果,且其他人不需要安裝和配置,只需要通過瀏覽器的方式即可擁有一套工控代理框架。
WEB啟動(dòng)分為兩種,一種是通過Docker容器方式進(jìn)行部署,一種是直接在宿主機(jī)上運(yùn)行,兩種方式本質(zhì)上是一樣的,只是運(yùn)行的宿主不一樣而已。
Docker部署:
不懂docker的請向下看宿主部署章節(jié)
mkdir -p /root/isfdocker
cd /root/isfdocker
wget https://github.com/w3h/isf/raw/master/docker/Dockerfile
docker build -t isf:v1 . # 構(gòu)建一個(gè)isf:v1的docker容器,并使用Dockerfile安裝好相關(guān)依賴
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
運(yùn)行完上面的命令之后,在瀏覽器中輸入http://192.168.223.129:57575(這里的ip換成自己的)輸入默認(rèn)密碼:123456,即可登錄,如下圖所示:

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

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

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

當(dāng)輸入use plcscan后,提示我們是否設(shè)置變量,這里當(dāng)然要先yes了,因?yàn)槲覀冞€沒有設(shè)置targetIp的值呢,它怎么知道要掃描哪個(gè)目標(biāo)呢?所以按回車鍵后,提示我們輸入targetIp。

這里我們就以公司自研的工控實(shí)驗(yàn)箱為攻擊目標(biāo),掃描實(shí)驗(yàn)箱中目標(biāo)系統(tǒng)的相關(guān)信息,下圖為公司自研的工控實(shí)驗(yàn)箱示意圖:

輸入目標(biāo)系統(tǒng)IP地址(192.168.1.100),如下圖所示:

因?yàn)槟壳拔覀兊墓ぞ咧患闪薙iemens和modbus設(shè)備,所以它需要你選擇目標(biāo)設(shè)備的品牌,這里我們選擇0,即直接按回車。

后面會(huì)需要設(shè)置目標(biāo)系統(tǒng)的端口號(hào),Siemens默認(rèn)是102,這里直接回車即可。后面還有幾個(gè)參數(shù),想必很多人都不知道這些參數(shù)是干什么的,大家暫時(shí)先不用管,后期隨著對工控系統(tǒng)的了解,你會(huì)知道每個(gè)參數(shù)的含義,這里我們?nèi)窟x擇默認(rèn)即可。
當(dāng)最后一個(gè)回車鍵入之后,系統(tǒng)就列出你剛才輸入的所有參數(shù),如果沒有錯(cuò)誤的話,直接回車即可開始掃描。

當(dāng)掃描結(jié)果后,系統(tǒng)會(huì)返回該目標(biāo)設(shè)備的詳細(xì)信息,或者是失敗。

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