|
| 1 | +name: Windows PowerShell FakeCAPTCHA Clipboard Execution |
| 2 | +id: d81d4d3d-76b5-4f21-ab51-b17d5164c106 |
| 3 | +version: 1 |
| 4 | +date: '2025-05-14' |
| 5 | +author: Michael Haag, Splunk |
| 6 | +status: production |
| 7 | +type: TTP |
| 8 | +description: This detection identifies potential FakeCAPTCHA/ClickFix clipboard hijacking campaigns by looking for PowerShell execution with hidden window parameters and distinctive strings related to fake CAPTCHA verification. These campaigns use social engineering to trick users into pasting malicious PowerShell commands from their clipboard, typically delivering information stealers or remote access trojans. |
| 9 | +data_source: |
| 10 | +- Sysmon EventID 1 |
| 11 | +search: '| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) |
| 12 | + as lastTime FROM datamodel=Endpoint.Processes where `process_powershell` |
| 13 | + AND Processes.process="*-w*h*" |
| 14 | + AND ( |
| 15 | + (Processes.process IN ("*robot*", "*captcha*", "*verify*", "*security check*", "*complete verification*")) |
| 16 | + OR |
| 17 | + ( |
| 18 | + (Processes.process IN ("*iwr *", "*Invoke-WebRequest*", "*wget *", "*curl *", "*Net.WebClient*", "*DownloadString*", "*[Convert]::FromBase64String*")) |
| 19 | + AND |
| 20 | + (Processes.process IN ("*iex*", "*Invoke-Expression*")) |
| 21 | + AND |
| 22 | + (Processes.process IN ("*click*", "*verify*", "*check*", "*human*", "*bot*", "*token*", "*challenge*")) |
| 23 | + ) |
| 24 | + OR |
| 25 | + ( |
| 26 | + Processes.process="*clipboard*" |
| 27 | + AND Processes.process="*iex*" |
| 28 | + AND (Processes.process="*FromBase64String*" OR Processes.process="*decode*") |
| 29 | + ) |
| 30 | + ) |
| 31 | + by Processes.action Processes.dest Processes.original_file_name Processes.parent_process |
| 32 | + Processes.parent_process_exec Processes.parent_process_guid Processes.parent_process_id |
| 33 | + Processes.parent_process_name Processes.parent_process_path Processes.process |
| 34 | + Processes.process_exec Processes.process_guid Processes.process_hash Processes.process_id |
| 35 | + Processes.process_integrity_level Processes.process_name Processes.process_path |
| 36 | + Processes.user Processes.user_id Processes.vendor_product |
| 37 | + | `drop_dm_object_name(Processes)` |
| 38 | + | `security_content_ctime(firstTime)` |
| 39 | + | `security_content_ctime(lastTime)` |
| 40 | + | `windows_powershell_fakecaptcha_clipboard_execution_filter`' |
| 41 | +how_to_implement: To successfully implement this search, you need to be ingesting logs with the process name, process path, and command-line executions from your endpoints. If you are using Sysmon, you must have at least Sysmon version 6.0.4 with EventID 1 configured. The full command line arguments are necessary for proper detection. |
| 42 | +known_false_positives: Legitimate PowerShell commands that use hidden windows for automation tasks may trigger this detection. The search specifically looks for patterns typical of FakeCAPTCHA campaigns. You may need to add additional exclusions for legitimate administrative activities in your environment by modifying the filter macro. |
| 43 | +references: |
| 44 | +- https://urlhaus.abuse.ch/ |
| 45 | +- https://www.proofpoint.com/us/blog/threat-insight/security-brief-clickfix-social-engineering-technique-floods-threat-landscape |
| 46 | +- https://reliaquest.com/blog/using-captcha-for-compromise/ |
| 47 | +- https://attack.mitre.org/techniques/T1204/001/ |
| 48 | +- https://github.com/MHaggis/ClickGrab |
| 49 | +drilldown_searches: |
| 50 | +- name: View the detection results for - "$dest$" |
| 51 | + search: '%original_detection_search% | search dest = "$dest$"' |
| 52 | + earliest_offset: $info_min_time$ |
| 53 | + latest_offset: $info_max_time$ |
| 54 | +- name: View risk events for the last 7 days for - "$dest$" |
| 55 | + search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") |
| 56 | + starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime |
| 57 | + values(search_name) as "Search Name" values(risk_message) as "Risk Message" |
| 58 | + values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" |
| 59 | + values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object |
| 60 | + | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`' |
| 61 | + earliest_offset: $info_min_time$ |
| 62 | + latest_offset: $info_max_time$ |
| 63 | +rba: |
| 64 | + message: A potential FakeCAPTCHA/ClickFix campaign execution was detected on $dest$ running a PowerShell command with hidden window and suspicious verification strings typical of social engineering attacks. |
| 65 | + risk_objects: |
| 66 | + - field: dest |
| 67 | + type: system |
| 68 | + score: 80 |
| 69 | + threat_objects: |
| 70 | + - field: process |
| 71 | + type: process |
| 72 | +tags: |
| 73 | + analytic_story: |
| 74 | + - Fake CAPTCHA Campaigns |
| 75 | + asset_type: Endpoint |
| 76 | + mitre_attack_id: |
| 77 | + - T1059.001 |
| 78 | + - T1204.001 |
| 79 | + - T1059.003 |
| 80 | + product: |
| 81 | + - Splunk Enterprise |
| 82 | + - Splunk Enterprise Security |
| 83 | + - Splunk Cloud |
| 84 | + security_domain: endpoint |
| 85 | + cve: [] |
| 86 | +tests: |
| 87 | +- name: True Positive Test |
| 88 | + attack_data: |
| 89 | + - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1059.001/atomic_red_team/captcha_windows-sysmon.log |
| 90 | + source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational |
| 91 | + sourcetype: XmlWinEventLog |
0 commit comments