|
| 1 | +AnalysisType: correlation_rule |
| 2 | +RuleID: "Snowflake.Data.Exfiltration" |
| 3 | +DisplayName: "Snowflake Data Exfiltration" |
| 4 | +Enabled: true |
| 5 | +Severity: Critical |
| 6 | +Description: In April 2024, Mandiant received threat intelligence on database records that were subsequently determined to have originated from a victim’s Snowflake instance. Mandiant notified the victim, who then engaged Mandiant to investigate suspected data theft involving their Snowflake instance. During this investigation, Mandiant determined that the organization’s Snowflake instance had been compromised by a threat actor using credentials previously stolen via infostealer malware. The threat actor used these stolen credentials to access the customer’s Snowflake instance and ultimately exfiltrate valuable data. At the time of the compromise, the account did not have multi-factor authentication (MFA) enabled. |
| 7 | +Reference: https://cloud.google.com/blog/topics/threat-intelligence/unc5537-snowflake-data-theft-extortion/ |
| 8 | +Reports: |
| 9 | + MITRE ATT&CK: |
| 10 | + - TA0010:T1041 # Exfiltration Over C2 Channel |
| 11 | +Detection: |
| 12 | + - Sequence: |
| 13 | + - ID: SnowflakeTempStageCreated |
| 14 | + RuleID: Snowflake.TempStageCreated |
| 15 | + - ID: SnowflakeCopyIntoStage |
| 16 | + RuleID: Snowflake.CopyIntoStage |
| 17 | + - ID: SnowflakeFileDownloaded |
| 18 | + RuleID: Snowflake.FileDownloaded |
| 19 | + Transitions: |
| 20 | + - ID: Match SnowflakeTempStageCreated and SnowflakeCopyIntoStage on stage |
| 21 | + From: SnowflakeTempStageCreated |
| 22 | + To: SnowflakeCopyIntoStage |
| 23 | + Match: |
| 24 | + - On: stage |
| 25 | + - ID: Match SnowflakeCopyIntoStage and SnowflakeFileDownloaded on path |
| 26 | + From: SnowflakeCopyIntoStage |
| 27 | + To: SnowflakeFileDownloaded |
| 28 | + Match: |
| 29 | + - On: stage |
| 30 | + Schedule: |
| 31 | + RateMinutes: 720 |
| 32 | + TimeoutMinutes: 2 |
| 33 | + LookbackWindowMinutes: 1440 |
| 34 | +Tests: |
| 35 | + - Name: Data Exfiltration |
| 36 | + ExpectedResult: true |
| 37 | + RuleOutputs: |
| 38 | + - ID: SnowflakeTempStageCreated |
| 39 | + Matches: |
| 40 | + stage: |
| 41 | + LOGS.PUBLIC.data_exfil: |
| 42 | + - "2006-01-02T15:04:05Z" |
| 43 | + - "2006-01-02T15:04:06Z" |
| 44 | + - ID: SnowflakeCopyIntoStage |
| 45 | + Matches: |
| 46 | + stage: |
| 47 | + LOGS.PUBLIC.data_exfil: |
| 48 | + - "2006-01-02T15:04:05Z" |
| 49 | + - "2006-01-02T15:04:06Z" |
| 50 | + - ID: SnowflakeFileDownloaded |
| 51 | + Matches: |
| 52 | + stage: |
| 53 | + LOGS.PUBLIC.data_exfil: |
| 54 | + - "2006-01-02T15:04:05Z" |
| 55 | + - "2006-01-02T15:04:06Z" |
| 56 | + - Name: Data Staged but not Downloaded |
| 57 | + ExpectedResult: false |
| 58 | + RuleOutputs: |
| 59 | + - ID: SnowflakeTempStageCreated |
| 60 | + Matches: |
| 61 | + stage: |
| 62 | + LOGS.PUBLIC.data_exfil: |
| 63 | + - "2006-01-02T15:04:05Z" |
| 64 | + - "2006-01-02T15:04:06Z" |
| 65 | + - ID: SnowflakeCopyIntoStage |
| 66 | + Matches: |
| 67 | + stage: |
| 68 | + LOGS.PUBLIC.data_exfil: |
| 69 | + - "2006-01-02T15:04:05Z" |
| 70 | + - "2006-01-02T15:04:06Z" |
0 commit comments