Library Header Image Library Header Image

Meet Quantickle: I Needed a New Tool to Visually Represent and Connect Disparate Sorts of Threat Research Data, So I Vibe-Coded One


Posted on by Snorre Fagerland

Key Takeaways:

  • RSAC is open sourcing Quantickle, a custom graph toolkit designed for independent analysts and researchers.
  • Built by a non-programmer using AI assistance, this project proves that "vibe-coding" can produce valuable security tools in a fraction of usual development time.
  • The toolkit is available now via RSAC-Labson GitHub.

For some time, I have wanted a simple, browser-based network graphing tool that could truly handle the complexities of threat research. This is the reality of threat intelligence: while some data is standardized, the most critical leads are often 'weird and off-the-wall'. These one-to-many relationships are exactly where Excel fails, yet they are where graphs excel. Because existing commercial software is often too rigid to allow for major changes or true customization, I was left with a gap in my toolkit. So, I set out to build the solution myself.

But I am not a programmer.

Oh, I do quite a bit of scripting and local tool creation, but production code? No, not going there. I am an analyst and reverse engineer and have reconciled myself to that fate. I’m going down with the disassembler.

Sometimes I am frustrated by this shortcoming, because it means that if I want tools to make my day easier, I either have to buy them off the shelf or ask someone to make them for me, and usually neither gets me exactly what I want.

Until now. Until vibe coding.

AI-assisted development, also known as “vibe-coding” or “vibing” has been the target of much ridicule. Swarms of confused developers have taken their LLM-driven problems to social media, and social media has done what it does best: Responded with scorn. An area that used to be reserved for skilled engineers saw an influx of novices, boosted by services that many still consider a techno bubble. There were examples of AI tools breaking working code, introducing ugly vulnerabilities and even wiping entire drives. It appeared to be, as an AI told me the other day, “a complete zoo”.

So I decided to join in.

My initial try was modest. Baby steps. I told the LLM what I wanted. It gave me some paste able code. And to my surprise, it worked. Within all of 30 minutes, max. All right, it was just a basic graph tool that took CSV files and displayed them as nodes and edges, but it was miles better than anything I had made before.

Graphic 1 - Snorre blog

Above: The first attempt

Over the course of a few months and multiple LLM models, the project evolved. The process was quite interesting, even if it involved a lot of shouting at the screen.

Graphic 2 Snorre Blog

Above: Me losing patience after the LLM for the third time confidently declared that the error occurred because a file was missing. The file was not missing.

However, eventually the project changed into something that can be helpful for other people. And so we’re publishing it.

Is it production quality? I doubt it. But it works. And we’re not selling it; we’re giving it away.

RSAC is all about community, and going forward it is my hope that we’ll be able to give back to the cybersecurity and technology communities that have contributed so much to us and others over the years. 

As of this publication, Quantickle is available from the RSAC-Labs organization on Github. It’s licensed using a friendly Open-Source license, so fork it and do what you want with it. If you just want to use it out of the box, that’s great too. It’s a very easy installation and supported on most desktop platforms.

With Quantickle, You Can Visualize Any Type of Relationship

Relationships. Any relationships. See, illustrate and annotate how things are connected. It is built with a cybersecurity slant, but it is deliberately made easily extendable to any research area, from biology to software to OSINT. The base graphics engine is Cytoscape, an open-source project originally developed for the biological sciences; but it adapts nicely to any relationship model.

Graphic 3 Snorre Blog

Above: A typical Quantickle graph. Domains, IP addresses and malware hashes.

This tool is not made for the enterprise. There are already software products that cover that space, and their makers can provide much better support and maintenance than I ever could. Quantickle is a different beast. Its purpose is to facilitate manual research, not automation; and to make detailed, customizable illustrations for visualization and publication. It aims at high-quality, curated relationships, and not massive hairball clusters.

Graphic 4 snorre blog

