資訊隱藏技術 惡意程式 偽裝惡意程式

資料隱藏技術遭駭客濫用 苦主無意間已下載勒索軟體

惡意程式碼偽裝嵌入圖檔 狡詐手法避過防毒偵測

本文將帶領大家認識影像資訊隱藏技術與惡意程式之間所擦出的火花,了解一個本應是用來保護資訊安全卻被有心人士濫用於非法用途的技術,並透過StegoSolve與StegOnline工具進行實作資訊藏匿、取出與偵測,藉此認識資訊隱藏技術的原理與其利弊。

資訊隱藏是一種將機密或敏感的訊息嵌入在多媒體資料的技術,而多媒體資料的種類包括聲音、影像、影片等等。因為資訊時代的到來,許多事物與數位化息息相關,這為大家的生活帶來不少便利之處,但凡事沒有十全十美的樣貌,有好必有壞,資訊隱藏技術也是一樣。

當妥善地運用資訊隱藏技術時,能讓第三方人士無法透過人類感知系統來察覺機密、重要資訊的存在,以避免其機密資訊被攔截、破解,進而達到保護的效果。反之,若將資訊隱藏技術使用在不法用途,則將使人們的生活增添一份危險。舉例來說,非法使用者可能將惡意程式藏入影像等多媒體檔案之中,並結合社交工程的手法,讓受害者在不知不覺的情況下將帶有惡意程式的檔案下載至個人裝置當中,導致中毒以及個人資料或隱密資訊外流至非法使用者手中。

在本文中,將帶領大家了解資訊隱藏技術的原理、特性應用與其利弊,並說明若將資訊隱藏技術與惡意程式結合後所帶來的嚴重風險。透過開源工具進行實作,以了解從嵌入資訊、取出資訊的完整流程,並能使用工具分析與檢測影像是否夾帶資料。透過一系列的實作過程,使大家更加了解影像資訊隱藏的技術,在享受技術帶來的便利同時能提升自我的防禦意識。

背景知識說明

首先,說明何謂資訊隱藏技術(Steganography)、惡意程式(Malware)、偽裝惡意程式(StegoMalware)。

資訊隱藏技術

資訊隱藏技術又稱為偽裝學(Steganography),這項技術是將極其重要且具高隱私性的資訊,嵌入在不易引起注意的檔案當中,如圖片檔(jpg、png、bmp、gif)、可執行檔(.exe)、二進位檔(doc、xls、ppt)、文字檔(.txt)、音訊檔(mp3、wav)、影片檔(mov、avi)等日常使用的檔案中,以不引起第三方察覺的情況下增加資訊傳輸的安全性,或者是用以達成完整性驗證與防偽的目的。

資訊隱藏技術與使用密碼學加密技術的差別

資訊隱藏學與密碼學(Cryptography)兩項技術都是時常被用來保護資訊的方法,這兩者表面上非常相似,實際上使用場景卻不相同。以資訊隱藏技術來說,它更強調讓資訊在「神不知鬼不覺」的情況下傳遞給接收方,再使用約定好的方法將資訊取出還原;而密碼學則是透過加密技術讓資訊變成一堆看不懂的密文,唯有被授權的接收方可以使用金鑰將這些密文還原成明文。可以從圖1來了解資訊隱藏技術與加密技術的差別。

圖1  密碼學與資訊隱藏技術的運作方式比較。

訊息嵌入操作

訊息嵌入的操作方式,包括「利用Copy /b指令合併檔案的二進位內容」以及「透過修改影像像素來嵌入機密訊息」兩種。

第一種「利用Copy /b指令合併檔案的二進位內容」,可以透過命令提示字元中的「Copy /b」指令將兩個不同類型的檔案進行合併,以達到偽裝與隱藏資訊的目的。例如,將一個圖片檔(.png)和一個壓縮檔(.zip)檔案進行合併,使其成為一個表面上為圖片,而同時是壓縮檔的新檔案,其簡易示意如圖2與圖3所示。假設欲將一個1.png的圖片檔與2.zip的檔案進行合併,並輸出一個經過合併的檔案3.png,可透過「copy /b 1.png+2.zip 3.png」指令來達成。

圖2  執行「copy /b」指令。
圖3  合併後的結果。

透過觀察檔案的內容,可以發現經過合併後的檔案大小與原始的圖片有所不同,如圖4所示,1.png的檔案大小為102,293 Bytes、2.zip的檔案大小為14,616 Bytes,經過合併之後變成116,909 Bytes。不經仔細觀察,會直觀地認為3.png與1.png並無不同,但實際上這張圖片當中已經嵌入其他檔案。倘若嵌入的檔案為.bat批次檔案或是.exe可執行檔,就有可能在注意不到的情況下將惡意程式載入到硬碟當中。

