對blackhat和defcon一些議題的小結
對blackhat和defcon一些感興趣的議題做了一些小結。
靜態分析
blackhat里面一個靜態分析引擎的議題。
https://www.blackhat.com/us-21/briefings/schedule/index.html#do-you-speak-my-language-make-static-analysis-engines-understand-each-other-22797
之前研究過語義和污點分析,所以想看看。但這個議題總體來說我沒有我想找的東西,我想看看污點分析具體是怎樣做的,使用什么算法,怎樣更有效率。
作者的議題主要就是將了如果一個應用是php,一個應用是python,兩者相互調用,怎樣分析呢,結果就是縫合怪,php的分析使用php的分析器開一個rpc,python的分析用python的分析開個prc,定義好數據傳輸格式就行。
我在想使用像codeql一樣,定義一個通用的識別規則不就好了嗎。
image-20210806164212636
可能作者想的是針對甲方的場景,我想的是針對安全研究員挖洞的場景吧。
作者給了幾個開源靜態分析工具的實現,哪天看一下學習學習 - =
github.com/facebook/mariana-trench
github.com/facebook/pyre-check
github.com/facebook/sapp
Exchange Server新的攻擊面
作者介紹了exchange server的一些歷史和總體的架構變化以及驗證的方式,然后介紹了一些攻擊鏈,漏洞很精彩。
- ProxyLogon 是通過一個ssrf訪問到授權后的后端,操作授權的后端可以寫入任意文件。
- ProxyOracle: 作者發現了可以用
Padding Oracle Attack來解密cookie中加密的用戶數據,又發現了一個xss,但是exchange server有httponly驗證,可以通過ProxyLogon的ssrf來繞過httponly驗證,把cookie發送到惡意服務器上,再到服務器上使用Padding Oracle Attack進行解密。意味著目標只需要點擊一個鏈接就能獲取到目標郵箱的用戶和密碼。 - ProxyShell:在Pwn2Own 2021上展示的利用鏈來接管 Exchange 并獲得 200,000 美元的賞金。
- 首先是一個路徑轉換的邏輯錯誤再次造成ssrf,接下來便是尋找如何將ssrf變成命令執行。
- 之前的攻擊鏈已經被修復,于是找到了
Exchange PowerShell Remoting,Exchange PowerShell Remoting是一個命令行界面,用于 Exchange 任務的自動化,但是它需要一個mailbox。 - 使用特殊的X-Rps-CAT Access-Token可以模擬任意用戶,此時就能執行powershell命令了。
- 利用New-MailboxExportRequest導出shell
New-MailboxExportRequest –Mailbox orange@orange.local –FilePath \\127.0.0.1\C$\path\to\shell.aspx
- New-MailboxExportRequest導出的是 Outlook Personal Folders (PST) format,通過學習這個文件格式構造特殊的文件,在導出時就可以變成webshell了。
文章地址:https://blog.orange.tw/2021/08/proxylogon-a-new-attack-surface-on-ms-exchange-part-1.html
視頻地址:https://www.youtube.com/watch?v=5mqid-7zp8k&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=16
SAST
DEF CON 29 - Rotem Bar - Abusing SAST tools When scanners do more than just scanning
https://www.youtube.com/watch?v=Jl-CU6G4Ofc&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=7
作者梳理了靜態分析的一些手法,并且提出了一些sast掃描器的錯誤配置,可能造成執行命令,這個特性可能會被利用。
Hacking IDE
https://www.youtube.com/watch?v=pzqu_qaoNuY&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=33
DEF CON 29 - David Dworken - Worming through IDEs
作者說在新冠期間本來有幾個月的空閑可以去休假,但是他花了幾個月用來發現一些IDE的漏洞。使用strace命令可以監控程序運行時發出的系統調用,通過這可以找到IDE啟動時調用的命令。
作者介紹了VSCode、VS、IntelliJ、Vim、甚至記事本都可能存在的命令執行。
不止本地ide,還有在線ide,通過設定一些特殊的配置,就可以在遠程IDE中執行命令。
作者提出了一個構想,如果某個開發人員代碼中被包含了這些漏洞,所有打開這個開發者代碼的人會再次中毒,以此進行蠕蟲傳播并自動感染!
作者說要把poc上傳到github,但是搜了下沒看到 - =
用Golang編寫惡意軟件
DEF CON 29 - Ben Kurtz - Offensive Golang Bonanza: Writing Golang Malware
https://www.youtube.com/watch?v=3RQb05ITSyk&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=39
介紹了golang的一些作為紅隊使用語言的優勢,一些用golang的庫(這些庫就像是為惡意軟件量身定制),可以作為學習go的開始。
像py2exe和jar2exe,因為沒有流行的軟件,它們生成的工具很容易被殺毒針對,而golang編寫的軟件像docker等,讓殺軟無法直接查殺golang語言本身的特征,這更方便編寫惡意軟件。
議題主要介紹的是題主自己用golang實現的一系列紅隊工具,外加一些其他的補充。
PE/ELF/Mach-O 文件解析
- https://github.com/binject/debug
任意平臺進行任意系統調用
- https://github.com/awgh/cppgo
WMI 遠程執行
- https://github.com/c-sto/goWMIExec
釣魚工具包
- https://github.com/gophish/gophish
爆破
- https://github.com/OJ/gobuster
- 爆破子域名 vhost 目錄/文件
Go混淆
- https://github.com/burrowers/garble
幫助通過UDP、TLS、HTTPS、DNS、S3帶出數據
- https://github.com/awgh/ratnet
Go寫的VPN
- https://github.com/WireGuard
Go實現的虛擬文件系統
- https://github.com/capnspacehook/pandorasbox
任意系統中加載庫文件
- https://github.com/Binject/universal
- Windows用的反射加載
- 庫加載是通過「內存」的
Donut
- https://github.com/TheWover/donut
- 任意文件(exe dll .net vbs js)轉shellcode
- donut Go包裝器
- https://github.com/Binject/go-donut
payload 免殺框架
- https://github.com/optiv/ScareCrow
地獄之門Go實現
- https://github.com/C-Sto/BananaPhone
- Windows 原生調用syscall
天堂之門Go實現
- https://github.com/aus/gopherheaven
- 從32位代碼中調用64位代碼
多平臺的stager dropper實現
- https://github.com/gen0cide/gscript
Chrome擴展的攻擊和持久化
DEF CON 29 - Barak Sternberg - Extension Land: Exploits and Rootkits in Your Browser Extensions
作者講的很詳細,總結了幾種chrome擴展和網頁通信的api的攻擊面,根據一些實例講述了一些存在漏洞的擴展以及在應用中注入惡意的js達到持久化。
- 一種學術翻譯擴展,它會從本地127.0.0.1的一個端口上獲取js內容,所以可以根據另一個只有tcp權限的app控制這個app。
- 一種和谷歌學術交互的擴展,從chrome.storage獲取鏈接,而chrome.storage可以被控制
- vimium:作者演示了vimium漏洞,通過對vimium攻擊,可以注入js到其他任意網站。
chrome擴展持久化
chorme對擴展有嚴格的控制,會通過計算hash校驗,但是如果開啟了開發者模式,就不會有這些驗證,并且開啟開發者模式后,chrome也不會有任何提示。
通過后綴--load-extensiton即可加載任意擴展。
https://www.youtube.com/watch?v=PpSftQuCEDw&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=40
DNS as Service 測試
對云廠商的DNS as Service服務進行測試,在dns server中添加dns server的記錄到自己的ip,結果意外發現有大量流量經過,最后發現這是Windows的一種“特性”。
作者還提到了通過這些數據,進行的一些有趣的探索。
DEF CON 29 - Shir Tamari, Ami Luttwak - New class of DNS Vulns Affecting DNS-as-Service Platforms
https://www.youtube.com/watch?v=72uzIZPyVjI&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=4
UFO
DEF CON 29 - Richard Thieme AKA neuralcowboy - UFOs: Misinformation, Disinfo, and the Basic Truth
關于ufo,視頻講了一些事件,以及告訴我們要了解的話就要去閱讀文件,和當事者對話以及列舉了一些人的語錄等等。但也都是聽他再說。
https://www.youtube.com/watch?v=mExktWB0qz4&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=8
逃避Linux系統調用監控
DEF CON 29 - Rex Guo, Junyuan Zeng - Phantom Attack: Evading System Call Monitoring
https://www.youtube.com/watch?v=yaAdM8pWKG8&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=11
作者提出了兩種方法逃避系統調用監控,TOCTOU和語言混淆。
- TOCTOU
- 一般的系統調用監控有兩個步驟
sys_enter、sys_exit,這兩個斷點放置的位置不同,利用的方式也不同。 - 在內核調用之前被hook,那么可以在之后修改緩沖區的文本繞過
- sys_exit hook的位置錯誤,也能通過內核競爭或執行UserFaultfd syscall去提前結束
- 語義混淆
- 通過lnk文件繞過黑名單
用eBPF創建安全、穩定、隱蔽和可移植的內核 rootkit
DEF CON 29 - PatH - Warping Reality: Creating and Countering the Next Generation of Linux Rootkits
https://www.youtube.com/watch?v=g6SKWT7sROQ&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI&index=14
eBPF是伯克利數據包過濾器,平時用于過濾和修改網絡流量,內核輸入狀態等。因為eBPF是linux內核成員之一,通過eBPF編寫內核rootkit代碼十分穩定,因為只需要寫一些eBPF代碼,不容易崩潰,通過網絡流量和程序輸入狀態之行,也十分隱蔽。
作者講的eBPF利用十分詳細,最后也給出了源代碼:https://github.com/pathtofile/bad-bpf
視頻推薦一看。
Ps: eBPF For Windows也在被官方發展中,雖然目前只有網絡方面。
iis 原生惡意程序剖析
作者總結了歷史的iis后門,以及對iis模塊進行的逆向分析,作者可能是想做一個通過http就訪問的iis后門,但是從ppt中沒看到它們是怎么做的。
https://www.blackhat.com/us-21/briefings/schedule/index.html#anatomy-of-native-iis-malware-23395
免殺 - 通過 多進程ROP + NTFS事務免殺
將單個組件的代碼分成多個塊,由注入到多個進程中的模擬器運行。
https://www.blackhat.com/us-21/briefings/schedule/index.html#rope-bypassing-behavioral-detection-of-malware-with-distributed-rop-driven-execution-23051
通過以下兩個手法
代碼復用:避免rwx內存空間,使用pwn手段中ROP gadgets的手段復用代碼。
- 有效編碼payload
- 繞過WDEG
NTFS事務
- 不可檢查的隱蔽通道
- payload共享+通信
loader過程
- 選擇一個進程
- 創建ROP-TxF文件
- 清除,填充chains & metadata
- 注入啟動(Bootstrap)代碼
Bootstrap代碼
- 加載ROP-TxF文件
- 執行ROP代碼
- 可以和其他進程配合(ROP代碼可以從多個進程中讀取)
優點
? 無需分配/修改可執行內存
? AV/EDR 的內存檢查更難(ROP 增加了間接性)
? 代碼和數據的單一共享介質
? 符合 ACG 和 CIG
? 無文件
CVE-2021-1748:從客戶端 XSS 到彈計算器
https://www.blackhat.com/us-21/briefings/schedule/index.html#hack-different-pwning-ios--with-generation-z-bugz-23002
CVE-2021-1748:從客戶端 XSS 到彈計算器
https://mp.weixin.qq.com/s/g1kmGkp2B5QyQEUhdXOG8Q
輸入向量是URL scheme、 通過反編譯找到url scheme找到處理邏輯,通過xss可以執行內置的js類,從而可以獲取到很多信息
- iTunes.systemVersion() 獲取系統版本號
- iTunes.primaryAccount?.identifier 獲取 App Store 賬號的郵箱
- iTunes.primaryiCloudAccount?.identifier 獲取 iCloud 賬號的郵箱
- iTunes.diskSpaceAvailable() 存儲可用空間
- iTunes.telephony 電話號碼、運營商等信息
- iTunes.installedSoftwareApplications 所有已安裝的 app 信息
Chrome漏洞挖掘
錯誤很少是唯一的。系統規模不斷擴大的軟件通常涉及多個團隊,負責開發眾多功能。考慮到代碼庫的復雜性,在整個代碼庫中的許多地方可能存在與類似代碼模式共享的錯誤的可能性很高。
在本次演講中,我們以 Chrome 為例,介紹如何根據歷史漏洞發現新的漏洞。我們將介紹幾種在 Chrome 中容易受到攻擊的代碼模式,從淺到深。對于每一個模式,我們都會從一些經典的bug中進行總結,進行詳細的描述,不僅介紹了尋找相似bug的基本工作流程,還介紹了調整和細化模式以發現與原始bug不同的新bug的方法。通過這些模式,我們最終在 Chrome 中找到了 24 個漏洞并獲得了 11 個 CVE。最后,我們將詳細介紹如何利用我們在 2020 天府杯網絡安全大賽中使用的其中一個逃出 Chrome 沙箱,這是自 2015 年以來首次在公開賽中以沙箱逃生 Chrome 類別獲勝。
從一個漏洞尋找更多相似漏洞,先看歷史漏洞,然后基于歷史規則用Codeql尋找更多漏洞
https://www.blackhat.com/us-21/briefings/schedule/index.html#put-in-one-bug-and-pop-out-more-an-effective-way-of-bug-hunting-in-chrome-22855
其他
以上列舉的都是我看過的一些議題的小結,還有很多有趣并且內容充實的議題沒有列舉,例如一些二進制漏洞的挖掘,bootloader的探索等等,有興趣可以自行去官網看看。
blackhat 議題:https://www.blackhat.com/us-21/briefings/schedule/index.html
defcon:https://www.youtube.com/watch?v=VxNi5pVDZU0&list=PL9fPq3eQfaaBUD1zVxJWJmX86A6d0isBI