1
+ name : " Brand impersonation: Microsoft"
2
+ description : |
3
+ Impersonation of the Microsoft brand.
4
+ references :
5
+ - " https://www.itproportal.com/news/cybercriminals-launch-targeted-phishing-attacks-against-microsoft-365-users/"
6
+ - " https://cofense.com/blog/office-365-phishing-variant/"
7
+ - " https://www.helpnetsecurity.com/2020/05/04/fake-microsoft-teams-notification/"
8
+ type : " rule"
9
+ severity : " high"
10
+ authors :
11
+ - twitter : " amitchell516"
12
+ source : |
13
+ type.inbound
14
+ and (
15
+ length(body.links) < 30
16
+ or sender.email.local_part == "newsletter" and length(body.links) < 5
17
+ )
18
+ and (
19
+ (
20
+ strings.ilike(subject.subject, '*Microsoft 365*')
21
+ and strings.ilike(subject.subject, '*is expired*')
22
+ )
23
+ or (
24
+ // should catch any instance of the word "expired"
25
+ strings.ilike(body.current_thread.text, "*expir*")
26
+ and strings.ilike(body.current_thread.text, "*password*")
27
+ and strings.ilike(body.current_thread.text, "*microsoft*")
28
+ )
29
+ or regex.icontains(body.current_thread.text,
30
+ ".*reach you.{0,20}Microsoft Teams"
31
+ )
32
+ or strings.ilike(sender.display_name, '*new activity in Teams*')
33
+ or strings.icontains(strings.replace_confusables(sender.display_name),
34
+ 'microsoft advertising support'
35
+ )
36
+ or subject.subject =~ 'Offline Message in Teams'
37
+ or strings.ilike(subject.subject, '*Teams Sent A Message')
38
+ or sender.display_name in~ (
39
+ 'Microsoft Partner Network',
40
+ 'Microsoft Advertising',
41
+ 'Microsoft',
42
+ 'Microsoft Feedback',
43
+ 'Microsoft account team',
44
+ 'Microsoft Support',
45
+ 'Microsoft 365 Message center',
46
+ 'Microsoft Azure'
47
+ )
48
+ or regex.icontains(sender.display_name,
49
+ "[MḾṀṂⱮМḿṁṃᵯⱮ𝐌𝑀][iíìîïīĭĩįıɪɨᵢⁱ𝐢𝑖][cćĉċčçƈȼ𝐜𝑐][rŕŗřȑȓɾᵣⁿʳ𝐫𝑟][oóòôõöøōŏőɵₒᵒº𝐨𝑜][sśŝšșşʂᵴˢˢ𝐬𝑠][oóòôõöøōŏőɵₒᵒº𝐨𝑜][fḟƒᵮᶠ𝐟𝑓][tťțţᵵₜᵗᵗ𝐭𝑡]"
50
+ )
51
+ or regex.icontains(sender.display_name,
52
+ "[MḾṀṂⱮМḿṁṃᵯⱮ𝐌𝑀][iíìîïīĭĩįıɪɨᵢⁱ𝐢𝑖][rŕŗřȑȓɾᵣⁿʳ𝐫𝑟][cćĉċčçƈȼ𝐜𝑐][oóòôõöøōŏőɵₒᵒº𝐨𝑜][sśŝšșşʂᵴˢˢ𝐬𝑠][oóòôõöøōŏőɵₒᵒº𝐨𝑜][fḟƒᵮᶠ𝐟𝑓][tťțţᵵₜᵗᵗ𝐭𝑡]" // [sic]
53
+ )
54
+ )
55
+ and sender.email.domain.root_domain not in~ (
56
+ 'microsoft.com',
57
+ 'microsoftstoreemail.com',
58
+ 'microsoftsupport.com',
59
+ 'office.com',
60
+ 'teams-events.com',
61
+ 'qualtrics-research.com',
62
+ 'skype.com',
63
+ 'azureadnotifications.us',
64
+ 'microsoftonline.us',
65
+ 'mail.microsoft',
66
+ 'office365.com'
67
+ )
68
+ and not (
69
+ sender.email.domain.domain in~ (
70
+ 'microsoft.regsvc.com',
71
+ 'microsoft.onmicrosoft.com'
72
+ )
73
+ and headers.auth_summary.dmarc.pass
74
+ )
75
+ and (
76
+ profile.by_sender().prevalence in ("new", "outlier")
77
+ or (
78
+ profile.by_sender().any_messages_malicious_or_spam
79
+ and not profile.by_sender().any_messages_benign
80
+ )
81
+ )
82
+
83
+ // negate legitimate Office 365 bouncebacks
84
+ and not (
85
+ all(attachments,
86
+ .content_type in ("message/delivery-status", "message/rfc822")
87
+ )
88
+ and (
89
+ sender.email.local_part in ('postmaster', 'mailer-daemon')
90
+ or strings.starts_with(sender.email.local_part, 'microsoftexchange')
91
+ )
92
+ and strings.contains(subject.subject, 'Undeliverable:')
93
+ )
94
+
95
+ // negate other legitimate MS notifications
96
+ and not (
97
+ length(body.links) > 0
98
+ and all(body.links,
99
+ .href_url.domain.root_domain in (
100
+ "aka.ms",
101
+ "microsoftonline.com",
102
+ "microsoft.com"
103
+ )
104
+ or .href_url.domain.tld == "microsoft"
105
+ )
106
+ and headers.auth_summary.dmarc.pass
107
+ )
108
+
109
+ // negate highly trusted sender domains unless they fail DMARC authentication
110
+ and (
111
+ (
112
+ sender.email.domain.root_domain in $high_trust_sender_root_domains
113
+ and not headers.auth_summary.dmarc.pass
114
+ )
115
+ or sender.email.domain.root_domain not in $high_trust_sender_root_domains
116
+ )
117
+ // not a newsletter or advertisement
118
+ and not any(beta.ml_topic(body.current_thread.text).topics,
119
+ .name in ("Newsletters and Digests")
120
+ and .confidence == "high"
121
+ and (
122
+ any(body.links,
123
+ strings.icontains(.display_text, "unsubscribe")
124
+ and (strings.icontains(.href_url.path, "unsubscribe"))
125
+ )
126
+ )
127
+ )
128
+
129
+ attack_types :
130
+ - " Credential Phishing"
131
+ tactics_and_techniques :
132
+ - " Impersonation: Brand"
133
+ - " Social engineering"
134
+ detection_methods :
135
+ - " Content analysis"
136
+ - " Sender analysis"
137
+ id : " f469bb2a-5a92-52f5-936f-431010f5a2eb"
138
+ og_id : " 6e2f04e6-b607-5e36-9015-d39c98265579"
139
+ testing_pr : 3069
140
+ testing_sha : 23619626686cf560676f4a54ad720f89bd3c02a8
0 commit comments