本文將探討MAC Spoofing的攻擊原理,並結合Kali Linux工具macof與Wireshark封包擷取工具的實作,展示如何利用MAC Spoofing結合MAC Flooding攻擊觸發交換器廣播行為,成功攔截原本不屬於攻擊者的通訊資料,藉此理解封包側錄的實際過程,並學會透過技術手段主動保護本地網路。
數位生活越加普及,資安威脅也同步滲透至我們日常所倚賴的每一層網路架構。當人們關注伺服器端的資安防護,如防火牆與加密協定,其實容易忽略本地區域網路中潛藏的風險。事實上,許多攻擊並非源於外部駭客滲透,而是內部設備設定疏漏所導致的資訊外洩。MAC Spoofing(MAC偽造攻擊)即是一種攻擊者在區網中變造自己裝置身分、攔截資料的手法。進一步結合MAC Flooding技術,更可能癱瘓交換器的學習機制,使資料封包被大量廣播,暴露於網路中的所有節點,造成機敏資訊的非預期洩漏。
在本文中,將深入了解MAC Spoofing與MAC Flooding的原理與危害,並透過Kali Linux工具macof實際發動攻擊,結合Wireshark封包分析,觀察交換器在攻擊前後封包流向的變化,讓大家從中了解其運作方式與原理,強化基礎網路環境的安全防線,減少潛藏在內部網路中的資安風險。
背景知識介紹
首先,介紹相關的背景知識。
認識MAC Spoofing
先說明什麼是MAC位址,然後解釋何謂MAC Spoofing(MAC偽造攻擊)。
MAC(Media Access Control)位址,又稱「實體位址」或「硬體位址」,是指網路卡(NIC)在製造時所燒錄的唯一識別碼,長度為48位元,以十六進位表示,通常格式為XX:XX:XX:XX:XX:XX。其中,前24位元代表製造商代碼(OUI),後24位元則為裝置序號,如圖1所示。MAC位址在區域網路中扮演關鍵角色,為資料鏈路層(Layer 2)封包的發送與接收提供依據。交換器(Switch)透過學習各連接埠的MAC位址,建立對應的MAC Table,以實現封包的定向轉發,避免不必要的廣播,提高網路效率。
圖1 MAC位址示意圖。
MAC偽造攻擊(MAC Spoofing)係指攻擊者透過軟體手段,修改其裝置的網卡MAC位址,以冒充其他合法裝置。此類攻擊多發生於區域網路環境內,目的可能為繞過網路認證機制、建立中間人(MITM)通道或進行MAC Flooding攻擊以癱瘓交換器。由於許多網路設備預設將MAC位址視為裝置唯一識別,若缺乏有效驗證機制,便可能被惡意利用。現今作業系統多允許使用者以指令或工具任意變更MAC位址,使得該攻擊門檻大幅地降低。
2016年2月,孟加拉中央銀行(Bangladesh Bank)發生一起全球矚目的網路盜匯事件。駭客成功從該銀行透過SWIFT國際金融通訊系統,轉走高達1.01億美元的資金,其中約8,100萬美元轉入菲律賓銀行帳戶,並進入賭場洗錢,造成無法追回的鉅額損失。資安公司FireEye的鑑識分析報告指出,攻擊者在滲透過程中使用MAC Spoofing攻擊。駭客在內部網路中部署惡意程式與遠端控制後,偽造銀行內部合法設備的MAC位址,藉此繞過防火牆與監控系統的網段與設備識別規則,並成功操控與SWIFT相連的主機,發送偽造交易請求。MAC偽造攻擊(MAC Spoofing)依照攻擊手法與目的不同,可區分為多種樣態,其中最具代表性的為中間人攻擊(Man-in-the-Middle,MITM)與MAC Flooding攻擊。兩者皆透過篡改MAC位址干擾網路正常運作,但行為模式與影響範圍有所不同,說明如下:
中間人攻擊是指攻擊者偽裝成受害者與伺服器之間的合法節點,竊取或篡改傳輸資料。攻擊者可透過MAC偽造,使自己在交換器上看似為某一台合法主機。當交換器接收到對該MAC的封包時,便將封包送至攻擊者所在的連接埠,形成流量重新導向。攻擊者即可攔截、分析或修改受害者的網路資料,達成竊聽或偽造通訊內容的目的。此攻擊通常搭配ARP Spoofing、DNS Poisoning等方式進行,以提升隱蔽性與控制力。
MAC Flooding攻擊則是透過工具大量發送偽造MAC位址的封包,讓交換器的MAC Table快速填滿、溢位。當交換器無法再學習新的MAC位址時,便會採取Flooding模式,將封包廣播至所有連接埠。此時,攻擊者雖非封包目的位址,亦可接收到所有封包副本,達成被動側錄他人封包的效果。該攻擊特別針對未設防的交換器,在無Port-security限制或無MAC學習上限的情境下,具高度破壞力,常見於校園、會議場域或開放網路環境中。
改寫MAC位址工具
雖然每張網卡在出廠時都會被燒錄一組全球唯一的MAC位址,稱為BIA(Burned-in Address),但作業系統層級允許使用者以軟體方式暫時覆蓋這組位址。這種替代用來傳送封包的MAC位址稱為LAA(Locally Administered Address),也就是「本地自訂的MAC位址」。
現代作業系統普遍允許使用者透過指令或工具修改網卡的MAC位址,以利網路測試、隱私保護。在Windows系統中,使用者可透過裝置管理員介面或登錄檔修改MAC位址,亦可使用第三方軟體如Technitium MAC Address Changer、SMAC等圖形化工具。透過Windows內建的裝置管理員可以讓使用者修改自己電腦本身的MAC位址,操作步驟如下:
1. 開啟「裝置管理員」
2. 找到網路卡,如Realtek PCIe GBE Family Controller。
3. 開啟右鍵選單,然後依序點選內容→進階→網路位址(Network Address)。
4. 勾選「值」後,輸入12位十六進位數字(無「-」)。
5. 完成結果,如圖2所示。
圖2 在裝置管理員修改MAC位址。
在Windows系統中,裝置管理員中的「Network Address」其實對應的是IEEE定義的Locally Administered Address(LAA),意即非硬體預設、由使用者指定的MAC位址。而在ipconfig/all等系統工具中,會顯示目前正在生效的MAC(無論是原生BIA或LAA)。因此,即便名稱不同,本質上都與目前使用的MAC位址有關,只是表達角度或技術層級不同。如表1所示,在不同的情境會使用不同術語。
MAC Spoofing的防禦
由於MAC Spoofing攻擊門檻低、難以追蹤,如果網路設備與使用者對此缺乏防範意識,極可能在不知不覺中造成資料外洩、服務癱瘓等後果。因此,建立有效的防禦策略至關重要。
利用入侵偵測系統(如Snort)、日誌分析平台(如ELK、Splunk)搭配封包擷取工具(如Wireshark),可即時偵測下列異常行為:單一連接埠短時間內出現大量不同的MAC位址、非預期的ARP回應或DNS回應、封包流向異常、廣播頻率異常等。系統管理員可依據上述指標設定觸發條件,搭配LINE Notify、Email發警報,達成主動防禦與快速應變。
許多無線網路仍以MAC位址白名單機制作為唯一存取認證依據,然而MAC位址可輕易偽造,因此建議採行以下策略:將MAC驗證搭配帳號登入、憑證認證等機制;對內網實施VLAN分區、必要時限制不同部門網段互通。
企業應選用支援Port Security的交換器,設定每個連接埠允許的最大MAC數量,並定義違規處理動作,例如將學習到的合法MAC自動綁定至該連接埠;一旦偵測到異常MAC,即封鎖連接埠或丟棄封包,此類設定能有效防止MAC Flooding類型攻擊,降低內網風險。
在虛擬機器(VM)環境中,務必關閉不必要的混雜模式(Promiscuous Mode),或者將其設定為「拒絕(Deny)」。若VM自由收封包,將成為側錄攻擊的溫床。
許多MAC Spoofing攻擊來自內部使用者的無意設定或實驗行為,因此須定期對員工進行網路層資安訓練,強調MAC位址不可隨意修改,並且限制使用者在終端自行變更網卡設定的權限,有存取權的IT人員則實施操作記錄與稽核。
情境模擬與實作演練
阿建與阿明是粗碘鋅公司的員工,在某次網路安全維護工作時,阿建偶然間發現自家公司在交換器的設置存在巨大漏洞,交換器竟然未限制MAC學習數量,等同於將整個內部網路暴露在Layer 2攻擊風險之中,然而作為網路安全維護部門的阿明卻不以為意,認為「我們又不是開放網咖,反正公司也沒幾台電腦,交換器的學習數量永遠用不完的啦!」。
阿建雖無權修改系統設定,但出於職責與警覺,他決定自行搭建實驗環境,模擬攻擊實施狀況並進行封包側錄。透過Kali Linux發動macof工具,阿建對同網段的阿明電腦進行MAC Spoofing與MAC Flooding攻擊,側錄阿明的電腦連線至外部網站時的封包資訊,讓阿明了解到未配置交換器的後果。
為了執行計畫做準備,阿明在他的電腦建置相關的軟體環境與系統,以下是他所安裝的軟體與系統:
‧Virtual Box(https://www.virtualbox.org/)
‧Ubuntu(https://ubuntu.com/download)
‧Kali Linux(https://www.kali.org/get-kali/#kali-platforms)
為了方便自行操作,同時避免攻擊到其他實際在運作的交換器而觸犯《妨害電腦使用罪》,以下使用Ubuntu虛擬機來模擬阿明的電腦,Kali Linux虛擬機模擬阿建的電腦,並以手機熱點分享模擬交換器。
首先,將兩台虛擬機的網路卡設定為橋接模式,並將混合模式從「全部允許」改為「允許VM」,以確保虛擬機之間有封包隔離,符合現實狀況,然後再啟動Ubuntu虛擬機與Kali Linux虛擬機,操作步驟如圖3與圖4所示。
圖3 在Oracle VM VirtualBox的設定-網路-介面卡中修改Kali配置。
圖4 在Oracle VM VirtualBox的設定-網路-介面卡中修改Ubuntu配置。
雖然成功發動MAC Flooding攻擊能夠側錄同一網段的所有電腦,但阿建只是想要讓阿明學到教訓,並不想過度侵犯其他同事的資訊隱私,所以阿建只鎖定阿明的電腦(IP位址為172.20.10.4)。在進行封包側錄時,阿建特意輸入指令「ip.addr == 172.20.10.4」,過濾出IP位址為172.20.10.4的封包,並在終端機輸入「ping 172.20.10.4」,確認封包傳輸狀況正常,操作步驟如圖5所示。
圖5 在Wireshark設定過濾指令。
鎖定好阿明的IP位址後,阿建著手準備進行MAC Flooding攻擊。阿建準備利用Kali Linux工具macof來發送大量偽造封包,利用短時間內多個不同的MAC位址的封包來占滿MAC Table。為了操作順利,阿建首先詳閱了macof的操作說明,得知除了需要設定目標網卡外,其餘預設皆為隨機,除了要模擬攻擊模式外,可以不用另外設置,相關參數則如表2所示。
圖6 使用ipconfig指令查看本機網卡名稱。
在使用macof封包之前,阿建先輸入「ipconfig」確認自己的網卡名稱,得知為「eth0」,操作步驟如圖6①、②所示。
確認自身網卡的名稱後,由於阿建的目標只需要利用大量隨機的MAC位址占滿MAC Table,而macof工具原本就預設發送的MAC位址為隨機,且預設發送封包數量為無限發送直到程式手動中止,於是阿建在終端機輸入「sudo macof -i eth0」,將大量隨機MAC位址封包發送至交換器,並輸入kali Linux的密碼「kali」,操作步驟如圖7①、②所示。從圖7③所示可知,macof工具已成功在介面eth0上持續產生大量偽造的MAC位址。其來源MAC位址為隨機產生的6b:c0:1a:2f:e9:cb,目的MAC為5f:e9:7c:72:60:b0,顯示macof以隨機組合的位址進行大量封包注入,模擬大量裝置連入交換器。於程式執行約15秒後,由於一般交換器的MAC學習數量上限低,於是阿建按下〔Ctrl〕+〔C〕鍵手動關閉macof工具。
圖7 在終端機輸入指令「sudo macof -i eth0」。
完成MAC Table洪水攻擊後,所有交換器MAC Table中已知的MAC位址會被覆蓋掉,如果需要學習新的MAC位址,交換器必須將收到的封包廣播給每一個連接埠,並利用回傳的封包來確認連接埠對應的MAC位址,利用這個類似集線器的廣播特性,阿建就可以側錄發送給阿明的封包,達到監聽的目的。
在執行「macof -i eth0」期間,阿建發現Wireshark顯示封包流量急劇上升,且來源MAC位址快速變化,可以推論MAC Table已被塞爆,交換器進入廣播模式,如圖8①、②所示。
圖8 Wireshark顯示側錄到的封包數量來到358,219則封包。
此時,可清楚側錄到來自Ubuntu主機(172.20.10.4)的封包,證明攻擊者已能攔截原本不屬於其連接埠的資料,達成被動監聽效果,短時間內,都可以側錄到阿明發送與接收的封包。針對大量的封包資料,阿建在搜索欄位輸入指令「ip.addr == 172.20.10.4」來過濾發送到IP位址為172.20.10.4的封包,如圖9①、②所示。
圖9 過濾出與阿明電腦有關的封包。
阿建利用Wireshark側錄發送給阿明的封包,輕鬆獲得阿明的上網足跡,並將流量紀錄匯入到記事本,如圖10①、②和③所示,阿明在6月3號晚上11:05連線到Google,如圖11①、②和③所示,阿明在6月3號凌晨12:41連線到Yahoo。
圖10 阿明在6月3號晚上11點的流量紀錄。
圖11 阿明在6月3號晚上12點的流量紀錄。
阿建將他蒐集到的側錄紀錄拿給阿明看,這才讓阿明得知如果沒有好好設置MAC的學習數量上限,恐怕會讓自己的網路流量暴露光,不知不覺間,自己的許多資料都可能被有心人士利用,導致自己或公司受到威脅。之後阿明馬上設置了交換器的學習數量上限,讓每個連接埠不得重複輸入多個MAC位址,這樣駭客就沒有辦法利用偽造的大量MAC位置爆破交換器的MAC Table了。
這次事件以後,阿明不再偷懶摸魚,而是關注每一個最新資安問題,不再疏忽任何資安漏洞角落,粗碘鋅公司也因此建立起內部資安防護意識。這場實驗雖然只是一次內部測試,卻讓阿明認識到:「網路攻擊往往不是從入侵開始,而是從無視細節開始。」
結語
做好基本的交換器安全設定,如啟用Port Security、限制混雜模式、導入異常封包監控,才能夠使整體資安防線補上關鍵拼圖。在資訊安全的世界裡,攻擊從不總是高深莫測,往往只是來自對小細節的忽視。唯有從基礎做起,強化每一層防護,才能夠應對層出不窮的駭客手法。
<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/) 中央警察大學資訊密碼暨建構實驗室 & 情資安全與鑑識科學實驗室(ICCL and SECFORENSICS)1998年成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學、資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://hera.secforensics.org/)>