Infiltrating Corporate Intranet Like NSA - Pre-auth RCE on Leading SSL VPNs / Orange Tsai, meh === {%hackmd @HITCON/Bkfa8oaVS %} Speaker:Orange Tsai, meh Slide: https://i.blackhat.com/USA-19/Wednesday/us-19-Tsai-Infiltrating-Corporate-Intranet-Like-NSA.pdf (注意:版本不相同) SSL VPN 是駭客攻擊內網的路徑 [工商服務]DEVCORE 大會攤位有題目跟獎品(限量門票) 攻防資訊不對稱,造成易攻難守的主因。 Orange_8361 mehqq_ * Pre-auth root RCE exploit chain on Pulse Secure SSL VPN * * New attach surface to compromise back all your VPN ckuents ### SSL VPN 不用安裝,瀏覽器就可以利用,目前主流 - 你所使用的 SSL VPN 可能不安全。 Trusted Network =>Public Network - 很少研究其安全性,但應用非常廣泛。 有抓到弱點,幾乎可以以一打百,且由於全球連線,故暴露外網 - 連 SNA 也在抓 SSL VPN 弱點 ex.Marvel、NSA (cisco) 都有用 - Red Team 發現客戶端的 SSL VPN (Palo Alto) 故不能再利用的弱點(廠商偷偷修復的漏洞?) 廠商說 自己家發現的漏洞不會給CVE,所以就不算漏洞。 寫了一個blog過後就發CVE了。 - 選哪家 SSL VPN? Cisco F5 PA Citrix Pulse Secure Fortinet... 高市佔率: - (O)Pulse Secure (台清交政) - (O)Fortinet (成大) ### SSL VPN Black box & close source #### JailBreak the SSL VPN 基本款(沒有保護) single user-mode root shell 硬體晶片(硬碟加密) 輕鬆繞過: (1) Linux 開機流程,基本核心逆向 (2) 改用記憶體鑑識 (BIOS>LILO>kERNEL>/sbin/init + Enter => 暫停 VM 執行,去做掃瞄,這個Process,是/bin/dsconfig.pl 改 //////////bin/sh) (3) 分析,找漏洞,攻擊向量 - WebVPN 方便的proxy,又援ssh、ftp、rdp 一般需要裝客戶端的程式,但這個只透過瀏覽器 But,不好實作,廠商自幹,所以實作困難 。Debug function 。Open Source (連漏洞一起複製了) 。現有Libaries 懶得更新 - Native script Language extensions 大家都有用 per 、c、c++ 擴充套件,加解密實作很容易有洞,轉換時可能會有語言轉換問題… c 是很有漏洞的程式,(strcopy) 被擷斷的長度可能會因為是有限制大小問題,會有intger over flow 問題,可能不安全,所以就會有風險。 - Multi-layered architecture problems(多層次架構) 這個是由於多層次的轉換,所以造成的問題。 攻擊payload:x/../../Sample.php ex)C webserver+RESRful backend Disclaimer :已回報,所以更新就可以解決以上這些衝突了。 ### Attack vectros ### Case studiess - Fortigate SSL VPN 全部都編進一個檔案內 /bin/init ,idb 大於 500 MB, >85k function 用function table管理程式 以2002年的Apache,用了很多模組去寫功能, 簡單登入頁面,帳號、密碼,然後就可以試著登入取得權限。 (1) Pre-auth RCE (2)arbutrary file reading(任意讀檔漏洞) 起手式:從任意讀檔漏洞開始。 用字串結合開始 沒有過濾../ 幫你加副檔名 >> 故使用snprintf,寫入buffer大小 - 1 字元,只要超過這個buffer,便可擷斷原本的JSON副檔名,任意組合字元繞過被加上副檔名的限制,達到內網任意讀檔。 /lang migadmin/lang =/../../../..//////////////////////////////bin/sh.json >> /dev/cmdb/sslvpn_webssion >> 清楚的說明手冊 居然裡面有明文密碼 Plaintext (Google/Facebook/Twitter) >> WebVPN - HTTP/HTTPS 網頁元件的網址,都會做加密且改寫。 長度沒有檢查,這樣就會出現弱點。 memcpy(buffer,js_url,js_url_len) overflow 時,就可以改寫,進一步 Get RCE。 主要的記憶體是同一個heap,然後會亂數隨機跳heap,所以難度較大,apache 自己有實作記憶體管理機制,不會去呼叫free(),等執行完之後,才會排把空間資源放出。 但後來發現能改 EIP?逆向跟動手改同時進行。 手動改:SSL strucuture(OpenSSL) 有固定的差距位置。 SSL_METHOD *method (在SSL結構中的func table)>>可控指標。 剛剛講到不能用單一連線去排 heap,那麼用多連線去改 heap呢? **排heap: binary exploit 在攻擊 heap 相關漏洞的時候,需要構造出一些特別的順序,方便漏洞觸發的後續利用 >> 用SSL 連線塞爆,指向 ssl_accecpt(),JS Buffer 去做memcpy(,),然後用滿滿的 AAAAAAA… 蓋爛它,它就會掛掉,用一個假的function pointer,可能在過程中會重開,多試幾次,就有機會可以取得shell。 #### 好難,有沒有其他方式? >> 走系統埋的後門 改過期密碼的後門,進一步取得 magic Key,就可以改別人的密碼了。 #### Demo Time ### Pulse Secure 用 per & c++ 寫,架構舊,穩定又安全 (1)任意讀檔,htmlfile ,遠端桌面的新功能,所有的訪問只要透過 瀏器,造成了這個機會風險。 這個漏洞影響所有沒有更新版本的話,提供檢測方式: ``` curl -I 'https://sslvpn/dana-na///css/ds.js' Response: HTTP/1.1 400 Invalid Path curl -I 'https://sslvpn/dana-na///css/ds.js?/dana/html5acc/guacamole' Response: HTTP/1.1 200 OK ``` >> 只要加上html file 的特徵就可以繞過了。 最重要的是,在操作中的明文密碼會被catch起來。 有了明文密碼就可以訪問內部網路。 如果拿shell >> 用 options 的命令可以利用,但沒有那麼簡單。 加了很多加固,完整性檢查,唯讀檔案系統。還有 DSSafe.pm加密模組 還有很多危險的字元過濾… ``[\&\*\(\)\{\}\[\]\`\;\|\?\n~<>]`` 保護很堅固,command injetion 很難成功。 但 - 沒有過濾。 tcpdump 太舊,所以更新的指令沒辦法用。 最後找到快取資料夾,我們有權限可以做快取。 但後來嘗試半天,還是失敗了… 但後來與其他研究員討論,都有發現,但很難利用。 看 DSSafe 原碼 ,如果有看到爛掉的I/O,後面的全部都會爛掉。 有沒有機會可以用 tcpdump 開始不存在的檔案(?) 可以從錯誤訊息,進一步去執行(?) 如果檔案中把錯誤內容執行,然後用printf 可以 之後進一步在錯誤內容使用 goto 就變成一個可以執行的檔案了,耶~ pcat format+PURL=hard to do this how to bypass? DSSafe.pm if前面重導向爛掉 後面也會爛掉 用stderr導到perl執行? 學學Perl Perl 101>錯誤stderr變成合法Perl <Sample Code> 拿到20 明碼密碼,但還是要做二階。 繞過二階段驗證 roaming session chang net or IP can still hold the session 通常管理員密碼,只有第一次登入才能得到,但我們有機會可以拿到密嗎 然後花了很多的效能 & 時間,破解管理員密碼 10 字。 Launch a 72-core AWS to attack SHA256(MD6_CRYPT(SHALT,...)) 3 hours later... 登入之後執行ifconfig 取得指令。 (所以密碼開頭應該用Z?) 主要還是看長度啦 =____________=||| 越長要算越久,密碼規則也是一個成本 舊手法: 。釣魚網站 。木馬 。後門 新手法 logon secript 使用 pulse_pwn.py (1)改管理員cookie,改Seesion ID就能登入後台了。 (2)改 VPN Tunning 支援 Windows、Linux、MAC (3)放了一個小算盤及小算盤路徑 (4)受害者電腦,連線,輸入帳號密碼,小算盤就會自動跳出來的 (2)command injection certificate不只要認client也要認server ###### tags: `HITCONCMT2019`,`HITCONCMT`,`HITCON`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up