別再把MAC當唯一身分證 連接埠防護擋內部威脅

數位生活越加普及,資安威脅也同步滲透至我們日常所倚賴的每一層網路架構。當人們關注伺服器端的資安防護,如防火牆與加密協定,其實容易忽略本地區域網路中潛藏的風險。事實上,許多攻擊並非源於外部駭客滲透,而是內部設備設定疏漏所導致的資訊外洩。MAC Spoofing(MAC偽造攻擊)即是一種攻擊者在區網中變造自己裝置身分、攔截資料的手法。進一步結合MAC Flooding技術,更可能癱瘓交換器的學習機制,使資料封包被大量廣播,暴露於網路中的所有節點,造成機敏資訊的非預期洩漏。

在本文中,將深入了解MAC Spoofing與MAC Flooding的原理與危害,並透過Kali Linux工具macof實際發動攻擊,結合Wireshark封包分析,觀察交換器在攻擊前後封包流向的變化,讓大家從中了解其運作方式與原理,強化基礎網路環境的安全防線,減少潛藏在內部網路中的資安風險。

背景知識介紹

首先,介紹相關的背景知識。

認識MAC Spoofing

先說明什麼是MAC位址,然後解釋何謂MAC Spoofing(MAC偽造攻擊)。

何謂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偽造攻擊(MAC Spoofing)係指攻擊者透過軟體手段,修改其裝置的網卡MAC位址,以冒充其他合法裝置。此類攻擊多發生於區域網路環境內,目的可能為繞過網路認證機制、建立中間人(MITM)通道或進行MAC Flooding攻擊以癱瘓交換器。由於許多網路設備預設將MAC位址視為裝置唯一識別,若缺乏有效驗證機制,便可能被惡意利用。現今作業系統多允許使用者以指令或工具任意變更MAC位址,使得該攻擊門檻大幅地降低。

MAC Spoofing樣態

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位址干擾網路正常運作,但行為模式與影響範圍有所不同,說明如下:

Man-in-the-Middle Attack

中間人攻擊是指攻擊者偽裝成受害者與伺服器之間的合法節點,竊取或篡改傳輸資料。攻擊者可透過MAC偽造,使自己在交換器上看似為某一台合法主機。當交換器接收到對該MAC的封包時,便將封包送至攻擊者所在的連接埠,形成流量重新導向。攻擊者即可攔截、分析或修改受害者的網路資料,達成竊聽或偽造通訊內容的目的。此攻擊通常搭配ARP Spoofing、DNS Poisoning等方式進行,以提升隱蔽性與控制力。

MAC Flooding Attack

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位址可輕易偽造,因此建議採行以下策略:將MAC驗證搭配帳號登入、憑證認證等機制;對內網實施VLAN分區、必要時限制不同部門網段互通。

啟用交換器的Port Security機制

企業應選用支援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虛擬機模擬阿建的電腦,並以手機熱點分享模擬交換器。

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-5318164171503979&output=html&h=280&adk=3502660118&adf=525616414&pi=t.aa~a.2437792521~i.97~rp.4&w=829&fwrn=4&fwrnh=100&lmt=1767941322&rafmt=1&armr=3&sem=mc&pwprc=9850640705&ad_type=text_image&format=829×280&url=https%3A%2F%2Fnetadmin.com.tw%2Fnetadmin%2Fzh-tw%2Ftechnology%2F0386685AC11F45BAB9EC970CA01E1B29&fwr=0&pra=3&rh=200&rw=829&rpe=1&resp_fmts=3&fa=27&uach=WyJXaW5kb3dzIiwiMTkuMC4wIiwieDg2IiwiIiwiMTQzLjAuNzQ5OS4xNzAiLG51bGwsMCxudWxsLCI2NCIsW1siR29vZ2xlIENocm9tZSIsIjE0My4wLjc0OTkuMTcwIl0sWyJDaHJvbWl1bSIsIjE0My4wLjc0OTkuMTcwIl0sWyJOb3QgQShCcmFuZCIsIjI0LjAuMC4wIl1dLDBd&abgtt=11&dt=1767941304151&bpp=1&bdt=2000&idt=1&shv=r20260107&mjsv=m202601050201&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dd26972f046fda160%3AT%3D1756101137%3ART%3D1767941298%3AS%3DALNI_MZ-V1wzua9NbwecI5bKgjrJvaSlBg&gpic=UID%3D00001185c65c00a1%3AT%3D1756101137%3ART%3D1767941298%3AS%3DALNI_Mb6OQyAfyq9tCdAGu2DdaAaX9ggiQ&eo_id_str=ID%3D6956b24437985749%3AT%3D1756101137%3ART%3D1767941298%3AS%3DAA-AfjYpMae5IM01aZiYB2q3lSGH&prev_fmts=0x0%2C1005x124%2C200x600%2C160x600&nras=5&correlator=86749332904&frm=20&pv=1&u_tz=480&u_his=7&u_h=1080&u_w=1920&u_ah=1032&u_aw=1920&u_cd=24&u_sd=1&dmc=8&adx=134&ady=6533&biw=1407&bih=944&scr_x=0&scr_y=2763&eid=95366177%2C95376583%2C95344788%2C95372615&oid=2&psts=AOrYGskqQ5yG9vJBCs0pk7XfW3-jA6xjjgUYMnjIvkZixFW_KJfsvseIgrkw4D_4FIBgsK575rnrDbYdrkZpVvtmYqsycMPLuj5YjfXgazryY4cEpZqKcl_Mh65EccRTrp9rrg%2CAOrYGskehaxPwyauxqT__Y7oVImc1r84xJSRENST6lW3vrfTYNqNG67MThI6s7NzEsWeyCz3LYc2aqGWZvPNupjGX-0ErsJUbsqouWMZrKDkBwfzbnoPDNrRTglOSD4gAGjtN4i4&pvsid=1816663106047864&tmod=977624743&uas=3&nvt=3&ref=https%3A%2F%2Fwww.google.com%2F&fc=384&brdim=-10%2C0%2C-10%2C0%2C1920%2C0%2C1438%2C1039%2C1422%2C944&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&plas=447x848_l%7C447x848_r&bz=1.01&num_ads=1&ifi=12&uci=a!c&btvi=4&fsb=1&dtd=18142

