Xenonas/Raven

GitHub: Xenonas/Raven

Stars: 0 | Forks: 0

# ICS Honeypot Monitoring Dashboard A full-stack lab dashboard for monitoring an ICS honeypot, parsing Conpot activity, importing Suricata EVE alerts, managing local IDS rules, and triaging alerts from a browser UI. The project is intentionally built as an operator-style tool rather than a static report: it can poll Docker logs, generate controlled lab traffic, reload the Suricata sensor, add/remove local rules, and investigate alerts with raw EVE context. ## Demo ![ICS Honeypot dashboard walkthrough](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c6b950e695235413.gif) ## What It Does - Parses Conpot and synthetic honeypot logs into structured events. - Recognizes common OT protocols including HTTP, Modbus, S7comm, DNP3, ICCP/TASE.2, and SNMP. - Maps events to services, severity, risk score, and MITRE ATT&CK for ICS-style categories. - Imports Suricata `eve.json` alerts into Django models with stable de-duplication. - Provides alert triage: status, notes, related alerts, raw EVE JSON, and HTTP flow details. - Lets admins add/remove local Suricata rules from the UI. - Controls the Suricata Docker sensor: status check, restart, rule reload, and test alert generation. - Includes a lab-safe attacker simulator for HTTP, Modbus, DNP3, and ICCP-style localhost probes. ## Architecture React + Vite UI | v Django API + SQLite | +--> OT protocol-aware log parser +--> Suricata EVE parser +--> Docker / sensor controls | v Dockerized Conpot + Dockerized Suricata The backend is Django because the project benefits from a real ORM, admin-friendly authentication, migrations, and explicit API endpoints. The frontend is React/Vite because the dashboard has multiple interactive states: filters, pagination, collapsible panels, alert triage, and a side investigation drawer. ## Main Features - Monitor dashboard with service, severity, source IP, MITRE, and time-window filters. - OT protocol compatibility for Modbus, S7comm, DNP3, ICCP/TASE.2, SNMP, and HTTP evidence. - Collapsible dashboard sections for a cleaner operational screen. - Suricata alert table with pagination and time filters. - Alert investigation drawer with triage notes, related alerts, HTTP fields, and raw EVE. - Local Suricata rule builder and remover. - Sensor controls for Dockerized Suricata. - CTI enrichment hooks for public source IPs through VirusTotal and AbuseIPDB clients. ## Protocol Scope Conpot provides the live honeypot surface for the lab. The dashboard adds protocol-aware parsing, filtering, synthetic event generation, simulator probes, and Suricata target labeling for DNP3 and ICCP/TASE.2. Full DNP3 or ICCP server emulation would require adding dedicated honeypot services, but the data model and UI are ready to classify and triage those protocols. ## Run Locally Install Python and frontend dependencies: python3 -m venv venv venv/bin/pip install -r requirements.txt cd frontend npm install Create a local `.env` file. Do not commit real API keys. VITE_API_BASE_URL="http://127.0.0.1:8001" SURICATA_EVE_PATH="/absolute/path/to/ICS Honeypot/suricata/logs/eve.json" SURICATA_INTERFACE="docker0" VT_API_KEY="" ABUSE_API_KEY="" Start the backend: cd backend ../venv/bin/python manage.py migrate ../venv/bin/python manage.py runserver 127.0.0.1:8001 Start the frontend: cd frontend npm run dev Start Suricata: docker compose -f docker-compose.suricata.yml up --build -d suricata Optional: run Conpot through the compose profile if you do not already have a Conpot container publishing the lab ports. docker compose --profile conpot -f docker-compose.suricata.yml up --build -d ## Notes - This is a local lab tool. The attacker simulator intentionally restricts targets to localhost/private lab use. - The included Suricata rules use a local SID range to avoid collisions. - The project uses SQLite for development simplicity; the model boundaries are explicit enough to move to PostgreSQL if needed. - See `backend/README.md`, `frontend/README.md`, and `suricata/README.md` for component-specific details.