現行的行動支付使用的安全機制雖尚稱完善,在有漏洞的系統版本尚未完全於市場淘汰前,仍有遭到攻擊的風險,本篇將探討NFC的原理、架構,以及在各個領域的應用,藉由探討中間人攻擊的方式,試著找出其架構下的弱點與其他可能的攻擊手法。
科技進步日新月異,讓人們的生活更加方便,許多原本繁雜的手續,經過科技技術的成長更趨簡單,如同以往大眾習慣的文字、書本電子化讓文本的撰寫、檔管、攜帶變得更簡單;在日常生活中,購物時的「付款」這個動作,也可以利用電子錢包或行動支付的方式來完成,並開始逐漸取代原先的紙幣交易。
但這些方便的技術究竟是怎麼成立的呢?現行的行動支付或電子錢包,甚至平常通勤使用的大眾運輸工具悠遊卡、一卡通等都是建立在近場通訊(NFC)的架構操作使用。然而,儘管行動商務應用已逐漸成為日常生活的核心,各家電信業者也積極推動相關衍生應用,但相應的犯罪手法也應運而生,科技的進步雖然帶來了便利性,隨之而來的亦可能是潛在的風險。
與個資及交易行為相關,最原始的犯罪即為身分竊取及盜刷等,為了避免使用者蒙受損失,各大業者在發展行動支付相關技術時也不免在其傳輸過程中的安全性著墨。然而,科技的發展並非一蹴可幾,修補過的系統漏洞仍有可能遭到有心人士的利用,且歹徒攻擊的手法也層出不窮,如中間人攻擊亦成為NFC傳輸過程中的攻擊手法,爰此,儘管部分漏洞也許已經受到修正,在已知有漏洞的系統版本尚未完全於市場淘汰的現在,實有探討的必要。
本篇將就近場通訊(Near Field Communication,NFC)的概念、原理及應用分別介紹,並就其可能的安全弱點及攻擊手法作探討。首先介紹無線射頻辨識(Radio Frequency IDentification,RFID)、NFC之基礎概念及架構,並分析NFC所使用的NDEF格式。接著,並就中間人攻擊的方式實際操作模擬攻擊,也提出範例進行討論。
RFID及NFC技術簡介
先說明何謂無線射頻辨識(RFID)及NFC,並解釋NFC的傳輸模式,以及NFC所使用的NDEF格式。
RFID(無線射頻辨識系統)
近場通訊(NFC)是由非接觸式射頻識別(RFID)演變而來,RFID是一種無線通訊技術,利用Tag(標籤)與Reader(讀取器)兩個元件,透過無線電訊號識別特定目標並感應讀取、寫入相關資料,而無須識別系統與特定目標之間建立機械或光學接觸。
如圖1所示,利用透過調成無線電頻率的電磁場,把資料從發送端的裝置經過無線電訊號,傳送至接收端的裝置或標籤,以達到資料傳輸的用途。
NFC簡介
近場通訊(NFC)是一種新型的近距離無線通訊技術。它將現有的非接觸式辨識技術與互聯互通技術相結合並加以發展,由Nokia、Sony與Philips(後來的NXP Semiconductors)共同研發。
NFC可用於各種資訊交換,如電話號碼、圖像、MP3檔,數位式授權等等。這種交換可在兩個具有NFC功能的電子設備(如手機)之間進行,或於具有NFC功能的手機和與其相容並位於近距離內的RFID晶片卡或讀取器之間完成。NFC可被用作如電子收費、通行證、存取控制等服務。
NFC傳輸模式
NFC以操作模式可分為主動式與被動式,以下加以說明:
‧主動式:接收端的標籤本身有供應電力或嵌入電池,能提供標籤中的晶片主動發出電波訊號給讀取端(Reader),但如果停止供電則停止運作,優點是能夠讀取的距離範圍比較長,適合建立門禁管理等有持續供電的環境下使用。
‧被動式:標籤本身不會主動發出訊號,而是由讀取端發出訊號,標籤被動接受到足夠強度的電波訊號後,才會傳送儲存在記憶體中的資訊給讀取端,雖然不受限於電力的問題,但讀取距離較短,現今的NFC應用較多屬於被動式。
若以傳輸模式來區分,則可分為以下三種:
‧卡片模式(Card Emulation Mode,CE):須結合安全元件之NFC晶片。
‧讀寫模式(Read/Write Mode,R/W):作為非接觸讀卡機使用,可以讀取他人提供的NFC標籤來獲得資訊,或寫入空白的標籤提供他人讀取。
‧點對點無線連接模式(Peer to Peer Mode,P2P):其模式類似於紅外線傳輸,但相較於紅外線有著傳輸距離短、傳輸建立速度及資料傳送速度較快、耗電量低等優勢,目前主要應用於手機名片交換、資料同步、網址分享等用途。
NFC、藍牙與低功率藍牙比較
以方便性而言,僅須輕輕接觸一下的NFC毋庸置疑勝出,且在短距離通訊特性表現優秀。由於NFC是採點對點的方式連接,且耗電量低,因此保密性與安全性相對高,這也是NFC被採用於信用卡及行動支付的原因之一。
由表1可知,NFC相比藍牙(Bluetooth)的優勢在幾個方面:
‧設置程式較短:兩台NFC設備相互連接的設備識別過程中少於0.1秒,使用NFC來替代人工設置會大幅加快創建連接的速度。
‧抗干擾能力較佳:NFC的最大資料傳輸量424kbit/s遠小於Bluetooth V2.1(2.1Mbit/s)。雖然NFC在傳送速率與距離比不上藍牙,但相對地可以減少不必要的干擾,這讓NFC特別適用於設備密集時,比較不會造成傳輸困難。
‧能量需求低:相對於藍牙,NFC相容於現有的被動RFID(13.56MHz ISO/IEC 18000-3)設施。NFC的能量需求更低,與藍牙V4.0低功率協定類似。不過,當NFC在無供電的環境(例如非接觸式智慧信用卡、智慧海報、NFC標籤等)工作時,NFC的能量消耗會要大於低能藍牙V4.0。
NDEF格式分析
NDEF(NFC Data Exchange Format)是一種輕量級的二進制訊息封裝格式,用於兩個NFC設備或NFC設備與標籤之間交換訊息。簡單來說,NDEF概述了透過NFC交換數據結構的格式和規則。
NDEF記錄的格式如圖2所示,分為表頭(Header)和數據載荷(Payload)兩大部分,其中包含實際的應用程序之特定數據,由NFC論壇以記錄類型定義(Record Type Definitions,RTD)形式發布的實際應用特定數據類型來格式化。
表頭中最重要的是其第一段位元組,該位元組有6個標誌訊息,分別如下:
MB(Message Begin):表示NDEF訊息的開始。
ME(Message End):表示NDEF訊息的結束。
CF(Chunk Flag):表示該Record是第1或其他段的Record。
SR(Short Record):表示PAYLOAD_LENGTH欄位是否為單個位元組,如果該標誌被設置,則圖3中的4個Payload Length欄位僅需一個,這表明數據載荷內的資料長度將限制在255位元組以內(圖4)。
IL(ID_LENGTH):用來表示表頭中是否包含ID Length和ID這兩個欄位。
TNF(Type Name Format):表示數據載荷的類型。
Type Length:表示Record Header中Type欄位的長度。
ID Length:ID欄位的長度。
此外,Type欄位表明數據載荷的類型,NFC Forum定義了諸如URI、MIME等類型的Type,其目的是方便不同的應用來處理不同Type的數據,例如URI類型的數據就交給瀏覽器來處理。
ID需要配合URI類型的數據載荷一起使用,它使得一個NFC Record能夠透過ID來指向另外一個NFC Record。數據載荷裡面則是存放NDEF應用程序的主要內容。該欄位中攜帶的資料是不透明的,必須透過表頭判讀。
NFC鑑識演進與研究方法說明
以下說明NFC鑑識的發展演進和研究方法,並舉例進行說明。
NFC鑑識演進
早期的研究是藉由分析NFC的格式,及其使用的NDEF格式內含的表頭等做結構分析,了解其基礎架構及可能的傳輸應用;而後也藉由研究NDEF的欄位組成,試圖研究對數據載荷裡面的資料是否可被人工修改,也讓人開始注意到NFC應用於犯罪的可能性。
在傳輸的過程中,為了解決NFC原有資料容量的先天傳輸限制,有研究者提出演算法透過NFC標籤在兩個NFC設備之間的多個週期內傳輸數據,以處理NFC標籤的內存限制;而在NFC應用於犯罪偵查的領域,相關的研究報告以偽造讀卡器取代目標原先要讀取的付款讀卡機,以探討在付款傳輸的過程中,是否可能產生遭到中間人攻擊的風險。
研究方法
本文嘗試以現有的開放原始碼的應用程式NFC Proxy,驗證利用中間人攻擊盜刷他人信用卡的可能性及其步驟。NFC Proxy是一款開放原始碼的Android應用程序,可讓使用者在RFID信用卡和閱讀器之間代理交易。所保存的交易可以重播以刷新信用卡,或使信用卡在銷售點(Point of Sale,POS)終端重播。
使用NFC Proxy的中間人攻擊流程如圖5所示,攻擊者首先準備兩支具有NFC功能的手機,分別作為代理端(Proxy Mode)及接收端(Relay Mode)手機,其中代理端必須是支援CyanogenMod 9 (cm9)版本的手機,本篇使用的Android智慧型手機之作業系統版本為Android 4.0.2,手機品牌為Samsung Galaxy S3及S6,兩者經由連上同一個的Wi-Fi互相溝通。
範例說明
近期詐騙案件手法層出不窮,民間陸續出現受害案例,不少人聲稱其所持有的信用卡被不明人士濫用盜刷,調查人員多方比對受害者特徵及其交易行為,發現盜刷案件較集中在特定幾家3C商品店家。經過多次至現場比對蒐證,發現這幾家店面的動線設計特殊,結帳櫃台僅一列可通行,在蒐證過程中,又掌握到店家派員靠近排隊付款民眾的可疑行徑,隨即當場搜索並扣押其攜帶的手機等犯罪工具,終於破獲該詐騙集團。
以下為鑑識人員經過調查後,得到其取得信用卡資料的過程:
STEP 1:付款時,嫌犯的POS盜刷讀卡機向代理端手機發送讀卡指令。
STEP 2:嫌犯事先將持有的接收端及代理端手機連上相同Wi-Fi,並在NFC Proxy設定相同的連接埠後,代理端透過Wi-Fi將讀卡指令傳至接收端。
STEP 3:接收端收到讀卡指令後,開始將接收端手機靠近顧客可能擺放信用卡的位置,抓取信用卡的卡片資料。
STEP 4:如圖6所示,信用卡回傳回復資料(卡號等)予接收端。
STEP 5:接收端將信用卡資料透過Wi-Fi回傳至代理端。
STEP 6:最後代理端提供受害顧客信用卡資料予需付款的POS讀卡機,完成本次盜刷交易。
進行實驗與討論
雖然在Android 4的版本,利用NFC Proxy可以觸發能被攻擊的弱點。然而,這項弱點在Android 4 (cm9)以上的版本已經修復。Google在往後的版本針對NFC的安全機制做了調整,在裝置開機且解鎖的情況下,才會啟動NFC功能。至於接觸範圍,由於NFC僅在近距離(幾公分)內運作,因此不太容易有錯誤連線。若要截取NFC訊號,竊取者必須非常靠近。考量到NFC本身的連線距離及傳輸模式,這裡預估若其用於犯罪可能產生以下案例:
排隊付款
在如便利商店之櫃檯排隊付款的時候,嫌犯可觀察目標錢包位置,推斷出信用卡擺放位置,並靠近後利用上述方式竊取卡片資料來付款。儘管可能因每個人擺放卡片和錢包的位置而影響成功率,但考慮到其操作及風險門檻均不高,仍不失為一個有效的竊取方式。
偽造機器
藉由製作偽造的POS讀卡機,偽裝成真正的付款窗口,誘使受害者將款項付給錯誤的帳戶,然而替換及偽裝原始的POS讀卡機,所需要的成本實在太高,不僅需要專門技術,也太容易被發現,在單獨的竊盜或小型的犯罪組織,應不太可能成功。
其他可能攻擊手法
除了以上可能的竊取方式外,還可能出現以下幾種的攻擊手法。
利用程式寫入操作資訊至空白標籤
不管是Android或Apple用戶,大都可以在各自的App商店內找到免費或付費的NFC Tag標籤製作App。例如Trigger,可以使用NFC手機,將通訊錄名片、網址URL、簡訊、指定手機動作等資料寫入空白的NFC Tag中。但考慮到現今大多數的手機操作權限,均須經過使用者授權確認後方可執行,在此案例下應不致構成資安威脅。
中間人攻擊
如前述流程從信用卡、支付卡等中繼支付交易,需要POS讀卡機以及可以相互通訊的模擬器。這種技術被稱為中間人攻擊,透過偽造讀卡器取代目標原先要讀取的付款讀卡機,所有對SE的請求都被攔截並透過網路連接轉發給受害者的SE,並以相同的方式傳回給攻擊者。或是藉由發行有木馬程式的App,對目標手機植入木馬,使受害者的交易請求傳至攻擊者,以達到中間人攻擊。但此種攻擊方式較限於取代定點擺放的POS讀卡機,而非直接對目標手機進行攻擊。
資料修改
由於NDEF訊息由一系列如Type、Length等描述數據載荷的欄位組成,有研究報告指出表頭位元組中的部分元素並未經過簽章程序認證,因此理論上透過修改這些未經過簽章的欄位,來對數據載荷裡面的資料進行修改是可能的。
結語
現行的行動支付使用的安全機制儘管仍有部分漏洞,而開發商的版本更新也逐漸修正弱點,但考慮有心人士利用上述弱點竊聽、篡改和偽造通訊數據,未來NFC支付的設計應該就現有的NDEF格式修正,以避免資料被修改。
(本文作者:台灣E化資安分析管理協會(ESAM, http://esam.nctu.me/esam/)中央警察大學資訊密碼暨建構實驗室(ICCL),1998年12月成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學,資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障。(https://sites.google.com/site/iccltogether/))