MAC Changer(一): 修改 MAC 位址

Note: 此教學可應用在大部分的 Linux 作業系統。在執行命令時,必須要有 root 訪問權限才可以成功修改 MAC Address。

什麼是 MAC 位址(MAC Address)?

要了解如何更改 MAC 位址,必須了解 MAC 地址是什麼。MAC 位(英語:Media Access Control Address),直譯為媒體存取控制位址,也稱為區域網路位址(LAN Address),乙太網路位址(Ethernet Address)或實體位址(Physical Address),它是一個用來確認網路裝置位置的位址。也叫物理地址、硬體地址或鏈路地址,由網絡設備製造商生產時寫在硬體內部。這個地址與網絡無關,也即無論將帶有這個地址的硬體(如網卡、集線器、路由器等)接入到網絡的何處,它都有相同的MAC地址。

我們使用各種可上網的電子產品,例如智能手機、筆記本電腦、平板電腦等,皆有屬於自己的 MAC 位址。每個設備的 MAC 位址皆為獨一無二的存在,一般皆以是 12 碼的十六進制表示(例如:00-F1-EE-50-DC-92),以便可以在網路中辨識其設備。

為什麼需要修改 MAC 位址?

  • 增加匿名性(Anonymity):在公共網絡上時,可能會希望更改 MAC 位址以達到匿名,來防止所在的網絡可能會記錄你的 MAC 位址。
  • 模擬其它設備:當想要進行攻擊(出於測試目的)時,更改 MAC 位址可以模擬任何合法設備。
  • 繞過過濾器(Bypassing Filters):如果 MAC 位址被列入黑名單導致無法使用網路,可以嘗試修改 MAC 位址欺騙過濾器(Filter)來解決此問題。

如何修改 MAC 位址?

為了要修改 MAC 位址,我們需要先執行一些系統命令。第一個步驟是找尋你想修改的網路介面(Interface),可以用 ifconfig 指令查詢、設定網路卡與 IP 網域等相關參數。

root@kali:~# ifconfig

上面的命令產生以下輸出。

eth0: flags=4163  mtu 1500
    inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255     
    inet6 fe80::a00:27ff:fe62:a1c8  prefixlen 64  scopeid 0x20<link>     
    ether 08:00:27:62:a1:c8  txqueuelen 1000  (Ethernet)     
    RX packets 107  bytes 10867 (10.6 KiB)     
    RX errors 0  dropped 0  overruns 0  frame 0     
    TX packets 133  bytes 11680 (11.4 KiB)     
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0     
    inet6 ::1  prefixlen 128  scopeid 0x10<host>     
    loop  txqueuelen 1000  (Local Loopback)     
    RX packets 24  bytes 1356 (1.3 KiB)     
    RX errors 0  dropped 0  overruns 0  frame 0     
    TX packets 24  bytes 1356 (1.3 KiB)     
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

由上面資訊可知在我的設備中可以得到兩個網路介面,其中 eth0 代表網卡,lo 代表127.0.0.1(即 localhost)。首先,若要更改 MAC 位址,我們需要知道介面名稱和現有的 MAC 位址。由上述可知,我們可以通過執行 ifconfig 命令來獲取這些訊息。以上面資訊為範例的話,eth0 為介面名稱,而其 ether 欄位為 MAC 位址(在此其值為 08:00:27:62:a1:c8)。

現在我們要試著修改 eth0 的 MAC 位址,首先我們會需要先執行下面指令:

root@kali:~# ifconfig eth0 down

如果我們需要更改 MAC 位址,則需要先關閉(禁用)該介面。當上面的指令執行時,eth0 介面將會被關閉,這意味著我們現在無法透過此網路介面(在此它是網卡)連到互聯網。

再來,要執行的下一個命令將更改MAC地址:

root@kali:~# ifconfig eth0 hw ether 00:11:22:33:44:55

上面的命令將 eth0 現有的 MAC 位址(08:00:27:62:a1:c8)更改為命令本身中指定的新 MAC 位址(00:11:22:33:44:55)。

現在,介面 eth0 的 MAC 位址已更改,但是若要使用它,我們需要使用以下命令再次啟用該介面:

root@kali:~# ifconfig eth0 up

執行完上述命令後,再次啟用 eth0 介面,以便可以訪問 Internet。要檢查 MAC 位址是否已更改為我們指定的位址,可以再次執行 ifconfig 命令來確認。

eth0: flags=4163  mtu 1500
    inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255     
    inet6 fe80::a00:27ff:fe62:a1c8  prefixlen 64  scopeid 0x20<link>     
    ether 00:11:22:33:44:55 txqueuelen 1000  (Ethernet)     
    RX packets 1554  bytes 161643 (157.8 KiB)     
    RX errors 0  dropped 0  overruns 0  frame 0     
    TX packets 1804  bytes 193068 (188.5 KiB)     
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0     
    inet6 ::1  prefixlen 128  scopeid 0x10<host>     
    loop  txqueuelen 1000  (Local Loopback)     
    RX packets 24  bytes 1356 (1.3 KiB)     
    RX errors 0  dropped 0  overruns 0  frame 0     
    TX packets 24  bytes 1356 (1.3 KiB)     
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

從輸出中,我們可以看到 MAC 位址已從 08:00:27:62:a1:c8 更改為 00:11:22:33:44:55。

結語

在此可以了解什麼是 MAC 位址(MAC Address),以及我們為何想要修改 MAC 位址,最後以簡單的幾行 Linux 指令完成修改。

相關文章

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。