BigFix¶
Table of Contents¶
Release Notes¶
Version |
Date |
Notes |
---|---|---|
1.2.1 |
10/2023 |
Convert Workflows to Python3 |
1.2.0 |
08/2022 |
Bug fixes and update code |
1.1.2 |
08/2020 |
Added support added for App Host and Added proxy support Added selftest functionality |
1.1.1 |
08/2019 |
New configuration option ‘bigfix_endpoints_wait’. Configuration option ‘hunt_results_limit’ renamed to ‘bigfix_hunt_results_limit’. |
1.1.0 |
10/2018 |
Bug fixes and redesign for the Resilient Functions feature. Includes Bug fixes. |
1.0.0 |
10/2018 |
Initial Release |
Overview¶
SOAR Components for BigFix
BigFix is a systems-management platform for managing a large numbers of endpoints. The BigFix integration with the SOAR platform allows for the querying and updating of a BigFix deployment. The integration includes a function to query for IOCs in the BigFix environment. Returned results can be used to remediate issues or hits, such as a malicious path or filename, a service or process name, or a registry key. The integration can also be used to query properties of an endpoint.
Key Features¶
Query a BigFix server for any endpoints with IOC hits for an artifact
Remediate a hit on an endpoint or asset in a BigFix environment.
Retrieve status of a BigFix action.
Query a BigFix server for properties of an endpoint (asset).
Requirements¶
This app supports the IBM Security QRadar SOAR Platform and the IBM Security QRadar SOAR for IBM Cloud Pak for Security.
SOAR platform¶
The SOAR platform supports two app deployment mechanisms, App Host and integration server.
If deploying to a SOAR platform with an App Host, the requirements are:
SOAR platform >=
43.1.49
.The app is in a container-based format (available from the AppExchange as a
zip
file).
If deploying to a SOAR platform with an integration server, the requirements are:
SOAR platform >=
43.1.49
.The app is in the older integration format (available from the AppExchange as a
zip
file which contains atar.gz
file).Integration server is running
resilient_circuits>=43.0.0
.If using an API key account, make sure the account provides the following minimum permissions:
Name
Permissions
Org Data
Read
Function
Read
Incident fields
Edit
The following SOAR platform guides provide additional information:
App Host Deployment Guide: provides installation, configuration, and troubleshooting information, including proxy server settings.
Integration Server Guide: provides installation, configuration, and troubleshooting information, including proxy server settings.
System Administrator Guide: provides the procedure to install, configure and deploy apps.
The above guides are available on the IBM Documentation website at ibm.biz/soar-docs. On this web page, select your SOAR platform version. On the follow-on page, you can find the App Host Deployment Guide or Integration Server Guide by expanding Apps in the Table of Contents pane. The System Administrator Guide is available by expanding System Administrator.
Cloud Pak for Security¶
If you are deploying to IBM Cloud Pak for Security, the requirements are:
IBM Cloud Pak for Security >= 1.9.
Cloud Pak is configured with an App Host.
The app is in a container-based format (available from the AppExchange as a
zip
file).
The following Cloud Pak guides provide additional information:
App Host Deployment Guide: provides installation, configuration, and troubleshooting information, including proxy server settings. From the Table of Contents, select Case Management and Orchestration & Automation > Orchestration and Automation Apps.
System Administrator Guide: provides information to install, configure, and deploy apps. From the IBM Cloud Pak for Security IBM Documentation table of contents, select Case Management and Orchestration & Automation > System administrator.
These guides are available on the IBM Documentation website at ibm.biz/cp4s-docs. From this web page, select your IBM Cloud Pak for Security version. From the version-specific IBM Documentation page, select Case Management and Orchestration & Automation.
Proxy Server¶
The app does support a proxy server.
Python Environment¶
Both Python 3.9 and Python 3.6 are supported. Additional package dependencies may exist for each of these packages:
resilient_circuits>=43.0.0
Installation¶
Install¶
To install or uninstall an App or Integration on the SOAR platform, see the documentation at ibm.biz/soar-docs.
To install or uninstall an App on IBM Cloud Pak for Security, see the documentation at ibm.biz/cp4s-docs and follow the instructions above to navigate to Orchestration and Automation.
App Configuration¶
The following table provides the settings you need to configure the app. These settings are made in the app.config file. See the documentation discussed in the Requirements section for the procedure.
Config |
Required |
Example |
Description |
---|---|---|---|
bigfix_endpoints_wait |
Yes |
|
Time to wait in seconds for bigfix endpoint to respond to query |
bigfix_hunt_results_limit |
Yes |
|
The max number of results to be returned from a query |
bigfix_pass |
Yes |
|
Bigfix user password |
bigfix_polling_interval |
Yes |
|
Time to wait in seconds between polling calls |
bigfix_polling_timeout |
Yes |
|
** |
bigfix_port |
Yes |
|
Port to communicate with bigfix server |
bigfix_url |
Yes |
|
URl to the bigfix server |
bigfix_user |
Yes |
|
Bigfix username |
Custom Layouts¶
Import the Data Tables and Custom Fields like the screenshot below:
Function - BigFix Action Status¶
Retrieve status of a BigFix action.
Inputs:
Name |
Type |
Required |
Example |
Tooltip |
---|---|---|---|---|
|
|
Yes |
|
BigFix action id. |
Outputs:
NOTE: This example might be in JSON format, but
results
is a Python Dictionary on the SOAR platform.
results = {
"content": {
"status": "OK",
"status_message": "The Fixlet which this action addresses is not relevant on this machine."
},
"inputs": {
"bigfix_action_id": 48
},
"metrics": {
"execution_time_ms": 60372,
"host": "local",
"package": "fn-bigfix",
"package_version": "1.2.0",
"timestamp": "2022-08-08 14:07:26",
"version": "1.0"
},
"raw": null,
"reason": null,
"success": true,
"version": 2.0
}
Example Pre-Process Script:
inputs.bigfix_action_id = row.res_bigfix_action_id
Example Post-Process Script:
result = results.get('content')
status = result.get("status")
status_message = result.get("status_message")
action_id = row.res_bigfix_action_id
if (status and (status == "OK" or status == "Failed")):
row.res_remediation_status = status_message
noteText = "Big Fix Integration: Big Fix Action ID <b>'{}'</b> finished with status <b>'{}'</b>." \
.format(action_id, status_message)
else:
noteText = "Big Fix Integration: Big Fix Action ID <b>'{}'</b> unsuccessful.".format(action_id)
incident.addNote(helper.createRichText(noteText))
Function - BigFix Artifact¶
Query a BigFix server for any endpoints with hits for an artifact.
The supported artifact types are: IP Address, Process Name, Service, File path, Registry Key (MS Windows registry key)
Inputs:
Name |
Type |
Required |
Example |
Tooltip |
---|---|---|---|---|
|
|
Yes |
|
Resilient artifact id. |
|
|
No |
|
Resilient artifact property used when artifact type = ‘Registry Key’. |
|
|
No |
|
Resilient artifact property used when artifact type = ‘Registry Key’. |
|
|
Yes |
|
Resilient artifact type can be assigned from from incident or Datatable row. |
|
|
Yes |
|
Resilient artifact value can be assigned from from incident or Datatable row. |
|
|
Yes |
|
Resilient incident id. |
|
|
Yes |
|
Resilient incident field. |
Outputs:
NOTE: This example might be in JSON format, but
results
is a Python Dictionary on the SOAR platform.
results = {
"content": {
"endpoint_hits": [
{
"computer_id": 12315195,
"computer_name": "bigfix.test",
"failure": false,
"query_id": 1,
"resp_time": 0,
"result": "False"
}
],
"hits_count": 1,
"hits_over_limit": false,
"query_execution_date": "08-08-2022 14:05:48"
},
"inputs": {
"bigfix_artifact_id": 30,
"bigfix_artifact_type": "Process Name",
"bigfix_artifact_value": "Run Intel SA-00086 Vulnerability Detection Tool",
"bigfix_incident_id": 2111,
"bigfix_incident_plan_status": "A"
},
"metrics": {
"execution_time_ms": 15313,
"host": "local",
"package": "fn-bigfix",
"package_version": "1.2.0",
"timestamp": "2022-08-08 14:05:48",
"version": "1.0"
},
"raw": null,
"reason": null,
"success": true,
"version": 2.0
}
Example Pre-Process Script:
inputs.bigfix_artifact_id = artifact.id
inputs.bigfix_artifact_value = artifact.value
inputs.bigfix_artifact_type = artifact.type
if artifact.properties:
inputs.bigfix_artifact_properties_name = artifact.properties[0]["name"]
inputs.bigfix_artifact_properties_value = artifact.properties[0]["value"]
inputs.bigfix_incident_id = incident.id
inputs.bigfix_incident_plan_status = incident.plan_status
Example Post-Process Script:
noteText = u"BigFix Integration: Ran query for artifact id {} of type {} and value {}.".format(artifact.id, artifact.type, artifact.value)
if results.get("content"):
content = results.get("content")
endpoint_hits = content.get("endpoint_hits")
hits_count = content.get("hits_count")
query_execution_date = content.get("query_execution_date")
hits_over_limit = content.get("hits_over_limit")
att_name = content.get("att_name")
if hits_over_limit:
noteText += "There were {} hits found. Added as an attachment. Attachment name: {}".format(hits_count, att_name)
elif endpoint_hits:
noteText += "There were {} hits found.".format(hits_count)
for eh in endpoint_hits:
newrow = incident.addRow('res_bigfix_query_results')
newrow["res_query_execution_date"] = query_execution_date
newrow["res_remediation_status"] = "None"
newrow["res_artifact_type"] = artifact.type
newrow["res_artifact_value"] = artifact.value
newrow["res_bigfix_computer_id"] = eh.get("computer_id")
newrow["res_bigfix_computer_name"] = eh.get("computer_name")
else:
noteText += "There were no hits found."
incident.addNote(noteText)
Function - BigFix Assets¶
Query a BigFix server for properties of an endpoint (asset).
Inputs:
Name |
Type |
Required |
Example |
Tooltip |
---|---|---|---|---|
|
|
Yes |
|
BigFix asset or endpoint id, assigned from datatable entry. |
|
|
Yes |
|
BigFix asset or endpoint name, assigned from datatable entry. |
|
|
Yes |
|
Resilient incident id. |
Outputs:
NOTE: This example might be in JSON format, but
results
is a Python Dictionary on the SOAR platform.
results = {
"content": {
"att_name": "bigfix-properties-bigfix.test-20220808.xml",
"status": "OK"
},
"inputs": {
"bigfix_asset_id": 12315195,
"bigfix_asset_name": "bigfix.test",
"bigfix_incident_id": 2111
},
"metrics": {
"execution_time_ms": 1708,
"host": "local",
"package": "fn-bigfix",
"package_version": "1.2.0",
"timestamp": "2022-08-08 14:06:13",
"version": "1.0"
},
"raw": null,
"reason": null,
"success": true,
"version": 2.0
}
Example Pre-Process Script:
inputs.bigfix_asset_name = row.res_bigfix_computer_name
inputs.bigfix_asset_id = row.res_bigfix_computer_id
inputs.bigfix_incident_id = incident.id
Example Post-Process Script:
result = results.get("content")
status = result.get("status")
status_note = result.get("status_note")
att_name = result.get("att_name")
if status and status == "OK":
noteText = u"BigFix Integration: Ran query for BigFix Asset id <b>'{}'</b> and name <b>'{}'</b>. " \
"Added as an attachment. Attachment name: <b>{}</b> "\
.format(row.res_bigfix_computer_id, unicode(row.res_bigfix_computer_name), att_name)
else:
noteText = u"BigFix Integration: Query unsuccessful for BigFix Asset id <b>'{}'</b> and name <b>'{}'</b>."\
.format(row.res_bigfix_computer_id, unicode(row.res_bigfix_computer_name))
incident.addNote(helper.createRichText(noteText))
Function - BigFix Remediation¶
Remediate a hit on an endpoint or asset in a BigFix environment.
The supported artifact types are: Process Name, Service, File path, Registry Key (MS Windows registry key)
Inputs:
Name |
Type |
Required |
Example |
Tooltip |
---|---|---|---|---|
|
|
Yes |
|
Resilient artifact type can be assigned from from incident or Datatable row. |
|
|
Yes |
|
Resilient artifact value can be assigned from from incident or Datatable row. |
|
|
Yes |
|
BigFix asset or endpoint id, assigned from datatable entry. |
|
|
Yes |
|
Resilient incident id. |
Outputs:
NOTE: This example might be in JSON format, but
results
is a Python Dictionary on the SOAR platform.
results = {
"content": {
"action_id": "48",
"remediation_date": "08-08-2022 14:06:24",
"status": "OK",
"status_message": "BigFix action created successfully."
},
"inputs": {
"bigfix_artifact_type": "Process Name",
"bigfix_artifact_value": "Run Intel SA-00086 Vulnerability Detection Tool",
"bigfix_asset_id": 12315195,
"bigfix_incident_id": 2111
},
"metrics": {
"execution_time_ms": 412,
"host": "local",
"package": "fn-bigfix",
"package_version": "1.2.0",
"timestamp": "2022-08-08 14:06:24",
"version": "1.0"
},
"raw": null,
"reason": null,
"success": true,
"version": 2.0
}
Example Pre-Process Script:
inputs.bigfix_asset_id = row.res_bigfix_computer_id
inputs.bigfix_artifact_value = row.res_artifact_value
inputs.bigfix_artifact_type = row.res_artifact_type.content
inputs.bigfix_incident_id = incident.id
Example Post-Process Script:
result = results.get("content")
status = result.get("status")
action_id = result.get("action_id")
if status and status == "OK":
row.res_remediation_status = result.get("status_message")
row.res_remediation_date = result.get("remediation_date")
row.res_bigfix_action_id = action_id
noteText = u"Big Fix Integration: Action created successfully to remediate artifact value <b>'{}'</b> " \
"and type <b>'{}'</b> on endpoint <b>'{}'</b>. BigFix Action ID <b>'{}'</b>."\
.format(unicode(row.res_artifact_value), row.res_artifact_type.content, unicode(row.res_bigfix_computer_name), action_id)
else:
noteText = u"Big Fix Integration: Action creation unsuccessful to remediate artifact value <b>'{}'</b> " \
"and type <b>'{}'</b> on endpoint <b>'{}'</b>."\
.format(unicode(row.res_artifact_value), row.res_artifact_type.content, unicode(row.res_bigfix_computer_name))
incident.addNote(helper.createRichText(noteText))
Data Table - BigFix Query Results¶
API Name:¶
res_bigfix_query_results
Columns:¶
Column Name |
API Access Name |
Type |
Tooltip |
---|---|---|---|
Artifact Type |
|
|
- |
Artifact Value |
|
|
- |
BigFix Action ID |
|
|
- |
BigFix Computer ID |
|
|
- |
BigFix Computer Name |
|
|
- |
Query Execution Date |
|
|
- |
Remediation Date |
|
|
- |
Remediation Status |
|
|
- |
Rules¶
Rule Name |
Object |
Workflow Triggered |
---|---|---|
Example: BigFix Query for Artifact |
artifact |
|
Example: BigFix Remediate |
res_bigfix_query_results |
|
Example: BigFix Retrieve Resource Details |
res_bigfix_query_results |
|
Example: BigFix Update Action status |
res_bigfix_query_results |
|
Troubleshooting & Support¶
Refer to the documentation listed in the Requirements section for troubleshooting information.
For Support¶
This is a IBM Community provided App. Please search the Community ibm.biz/soarcommunity for assistance.