{
	"id": "CrowdstrikeReplicatorv2",
	"title": "CrowdStrike Falcon Data Replicator (CrowdStrike Managed AWS-S3)",
	"publisher": "Crowdstrike",
	"descriptionMarkdown": "This connector enables the ingestion of FDR data into Microsoft Sentinel using Azure Functions to support the assessment of potential security risks, analysis of collaboration activities, identification of configuration issues, and other operational insights.<p><span style='color:red; font-weight:bold;'>NOTE:</span></p><div style='margin-left:20px;'><p>1. CrowdStrike FDR license must be available & enabled.</p><p>2. The connector uses a Key & Secret based authentication and is suitable for CrowdStrike Managed buckets.</p><p>3. For environments that use a fully owned AWS S3 bucket, Microsoft recommends using the <strong>CrowdStrike Falcon Data Replicator (AWS S3)</strong> connector.</p></div>",
	"additionalRequirementBanner": "These queries and workbooks are dependent on a parser based on Kusto to work as expected. Follow the steps to use this Kusto functions alias **CrowdstrikeReplicator** in queries and workbooks [Follow steps to get this Kusto functions>](https://aka.ms/sentinel-crowdstrikereplicator-parser).",
	"graphQueries": [
		{
			"metricName": "Total data received",
			"legend": "CrowdStrikeReplicatorV2",
			"baseQuery": "CrowdStrikeReplicatorV2"
		}
	],
	"sampleQueries": [
		{
			"description": "Data Replicator - All Activities",
			"query": "CrowdStrikeReplicatorV2 \n | sort by TimeGenerated desc"
		}
	],
	"dataTypes": [
		{
			"name": "CrowdStrike_Additional_Events_CL",
			"lastDataReceivedQuery": "CrowdStrike_Additional_Events_CL\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimNetworkSessionLogs",
			"lastDataReceivedQuery": "ASimNetworkSessionLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimDnsActivityLogs",
			"lastDataReceivedQuery": "ASimDnsActivityLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimAuditEventLogs",
			"lastDataReceivedQuery": "ASimAuditEventLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimFileEventLogs",
			"lastDataReceivedQuery": "ASimFileEventLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimAuthenticationEventLogs",
			"lastDataReceivedQuery": "ASimAuthenticationEventLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimProcessEventLogs",
			"lastDataReceivedQuery": "ASimProcessEventLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimRegistryEventLogs",
			"lastDataReceivedQuery": "ASimRegistryEventLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "ASimUserManagementActivityLogs",
			"lastDataReceivedQuery": "ASimUserManagementActivityLogs\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		},
		{
			"name": "CrowdStrike_Secondary_Data_CL",
			"lastDataReceivedQuery": "CrowdStrike_Secondary_Data_CL\n            | summarize Time = max(TimeGenerated)\n            | where isnotempty(Time)"
		}
	],
	"connectivityCriterias": [
		{
			"type": "IsConnectedQuery",
			"value": [
				"CrowdStrikeReplicatorV2(starttime=ago(3d)) \n    |take 1\n   | project IsConnected = true  "
			]
		}
	],
	"availability": {
		"status": 1,
		"isPreview": false
	},
	"permissions": {
		"resourceProvider": [
			{
				"provider": "Microsoft.OperationalInsights/workspaces",
				"permissionsDisplayText": "read and write permissions on the workspace are required.",
				"providerDisplayName": "Workspace",
				"scope": "Workspace",
				"requiredPermissions": {
					"write": true,
					"read": true,
					"delete": true
				}
			},
			{
				"provider": "Microsoft.OperationalInsights/workspaces/sharedKeys",
				"permissionsDisplayText": "read permissions to shared keys for the workspace are required. [See the documentation to learn more about workspace keys](https://docs.microsoft.com/azure/azure-monitor/platform/agent-windows#obtain-workspace-id-and-key).",
				"providerDisplayName": "Keys",
				"scope": "Workspace",
				"requiredPermissions": {
					"action": true
				}
			}
		],
		"customs": [
			{
				"name": "Microsoft.Web/sites permissions",
				"description": "Read and write permissions to Azure Functions to create a Function App is required. [See the documentation to learn more about Azure Functions](https://docs.microsoft.com/azure/azure-functions/)."
			},
			{
				"name": "SQS and AWS S3 account credentials/permissions",
				"description": "**AWS_SECRET**, **AWS_REGION_NAME**, **AWS_KEY**, **QUEUE_URL** is required.  [See the documentation to learn more about data pulling](https://www.crowdstrike.com/blog/tech-center/intro-to-falcon-data-replicator/). To start, contact CrowdStrike support. At your request they will create a CrowdStrike managed Amazon Web Services (AWS) S3 bucket for short term storage purposes as well as a SQS (simple queue service) account for monitoring changes to the S3 bucket."
			}
		]
	},
	"instructionSteps": [
		{
			"title": "",
			"description": ">**NOTE:** This connector uses Azure Functions to connect to the AWS SQS / S3 to pull logs into Microsoft Sentinel. This might result in additional data ingestion costs. Check the [Azure Functions pricing page](https://azure.microsoft.com/pricing/details/functions/) for details.\n\n>**(Optional Step)** Securely store API authorization key(s) or token(s) in Azure Key Vault. Azure Key Vault provides a secure mechanism to store and retrieve key values. [Follow these instructions](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references) to use Azure Key Vault with an Azure Function App."
		},
		{
			"title": "Prerequisites",
			"description": "1. Configure FDR in CrowdStrike - You must contact the [CrowdStrike support team](https://supportportal.crowdstrike.com/) to enable CrowdStrike FDR.\n\t - Once CrowdStrike FDR is enabled,  from the CrowdStrike console, navigate to Support --> API Clients and Keys. \n\t - You need to Create new credentials to copy the AWS Access Key ID, AWS Secret Access Key, SQS Queue URL and AWS Region. \n2.  Register AAD application - For DCR to authentiate to ingest data into log analytics, you must use AAD application. \n\t - [Follow the instructions here](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal#create-azure-ad-application) (steps 1-5) to get **AAD Tenant Id**, **AAD Client Id** and **AAD Client Secret**. \n\t - For **AAD Principal** Id of this application, access the AAD App through [AAD Portal](https://aad.portal.azure.com/#view/Microsoft_AAD_IAM/StartboardApplicationsMenuBlade/~/AppAppsPreview/menuId/) and capture Object Id from the application overview page."
		},
		{
			"title": "Deployment Options",
			"description": "Choose ONE from the following two deployment options to deploy the connector and the associated Azure Function"
		},
		{
			"title": "Option 1 - Azure Resource Manager (ARM) Template",
			"description": "Use this method for automated deployment of the Crowdstrike Falcon Data Replicator connector V2 using an ARM Tempate.\n\n1. Click the **Deploy to Azure** button below. \n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)](https://aka.ms/sentinel-CrowdstrikeReplicatorV2-azuredeploy) [![Deploy to Azure Gov](https://aka.ms/deploytoazuregovernbutton)](https://aka.ms/sentinel-CrowdstrikeReplicatorV2-azuredeploy-gov) \t\t\t\n2. Provide the required details such as Microsoft Sentinel Workspace, CrowdStrike AWS credentials, Azure AD Application details and ingestion configurations \n> **NOTE:** Within the same resource group, you can't mix Windows and Linux apps in the same region. Select existing resource group without Windows apps in it or create new resource group. It is recommended to create a new Resource Group for deployment of function app and associated resources.\n3. Mark the checkbox labeled **I agree to the terms and conditions stated above**. \n4. Click **Purchase** to deploy."
		},
		{
			"title": "Option 2 - Manual Deployment of Azure Functions",
			"description": "Use the following step-by-step instructions to deploy the Crowdstrike Falcon Data Replicator connector manually with Azure Functions (Deployment via Visual Studio Code)."
		},
		{
			"title": "",
			"description": "**1. Deploy DCE, DCR and Custom Tables for data ingestion**\n\n1. Deploy the required DCE,  DCR(s) and the Custom Tables by using the [Data Collection Resource ARM template](https://aka.ms/sentinel-CrowdstrikeReplicatorV2-azuredeploy-data-resource) \n2. After successful deployment of DCE and DCR(s), get the below information and keep it handy (required during Azure Functions app deployment).\n\t - DCE log ingestion - Follow the instructions available at [Create data collection endpoint](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal#create-data-collection-endpoint) (Step 3).\n\t - Immutable Ids of one or more DCRs (as applicable) - Follow the instructions available at [Collect information from the DCR](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/tutorial-logs-ingestion-portal#collect-information-from-the-dcr) (Stpe 2)."
		},
		{
			"title": "",
			"description": "**2. Deploy a Function App**\n\n1. Download the [Azure Function App](https://aka.ms/sentinel-CrowdstrikeReplicatorV2-functionapp) file. Extract archive to your local development computer.\n2. Follow the [function app manual deployment instructions](https://github.com/Azure/Azure-Sentinel/blob/master/DataConnectors/AzureFunctionsManualDeployment.md#function-app-manual-deployment-instructions) to deploy the Azure Functions app using VSCode.\n3. After successful deployment of the function app, follow next steps for configuring it."
		},
		{
			"title": "",
			"description": "**3. Configure the Function App**\n\n1. Go to Azure Portal for the Function App configuration.\n2. In the Function App, select the Function App Name and select **Configuration**.\n3. In the **Application settings** tab, select ** New application setting**.\n4. Add each of the following application settings individually, with their respective string values (case-sensitive): \n\t\tAWS_KEY\n\t\tAWS_SECRET\n\t\tAWS_REGION_NAME\n\t\tQUEUE_URL\n\t\tUSER_SELECTION_REQUIRE_RAW //True if raw data is required\n\t\tUSER_SELECTION_REQUIRE_SECONDARY //True if secondary data is required\n\t\tMAX_QUEUE_MESSAGES_MAIN_QUEUE // 100 for consumption and 150 for Premium\n\t\tMAX_SCRIPT_EXEC_TIME_MINUTES // add the value of 10 here\n\t\tAZURE_TENANT_ID\n\t\tAZURE_CLIENT_ID\n\t\tAZURE_CLIENT_SECRET\n\t\tDCE_INGESTION_ENDPOINT\n\t\tNORMALIZED_DCR_ID\n\t\tRAW_DATA_DCR_ID\n\t\tEVENT_TO_TABLE_MAPPING_LINK // File is present on github. Add if the file can be accessed using internet\n\t\tREQUIRED_FIELDS_SCHEMA_LINK //File is present on github. Add if the file can be accessed using internet\n\t\tSchedule //Add value as '0 */1 * * * *' to ensure the function runs every minute.\n5. Once all application settings have been entered, click **Save**."
		}
	],
	"metadata": {
		"version": "1.0.1"
	}
}