svn commit: r1932356 - spamassassin/trunk/rulesrc/sandbox/jhardin

[email protected]
Newsgroups gmane.mail.spam.spamassassin.cvs
Message-ID <177374116143.3612289.1010616913890620547@svn02-us-east.apache.org>
Author: jhardin
Date: Tue Mar 17 09:52:41 2026
New Revision: 1932356

Log:
Add new rules for specific phone numbers observed in scams.

Added:
   spamassassin/trunk/rulesrc/sandbox/jhardin/20_phonescam.cf

Added: spamassassin/trunk/rulesrc/sandbox/jhardin/20_phonescam.cf
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ spamassassin/trunk/rulesrc/sandbox/jhardin/20_phonescam.cf	Tue Mar 17 09:52:41 2026	(r1932356)
@@ -0,0 +1,154 @@
+
+#
+# 20_phonescam.cf
+# Phone numbers appearing in order/payment confirmation scam spam
+# ("call our support if this was not you" -- the call is the goal)
+#
+# Generated: 2026-03-17 02:25:02 PDT
+#
+# Optionally uses Mail::SpamAssassin::Plugin::ReplaceTags for digit/separator
+# obfuscation coverage.  If the plugin is not available, plain-regex fallbacks
+# define the same subrule names so the scored metas below always work.
+#
+# Campaigns observed:
+#   983-220-xxxx  Generic fake invoice/billing (area code 983 is UNASSIGNED in NANP)
+#   970-303-xxxx  Fake PayPal/Apple order confirmations (calendar spam delivery)
+#   865-xxx-xxxx  Fake Norton LifeLock / Geek Squad renewals (multiple exchanges)
+#   812-266-xxxx  Fake Microsoft account security alerts
+#   838-209-xxxx  Generic fake invoice (adjacent numbers in pool)
+#   859-204-xxxx  Geek Squad fake renewals
+#   misc          Various singletons from the above campaigns
+#
+# Digit obfuscation (ReplaceTags branch):
+#   <O> from 25_replace.cf covers digit 0 / letter O lookalikes
+#   <I> from 25_replace.cf covers digit 1 / letter l/I lookalikes
+#
+# Digit obfuscation (plain branch):
+#   [0oO] for digit 0 / letter O
+#   [1lI|] for digit 1 / letter l/I
+#
+# Separator obfuscation (PSEP):
+#   One optional character between digit groups: -, ., space, underscore.
+#   Area code parens handled separately with \(?...\)?.
+#   Middle-ground choice: allows common visual separators but not arbitrary strings.
+#
+# Rule structure:
+#   One unscored subrule per AC+exchange group (named __PHONESCAM_AC_EXCH).
+#   One unscored OR meta __PHONESCAM_ALL over all subrules.
+#   Scored meta PHONE_ORDERSCAM references __PHONESCAM_ALL.
+#
+
+ifplugin Mail::SpamAssassin::Plugin::ReplaceTags
+
+replace_tag PSEP  [-. _\s]?
+
+#---------------------------------------------------------------------------
+# 983-xxxx-xxxx  (area code 983 is UNASSIGNED in NANP)
+# Any phone number in this AC is inherently suspicious.
+# Two tiers:
+#   __PHONESCAM_983_ANY    -- any number in AC 983
+#   __PHONESCAM_983_220    -- observed exchange+subscriber combinations (higher confidence)
+#   __PHONESCAM_983_NOVEL  -- AC 983, but NOT an already-observed number (lower confidence)
+#---------------------------------------------------------------------------
+
+# Matches any syntactically valid NANP number in AC 983.
+# Exchange first digit restricted to [2-9] per NANP rules.
+body __PHONESCAM_983_ANY  /(?:\+?<I><PSEP>)?\(?983\)?<PSEP>[2-9]\d\d<PSEP>\d{4}/
+replace_rules __PHONESCAM_983_ANY
+
+# Observed: exchange 220, subscriber 2061 2081 2086 2158 2169 2356 2386 2407 2418 2512 2513 2531 2548 2552 2571 2586 2588 2623 2632 2795 2848 2853 2857
+body __PHONESCAM_983_220  /(?:\+?<I><PSEP>)?\(?983\)?<PSEP>22<O><PSEP>(?:2<O>6<I>|2<O>8<I>|2<O>86|2<I>58|2<I>69|2356|2386|24<O>7|24<I>8|25<I>[23]|253<I>|2548|2552|257<I>|258[68]|2623|2632|2795|2848|285[37])/
+replace_rules __PHONESCAM_983_220
+
+#---------------------------------------------------------------------------
+# 970-303-xxxx  (fake PayPal/Apple order confirmations; calendar spam delivery)
+# Observed: 2135 2184 2319 2457 2563 2645
+#---------------------------------------------------------------------------
+body __PHONESCAM_970_303  /(?:\+?<I><PSEP>)?\(?97<O>\)?<PSEP>3<O>3<PSEP>(?:2<I>35|2<I>84|23<I>9|2457|2563|2645)/
+replace_rules __PHONESCAM_970_303
+
+#---------------------------------------------------------------------------
+# 865-209-xxxx  (fake Norton LifeLock / Geek Squad renewals)
+# Observed: 0164 0221
+#---------------------------------------------------------------------------
+body __PHONESCAM_865_209  /(?:\+?<I><PSEP>)?\(?865\)?<PSEP>2<O>9<PSEP>(?:<O><I>64|<O>22<I>)/
+replace_rules __PHONESCAM_865_209
+
+#---------------------------------------------------------------------------
+# 865-223-xxxx  (fake Norton LifeLock renewals)
+# Observed: 0873 1294
+#---------------------------------------------------------------------------
+body __PHONESCAM_865_223  /(?:\+?<I><PSEP>)?\(?865\)?<PSEP>223<PSEP>(?:<O>873|<I>294)/
+replace_rules __PHONESCAM_865_223
+
+#---------------------------------------------------------------------------
+# 812-266-xxxx  (fake Microsoft account security alerts)
+# Observed: 1510 1890
+#---------------------------------------------------------------------------
+body __PHONESCAM_812_266  /(?:\+?<I><PSEP>)?\(?8<I>2\)?<PSEP>266<PSEP>(?:<I>5<I><O>|<I>89<O>)/
+replace_rules __PHONESCAM_812_266
+
+#---------------------------------------------------------------------------
+# 838-209-xxxx  (generic fake invoice; adjacent pool numbers)
+# Observed: 0187 0188
+#---------------------------------------------------------------------------
+body __PHONESCAM_838_209  /(?:\+?<I><PSEP>)?\(?838\)?<PSEP>2<O>9<PSEP><O><I>8[78]/
+replace_rules __PHONESCAM_838_209
+
+#---------------------------------------------------------------------------
+# 859-204-xxxx  (Geek Squad fake renewals)
+# Observed: 6980 6984
+#---------------------------------------------------------------------------
+body __PHONESCAM_859_204  /(?:\+?<I><PSEP>)?\(?859\)?<PSEP>2<O>4<PSEP>(?:698<O>|6984)/
+replace_rules __PHONESCAM_859_204
+
+#---------------------------------------------------------------------------
+# Miscellaneous singletons
+# 801-306-9512  801-346-6088
+# 802-210-7436  802-346-3153
+# 803-210-5063  805-507-3804
+# 833-379-0781  843-200-1039
+# 859-222-1162  865-283-4987
+#---------------------------------------------------------------------------
+body __PHONESCAM_MISC  /(?:\+?<I><PSEP>)?(?:\(?8<O><I>\)?<PSEP>(?:3<O>6<PSEP>95<I>2|346<PSEP>6<O>88)|\(?8<O>2\)?<PSEP>(?:2<I><O><PSEP>7436|346<PSEP>3<I>53)|\(?8<O>3\)?<PSEP>2<I><O><PSEP>5<O>63|\(?8<O>5\)?<PSEP>5<O>7<PSEP>38<O>4|\(?833\)?<PSEP>379<PSEP><O>78<I>|\(?843\)?<PSEP>2<O><O><PSEP><I><O>39|\(?859\)?<PSEP>222<PSEP><I><I>62|\(?865\)?<PSEP>283<PSEP>4987)/
+replace_rules __PHONESCAM_MISC
+
+else  # Mail::SpamAssassin::Plugin::ReplaceTags not available -- plain fallbacks
+
+body __PHONESCAM_983_ANY  /(?:\+?[1lI|][-. _]?)?\(?983\)?[-. _]?[2-9]\d\d[-. _]?\d{4}/
+
+body __PHONESCAM_983_220  /(?:\+?[1lI|][-. _]?)?\(?983\)?[-. _]?22[0oO][-. _]?(?:2[0oO]6[1lI|]|2[0oO]8[1lI|]|2[0oO]86|2[1lI|]58|2[1lI|]69|2356|2386|24[0oO]7|24[1lI|]8|25[1lI|][23]|253[1lI|]|2548|2552|257[1lI|]|258[68]|2623|2632|2795|2848|285[37])/
+
+body __PHONESCAM_970_303  /(?:\+?[1lI|][-. _]?)?\(?97[0oO]\)?[-. _]?3[0oO]3[-. _]?(?:2[1lI|]35|2[1lI|]84|23[1lI|]9|2457|2563|2645)/
+
+body __PHONESCAM_865_209  /(?:\+?[1lI|][-. _]?)?\(?865\)?[-. _]?2[0oO]9[-. _]?(?:[0oO][1lI|]64|[0oO]22[1lI|])/
+
+body __PHONESCAM_865_223  /(?:\+?[1lI|][-. _]?)?\(?865\)?[-. _]?223[-. _]?(?:[0oO]873|[1lI|]294)/
+
+body __PHONESCAM_812_266  /(?:\+?[1lI|][-. _]?)?\(?8[1lI|]2\)?[-. _]?266[-. _]?(?:[1lI|]5[1lI|][0oO]|[1lI|]89[0oO])/
+
+body __PHONESCAM_838_209  /(?:\+?[1lI|][-. _]?)?\(?838\)?[-. _]?2[0oO]9[-. _]?[0oO][1lI|]8[78]/
+
+body __PHONESCAM_859_204  /(?:\+?[1lI|][-. _]?)?\(?859\)?[-. _]?2[0oO]4[-. _]?(?:698[0oO]|6984)/
+
+body __PHONESCAM_MISC  /(?:\+?[1lI|][-. _]?)?(?:\(?8[0oO][1lI|]\)?[-. _]?(?:3[0oO]6[-. _]?95[1lI|]2|346[-. _]?6[0oO]88)|\(?8[0oO]2\)?[-. _]?(?:2[1lI|][0oO][-. _]?7436|346[-. _]?3[1lI|]53)|\(?8[0oO]3\)?[-. _]?2[1lI|][0oO][-. _]?5[0oO]63|\(?8[0oO]5\)?[-. _]?5[0oO]7[-. _]?38[0oO]4|\(?833\)?[-. _]?379[-. _]?[0oO]78[1lI|]|\(?843\)?[-. _]?2[0oO][0oO][-. _]?[1lI|][0oO]39|\(?859\)?[-. _]?222[-. _]?[1lI|][1lI|]62|\(?865\)?[-. _]?283[-. _]?4987)/
+
+endif  # Mail::SpamAssassin::Plugin::ReplaceTags
+
+#---------------------------------------------------------------------------
+# Combined unscored OR meta -- reference this in scored rules and exclusions
+#---------------------------------------------------------------------------
+meta __PHONESCAM_ALL  __PHONESCAM_983_220 || __PHONESCAM_970_303 || __PHONESCAM_865_209 || __PHONESCAM_865_223 || __PHONESCAM_812_266 || __PHONESCAM_838_209 || __PHONESCAM_859_204 || __PHONESCAM_MISC
+
+# AC 983 novel: unassigned AC but not a confirmed-observed number
+meta __PHONESCAM_983_NOVEL  __PHONESCAM_983_ANY && !__PHONESCAM_983_220
+
+meta     PHONE_ORDERSCAM   __PHONESCAM_ALL
+score    PHONE_ORDERSCAM   2.500	# limit
+describe PHONE_ORDERSCAM   Body contains known order/payment confirmation scam phone number
+tflags   PHONE_ORDERSCAM   publish
+
+meta     PHONE_983_NOVEL   __PHONESCAM_983_NOVEL
+score    PHONE_983_NOVEL   1.500	# limit
+describe PHONE_983_NOVEL   Body contains phone number in unassigned NANP area code 983
+tflags   PHONE_983_NOVEL   publish
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.