部署為Windows加載器的Linux可執行軟件
Black Lotus安全研究人員近期發現多個Python語言編寫的惡意文件,并編譯為 Debian 操作系統的Linux二進制文件格式ELF。這些文件會以加載器運行payload,payload要么嵌入在樣本中或從遠程服務器中提取,然后使用Windows API調用注入到運行的進程中。
簡介
2021年8月,Black Lotus研究人員發現了大量為Debian Linux編譯的可疑ELF文件。文件是用Python 3編寫的,然后用PyInstaller轉變為ELF可執行文件。Python代碼作為使用不同Windows API的加載器,Windows API可疑提取遠程文件,然后注入運行的進程。從 VirusTotal 的檢測率來看,大多數為Windows系統設計的終端代理無法有效分析ELF簽名。在調查中,研究人員發現了2個ELF加載器方法的變種:第一個是用Python編寫的,第二個表中使用ctype來調用不同的Windows API和調用powershell腳本。研究人員分析認為該PowerShell變種仍在開發中。
技術細節
從2021年5月到2021年8月這3個月內,研究人員發現樣本的進化過程,從最初的Python 3編寫的樣本到使用ctype來調用Windows API,再到使用PowerShell來宿主機器上執行隨后的動作。
Python變種
使用Python編寫的變種并不使用任何Windows API。其中一個特征是加載器使用變種的Python庫,使得其可以在Linux和Windows機器上運行。研究人員分析樣本發現腳本會打印“Пивет Саня”,打印的內容是俄語文字翻譯過來就是“Hello Sanya”。所有的相關的文件都含有隱私或者非路由的IP地址,除了一個樣本。該樣本中含有公共IP地址185.63.90[.]137和一個Python編寫的加載器文件,這些文件隨后會被轉化為可執行文件。該文件首先嘗試從機器分配內容,然后創建一個新的進程,并注入位于hxxp://185.63.90[.]137:1338/stagers/l5l.py的遠程服務器的資源。目前,該服務器已經無法訪問,表明該地址是用于測試或之前的攻擊活動。
研究人員發現許多惡意活動都與同一IP地址185.63.90[.]137進行通信,樣本中都含有Meterpreter payload,其中部分使用Shikata Ga Nai編碼器混淆。
使用PowerShell和Ctype的WSL變種
不同文件的ELF到Windows二進制文件執行路徑是不同的。在部分樣本中,PowerShell 用于注入和執行shellcode,在其他樣本中,Python ctype被用來解析Windows API。
在其中一個PowerShell樣本中,編譯的Python會調用3個函數: kill_av()、reverseshell() 和 windowspersistance()。
圖1: 反編譯的decompiled kill_av和windowspersistence函數
kill_av()函數會使用 os.popen()嘗試kill調可疑的反病毒產品和分析攻擊。 reverseshell() 函數使用子進程每20秒性一個base64編碼的PowerShell 腳本,攔截其他函數的執行。windowspersistence() 函數會復制原始ELF文件到appdata 文件夾,命名為payload.exe并使用子進程來加入注冊表以實現駐留。在上圖中,windowspersistance()會用字符串“TIME TO Presist”被調用。
圖2: reverseshell 和 kill_av函數
解碼的PowerShell使用GetDelegateForFunctionPointer來調用VirtualAlloc,復制MSFVenom payload到分配的內存,并使用GetDelegateForFuctionPointer來在分配的含有payload的內存中調用CreateThread 。
圖3:注入和調用MSFVenom payload的PowerShell腳本
另一個使用樣本使用Python ctype來解析Windows API來注入和調用payload。在分析過程中,研究人員發現一些小的不連續,比如變量類型。研究人員猜測代碼仍在開發中,但可能即將結束。
圖4: 使用Python ctypes的分混淆的代碼
本文翻譯自:
https://blog.lumen.com/no-longer-just-theory-black-lotus-labs-uncovers-linux-executables-deployed-as-stealth-windows-loaders/