Link: Multistage landing - Trello board abuse
Detects suspicious Trello board links containing malicious indicators such as credential theft content, blocked users, malicious attachments, or boards with minimal content from unsolicited senders.
Sublime rule (View on GitHub)
1name: "Link: Multistage landing - Trello board abuse"
2description: "Detects suspicious Trello board links containing malicious indicators such as credential theft content, blocked users, malicious attachments, or boards with minimal content from unsolicited senders."
3type: "rule"
4severity: "high"
5source: |
6 type.inbound
7 and any(filter(body.links,
8 .href_url.domain.root_domain == "trello.com"
9 and strings.istarts_with(.href_url.path, "/b/")
10 ),
11 // avoid doing LinkAnalysis if the display-text has strong indications of phishing
12 (
13 // replace confusables - observed ITW
14 regex.icontains(strings.replace_confusables(.display_text),
15 'review|proposal|document|efax|restore|[o0]pen|secure|messaging|reset|account|verify|login|notification|alert|urgent|immediate|access|support|\bupdate\b|download|attachment|service|payment|remittance|invoice|rfp|rfi|pdf|doc'
16 )
17 and not regex.icontains(strings.replace_confusables(.display_text),
18 'customer service'
19 )
20 // add confidence to these strings by using profile.by_sender()
21 and (
22 not profile.by_sender_email().solicited
23 and profile.by_sender_email().prevalence in ('new', 'outlier')
24 )
25 )
26 or any(ml.link_analysis(.).additional_responses,
27 // make sure we have a valid response first
28 .json is not null
29 and .status_code == 200
30 and (
31 // less than 4 cards on the Trello board
32 (
33 .json['cards'] is not null
34 and (
35 length(.json['cards']) < 4
36 or any(.json['cards'],
37 // suspicious link in a card title
38 (
39 strings.parse_url(.['name']).domain.valid
40 and (
41 ml.link_analysis(strings.parse_url(.['name'])).credphish.disposition == "phishing"
42 or ml.link_analysis(strings.parse_url(.['name'])
43 ).credphish.contains_captcha
44 // CF Turnstile
45 or any(ml.link_analysis(strings.parse_url(.['name']
46 )
47 ).unique_urls_accessed,
48 .domain.domain == "challenges.cloudflare.com"
49 )
50 )
51 )
52 // Trello detected a malicious card attachment
53 or .['badges']['maliciousAttachments'] > 0
54 )
55 )
56 )
57 // Trello has blocked the user account
58 or any(.json['members'], .['activityBlocked'] == true)
59 // the user is the sole member of their Trello account and is the admin
60 or (
61 length(.json['organization']['memberships']) == 1
62 and all(.json['organization']['memberships'],
63 .['memberType'] == "admin"
64 )
65 )
66 )
67 )
68 )
69attack_types:
70 - "Credential Phishing"
71tactics_and_techniques:
72 - "Free file host"
73 - "Social engineering"
74detection_methods:
75 - "URL analysis"
76 - "Content analysis"
77 - "Sender analysis"
78 - "URL screenshot"
79id: "14a5b23a-2432-5c58-a3c4-1f0606977dcc"