id: IP Enrichment - Generic v2 version: -1 fromversion: 5.0.0 name: IP Enrichment - Generic v2 description: |- Enrich IP addresses using one or more integrations. - Resolve IP addresses to hostnames (DNS) - Provide threat information - Determine IP address reputation using the !ip command - Separate internal and external IP addresses - For internal IP addresses, get host information. When executing this playbook through IP Enrichment - Generic v2, IP classification and resolution will be handled by the main playbook, improving performance. starttaskid: "0" tasks: "0": id: "0" taskid: af133db3-bee0-4542-8d41-042900b926fc type: start task: id: af133db3-bee0-4542-8d41-042900b926fc version: -1 name: "" iscommand: false brand: "" description: '' nexttasks: '#none#': - "28" separatecontext: false view: |- { "position": { "x": 265, "y": 50 } } note: false timertriggers: [] ignoreworker: false continueonerrortype: "" skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "24": id: "24" taskid: 7ae24ea0-00d1-4459-8c71-f2cfbaea117f type: title task: id: 7ae24ea0-00d1-4459-8c71-f2cfbaea117f version: -1 name: Done type: title iscommand: false brand: "" description: '' separatecontext: false view: |- { "position": { "x": 265, "y": 1520 } } note: false timertriggers: [] ignoreworker: false continueonerrortype: "" skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "25": id: "25" taskid: d6e505bb-5266-4b41-8f70-e47d9b7024fc type: playbook task: id: d6e505bb-5266-4b41-8f70-e47d9b7024fc version: -1 name: IP Enrichment - External - Generic v2 description: |- Enrich IP addresses using one or more integrations. - Resolve IP addresses to hostnames (DNS). - Provide threat information. - IP address reputation using !ip command. - Separate internal and external addresses. playbookName: IP Enrichment - External - Generic v2 type: playbook iscommand: false brand: "" nexttasks: '#none#': - "24" scriptarguments: IP: complex: root: . transformers: - operator: If-Then-Else args: condition: value: simple: lhs==rhs conditionB: {} conditionInBetween: {} else: value: simple: inputs.IP iscontext: true equals: {} lhs: value: simple: inputs.ExecutedFromParent iscontext: true lhsB: {} options: {} optionsB: {} rhs: value: simple: "True" rhsB: {} then: value: simple: ${IP(val.InRange=="no").Address} iscontext: true - operator: uniq InternalRange: complex: root: inputs.InternalRange transformers: - operator: uniq ResolveIP: complex: root: inputs.ResolveIP UseReputationCommand: complex: root: inputs.UseReputationCommand extended_data: complex: root: inputs.extended_data threat_model_association: complex: root: inputs.threat_model_association ExecutedFromParent: complex: root: inputs.ExecutedFromParent separatecontext: true loop: iscommand: false exitCondition: "" wait: 1 max: 0 view: |- { "position": { "x": 1070, "y": 1350 } } note: false timertriggers: [] ignoreworker: false continueonerrortype: "" skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "26": id: "26" taskid: 2d760e89-be66-4b36-8254-47a1825c7486 type: playbook task: id: 2d760e89-be66-4b36-8254-47a1825c7486 version: -1 name: IP Enrichment - Internal - Generic v2 description: |- Enrich Internal IP addresses using one or more integrations. - Resolve IP address to hostname (DNS) - Separate internal and external IP addresses - Get host information for IP addresses playbookName: IP Enrichment - Internal - Generic v2 type: playbook iscommand: false brand: "" nexttasks: '#none#': - "24" scriptarguments: IP: complex: root: . transformers: - operator: If-Then-Else args: condition: value: simple: lhs==rhs conditionB: {} conditionInBetween: {} else: value: simple: inputs.IP iscontext: true equals: iscontext: true lhs: value: simple: inputs.ExecutedFromParent iscontext: true lhsB: {} options: {} optionsB: {} rhs: value: simple: "True" rhsB: {} then: value: simple: ${IP(val.InRange=="yes").Address} iscontext: true - operator: uniq InternalRange: complex: root: inputs.InternalRange transformers: - operator: uniq ResolveIP: complex: root: inputs.ResolveIP ExecutedFromParent: complex: root: inputs.ExecutedFromParent Hostnames: simple: |- ${.=getHostname(val.Endpoint, getIpInRange(val.IP)); function getHostname(x, y){ res = []; for (i=0; i