PART 1
点击上方蓝字关注我们
摘要
隐写术是一种信息隐藏的技术,通过这种技术,信息可以被嵌入到其他媒介中而不被察觉。隐写术的目的是隐藏信息的存在,与加密不同,加密是通过改变信息的内容使其变得不可读,而隐写术则是将信息藏在其他媒介中,使得即使知道存在隐藏信息的可能性,也很难确定隐藏信息的位置和内容。
隐写术的应用可以非常广泛,从数字水印到隐藏消息在图像、音频、视频或文本中,甚至可以应用在物理介质上,如隐藏在纸张的纹理中或者通过微小的变化藏在图像中。虽然隐写术常常与秘密活动联系在一起,但它也有许多合法的应用,例如数字版权保护、信息安全和身份验证等领域。
同样, 恶意程序也是利用隐写术的特性, 在让人不会轻易察觉的情况下让受害人执行恶意程序, 实现高效率快速分发传播。
实现隐写术
以下使用Python实现了将文本信息隐藏在图像中, 也被称为LSB(最低有效位)隐写术。LSB隐写术式一种基本的隐写术方法, 它将消息的每个字节的最低有效位替换为要隐藏的信息。
from PIL import Image
def text_to_binary(text):
"""将文本转换为二进制字符串"""
binary = ''.join(format(ord(char), '08b') for char in text)
return binary
def encode_message(image_path, message):
"""将消息编码到图像中"""
image = Image.open(image_path)
binary_message = text_to_binary(message)
message_length = len(binary_message)
# 检查消息是否可以嵌入到图像中
if message_length * 3 > image.width * image.height:
print("Error: Message is too large to be encoded in the image.")
return None
data_index = 0
for y in range(image.height):
for x in range(image.width):
pixel = list(image.getpixel((x, y)))
for i in range(3):
if data_index < message_length:
pixel[i] = pixel[i] & ~1 | int(binary_message[data_index])
data_index += 1
image.putpixel((x, y), tuple(pixel))
if data_index >= message_length:
break
if data_index >= message_length:
break
image.save("encoded_image.png")
print("Message encoded successfully.")
def decode_message(image_path):
"""从图像中解码消息"""
image = Image.open(image_path)
binary_message = ""
for y in range(image.height):
for x in range(image.width):
pixel = image.getpixel((x, y))
for color in pixel:
binary_message += str(color & 1)
# 从二进制消息中提取原始文本
message = ""
for i in range(0, len(binary_message), 8):
byte = binary_message[i:i+8]
message += chr(int(byte, 2))
return message
# 测试隐写术的编码和解码
message = "Hello, this is a hidden message!"
encode_message("image.png", message)
decoded_message = decode_message("encoded_image.png")
print("Decoded message:", decoded_message)
执行后打印的图片内容如下:
双击一下图片, 图片仍然可以正常打开,如图:
而恶意程序也会有利用隐写术达到自己的目的,以下看一个真实案例。
隐写术实现快速分发
该恶意程序首先利用模板注入技术攻击Word文档, 然后利用EQNEDT32.EXE中的RTF文件漏洞下载并执行, 如图:
RTF 文件从 C2 下载一个文件扩展名为“.jpg”的 VBScript,并从“paste.ee”下载另一个 VBScript,“paste.ee”是一种类似于“Pastebin”的服务,可以免费上传文本。
下载的VBScript被很多特殊字符混淆,最终通过Replace执行PowerShell脚本,如图:
该PowerShell 脚本下载上传到外部源的图像。图像文件包含以 Base64 编码的数据,位于“FF D9”后面,表示 jpg 文件的结尾(页脚)。然后,它加载字符串“ BASE64 START ”和“ BASE64_END ”之间的数据,以 Base64 对其进行解码。解码后的数据是“.NET DLL”,它被赋予6个参数并通过反射代码加载执行。如图:
下面是恶意程序在一个普通图像文件中利用隐写术写入的Base64编码数据,如图:
该脚本从作为参数给出的 C2 下载附加文件,并创建 RegAsm.exe 作为子进程,以通过进程空洞技术执行它。RemcosRAT是最终执行的进程。如图:
进程空洞技术是一种利用操作系统内存管理机制的安全漏洞或者技术,用于隐藏恶意代码或者数据。在这种技术中,攻击者利用操作系统的内存分配方式,在进程的地址空间中创建一个或多个不被使用的空间,然后在这些空间中注入恶意代码或者数据。
进程空洞技术的工作原理如下:
-
利用内存分配漏洞: 攻击者首先需要利用操作系统或者应用程序中的内存分配漏洞,以便创建一个或多个不被使用的内存空间。这些空间通常被称为“空洞”。
-
注入恶意代码或数据: 一旦攻击者成功创建了空洞,他们可以将恶意代码或者数据注入到这些空间中。这些恶意内容可以是木马程序、后门、恶意脚本或者其他类型的恶意软件。
-
隐藏恶意内容: 由于空洞通常被操作系统或者应用程序视为未使用的内存空间,因此其中的恶意内容可能不会被检测到或者被拦截。这使得攻击者能够在受害者系统中隐藏恶意代码或者数据,从而绕过安全防御措施。
-
执行恶意操作: 一旦恶意内容被注入到进程空洞中,攻击者可以通过各种方式触发执行这些恶意操作。例如,他们可以利用漏洞触发恶意代码的执行,或者通过后续的操作来激活隐藏在空洞中的恶意脚本或程序。
该恶意软件利用隐写术实现了极大的分发效率, 并且支持多种不同途径传播,例如:垃圾邮件、破解软件的下载链接等。
点个在看你最好看
原文始发于微信公众号(二进制空间安全):利用隐写术提升百倍分发效率
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论