隱藏在JPG圖片EXIF頭部中的惡意軟體

黃利民發表於2013-07-17

幾天前,我們研究團隊的 Peter Gramantik 在一個被攻破的網站上發現一個非常有趣的後門。這個後門並沒有依靠正常模式去隱藏起內容(比如 base64/gzip 編碼),但是它卻把自己的資料隱藏在 JPEG 圖片的 EXIT 頭部中了。它也使用 exif_read_data 和 preg_replace 兩個 PHP 函式來讀取 EXIF 頭部和執行。

 

技術細節

這個後門可分為兩部分。第一部分是 exif_read_data 函式讀取圖片頭部,preg_replace 函式來執行內容。下面是我們在被攻破網站上發現的程式碼:

 

這兩個函式本身是無害滴。exif_read_data 函式常用來讀取圖片,preg_replace 函式是替代字元內容。不過,preg_replace 函式函式有個隱藏並微妙的選項,如果你傳入 “/e”,它會執行 eval() 中的內容,就不是去查詢/替代了。

所以我們在檢視 bun.jpg 檔案時,發現後門的第二部分:

 

這個檔案用以常見的頭部開始,但是在 ”make” 頭部中混入了奇怪的關鍵字 “/.*/e” 。有了這個執行修飾符, preg_replace 會執行 eval() 中傳入的任意內容。

事情變得開始有趣了……

如果我們們繼續來看看 EXIF 資料,我們能發現, “eval ( base64_decode” 隱藏在 “Model” 頭部。把這些放在一起看,我們們就知道怎麼回事了。攻擊者是從 EXIF 中讀取 Make 和 Model 頭部資訊,然後傳入到 preg_replace 函式。只要我們修改 $exif[‘Make’] 和 $exif[‘Model’] ,就得到了最終的後門。

 

解碼後我們可以看到是執行 $_POST[“zz1”] 提供的內容。完整解碼後的後面在這裡

 

隱藏惡意軟體

另外一個有意思的是,雖然 bun.jpg 和其他圖片檔案被攻破了,但然後能載入並正常工作。實際上,在這些被攻破的站點,攻擊者修改了站點上一個合法並之前就存在的圖片。這是一種奇特的隱藏惡意軟體的方法。

 

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

隱藏在JPG圖片EXIF頭部中的惡意軟體 隱藏在JPG圖片EXIF頭部中的惡意軟體

相關文章