標籤:

快速致富之路:POS機攻擊原理分析

簡介

POS系統是指通過自動讀取設備(如收銀機)在銷售商品時直接讀取商品銷售信息(如商品名、單價、銷售數量、銷售時間、銷售店鋪、購買顧客等),並通過通訊網路和計算機系統傳送至有關部門進行分析加工以提高經營效率的系統。我們日常生活中最常見的POS系統可能就是商店的收銀機,這屬於有線POS機,但是其實POS系統的種類有很多,比如快遞小哥的使用的就是移動POS機。本文對攻擊POS系統進行了研究。

針對POS系統攻擊的研究其實有很多。比如2014年的時候,Lucas Zaichkowsky做了一些關於POS系統的研究,分析了一些POS設備安全相關的事件。發現magstripe卡含有未加密的敏感數據,這也就可以克隆magstripe卡,EMV晶元含有未加密的magstripe數據,同樣可以從RAM中進行複製。

支付處理架構

POS軟體的支付處理架構如圖所示:

圖1. 支付處理架構

支付處理的流程如下:

第一步,用戶會在商戶的POS設備上刷卡來購買商品,POS設備就會發送信用卡的數據來商戶的POS系統。

第二步,POS系統會連接到PSP(支付服務提供商),由PSP去根據信用卡的品牌和種類去聯繫收單機構來授權該交易。

第三步,收單機構用該信用卡公司的網路來信用卡的發行商通信,發行商會通過信用卡公司的網路來返回給收單機構有個授權狀態。

第四步,收單機構會把授權狀態傳遞給PSP,然後轉發給POS系統和設備,最終完成交易。這個通訊的過程非常快,只需要幾秒鐘。

SAP案例分析

研究人員想要進行深入研究,所以對針對零售科技的軟體提供商進行了分析,分別是Cegid Group, MI9 Retail (Raymark), ECRS, Manthan Systems, Celerant Technology, SAP, Aptos, Oracle, PCMS Datafit, MicroStrategy。這前十的軟體提供商包括大型企業和中型企業。文中以SAP為例進行了分析。

從SAP官方了解到,SAP POS是一種C/S POS解決方案(如圖2)。SAP POS的應用範圍也包括石油、天然氣等行業。這些應用是在32位和64位Windows平台上運行的,是用C++語言編寫的。

SAP POS的架構是POS解決方案的一個典型方案,含有商戶客戶端應用、商戶服務端應用和管理應用。客戶端應用運行在商戶POS系統上來處理POS交易的商店,商戶服務端運行在商戶辦公區來服務連接、運行和管理需求,管理應用主要負責中央控制。

圖 2. SAP POS架構

商戶配置器和Xpress伺服器

商戶配置器是用來配置POS系統的帶有GUI的軟體,配置的內容包括用戶、終端、PLU、安全設置等。系統管理員使用友好的介面可以進行各種配置。之後,配置器會將這些設置保存為一個特殊的文件newparm.trg,並保存在PARM目錄中。管理員需要將這些配置文件拷貝到Xpress伺服器中。

文件的作用是類似一個觸發器。Xpress伺服器應用每30秒搜索一次文件,如果找到了觸發文件,就會檢查更新並應用到所有的參數文件中。之後,伺服器會刪除newparm.trg文件。PARM目錄存放這些配置文件,比如cnummask.cmk是負責在賬單上對信用卡號打碼的,cashier.clg含有POS系統管理員和出納員的信息。

Xpress伺服器和商戶管理

商戶管理是配置商戶信息的有圖形界面的軟體,所有的功能可以根據埠分為兩部分:

第一部分是資料庫埠。商戶管理軟體聚合了所有的商戶配置器,它是直接與資料庫進行交互的。

第二部分是埠2202。在檢測到該埠後,會檢查標準用戶介面並掃描可用埠。該埠不會驗證內部連接,所有人都可以與之通信。當與該埠通信時,就會返回一個welcome消息。Help命令會顯示一些操作,一共有超過17個函數。一些函數非常重要,可以讓用戶查詢出納員的行為,在無需認證的情況華打開和關閉步驟,並關閉伺服器。在逆向了負責2202埠的xps.exe庫後,研究人員找到了17個函數還有57個私有函數。