首先,將兩台虛擬機的網路卡設定為橋接模式,並將混合模式從「全部允許」改為「允許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設定過濾指令。

https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-5318164171503979&output=html&h=280&adk=3336641421&adf=1237401842&pi=t.aa~a.2252849048~rp.4&w=829&fwrn=1&fwrnh=100&lmt=1767941323&rafmt=1&to=qs&pwprc=9850640705&format=829×280&url=https%3A%2F%2Fnetadmin.com.tw%2Fnetadmin%2Fzh-tw%2Ftechnology%2F0386685AC11F45BAB9EC970CA01E1B29&fwr=0&fwrattr=false&pra=3&rpe=1&resp_fmts=3&fa=40&uach=WyJXaW5kb3dzIiwiMTkuMC4wIiwieDg2IiwiIiwiMTQzLjAuNzQ5OS4xNzAiLG51bGwsMCxudWxsLCI2NCIsW1siR29vZ2xlIENocm9tZSIsIjE0My4wLjc0OTkuMTcwIl0sWyJDaHJvbWl1bSIsIjE0My4wLjc0OTkuMTcwIl0sWyJOb3QgQShCcmFuZCIsIjI0LjAuMC4wIl1dLDBd&abgtt=11&dt=1767941304161&bpp=1&bdt=2011&idt=0&shv=r20260107&mjsv=m202601050201&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dd26972f046fda160%3AT%3D1756101137%3ART%3D1767941298%3AS%3DALNI_MZ-V1wzua9NbwecI5bKgjrJvaSlBg&gpic=UID%3D00001185c65c00a1%3AT%3D1756101137%3ART%3D1767941298%3AS%3DALNI_Mb6OQyAfyq9tCdAGu2DdaAaX9ggiQ&eo_id_str=ID%3D6956b24437985749%3AT%3D1756101137%3ART%3D1767941298%3AS%3DAA-AfjYpMae5IM01aZiYB2q3lSGH&prev_fmts=0x0%2C1005x124%2C200x600%2C160x600%2C829x280&nras=6&correlator=86749332904&frm=20&pv=1&u_tz=480&u_his=7&u_h=1080&u_w=1920&u_ah=1032&u_aw=1920&u_cd=24&u_sd=1&dmc=8&adx=134&ady=8339&biw=1407&bih=944&scr_x=0&scr_y=4607&eid=95366177%2C95376583%2C95344788%2C95372615&oid=2&psts=AOrYGskqQ5yG9vJBCs0pk7XfW3-jA6xjjgUYMnjIvkZixFW_KJfsvseIgrkw4D_4FIBgsK575rnrDbYdrkZpVvtmYqsycMPLuj5YjfXgazryY4cEpZqKcl_Mh65EccRTrp9rrg%2CAOrYGskehaxPwyauxqT__Y7oVImc1r84xJSRENST6lW3vrfTYNqNG67MThI6s7NzEsWeyCz3LYc2aqGWZvPNupjGX-0ErsJUbsqouWMZrKDkBwfzbnoPDNrRTglOSD4gAGjtN4i4%2CAOrYGsnq7t42UT83qDfsGnj2-GXmUdFXqgH56Fm-La-rTpDgY18qJUt6PqH81Yeg4ACMFKZ632K7L-K1wEcRZ3BWXLE4Vcft_7Bcl49KMOrx8zgPrw&pvsid=1816663106047864&tmod=977624743&uas=3&nvt=3&ref=https%3A%2F%2Fwww.google.com%2F&fc=896&brdim=-10%2C0%2C-10%2C0%2C1920%2C0%2C1438%2C1039%2C1422%2C944&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&plas=447x848_l%7C447x848_r&bz=1.01&ifi=13&uci=a!d&btvi=5&fsb=1&dtd=19649

鎖定好阿明的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/)>

資料來源:資安人