vatt'ghern jaskier's ballads
本文 1 個互動圖表在手機上以重點摘要呈現,互動版請以桌面瀏覽器開啟。

我花 5 歐元買下一個過期網域,只是想確認 ENUM 這套廢棄系統還剩多少人在用。半年後回頭看 log,裡面躺著近 40 萬筆軍事基地的電話路由查詢。

花五歐元買下網域,我意外聽到軍事基地的電話

套系統的名字是 ENUM,出自 RFC 3761——2000 年代初期一個構想:把電話號碼倒過來、逐位數用點分開,再接上 e164.arpa,讓電信商能查到這支號碼是不是也能透過 SIP 或 VoIP 聯絡到。規則寫在 lina 的原文裡:「take a phone number, reverse the digits, put dots between them, and add `.e164.arpa` at the end」,範例是 +49 30 123456,依規則會變成 6.5.4.3.2.1.0.3.9.4.e164.arpa。這套系統從沒被電信商真的用起來,lina 自己形容現在的 e164.arpa,就是「it's a dead system」。資安研究者對死系統感興趣的地方,通常是它底下還留著什麼沒人管的委任——lina 就是在掃描這些委任區的過程裡,撞見了一條看起來早該被回收、卻還牽著三個國家電話系統的鏈。

會用 DNS 來查電話號碼,出發點是省事:DNS 已經是一套全世界都在用、階層式委任的查詢系統,與其重新設計一套電話號碼對應的資料庫,不如借用現成的委任機制——誰控制某個國碼的委任區,誰就負責回答底下每一支號碼的路由問題。這個設計後來被大部分電信商繞過,改用其他方式對接 VoIP,e164.arpa 因此變成一個活的協定、死的用量:規則還跑得動,委任還在,只是幾乎沒有人真的維護它。DNS 的委任本身不會過期,會過期的是委任鏈末端那台主機的網域註冊——這是這起事件的起點。

拖動滑桿切換範例號碼 · 4 個真實例子

德國示範號碼

+49 30 123456

倒過來、逐位加點、接上 e164.arpa

6.5.4.3.2.1.0.3.9.4.e164.arpa

這是 lina 原文用來說明規則的例子——查詢方要問的正是這個名稱,答案由誰控制委任區,就由誰決定。

掃描一個死掉的協定,找到一條還在委任的鏈

lina 會盯上 e164.arpa 不是偶然。原文寫得很直接:「I was scanning `e164.arpa` to see if any of the delegated zones were hijackable, mostly out of curiosity about how neglected this whole system really was.」單純想知道,這整套從沒被電信商真正採用的系統,究竟荒廢到什麼程度。這也不是 lina 第一次碰這個系統:德國是少數幾個技術上還允許註冊 e164.arpa 網域的國家,而 lina 是 2019 年以來第一個註冊的人,原文:「Germany is actually one of the last countries that still technically allows registering an `e164.arpa` domain, although I was the first person since 2019 to register one」。對一套幾乎沒人碰的系統來說,這代表 lina 對它的委任結構,比大多數研究者都熟。

掃描結果找到三個委任給英國、指向同一組權威主機的區:0.9.2.e164.arpa 對應國碼 +290(聖赫勒拿島),6.4.2.e164.arpa 對應 +246(英屬印度洋領地,也就是迪亞哥加西亞軍事基地所在地),7.4.2.e164.arpa 對應 +247(阿森松島)。三個區共同的主要權威主機是 ns6.icb.co.uk,這台主機已經停止回應查詢;DNS 記錄裡退而求其次的次要委任落點,是 ns.enum.org.uk。委任鏈本身沒有壞,它只是指向了兩台早就沒人維護的主機,其中一台連網域註冊都過期了。網域註冊到期,任何人都能重新買下,而買下網域的人,就接手了寫在 DNS 裡的那份委任。lina 形容這一步:「And that domain had expired, so I bought it for just 5€, and just like that I controlled the DNS」。5 歐元,換來三個國家電話委任區完整的權威回應權,不需要入侵、不需要繞過任何驗證,只是把一個過期的網域重新註冊了一次。

這種接手方式之所以合法又安靜,是因為 DNS 委任本身就是這樣設計的:權威主機不會替下一段委任背書,也不會檢查接手的人是誰。誰的名字寫在網域註冊資料裡、誰就是這一段委任鏈的主人,DNS 協定完全不過問這件事的來歷。ns6.icb.co.uk 停止回應之後,理論上應該有人注意到、把委任改指到別的地方,或者乾脆撤銷這三個區的委任;實際上沒有人做這件事,委任紀錄就這樣繼續指著一台不回應的主機,直到查詢方自己退而求其次,去問次要落點 ns.enum.org.uk。三個涉及一整個英國海外領地電話系統的委任區,最後決定它們命運的,只是一張網域續費單有沒有人去付。

