# Docker Image Nhỏ Nhất Thế Giới - Công Cụ Bruteforce Mật Khẩu Một Docker image siêu nhỏ, được nén tối đa chứa công cụ bruteforce mật khẩu có thể crack nhiều loại hash khác nhau bao gồm yescrypt, MD5, SHA256 và SHA512. ## 🚀 Tính Năng - **Docker image siêu nhỏ** (~46KB đã nén) - **Hỗ trợ nhiều loại hash**: yescrypt, MD5, SHA256, SHA512 - **Binary tĩnh**: Không có dependency bên ngoài - **Nén UPX**: Tối ưu kích thước tối đa - **Tiến trình thời gian thực**: Hiển thị số lần thử và thống kê - **Logging chi tiết**: Output đầy đủ để debug ## 📊 So Sánh Kích Thước Image | Image | Kích Thước | Nén | |-------|------------|-----| | Công cụ này (tối ưu) | 42.5KB | UPX LZMA ultra-brute | | Công cụ này (gốc) | 45.7KB | UPX ultra-brute | | Alpine chuẩn | ~5MB | Không | | Ubuntu chuẩn | ~70MB | Không | ## 🛠️ Chi Tiết Kỹ Thuật ### Thuật Toán Hash Được Hỗ Trợ - **yescrypt** (`$y$`) - Mặc định Linux hiện đại - **MD5** (`$1$`) - Hỗ trợ legacy - **SHA256** (`$5$`) - Dựa trên SHA-256 - **SHA512** (`$6$`) - Dựa trên SHA-512 ### Quy Trình Build 1. **Multi-stage build** sử dụng Alpine Linux 2. **Biên dịch tĩnh** với musl-gcc và các cờ tối ưu tích cực 3. **Strip binary nâng cao** để loại bỏ debug symbols và các section không sử dụng 4. **Nén UPX LZMA** với chế độ ultra-brute để nén tối đa 5. **Base image scratch** để giảm kích thước tối đa ## 🏗️ Build ```bash # Build image tối ưu (khuyến nghị) docker build -t bruteforce-optimized -f brute/source/Dockerfile.optimized brute/source # Build image gốc docker build -t bruteforce-test -f brute/source/Dockerfile brute/source # Kiểm tra kích thước image docker images bruteforce-optimized bruteforce-test ``` ## 🚀 Sử Dụng ### Sử Dụng Cơ Bản ```bash # Crack mật khẩu cho user cụ thể docker run --rm \ --volume "/etc:/etc" \ --volume "$(pwd)/brute/source/wordlist2.txt:/wordlist2.txt" \ bruteforce-optimized:latest \ root /wordlist2.txt ``` ### Chạy trực tiếp từ Docker Hub ```bash # Kéo và chạy image công khai docker run --rm \ --volume "/etc:/etc" \ --volume "$(pwd)/brute/source/wordlist2.txt:/wordlist2.txt" \ tuankiet2s/bruteforce-container:latest \ root /wordlist2.txt ``` ### Ví Dụ Lệnh #### Crack mật khẩu root ```bash # Sử dụng image tối ưu (khuyến nghị) docker run --rm \ --volume "/etc:/etc" \ --volume "$(pwd)/brute/source/wordlist2.txt:/wordlist2.txt" \ bruteforce-optimized:latest \ root /wordlist2.txt # Sử dụng image gốc docker run --rm \ --volume "/etc:/etc" \ --volume "$(pwd)/brute/source/wordlist2.txt:/wordlist2.txt" \ bruteforce-test:latest \ root /wordlist2.txt ``` #### Crack mật khẩu user cụ thể ```bash docker run --rm \ --volume "/etc:/etc" \ --volume "$(pwd)/custom_wordlist.txt:/wordlist.txt" \ --user root \ bruteforce-test:latest \ alice /wordlist.txt ``` ### Ví Dụ Output ``` Target user: root Hash type: yescrypt Full hash: $y$j9T$dummy.salt.hash.example$dummy.hash.value.here Starting bruteforce... Tried 1000 passwords... Found password: [password_found] Total passwords tried: 102 Password successfully cracked! ``` ## 📁 Cấu Trúc Dự Án ``` . ├── brute/ │ └── source/ │ ├── Dockerfile # Cấu hình multi-stage build │ ├── bruteforce.c # Implementation bruteforce chính │ ├── wordlist.txt # Wordlist lớn (133MB) │ ├── wordlist2.txt # Wordlist nhỏ (801B) │ └── yescrypt/ # Implementation tham chiếu yescrypt │ ├── yescrypt-ref.c │ ├── yescrypt-common.c │ ├── sha256.c │ ├── insecure_memzero.c │ └── các file *.h └── README.md ``` ## 🔧 Phát Triển ### Yêu Cầu - Docker - Hệ thống Linux với quyền truy cập /etc/shadow - Quyền root (để truy cập file shadow) ### Cờ Biên Dịch #### Phiên Bản Tối Ưu (Khuyến Nghị) ```bash gcc -static -Os -s \ -fomit-frame-pointer \ -fdata-sections \ -ffunction-sections \ -fno-unwind-tables \ -fno-asynchronous-unwind-tables \ -Wl,--gc-sections \ -Wl,--strip-all \ -o bruteforce \ bruteforce.c \ yescrypt-ref.c \ yescrypt-common.c \ sha256.c \ insecure_memzero.c \ && strip --strip-all \ --remove-section=.comment \ --remove-section=.note.* \ --remove-section=.eh_frame \ bruteforce \ && upx --lzma --ultra-brute bruteforce ``` #### Phiên Bản Gốc ```bash gcc -static -Os -s -o bruteforce \ bruteforce.c \ yescrypt-ref.c \ yescrypt-common.c \ sha256.c \ insecure_memzero.c \ && strip --strip-all --remove-section=.comment bruteforce \ && upx --ultra-brute bruteforce ``` ### Kỹ Thuật Tối Ưu - **Link tĩnh**: Không có dependency bên ngoài - **Tối ưu kích thước tích cực**: Cờ `-Os` với các tối ưu bổ sung - **Strip symbols nâng cao**: Loại bỏ debug symbols và các section không sử dụng - **Nén UPX LZMA**: Chế độ ultra-brute với thuật toán LZMA để nén tối đa - **Loại bỏ code chết**: `--gc-sections` để loại bỏ các hàm không sử dụng - **Bỏ frame pointer**: `-fomit-frame-pointer` để giảm kích thước binary - **Base scratch**: Không có layer OS trong image cuối ## 🛡️ Cân Nhắc Bảo Mật ⚠️ **CẢNH BÁO**: Công cụ này chỉ dành cho mục đích giáo dục và kiểm thử được ủy quyền. - Chỉ sử dụng trên hệ thống bạn sở hữu hoặc có quyền kiểm thử rõ ràng - Tôn trọng luật pháp và quy định địa phương về việc crack mật khẩu - Sử dụng có trách nhiệm và đạo đức - Cân nhắc hệ quả pháp lý trước khi sử dụng ## 📈 Hiệu Suất - **Tốc độ**: Tối ưu cho kích thước hơn tốc độ - **Bộ nhớ**: Footprint bộ nhớ tối thiểu - **CPU**: Single-threaded, sử dụng nhiều CPU - **I/O**: Đọc file hiệu quả với syscall tối thiểu ## 🐛 Xử Lý Sự Cố ### Vấn Đề Thường Gặp 1. **Permission denied khi truy cập /etc/shadow** ```bash # Chạy với user root --user root ``` 2. **Không tìm thấy wordlist** ```bash # Đảm bảo mapping đường dẫn đúng --volume "$(pwd)/wordlist.txt:/wordlist.txt" ``` 3. **Không tìm thấy user trong file shadow** - Xác minh username tồn tại - Kiểm tra quyền file shadow ### Chế Độ Debug Công cụ cung cấp output chi tiết bao gồm: - Thông tin user mục tiêu - Loại hash và format - Cập nhật tiến trình mỗi 1000 lần thử - Thống kê cuối cùng ## 🤝 Đóng Góp 1. Fork repository 2. Tạo feature branch 3. Thực hiện thay đổi 4. Test kỹ lưỡng 5. Submit pull request ## 📄 Giấy Phép Dự án này dành cho mục đích giáo dục. Sử dụng có trách nhiệm và tuân thủ luật pháp hiện hành. ## 👨‍💻 Tác Giả **@tuankiet2s** ## 🙏 Lời Cảm Ơn - Implementation tham chiếu yescrypt - Công cụ nén UPX - Alpine Linux cho base image tối thiểu - Docker multi-stage builds --- **Nhớ**: Với sức mạnh lớn đi kèm trách nhiệm lớn. Sử dụng công cụ này một cách đạo đức và hợp pháp.