你給我翻譯翻譯,什麽他媽的是他媽的驚喜!- 讓子彈飛 (2010)
第四天我們要針對建立的漏洞環境開始進行分析。以往分析不外乎兩種方式,靜態分析及動態分析。靜態分析指的是不執行程式的情況下,針對編譯好的檔案進行各種解析方式,像是觀察原始碼,解析檔案結構或是進行反組譯。動態分析則是執行檔案或是程式,再藉由工具監控環境變化,一般常見的作業系統監控部分包含Process、Memory、File System、Network等等。程式監控部分就可以借助Debugger工具去追查程式當下執行的狀況。但這次漏洞解析會比較注重在弱點專案程式架構、使用的弱點版本以及網路封包流向,因為這些資訊對我們了解弱點、建構弱點環境會比較有幫助。相關分析部分參考如下:
漏洞分析方式
靜態分析主要針對原始碼或是編譯好的檔案進行分析,但因為Java是編譯式語言,所以伺服器上只會有編譯好的相關程式。但這難不倒我們,因為有所謂的反組譯工具可以幫助進行解析。也因此首要的第一步是想辦法拿到編譯好的程式包。之前有提過這個弱點專案是在容器內執行的,因此我們這邊要先學會如何使用docker指令進到目標容器內並且將檔案複製出來。之後再對檔案進行分析。相關步驟如下所示:
1. docker exec -it vulnerable-app sh #進到容器內執行shell指令
2. ps aux #觀察一下容器內執行程式,並得到程式目錄位置
3. exit #脫離容器
4. docker cp vulnerable-app:/app/spring-boot-application.jar . #將容器內的檔案複製到宿主機當前目錄
接著要開始做動態分析,主要需透過網路封包監聽進行監聽及分析。Wireshark是一套很常見用來側錄網路封包的工具,且具有GUI介面方便過濾、觀看封包內容,功能十分強大。採取的步驟大概如下:
1.sudo apt install wireshark -y #安裝 wireshark
2.sudo wireshark
3.選對網路介面卡,否則會聽不到目標的封包資訊
4.重現攻擊過程 (參考day03內容)
5.停止擷取封包
參考來源 : Digging deeper into Log4Shell - 0Day RCE exploit found in Log4j
最後,在了解Log4Shell的攻擊觸發點及攻擊流程後,我們來談談該如何防禦Log4Shell這個弱點。
當然這個漏洞後續也有一些延伸的變形攻擊方式,也有一些JDK版本上的限制,有興趣的話可以參考我過去做的相關影片。另外如果對jndi為何可以向後觸發ldap然後去抓物件定義,也可以以此篇作為基礎繼續往下深入研究這個弱點的原理。這部分我就沒有再深入研究下去惹。
回家作業:
如何透過log4j弱點使用 ncat 建立一個 reverse shell 控制容器?
延伸閱讀
參考資料