01-07-2022 10:41 AM
Hi guys,
I have created a code in python for checking some unwanted softwares like anydesk.exe using Cisco Orbital .
client_id = 'THREATRESPONSE_CLIENT_ID' client_password = 'THREATRESPONSE_CLIENT_PASSWORD' computers_list = [] url = 'https://visibility.amp.cisco.com/iroh/oauth2/token' headers = {'Content-Type':'application/x-www-form-urlencoded', 'Accept':'application/json'} payload = {'grant_type':'client_credentials'} request = requests.post(url, headers=headers, auth=(client_id, client_password), data=payload) token = request.json()['access_token'] orb_headers = { 'Authorization': 'Bearer ' + token } response = requests.get(url='https://orbital.amp.cisco.com/v0/jobs/<jobquerycode>/results', headers=orb_headers) response_json = response.json() for item in response_json["results"]: for i in item['osQueryResult'][0]['values']: if i == 'AnyDesk.exe': computer = item['hostinfo']['hostname'] if computer not in computers_list: computers_list.append(computer) print('Computers with programs not authorized:\n') for computer in computers_list: print(computer)
I could create a simple securex workflow with the python code above and its working fine:
BUT I'd like to move this python code to atomic actions and I'm lost when creating a for looping inside a for looping checking a "json array".
The SecureX Documentation https://ciscosecurity.github.io/sxo-05-security-workflows/activities/jsonpath-query helps a lot when talking about jsonpath, and I'm a little familiar thanks for that and the website https://jsonpath.com/ helped with the JSONPath Syntax $.osQueryResult[0].values[:] to get the content I could work with.
Now I need to to go through each value inside this json array called "values" in each computer.
{ "node": "OXhMF1DwWjblahdusg1-sJAw", "ampuuid": "", "lastseen": null, "osQuery": [ { "types": [ "file_name", "file_path", "ip", "listening_ports_protocol", "transport_port" ], "sql": "SELECT p.name, p.path, lp.address, lp.protocol, lp.port \\nFROM listening_ports lp LEFT JOIN processes p ON lp.pid = p.pid \\nWHERE lp.port != 0 \\nAND lp.address!=\\\\\"127.0.0.1\\\\\" \\nAND lp.address!=\\\\\"::1\\\\\" \\nAND p.path NOT LIKE \\\\\"c:\\windows\\system32\\%\\\\\" \\nAND p.path NOT LIKE \\\\\"/usr/sbin/%\\\\\" \\nAND p.path NOT LIKE \\\\\"/sbin/%\\\\\" \\nAND p.path NOT LIKE \\\\\"/usr/libexec/%\\\\\";\\n", "label": "listening_ports", "name": "Listening Ports" } ], "osQueryResult": [ { "types": [ "file_name", "file_path", "ip", "", "" ], "columns": [ "name", "path", "address", "protocol", "port" ], "values": [ "System", "", "0.0.0.0", "6", "445", "winvnc.exe", "C:\\Program Files\\uvnc bvba\\UltraVNC\\winvnc.exe", "0.0.0.0", "6", "5800", "winvnc.exe", "C:\\Program Files\\uvnc bvba\\UltraVNC\\winvnc.exe", "0.0.0.0", "6", "12344", "System", "", "10.0.20.20", "6", "139", "System", "", "::", "6", "445", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "0.0.0.0", "17", "5353", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "0.0.0.0", "17", "5353", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "0.0.0.0", "17", "49307", "System", "", "10.0.20.20", "17", "137", "System", "", "10.0.20.20", "17", "138", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "10.0.20.20", "17", "5353", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "::", "17", "5353", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "::", "17", "49308" ], "error": "", "secs": 0.17353829741477966, "label": "listening_ports", "name": "Listening Ports" } ], "error": { "en": "" }, "hostinfo": { "osinfo": { "os": "windows", "osname": "Windows 10 Enterprise LTSC 2019", "release": "6.3", "version": "10.0.17763", "arch": "amd64" }, "hostname": "computer-teste", "fqdn": { "10.0.20.20": "computer-teste.dominio.com.br", "169.254.89.171": "computer-teste.dominio.com.br", "fe80::ac20:48ea:d0ab:59ab": "computer-teste.dominio.com.br" }, "interfaces": { "Ethernet": { "name": "Ethernet", "mac": "1c:1b:0d:a8:0c:52", "ipv4": "10.0.20.20/24", "ipv6": "fe80::ac20:48ea:d0ab:59ab/64", "active": true } }, "external": { "name": "", "mac": "", "ipv4": "203.203.203.203", "active": true }, "updated": "2022-01-02T15:57:33.0877151Z", "version": "1.14.18", "osqueryversion": "", "machine": "", "anyconnectudid": "" }, "rowcount": 14 }
As a SecureX workflow base I'm using https://ciscosecurity.github.io/sxo-05-security-workflows/workflows/orbital/0009-cve-hunt-to-servicenow
Now i'm trying to create what i have created in the python code lines 22-28 but this second for looping I have created it's not looping in the json array "values":
"values": [ "System", "", "0.0.0.0", "6", "445", "winvnc.exe", "C:\\Program Files\\uvnc bvba\\UltraVNC\\winvnc.exe", "0.0.0.0", "6", "5800", "winvnc.exe", "C:\\Program Files\\uvnc bvba\\UltraVNC\\winvnc.exe", "0.0.0.0", "6", "12344", "System", "", "10.0.20.20", "6", "139", "System", "", "::", "6", "445", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "0.0.0.0", "17", "5353", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "0.0.0.0", "17", "5353", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "0.0.0.0", "17", "49307", "System", "", "10.0.20.20", "17", "137", "System", "", "10.0.20.20", "17", "138", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "10.0.20.20", "17", "5353", "chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "::", "17", "5353", "nvcontainer.exe", "C:\\Program Files\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe", "::", "17", "49308" ]
The parte of securex workflow I'm working in:
In the picture above I'm trying to create a table with each value in the 'json array' "values" but unfortunately using the 'Read Table From Json' flagging the 'Populating columns from json' using json path '$.osQueryResult[0].values' it's bringing all values in a single line instead mutiples for each value:
All values are in a single column of table and it's not slicing if I use $.osQueryResult[0].values[:]
Is there someone who knows how to create a table with the 'json array'? I know how to do it with json objects in key:value pairs but I don't know how check it in a json array.
Maybe there's another solution, any idea?
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide