The Cisco Dwell Community Operations Heart (NOC) deployed Cisco Umbrella for Area Title Service (DNS) queries and safety. The Safety Operations Heart (SOC) group built-in the DNS logs into Splunk Enterprise Safety and Cisco XDR.
To guard the Cisco Dwell attendees on the community, the default Safety profile was enabled, to dam queries to identified malware, command and management, phishing, DNS tunneling and cryptomining domains. There are events when an individual must go to a blocked area, such a stay demonstration or coaching session.


Throughout the Cisco Dwell San Diego 2025 convention, and different conferences we’ve labored prior to now, we’ve noticed domains which can be two to a few phrases in a random order like “alphabladeconnect[.]com” for example. These domains are linked to a phishing marketing campaign and are typically not but recognized as malicious.
Ivan Berlinson, our lead integration engineer, created XDR automation workflows with Splunk to determine Prime Domains seen within the final six and 24 hours from the Umbrella DNS logs, as this can be utilized to alert to an an infection or marketing campaign. We observed that domains that adopted the three random names sample began to displaying up, like 23 queries to shotgunchancecruel[.]com in 24 hours.


This obtained me considering, “Might we catch these domains utilizing code and with our push to make use of AI, may we leverage AI to search out them for us?”
The reply is, “Sure”, however with caveats and a few tuning. To make this potential, I first wanted to determine the classes of knowledge I needed. Earlier than the domains get marked as malicious, they’re normally categorized as procuring, commercials, commerce, or uncategorized.
I began off operating a small LLM on my Mac and chatting with it to find out if the performance I need is there. I advised it the necessities of needing to be two-three random phrases, and to inform me if it thinks it’s a phishing area. I gave it just a few domains that we already knew had been malicious, and it was in a position to inform that they had been phishing in response to my standards. That was all I wanted to start out coding.
I made a script to drag down the allowed domains from Umbrella, create a de-duped set of the domains after which ship it to the LLM to course of them with an preliminary immediate being what I advised it earlier. This didn’t work out too nicely for me, because it was a smaller mannequin. I overwhelmed it with the quantity of knowledge and shortly broke it. It began returning solutions that didn’t make sense and completely different languages.
I shortly modified the habits of how I despatched the domains over. I began off sending domains in chunks of 10 at a time, then obtained as much as 50 at a time since that appeared to be the max earlier than I believed it will develop into unreliable in its habits.
Throughout this course of I observed variations in its responses to the information. It’s because I used to be giving it the preliminary immediate I created each time I despatched a brand new chunk of domains, and it will interpret that immediate in another way every time. This led me to switch the mannequin’s modelfile. This file is used as the basis of how the mannequin will behave. It may be modified to vary how a mannequin will reply, analyze information, and be constructed. I began modifying this file from being a normal function, useful assistant, to being a SOC assistant, with consideration to element and responding solely in JSON.
This was nice, as a result of now it was constantly responding to how I needed it to, however there have been many false positives. I used to be getting a few 15–20% false constructive (FP) price. This was not acceptable to me, as I wish to have excessive constancy alerts and fewer analysis when an alert is available in.
Right here is an instance of the FP price for 50 at this level and it was oftentimes a lot greater:


I began tuning the modelfile to inform the mannequin to offer me a confidence rating as nicely. Now I used to be in a position to see how assured it was in its willpower. I used to be getting a ton of 100% on domains for AWS, CDNs, and the like. Tuning the modelfile ought to repair that although. I up to date the modelfile to be extra particular in its evaluation. I added that there shouldn’t be any delimiters, like a dot or sprint between the phrases. And I gave it unfavourable and constructive samples it may use as examples when analyzing the domains fed to it.
This labored wonders. We went from a 15–20% FP price to about 10%. 10% is significantly better than earlier than, however that’s nonetheless 100 domains out of 1000 which may have to verify. I attempted modifying the modelfile extra to see if I may get the FP price down, however with no success. I swapped to a more recent mannequin and was in a position to drop the FP price to 7%. This exhibits that the mannequin you begin with is not going to all the time be the mannequin you find yourself with or will fit your wants essentially the most.


At this level, I used to be pretty pleased with it however ideally want to get the FP price down even additional. However with the mannequin’s present capabilities, it was in a position to efficiently determine phishing domains that weren’t marked as malicious, and we added them to our block checklist. Later, they had been up to date in Umbrella to be malicious.
This was a fantastic feat for me, however I wanted to go additional. I labored with Christian Clasen, our resident Umbrella/Safe Entry skilled and was in a position to get a slew of domains related to the phishing marketing campaign and I curated a coaching set to effective tune a mannequin.
This process proved to be tougher than I believed, and I used to be not in a position to effective tune a mannequin earlier than the occasion ended. However that analysis continues to be ongoing in preparation for Black Hat USA 2025.
We’d love to listen to what you assume! Ask a query and keep related with Cisco Safety on social media.
Cisco Safety Social Media
Share: