Go back

Project: Vanguard

Vanguard is a full-fledged SIEM with endpoint agents, SOAR, integrations and attack surface monitoring. The frontend is built with TypeScript on Next.js and the backend is built with TypeScript on Node. Endpoint agents are built, depending on the version with Rust or C#.

For a long time I have wanted to collect all the logs and alerts from my home network and servers into a single platform. Despite trying various open-source options, I couldn't find one that met all my requirements. This led me to develop Vanguard. It incorporates all the functionalities I've come to expect from enterprise-grade solutions such as Splunk and Palo Alto Cortex, yet it's cost-effective to operate.

Screenshot of the incident view

Screenshot of the incident view

Screenshot of the playbook editor

Screenshot of the playbook editor

Automating incident response

SOAR

One of the most important features of Vanguard is the SOAR. It allows the automation of almost anything, but most importantly handling incidents. This means that before an analyst even sees the incident, Vanguard has already enriched, investigated and resolved the incident. According to my tests, the average time to handle an incident from the moment it is detected is less than 45 seconds. Vanguard also includes a visual playbook editor, which makes it easy to create and modify playbooks.

Analyzing suspicious websites

URL Scanning

I had previously created a tool called urlcheck, which I used to analyze suspicious websites. I integrated this tool into Vanguard to make it easier to analyze suspicious URLs. The scanning algorithm is drastically improved compared to the original publicly available version and it is now capable of detecting phishing sites with a high accuracy. The new version also allows email submissions and integration with SOAR for automated analysis and response.

Screenshot of the URL Scanner results page

Screenshot of the URL Scanner results page

Screenshot of the log view

Screenshot of the log view

Centralised log collection and analysis

Log Ingestion and IOCs

Vanguard is capable of collecting logs from almost any source. It has built-in support for syslog, Windows Event Log, and many other sources. It can also collect logs from custom sources using the HTTP API. Once the logs have been collected, they are parsed and normalized into a common format. This allows Vanguard to easily analyze and correlate logs from different sources. The logs can easily be queried using RQL which was specifically designed for this project.

After the normalizing, Vanguard runs the logs through a set of IOCs to detect possible threats. If an IOC is detected, Vanguard will automatically raise an alert and take the necessary actions.

Interacting with the end-user

Email Integration

Vanguard has a built-in email integration that allows sending and receiving of emails. This is useful for example when an analyst needs to communicate with the end-user. Vanguard SOAR is also able to use this integration to notify the analyst, if there is a need for manual intervention.

Vanguard also allows IOC rules to be applied to emails. This means that if an email contains an IOC, Vanguard will automatically raise an alert or incident. After the incident has been created, Vanguard SOAR playbooks can be used to handle the incident.

An example of an email that has been sent by Vanguard

An example of an email that has been sent by Vanguard

Temporary screenshot

Temporary screenshot

Better visibility into assets

Attack Surface Monitoring

I'm currently working on a new feature called Attack Surface Monitoring. It allows Vanguard to monitor the attack surface of the organization and detect possible threats. It does this by collecting information about the organization's assets from different sources, and then scanning and comparing them to known IOCs. If a threat is detected, Vanguard will automatically raise an alert and if possible, take the necessary actions to mitigate it.

Technologies used, architecture, and more

Technical stuff

The majority of Vanguard's codebase is implemented in TypeScript, except for the endpoint agents, which are crafted in Rust and C#. For data management, I opted for PostgreSQL, while Elasticsearch is used for log storage.

Currently the Vanguard backend is running on a single server, but I have been planning to make it more scalable by splitting some components like SOAR and log ingestion to their own servers. This would allow the system to scale better and handle more load. Both the frontend and backend are running on Docker, which makes it easy to deploy and update the system.