SIEM Big Data Visualization [02]: SG National Threats Summarization
Dashboard for Summarizing SG National Cyber Threats in Critical Infrastructure
In this article, I will introduce the National Threats Events Summarization Dashboard (angular plugin) developed for SIEM big data analytics.
Program Design Purpose:
The purpose of this program is to develop a comprehensive Angular web dashboard plugin for a Security Information and Event Management (SIEM) system, focusing on the effective monitoring, categorization, summarization, and visualization of cyber threat events targeting Singapore's critical infrastructure. This dashboard will provide researchers and security managers with a clear, concise view of national cybersecurity threats, enabling them to quickly detect and respond to potential cybercriminal activities and Advanced Persistent Threats (APTs) within a short timeframe.
Key features include visual representations of total event counts over time, identification of top-N threats, actors, and affected sectors, as well as categorization of threat actors across eight critical service sectors: Government Service, InfoComm, Manufacturing-Related Service, Energy Service, Transportation Service, Health and Social Services, Security and Emergency Services, and Banking and Finance Service. This tool will facilitate a better understanding of cybersecurity threats and help prioritize mitigation strategies across different sectors.
The program demo video:
# Version: v0.1.2
# Created: 2024/10/19
# Copyright: Copyright (c) 2024 LiuYuancheng
# License: MIT License
Project Introduction
This project aims to develop a comprehensive dashboard plugin that visualizes large datasets of Singapore national cyber threat events, sourced from publicly available cybersecurity datasets. The dashboard is designed to offer real-time insights and an overview of cyber threats impacting various critical infrastructure sectors in Singapore. By leveraging data from trusted sources such as the Singapore Cyber Security Agency (CSA) Annual Cybersecurity Report and SingCERT (Singapore Computer Emergency Response Team) advisories, the dashboard provides a centralized view of national cyber threat activities. The five key features include:
With the key features, the Singapore National Cyber Threat Dashboard Plugin bridges the gap between raw data and actionable insights, empowering researchers, security professionals, and policy makers to mitigate risks and improve national cybersecurity defenses.
Dashboard UI View
The dashboard is designed with three main sections, providing a clear and intuitive way to visualize national cyber threat data. The dashboard view is shown below:
The dashboard also provides interactive features: when a user clicks on data within the Top-N Threats pane or any sector panel, a detailed timeline dialog will pop up, offering an in-depth view of the selected threat information, as shown in the example image above. This functionality allows users to drill down into specific data points, enhancing their ability to analyze and respond to threats effectively.
Project Architecture
The project consists of two main components: the Front-End Web Host and the Back-End Database Balancer.
Front-End: Angular Web Host Program
Back-End: GraphQL Query Program
The dashboard is equipped with various data visualizations that summarize and categorize threats, allowing security professionals, researchers, and policy makers to identify trends, monitor real-time threat events, and enhance their understanding of Singapore's cybersecurity landscape.
Threats Data Source Available
For detailed and sector-specific cybersecurity threat data for Singapore, particularly focused on critical infrastructure sectors, three are several raw data you can download and insert in your data base:
Singapore Cyber Security Agency (CSA) Annual Cybersecurity Report
SingCERT (Singapore Computer Emergency Response Team) Advisories
Global Resilience Federation (GRF) - Asia Pacific (APAC) Cyber Information Sharing
If you have any other data source can be used, many thanks if you can share to us.
System/Program Design
The system consists of a front-end web host program developed using Angular and TypeScript, and a back-end database balancer programmed with GraphQL and JavaScript. The underlying data storage is managed by a Druid Data Base Cluster, which handles large datasets effectively. The system diagram is shown below:
As illustrated in the diagram, the system workflow involves several key components:
This architecture ensures a smooth flow of data from multiple sources to a centralized dashboard, empowering users with critical insights and timely information to detect and mitigate cyber threats.
Dashboard UI Structure and Design
The dashboard is organized into a grid structure, providing a clear and user-friendly interface for visualizing key information. Below is the layout of the dashboard:
The main UI is shown below:
Key visual elements include:
Pop-up threats count time-line detail dialog :
When the user click the detailed words, sector on the panel in the main UI, the detail threats count time line dialog will pop-up.
Components and Backend Query Design
The front-end dashboard is composed of multiple components, each responsible for a specific aspect of data visualization. The back-end will fetch data from the Druid database using GraphQL queries. The backend acts as a balancer, parsing user requests, applying authorization, and converting GraphQL queries into native SQL queries to optimize data retrieval. The work flow is shown below:
Total Threats Count Timeline Panel
Line-area panel displays a timeline chart showing the total count of threat events, sorted by timestamps (day/hour). The UI is shown below:
BE GraphQL Query (Function call):
领英推荐
threatEvents_nationalCount(dimension:"All")
BE Druid SQL (Total Threat Count):
SELECT
DATE_TRUNC('hour', __time), count(*) as threatCount
FROM "ds-suspected-ip-2021"
GROUP BY DATE_TRUNC('hour', __time)
Top-N Threats Name Display Panel
Word cloud chart panel displays the top N threads name based on the user's selection in the drop down menu during the time period. The UI is shown below:
BE GraphQL Query:
threatEvents_nationalTopN(dimension:"threatName", filterVal:"Name", topN:10)
BE Druid SQL:
SELECT
threatName, count(*) as threatCount
FROM "ds-suspected-ip-2021"
GROUP BY threatName
ORDER BY threatCount DESC
LIMIT 10
Top-N Threats Actor Display Panel
Pie chart Panel displays the top N threads actors based on the user's selection in the drop down menu, showing percentage distribution. The UI is shown below:
BE GraphQL Query:
threatEvents_nationalCount(queryType:"All")
threatEvents_nationalTopN(dimension:"threatActor", filterVal:"percentage", topN:10)
BE Druid SQL:
SELECT
threatActor, count(*) as threatCount
FROM "ds-suspected-ip-2021"
GROUP BY threatName
ORDER BY count DESC
LIMIT 10
Then in BE divide the return list by total to calculate the percentage data.
Top-N Threats Sector Display Panel
Pie chart displays the top-N threat sectors based on user selection, showing percentage distribution. Focus on threats defined as IntrusionSet. The UI is shown below:
BE GraphQL Query:
threatEvents_nationalCount(queryType:"All")
threatEvents_nationalTopN(dimension:"threatName", filterDimension:"threatType", filterVal:"IntrusionSet", topN:10)
BE Druid SQL:
SELECT
threatName, count(*) as threatCount
FROM "ds-suspected-ip-2019"
WHERE threatType='IntrusionSet'
GROUP BY threatName
ORDER BY threatCount DESC
LIMIT 10
Sector Threats Count Time Period Panel
Line-area panel displays a time series for threat counts within sectors over a period of 3-5 days, sorted by hour. The UI is shown below:
Sectors Category:
["GOVERNMENT", "INFOCOMM", "MANUFACTURING", "ENERGY", "TRANSPORTATION SERVICES", "HEALTH AND SOCIAL SERVICES", "SECURITY AND EMERGENCY", "BANKING AND FINANCE"]
BE GraphQL Query:
threatEvents_nationalCount(queryType:"threatSector", fieldStr:"GOVERNMENT", threatType:"All")
BE Druid SQL:
SELECT
DATE_TRUNC('hour', __time), count(*) as threatCount
FROM "ds-suspected-ip-2021"
WHERE srcSector='GOVERNMENT'
GROUP BY DATE_TRUNC('hour', __time)
ORDER BY DATE_TRUNC('hour', __time)
Dashboard Pop-Up Dialog
A pop-up dialog that appears when users select specific items, showing a comparative area chart for Intrusion Set and Malware and providing detailed descriptions. The UI is shown below:
Parameter Input:
BE GraphQL Query:
threatEvents_nationalCount(queryType:"threatSector", fieldStr:"GOVERNMENT", threatType:"IntrusionSet", limitVal:1000)
profile_threatName(threatName:"APT37")
BE Druid SQL Example:
SELECT
DATE_TRUNC('hour', __time), count(*) as threatCount
FROM "ds-suspected-ip-2021"
WHERE srcSector='GOVERNMENT' and threatType='IntrusionSet'
GROUP BY DATE_TRUNC('hour', __time)
ORDER BY DATE_TRUNC('hour', __time)
SELECT
DATE_TRUNC('hour', __time), count(*) as threatCount
FROM "ds-suspected-ip-2021"
WHERE threatType='IntrusionSet' and threatName='Silence'
GROUP BY DATE_TRUNC('hour', __time)
ORDER BY DATE_TRUNC('hour', __time)
Program Setup and Usage
This section outlines the program file structure, environment setup, and steps for executing the National Threat Display Dashboard. Follow these instructions to correctly configure and run the system.
Program Files List
Program Usage/Execution
Copy Files to Appropriate Directories
Access the Webpage: you can directly access the dashboard at: https://localhost:4200/#/national
Project GitHub Repo Link: https://github.com/LiuYuancheng/National_Threats_Dashboard
Reference
Thanks for spending time to check the article detail, if you have any question and suggestion or find any program bug, please feel free to message me. Many thanks if you can give some comments and share any of the improvement advice so we can make our work better ~
Yassin Meligy