這是一個APM-VALIDATE-PASSWD方法:

APM-VALIDATE-PASSWD [store_number] [thread] [region_number] [login];[password]

命令一發送,伺服器就會返回結果。對不同的伺服器會有不同的響應,而且沒有嘗試次數的限制。攻擊者可以暴力破解的次數是15次,如果返回給攻擊者的code是10,就是說該用戶沒有登錄,1表示密碼錯誤,0表示正確。

重置命令也是一樣的,當重置的密碼與原密碼一樣的話,該命令是不執行的。

用這些函數還可以在伺服器端進行無驗證的文件讀操作。

File –open方法是用來打開伺服器上的文件的。

FILE-OPEN [file-path] [mode]

Mode的默認值是r,可以接受的有r,w,a,r+,w+,a+。錯誤的模式會破壞Xpress伺服器應用,導致沒有mode參數的驗證,並在fopen()函數中翻譯。如果一切運行正常,系統就會返迴文件的id來調用該文件。下一步就是調用FILE-READ方法來讀取文件的內容。

POS客戶端和Xpress伺服器

POS客戶端連接商戶伺服器並與之通過2200埠通信。交易、配置和維護數據通過該埠傳輸。每天商戶管理員第一次打開終端時,會發送一個請求,請求的內容大致為「Hey, Server, I woke up, send me new parameters, pleeease」。當商戶管理員關機時,會把日誌文件發送到伺服器。

研究人員截取了客戶端和伺服器之間的流量發現,當POS終端發送一個特殊的包給Xpress伺服器時,響應的包是文件的內容。

如果用另外一台機器來執行該操作,會返回同樣的結果。攻擊者可以讀取伺服器文件系統上的任意文件了。

在研究中,發送的包的格式為:

圖 3. 發送的包

包中一共有5個元素:

Tepe是消息的類型;Len是消息的長度;Where是數據存儲的本地路徑;What是目標文件路徑;End是0,0,只有在響應消息中才會更改。

對協議的逆向分析發現,攻擊者可以做的事情不止於讀取文件,還可以任意寫文件。

為了在伺服器上寫任意文件,需要在2200埠上發送三個包:

第一個是發送文件的類型和包長度,Xpress伺服器上的文件路徑,文件的本地路徑,發送數據的大小和靜態空值;第二個是文件數據類型包,含有內容長度,和要寫入的內容。第三個是end of file消息。之後,Xpress伺服器應用會響應一個Good消息,然後伺服器上就會出現一個新的文件。如果發送的文件大小錯誤,Xpress應用會刪除目標文件。所有的這些操作都是沒有驗證的情況下進行的。

除了這些以外,攻擊者還可以匿名進行文件讀、寫和刪除操作。

攻擊向量

攻擊者想要訪問本地商戶網路,那麼可能的攻擊向量有哪些呢?首先由很多的POS客戶端,二維碼讀碼器等連接到POS客戶端。一些小工具是放置在商戶大廳的,而且基本上沒有什麼保護。這樣,攻擊者就可以運行腳本來替代這些設備了。

研究人員發現SAP POS的4個現狀:

商戶配置工具創建配置文件,如果Xpress伺服器在特殊目錄下發現了newparm文件就會應用他們。用2200埠可以在Xpress伺服器上任意下文件。POS客戶端開機後會更新參數。POS終端可以通過Telnet和2202埠進行開啟和關閉。

根據這些,研究人員發現了如何進行攻擊:

1. 攻擊者可以用2200埠在Xpress伺服器上寫配置文件,配置文件可能是不同的。攻擊者可以改變列印在收據上的卡號隱藏的位數,還可以改變商品的價格,關閉資料庫中對敏感信息的加密燈;2. 攻擊者可以用2200埠在xpress伺服器上寫newparm.trg文件;3. 可以在資料庫中寫文件;4. 用Telnet2202埠發送close term消息給xpress伺服器;5. 用telnet埠發送open term消息給Xpress伺服器;6. Xpress伺服器應用打開POS終端;7. POS終端發送請求到Xpress伺服器,下載攻擊者的配置並應用。

