乾貨 黑客帶你還原韓劇《幽靈》中出現的隱寫術

2021-02-12 FreeBuf

0x00 前言

最近有一部劇人氣非常高,據說是將軍官和醫生的浪漫故事。咦?!!這不是好幾年前的老片子了麼。

後來有人告訴我,是一部韓劇,裡面的歐巴超帥妹子超靚。~\(≧▽≦)/~


說起韓劇,很多真是在用心做劇,拋開裡面的細節,光憑人氣來說,不得不佩服其文化輸出軟實力。小夥伴們還記得2012年出品的黑客劇《幽靈》嗎?該劇以網絡犯罪和網絡刑警為題材,講述了虛擬搜查隊在揭開一個個不為人知的隱藏在網絡世界尖端技術中的秘密時,所經歷的各種駭人聽聞事件和奇遇。劇中出現了Encase、wireshark、od、process、nmap、DDOS、winhex、bt5等等多款大家熟悉的工具,不得不佩服其做劇的專業程度。


今天我們就來看看其第二集,男主角在所謂的「證據」面前,堅稱自己是清白的,說「證據」視頻其實是使用了隱寫技術,裡面隱藏著重要秘密,為了證明自己,便在警察面前當場進行了隱寫信息的提取。


根據視頻,我們可以判斷出,男主角使用的是openstego隱寫軟體,但是視頻中的情節確實有些瑕疵,有穿幫的成分。

這是男主角在挑選隱藏有信息的載體視頻文件,大家可以看到裡面全都是avi格式的視頻。

這是選中後的畫面,明顯可以看到載體文件實際上是png圖像文件。

下面是提取出的秘密文件,該文件記錄了被害人遇害的一些重要信息。

劇中講述的是,男主角從一段視頻中提取出了另外一段視頻。而根據上面的細節判斷,顯然不是這樣,而是從一個png文件中提取了視頻文件。


這是該軟體在選取載體文件時的顯示,可以看出只支持圖像文件作為載體進行隱寫,難怪劇組為了劇情的完整性,不惜使用改後綴名的方式來走捷徑。其實劇組可以專門去找支持視頻隱寫的軟體來進行這段劇情,估計是不太好找。o(︶︿︶)

既然都講到這了,那我們不妨一起來看看劇中所使用的隱寫術到底是神馬鬼。

隱寫術是信息隱藏(Information Hiding)的一個重要分支,而信息隱藏是為了不讓除預期接收者之外的任何人知曉信息的傳遞事件或者信息內容,可見信息隱藏與信息加密的不同處在於前者很好地隱蔽了傳遞事件。隱寫術英文名為Steganography,來源於特裡特米烏斯的一本講述密碼學與隱寫術的著作Steganographia,該書書名源於希臘詞彙stegons和graphia ,意為「隱秘書寫」。

0x01 數字圖像隱寫原理

圖像隱寫,顧名思義就是將目標信息隱藏在載體圖片中,而這裡的目標信息包含任何格式的數字文件(圖像、文本、視頻、聲音等)。可能有同學會說,這個我也會,copy /b分分鐘搞定隱寫。是這樣嗎?!!!我們先來看看copy /b是何方神術。

使用copy/b  image.jpg+text.txt  new.jpg命令將文本text.txt附加到圖片image.jpg中 



可以從源文件和生成文件的文件信息中觀察到,源文件的文件大小相加正好等於生成文件的大小。


同時打開原圖片和生成的新圖片,視覺上並沒有任何差別。


使用UE對比兩圖片的二進位差異,發現新生成的圖片末尾追加了text.txt文本內容。


疑問:為什麼新生成的圖片末尾添加了新的數據,卻用圖片查看器查看時並沒有看到圖片新增了其他內容?

釋疑:jpg格式圖片中,文件頭中包含有圖片X軸、Y軸的像素數目,所以圖像查看器只根據像素信息進行圖像的解析顯示,而不會將末尾追加的二進位信息進行顯示(即使將追加的信息也顯示出來,也不會是文本內容,而是一堆雜亂的像素噪點)。

由此可見,copy /b命令只是將幾個文件進行了簡單的追加合併,以達到隱蔽傳送信息的目的,但是這種方法通過對比圖像大小和文件大小,很容易檢測到圖像後面是否追加數據,所以copy/b只能算作一種簡單的圖像隱寫技術。

而通常的圖像隱寫為了躲避檢測,會利用載體的冗餘度,在不破壞圖像畫質信息的基礎上,嵌入被隱寫信息,達到隱寫目的。所以,如何利用圖像文件的冗餘來進行信息的隱藏,是隱寫技術的關鍵所在。

