Detect DNS requests to Phishing Sites leveraging EvilGinx2
THIS IS A DEPRECATED DETECTION
This detection has been marked deprecated by the Splunk Threat Research team. This means that it will no longer be maintained or supported.
Description
This search looks for DNS requests for phishing domains that are leveraging EvilGinx tools to mimic websites.
- Type: TTP
- Product: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
- Datamodel: Network_Resolution, Web
- Last Updated: 2024-08-16
- Author: Bhavin Patel, Splunk
- ID: 24dd17b1-e2fb-4c31-878c-d4f226595bfa
Annotations
Kill Chain Phase
- Delivery
NIST
- DE.CM
CIS20
- CIS 13
CVE
Search
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime values(DNS.answer) as answer from datamodel=Network_Resolution.DNS by DNS.dest DNS.src DNS.query host
| `drop_dm_object_name(DNS)`
| rex field=query ".*?(?<domain>[^./:]+\.(\S{2,3}
|\S{2,3}.\S{2,3}))$"
| stats count values(query) as query by domain dest src answer
| search `evilginx_phishlets_amazon` OR `evilginx_phishlets_facebook` OR `evilginx_phishlets_github` OR `evilginx_phishlets_0365` OR `evilginx_phishlets_outlook` OR `evilginx_phishlets_aws` OR `evilginx_phishlets_google`
| search NOT [ inputlookup legit_domains.csv
| fields domain]
| join domain type=outer [
| tstats count `security_content_summariesonly` values(Web.url) as url from datamodel=Web.Web by Web.dest Web.site
| rename "Web.*" as *
| rex field=site ".*?(?<domain>[^./:]+\.(\S{2,3}
|\S{2,3}.\S{2,3}))$"
| table dest domain url]
| table count src dest query answer domain url
| `detect_dns_requests_to_phishing_sites_leveraging_evilginx2_filter`
Macros
The SPL above uses the following Macros:
- evilginx_phishlets_0365
- evilginx_phishlets_amazon
- evilginx_phishlets_aws
- evilginx_phishlets_facebook
- evilginx_phishlets_github
- evilginx_phishlets_google
- evilginx_phishlets_outlook
- security_content_summariesonly
detect_dns_requests_to_phishing_sites_leveraging_evilginx2_filter is a empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.
Required fields
List of fields required to use this analytic.
- _time
- DNS.answer
- DNS.dest
- DNS.src
- DNS.query
- host
How To Implement
You need to ingest data from your DNS logs in the Network_Resolution datamodel. Specifically you must ingest the domain that is being queried and the IP of the host originating the request. Ideally, you should also be ingesting the answer to the query and the query type. This approach allows you to also create your own localized passive DNS capability which can aid you in future investigations. You will have to add legitimate domain names to the legit_domains.csv
file shipped with the app.
Splunk>Phantom Playbook Integration
If Splunk>Phantom is also configured in your environment, a Playbook called Lets Encrypt Domain Investigate
can be configured to run when any results are found by this detection search. To use this integration, install the Phantom App for Splunk https://splunkbase.splunk.com/app/3411/
, add the correct hostname to the "Phantom Instance" field in the Adaptive Response Actions when configuring this detection search, and set the corresponding Playbook to active.
(Playbook link:https://my.phantom.us/4.2/playbook/lets-encrypt-domain-investigate/
)
Known False Positives
If a known good domain is not listed in the legit_domains.csv file, then the search could give you false postives. Please update that lookup file to filter out DNS requests to legitimate domains.
Associated Analytic Story
RBA
Risk Score | Impact | Confidence | Message |
---|---|---|---|
25.0 | 50 | 50 | tbd |
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.
Reference
Test Dataset
Replay any dataset to Splunk Enterprise by using our replay.py
tool or the UI.
Alternatively you can replay a dataset into a Splunk Attack Range
source | version: 3