需要注意的是每天營業結束後,所有的終端都會關機並在第二天打開。當Xpress伺服器應用開始或者更新參數時,就會搜索home目錄下的XPSPARM.bat」 和「StopTN.bat文件。如果搜到了,文件就會自動執行,攻擊者就可以上傳這種特殊的腳本。

加密

SAP POS使用的加密工具是TWSecurity,該工具會對每個密碼創建一個特殊的安全容器。該容器與SAP POS元素的內容相同,包括client, xpress server, store manager和configurator。加密會在每個階段進行,根據文檔,下表中的內容是經過加密的。

表 2. 加密的內容

在CryptoRegister表裡有一些列和存儲的步驟,這些都是受到加密等級影響的。比如,僱員的密碼用hash值保存,信用卡的reference號用3DES密文保存。這樣安全嗎?

加密token和加密的函數是管理員在商戶配置器中進行設置的。加密token會轉換成一個ASCII碼文件,並發送給Xpress伺服器。攻擊者可以將token篡改為空,這樣就可以在之後的交易和過程中關閉加密機制。

那麼資料庫中存儲和加密的信息安全嗎?利用TWSecurity工具,安全容器只是系統註冊表中的一些行。TWSecurity工具工具可以為加密創建新的密鑰,並用新的密鑰來加密敏感數據。也就是說,該工具連接到資料庫,獲取密文,用舊的密鑰解密,並用另一個密鑰加密一次,然後更具資料庫。

攻擊者可以用該工具來從內存中竊取明文文本數據。在Frida的研究中,用Python庫來進行測試,該方法還是很有效的。

安全補丁

2017年7月,SAP發布了Missing Authentication checks in SAP Point of Sale (POS) Retail Xpress Server 補丁。補丁中含有14個文件,會替換POS系統中原來的文件。主要的可執行文件有xps.exe和xpsctrl.exe。該補丁的主要思想是攻擊者是否可以在2202埠發送消息,並控制POS終端,所以需要對該埠進行訪問控制。該描述說明該補丁修復會產生一個新的參數,該補丁會決定IP地址,並接受與Xpress伺服器的連接。默認值是localhost,但是該補丁忽視了一個問題,那就是該問題不只存在於2202埠,也不存在2200埠。而且2200埠給攻擊者的機會更多。通過這些介面,攻擊者可以繞過防護機制。

本地商戶管理器

當商戶管理器應用連接到Xpress伺服器,伺服器會檢查IP地址是不是localhost,如果不是就拒絕連接。假設只有本地應用和用戶能夠與該埠進行通信,攻擊者可以使用2200埠發送命令到Xpress伺服器在2202埠上連接伺服器,並繞過驗證機制。

遠程商戶管理器

第二種方法是在另一台機器上安裝本地商戶管理器。當商戶管理器連接到2202埠時,Xpress應用就會打開配置文件「local.ini」,並從中提取BACKOFFICEIPADDRESS參數,與入口IP地址就行比對。為了繞過該驗證機制,攻擊者可以讀取local.ini文件的當前配置,用惡意IP地址替換正確的IP地址,並重寫該文件。這樣,Xpress伺服器應用就會認為攻擊者的IP是合法的。

結論

總的來說,如果2200埠沒有bug的話,安全補丁是可以保護系統抵禦外部攻擊者的。POS系統存在漏洞的也不止SAP這一家,本月Oracle就爆出漏洞,影響萬台POS設備。

本文翻譯自:erpscan.com/wp-content/,如若轉載,請註明原文地址: 4hou.com/mobile/10235.h 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

華盟暨神州祥升安全聯盟峰會 圓滿閉幕!
CVE-2017-0780:一張GIF圖,讓最新版Android簡訊應用無限崩潰n2017年9月9日發布
信息安全專業好的大學?
淺談動態爬蟲與去重(續)
「公司剛上班員工全被抓」震撼網路,這組照片告訴你信息泄露有多嚴重

TAG:信息安全 |