Above: Quantickle can make large clusters if pressed but gets sluggish if you throw a lot of data at it, like in this 2000-node graph.

Containers

A concept I came across almost by accident was the Cytoscape “compound nodes” which in graphs became containers. Not to be confused with the software packaging, Quantickle containers are nodes that contain other nodes. And since containers are nodes, containers can contain other containers and infinitum.

The need for these arose because I wanted a way to group data together without connectors or edges between them. For example, if you have a cluster of ransomware files, it could be useful to put them all in a common box even if they are wholly unrelated.

Containers turned out to be useful in other settings as well, as they evolved into sub-desktops – areas of the graph with individual layouts, styling and backgrounds.

Blog 5 Snorre

Above: Containers with different styling enclosing parts of the graph.

Interlinked graphs

You can only show so much data onscreen, but you can get around that limitation by linking graphs together in navigable chains. Hence, you don’t need to build graphs with 5000 nodes. Instead, you can have ten graphs with hundreds of nodes and jump seamlessly from one to the next. You can also use these links to create tree structures— graphs of graphs.

Blog 6 SNorre

Above: A graph dashboard for the threat actor “Coldwastrel”, with links to cases involving it. Double click into next graph, click “back” to revert. The text box is a special callout node - these can be added anywhere to add context.

Temporal relationships

Traditional graph tools tend to be sub-par when it comes to illustrating time-based data. However, timing can be an important factor in research. You may not want data that is too old. You may investigate activity that is limited to a time window, while there’s other, unrelated activity outside of that window. Thus, as they say, time is of the essence.

Blog 7 Snorre

All Quantickle nodes come with an optional timestamp, and there are multiple layouts that use that timestamp, including a classical timeline.

Above: A timeline of cyber events

Time is also possible to illustrate using color; and you can toggle this on and off. The example below illustrates a large-scale phishing campaign in Australia, with the phishing domains colored based on their creation date. If you investigate such a campaign you might want to focus on the most recent activity, and the color coding makes that easy.

Blog 8 Snorree

Above: Temporal visualization. The phishing domains in this graph change color based on how recently they were created – bright green are less than two months old. 

Data import and export

You can import data in several ways. The easiest is perhaps to paste IOC’s on the desktop; these will become nodes that can be edited afterwards. However, if you want to import full graph relationships, then the recommended method is using CSV files.

The graphs themselves are just JSON, and they can be saved to local files or to Neo4j database (if you have that installed).

The visualizations are exportable as CSV, PNG, PDF or HTML files. 

Final words

As mentioned, the project is available from RSAC’s public GitHub at 

https://github.com/RSAC-Labs/Quantickle

In order to use it, you need to install Git and Node.js, both of which are straightforward install jobs supported on most platforms.

9 snorree

Privacy wise, data stays local by default. Quantickle is mainly client-side JavaScript with a small server side backend, and if you’re just using it for analysis and graph building, it should not leak data. However, there are third party service integrations available (most importantly VirusTotal), and using these will naturally expose data externally. However, external communication is manually triggered, so you should be able to easily prevent any sensitive data leakage.

I would be happy if people found this tool useful, and I expect that many will want to modify it to fit their own workflow and data sources. You should be able to adapt and automate it easily; I’ll be very interested to see what you do with it!

PS: Over the course of this project, I have tried pretty much all the major AI models and UI solutions. They have different strengths and weaknesses - if people want to use AI-assisted coding to further this project, they should try and see which solutionworks best for them.

Contributors
Snorre Fagerland

Senior Technical Director, RSAC

Blogs posted to the RSAConference.com website are intended for educational purposes only and do not replace independent professional judgment. Statements of fact and opinions expressed are those of the blog author individually and, unless expressly stated to the contrary, are not the opinion or position of RSAC™ Conference, or any other co-sponsors. RSAC Conference does not endorse or approve, and assumes no responsibility for, the content, accuracy or completeness of the information presented in this blog.


Share With Your Community

Related Blogs