以歐洲組織為目標(biāo)的基于Python的惡意軟件家族PWOBot
0x00 前言
我們發(fā)現(xiàn)了一個叫做“PWOBot”的惡意軟件家族,這個惡意軟件家族相當(dāng)?shù)莫毺?,因為它完全是用Python編寫的,并通過PyInstaller進行編譯來生成一個windows下的可執(zhí)行程序。這個惡意軟件被證實影響了大量的歐洲組織,特別是在波蘭。此外,這個惡意軟件只通過一個流行的波蘭文件共享web服務(wù)來傳播的。
這個惡意軟件本身提供了豐富的功能,包括能夠下載和執(zhí)行文件,執(zhí)行Python代碼,記錄鍵盤輸入,生成一個HTTP服務(wù)器,并且通過受害者的CPU和GPU挖掘比特幣。
現(xiàn)在至少有PWOBot的12個變種,并且這個惡意軟件早在2013年末的攻擊中就開始活躍了。更多最近的影響歐洲組織的攻擊是在2015年中到年末。
0x01 目標(biāo)
在過去的半年中,我們發(fā)現(xiàn)PWOBot影響了以下的組織:
波蘭國家研究機構(gòu)
波蘭航運公司
大型的波蘭零售商
波蘭信息技術(shù)公司
丹麥建筑公司
法國光學(xué)設(shè)備提供商
大部分PWOBot的樣本都是從chomikuj.pl(波蘭流行的文件共享web服務(wù))上下載的。下面的這些奇特的URL被發(fā)現(xiàn)提供了PWOBot的副本:
- s6216.chomikuj[.]pl/File.aspx?e=Pdd9AAxFcKmWlkqPtbpUrzfDq5_SUJBOz
- s6102.chomikuj[.]pl/File.aspx?e=Hc4mp1AqJcyitgKbZvYM4th0XwQiVsQDW
- s8512.chomikuj[.]pl/File.aspx?e=h6v10uIP1Z1mX2szQLTMUIoAmU3RcW5tv
- s6429.chomikuj[.]pl/File.aspx?e=LyhX9kLrkmkrrRDIf6vq7Vs8vFNhqHONt
- s5983.chomikuj[.]pl/File.aspx?e=b5Xyy93_GHxrgApU8YJXJlOUXWxjXgW2w
- s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3FdOGBKSSUQhl
- s6701.chomikuj[.]pl/File.aspx?e=tx0a8KUhx57K8u_LPZDAH18ib-ehvFlZl
- s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3ISlGKLuMnr9H
- s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3OFFAuDc0M9m0
- s6179.chomikuj[.]pl/File.aspx?e=Want-FTh0vz6www2xalnT1Nk6O_Wc6huR
- s6424.chomikuj[.]pl/File.aspx?e=o_4Gk0x3F9FWxSDo4JWYuvGXDCsbytZMY
另外,有一次這個惡意軟件被從http://108.61.167.105/favicon.png。這個IP地址是和tracking.huijang.com有聯(lián)系的,而這個域名被相當(dāng)數(shù)量的PWOBot所使用。
下面的這些文件名字被發(fā)現(xiàn)用來傳播PWOBot:
favicon.png
Quick PDF to Word 3.0.exe
XoristDecryptor 2.3.19.0 full ver.exe
Easy Barcode Creator 2.2.6.exe
Kingston Format Utility 1.0.3.0.exe
uCertify 1Z0-146 Oracle Database 8.05.05 Premium.exe
Six Sigma Toolbox 1.0.122.exe
Fizjologia sportu. Krtkie wykady.exe [Physiology of sports. Short lectures.exe]
正如我們能從使用的文件名中所看到的,相當(dāng)一部分的PWOBot樣本偽裝成了各種各樣的軟件。在某些情況下,波蘭語被認(rèn)為是更容易被當(dāng)成目標(biāo)的文件名。
目前尚不清楚這個惡意軟件最初是怎樣被發(fā)送到終端用戶的。我們可以根據(jù)文件名作出推論,這個惡意軟件很可能是在終端用戶下載其他軟件時被傳播的。因此,釣魚攻擊可能被用來引誘受害者下載這些文件。
0x02 惡意軟件分析
正如最開始提到的,PWOBot是完全用Python編寫的。攻擊者利用PyInstaller來把Python代碼轉(zhuǎn)換成Windows可執(zhí)行程序。因此,因為Python被使用了,所以它可以很簡單的被移植到其他操作系統(tǒng),比如Linux或者OSX。
除了最初的運行之外,PWOBot會首先卸載掉它可能會發(fā)現(xiàn)的之前的PWOBot的版本。它會查詢Run注冊表項,判斷是否存在之前的版本。主要的版本針對注冊表項Run使用了一種pwo[VERSION]的格式,在這里[version]代表的是PWOBot的版本號。
在所有之前的版本被卸載之后,PWOBot會進行自我安裝并創(chuàng)建一個它自己的可執(zhí)行文件的副本,存在以下位置:
%HOMEPATH%/pwo[version]
接下來它會設(shè)置以下的注冊表鍵值來把它指向到新拷貝過來的可執(zhí)行文件上:
HKCU/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/pwo[VERSION]
如果這是這個惡意軟件第一次運行,PWOBot會在一個新的進程里執(zhí)行新復(fù)制的文件。
在安裝完畢之后,PWOBot會對各種各樣的鍵盤和鼠標(biāo)事件進行HOOK,這會在接下來的鍵盤記錄活動中被用到。PWOBot是用模塊化的風(fēng)格編寫的,允許攻擊者在運行時包含各種模塊?;趯Ξ?dāng)前已有的樣本的分析,以下的服務(wù)被發(fā)現(xiàn)帶有PWOBot:
PWOLauncher : 下載/執(zhí)行文件,或者執(zhí)行本地文件 PWOHTTPD : 在受害者機器上大量生成HTTP服務(wù)器 PWOKeyLogger : 在受害者機器上進行鍵盤記錄 PWOMiner : 使用受害者機器的CPU/GPU挖掘比特幣 PWOPyExec : 運行Python代碼 PWOQuery : 查詢遠(yuǎn)程URL并返回結(jié)果
PWOBot有兩個配置文件,其中一指定了這個惡意軟件的各種配置,另一個確定了PWOBot在執(zhí)行的時候應(yīng)該連接哪個遠(yuǎn)程服務(wù)器。
正如在配置圖中所可以看到的,PWOBot包含了很多Windows的可執(zhí)行文件,這些可執(zhí)行文件是在攻擊者使用PyInstaller來對代碼進行編譯的時候包含進去的。這些可執(zhí)行文件被用來進行比特幣挖掘以及利用TOR發(fā)送代理服務(wù)器請求。比特幣挖掘是minerd和cgminer的一個編譯好的版本。這些文件分別被用來作為CPU和GPU的比特幣挖掘。
PWOBot也使用了Tor匿名網(wǎng)絡(luò)來對攻擊者的遠(yuǎn)程服務(wù)器的通信進行加密。PWOBot使用了一個Python字典作為網(wǎng)絡(luò)協(xié)議。每一個特定的時間段PWOBot都會發(fā)送一段通知信息到遠(yuǎn)程服務(wù)器上去。這樣的通知消息的例子可以如下所示:
- {
- 1: '16ea15e51a413f38c7e3bdb456585e3c',
- 3: 6,
- 4: '[REDACTED-USERNAME]',
- 5: True,
- 6: {
- 1: 'Darwin',
- 2: 'PANHOSTNAME',
- 3: '14.5.0',
- 4: 'Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64',
- 5: 'x86_64',
- 6: 'i386',
- 7: 8
- },
- 7: {
- 1: 'en_US',
- 2: 'UTF-8',
- 3: 25200
- }
- }
針對上面的例子中列舉的各個數(shù)據(jù)都有不同的枚舉類型。替換之后我們可以看到更完整的被發(fā)送的數(shù)據(jù)。
- {
- BOT_ID: '16ea15e51a413f38c7e3bdb456585e3c',
- VERSION: 6,
- USER: '[REDACTED-USERNAME]',
- IS_ADMIN: True,
- PLATFORM: {
- SYSTEM: 'Darwin',
- NODE: 'PANHOSTNAME',
- RELEASE: '14.5.0',
- VERSION: 'Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64',
- MACHINE: 'x86_64',
- PROCESSOR: 'i386',
- CORES: 8
- },
- LOCALE: {
- LANGUAGE: 'en_US',
- ENCODING: 'UTF-8',
- TIMEZONE: 25200
- }
- }
在通知被發(fā)送之后,攻擊者可能會選擇提供一條指令來讓PWOBot來執(zhí)行之前定義好的其中一項服務(wù)。上述行為的結(jié)果會在隨后使用相同的格式上傳給攻擊者。
總的來說,基于Palo Alto Networks的Unit 42發(fā)現(xiàn)的最近的版本,目前存在12個PWOBot的變種。在這12個版本之中我們已經(jīng)在網(wǎng)絡(luò)上發(fā)現(xiàn)了其中的第5、6、7、9、10和12個版本。不同的版本之間的差別很小,以及存在不同的性能上的區(qū)別。
0x03 結(jié)論
PWOBot作為一個惡意軟件家族是非常有意思的,因為它是完全用python寫的。盡管在歷史上它只影響過windows平臺,但是因為它的底層的代碼是跨平臺的,它可以很簡單的被移植到Linux和OSX上去。這個事實以及它的模塊化的設(shè)計,讓PWOBot成為一個潛在的重要的威脅。
這個惡意軟件家族在之前并沒有被公開的披露過。當(dāng)前它被證實影響了一些歐洲的組織。
Palo Alto Networks的用戶從以下的幾方面被保護:
所有的PWOBot樣本都被WildFire服務(wù)恰當(dāng)?shù)呐卸閻阂獾摹?/p>
和PWOBot相關(guān)的域名被劃分為惡意的。
AutoFocus用戶可以使用PWOBot tag來監(jiān)控這次威脅。
相關(guān)的文件:
http://www.pyinstaller.org/
https://www.torproject.org/
https://github.com/pan-unit42/iocs/tree/master/pwobot/hashes.txt
原文:http://researchcenter.paloaltonetworks.com/2016/04/unit42-python-based-pwobot-targets-european-organizations/