0x02 bmp圖像文件格式

常見的圖像文件格式有BMP、JPG、JPEG、PNG、GIF。由於BMP採用位映射存儲格式,除了圖像深度可選以外,不採用其他任何壓縮,佔用的空間很大,所以存在著較多的冗餘空間利用,並且在bmp格式圖片中進行隱寫較為容易。這裡我們選用BMP格式的圖片來做接下來的講解。首先我們先了解bmp圖像文件的格式。

BMP圖形文件,又叫Bitmap(位圖)或是DIB(Device-Independent Device,設備無關位圖),是Windows採用的圖形文件格式,在Windows環境下運行的所有圖象處理軟體都支持BMP圖象文件格式,並且Windows系統內部各圖像繪製操作都是以BMP為基礎。



注釋:位圖信息頭和調色板的長度會根據不同情況而變化,所以可以根據bfOffBits這個偏移值迅速的從文件中讀取到位數據。


以上圖作為測試圖,查看其文件頭的對應信息 


調色板

根據圖像尺寸和信息頭大小,我們可以得知這幅圖是不含調色板信息的。這是為什麼呢?

首先需要了解一下圖像文件中顏色的表示方法,我們知道自然界中的所有顏色都由紅、綠、藍(R,G,B)組合而成,下表位常見的RGB組合。


給一幅圖中每個象素賦予不同的RGB值,就形成了彩色圖。但是,如果有一個長寬各為200個象素,顏色數為16色的彩色圖,每一個象素都用R、G、B三個分量表示。每個象素需要用3個字節,整個圖象要用200×200×3,約120k字節!這也太浪費了!

這幅圖中最多只有16種顏色,而我們卻為每一個像素付出了3個字節的空間。為了壓縮,我們可以用一個表來記錄這16種顏色,表中的每一行記錄一種顏色的R、G、B值。這樣表示一個象素的顏色時,只需要指出該顏色是在第幾行,即該顏色在表中的索引值。例如,如果表的第5行為255,0,0(紅色),那麼當某個象素為紅色時,只需要標明5即可。

這樣可以節省多少空間呢?16種狀態可以用4位(bit)表示,所以一個象素要用半個字節。整個圖象要用200×200×0.5,約20k字節,再加上表佔用的字節為3×16=48位元組,整個佔用的字節數約為前面的1/6,可見這個壓縮效果非常明顯。

調色板(Palette)的作用便是上面的顏色查找表。調色板在windows裡的結構定義如下:

該結構除了R、G、B三個元素外,還有一個顏色深度信息。

既然調色板可以壓縮存儲空間,為什麼這張BMP不帶調色板呢?

這張BMP是24位真彩色的BMP,所謂真彩色圖(true color),就是它的顏色數高達256×256×256種,也就是說包含我們上述提到的R、G、B顏色表示方法中所有的顏色。真彩色圖並不是說一幅圖包含了所有的顏色,而是說它具有顯示所有顏色的能力,即最多可以包含所有的顏色。如果用調色板,則調色板的長度高達24位,即索引需要24位來表示,則一個象素也要用24位,和直接用R,G,B三個分量表示用的字節數一樣。這樣即沒有起到壓縮的作用,反而因為有一個龐大的調色板的存在而體積增大。所以真彩色圖直接用R、G、B三個分量表示,又叫做24位色圖。

數據區域

Bmp文件最後的區域則是數據區域,存儲著圖像像素信息,從前面信息段裡得知該圖為24位圖,所以每一個像素都以3位元組的RGB形式進行存儲。


現在我們大體了解了BMP圖片的基本結構,那麼要把隱寫的數據藏在哪裡呢?顯然,藏在文件頭或者信息頭裡是不現實的,因為這些區域中的每一個欄位都對應著明確的值,改變這些值會徹底破壞原有的結構而導致圖片損壞,雖然文件頭中有保留欄位,但是這些欄位容量有限不適合用於隱寫。看來只剩下圖像數據段適合用於隱寫了,如何利用像素的RGB來進行隱寫呢?

0x03 像素視覺差異

bmp圖像中一個像素點使用3個字節(即RGB結構)來記錄色彩,而隱寫是把信息拆解後分別藏入像素點中,並且不會產生視覺上的變化。首先來看一下像素色彩在發生不同變化時的色彩差異。

可見RGB最低位的變化不會產生視覺上的差異。 


