Audit Policy Update Mechs added, both interactive & non

This commit is contained in:
=
2025-09-19 12:04:26 -04:00
parent 2c5a3de437
commit c22dfbe780
3 changed files with 81 additions and 23 deletions
+13 -23
View File
@@ -41,28 +41,12 @@ path_exclusion_constant = 4
min_files_for_path = 4 min_files_for_path = 4
threat_tolerance_constant = 4 threat_tolerance_constant = 4
""" policy_relationship_map ={ #Enforcement : Audit
Execution Types #"bf0b1f9b-bfea-4f44-97c0-80e27ff61712" : "538d3218-92f4-4943-a6ee-db9267ab62d8", #AT Servers General, AT Servers General Audit
0 = "Trusted Execution", #"31ababac-65de-4c6a-86dd-6691d7e3ee3b" : "fc05b42a-b846-4e72-88ca-c35d416e699f" #AT Epic, #AT Epic Audit
1 = "Blocked Execution", "bf0b1f9b-bfea-4f44-97c0-80e27ff61712" : "d126db36-72ed-4937-adc7-d88b7509a5b5" #AT Servers General, AT Testing
2 = "Untrusted Execution [Audit]", }
3 = "Untrusted Execution [OTP]",
4 = "Trusted Path Execution",
5 = "Trusted Publisher Execution",
6 = "Blocklist Execution",
7 = "Blocklist Execution [Audit]",
8 = "Trusted Process Execution",
9 = "Constrained Execution",
10 = "Trusted Metadata Execution",
11 = "Trusted Browser Execution",
12 = "Blocked Browser Execution",
13 = "Untrusted Browser Execution [Audit]",
14 = "Untrusted Browser Execution [OTP]",
15 = "Blocklist Browser Execution [Audit]",
16 = "Blocklist Browser Execution",
17 = "Trusted Installer Execution",
18 = "Trusted Browser Metadata Execution"
"""
def main(): def main():
@@ -83,8 +67,11 @@ def main():
apivalidation() apivalidation()
register_function("monitorOTP", utils.otpfunctions.monitorOTP) register_function("monitorOTP", utils.otpfunctions.monitorOTP)
register_function("updateAudit", utils.policyfunctions.updateAuditPoliciesFromEnforcementPolices)
if not os.path.exists("scheduling\\jobs.json"): recurring_job("monitor", "monitorOTP", interval=60, unit="seconds", args=[url, pups]) if not os.path.exists("scheduling\\jobs.json"):
recurring_job("monitorOTP", "monitorOTP", interval=60, unit="seconds", args=[url, pups])
recurring_job("updateAudit", "updateAudit", interval=10, unit="minutes", args=[url, policy_relationship_map])
else: else:
reload_jobs() reload_jobs()
start_scheduler() start_scheduler()
@@ -136,6 +123,7 @@ def menu_main():
print(ct.colorText("2. OTP", "yellow")) print(ct.colorText("2. OTP", "yellow"))
print(ct.colorText("3. Divide by Exclusion", "yellow")) print(ct.colorText("3. Divide by Exclusion", "yellow"))
print(ct.colorText("4. Prepare Policy For Enforcement", "yellow")) print(ct.colorText("4. Prepare Policy For Enforcement", "yellow"))
print(ct.colorText("5. Update Audit Policies from Enforcement Policies", "yellow"))
print(ct.colorText("Q. Quit", "yellow")) print(ct.colorText("Q. Quit", "yellow"))
choice = input(ct.colorText("\nEnter Menu Item: ", "white")) choice = input(ct.colorText("\nEnter Menu Item: ", "white"))
@@ -147,6 +135,8 @@ def menu_main():
menu_feature2() menu_feature2()
elif choice == "4": elif choice == "4":
menu_prepare_to_enforce() menu_prepare_to_enforce()
elif choice == "5":
utils.policyfunctions.updateAuditPoliciesFromEnforcementPolices(url, policy_relationship_map)
elif choice == "Q": elif choice == "Q":
break break
else: else:
Binary file not shown.
+68
View File
@@ -354,3 +354,71 @@ def sendToPolicyTest(url, first_policy, second_policy, destination_name, destina
allowlist_childhashlist = allowbyhash[allowbyhash['reputation_status'] == 'UNKNOWN']['sha256'].unique().tolist() allowlist_childhashlist = allowbyhash[allowbyhash['reputation_status'] == 'UNKNOWN']['sha256'].unique().tolist()
addHash(url, allowlist_child_id, allowlist_childhashlist) addHash(url, allowlist_child_id, allowlist_childhashlist)
def getMetaRules(url,appid):
endpoint = url + '/v1/application/export'
payload = {
"applicationid" : {appid}
}
headers = {
"X-APIKey": os.getenv('APIKEY')
}
response = requests.request("POST", endpoint, headers=headers, data=payload, verify=False)
parse_text = json.loads(response.text)
policiesnames = []
policyids = []
for index, list in enumerate(parse_text['response']['groups'], start=1):
print(ct.colorText(f"{index}. {list['name']}", "yellow"))
policiesnames.append(list['name'])
policyids.append(list['groupid'])
choice = input(ct.colorText("Select Policy Group: ", "white"))
choice = int(choice) - 1
return choice, policiesnames, policyids
def updateAuditPoliciesFromEnforcementPolices(url, policy_relationship_map):
for enforcement_policy, audit_policy in policy_relationship_map.items():
assignPoliciesfromGroup(url, enforcement_policy, audit_policy)
turnOnAudit(url, audit_policy)
def assignPoliciesfromGroup(url, source_policy_id, target_policy_id):
endpoint = url + '/v1/group/assign'
payload = {
"groupid" : {source_policy_id},
"targetgroupid" : {target_policy_id}
}
headers = {
"X-APIKey": os.getenv('APIKEY')
}
response = requests.request("POST", endpoint, headers=headers, data=payload, verify=False)
parse_text = json.loads(response.text)
print(parse_text)
def turnOnAudit(url, policyid):
endpoint = url + '/v1/group/settings/auditmode'
payload = {
"groupid" : {policyid},
"auditmode" : "1"
}
headers = {
"X-APIKey": os.getenv('APIKEY')
}
response = requests.request("POST", endpoint, headers=headers, data=payload, verify=False)
parse_text = json.loads(response.text)
print(parse_text)
def agentsInPolicy(url, policyid):
endpoint = url + '/v1/group/agents'
payload = {
"groupid" : {policyid}
}
headers = {
"X-APIKey": os.getenv('APIKEY')
}
response = requests.request("POST", endpoint, headers=headers, data=payload, verify=False)
parse_text = json.loads(response.text)
print(parse_text)