206 lines
5.8 KiB
Markdown
206 lines
5.8 KiB
Markdown
# 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 | ~46KB | 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
|
|
3. **Strip binary** để loại bỏ debug symbols
|
|
4. **Nén UPX** với chế độ ultra-brute
|
|
5. **Base image scratch** để giảm kích thước tối đa
|
|
|
|
## 🏗️ Build
|
|
|
|
```bash
|
|
# Build image
|
|
docker build -t bruteforce-test -f brute/source/Dockerfile brute/source
|
|
|
|
# Kiểm tra kích thước image
|
|
docker images 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" \
|
|
--user root \
|
|
bruteforce-test:latest \
|
|
<username> <đường_dẫn_wordlist>
|
|
```
|
|
|
|
### Ví Dụ Lệnh
|
|
|
|
#### Crack mật khẩu root
|
|
```bash
|
|
docker run --rm \
|
|
--volume "/etc:/etc" \
|
|
--volume "$(pwd)/brute/source/wordlist2.txt:/wordlist2.txt" \
|
|
--user root \
|
|
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
|
|
```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**: Cờ `-Os` để giảm kích thước
|
|
- **Strip symbols**: Loại bỏ debug symbols
|
|
- **Nén UPX**: Chế độ ultra-brute để nén tối đa
|
|
- **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. |