Job scam with specific salary pattern

Detects job scam content that includes specific weekly salary mentions (e.g., '$XXX weekly' patterns) in either the current email thread or previous thread conversations, while excluding legitimate income verification services.

Sublime rule (View on GitHub)

  1name: "Job scam with specific salary pattern"
  2description: "Detects job scam content that includes specific weekly salary mentions (e.g., '$XXX weekly' patterns) in either the current email thread or previous thread conversations, while excluding legitimate income verification services."
  3type: "rule"
  4severity: "low"
  5source: |
  6  type.inbound
  7  and (
  8    ( // job scam in current thread
  9      any(ml.nlu_classifier(body.current_thread.text).intents,
 10          .name in ("job_scam") and .confidence != "low"
 11      )
 12      // and salary mention in current thread
 13      and regex.icontains(body.current_thread.text,
 14                          '\$\d{3} weekly',
 15                          'week \$\d{3}',
 16                          'weekly(?:\s+\w+){0,4}\s+\$\d{3}[^\d]'
 17      )
 18    )
 19  
 20    // job scam in previous thread
 21    or any(body.previous_threads,
 22           any(ml.nlu_classifier(.text).intents,
 23               .name in ("job_scam") and .confidence != "low"
 24           )
 25           // and salary mention in previous thread
 26           and regex.icontains(.text,
 27                               '\$\d{3} weekly',
 28                               'week \$\d{3}',
 29                               'weekly(?:\s+\w+){0,4}\s+\$\d{3}[^\d]'
 30           )
 31    )
 32    // job scam lure delivered as a PDF with an empty email body
 33    or (
 34      length(body.current_thread.text) == 0
 35      and length(attachments) == 1
 36      and any(filter(attachments, .file_type == "pdf"),
 37              any(file.explode(.),
 38                  // specific weekly salary pattern in the OCR
 39                  regex.icontains(.scan.ocr.raw,
 40                                  '\$\d{3,}(?:\s+\w+){0,3}\s+week',
 41                                  'week(?:\s+\w+){0,3}\s+\$\d{3,}',
 42                                  'weekly(?:\s+\w+){0,4}\s+\$\d{3}[^\d]'
 43                  )
 44                  and (
 45                    regex.icontains(.scan.ocr.raw,
 46                                    'fully remote',
 47                                    'remote\b[\s-]*(?:work|position|role|job|employee|worker|assistant|opportunit)',
 48                                    'remotely',
 49                                    'work[\s-]?from[\s-]?home',
 50                                    'equal opportunity employer',
 51                                    'how to apply',
 52                                    'submit (?:your )?application',
 53                                    'remote\b[\s-]*(?:work|position|role|job|employee|worker|assistant|opportunit)',
 54                                    'remotely',
 55                                    'work[\s-]?from[\s-]?home',
 56                                    'equal opportunity employer',
 57                                    'how to apply',
 58                                    'submit (?:your )?application',
 59                                    'open to all (?:majors|backgrounds|students)',
 60                                    'employment opportunity',
 61                                    '\bhiring\b'
 62                    )
 63                    or any(ml.nlu_classifier(.scan.ocr.raw).intents,
 64                           .name in ("job_scam") and .confidence != "low"
 65                    )
 66                  )
 67                  and not regex.icontains(.scan.ocr.raw,
 68                                          'unemployment',
 69                                          'monetary (?:re)?determination',
 70                                          'weekly benefit amount',
 71                                          'supplemental unemployment',
 72                                          'work search activit'
 73                  )
 74              )
 75      )
 76    )
 77  )
 78  and length(body.current_thread.links) < 10
 79  
 80  // negating income / job verification senders
 81  and not (
 82    sender.email.domain.root_domain in (
 83      'loandepot.com',
 84      'sofi.com',
 85      'lensa.com',
 86      'indeed.com',
 87      'ziprecruiter.com',
 88      'glassdoor.com',
 89      'postjobfree.com',
 90      'jobplacements.com'
 91    )
 92    and headers.auth_summary.dmarc.pass
 93  )  
 94attack_types:
 95  - "BEC/Fraud"
 96tactics_and_techniques:
 97  - "Social engineering"
 98detection_methods:
 99  - "Content analysis"
100  - "Natural Language Understanding"
101  - "Header analysis"
102  - "Sender analysis"
103id: "af7f9e21-54a1-5bba-a70d-e4d52a13eae3"
to-top