上圖可以看出隨著改變位數的增加,像素點的顏色開始發生變化,當低5位均變化後,與原像素點相比發生了較為明顯的顏色改變。我們可以利用圖像的這一特性,將信息分拆為若干比特位,將其逐一放入圖像的像素點的低位,這便是著名的LSB(Least Significant Bit)隱寫。

0x04 LSB隱寫實戰

我們採用LSB方式進行隱寫,下圖為需要隱寫的文本信息。


將文件按比特分拆後,逐一寫入載體圖片的像素信息中。問題來了,解密的時候怎麼知道需要解密的信息有多長?!!所以在隱寫數據前需要把隱寫的信息長度寫入。

圖片一個字節隱寫1比特數據,效果如下圖所示。


兩張圖的具體對比信息。 


可以從兩圖的字節差異數中看到,並不等於隱寫信息字節數*8。這是因為原數據的最低位恰好與隱寫的比特值相等,從而使原數據並未發生變化。 

現在我們將代碼中控制拆分尺寸bit=1修改為bit=2,即圖像數據字節的低2比特位用於隱寫,效果如下。 


可見低2比特的改變並不會引起視覺上的差異,但卻使得隱寫空間增加了2倍。設置bit=4,即使用低4比特位用於隱寫,效果如下。


可見隱寫後的圖片像素已經發生了明顯變化。

再瘋狂一點,我們將bit設置為8,即把像素字節全部用於隱寫,其實這已經相當於覆蓋數據,結果則如下圖慘不忍睹。


圖中對應位置的原始像素值完全被破壞,完全成了文本文件的數據。由此可見,使用LSB技術隱寫時,最佳選擇最低位的1-2bit進行隱寫。

下面是還原隱寫信息的關鍵代碼:

還原後的文本信息對比。

0x05 隱寫升級

由於上面採用順序隱寫的方法,所以導致信息集中在圖片的某一部分(下圖中的差異對比圖下方出現較寬區域的噪點)。

為了消除信息過於集中而導致圖片某一區域像素信噪比過高,可以採用隨機分配隱寫位置的方式,將信息分散隱寫在圖片當中。這裡需要注意的是,為了提取隱寫信息的方便,我們並不會真正採用隨機的方式進行隱寫,否則需要將隨機序列也一同記錄在圖片中。為了方便起見,我們採用將密碼作為隨機數生成器的種子,來生成一組偽隨機數。 

隨機序列生成函數

可以看出生成隨機數列有三個輸入參數,其中圖片長度可以根據圖片文件的信息頭進行獲取,而其他兩個參數可以作為密鑰由用戶保存,在信息提取時,必須在知道key和size的情況下才可以正確地提取完整信息。

下圖為採用隨機LSB隱寫後的差異結果。


0x06 隱寫與加密

隱寫技術的基本原理和步驟了解後,我們會發現,如果對像素數據進行逐比特位提取,則很容易還原出原始數據,所以在實際應用中,隱寫技術都配合加密技術一同使用,在隱寫前,信息先進行加密處理,然後將加密後的密文進行隱寫。這樣便很好地保護了信息的安全性,即使信息被提取,也只是密文被暴露。

0x07 一些思考

圖像的像素點在改變較低位比特數值時,並不會引起視覺的變化,那麼視頻、音頻等一樣可以作為隱寫載體進行信息的隱寫。可見能作為載體的素材很多,在網際網路上也是海量的,如果一些有害信息通過這種技術來傳播,則危害極大。

如何對含有隱寫信息的載體進行快速檢測便顯得非常重要,圖像各區域之間的像素值是有關聯性的,而隱寫的數據則打破了像素之間的關聯性和圖像的平滑性,而一些針對隱寫技術的檢測技術正是根據這一特性來進行的,感興趣的同學可以查閱相關領域的研究資料,網上有很多相關素材。

*原創作者:追影人,本文屬FreeBuf原創獎勵計劃文章,未經許可禁止轉載


