作者: 启鑫

  • 使用 Docker 部署 Greenbone Community Edition(GCE):打造你的本地漏洞扫描平台

    一、GCE 简介

    Greenbone Community Edition(GCE) 是由 Greenbone Networks 维护的开源安全漏洞扫描解决方案,基于知名的 OpenVAS(Open Vulnerability Assessment System) 项目构建。它包括:

    • GSA(Greenbone Security Assistant):图形化 Web 管理界面;
    • GVMD:扫描调度与管理守护进程;
    • OpenVAS Scanner:扫描引擎;
    • Greenbone Community Feed:开源漏洞数据库(每日更新);
    • GVM-Tools:命令行工具,支持远程自动化控制。

    GCE 是企业级 Greenbone GSM 产品的免费替代方案,非常适合中小企业、个人研究人员、DevSecOps 团队部署。

    二、安装Docker

    $ curl -fsSL https://get.docker.com -o get-docker.sh
    $ sudo sh get-docker.sh

    三、部署Greenbone Community Edition(GCE)

    1. 保存 docker-compose.yml 文件
    2. 运行以下命令启动服务:
    docker compose up -d
    1. 容器启动后,访问 Web 管理界面:
    http://<服务器IP>:9392
    登录默认管理员账户/密码:admin

    首次启动可能需要等待几分钟,用于加载漏洞数据库、初始化服务。

    name: greenbone-community-edition
    
    services:
      vulnerability-tests:
        image: registry.community.greenbone.net/community/vulnerability-tests
        environment:
          FEED_RELEASE: "24.10"
        volumes:
          - vt_data_vol:/mnt
    
      notus-data:
        image: registry.community.greenbone.net/community/notus-data
        volumes:
          - notus_data_vol:/mnt
    
      scap-data:
        image: registry.community.greenbone.net/community/scap-data
        volumes:
          - scap_data_vol:/mnt
    
      cert-bund-data:
        image: registry.community.greenbone.net/community/cert-bund-data
        volumes:
          - cert_data_vol:/mnt
    
      dfn-cert-data:
        image: registry.community.greenbone.net/community/dfn-cert-data
        volumes:
          - cert_data_vol:/mnt
        depends_on:
          - cert-bund-data
    
      data-objects:
        image: registry.community.greenbone.net/community/data-objects
        environment:
          FEED_RELEASE: "24.10"
        volumes:
          - data_objects_vol:/mnt
    
      report-formats:
        image: registry.community.greenbone.net/community/report-formats
        environment:
          FEED_RELEASE: "24.10"
        volumes:
          - data_objects_vol:/mnt
        depends_on:
          - data-objects
    
      gpg-data:
        image: registry.community.greenbone.net/community/gpg-data
        volumes:
          - gpg_data_vol:/mnt
    
      redis-server:
        image: registry.community.greenbone.net/community/redis-server
        restart: on-failure
        volumes:
          - redis_socket_vol:/run/redis/
    
      pg-gvm:
        image: registry.community.greenbone.net/community/pg-gvm:stable
        restart: on-failure
        volumes:
          - psql_data_vol:/var/lib/postgresql
          - psql_socket_vol:/var/run/postgresql
    
      gvmd:
        image: registry.community.greenbone.net/community/gvmd:stable
        restart: on-failure
        volumes:
          - gvmd_data_vol:/var/lib/gvm
          - scap_data_vol:/var/lib/gvm/scap-data/
          - cert_data_vol:/var/lib/gvm/cert-data
          - data_objects_vol:/var/lib/gvm/data-objects/gvmd
          - vt_data_vol:/var/lib/openvas/plugins
          - psql_data_vol:/var/lib/postgresql
          - gvmd_socket_vol:/run/gvmd
          - ospd_openvas_socket_vol:/run/ospd
          - psql_socket_vol:/var/run/postgresql
        depends_on:
          pg-gvm:
            condition: service_started
          scap-data:
            condition: service_completed_successfully
          cert-bund-data:
            condition: service_completed_successfully
          dfn-cert-data:
            condition: service_completed_successfully
          data-objects:
            condition: service_completed_successfully
          report-formats:
            condition: service_completed_successfully
    
      gsa:
        image: registry.community.greenbone.net/community/gsa:stable
        restart: on-failure
        ports:
          - 9392:80
        volumes:
          - gvmd_socket_vol:/run/gvmd
        depends_on:
          - gvmd
      # Sets log level of openvas to the set LOG_LEVEL within the env
      # and changes log output to /var/log/openvas instead /var/log/gvm
      # to reduce likelyhood of unwanted log interferences
      configure-openvas:
        image: registry.community.greenbone.net/community/openvas-scanner:stable
        volumes:
          - openvas_data_vol:/mnt
          - openvas_log_data_vol:/var/log/openvas
        command:
          - /bin/sh
          - -c
          - |
            printf "table_driven_lsc = yes\nopenvasd_server = http://openvasd:80\n" > /mnt/openvas.conf
            sed "s/127/128/" /etc/openvas/openvas_log.conf | sed 's/gvm/openvas/' > /mnt/openvas_log.conf
            chmod 644 /mnt/openvas.conf
            chmod 644 /mnt/openvas_log.conf
            touch /var/log/openvas/openvas.log
            chmod 666 /var/log/openvas/openvas.log
    
      # shows logs of openvas
      openvas:
        image: registry.community.greenbone.net/community/openvas-scanner:stable
        restart: on-failure
        volumes:
          - openvas_data_vol:/etc/openvas
          - openvas_log_data_vol:/var/log/openvas
        command:
          - /bin/sh
          - -c
          - |
            cat /etc/openvas/openvas.conf
            tail -f /var/log/openvas/openvas.log
        depends_on:
          configure-openvas:
            condition: service_completed_successfully
    
      openvasd:
        image: registry.community.greenbone.net/community/openvas-scanner:stable
        restart: on-failure
        environment:
          # `service_notus` is set to disable everything but notus,
          # if you want to utilize openvasd directly, remove `OPENVASD_MODE`
          OPENVASD_MODE: service_notus
          GNUPGHOME: /etc/openvas/gnupg
          LISTENING: 0.0.0.0:80
        volumes:
          - openvas_data_vol:/etc/openvas
          - openvas_log_data_vol:/var/log/openvas
          - gpg_data_vol:/etc/openvas/gnupg
          - notus_data_vol:/var/lib/notus
        # enable port forwarding when you want to use the http api from your host machine
        # ports:
        #   - 127.0.0.1:3000:80
        depends_on:
          vulnerability-tests:
            condition: service_completed_successfully
          configure-openvas:
            condition: service_completed_successfully
          gpg-data:
            condition: service_completed_successfully
        networks:
          default:
            aliases:
              - openvasd
    
      ospd-openvas:
        image: registry.community.greenbone.net/community/ospd-openvas:stable
        restart: on-failure
        hostname: ospd-openvas.local
        cap_add:
          - NET_ADMIN # for capturing packages in promiscuous mode
          - NET_RAW # for raw sockets e.g. used for the boreas alive detection
        security_opt:
          - seccomp=unconfined
          - apparmor=unconfined
        command:
          [
            "ospd-openvas",
            "-f",
            "--config",
            "/etc/gvm/ospd-openvas.conf",
            "--notus-feed-dir",
            "/var/lib/notus/advisories",
            "-m",
            "666",
          ]
        volumes:
          - gpg_data_vol:/etc/openvas/gnupg
          - vt_data_vol:/var/lib/openvas/plugins
          - notus_data_vol:/var/lib/notus
          - ospd_openvas_socket_vol:/run/ospd
          - redis_socket_vol:/run/redis/
          - openvas_data_vol:/etc/openvas/
          - openvas_log_data_vol:/var/log/openvas
        depends_on:
          redis-server:
            condition: service_started
          gpg-data:
            condition: service_completed_successfully
          vulnerability-tests:
            condition: service_completed_successfully
          configure-openvas:
            condition: service_completed_successfully
    
      gvm-tools:
        image: registry.community.greenbone.net/community/gvm-tools
        volumes:
          - gvmd_socket_vol:/run/gvmd
          - ospd_openvas_socket_vol:/run/ospd
        depends_on:
          - gvmd
          - ospd-openvas
    
    volumes:
      gpg_data_vol:
      scap_data_vol:
      cert_data_vol:
      data_objects_vol:
      gvmd_data_vol:
      psql_data_vol:
      vt_data_vol:
      notus_data_vol:
      psql_socket_vol:
      gvmd_socket_vol:
      ospd_openvas_socket_vol:
      redis_socket_vol:
      openvas_data_vol:
      openvas_log_data_vol:
  • 自建免费翻译服务:LibreTranslate 安装与运行指南

    对于需要翻译功能但又希望数据掌握在自己手中,或者想避免商业翻译 API 成本的用户而言,开源翻译软件 LibreTranslate 提供了一个绝佳的解决方案。它允许您在自己的服务器上搭建一个功能完善的机器翻译服务,支持多种语言对的机器翻译,且不依赖外部 API,适合在内网或资源受限的环境中使用

    一、创建独立的运行环境 (Conda)

    创建一个名为 libretranslate 的新虚拟环境并激活一个名为 libretranslate 的环境,基于 Python 3.12。

    conda create -n libretranslate python=3.12
    conda activate libretranslate

    二、安装 LibreTranslate

    使用 pip 安装最新版的 LibreTranslate:

    pip install -U libretranslate

    安装完成后,即可通过命令行启动 LibreTranslate 服务。

    三、启动服务

    运行以下命令,启动默认配置的翻译服务:

    libretranslate

    服务启动后,默认会监听本地的 http://127.0.0.1:5000,提供一个 REST API 接口用于文本翻译。

    四、指定加载语言模型

    如果你只需要支持特定语言(比如英文和中文),可以通过 --load-only 参数指定需要加载的模型,从而节省内存和启动时间:

    libretranslate --load-only en,zh

    这将只加载英文(en)和中文(zh)之间的模型。

    五、更新语言模型

    为确保模型为最新版,可以执行以下命令进行更新:

    libretranslate --update-models

    此命令会自动下载并更新本地缓存的翻译模型,确保翻译质量和准确性。

  • Chromedriver 安装全平台指南

    Chromedriver 是用于驱动 Chrome 浏览器的 WebDriver,广泛用于自动化测试与网页数据抓取。本文提供各操作系统下安装 Chromedriver 的步骤。

    一、 各版本下载地址

    你可以在该页面查找与你本地 Chrome 浏览器版本对应的 chromedriver

    https://googlechromelabs.github.io/chrome-for-testing/#stable

    macOS安装

    # 下载Chromedriver
    curl -O https://storage.googleapis.com/chrome-for-testing-public/136.0.7103.114/mac-x64/chromedriver-mac-x64.zip
    
    # 解压
    unzip chromedriver-mac-x64.zip
    
    # 安装到系统路径
    sudo cp chromedriver /usr/local/bin/
    
    # 设置可执行权限
    sudo chmod +x /usr/local/bin/chromedriver
    
    # 验证安装是否成功
    chromedriver --version

    Windows x64安装

    # 下载 Chromedriver:
    https://storage.googleapis.com/chrome-for-testing-public/136.0.7103.94/win64/chromedriver-win64.zip
    
    # 解压 chromedriver-win64.zip 至任意目录,例如:
    C:\tools\chromedriver
    
    # 添加环境变量:
    将 chromedriver.exe 所在目录添加至系统环境变量 Path。
    
    操作路径:
    此电脑 → 属性 → 高级系统设置 → 环境变量 → 编辑 Path
    
    # 验证是否安装成功:
    打开命令提示符(Win + R,输入 cmd)后执行:
    
    chromedriver --version

    Linux 安装

    # 下载Chromedriver
    
    wget https://storage.googleapis.com/chrome-for-testing-public/136.0.7103.94/linux64/chromedriver-linux64.zip
    
    # 解压
    unzip chromedriver-linux64.zip
    
    # 安装到系统路径
    sudo cp chromedriver /usr/local/bin/
    
    # 设置可执行权限
    sudo chmod +x /usr/local/bin/chromedriver
    
    # 验证安装是否成功
    chromedriver --version
  • 使用 Docker 部署和运行 Mobile Security Framework (MobSF)

    Mobile Security Framework (MobSF) 是一款开源、自动化的移动应用安全分析平台,全面支持 Android、iOS 和 Windows Mobile 应用的安全研究。它通过强大的静态和动态分析能力,助力移动应用安全、渗透测试、恶意软件和隐私分析等多种场景。MobSF 能够解析 APK、IPA、APPX 及源代码,并在动态分析中提供交互式测试、运行时数据和网络流量监控。其 REST API 和 CLI 工具的集成性,使其能无缝融入 DevSecOps 和 CI/CD 流程,有效增强安全工作流。

    • 多平台支持: 支持分析 Android (APK)、iOS (IPA) 和 Windows Mobile (APPX) 应用,并能解析其源代码。
    • 静态分析: 深入分析应用的代码、配置文件和资源文件,发现潜在的安全漏洞和敏感信息泄露。
    • 动态分析: 提供交互式测试环境,允许在运行时监控应用行为、捕获网络流量和分析运行时数据。
    • 集成性: 提供 REST API 和命令行界面 (CLI) 工具,方便集成到 DevSecOps 和持续集成/持续交付 (CI/CD) 流程中,提升安全工作流的效率。

    1. 拉取 MobSF Docker 镜像

    docker pull opensecurity/mobile-security-framework-mobsf:latest

    2. 运行 MobSF Docker 容器

    docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

    3. 访问 MobSF Web 界面

    启动完成后在你的 Web 浏览器中访问 MobSF 的 Web 界面。在地址栏中输入:

    http://localhost:8000

    默认的登录凭据是:

    • 用户名: mobsf
    • 密码: mobsf

    4. 使用 MobSF

    登录成功后,你就可以开始使用 MobSF 进行移动应用的安全分析了:

    1. 上传应用: 在 MobSF 的 Web 界面上,点击 “Upload & Analyze” 按钮。
    2. 选择文件: 选择你要分析的 Android (APK)、iOS (IPA) 或 Windows Mobile (APPX) 应用程序文件。
    3. 开始分析: 点击 “Submit” 或类似的按钮开始上传和分析。
  • 使用 powermetrics 查看 macOS 风扇转速和 CPU 温度

    powermetrics 是一个隐藏在 macOS 系统中的强大工具,通过简单的命令行操作,我们便可以实时监控 MacBook 的风扇转速和 CPU 温度。这对于诊断散热问题、了解系统负载以及优化工作流程都非常有帮助。

    1. 查看风扇转速
      实时查看 MacBook 的风扇转速,我们可以使用以下命令:
    sudo powermetrics --samplers smc | grep -i "Fan"
    1. 查看 CPU 温度
      实时查看 MacBook 的CPU温度,我们可以使用以下命令:
    sudo powermetrics --samplers smc | grep -i "CPU die temperature"
  • Redmi 5 Plus 刷入 PixelExperience 让旧手机焕发新生

    在一次无意间整理抽屉的过程中,我翻出了多年前购买的 Redmi 5 Plus(代号 vince)。虽然这台手机早已被更换下岗,但它的硬件状况依旧良好,电池尚可,于是我决定尝试通过刷机,让这部“老伙计”重获新生。经过资料查阅和准备,我选择了简洁稳定的 PixelExperience 系统作为目标 ROM,并借助 TWRP Recovery 和 ADB Sideload 工具完成了整个刷机过程。

    一、准备工作

    在开始刷机之前,请确保您已完成以下准备工作:

    1. 解锁 Bootloader: 您的 Redmi Note 5 必须已经解锁 Bootloader。(当年购买完我就解锁了)
    2. 安装 Android SDK Platform-Tools: 该工具包包含 adbfastboot 命令,用于与您的手机进行通信。您可以从以下链接下载: https://developer.android.com/tools/releases/platform-tools?hl=zh-cn
    3. 下载 PixelExperience ROM: 下载适用于 Redmi Note 5 (vince) 的 PixelExperience ROM。您可以从官方网站下载: https://get.pixelexperience.org/vince
    4. 下载并安装 TWRP Recovery: TWRP Recovery 是一个自定义恢复环境,用于刷入 ROM 和其他文件。您可以从 TWRP 官方网站下载适用于 vince 的版本: https://twrp.me

    二、刷入 TWRP Recovery

    1. 进入 Fastboot 模式: 关闭您的手机,然后同时按住 音量下键电源键,直到屏幕上出现 Fastboot 字样。
    2. 连接电脑并检查连接: 使用 USB 数据线将您的手机连接到电脑,并打开电脑上的终端(命令提示符或 PowerShell)。输入以下命令并按回车键,检查手机是否成功连接:
    fastboot devices

    如果您的手机已成功连接,您将看到设备的序列号。

    1. 刷入 TWRP Recovery: 在终端中输入以下命令,将下载的 TWRP Recovery 镜像文件刷入您的手机。请将 twrp-3.x.x-x-vince.img 替换为您下载的实际文件名:
    fastboot flash recovery twrp-3.x.x-x-vince.img
    1. 临时启动进入 TWRP: 刷入完成后,输入以下命令临时启动进入 TWRP Recovery:
    fastboot boot twrp-3.x.x-x-vince.img

    您的手机将会重启并进入 TWRP Recovery 界面。

    三、清除分区数据

    在 TWRP Recovery 界面中,按照以下步骤操作:

    1. 格式化 Data 分区: 选择 “Wipe”(清除)选项,然后选择 “Format Data”(格式化 Data 分区)。在提示框中输入 yes 并确认,以格式化 Data 分区。
    2. 重启进入 Recovery: 格式化完成后,选择 “Reboot”(重启),然后选择 “Recovery”(恢复),使手机重新启动进入 TWRP Recovery。
    3. 高级清除: 再次进入 “Wipe”(清除)选项,然后选择 “Advanced Wipe”(高级清除)。勾选以下分区: 滑动屏幕底部的滑块以确认清除操作。
    • Dalvik / ART Cache
    • System
    • Data
    • Cache

    四、刷入 PixelExperience ROM

    使用 ADB Sideload 方式刷入:

    1. 启动 ADB Sideload: 在 TWRP Recovery 界面中,选择 “Advanced”(高级)选项,然后选择 “ADB Sideload”。滑动屏幕底部的滑块以启动 ADB Sideload 模式。
    2. 执行 ADB Sideload 命令: 在您的电脑终端中,导航到您下载的 PixelExperience ROM 文件所在的目录,并输入以下命令。请将 PixelExperience_vince-xxx.zip 替换为您下载的实际文件名:
     adb sideload PixelExperience_vince-xxx.zip

    等待刷机过程完成。您可以在终端和手机屏幕上看到刷机进度。

    五、重启系统

    当 ADB Sideload 完成后,返回 TWRP Recovery 主界面,选择 “Reboot”(重启),然后选择 “System”(系统)。您的手机将会重启并启动进入 PixelExperience 系统。