iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
佛心分享-IT 人自學之術

從零開始的 Linux 世界系列 第 29

【Day.29】把檔案從封包取出來!

  • 分享至 

  • xImage
  •  

昨天和大家分享了 HxD Editor 讓大家可以嘗試觀察一個檔案中的 Hex Value。今天我們就來嘗試看看能不能從截取的封包中找到檔案內容!

首先大家可以先準備一份文件,不管是一般的 Word、PPT、PDF、Excel 都可以,或是圖片(盡量以 .png 為主)也沒問題。總之準備一個你準備要傳送的檔案就行了。

我們今天的實作流程大概如下:

  1. 準備一份檔案
  2. 將檔案從 Kali Linux 傳送給 Windows
  3. 透過 WireShark 截取封包
  4. 透過 HxD Editor 將封包內的檔案取出
  5. 完成

那我們就準備開始吧!這邊我會先準備一份 Word,大家也可以跟著以下步驟照著做。

✒️ 準備實驗環境與檔案

這邊要先跟大家做一個簡單的介紹,在 Linux 的環境中是沒有 Microsoft Office 這種工具,但是有一個替代方案叫做「LibreOffice」。

兩者之間的差異可以觀察下方圖表:

類別 Linux(LibreOffice) Windows(Microsoft Office)
文件處理軟體 Writer(.odt、.docx) Word(.docx)
試算表軟體 Calc(.ods、.xlsx) Excel(.xlsx)
簡報製作軟體 Impress(.odp、.pptx) PowerPoint(.pptx)

不過 Kali Linux 並沒有預先安裝 LibreOffice,所以我們這次用比較土法煉鋼的方式,先在 Windows 建立好檔案後再 scp 傳送給 Kali Linux 假裝這是由 Kali Linux 產生的文件。

https://ithelp.ithome.com.tw/upload/images/20251013/20176048UBcwFhbi6Z.jpg

🍀 開始實驗

  1. 首先,打開 Windows 端的 WireShark 監聽 eth0,截取 Kali Linux 傳送的封包。
  2. 在 Kali Linux 輸入指令
scp -r test.docx <your_win_username>@[Windows IPv4]:/C:/Users/<your_win_username>/Desktop

# 舉例:scp -r test.docx ray@[172.58.126.102]:/C:/Users/ray/Desktop

此時你的 WireShark 應該會抓取到大量 SSHv2 加密的封包,其中也包含了 TCP 的三次握手機制。

https://ithelp.ithome.com.tw/upload/images/20251013/20176048uksCJe0KIV.jpg

你會發現裡面有幾個封包的 length 特別大,那我們就可以大膽猜測,這兩個封包應該就是夾帶 .docx 的檔案。所以我們將他另存成 .raw 檔,準備丟進 HxD Editor 做分析。

你可以先多選這兩個封包 → File → Export Specified Packets

https://ithelp.ithome.com.tw/upload/images/20251013/20176048iqf3tyjQrI.jpg

此時 WireShark 會彈出一個視窗,依照以下步驟將封包檔案儲存下來:

  1. 檔案格式一般選用 .pcapng 或是 .pcap
  2. 選擇 Selected Packets only 只匯出我們剛剛選擇的兩個封包
  3. 選擇 Displayed 從剛才抓取的封包流展示中取出
  4. 點擊 Save 儲存封包檔案

這時候你就會在桌面上看到一個這樣的檔案

https://ithelp.ithome.com.tw/upload/images/20251013/20176048JRcfHxKeVD.png

接著我們打開 HxD Editor 將這個封包檔案匯入,我們準備來揭露這個 SSH 加密封包的 Hex Value。

https://ithelp.ithome.com.tw/upload/images/20251013/20176048Q5lmBfUpqB.jpg

接著我們就會看到這串密密麻麻的 Hex Value,這就是我們剛才傳輸過程中「可能夾帶 .docx 檔案的封包內容」。

⚙️ 分析與結論

在做這個實驗的時候,我們已經清楚知道使用 scp 傳輸檔案是使用 SSH 加密方式,這種加密方式如果沒有 session key 的話我們是無法得知明文的。我們可以從以下幾個地方找到 SSH 相關的金鑰檔案:

Windows

C:\Users\<your_win_username\.ssh

Linux

~/.ssh

在這兩個地方分別會找到 ssh-ed25519ssh-rsaecdsa-sha2-nistp256 這三個金鑰檔案,但是我們還是沒有辦法依靠這個線索把加密的檔案破解出來。

因為現代 SSH 的加密方式是透過「迪菲-赫爾曼(Diffie–Hellman)」也就是我們之前提到過的 DH 加密演算法。這種演算法的特性就是「前向保密(PFS)」,意思是他是不可逆的加密方式。更不用說 scp 還是臨時性的 DH 加密,也就是說只有每次傳送封包的時候產生一組新的公鑰、私鑰。

所以我目前的能力還不能把這個 .docx 破解出來(汗)。

但不代表這件事情做不到!其實是有辦法可以繞過這個加密法的,需要用到 memory dump、ssh-agent hook、或修改 OpenSSH 以導出 session keys。如果有大神可以在下方幫忙解答,我會非常感謝!


原本是想說用最常見的檔案傳送方式( scp )來介紹,但沒想到 SSH 加密方式的複雜度和特性。導致這次實驗失敗,但是我們也相對了解一件事情,那就是 SSH 加密真的非常安全,要破解也不容易!

如果真的對這次實驗有很強的熱忱或想玩玩看,其實也可選擇用比較簡單的傳輸方式來實作看看,例如:HTTP、TCP,說不定就真的解開了!

相信有看過這篇文章後的你,也會對封包拆解、分析有比較深入的了解!如果說真的有辦法將密文解開,那我們其實可以靠 HxD Editor 編輯 Hex Value 明文,從而得到 .docx 哦!

📄 參考文章

askUbuntu 討論區
DH 加密演算法
Michael Horn 的 Youtube 頻道:LibreOffice 介紹


上一篇
【Day.28】用 HxD Editor 探索 Hex Value!
下一篇
【Day.30】Linux 滲透測試最終篇!
系列文
從零開始的 Linux 世界30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言