:jsp型webshell被刪情況下如何溯源攻擊時間
Part1前言
在日常的藍隊溯源工作、感染加密勒索病毒后的應急排查工作中,查找攻擊者遺留的webshell是一種常規手段,一旦webshell文件被找到后,可以反推出很多信息,最重要的是能確定攻擊者攻擊時間,以此攻擊時間為軸心開展溯源工作會事半功倍。但攻擊者經常會把webshell文件刪除,并且清理掉所有的訪問日志,這種情況下應該怎么溯源確定上傳webshell的攻擊時間呢?其實對于jsp型或jspx型webshell來說,還是有辦法的,因為java的webshell在編譯過程中會生成很多臨時文件,一直留存在服務器中。
Part2技術研究過程
首先本地搭建一個tomcat,模擬攻擊者行為,上傳一個jsp的webshell

接下來模擬攻擊者行為,把log111.jsp文件刪除掉,那么怎么找到這個shell遺留的蛛絲馬跡呢?
查看tomcat中間件的\work\Catalina\localhost_\org\apache\jsp 目錄,仍然是可以發現這個shell的編譯過程中產生的幾個文件的,這3個文件攻擊者一般不會刪除,也不會更改文件的時間屬性。所以,這些jsp型webshell文件在編譯過程中生成的class文件的時間屬性,往往是比較準確的,而jsp文件的時間屬性,很多攻擊者會改成與web應用部署一樣的時間,去迷惑藍隊工作人員。
原理:客戶端訪問某個jsp 、jspx文件時,Tomcat容器或者Weblogic容器會將 jsp 文件編譯成java文件和class文件,這兩份文件均會存儲在容器的某個目錄中。
如下圖所示,可以確定攻擊者的攻擊時間了:
如果需要進一步驗證此文件是正常文件還是webshell文件,就需要使用jadx-gui工具對此class文件進行反編譯了。如下圖所示,很清楚看到了冰蝎webshell的代碼特征。

注:虛擬機環境證明,tomcat中間件即使重啟后,這些編譯產生的臨時文件也是會一直存在的。
接下來在weblogic中間件上進行同樣的操作,制作一個war包上傳到weblogic環境中:


接下來將log.jsp刪除后,試著查看在weblogic中間件下還有什么蛛絲馬跡可以查詢,發現在/jsp_servlet/目錄下,還是有幾個webshell編譯生成的文件,這里與tomcat中間件不同的是,路徑中的/hwr7e2/是隨機生成的一個目錄,需要根據經驗具體問題具體分析:

除此之外,還可以找到上傳的war包,一樣可以確定攻擊時間,一般在這個目錄下邊:\user_projects\domains\base_domain\servers\AdminServer\upload,即使刪掉jsp文件,重啟weblogic后,這個war包文件也會一直存在。

Part3總結
- jsp、jspx型webshell文件被刪除后,可以通過查找編譯生成的class文件的方式去確定攻擊時間。如果攻擊者將webshell時間屬性改掉,也可以通過此方法獲取真實的攻擊時間。
- 對于tomcat、weblogic中間件,除非攻擊者刪除編譯生成的文件,否則重啟后這些文件也會一直留存在Web服務器中,成為溯源攻擊者的一個重要證據。
- 即使攻擊者非常細心,把這些class文件全部刪干凈了,那么借助一些取證工具或者專業設備,還是可以溯源出來的,這個將來會專門寫一篇文章講解。