揭祕 ATM 攻擊:從 ATM 取款機搶錢沒那麼容易

引用很久很久以前,也就是2010年,一個名叫Barnaby Jack的傢伙在黑帽大會上演示了讓ATM取款機狂吐鈔票的過程。

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


Barnaby Jack

2013年7月,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走的是否是互聯網這條線,抑或只是內部局域網。


利用身份認證繞過漏洞,可以通過網絡往ATM機上傳軟件甚至覆蓋整個固件。所以Jack所做的是在系統中安裝了名為Scrooge的惡意程序。這個程序會潛伏在後台,可以通過ATM機的鍵盤,或者插入特定控制板來激活。激活出現的隱藏菜單,攻擊者就可操作令其吐錢了。另外其他人在這台ATM機取錢的話,Scrooge還能獲取銀行卡的磁條數據。

不過Tranax很快就建議用户禁用遠程系統,這個問題也就被封堵了。

思路三:ATM Skimmer——從外圍模塊入手

這算是真正靠譜的方案:ATM Skimmer也就是ATM分離器。我們去ATM機取錢的時候,喇叭廣播反覆強調:“請注意插卡口是否有異常情況”。這裏所謂的“異常情況”就是指ATM Skimmer了:即偽造一個插卡口,獲取卡片信息。


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


比較典型的ATM Skimmer應該是在ATM機極其隱蔽的位置再加個攝像頭,這種部署方式也比較靈活。我們先前曾經分享過此類ATM Skimmer(點擊這裏)。上面這台ATM機位於印尼,攻擊者是從在鍵盤上方的遮擋部分入手的。


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

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

另外它還配有麥克風,通過按鍵聲音是可以記錄到有效信息的——而且還可以聽一聽取錢的聲音,以便判斷目標信用卡是否有攻擊價值(此人有錢沒錢的問題)…...


傳説中那台整機偽造的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機,雖然這麼做的難度甚大,卻連惡意程序都不需要植入。嚴格説這也是需要配合網絡連接的,隱蔽性並不好,所以這類方式並不常見。

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

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


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

思路四延伸:利用Windows XP的功能——仍從計算機部分入手

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

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


看看下面這台ATM機,操作過後就變成這樣了,Windows XP原貌出現。


或者你可能還會看到這樣的畫面:

甚至還有人利用銀行系統本身的一些操作特性,竟然呼出了維護菜單:


| ATM機安全在持續完善中

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

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


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

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

不過隨着ATM機安全問題的日益暴露,ATM機供應商和銀行也在想辦法彌補。比如説國內大量ATM機開始支持無卡取款或操作,或者通過手機掃描二維碼實現取款,這種設計至少是可以很大程度預防ATM Skimmer攻擊的。
招商銀行的某些ATM機還推出了“刷臉取款”功能,這實際上是加強身份驗證機制的表現,對於那些會記錄銀行卡磁條芯片信息、密碼的惡意程序而言,這也具備了加強安全性的作用。


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

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

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

雷鋒網注:本文原創作者歐陽洋葱,由FreeBuf投稿雷鋒網(搜索“雷鋒網”公眾號關注)發佈,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)


資料來源:雷鋒網
作者/編輯:FreeBuf

如果喜歡我們的文章,請即分享到︰