相關焦點

  • 韓劇《幽靈》中的黑客工具都有哪些?(附福利)
    》裡面詳細的介紹了《幽靈》這不黑客劇中使用的一些無線黑科技,今天我們再來補充一下,細細品味一下其中大家都比較熟悉的工具,比如Encase、wireshark、OllyDbg、Process、nmap、DDOS、WinHEX、bt5等等。
  • 韓劇《幽靈》中的黑客工具都有哪些?
    FreeBuf之前曾發過《跟我學姿勢:電影中真實存在的無線黑客技術》裡面詳細的介紹了《幽靈》這不黑客劇中使用的一些無線黑科技
  • 【韓劇】【劇情 / 懸疑】幽靈 (2012)
    【韓劇】【劇情 / 懸疑】幽靈 유령 (2012)導演: 金亨植編劇: 金恩熙主演: 蘇志燮 / 李沇熹 / 嚴基俊 / 崔丹尼爾 / 鄭丙熙 / 郭度沅 / 宋昰昀 / 崔政宇 /幽靈的劇情簡介 · · · · · ·  21世紀的韓國,高科技網絡犯罪愈演愈烈,虛擬搜查隊應運而生。搜查1隊隊長金宇炫(蘇志燮 飾)帶領下屬柳江美(李妍熙 飾)、李泰均等人不分晝夜堅守在工作前線,成為打擊犯罪的核心力量。一天他們追查到頭號黑客哈迪斯所在方位,趕赴現場後卻目睹被捲入性接待醜聞的女演員申孝靜墜樓身亡。
  • 韓劇《幽靈》中的黑客工具都有哪些? (內附全集連結)
    FreeBuf之前曾發過《跟我學姿勢:電影中真實存在的無線黑客技術》裡面詳細的介紹了《幽靈》這不黑客劇中使用的一些無線黑科技,今天我們再來補充一下
  • 燒腦神劇「幽靈」
    《幽靈》最愛的韓劇 沒有之一。劇情緊湊,集黑客、犯罪、懸疑。。。眾多題材於一身,唯獨沒有愛情。一、沒有愛情《幽靈》 是一部劇集中沒有愛情元素,又獲得好的收視率的作品。該劇是以網際網路日新月異的發展下,高科技的網絡犯罪和黑客犯罪為題材的韓劇,從頭到尾都秉承著以懸疑破解謎題,最終抓獲幕後黑手為目標的敘事路線。緊張的情節和緊湊的節奏讓很多觀眾都高呼原來韓劇也可以是這樣的,沒有愛情照樣可以很好看。
  • 不聯網也能監視你的電腦,這樣的黑客技術居然能免費下載
    原創 把科學帶回家 把科學帶回家本文由《萬物》雜誌官方微信「把科學帶回家」 提供撰文 七君在我們的印象裡,以及在不少電影中,如果黑客要竊聽或盜取一個人的信息,TA必須要能上網,通過網絡入侵一個人的電腦
  • 《黑客軍團》中出現了哪些黑客工具?
    多年來,在電影中出現過的黑客工具中,最有名的就是 Nmap。當電影製片人嘗試在電腦黑客場景中加入真實的內容時,Nmap 常常會閃現在屏幕上面。《 Matrix | 黑客帝國》就是第一個。 Nmap 也曾經出現在《極樂空間》、《諜影重重:極限伯恩》、《虎膽龍威 4 》和其他一些電影中。
  • 15個黑客的背包都帶點什麼東西?
    或者在腦海裡蹦出「我是誰,沒有絕對安全的系統」裡帶著小丑面具的四個高智商黑客▼        那現實生活中的黑客,真的如我們大家想的那樣神秘麼?今天請到了小夥伴 @華盟網帶我們一起打開了15位現實中黑客的背包,讓我們看看,這些背包裡面了都有些東西吧。
  • 那些長腿黑客歐巴的撩妹神技(上篇)
    假期同樣在「熬夜看春晚追韓劇,和親朋好友通宵唱K、聚會狂嗨」的春節經典項目洗禮後的胖菡,卻真誠地在眾多韓劇題材中發現了「黑客」題材的大熱,這些又有顏值又有技能的黑客偶巴們特別招妹紙們喜歡,招漢子們羨慕,讓我們一起來看看這群黑客「精」們如何遊刃有餘地走在愛情和黑科技之間的吧。
  • 如何像黑客軍團主角那樣將文件隱藏在音頻中
    這些年來黑客軍團(Mr. Robot)一直是我最喜歡的電視劇,演員Rami Malek所扮演的有社交焦慮症,游離於膚淺而物質的社會之邊緣卻又想讓世界更美好的年輕人這一角色讓我印象很深,不過我喜歡這部電視劇並不是因為我想要像主角Elliot那樣在生活中進行真實的入侵。Rami Malek的演繹是無與倫比的,我相信未來幾年我們會更多地在電視劇中看到他。
  • 韓劇《抓住幽靈》
    這些天追了《抓住幽靈》這一部劇,這一部劇的特點是時長偏長了,開始看前2集時覺得劇情也太拖延了吧,吸引力一般,中途有想法跳過的直接不看了,因好奇這個地鐵幽靈究竟是誰還是追到了大結局。《抓住幽靈》這是一部以「地鐵警察」為素材的韓劇。
  • 周二必看的韓劇,抓住幽靈的手,無論如何也不願放開
    周二必看的韓劇,抓住幽靈的手,無論如何也不願放開!,比起搞政治,老師難道不應該更關心教學,先放棄學生的老師,沒資格當老師,若帶著厭惡的眼光去看,青青的草都是雜草,若帶著善意去看,人人也如花動人。能夠在韓劇中看到這樣的臺詞,我也很感激。
  • 幽靈列車,超時空追兇,韓劇又放大招了
    你聽說過「果戈裡幽靈列車」的故事嗎? 上世紀三十年代的前蘇聯,一個義大利軍官受朋友所託,帶著作家果戈裡的頭骨匣子,登上一列火車開始了一段漫長的旅程。 當火車穿過一條長長的隧道時,詭異的事情發生了。
  • 推薦部韓劇《幽靈》
  • 【韓劇推薦】SBS網絡犯罪刑警題材《幽靈》蘇志燮 和李沇熹擔任主演
    幽靈 유령 (2012) 유령 導演: 金亨植編劇: 金恩熙主演: 蘇志燮 /
  • 韓劇《抓住幽靈》主演陣容:文瑾瑩、金善浩、鄭釉珍、奇道勳
    點擊右上角」關注」,了解影視、韓娛等更多娛樂信息圖片來源:TV-Daily、《抓住幽靈》發布會、劇照、網絡,如有侵權,請聯繫刪除。(轉載必究)之前文瑾瑩&金善浩主演的新韓劇《抓住幽靈》,劇組表示為了向Sulli表達哀悼之意延遲發布會,雖然延遲了發布會,但首播時間不變,發布會也於首播當日舉行。tvN全新月火劇《抓住幽靈》(韓國時間每周一、二播出)即將在10月21日首播。《抓住幽靈》是由《屋塔房王世子》、《回來吧大叔》的申允燮導演與蘇媛、李英珠編劇合作打造。
  • 黑客沒有帝國
    在這裡,政治學者帶你解讀世界局勢,剖析政壇動蕩;歷史學家為你講述悠長歷史,回溯往日時光;背包客娓娓道來詩與遠方,帶你領略文化碰撞;電影愛好者向你推薦高分影片,滿足你所需的精神食糧……跟隨作者的筆觸,我們觀察世界、奇遇人生。關注看世界,用思想丈量世界,找回一顆自由而有趣的靈魂。做一個世界的水手,奔赴所有的碼頭。
  • 看韓劇長見識!《我的新創時代》中出現了多少專有名詞你知道?
    看韓劇長見識!《StartUp:我的新創時代》中出現了多少專有名詞你知道嗎? 《StartUp:我的新創時代》由姜漢娜、秀智、南柱赫、金宣虎等人主演,講述了一群渴望創業的年輕人的故事。
  • 韓劇之懸疑合輯,燒腦!過癮!解壓!
    韓劇風靡是有原因的,相比於我們內地三番五次翻拍經典的行為,韓劇始終保持著創作精神,不斷挖掘新的題材和元素,創造了許多掀起追劇熱潮的新經典。《來自星星的你》不僅風靡亞洲,使金秀賢躍居韓流top多年高居不下,使初雪天的啤酒和炸雞成為絕配……《太陽的後裔》使希臘沉船灣成為情侶們旅遊打卡的網紅聖地……作為資深的韓劇迷,小編今天匯總了一篇懸疑系列合輯。好看的韓劇,懸疑題材必須擁有姓名。懸疑劇,過癮和解壓不說,燒腦的劇情更是讓人慾罷不能,根本停不下來!
  • 還原電影!《半條命2》黑客帝國Mod推出Demo版
    【來源:3DMGame】根據外媒dsogaming的報導,一位名為「therealMooble」的Mod製作人目前正在開發《半條命2》「黑客帝國」Mod。據悉,該Mod將重現電影《黑客帝國》第一部的一些事件。目前,作者還推出了該Mod的Demo版本。據悉,《半條命2》Mod 「黑客帝國」 的Demo版本展示了Neo的公寓和他前往的俱樂部場所。目前,雖然這款Mod在畫面上還有一些鋸齒沒能處理,但是從設計上來看,《半條命2》Mod 「黑客帝國」已經相當酷了。