圖4  檔案合併前後的大小比較。

不過,以這種方式進行檔案的偽裝與藏匿,只是透過合併兩個檔案的二進位碼,因為檔案的特徵碼仍被保留住,因此基於這種機制之下,一般來說並無法躲避防毒軟體的偵測。

第二種「透過修改影像像素來嵌入機密訊息」的方法,通常會將欲藏入的資訊進行編碼,編碼的方式包括美國標準資訊交換碼(American Standard Code for Information Interchange,ASCII)或是Base64等等方式,再將其轉換成二進位的形式,藉由修改圖片中每個像素的最低有效位元(Least Significant Bit,LSB)使資訊嵌入於圖片之中。一個單位的影像像素由8個bit組成,因此會有2的8次方,相當於256種不同的顏色深度,並由RGB三個通道所組成,進而組成不同的顏色。

假設欲將資訊藏入玫瑰花的圖片中,在圖5中可看出原圖片的圈選處RGB像素值分別為253、70、86,透過這三個像素值組成眼睛所看到的「紅色」。

圖5  原圖的像素值。

此例子用2個bits的最低有效位元將訊息進行偽裝,於是將RGB分別藏入11、00、01,如圖6所示。使得後來的RGB像素值變成255、68、85。透過這三個像素值可組成另一種「紅色」,如圖7所示。但肉眼卻無法看出圖5和圖7的兩種紅色有何差異。

圖6  修改最低位元。
圖7  藏入資訊後的像素值。

透過修改最低有效位元,可以將想要藏入的資訊藏入圖片之中,利用這種方式改變圖片中的像素值,並且在微小的變動之下,不易透過肉眼判斷有無異樣。同時,這種方法並不會造成檔案大小的更動。除此之外,這些資料可能是經過編碼,同時被分切成多個片段後才嵌入到影像當中。倘若嵌入的資料是惡意程式或是帶有惡意行為的程式碼,它們的特徵也會散布在影像的各個像素中,使得防毒軟體不容易偵測到是否有惡意程式存在。

更進階的修改LSB方法是,透過特定的金鑰讓資訊藏入位元的位置看似毫無規則可言,實則有特定規律。此方法能使他人更難以破解隱藏其中的惡意程式,而有心人士再使用第三方程式將隱藏其中的程式碼擷取出來,復原惡意程式並執行,以此方法躲避偵測。

利弊與得失

科技是把雙面刃,當資訊隱藏技術應用在正面用途時能夠幫助人們進行機密資訊的保護,確保機密不被惡意的第三方所擷取,又或者是能夠驗證資料完整。然而,當這樣的技術被應用在負面的場景時則會為人們帶來不容小覷的威脅,有心人士可能會將惡意程式嵌入載看似正常的圖片等檔案當中,再利用社交工程或網路釣魚的手法使人在無意間受害,資訊隱藏技術的正負面的應用如表1所示。

惡意程式

任何出於破壞、竊取等惡意企圖的軟體或程式皆稱惡意程式(Malware),其設計目的是讓使用者在不知情的情況下對自身的電腦、伺服器、網路等基礎設施進行破壞、竄改、癱瘓等行為,或是在未授權的情況下取得這些裝置的控制權、又或是透過特定手法從中獲取有利益價值的資訊。惡意程式的種類有許多種,下列舉出幾個常見的惡意程式種類:

‧特洛伊木馬(Trojan Horse):透過偽裝成正常檔案,利用社交工程的方式來欺騙用戶下載看似合法卻夾帶木馬程式的檔案。木馬程式一旦啟動,攻擊者能夠進入目標主機並從目標主機中竊取資訊傳送至駭客主機,甚至取得遠端的操作權限。

‧電腦蠕蟲(Computer Worm):一種能進行自我複製的惡意程式,此病毒可以使用資訊隱藏技術將惡意程式碼藏匿於垃圾郵件中,受害者若開啟垃圾郵件就會受到感染。電腦蠕蟲再藉由偵測其他主機的漏洞感染其他主機,以此擴大感染。

‧勒索軟體(Ransomware):勒索軟體會攻擊目標的電腦或硬體,將目標主機或硬體裡的重要檔案加密,使受害者無法開啟。攻擊者加密之後會向受害者索取贖金,並告知繳交贖金才能開啟被加密的檔案。勒索軟體常與資訊隱藏技術結合,將惡意程式碼隱藏於圖片或檔案中,在受害者不知情的情況下對檔案進行加密。

偽裝惡意程式

偽裝惡意程式(StegoMalware)一名是由偽裝學(Steganography)與惡意程式(Malicious Software)兩個詞所組而成,亦即利用資訊隱藏技術將惡意程式碼隱藏在看似正常的檔案中,用以躲避防毒軟體的偵測來達成惡意行為。偽裝惡意程式通常包含以下幾項機制:

