Spike in downloaded documents per user on Salesforce cloud
A sudden, high-volume increase in downloaded documents can indicate unauthorized, non-compliant, and potentially malicious behavior. Because so many people in your organization have access to Salesforce, this is an activity you want to monitor for regularly.
Required data
Procedure
- Populate the
lookup_sfdc_usernames
lookup provided by the Salesforce Add-on with live values from your site. - Run the following search. You can optimize it by specifying an index and adjusting the time range.
|search EVENT_TYPE=DocumentAttachmentDownloads |lookup lookup_sfdc_usernames USER_ID |bucket _time span=1d |stats count BY Username _time |stats count AS num_data_samples max(eval(if(_time >= relative_time(maxtime, "-1d@d"), 'count',null))) AS count avg(eval(if(_time<relative_time(maxtime,"-1d@d"),'count',null))) AS avg stdev(eval(if(_time<relative_time(maxtime,"-1d@d"),'count',null))) AS stdev BY Username |eval lowerBound=(avg-stdev*2), upperBound=(avg+stdev*2) |where 'count' > upperBound AND num_data_samples >=7
Search explanation
The table provides an explanation of what each part of this search achieves. You can adjust this query based on the specifics of your environment.
Splunk Search | Explanation |
---|---|
|
Filter for the |
|
Convert the |
|
Group events based on |
|
Count and aggregate per user, per day. |
|
Calculate the mean, standard deviation, and most recent value. |
|
Calculate the bounds as a multiple of the standard deviation. |
| eval isOutlier=if(('count' < lowerBound OR 'count' > upperBound) AND num_data_samples >=7, 1, 0) |
Display events that have a frequency of occurrence above the calculated |
Next steps
While there are no traditional false positives in this search, there will be a lot of noise. Every time this search runs, it will accurately measure a spike in the number of documents monitored.
How you handle these alerts depends on where you set the standard deviation. If you set a low standard deviation (2 or 3), you are likely to get a lot of events that are useful only for contextual information. If you set a high standard deviation (6 or 10), the amount of noise can be reduced enough to send an alert directly to analysts.
For most environments, these searches can be run once a day, often overnight, without a lag. If you want to run this search more frequently, or if this search is too slow for your environment, use a summary index that first aggregates the data.
When this search returns values, initiate your incident response process and identify the user demonstrating this behavior. Capture the time of the event, the user's role, and number of documents downloaded. If possible, determine the system used to download this data and its location. Contact the user and their manager to determine if the download is authorized, and then document that it was authorized and by whom. If you cannot find authorization, the user credentials may have been used by another party and additional investigation is warranted.
Finally, you might be interested in other processes associated with the Protecting a Salesforce cloud deployment use case.