0
很久很久以前,也就是2010年,一個名叫Barnaby Jack的家伙在黑帽大會上演示了讓ATM取款機狂吐鈔票的過程。
此人先前就在安全圈有頗為響亮的名氣,這次的ATM機攻擊讓他更加聞名遐邇。Jack說他小時候看電影《終結者2》的時候就很羨慕ATM取款機吐錢的橋段,能夠將這樣的橋段變成現(xiàn)實也是他的夢想。
Barnaby Jack
2013年7月,Jack意外身亡,外界對他身亡的原因眾說紛紜,不過這個故事也就結束了。但你可能不知道的是,針對ATM機攻擊的歷史,在那年黑帽大會之前就已經存在了。這次,我們就來聊聊相關ATM取款機的攻擊和安全故事,畢竟從ATM機白拿錢的事,大概是大家都會去想的。
ATM取款機攻擊的確是21世紀才逐漸擺上臺面的話題,不過ATM機本身的存在歷史可以追溯上世紀60年代,這跟“黑客”一詞的出現(xiàn)差不多是同期。迪堡(Diebold)公司宣稱,最早的ATM機是他們在1967年造的,但實際上,1961年Luter G.Simjiande最早提出的ATM機設想就已經成真了。當年ATM機實在造價不菲,使用率也不高,其真正普及是從70年代后期開始的。
那個時候科技和網絡都不發(fā)達,1969年的ATM機都還沒有聯(lián)網。為了安全,銀行只向信用記錄還不錯的人開放ATM機。早期基本也沒什么人從技術手段上對其進行攻擊,大抵上也就是把ATM機搬走這種“高大上”的暴力攻擊手段。
ATM機作為一款商品,是僅面向金融機構的,加上不同國家政府對ATM機的要求有差異(比如我國規(guī)定,存取款一體機,存入的錢和取出的錢必須完全分開,不能循環(huán)利用;比如美國的ATM機在程序執(zhí)行方面更受銀行控制,所以流程更可控),我們這些普通人很難了解或者概括這類設備的內部詳細組成,和具體的軟件定制。
不過最基本的組成還是不變的:
鈔箱——就是ATM機下方用來放錢的部分。這部分各廠商和不同國家的配備都存在差異,比如幾個取款箱,幾個存款箱,具體怎么運作;另外可能還有用于存放異常鈔票的回收箱。
計算機部分——標準的計算機配置,據說配置一般并不主流;如人們所知,現(xiàn)如今的ATM機絕大部分采用定制的Windows XP系統(tǒng),前幾年歐美普遍還有采用IBM OS/2系統(tǒng)的ATM機(這是個已經有近30年歷史的操作系統(tǒng));
更多外圍模塊——如驗鈔模板(現(xiàn)如今的存取款一體機,取款過程也會進行驗鈔)、讀卡器(讀銀行卡的)、憑條/日志打印機、鍵盤、攝像頭;
網絡連接——ATM機一般并不會連接互聯(lián)網,但肯定是需要連接銀行自家的網絡的。
從這幾個組成部分下手,攻擊ATM機的思路也就有了。
思路一:直接把ATM機搬走——從鈔箱入手
企業(yè)服務器安全,講究保證服務器的物理安全,就是不能讓壞人靠近或直接接觸到服務器。ATM機天然不具備這種屬性,它需要面向普通人,有些甚至是露天的,所以直接搬走聽起來是個很不錯的主意。
問題是,現(xiàn)在這種方案越來越不可行。我國某些ATM機周圍是全鋼架結構,水泥地面下面還埋了鋼板,設備底部就焊接在鋼板上;穿墻型的ATM機,周圍的墻體也是鋼結構,要拉走基本就等于撕裂墻體;更不用說很多取款機還有專門的值班人員,還有外部監(jiān)控攝像頭。
就算真的把ATM機拉走了,內部鈔箱的開鎖過程據說也是異常痛苦的。國內的內部鈔箱起碼需要經過2把鎖,外加轉盤密碼,里面還有振動探測。其外部鋼板厚,人為暴力破壞幾乎是不大可能的。
如果真的致力于這種方案,成本和收益算起來實在不夠劃算。聽說有這能耐的人,也不會去覬覦ATM機里面區(qū)區(qū)幾十萬鈔票。
思路二:從網絡連接入手
ATM機攻擊出現(xiàn)至今,從網絡入手的案例不多。原因很簡單,如國內的ATM機只接入銀行自己的網絡。如果真的有人搞定了銀行的內部網絡,何苦要去搞ATM機上那點小錢呢?
文首我們就談到了Barnaby Jack的事跡。實際上他在那次黑客大會上演示了兩種攻擊方案,第一種是針對Tranax所造ATM機的。這種攻擊方案利用的是Windows CE系統(tǒng)的遠程監(jiān)控特性,這項特性通過互聯(lián)網或者撥號就能訪問——所以在演示的時候,Jack沒有去碰ATM機,就實現(xiàn)了遠程修改程序的目的,但不知道演示的時候,Jack走的是否是互聯(lián)網這條線,抑或只是內部局域網。
利用身份認證繞過漏洞,可以通過網絡往ATM機上傳軟件甚至覆蓋整個固件。所以Jack所做的是在系統(tǒng)中安裝了名為Scrooge的惡意程序。這個程序會潛伏在后臺,可以通過ATM機的鍵盤,或者插入特定控制板來激活。激活出現(xiàn)的隱藏菜單,攻擊者就可操作令其吐錢了。另外其他人在這臺ATM機取錢的話,Scrooge還能獲取銀行卡的磁條數據。
不過Tranax很快就建議用戶禁用遠程系統(tǒng),這個問題也就被封堵了。
思路三:ATM Skimmer——從外圍模塊入手
這算是真正靠譜的方案:ATM Skimmer也就是ATM分離器。我們去ATM機取錢的時候,喇叭廣播反復強調:“請注意插卡口是否有異常情況”。這里所謂的“異常情況”就是指ATM Skimmer了:即偽造一個插卡口,獲取卡片信息。
不過ATM Skimmer的奧義并不在于讓ATM機吐錢,或者取走鈔箱內的錢,而在于在神不知鬼不覺的情況下,記錄一般用戶的信用卡信息。實際上,ATM Skimmer更像是個木馬,不過它是硬件木馬。比如說,偽造個假的數字鍵盤,在這個鍵盤內將用戶輸入的密碼記錄下來。
比較典型的ATM Skimmer應該是在ATM機極其隱蔽的位置再加個攝像頭,這種部署方式也比較靈活。我們先前曾經分享過此類ATM Skimmer(點擊這里)。上面這臺ATM機位于印尼,攻擊者是從在鍵盤上方的遮擋部分入手的。
仔細研究其內部,會發(fā)現(xiàn)里面隱藏了攝像頭、主板、SD存儲卡,還有內置的電池——攝像頭由于對著鍵盤(最近對焦距離還真是近),也就能夠拍下前來取錢用戶輸入密碼時的動作了。
而且實際上,這個ATM Skimmer還顯得比較高端:內部芯片集成了運動偵測傳感器,這樣攝像頭就能在僅偵測到有動作的時候才拍攝了,自然也就省電了很多(畢竟這個小裝置需要自己供電)。
另外它還配有麥克風,通過按鍵聲音是可以記錄到有效信息的——而且還可以聽一聽取錢的聲音,以便判斷目標信用卡是否有攻擊價值(此人有錢沒錢的問題)…...
傳說中那臺整機偽造的ATM Skimmer
我們聽過最高端的ATM Skimmer應該是整機偽造:這年頭都有人偽造銀行,ATM機當然也可以偽造。這個案例出現(xiàn)在巴西,攻擊者更為完整地偽造了一臺ATM機,然后將之放到原有ATM機上面,感覺為了獲取卡片信息,這些人還真是蠻拼的。
相比2010年,Barnaby Jack讓ATM機吐鈔票,可考最早的ATM Skimmer至少比他早2年,所以ATM Skimmer這種攻擊手法的歷史顯得更悠久一些。
思路四:植入惡意程序——從計算機部分入手
說到Barnaby Jack在黑客大會上讓ATM機吐鈔票一事,上面在談到利用網絡這一點時,其本質主要還是對Windows CE系統(tǒng)的利用。在演講中,他另外還演示了針對一臺Triton制造ATM機的攻擊,這臺設備采用的也是Windows CE系統(tǒng),基本思路就是純粹從系統(tǒng)下手。
如果設備不接入互聯(lián)網,要搞定ATM機中的的計算機,肯定要接近ATM機本身。在Jack的演示中,它首先用鑰匙打開了ATM機的前面板,然后給ATM機接上USB設備——里面就有Scrooge惡意程序,利用了系統(tǒng)允許未授權程序執(zhí)行的安全漏洞。那個時候,人類的安全意識還沒有現(xiàn)在這么強,所以Jack演示的這種ATM機都采用統(tǒng)一的鎖,據說花10美元就能在網上買到鑰匙,一把就能開所有的Triton ATM機。
Triton公司后來還特別就這么問題狡辯了一番,他們說是客戶要求一把鎖到底的,這樣便于管理;但如果以后誰有需要的話,可以換上安全級別高得多的鎖。
鑰匙孔
就這件事很容易總結出,若考慮僅從操作系統(tǒng)入手,令其感染惡意程序。在沒有網絡的情況下,只能靠物理接觸,也就是如果你要給ATM機種馬的話,至少你得去接近它,并且要打開它,然后通過物理接口向其中傳入惡意代碼才行。
實際上,這的確是令ATM機感染惡意程序的一般途經,你得修行開鎖或者鉆孔技能,又或者你自己混進銀行中去。除了上面談到的Scrooge之外,針對現(xiàn)如今在ATM機上廣泛流行的Windows XP,比較典型的惡意軟件像是前年和去年很流行的Ploutus和Tyupkin。
其中Ploutus是通過手機和ATM機連接(USB接口),啟用手機的USB共享網絡連接,安裝Ploutus惡意軟件;再向這臺手機發(fā)送特定的2條短信(一條包含有效的激活ID,用以激活惡意程序;另一條就是取錢的具體指令了),手機會將短信以TCP/UDP包轉發(fā)給ATM機,惡意程序的網絡包監(jiān)視模塊能夠接收TCP/UDP包,然后Ploutus就會執(zhí)行、ATM機吐錢(感染方式其實還是跟網絡有關)。
如若將Ploutus進一步延伸,可以在ATM機內部再放個黑盒子(此處手機就是黑盒子),便于進行遠程控制(發(fā)送短信亦算是遠程控制),甚至偽造一個銀行處理中心連接到ATM機,雖然這么做的難度甚大,卻連惡意程序都不需要植入。嚴格說這也是需要配合網絡連接的,隱蔽性并不好,所以這類方式并不常見。
這里再提一個去年出現(xiàn)的ATM惡意程序:GreenDispenser,它在行為上比Ploutus要高級:激活的時間有限制,而且需要進行雙重身份認證才會吐錢,也就是說只有攻擊者本人才能操作。
另一方面,GreenDispenser當然也需要物理接觸ATM機才能植入,但它的傳播方式主要是通過維護ATM機的工程師,或者是賄賂銀行內部管理人員——是不是感覺輕松了很多,不用再偷摸拋去ATM機硬干了。
這部分最后特別值得一提的是,絕大部分ATM惡意程序的分析報告都會談到一個叫XFS中間件的東西。這是因為ATM機的系統(tǒng),結構大致上是底層為操作系統(tǒng),往上是底層驅動和廠商應用,再往上一層就是XFS了,這是個統(tǒng)一跨平臺接口——銀行的應用就建基于此。絕大部分供應商有他們自己的XFS管理器,惡意程序都是通過它和ATM機產生交互的。所以卡巴斯基今年才在呼吁對XFS標準進行修訂,引入更安全的驗證方式。
思路四延伸:利用Windows XP的功能——仍從計算機部分入手
還有一些技術含量并不高的手法也是從Windows XP系統(tǒng)部分入手的。這招在對付國內某些銀行終端設備非常有效。
不過它們主要針對的實際上是服務終端機,就是我們經常能在ATM取款點看到的,除了ATM機之外用于查詢各種業(yè)務信息的設備?,F(xiàn)如今的ATM機則已經不大能玩這一招了,畢竟這樣的方法實在是老少咸宜、男女通吃啊。比如直接加載網頁的畫面,是否感覺有可乘之機呢?
看看下面這臺ATM機,操作過后就變成這樣了,Windows XP原貌出現(xiàn)。
或者你可能還會看到這樣的畫面:
甚至還有人利用銀行系統(tǒng)本身的一些操作特性,竟然呼出了維護菜單:
其實說到這兒,根據ATM機的組成,ATM攻擊思路就已經說完了,而且的確我們見過的ATM攻擊也就這幾類。但實際上還有一些是利用銀行系統(tǒng)的一些BUG或者漏洞,或者配合攻擊其他銀行相關的設備來進行更為復雜攻擊。比如說去年年末俄羅斯的一種“反向ATM攻擊”技術,攻擊者先在ATM機存錢(分別存入5000、10000和30000),然后再馬上取出來,打印交易收據。
收據上會有取錢金額,和一個支付參考號。然后黑客使用這個信息,對境外的一臺PoS機終端執(zhí)行逆向操作,令銀行認為取款操作已取消,這樣就可以反復取錢了——在此過程中,在PoS機看來似乎是貨物被退回,或者支付被拒。嚴格地說,這種攻擊涉獵范圍早就不限于ATM機了,而且還需要攻擊者掌握大量PoS機的遠程訪問,以及多人配合跨境操作。
說了這么多,總結ATM機攻擊的主要手法無非兩種:ATM Skimmer和惡意程序感染(或者說從ATM機的計算機部分入手)??雌饋砗笳咝枰獎拥降男乃济黠@更多,一不小心還會被逮到,至少除了惡意程序本身之外,如何物理連接ATM機,需要更為周密的安排。
而ATM Skimmer從目標上看,甚至都不在鈔箱內的鈔票,而在銀行卡信息獲取。可見要搶個ATM機還真是不怎么方便啊。
不過隨著ATM機安全問題的日益暴露,ATM機供應商和銀行也在想辦法彌補。比如說國內大量ATM機開始支持無卡取款或操作,或者通過手機掃描二維碼實現(xiàn)取款,這種設計至少是可以很大程度預防ATM Skimmer攻擊的。
招商銀行的某些ATM機還推出了“刷臉取款”功能,這實際上是加強身份驗證機制的表現(xiàn),對于那些會記錄銀行卡磁條芯片信息、密碼的惡意程序而言,這也具備了加強安全性的作用。
另外,很多ATM機內部的安全性也在加固,比如采用加密硬盤驅動器,可一定程度預防惡意程序植入。
如果能在ATM機上阻止未經授權的媒介啟動,如CDROM、U盤等,或者像上面說的修訂XFS標準,并加密通訊過程,都可以進一步有效預防問題發(fā)生。
至于為什么ATM機這些年來始終沒有發(fā)生大規(guī)模的攻擊事件,原因大抵上應該就是其可操作性并沒有那么強,論賺錢可能還不如做釣魚網站或惡意程序來得便利,成本收益外加風險,大概并不足以吸引太多人加入。
雷鋒網注:本文原創(chuàng)作者歐陽洋蔥,由FreeBuf投稿雷鋒網發(fā)布,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。