換句話說,這條委任鏈的安全模型,從一開始就假設了一件事:只要委任結構寫在 DNS 裡沒有變,底下的控制方就一定還是當初被授權的那個組織。這個假設在系統剛上線、有人持續維護的時候成立;一旦沒人續費、沒人巡檢,這個假設就悄悄失效,而失效的方式不會觸發任何警報——DNS 查詢照樣能得到答案,只是回答的人已經換了。

點選每個節點看它的責任 · 5 個節點

三個國碼委任區 0.9.2、6.4.2、7.4.2.e164.arpa 查詢 ns6.icb.co.uk 原本的主要權威主機,已經失聯 退回次要委任 ns.enum.org.uk 次要落點,網域註冊曾經過期 5 歐元買下 lina 的 DNS 伺服器 接手權威回應,同時打開查詢記錄 通報後轉移 NCSC 事件曝光後,接手網域所有權

三個國碼委任區・責任

每個區回答的問題是這支號碼能不能用 SIP 或 VoIP 聯絡到,不記錄查詢方是誰、要打給誰。

不知道的事:底下的權威主機是不是還活著。

ns6.icb.co.uk・責任

原本應該是三個委任區的主要權威主機,理論上要回答每一筆查詢。

不知道的事:自己已經停止解析——DNS 委任紀錄不會主動通知任何人這件事。

ns.enum.org.uk・責任

主要主機失聯後,查詢會退回這個次要委任落點;網域註冊到期之後,誰買下這個名字,誰就接管了三個區的權威回應權。

不知道的事:買下網域的人是誰、打算拿這份回應權做什麼。

lina 的 DNS 伺服器・責任

買下 ns.enum.org.uk 之後,這台伺服器成為三個區唯一的權威回應者,可以決定每一筆查詢得到什麼答案,同時把每一筆查詢寫進記錄。

不知道的事:查詢方是誰、查詢目的是什麼,看得到的只有來源位址與被查的號碼。

NCSC・責任

收到第二次、點名軍事基地的通報之後,接手這三個委任區的網域,成為現在的權威控制者。

不知道的事:在那之前的半年裡,這條委任鏈實際上被誰控制、記錄了什麼——這正是通報的起點。

測試了一整天,一次查詢都沒有

買下網域後,第一個要回答的問題是:這套系統現在到底還有沒有人在查?lina 的作法是直接測,挑了三個區裡的其中一個開記錄,親眼看流量。原文:「And because I was very curious about that myself, I set up logging on `0.9.2.e164.arpa` (Saint Helena) to find out, and waited a full day. Not a single query came in.」一整天,一筆查詢都沒有。這個結果並不違反直覺,ENUM 從沒被電信商真正採用過,聖赫勒拿島是南大西洋一座人口稀少的小島,測試結果印證了最初的判斷:這是個死系統,量出來的流量是零。

於是 lina 把這批網域當成閒置資產在用。原文:「I hosted my personal site on it, spun up a Fediverse instance, a Matrix homeserver, and handed out subdomains to friends, because why not, it's a dead system.」個人網站、一個 Fediverse 實例、一台 Matrix homeserver,子網域還分給朋友用,理由寫得很直白,反正是個死系統。與此同時,一位朋友(原文暱稱 86dd)在這三個區架了一台次要主機做備援,這台主機沒有開任何記錄。這台不記錄的備援主機,半年後會成為估算真實流量規模的關鍵參照。

把生產環境等級的個人服務架在一批「確認沒人用」的委任區上,這個決定本身就建立在那一天的測試結果之上——量出來的是零,往下推的合理結論自然是這批網域閒置到可以隨便用。問題出在測試的取樣範圍:三個區裡只挑了一個測,而且剛好是三個裡面地理上最偏遠、電話號碼段最短的一個。聖赫勒拿島本身的通訊量小,並不能代表另外兩個委任區的情況——尤其其中一區底下對應的正是迪亞哥加西亞,lina 通報時點名的那座軍事基地。這個推論漏洞在接下來六個月裡,沒有被任何跡象戳破,直到 lina 自己決定回頭再看一次。

六個月後,log 裡冒出了四十萬筆查詢

