2010年,一個名叫Barnaby Jack的傢伙在黑帽大會上展示了讓ATM提款機狂吐鈔票的過程。

此人先前就在安全圈有頗為響亮的名氣,這次的ATM攻擊讓他更加聞名遐邇。Jack 說他小時候看電影《魔鬼終結者 2:審判日》的時候就很羡慕ATM提款機吐錢的橋段,能夠將這樣的橋段變成現實也是他的夢想。

「Barnaby Jack」的圖片搜尋結果

20137月,Jack意外身亡,外界對他身亡的原因眾說紛紜,不過這個故事也就結束了。但你可能不知道的是,針對ATM攻擊的歷史,在那年黑帽大會之前就已經存在了。現在來聊聊相關ATM提款機的攻擊和安全故事,畢竟從ATM白拿錢的事,大概是大家都會去想的。

ATM  提款機攻擊思路在哪?

ATM提款機攻擊的確是21 世紀才逐漸擺上檯面的話題,不過ATM本身的存在歷史可以追溯上世紀 60 年代,這跟「駭客」一詞的出現差不多是同期。迪堡(Diebold)公司宣稱,最早的ATM是他們在1967年造的,但實際上,1961 Luter G.Simjiande 最早提出的ATM設想就已經成真了。當年ATM實在造價不菲,使用率也不高,其真正普及是從 70 年代後期開始的。

那個時候科技和網路都不發達,1969年的ATM都還沒有連上網路。為了安全,銀行只向信用紀錄還不錯的人開放ATM。早期基本也沒什麼人從技術手段上對其進行攻擊,大抵上也就是把ATM 搬走這種暴力攻擊手段。

ATM 做為一款商品,是僅針對金融機構的,加上不同國家政府對ATM的要求有差異(比如中國規定,存取款整合式機種,存入的錢和取出的錢必須完全分開,不能迴圈利用;比如美國的ATM在程式執行方面更受銀行控制,所以流程更可控),我們這些普通人很難了解或者概括這類設備的內部詳細組成,和具體的軟體定制。

不過最基本的組成還是不變的:

鈔票箱──就是 ATM 下方用來放錢的部分。 這部分各廠商和不同國家的配備都存在差異,比如幾個取款箱、幾個存款箱,具體怎麼運作;另外可能還有用於存放異常鈔票的回收箱。

電腦部分──標準的電腦配置,據說規格一般並不主流;如人們所知,現如今的 ATM絕大部分採用定制的Windows XP 系統,前幾年歐美普遍還有採用 IBM OS/2 系統的 ATM(這是個已經有近30年歷史的作業系統)。

更多周邊模組──如驗鈔範本(現如今的存取款一體機,取款過程也會進行驗鈔)、讀卡器(讀銀行卡的)、收據  /  日誌印表機、鍵盤、攝影機;

網路連接── ATM  一般並不會連接網路,但肯定是需要連接銀行自家網路的。

從這幾個組成部分下手,攻擊 ATM 的思路也就有了。

思路一:直接把  ATM  機搬走──從鈔票箱入手

企業伺服器安全,講究保證伺服器的物理安全,就是不能讓壞人靠近或直接接觸到伺服器。ATM 天然不具備這種屬性 ,它需要面向普通人,有些甚至是露天的,所以直接搬走聽起來是個很不錯的主意。

 

問題是,現在這種方案越來越不可行。中國某些 ATM 周圍是全鋼骨結構,水泥地面下面還埋了鋼板,設備底部就焊接在鋼板上;穿牆型的ATM,周圍的牆體也是鋼結構,要拉走基本就等於撕裂牆體;更不用說很多取款機還有專門的值班人員,還有外部監控攝影機。

就算真的把ATM拉走了,內部鈔箱的開鎖過程據說也是異常痛苦的。中國的內部鈔箱起碼需要經過 2 把鎖,外加轉盤密碼,裡面還有震動探測。其外部鋼板厚,人為暴力破壞幾乎是不大可能的。

如果真的致力於這種方案,成本和收益算起來實在不夠划算。聽說有這能耐的人,也不會去覬覦 ATM 裡面區區幾十萬鈔票。

思路二:從網路連接入手

ATM攻擊出現至今,從網路入手的案例不多。原因很簡單,如中國的ATM只接入銀行自己的網路。如果真的有人搞定了銀行的內部網路,何苦要去拿ATM上那點小錢呢?

我們就談到了 Barnaby Jack 的事蹟。實際上他在那次駭客大會上演示了兩種攻擊方案,第一種是針對 Tranax 所生產的 ATM 機種。這種攻擊方案利用的是 Windows CE 系統的遠端監控特性,這項特性透過網路或者撥號就能連線──所以在展示的時候,Jack 沒有去碰 ATM,就完成了遠端修改程式的目的,但不知道展示的時候,Jack 走的是否是網路這條線,抑或只是內部區域網路。

「Barnaby Jack」的圖片搜尋結果

