我們發現了一個叫做“PWOBot”的惡意軟件家族,這個惡意軟件家族相當的獨特,因為它完全是用Python編寫的,并通過PyInstaller進行編譯來生成一個windows下的可執行程序。這個惡意軟件被證實影響了大量的歐洲組織,特別是在波蘭。此外,這個惡意軟件只通過一個流行的波蘭文件共享web服務來傳播的。
這個惡意軟件本身提供了豐富的功能,包括能夠下載和執行文件,執行Python代碼,記錄鍵盤輸入,生成一個HTTP服務器,并且通過受害者的CPU和GPU挖掘比特幣。
現在至少有PWOBot的12個變種,并且這個惡意軟件早在2013年末的攻擊中就開始活躍了。更多最近的影響歐洲組織的攻擊是在2015年中到年末。
在過去的半年中,我們發現PWOBot影響了以下的組織:
大部分PWOBot的樣本都是從chomikuj.pl
(波蘭流行的文件共享web服務)上下載的。下面的這些奇特的URL被發現提供了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有聯系的,而這個域名被相當數量的PWOBot所使用。
下面的這些文件名字被發現用來傳播PWOBot:
正如我們能從使用的文件名中所看到的,相當一部分的PWOBot樣本偽裝成了各種各樣的軟件。在某些情況下,波蘭語被認為是更容易被當成目標的文件名。
目前尚不清楚這個惡意軟件最初是怎樣被發送到終端用戶的。我們可以根據文件名作出推論,這個惡意軟件很可能是在終端用戶下載其他軟件時被傳播的。因此,釣魚攻擊可能被用來引誘受害者下載這些文件。
正如最開始提到的,PWOBot是完全用Python編寫的。攻擊者利用PyInstaller來把Python代碼轉換成Windows可執行程序。因此,因為Python被使用了,所以它可以很簡單的被移植到其他操作系統,比如Linux或者OSX。
除了最初的運行之外,PWOBot會首先卸載掉它可能會發現的之前的PWOBot的版本。它會查詢Run
注冊表項,判斷是否存在之前的版本。主要的版本針對注冊表項Run
使用了一種pwo[VERSION]
的格式,在這里[version]
代表的是PWOBot的版本號。
圖一 PWOBot uninstalling previous versions
在所有之前的版本被卸載之后,PWOBot會進行自我安裝并創建一個它自己的可執行文件的副本,存在以下位置:
%HOMEPATH%/pwo[version]
接下來它會設置以下的注冊表鍵值來把它指向到新拷貝過來的可執行文件上:
HKCU/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/pwo[VERSION]
如果這是這個惡意軟件第一次運行,PWOBot會在一個新的進程里執行新復制的文件。
在安裝完畢之后,PWOBot會對各種各樣的鍵盤和鼠標事件進行HOOK,這會在接下來的鍵盤記錄活動中被用到。PWOBot是用模塊化的風格編寫的,允許攻擊者在運行時包含各種模塊。基于對當前已有的樣本的分析,以下的服務被發現帶有PWOBot:
PWOBot有兩個配置文件,其中一指定了這個惡意軟件的各種配置,另一個確定了PWOBot在執行的時候應該連接哪個遠程服務器。
圖二 PWOBot settings configuration
圖三 PWOBot remote server configuration
正如在配置圖中所可以看到的,PWOBot包含了很多Windows的可執行文件,這些可執行文件是在攻擊者使用PyInstaller來對代碼進行編譯的時候包含進去的。這些可執行文件被用來進行比特幣挖掘以及利用TOR發送代理服務器請求。比特幣挖掘是minerd
和cgminer
的一個編譯好的版本。這些文件分別被用來作為CPU和GPU的比特幣挖掘。
PWOBot也使用了Tor匿名網絡來對攻擊者的遠程服務器的通信進行加密。PWOBot使用了一個Python字典作為網絡協議。每一個特定的時間段PWOBot都會發送一段通知信息到遠程服務器上去。這樣的通知消息的例子可以如下所示:
{
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
}
}
針對上面的例子中列舉的各個數據都有不同的枚舉類型。替換之后我們可以看到更完整的被發送的數據。
{
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
}
}
在通知被發送之后,攻擊者可能會選擇提供一條指令來讓PWOBot來執行之前定義好的其中一項服務。上述行為的結果會在隨后使用相同的格式上傳給攻擊者。
總的來說,基于Palo Alto Networks的Unit 42發現的最近的版本,目前存在12個PWOBot的變種。在這12個版本之中我們已經在網絡上發現了其中的第5、6、7、9、10和12個版本。不同的版本之間的差別很小,以及存在不同的性能上的區別。
PWOBot作為一個惡意軟件家族是非常有意思的,因為它是完全用python寫的。盡管在歷史上它只影響過windows平臺,但是因為它的底層的代碼是跨平臺的,它可以很簡單的被移植到Linux和OSX上去。這個事實以及它的模塊化的設計,讓PWOBot成為一個潛在的重要的威脅。
這個惡意軟件家族在之前并沒有被公開的披露過。當前它被證實影響了一些歐洲的組織。
Palo Alto Networks的用戶從以下的幾方面被保護:
相關的文件: