hyperpolymath/safe-brute-force

GitHub: hyperpolymath/safe-brute-force

一款基于 Erlang/OTP 的受控暴力破解框架,将无序爆破转为可暂停、可审计的授权安全测试流程。

Stars: 1 | Forks: 0

# 🔒 SafeBruteForce image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] // SPDX-License-Identifier: PMPL-1.0-or-later // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell [![RSR Compliance](https://img.shields.io/badge/RSR-Bronze-cd7f32)](RSR_COMPLIANCE.md) [![TPCF Perimeter](https://img.shields.io/badge/TPCF-P3%20Community-green)](MAINTAINERS.md) [![Erlang/OTP]()](https://www.erlang.org/) [![LFE]()](https://lfe.io/) [![CI](https://img.shields.io/badge/CI-GitLab%20%7C%20GitHub-blue)](.github/workflows/ci.yml) [![Security](https://img.shields.io/badge/security.txt-RFC%209116-informational)](.well-known/security.txt) 一个*受控的、道德的暴力破解工具*,专为授权的安全测试和渗透测试而设计。与传统暴力破解工具无差别地淹没系统不同,SafeBruteForce优先考虑安全性、用户控制和系统保护。 ``` ███████╗ █████╗ ███████╗███████╗ ██████╗ ███████╗ ██╔════╝██╔══██╗██╔════╝██╔════╝ ██╔══██╗██╔════╝ ███████╗███████║█████╗ █████╗ ██████╔╝█████╗ ╚════██║██╔══██║██╔══╝ ██╔══╝ ██╔══██╗██╔══╝ ███████║██║ ██║██║ ███████╗ ██████╔╝██║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ SafeBruteForce v0.1.0 - Controlled Ethical Testing ⚠️ For Authorized Security Testing Only ⚠️ ``` ## 🔍 为什么要使用 SafeBruteForce? 传统暴力破解工具是*鲁莽的*: - ❌ 无限制地向系统发送请求 - ❌ 导致账户锁定和服务中断 - ❌ 生成数百万行冗长输出 - ❌ 没有优雅的暂停或恢复能力 - ❌ 难以跟踪进度 SafeBruteForce*重新定义了暴力破解*,将其作为受控、可暂停的流程: - ✅ *自动安全暂停*:每25次尝试后自动暂停 - ✅ *用户确认*:继续前需要用户确认 - ✅ *干净的过滤输出*:只显示重要的内容 - ✅ *检查点/恢复*:支持长时间操作 - ✅ *速率限制*:保护系统资源 - ✅ *进度跟踪*:包含ETA计算 - ✅ *并发架构*:基于Erlang/OTP ## 📦 功能 ### 🛑 安全机制 - *自动暂停*:每25次尝试停止并要求用户确认 - *手动控制*:随时暂停、恢复和检查状态 - *速率限制*:令牌桶算法控制请求速率 - *授权检查*:CLI提示进行明确授权 - *审计日志*:全面的活动日志记录 ### 🔧 模式生成 - *词表*:从文件加载并支持可选变异(Leet语、资本化) - *字符集组合*:生成字符集的所有排列 - *顺序模式*:数字范围、日期、常见格式 - *自定义生成器*:实现自己的模式策略 - *内置配方*:PIN码、常见密码、十六进制颜色 ### 🎯 目标支持 - *HTTP/HTTPS*:使用自定义头部和主体格式测试Web登录表单 - *自定义函数*:集成任何验证逻辑 - *模拟目标*:无需外部依赖即可测试功能 - *可扩展*:轻松添加新目标类型(SSH、FTP等) ### 📊 结果管理 - *过滤输出*:仅查看成功、失败或全部结果 - *统计面板*:尝试次数、成功率、耗时、每秒速率 - *导出能力*:将结果保存到文件进行分析 - *模式跟踪*:自动记录成功模式 ### 🔄 操作功能 - *检查点*:自动保存和手动创建检查点 - *恢复能力*:从检查点恢复以继续中断的会话 - *进度跟踪*:带ETA的实时进度条 - *异步执行*:在后台运行操作 - *监督树*:OTP容错机制确保可靠性 ## 🚀 快速开始 ### 先决条件 ``` = Erlang/OTP 26 or higher = Ubuntu/Debian: sudo apt-get install erlang = macOS: brew install erlang = Rebar3 (build tool) curl -O https://s3.amazonaws.com/rebar3/rebar3 chmod +x rebar3 sudo mv rebar3 /usr/local/bin/ ``` ### 安装 ``` = Clone the repository git clone https://github.com/Hyperpolymath/safe-brute-force.git cd safe-brute-force = Compile rebar3 compile = Run tests rebar3 lfe test ``` ### 快速入门 #### 交互式REPL(推荐) ``` rebar3 lfe repl ``` ``` ;; Start the application > (sbf:start) ;; Test with a wordlist and custom function > (sbf:test_wordlist "priv/wordlists/test-wordlist.txt" (lambda (p) (== p "secret"))) ;; Test HTTP login endpoint (replace with your authorized test system) > (sbf:test_http "http://localhost:8080/login" "admin" "priv/wordlists/common-passwords.txt") ;; Test all 4-digit PIN codes > (sbf:test_pins (lambda (pin) (validate-pin pin))) ;; Pause at any time > (sbf:pause) ;; Check status > (sbf:status) ;; Resume > (sbf:resume) ;; Get detailed statistics > (sbf:stats) ``` #### 命令行界面 ``` = Make CLI executable chmod +x sbf_cli = Test with wordlist ./sbf_cli wordlist priv/wordlists/common-passwords.txt \ http://localhost/login admin = Test PIN codes ./sbf_cli pins http://localhost/api/verify = Generate charset combinations ./sbf_cli charset "abc123" 4 6 http://localhost ``` ## 📖 使用示例 ### 示例1:HTTP登录测试 ``` (let ((pattern-config (list (tuple 'type 'wordlist) (tuple 'filename "passwords.txt") (tuple 'mutations 'standard))) ; Apply mutations (target-config (list (tuple 'type 'http) (tuple 'url "http://testsite.local/login") (tuple 'method 'post) (tuple 'username "admin") (tuple 'username_field "user") (tuple 'password_field "pass") (tuple 'success_pattern "Welcome") (tuple 'failure_pattern "Invalid")))) (sbf:run pattern-config target-config)) ``` ### 示例2:PIN码测试 ``` ;; Test all 4-digit PINs with custom validator (let ((validator (lambda (pin) ;; Your PIN validation logic (check-pin-against-system pin))) (pattern-config (list (tuple 'type 'charset) (tuple 'charset "0123456789") (tuple 'min_length 4) (tuple 'max_length 4))) (target-config (list (tuple 'type 'function) (tuple 'function validator)))) (sbf:run pattern-config target-config)) ``` ### 示例3:自定义模式生成 ``` ;; Company-specific password patterns (let ((pattern-generator (lambda () (let ((company "AcmeCorp") (years (lists:seq 2020 2025))) (lists:flatmap (lambda (year) (list (++ company (integer_to_list year)) (++ company "!" (integer_to_list year)))) years)))) (pattern-config (list (tuple 'type 'custom) (tuple 'function pattern-generator))) (target-config (list (tuple 'type 'http) (tuple 'url "http://testsite.local/login") (tuple 'username "testuser")))) (sbf:run pattern-config target-config)) ``` ### 示例4:检查点管理 ``` ;; Start a long-running operation > (sbf:run_async pattern-config target-config) #Pid<0.234.0> ;; Save checkpoint > (sbf:save_checkpoint 'my_session) {ok, #{session => my_session, checkpoint_id => "my_session_1705334400_1234"}} ;; ... Later, restore from checkpoint ... > (sbf:list_checkpoints) [#{session => my_session, timestamp => 1705334400, ...}] > (sbf:load_checkpoint "my_session_1705334400_1234") {ok, #{state => ...}} ``` ## 🏗️ 架构 SafeBruteForce基于*Erlang/OTP*原则构建,以实现健壮性和并发性: ``` ┌─────────────────────────────────────────────────┐ │ sbf_app (Application) │ └───────────────────┬─────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ sbf_sup (Supervisor) │ │ ┌───────────────────┬──────────────────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ sbf_state sbf_executor (future) │ │ (gen_statem) (gen_server) │ └─────────────────────────────────────────────────┘ │ │ ▼ ▼ State Machine Worker Pool - running - Pattern execution - paused - Rate limiting - waiting - Result tracking ``` ### 核心模块 - *sbf.lfe*:高级API和主要入口点 - *sbf_state.lfe*:状态机,用于暂停/恢复逻辑(gen_statem) - *sbf_executor.lfe*:执行引擎,包含工作池(gen_server) - *sbf_patterns.lfe*:模式生成策略 - *sbf_output.lfe*:结果过滤和格式化 - *sbf_checkpoint.lfe*:保存/恢复功能 - *sbf_logger.lfe*:结构化日志记录 - *sbf_progress.lfe*:进度跟踪和ETA - *sbf_rate_limiter.lfe*:令牌桶速率限制 ## ⚖️ 法律和道德使用 ### ✅ 授权使用场景 - 带有*书面授权*的渗透测试 - CTF(夺旗赛)竞赛 - 对*自己拥有的系统*进行安全研究 - 控制环境中的教育演示 - 组织内部的密码策略验证 - 适当范围的红色团队演练 ### ❌ 禁止使用场景 - 未经授权访问第三方系统 - 凭据填充或账户接管攻击 - 未经明确许可测试系统 - 恶意绕过安全控制 - 分布式大规模攻击 - 任何非法或不道德的活动 ### 📋 法律合规 请注意适用管辖区域的法律: - *CFAA(美国)*:计算机欺诈和滥用法案 - *GDPR(欧盟)*:数据保护条例 - *DMCA(美国)*:反规避条款 - *本地法律*:因国家和州而异 *⚠️ 重要*:违反这些法律可能导致刑事起诉和民事责任。始终在测试任何系统之前获得书面授权。 ## 📚 文档 - *[使用指南](docs/USAGE.md)*:全面的使用说明 - *[安全最佳实践](docs/SECURITY.md)*:法律和道德指南 - *[贡献指南](docs/CONTRIBUTING.md)*:如何贡献 - *[CLAUDE.md](CLAUDE.md)*:AI助手开发指导 ## 🧪 测试 ``` = Run all tests rebar3 lfe test = Run with coverage rebar3 lfe test --cover = Run specific test module rebar3 lfe test --module=sbf_patterns_tests ``` ## 🗺️ 路线图 ### v0.2.0(计划中) - [ ] SSH暴力破解模块 - [ ] FTP支持 - [ ] 数据库连接测试 - [ ] 分布式工作支持 - [ ] Web UI仪表板 - [ ] 增强报告(PDF、HTML) ### v0.3.0(未来) - [ ] 机器学习模式生成 - [ ] 云集成(AWS、GCP、Azure) - [ ] SIEM集成 - [ ] 自定义插件系统 - [ ] 性能优化 我们欢迎贡献!请参考[CONTRIBUTING.md](docs/CONTRIBUTING.md)获取指南。 ## 📜 许可 Palimpsest-MPL-1.0许可 - 详见[LICENSE](LICENSE) *注意*:虽然软件是开源的,但用户有责任确保其使用符合所有适用的法律法规。 ## ⚠️ 免责声明 SafeBruteForce是一个强大的安全测试工具。请负责任且道德地使用。 不当使用可能导致: - 法律后果(刑事或民事) - 账户暂停和锁定 - 服务中断 - 道德违规 - 损害职业声誉 *作者和贡献者不对该软件的滥用负责。* ## 🛡️ 安全第一 该项目坚持*“安全第一”*原则: 1. ✅ 自动暂停机制(无法完全禁用) 2. ✅ CLI中的授权验证 3. ✅ 默认速率限制 4. ✅ 全面的审计日志记录 5. ✅ 清晰的用户代理标识 6. ✅ 负责任披露指南 7. ✅ 道德使用文档 ## 支持 - *文档*:查看`docs/`目录 - *问题*:[GitHub Issues](https://github.com/Hyperpolymath/safe-brute-force/issues) - *讨论*:[GitHub Discussions](https://github.com/Hyperpolymath/safe-brute-force/discussions) - *安全*:请参考[SECURITY.md](docs/SECURITY.md)以获取负责任披露信息 ## 🙏 感谢 - *LFE社区*:感谢出色的Lisp Flavored Erlang - *Erlang/OTP*:感谢健壮的并发平台 - *安全研究人员*:感谢道德黑客实践 - *贡献者*:所有帮助改进此工具的人 ## 许可 Palimpsest License (PMPL-1.0) 2025 Jonathan D.A. Jewell
标签:Erlang, GitHub Actions, GitLab CI, LFE, OTP, PoC, RFC 9116, RSR合规, security.txt, TPCF社区, 伦理黑客, 反取证, 受控暴力, 合规测试, 安全测试, 安全评估, 开源安全工具, 开源框架, 持续集成, 授权测试, 攻击性安全, 暴力破解, 系统独立性, 自动笔记, 许可PMPL-1.0, 边界控制, 逆向工程平台, 防护测试