六個月過去,lina 才又回頭看了一次三個區的記錄,買下網域、設定伺服器的時候,其實已經順手幫另外兩個區也打開了記錄,只是設完就沒特別再看。原文:「Just out of curiosity, I checked the logs again on all three zones, since I enabled logging running on the other two as well when I set everything up. Hundreds of thousands of ENUM queries, all logged.」數字本身並不平均:6.4.2.e164.arpa(迪亞哥加西亞)記錄了 100,170 筆查詢,7.4.2.e164.arpa(阿森松島)99,902 筆,0.9.2.e164.arpa(聖赫勒拿)只有 9,133 筆。這也回頭解釋了半年前那次一整天零查詢的測試,那次剛好測的是流量最少的一區,另外兩區當時完全沒被觀察到。

lina 據此推估自己記錄到的大約只是總量的一半——原文寫的是:「This should be approximately half of the total queries that were sent to us; Meaning it were ~400.000 requests in total」,三個委任區合計,大約 40 萬筆查詢。查詢來源的 IP,原文形容「The source IPs were mostly American」。一個被當成閒置資產處理了半年的網域,底下其實一直有著這個量級的真實查詢。

兩個高流量區的數字幾乎不謀而合,都在十萬筆上下,聖赫勒拿那一區的九千多筆,量級卻差了一個數量級。合理的推測是,這個落差對應著三個委任區背後完全不同性質的通訊規模——迪亞哥加西亞對應的是軍事基地,查詢量遠高於聖赫勒拿這種人口稀少的島嶼,並不令人意外。lina 半年前那次一整天零查詢的測試,測的正好是聖赫勒拿——三個區裡查詢量最少的那一個。

點選每個委任區看查詢細節 · 3 個區

三個被劫持的委任區,查詢量差了十倍以上

三個被劫持的委任區,查詢量差了十倍以上 6.4.2.e164.arpa・迪亞哥加西亞(+246) 100,170 筆查詢 7.4.2.e164.arpa・阿森松島(+247) 99,902 筆查詢 0.9.2.e164.arpa・聖赫勒拿(+290) 9,133 筆查詢

6.4.2.e164.arpa・迪亞哥加西亞

三個區裡查詢量最高的一區,對應的正是迪亞哥加西亞軍事基地的國碼 +246。

7.4.2.e164.arpa・阿森松島

查詢量緊追在迪亞哥加西亞之後,兩個高流量區的總和,遠遠超過聖赫勒拿。

0.9.2.e164.arpa・聖赫勒拿

lina 半年前測試整整一天、一筆查詢都沒等到的,正是這一區——當時另外兩區從未被打開來看。

掌控這條委任鏈,等於掌控了電話怎麼路由

這條委任鏈值錢的地方,在於它決定答案由誰寫。ENUM 查詢問的是這支號碼是不是也能用 SIP 或 VoIP 聯絡到,而回答這個問題的權威主機,現在是 lina 買下的那台伺服器,查詢方沒有辦法知道,自己問到的答案,是照著原本的規劃回的,還是被人改過。lina 自己把能做到的事寫得很清楚:「I could answer with whatever I wanted. I could point it at my own SIP server, accept the incoming call, and then place an outgoing call to the real destination with a spoofed number.」把回應指向自己的 SIP 伺服器、接下這通電話、再用偽造的號碼把電話轉出去給真正的目的地。撥出去、接起來、講話,通話品質完全不受影響,只是路徑上多了一段沒有人知道的中繼。

lina 沒有真的這麼做。查完記錄、意識到自己手上的委任鏈記錄著什麼之後,原文寫的是接下來的動作:「But after realizing this I shut the DNS server down and deleted all the log files.」看到數字之後,lina 的第一反應是關掉伺服器、刪掉所有記錄,沒有繼續觀察或利用這個位置。

這種竊聽方式難防的地方,在於它發生在信任鏈最上游、通話雙方都看不到的那一段。撥號方的電話系統只會照著查到的位址撥出去,接聽方的電話也只會照常響、照常接,兩端都沒有理由懷疑路由本身出了問題——通話品質正常、來電號碼正常,唯一不正常的,是查詢當下那個瞬間,答案是從一台任何人都能買下的伺服器送出來的。這正是 DNS 型別的中間人攻擊和傳統竊聽手法最大的差異:不需要碰觸任何一端的線路或裝置,只要控制委任鏈裡負責回答問題的那一段,就能決定通話往哪裡走。

正常路由 撥號方 真正目的地 委任鏈回應真實位址 被劫持後的路由 撥號方 攻擊者 SIP 真正目的地 委任鏈回應偽造位址,通話多繞一段

互動圖表

劫持者能把 ENUM 回應指向自己的 SIP 伺服器,接下電話再用偽造號碼轉給真正目的地,通話聽起來一切正常,路徑上卻多了一段沒人知道的中繼。

兩次通報,兩種下場,直到飛彈打中迪亞哥加西亞