1. 將惡意程式碼偽裝於看似正常的檔案中,用來躲避偵測或過濾虛擬主機以進行攻擊。

2. 在受害者的電腦中置入待執行內容(Payload)或限制受害者找到執行惡意行為之執行檔位置的方法,例如讓受害者無法使用〔Ctrl〕+〔F〕搜尋功能找到.exe,使受害者無法清除惡意程式,則會使惡意行為的成功率提高。

3. 在受害者不知情的情況下額外開啟對外通道,允許受害者的電腦暗中對外傳遞個人資訊或執行其他惡意行為。

駭聞的偽裝惡意程式

常見的偽裝惡意程式,包括以下幾種:

‧Cerber:是屬於勒索病毒中的其中一種惡意程式。Cerber通常會將惡意程式碼嵌入廣告、圖片或是網站中,等待受害者點擊進入。一旦受害者進入廣告或網站中,便會誤觸Cerber的觸發條件,導致受害者的裝置受到感染。

‧SynCrypt:屬於一種勒索軟體,主要透過傳送附加內嵌惡意程式WSF(Windows Script File)檔的垃圾郵件,一旦受害者開啟檔案,就會在受害者的電腦中下載jpg圖片,此圖片則有zip檔及惡意程式碼嵌入於其中,透過執行圖片中的惡意程式碼來達到勒索目的。

‧Zbot:又名Zeus木馬。Zbot會將惡意程式碼嵌入於圖片檔的末端,如此一來,既不會破壞圖片外觀,也可以瞞過受害者並在受害者電腦暗中下載側錄軟體,進而得知受害者的隱私資訊。

‧AdGholas:一個以惡意廣告攻擊聞名的組織,他們使用資訊隱藏技術將加密過的惡意JavaScript偽裝於廣告圖片和HTML檔內,受害者一旦點擊該廣告,將會被導向至一個假的網站,使得受害者的電腦自動下載惡意軟體,導致第三方人士可以取得受害者的個人資訊,或是被當作殭屍網路來執行其他惡意行為。

面對偽裝惡意程式的自我防護方式

由於偽裝惡意程式的特色與其目的通常是為了躲避防毒軟體的偵測,因此使用者必須更加小心仔細地提防是否有偽裝惡意程式的存在,以下幾點方法與習慣養成能夠幫助降低受到偽裝惡意程式攻擊的機率:

