Indicators of Compromise are essentially the breadcrumbs that attackers leave behind and can include a wide range of data points, such as:
Vectra AI helps identifying and analyzing these IoCs, enabling SOC teams to swiftly respond to threats, mitigating potential damages and strengthening the security posture of the organization.
It’s important to keep an ear to the ground and make sure you are aware of any new compromises which are announced. But it’s just as important to be able to action new indicators of compromise when you hear of them. In this section, we will describe common IOCs, what they can indicate, why you should care, and how you can search for these IOCs in your network metadata.
Any external actor needs to be able to manage breaches from outside of the network, and domains are a key tool for this to be managed. As we saw recently in the SUNBURST SolarWinds exploit, Command & Control operations were performed through domains along the lines of appsync-api. eu-west-1[.]avsvmcloud[.]com. It is also a common tool in phishing attempts to use domain names which mimic popular sites in order to avoid suspicion in their target. For example, if a phishing attempt is made to steal credentials for someone’s outlook account, a domain such as outlook.com.enteryourpassword.tk might be used to avoid suspicion.
Domain Indicators of Compromise (IOCs) are a strong signal of compromise as these domains have been registered by a malicious actor and traffic for this express purpose. If any communication is seen to a domain IOC, then this strongly warrants investigation.
You can easily convert a list of known bad domains from any source you have into a Recall query. We have created an excel file to do this for you, which you can from a Security Engineer, and given a list like this:
First convert this query to a Lucene query: Resp_domain:(baddomain1.com OR baddomain2.com)
Then run this query on your iSession Metadata Stream
Any items left in this data table warrant further investigation, and if they are benign they should be excluded. At the start, you may have a lot of internal variations on your company’s domain name. For example, at Vectra AI we have a huge number of Vectra AI internal domains such as dev.vectrai.ai, HR assets in hr.vectra.ai etc. You will need to effectively triage out these false positives to get good, actionable data.
After a few days of manually checking this visualization, if you are happy with what results are remaining, you should turn this search into a Custom model by saving the underlying search, and then navigating to the “Manage” section of the Detect UI. In the “Custom Models” tab, find your new saved search and activate it within its edit modal.
You can easily convert a list of known bad IP addresses from any source you have into a Recall query. We have created an excel file to do this for you, which you can get off any Security Engineer, but given a list like this:
First convert this query to a Lucene query: Id.orig_h:( 192.02.1 OR 192.02.2) OR Id.resp_h:( 192.02.1 OR 192.02.2)
Then run this query on your iSession Metatada Stream.
Most software uses a standard set of external ports to communicate. When new ports are seen on the network, this can indicate the installation of new software in the environment; or, in some cases, communication from a compromised host. Vectra AI creates info level detections which report when novel external connections are observed in the environment.
You may want to aggregate these events using stream to leverage monitor if new software is being used on the network or potentially if malicious C2 channels are being set up. These events are mostly caused by benign user activity, but if your organization has a policy of limiting authorized applications, then spotting novel ports from systems outside of your IT admin team may be a sign of malicious activity, or a policy breach at the very least.
Spikes in network activity involving uncommon ports can be significant and warrant further investigation, as this port may be in use by malware to communicate with. A surge in activity necessitates further investigation.
The best way to review this activity like this is with a timeseries visualization. We have created one for you already in Vectra Recall called “Hunting off Indicators: Spikes in Uncommon Port Usage - data” ? Y axis to count.
An example of activity is below. The most common ports used have been excluded, and you can see two clearly spiking ports in use. Port 3283 is used for iChat, which is benign, and so could be excluded, but port 40063 is novel, and might warrant further investigation. You should also focus on standalone dots, which indicate spikes in traffic which were seen at no other time over your search period.
The steps involved above were:
You should look to duplicate this visualization and to update the search query with ports which you know to be safe within your organisation. (N.B. If you try to make changes to the default Recall visualization, your changes will be overwritten).
Similarly, a spike of data transfer from an uncommon port is also something that is worth looking into and ensuring you have validated it is safe.
This works in the same way as with the count of traffic, but you should set the y-axis to show the total data sent. We have created a visualization called “Hunting off Indicators: Spikes in Uncommon Port Usage – data” which you can use as a starting point for this.
See Also Link to Protocols over non-standard ports section
Malicious files can be transported on the network over SMB or other protocols, and then could get executed on target hosts either through remote processes or social engineering. Monitoring specific known bad file extensions which can be used malicious actors can find instances where files are being transferred for nefarious purposes.
The SMB File Metadata stream in Vectra Recall shows each filename interacted with, and these data can be mined to find data which may be suspicious.
There are 2 specific examples we will describe here, but your mileage may vary.
File names which are written by users tend to have real English words in them, whereas from experience, file names can be weak indicators of compromise.
Examples of these are:
But searches like these can be very noisy without organizational context.
You can search for file names like these using regular expression (regex) searches. These searches can be quite slow, so we would recommend running a search over 15 minutes initially, and then expanding the time range once you reduce noise.
To search for file names of 50 characters of longer, you would run the following search. name:/.{50,}/
You could use similar logic for files without vowels, searching with: name:/.\[bcdfghjklmnpqrstvwxyz]{4,}../
This search is a regular expression, with the regular expression logic contained in the forward slashes /
You can also perform similar searches in metadata_httpsessioninfo to monitor unencrypted http traffic.
Using the above search, you should look to remove any common file names which you know are not malicious. For instance, if a Microsoft update server adds files to a specific folder with a long file name, you can exclude those files from the search with an exclude filter. Once you have removed these false positives from the network if they are appearing, you should expand the search time range to your full retention period. If there are very few files involved and you think that they are of a security significance, you should look to turn your search into a custom model and start firing detections for these filenames.
Some paths might be suspicious on your network, and warrant investigation, and a similar search should be used for this as for the suspicious file names example above.
You should collect a list of file paths you know are concerning in your org and create a search to monitor accesses against them. For this example below, let’s focus on any accesses made of files in /App/Data/Roaming/.
The search you would perform is: name:/ /App/Data/Roaming/.*/
This search will match any file accesses in that directory. In our system, we had a lot of legitimate accesses to them from 2 update servers. To reduce the noise from this search, find legitimate servers that you would expect to be accessing the folder you are concerned about, and click the zoom out icon beside its IP to exclude requests by that server.
Ja3 & Hassh are fingerprinting methods which can recognize the source of SSL or SSH activity respectively based off available information from the cleartext packets sent before the encryption handshake is completed.
Ja3 is a method to create SSL/TLS fingerprints which can be used to recognize the client or server in a given session. For example, a standard Tor client will have a Ja3 fingerprint of e7d705a3286e19ea42f587b344ee6865.
Ja3 fingerprints can indicate activity performed by the same application on multiple clients, and can also be used to check IOCs. This is not a foolproof solution, as it is possible for advanced attackers to alter their underlying fingerprints. For example, to check if TOR activity has been seen on your network, go to the metadata_ssl* stream, and search for: Ja3:e7d705a3286e19ea42f587b344ee6865
You can read more on Ja3 on the github profile, the community driven repository of Ja3 fingerprints, list of malicius JA3 fingerprints can be found on abuse.ch.
Hassh uses similar logic to Ja3 in SSH connections, creating fingerprints of SSH connections, this can be used to spot where a specific client has been communicating over SSH with multiple different servers, and to see if any activity which appears is novel.
Hassh is particularly useful in tightly controlled environments. If there are any important sections in a network, then you could look to search specifically in that subnet’s SSH activity to see what Hassh are used there. Due diligence should be performed on these connections to make sure that none of this activity is malicious, and then each safe Hassh should be excluded from the search by clicking on the beside the field. Eventually, you should see no new Hassh in this subnet, and so you could save this search and activate it as a custom model (From manage -> custom models in the detect UI).
The Github community profile for Hassh lists many other uses from this data.
To enhance your security posture and ensure your organization is well-equipped to detect and respond to threats swiftly, detecting IoCs is essential. Vectra AI offers advanced solutions that integrate seamlessly with your existing security infrastructure, providing real-time detection and actionable intelligence. Contact us today to fortify your cyberdefense.