利用身分認證繞過漏洞,可以透過網路往 ATM 上傳軟體甚至覆蓋整個硬體。所以Jack所做的是在系統中安裝了名為 Scrooge 的惡意程式。這個程式會潛伏在後台,可以透過ATM 的鍵盤,或者插入特定控制板來啟動。啟動出現的隱藏功能表,攻擊者就可操作令其吐錢了。另外其他人在這台 ATM 提錢的話,Scrooge 還能獲取銀行卡的磁條資料。 不過 Tranax 很快就建議使用者禁用遠端系統,這個問題也就被封堵了。

思路三: ATM Skimmer ──從周邊模組入手

雷鋒網配圖

這算是真正可靠的方案:ATM Skimmer 也就是ATM 分離器。我們去 ATM 提錢的時候,喇叭廣播反復強調:「請注意插卡口是否有異常情況」。這裡所謂的「異常情況」就是指 ATM Skimmer 了:即偽造一個插卡口,獲取卡片資訊。

不過 ATM Skimmer 的奧義並不在於讓 ATM 吐錢,或者取走鈔票箱內的錢,而在於在神不知鬼不覺的情況下,記錄一般使用者的信用卡資訊。實際上,ATM Skimmer 更像是個木馬,不過它是硬體木馬。比如說,偽造個假的數位鍵盤,在這個鍵盤內將使用者輸入的密碼記錄下來。

雷鋒網配圖

比較典型的ATM Skimmer 應該是在 ATM 極其隱蔽的位置再加個鏡頭,這種部署方式也比較靈活。上面這台 ATM 位於印尼,攻擊者是從在鍵盤上方的遮擋部分入手的。

仔細研究其內部,會發現裡面隱藏了鏡頭、主機板、 SD 儲存卡,還有內建的電池──鏡頭由於對著鍵盤(最近對焦距離還真是近),也就能夠拍下前來取錢使用者輸入密碼時的動作了。

而且實際上,這個 ATM Skimmer 還顯得比較高階:內部晶片整合了運動偵測感測器,這樣鏡頭就能在僅偵測到有動作的時候才拍攝了,自然也就省電了很多(畢竟這個小裝置需要自己供電)。

另外它還配有麥克風,透過按鍵聲音是可以記錄到有效資訊的 ──而且還可以聽一聽提錢的聲音,以便判斷目標信用卡是否有攻擊價值

我們聽過最高階的 ATM Skimmer 應該是整機偽造:這年頭都有人偽造銀行,ATM 當然也可以偽造。這個案例出現在巴西,攻擊者更為完整地偽造了一台 ATM,然後將之放到原有 ATM 上面,感覺為了獲取卡片資訊,這些人還真是蠻拚的。

相比 2010 年,Barnaby Jack ATM 吐鈔票,可考最早的 ATM Skimmer 至少比他早 2 年,所以 ATM Skimmer 這種攻擊手法的歷史顯得更悠久一些。

思路四:植入惡意程式──從電腦部分入手

說到 Barnaby Jack 在駭客大會上讓 ATM 吐鈔票一事,上面在談到利用網路這一點時,其本質主要還是對 Windows CE 系統的利用。在演講中,他另外還展示了針對一台 Triton 製造 ATM 的攻擊,這台設備採用的也是 Windows CE 系統,基本思路就是純粹從系統下手。

如果設備不接入網路,要搞定 ATM 中的的電腦,肯定要接近 ATM 本身。在 Jack 的展示中,它首先用鑰匙打開了 ATM 的前方面板,然後給 ATM 接上 USB 設備──裡面就有 Scrooge 惡意程式,利用了系統允許未授權程式執行的安全性漏洞。那個時候,人類的安全意識還沒有現在這麼強,所以 Jack 展示的這種 ATM 都採用統一的鎖頭,據說花 10 美元就能在網上買到鑰匙,一把就能開所有的 Triton ATM

Triton 公司後來還特別就這麼問題狡辯了一番,他們說是客戶要求一把鎖到底的,這樣便於管理;但如果以後誰有需要的話,可以換上安全級別高得多的鎖。

雷鋒網配圖

就這件事很容易總結出,若考慮僅從作業系統入手,令其感染惡意程式。在沒有網路的情況下,只能靠物理接觸,也就是如果你要給 ATM 植入木馬的話,至少你得去接近它,並且要打開它,然後透過物理介面向其中傳入惡意程式碼才行。

實際上,這的確是令 ATM 感染惡意程式的一般途經,你得修行開鎖或者鑽孔技能,又或者你自己混進銀行中去。除了上面談到的 Scrooge 之外,針對現如今在 ATM 上廣泛流行的 Windows XP,比較典型的惡意軟體像是前年和去年很流行的 Ploutus Tyupkin

雷鋒網配圖

其中 Ploutus 是透過手機和 ATM 連接(USB 介面),啟用手機的 USB 共用網路連接,安裝 Ploutus 惡意軟體;再向這支手機發送特定的 2 封短訊(一條包含有效的啟動 ID,用以啟動惡意程式;另一條就是提錢的具體指令了),手機會將短訊以 TCP / UDP 包轉發給 ATM,惡意程式的網路包監視模組能夠接收 TCP / UDP 包,然後 Ploutus 就會執行、ATM 吐錢(感染方式其實還是跟網路有關)。

如若將 Ploutus 進一步延伸,可以在 ATM 內部再放個黑盒子(此處手機就是黑盒子),便於進行遠端控制(發送簡訊亦算是遠端控制),甚至偽造一個銀行處理中心連接到 ATM,雖然這麼做的難度甚大,卻連惡意程式都不需要植入。嚴格說這也是需要配合網路連接的,隱蔽性並不好,所以這類方式並不常見。

這裡再提一個 2015 年出現的 ATM 惡意程式: GreenDispenser 它在行為上比 Ploutus 要高級:啟動的時間有限制,而且需要進行雙重身分認證才會吐錢,也就是說只有攻擊者本人才能操作。

另一方面,GreenDispenser 當然也需要物理接觸 ATM才能植入,但它的傳播方式主要是透過維護 ATM 的工程師,或者是賄賂銀行內部管理人員──是不是感覺輕鬆很多,不用再偷跑去 ATM 機硬幹了。

這部分最後特別值得一提的是,絕大部分 ATM 惡意程式的分析報告都會談到一個叫 XFS 中介軟體的東西。這是因為 ATM 的系統,結構大致上是底層為作業系統,往上是底層驅動和廠商應用,再往上一層就是 XFS 了,這是個統一跨平台介面──銀行的應用就建基於此。絕大部分供應商有他們自己的 XFS 管理器,惡意程式都是透過它和 ATM產生互動的。所以卡巴斯基今年才在呼籲對 XFS 標準進行修訂,引入更安全的驗證方式。

思路四延伸:利用 Windows XP 的功能──仍從電腦部分入手

還有一些技術含量並不高的手法也是從 Windows XP 系統部分入手的。這招在對付中國某些銀行終端設備非常有效。

不過它們主要針對的實際上是服務終端機,就是我們經常能在 ATM 取款點看到的,除了 ATM 之外用於查詢各種業務資訊的設備。現今的 ATM 則已經不大能玩這一招了,畢竟這樣的方法實在是老少咸宜、男女通吃啊。比如直接載入網頁的畫面,是否感覺有可乘之機呢?

ATM 安全在持續完善中

其實說到這兒,根據 ATM 的組成,ATM 攻擊思路就已經說完了,而且的確我們見過的 ATM 攻擊也就這幾類。但實際上還有一些是利用銀行系統的一些 BUG 或者漏洞,或者配合攻擊其他銀行相關的設備來進行更為複雜攻擊。比如說 2015 年年末俄羅斯的一種「反向 ATM 攻擊」技術,攻擊者先在 ATM 機存錢(分別存入 5,00010,000 30,000),然後再馬上取出來,列印交易收據。

收據上會有提款金額和一個支付參考號。然後駭客使用這個資訊,對境外的一台 PoS 機終端執行逆向操作,讓銀行認為取款操作已取消,這樣就可以反覆領錢了──在此過程中,在 PoS 機看來似乎是貨物被退回,或者支付被拒。嚴格地說,這種攻擊涉獵範圍早就不限於 ATM 了,而且還需要攻擊者掌握大量 PoS 機的遠端存取,以及多人配合跨境操作。

說了這麼多,總結 ATM 攻擊的主要手法無非兩種:ATM Skimmer 和惡意程式感染(或者說從 ATM 的電腦部分入手)。看起來後者需要動到的心思明顯更多,一不小心還會被逮到,至少除了惡意程式本身之外,如何物理連接 ATM,需要更為周密的安排。

ATM Skimmer 從目標上看,甚至都不在鈔票箱內的鈔票,而在銀行卡資訊獲取。可見要搶個 ATM 還真是不怎麼方便啊。

不過隨著 ATM 安全問題的日益暴露,ATM 機供應商和銀行也在想辦法彌補。比如說中國大量 ATM 機開始支援無提款卡取款或操作,或者透過手機掃描二維碼實現取款,這種設計至少是可以很大程度預防 ATM Skimmer 攻擊的。

招商銀行的某些 ATM 還推出了「臉部辨識取款」功能,這實際上是加增強式驗證機制的表現,對於那些會記錄銀行卡磁條晶片資訊、密碼的惡意程式而言,這也具備了加強安全性的作用。

另外,很多 ATM 內部的安全性也在加強,比如採用加密硬碟驅動器,可一定程度預防惡意程式植入。

如果能在 ATM 上阻止未經授權的媒介啟動,如 CDROM、隨身碟等,或者像上面說的修訂 XFS 標準,並加密通訊過程,都可以進一步有效預防問題發生。

至於為什麼 ATM 這些年來始終沒有發生大規模的攻擊事件,原因大抵上應該就是其可操作性並沒有那麼強,論賺錢可能還不如做釣魚網站或惡意程式來得便利,成本收益外加風險,大概不足以吸引太多人加入。

arrow
arrow
    全站熱搜

    Win Driver Blog 發表在 痞客邦 留言(0) 人氣()