Link: Multistage landing - JotForm abuse

Detects a disabled JotForm that contains suspicious elements like secured document messaging, cloned forms, or suspicious action words in form items. Also checks for human verification pages and embedded links to credential collection sites.

Sublime rule (View on GitHub)

 1name: "Link: Multistage landing - JotForm abuse"
 2description: "Detects a disabled JotForm that contains suspicious elements like secured document messaging, cloned forms, or suspicious action words in form items. Also checks for human verification pages and embedded links to credential collection sites."
 3type: "rule"
 4severity: "high"
 5source: |
 6  type.inbound
 7  and length(filter(body.links, .href_url.domain.root_domain == "jotform.com")) > 0
 8  and any(filter(body.links, .href_url.domain.root_domain == "jotform.com"),
 9  
10          // the form as been disabled
11          strings.icontains(ml.link_analysis(.).final_dom.inner_text,
12                            'This form is disabled...'
13          )
14          // it contains suspicious elements within the extracted "appInfo"
15          or any(regex.iextract(ml.link_analysis(.).final_dom.raw,
16                                'window\.__appInfo = (?P<appInfo>\{[^\;]+\})\;'
17                 ),
18                 // the title/description/name contains suspicious keywords
19                 any([
20                       strings.parse_json(.named_groups["appInfo"])["title"],
21                       strings.parse_json(.named_groups["appInfo"])["description"],
22                       strings.parse_json(.named_groups["appInfo"])["name"]
23                     ],
24                     strings.icontains(., 'secured document')
25                     or strings.icontains(., 'Adobe PDF')
26                 )
27                 or any(strings.parse_json(.named_groups["appInfo"])["items"],
28                        // find any links that mention common "action" words
29                        any([.["description"], .["title"]],
30                            regex.icontains(.,
31                                            '(?:view|click|show|access|download|goto|Validate|Va[il]idar|login|verify|account)'
32                            )
33                        )
34  
35                        // inspect the linked page within the "buttonValue" or .title contains a link
36                        or (
37                          any([.["buttonValue"], .["title"]],
38                              strings.icontains(., 'http')
39                              and (
40                                ml.link_analysis(strings.parse_url(.)).credphish.disposition == "phishing"
41                                or ml.link_analysis(strings.parse_url(.)).credphish.contains_captcha == true
42                                or strings.istarts_with(ml.link_analysis(strings.parse_url(.
43                                                                         )
44                                                        ).final_dom.inner_text,
45                                                        'Verify you are human'
46                                )
47                              )
48                          )
49                        )
50                 )
51          )
52  )  
53attack_types:
54  - "Credential Phishing"
55tactics_and_techniques:
56  - "Evasion"
57  - "Social engineering"
58detection_methods:
59  - "Content analysis"
60  - "HTML analysis"
61  - "Javascript analysis"
62  - "URL analysis"
63id: "5b64326f-e38e-558c-8b5f-d9e7ddee2f69"
to-top