1. 若遇到來路不明的網址,將網址放到VirusTotal(https://www.virustotal.com/gui/home/upload)中檢查是否為附帶惡意程式的網址。VirusTotal是一個可以分析檔案或網址中是否含有惡意程式的開源工具。

2. 接收到來路不明的網址時,點擊網址前確認傳送網址的來源是否正常。

3. 避免從未知或是非法來源的網站下載圖片或檔案。

4. 檢查工作管理員中的處理程序是否有未知的處理程序,特別留意大量占用CPU或記憶體資源的部分有可能正在執行的惡意程式。

5. 定期更新電腦內的應用程式,以及使用來源可靠的防毒軟體。

6. 關注新興的惡意程式類型,並且學習提防各類型的攻擊模式。

情境演練

接下來,將藉由線上的開源工具StegOnline及StegSolve進行修改最低有效位元的實作,演示如何發現存入圖片的惡意程式碼。

社會新鮮人黑仔對貓非常熱愛,有關貓的任何事物他都相當熱衷,私底下也會利用時間創作貓的圖畫。某夜,黑仔突然收到一則訊息,對方表示對黑仔的畫作十分感興趣,希望能邀約他加入美術室,訊息內容如圖8所示。

圖8  黑仔收到的訊息內容。

因為這是黑仔第一次收到美術工作室的邀約,黑仔迫不及待地想點擊對方附上的連結。但是又有點疑惑為何會在這麼晚的時間邀約呢?想起以前在課堂中提醒過,要當心偽裝惡意程式的存在,秉持這一點懷疑,黑仔打算利用虛擬環境查看圖片內到底有沒有隱藏著資訊。

黑仔準備了以下的相關環境:

‧StegOnline:https://stegonline.georgeom.net/upload

‧Java:https://www.java.com/zh-TW/download/manual.jsp

‧StegSolve:http://www.caesum.com/handbook/StegSolve.jar

利用StegOnline模擬將惡意程式碼嵌入圖片的LSB

由於黑仔在此之前沒有任何經驗,為了確保自己所用的方法沒有錯誤,決定先請一位專門研究偽裝惡意程式的朋友白明,示範如何做出有隱藏著惡意程式碼的圖片。由於StegOnline不需要下載,白明直接點擊上述的StegOnline連結進入網頁使用,其操作頁面如圖9所示。

圖9  StegOnline的操作頁面。

進入操作頁面之後,點選「UPLOAD IMAGE」,並且選擇當作載體的圖片,在本範例中的貓咪圖以及操作步驟如圖10所示。

圖10  點選「UPLOAD IMAGE」及本範例的貓咪圖。

選擇好圖片後,將會看到有許多選項可以選擇不同功能,在範例中,若想藏入資訊,就點選「Embed Files/Data」,如圖11所示。

圖11  點選「Embed Files/Data」。

接著,將RGB三行,數字0那列全部勾選,表示欲藏入的資訊將會藏在RGB中最後一個位元,並將Bit Order選項從MSB改為LSB,如圖12所示。

圖12  選擇欲藏入的位置。

完成之後,往下滑動可以輸入使用者想要藏入的資訊,輸入完畢就可以按下〔GO〕。緊接著,白明輸入「Here is an example of malicious contents.」並反覆輸入好幾次,以此模擬惡意程式碼並嵌入於圖片之中。

而後,頁面下方會輸出一張嵌入資訊後的圖片,所有輸入的資訊已經偽裝於這張圖片中,此圖片與原本的圖片十分相像,用肉眼看不出絲毫差異,如果想把圖片儲存下來則點選「Download Extracted Data」將藏匿完成的圖片儲存,如圖13所示。

圖13  儲存藏好資訊的圖片。

利用StegSolve將程式擷取出來

接著,白明想要將剛剛藏好的資訊取出看看,用來模擬取出的惡意程式是否完整。待安裝Java及StegSolve後,開啟StegSolve並於【File】選單中點選【Open】,以選擇圖6為例,之後於【Analyse】選單點選【Data Extract】。

已知圖6有隱藏資訊且利用LSB將資訊藏入最後一個位元中,因此白明勾選RGB中最後一個位元,即為數字0之處,並點選〔Save Bin〕儲存結果,操作步驟如圖14所示。

圖14  選擇欲擷取之位元。

然後,將儲存結果用記事本開啟,即可看到藏入的資訊「Here is an example of malicious contents.」。開啟儲存結果的畫面,如圖15所示。

圖15  開啟儲存結果的畫面。

藉由StegOnline判斷圖片是否被藏入資訊

白明做完模擬惡意程式偽裝在圖片中的嵌入與擷取之後,對黑仔說明,在StegOnline中可以使用位元平面瀏覽(Bit Plane Browsing)功能檢測圖片每個RGB的位元平面,藉此來推斷圖片是否有被嵌入資訊。接著,白明開啟StegOnline並選擇已經藏入資訊的圖片,然後點選「Browse Bit Planes」,如圖16所示,可以分別查看RGB三種不同位元平面(Bit Planes)所呈現出的畫面效果。

圖16  點選「Browse Bit Planes」。

點擊左右箭頭可變換RGB的不同位元,其中單箭頭表示一個位元的變換,雙箭頭表示八個位元的變換。透過點擊單雙箭頭查看各位元的位元平面,若有隱藏資訊的位元則會出現異狀。而後,白明查看Red的位元平面,發現第0位元的部分圖片上方出現異常的畫面,這些異常的位元平面極有可能就是嵌入其中的資訊,實際如圖17、圖18所示。

圖17  正常並無異狀的位元平面。
圖18  有異常的位元平面。

藉由這種方法,便可以看出哪些位元可能被藏入資訊,再點選Data Extract功能將隱藏的資訊擷取出來,以查看對方究竟隱藏了什麼資訊。於是,黑仔將對方傳來的圖片經過白明所教的方法處理之後,發現確實有惡意程式碼偽裝在圖片中,於是決定不開啟對方所傳的連結。做完這些操作後的黑仔鬆了一口氣,也意識到訊息嵌入檔案中所帶來的破壞性災難,藉此得更加謹慎偽裝惡意程式的攻擊手法。

結語

本文介紹了資訊隱藏技術與常見的資訊隱藏手法,並說明常見的惡意程式類型、著名的偽裝惡意程式與自我防範對策。在情境演練中,使用StegoSolve與StegOnline這兩項工具來模擬如何嵌入資訊至圖片當中,以及如何將隱藏其中的內容取出。較特別的是,可使用StegOnline提供的位元平面瀏覽功能,針對單獨的位元平面進行查看,能夠有效地發現一些資訊隱藏的蛛絲馬跡。透過本文內容能夠讓大家更加了解訊息嵌入的利弊,並認識常見的惡意程式種類與新型的偽裝惡意程式。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)中央警察大學資訊密碼暨建構實驗室 & 情資安全與鑑識科學實驗室(ICCL and SECFORENSICS)1998年12月成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學, 資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://hera.secforensics.org/)。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!