A comprehensive threat hunting laboratory environment that integrates Jenkins CI/CD, Streamlit analytics dashboard, Jupyter Notebook for data exploration, and MISP threat intelligence platform using Docker containers.
The platform consists of four main services running in Docker containers:
- Jenkins (Port 8080): Executes automated threat hunting jobs
- Streamlit App (Port 8081): Provides interactive data analysis interface
- Jupyter Notebook (Port 8082): For exploratory data analysis and scripting
- MISP (Ports 80/443): Manages threat intelligence data
- Docker Engine/ Docker Compose
- Git (for submodules)
- Make
- Minimum 4GB RAM
- Minimum 15GB free disk space
-
Clone the repository with submodules:
git clone --recurse-submodules https://github.com/fukusuket/THuntLab.git cd THuntLab -
Build and start all services:
sudo make dev
-
Access the services:
- Jenkins: http://localhost:8080
- Streamlit Dashboard: http://localhost:8081
- Jupyter Notebook: http://localhost:8082
- MISP Platform: https://localhost
- (email: admin@admin.test / password: admin)
After quick start, you can access the following dashboards:
Use the included Makefile for easy service management:
make build- Build all servicesmake up- Start all servicesmake down- Stop all servicesmake restart- Restart all servicesmake logs- Show logs for all servicesmake status- Check service statusmake clean- Remove all services and volumesmake dev- Build and start all services
The ./shared directory serves as a common workspace:
hunt.py: Example threat hunting script executed by Jenkinsthreatfeed-collector/ioc_collect.py: Example script for MISP interactionstreamlit.py: Streamlit dashboard application- Additional scripts and data files can be placed here for cross-service access
- ThreatfeedCollector
- Threat research feeds, filters noise, creates MISP events, and generates CSV statistics.
Warning: This configuration is designed for laboratory and educational purposes. It includes several security settings that are NOT suitable for production environments:
- Jenkins authentication is disabled
- CSRF protection is disabled
- Anonymous users have full administrative access
For production use, implement proper authentication, authorization, and security controls.
- macOS M3
- Windows11 (WSL2 with Ubuntu 24.04.02 LTS)
- Place Python scripts in the
./shareddirectory - Create new Jenkins jobs to execute them
- Use the Streamlit dashboard to visualize results
Modify ./shared/streamlit.py to create custom visualizations and analytics interfaces for your threat hunting data.
Configure MISP to share threat intelligence data with your hunting scripts and dashboard through the shared volume or API connections.
- Check container logs:
make logs - Verify port availability (8080, 8081, 8082, 80, 443)
- Ensure Docker daemon is running
Contributions are welcome!
- Fork this repo
- Create a branch:
git checkout -b your-feature - Make changes and test them
- Submit a pull request
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). See LICENSE for full terms, including requirements to provide source when running modified versions as network services.
This tool is made possible thanks to the maintainers and contributors of these outstanding open-source projects.