刪掉記錄之後,lina 開始通報這件事。第一輪走的是英國政府的多個管道,原文:「I reported it right away to everyone I could think of, through multiple channels into the British government, and got nothing back.」多管道通報,沒有任何回應。同一時間也找了 RIPE,得到的答案是這件事的委任層級不歸他們管:「RIPE also declined to do anything, because `e164.arpa` delegations are governed by an ITU-T committee at the UN level」,RIPE 不願意去推翻一個聯合國層級委員會的決定。同一起事件,換了兩個通報對象,都得到差不多的結果,這不是我們該管的層級。

這個回覆本身反映了 e164.arpa 委任結構的一個尷尬之處:RIPE 是歐洲地區負責 IP 位址與部分 DNS 資源分配的組織,日常處理各種委任爭議,但 e164.arpa 這一支的治理權,形式上被劃到了聯合國底下的 ITU-T 委員會,而這個委員會顯然沒有把一個過期網域被重新註冊、進而掌控三個國碼委任的事件,當成需要立刻處理的優先事項。結果是一套沒有實際運作單位在管的治理層級,擋在了真正能修的技術問題前面。

轉折發生在第二次通報。這次的對象換成英國國家網路安全中心(NCSC),而且通報裡特別點出涉及軍事基地,原文:「I reported it for a second time to the UK's National Cyber Security Centre (NCSC), and this time, mentioning that military bases were involved, they actually cared a lot.」同一件事,換一個通報對象、加一句關鍵字,得到的反應完全不一樣——但「重視」不等於「修好」:沒人查得出這條被遺棄的委任當初是誰設的,真正要修,一樣卡回同一個 ITU 委員會問題,有一陣子什麼也沒變。一年多後,lina 手上依然握著這個網域,直到 2026 年 3 月 20 日,伊朗對迪亞哥加西亞發射了彈道飛彈:「Then on March 20th, 2026, Iran fired ballistic missiles at Diego Garcia」。這起事件,讓一條沒人管的 DNS 委任鏈可能記錄過誰在跟這座基地通電話這件事,不再只是紙上談兵的假設情境。飛彈攻擊之後,NCSC 讓 lina 把網域所有權直接轉移給他們:「the NCSC let me transfer ownership of the domain directly to them」——網域現在由 NCSC 持有,但三個區的委任紀錄,其實還是指著同一個名字。整起事件下來,lina 自己的總結是:「I was down 10€ in domain fees, there was sadly no bug bounty」,花了 10 歐元的網域費用,沒有任何漏洞獎金。

看起來飛彈攻擊跟這條委任鏈之間沒有直接關係,兩件事應該是各自獨立發生的。真正把兩件事接在一起的,是時間點上的巧合——一條原本只被當成理論風險通報的委任鏈,剛好在一座真正遭到軍事攻擊的基地事件發生前後,重新被放上檯面討論。對一個原本傾向擱置的機構來說,這種巧合足以把「有沒有人在監聽這座基地的電話」從假設性問題,變成沒有人敢再拖下去的問題。lina 從發現查詢記錄到網域最終轉移給 NCSC,前後只花了 10 歐元的網域費用,卻沒有觸發任何一套漏洞獎勵機制——這類機制設計時,鎖定的通常是應用程式或雲端服務裡的漏洞,猜想舊版電信協定裡一條被所有人遺忘的委任鏈,向來不會被算進範圍內。

拖動時間軸看每一步發生了什麼 · 8 個事件

步驟 1
拖動圓點,逐步看完整起事件

把整起事件攤開來看,通報這一段落差最大:同一件事,英國政府的多個管道與 RIPE 都沒有實質回應,換成 NCSC、加上軍事基地這個關鍵字,態度立刻不同。三次通報各自的依據與結果並不一樣,而落差本身正好對照出,一件事能不能被當成優先事項處理,經常取決於通報時用的語言,跟事件實際的技術嚴重程度沒有必然關係。

同一起事件,三次通報,三種對待。
通報對象依據或說法結果
英國政府(多管道) 透過多個管道通報,沒有點名任何具體風險。 「got nothing back」,沒有任何回應。
RIPE e164.arpa 委任層級屬於 ITU-T 委員會,等級在聯合國。 「declined to do anything」,拒絕介入。
NCSC(第二次通報) 同一件事再報一次,這次特別點出涉及軍事基地。 「actually cared a lot」,最終接手網域所有權。

下次該先查什麼:這系統沒人在用了這種判斷,測一天、測一個區都不夠準,lina 自己測聖赫勒拿測了一整天,查到的剛好是流量最少的那一區,另外兩區的量,是六個月後才發現的。