Name:Azure AD Device Code Authentication id:d68d8732-6f7e-4ee5-a6eb-737f2b990b91 version:4 date:2024-09-30 author:Mauricio Velazco, Gowthamaraj Rajendran, Splunk status:production type:TTP Description:The following analytic identifies Azure Device Code Phishing attacks, which can lead to Azure Account Take-Over (ATO). It leverages Azure AD SignInLogs to detect suspicious authentication requests using the device code authentication protocol. This activity is significant as it indicates potential bypassing of Multi-Factor Authentication (MFA) and Conditional Access Policies (CAPs) through phishing emails. If confirmed malicious, attackers could gain unauthorized access to Azure AD, Exchange mailboxes, and Outlook Web Application (OWA), leading to potential data breaches and unauthorized data access. Data_source:
-Azure Active Directory
search:`azure_monitor_aad` category=SignInLogs "properties.authenticationProtocol"=deviceCode | rename properties.* as * | stats count min(_time) as firstTime max(_time) as lastTime by user src_ip, appDisplayName, userAgent | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `azure_ad_device_code_authentication_filter`
how_to_implement:You must install the latest version of Splunk Add-on for Microsoft Cloud Services from Splunkbase (https://splunkbase.splunk.com/app/3110/#/details). You must be ingesting Azure Active Directory events into your Splunk environment through an EventHub. This analytic was written to be used with the azure:monitor:aad sourcetype leveraging the SignInLogs log category. known_false_positives:In most organizations, device code authentication will be used to access common Microsoft service but it may be legitimate for others. Filter as needed. References: -https://attack.mitre.org/techniques/T1528 -https://github.com/rvrsh3ll/TokenTactics -https://embracethered.com/blog/posts/2022/device-code-phishing/ -https://0xboku.com/2021/07/12/ArtOfDeviceCodePhish.html -https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code drilldown_searches: name:'View the detection results for - "$user$"' search:'%original_detection_search% | search user = "$user$"' earliest_offset:'$info_min_time$' latest_offset:'$info_max_time$' name:'View risk events for the last 7 days for - "$user$"' search:'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$") starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`' earliest_offset:'$info_min_time$' latest_offset:'$info_max_time$' tags: analytic_story: - 'Azure Active Directory Account Takeover' asset_type:Azure Tenant confidence:50 impact:70 message:Device code requested for $user$ from $src_ip$ mitre_attack_id: - 'T1528' - 'T1566' - 'T1566.002' observable: name:'user' type:'User' - role: - 'Victim' name:'src_ip' type:'IP Address' - role: - 'Attacker' product: - 'Splunk Enterprise' - 'Splunk Enterprise Security' - 'Splunk Cloud' risk_score:35 required_fields: - '_time' - 'category' - 'user' - 'properties.authenticationProtocol' - 'properties.ipAddress' - 'properties.status.additionalDetails' - 'properties.appDisplayName' - 'properties.userAgent' security_domain:identity