Skip to content
Open
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
32589fd
Create impersonation_charter_spectrum.yml
ben-sublime Aug 12, 2025
c9f7632
Auto add rule ID
Aug 12, 2025
6670e83
Update impersonation_charter_spectrum.yml
ben-sublime Aug 12, 2025
f34013e
Update impersonation_charter_spectrum.yml
ben-sublime Aug 12, 2025
4d986d6
Update impersonation_charter_spectrum.yml
ben-sublime Aug 12, 2025
fc420e0
Update impersonation_charter_spectrum.yml
ben-sublime Aug 12, 2025
b9a7f8a
Update impersonation_charter_spectrum.yml
ben-sublime Aug 15, 2025
e2d3689
Merge branch 'main' into ben-sublime-patch-3
ben-sublime Aug 15, 2025
5a91ea7
Update impersonation_charter_spectrum.yml
ben-sublime Aug 15, 2025
17e705e
Update impersonation_charter_spectrum.yml
ben-sublime Aug 15, 2025
29e4450
Merge branch 'main' into ben-sublime-patch-3
ben-sublime Aug 19, 2025
2d51071
Update impersonation_charter_spectrum.yml
ben-sublime Aug 20, 2025
1d0958d
Update impersonation_charter_spectrum.yml
ben-sublime Aug 21, 2025
4fc6fb6
Merge branch 'main' into ben-sublime-patch-3
ben-sublime Aug 21, 2025
4f8860b
Merge branch 'main' into ben-sublime-patch-3
ben-sublime Aug 22, 2025
4aa532a
Update impersonation_charter_spectrum.yml
zoomequipd Sep 4, 2025
8e9bc54
Update impersonation_charter_spectrum.yml
zoomequipd Sep 4, 2025
9dcc851
Update impersonation_charter_spectrum.yml
zoomequipd Sep 4, 2025
511f6d6
Merge branch 'main' into ben-sublime-patch-3
zoomequipd Sep 4, 2025
61d621e
Sync .github directory from main branch
alex-herold Oct 28, 2025
a824995
Merge branch 'main' into ben-sublime-patch-3
zoomequipd Nov 6, 2025
8a52b7e
add negations and format
zoomequipd Nov 6, 2025
0c8a89a
Update impersonation_charter_spectrum.yml
zoomequipd Nov 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions detection-rules/impersonation_charter_spectrum.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: "Brand impersonation: Charter Spectrum"
description: "Detects messages impersonating Charter Spectrum by using variations of 'Spectrum' or 'MyCharter' in the display name while not originating from legitimate Charter domains or failing DMARC authentication."
type: "rule"
severity: "medium"
source: |
type.inbound
and (
// Claim to be Charter or Spectrum in the Display Name
regex.icontains(sender.display_name, 'spe[cç]trum')
or strings.icontains(sender.display_name, 'MyCharter')

// Claims sent by Charter
or strings.icontains(body.current_thread.text,
'This message was sent by Charter Communications.'
)
or regex.icontains(body.current_thread.text,
' © \d{4} Charter.?Communications'
)
)
// Exclude authorized sending through legitimate sending domains
and not (
(
sender.email.domain.root_domain in (
"spectrumemails.com", // primary communication domain
"spectrumtoolbox.com", // used for SpetrumTool Enterprise
"beagleinsight.com", // survey vendor
"spectrumreach.com", // direct marketing
"charter.com", // service alerts
"spectrumenterprise.com", // customer surveys
"spectrumenterprise.net", // customer surveys
"spectrumcustomersurvey.com", // customer feedback surveys
"ccsend.com", // they use constant contact
"simplifiednetworkmanagement.com", // cold emailing from this domain
"tbjobalerts.com", // Job listings for Spectrum
"spectruminsiders.com", // legit surveys
"spectrumbusinessinsider.com", // legit surveys
"joinspectrum.net", // Spectrum reseller
"ny1.com", // Spectrum NY1 News channel
"mymove.com", // Spectrum reseller
)
or sender.email.domain.domain in ("email.spectrumbusiness.ringcentral.com")
)
and headers.auth_summary.dmarc.pass
)
// necessitated by legit emails that are failing dmarc (they probably use a vendor)
and not (
sender.email.domain.root_domain in (
"spectrum.com", // they use vendors that don't have dmarc pass
"spectrum.net", // voicemail notifications - dmarc null
)
and (headers.auth_summary.spf.pass or headers.auth_summary.dmarc.pass)
)

// Make sure this is related to Charter -- exclude other use of 'spectrum'
// use this section to provide strong indications of the brand we are targetting
and strings.icontains(body.current_thread.text, 'Charter')

// Head off other jobs emails
and not (
strings.icontains(body.current_thread.text, "applicant")
and strings.icontains(body.current_thread.text, "apply")
and strings.icontains(body.current_thread.text, "Opportunity Employer")
and strings.icontains(body.current_thread.text, "Opening")
)
attack_types:
- "Credential Phishing"
tactics_and_techniques:
- "Impersonation: Brand"
- "Social engineering"
detection_methods:
- "Content analysis"
- "Header analysis"
- "Sender analysis"
id: "f1cd01e0-3f2b-52c3-9e99-66a9726763ce"
Loading