美國最大的實體零售連鎖店是如何在3個月內被竊取幾百萬筆信用卡資料的
[page 8]
這次攻擊和2014年的多次針對零售業的攻擊類似,都是通過利用合法的賬號遠程登錄受害方的系統,內網滲透之后在POS機系統上裝盜取信用卡的惡意軟件.直到被美國政府部門通知后他們才發現自己已經被攻擊了。
攻擊者首先使用合法賬號登錄了零售商的虛擬應用服務器。這個虛擬服務器給了攻擊者一個權限有限的虛擬化桌面環境(目測是Citrix,傳說中的透明計算嗎?)。我們沒有發現失敗登錄的記錄,說明攻擊者在攻擊之前就已經獲得合法賬號(當前證據沒有顯示攻擊者是如何獲取到賬號的,不過很可能是社工,釣魚等手段。)
之后黑客利用了虛擬桌面環境上的一個配置錯誤,提權得到系統權限的shell。之后通過FTP下載了一個密碼導出工具,獲取了本地管理員的密碼。 這個本地管理員密碼和這家公司其他系統的密碼完全一樣。這一切只用了幾分鐘就完成了。
在初始的入侵過程中,攻擊者用了功能強大的開源滲透測試工具Metasploit Framework(MSF)在內網環境中游走。
利用MSF的psexec_command模塊,攻擊者通過之前獲取到的管理員密碼在內網系統上執行了很多命令,這個模塊通過添加Windows服務來執行命令,所以在系統日志中留下了記錄。
在滲透過程中,攻擊者瞄準了企業網絡的域控服務器。這個域控服務器的本地管理員密碼和之前攻擊者獲得的虛擬桌面服務器的管理員密碼一樣……
攻擊者之后通過MSF的ntdsgrab模塊獲取了域控的NTDS數據庫和注冊表hive數據。
域控的NTDS儲存了AD里的用戶名和密碼hash。在破解了域管理員的密碼hash后,攻擊者通過他們在域中基本暢通無阻了。
此時,攻擊者從MSF換到了更傳統的后期滲透工具,比如微軟的psexec,RDP等常用的管理工具。攻擊者之后使用域管理員賬號通過RDP登錄到了其他系統。
psexec_command模塊是如何工作的:
MSF的psexec_command模塊把要執行的命令寫入到一個批處理文件,執行后的結果會寫入到一個文本文件。這兩個文件名都是隨機的16位字符串。之后該模塊通過添加一個新的隨機命名的windows服務來執行這個批處理程序。下面是這個服務被添加執行之后在windows系統日志中出現的內容:
A service was installed in the system.
Service Name: MRSWxwQmQxFGumEFsW
Service File Name: %COMSPEC% /C echo dir ^>
%SYSTEMDRIVE%\WINDOWS\Temp\TthwsVKvUhydrsNB.txt > \
WINDOWS\Temp\RbhRmgALAHcdyWXG.bat & %COMSPEC% /C
start %COMSPEC% /C \WINDOWS\Temp\RbhRmgALAHcdyWXG.bat
Service Type: user mode service
Service Start Type: demand start
為了持久的控制已經拿下的系統,攻擊者在多個機器中植入了后門,后門是針對win XP系統的驅動型木馬。
植入的木馬使用了很高級的免殺技術,和很多高級的常用惡意軟件類似。植入的惡意驅動首先在內存中釋放代碼,然后生成一個新的系統線程。 原始的驅動加載后之后會提示系統加載錯誤,因為釋放出來的代碼是用另一個進程執行的,雖然windows并不認為這個驅動已經被加載了,但是惡意代碼還是成功執行了。 這個技巧經常用來防止對惡意軟件的逆向并且保護了后門的一些功能。
這個后門通過釋放出的shellcode來在user space中實現它的功能(從內核加載后注入用戶級進程). 這個shellcode通過向一個寫在代碼里的IP地址發送HTTP POST來獲取一個XOR編碼后嵌在HTML里的shellcode。
這個技巧讓這個后門變的很萬能,因為想增加新功能的話只要在服務端加個新的shellcode就行了。雖然這種通過shellcode實現的下載馬已經出現很久了,但是通過和驅動級后門的結合說明這個后門很先進。
Figure 2 后門和C2服務器的通信方式
這個零售店所有的結賬系統都是連接到域服務器的,也就是說任何人如果控制了域控就可以控制所有的結賬機器。
在拿下企業域環境之后,黑客開始滲透零售系統的內網。
零售系統的內網環境是這樣的:
零售域和企業域是雙向信任的。 每個零售店的結賬平臺運行的是WinXP 零售平臺的XP系統加入了零售域
這樣的內網環境在零售行業中很常見,這給了攻擊者兩個優勢。
首先,因為雙向信任的關系,只要拿了一個域的管理員權限就擁有了另一個域的權限。
其次,零售域是企業域的子域,這要求企業域和子域的域控必須打開特地的端口。這些開放的端口繞過了零售域的防火墻。攻擊者使用這些開放的端口進入了零售域的域控,然后通過零售域的域控作為跳板進入零售域的其他機器。
攻擊者把一個windows腳本用域控推送到所有結賬平臺,之后腳本下載了專門用來收集POS機刷卡記錄的惡意軟件。
之后攻擊者通過Windows計劃任務執行了惡意軟件。這個收集刷卡信息的軟件會收集信用卡的磁道數據,包括信用卡號,過期時間等信息。這些信息在刷卡的時候會存在POS應用程序的內存里,攻擊者會把這些數據賣給做假卡的人。
這個攻擊POS機的惡意軟件使用了OSQL,一個預裝在所有結賬平臺上的軟件,用來把收集到的信用卡信息寫入一個MSSQL的臨時數據庫 tempdb,tempdb中的數據在MSSQL重啟的時候會清空。每天攻擊者都會把tempdb中的數據導出成文本文件,然后復制到域控服務器上。
之后攻擊者把收集到的數據打包然后發送到零售內網的一臺有外網連接的工作站,之后傳到自己控制的FTP服務器上
Figure 3
1. 攻擊者通過合法賬號遠程登錄受害者的虛擬化應用服務器。
2.攻擊者從虛擬環境中逃出,然后逐漸進入企業內網環境。從那里開始收集企業內網環境的賬號。
3.攻擊者通過零售域的域控服務器作為跳板進入了POS機的主機。之后在上面通過腳本下載執行了收集信用卡資料的惡意軟件。
4. 攻擊者把收集到的信用卡資料傳輸到域控,然后再到有互聯網連接的工作站,之后通過FTP傳到了自己控制的FTP服務器
面對這樣的攻擊,應該怎么防御呢? 你沒法阻止每次進攻,也沒法保證自己無法被黑,但是下面的一些基本規則可以阻止攻擊者在你的內網暢通無阻的行動。 通過使用正確的工具和高度警惕的安全團隊,你可以減緩攻擊者的速度,給你足夠的時間在最壞的情況發生前,去發現,分析和應對攻擊。
分析和檢查員工,臨時工還有供貨商等如何遠程連接到你的網絡環境。確保遠程連接一切可控,比如遠程連接方式,可以遠程連接的用戶,密碼要求等等。全部可以遠程登錄的賬號都應該使用雙因素認證。 確保積極監控遠程登錄日志,盡早發現任何可疑活動。
按照Payment Card Industry(PCI)和相關的安全認證PCIDSS的標準來規劃你的內網環境。一切進入到PCI環境的登錄和連接都要通過一個安全的堡壘機進行。登錄堡壘機需要使用雙因素認證。如果可能的話,把企業域環境和零售域環境分開,盡量減少和零售域以外的連接。另外,最好在零售域使用白名單,只有列表內的機器和地址才能被零售域內的系統訪問。
在所有核心系統上都應該通過應用程序白名單的方式,減少惡意軟件執行的機會。核心系統包括任何能接觸到信用卡資料的系統,堡壘機服務器,域控服務器等等。
攻擊者會瞄準高權限賬號比如本地管理員,域管理員還有服務賬號等等。減少高權限賬號的數量,并且確保每個本地管理員賬號的密碼不同,最好是隨機的。 使用密碼管理工具來管理賬號,最好每次使用這些賬號后自動重新生成新密碼。這些技術可以更好的控制高權限賬號的使用。