Skip to content

Commit c1f71b8

Browse files
committed
Fixing logic error
1 parent 82f3ae5 commit c1f71b8

File tree

3 files changed

+112
-5
lines changed

3 files changed

+112
-5
lines changed
+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import requests
2+
import urllib.request
3+
import urllib.parse
4+
import json
5+
import datetime
6+
7+
msdefenderAppId = "a3a1267e-08f0-4417-9d34-a0ac9636f6ea"
8+
msdefenderTenantId = "f7bab6a1-af76-41a2-a72e-0a9253b9ed40"
9+
msdefenderSecret = "n.hv7Tiax_9Z3tFv6rUtb-D.4K7yE2p-ja"
10+
msdefenderOAuthUr = 'https://login.windows.net/'
11+
12+
msdefenderSession = requests.Session()
13+
msdefenderSession.headers.update(
14+
{
15+
'Content-Type' : 'application/json'
16+
}
17+
)
18+
19+
def getToken():
20+
msdefenderAppId = "a3a1267e-08f0-4417-9d34-a0ac9636f6ea"
21+
msdefenderTenantId = "f7bab6a1-af76-41a2-a72e-0a9253b9ed40"
22+
msdefenderSecret = "n.hv7Tiax_9Z3tFv6rUtb-D.4K7yE2p-ja"
23+
msdefenderOAuthUri = 'https://login.windows.net/'
24+
msdefenderGrant = "client_credentials"
25+
msdefenderResourceAppIdUri = 'https://api.securitycenter.windows.com'
26+
url = "{}/{}/oauth2/token".format(
27+
msdefenderOAuthUri,msdefenderTenantId
28+
)
29+
30+
body = {'grant_type':msdefenderGrant, 'resource':msdefenderResourceAppIdUri, 'client_id':msdefenderAppId, 'client_secret':msdefenderSecret}
31+
32+
data = urllib.parse.urlencode(body).encode("utf-8")
33+
34+
req = urllib.request.Request(url, data)
35+
response = urllib.request.urlopen(req)
36+
jsonResponse = json.loads(response.read())
37+
token = jsonResponse["access_token"]
38+
#print(json.dumps(body))
39+
#body = str(json.dumps(body))
40+
41+
#try:
42+
# req = msdefenderSession.post(url=url, json=body)
43+
#except requests.exceptions.RequestException as e:
44+
# print(e)
45+
46+
#print(req.json)
47+
#jsonResponse = req.json()
48+
#token = req.json()
49+
#token = jsonResponse["access_token"]
50+
#url="https://httpbin.org/post"
51+
#token_r = requests.post(url, json={'grant_type':" client_credentials", 'resource': msdefenderResourceAppIdUri, 'client_id': msdefenderAppId, 'client_secret': msdefenderSecret})
52+
#print(token_r.content)
53+
54+
return token
55+
56+
def getMachineId(session,id,observable_type):
57+
time = datetime.datetime.now() - datetime.timedelta(minutes=120)
58+
time = time.strftime("%Y-%m-%dT%H:%M:%SZ")
59+
60+
if observable_type == "ip":
61+
url = "https://api.securitycenter.windows.com/api/machines/findbyip(ip='{}',timestamp={})".format(id,time)
62+
else:
63+
url = "https://api.securitycenter.windows.com/api/machines?$filter=computerDnsName+eq+'{}'".format(id)
64+
65+
try:
66+
response = session.get(url=url)
67+
if response.status_code == 200:
68+
jsonResponse = response.json()
69+
if len(response.content) > 100:
70+
return jsonResponse["value"][0]["aadDeviceId"]
71+
else:
72+
return "ERROR"
73+
except requests.exceptions.RequestException as e:
74+
print("Exception: {}".format(e))
75+
76+
def runFullVirusScan(machineId,session):
77+
url = 'https://api.securitycenter.windows.com/api/machines/{}/runAntiVirusScan'.format(machineId)
78+
79+
body = {
80+
'Comment': 'Full scan to machine due to TheHive case {}'.format("1234"),
81+
'ScanType': 'Full'
82+
}
83+
84+
try:
85+
response = session.post(url=url, json=body)
86+
if response.status_code == 201:
87+
print("message: Started full VirusScan on machine: {}".format(machine))
88+
except requests.exceptions.RequestException as e:
89+
print("Error")
90+
91+
#########
92+
#########
93+
token = getToken()
94+
#print(token)
95+
96+
msdefenderSession.headers.update(
97+
{
98+
'Accept' : 'application/json',
99+
'Content-Type' : 'application/json',
100+
'Authorization' : 'Bearer {0}'.format(token)
101+
}
102+
)
103+
104+
print("IP: " + getMachineId(msdefenderSession,"192.168.210.1","ip"))
105+
print("HOST: " + getMachineId(msdefenderSession,"laptop-6gjkth4p","hostname"))
106+
107+
#runFullVirusScan(machine,msdefenderSession)

responders/Netcraft/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test.py

responders/PaloAltoWildfire/PaloAltoWildfire.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,13 @@ def run(self):
2828
observable = self.get_param('data.data')
2929

3030
headers = {
31-
'user-agent': 'PaloAltoWildfire-Cortex-Responder'
31+
'User-Agent': 'PaloAltoWildfire-Cortex-Responder'
3232
}
3333
payload = {
34-
"apikey": self.api_key,
35-
"link": observable
34+
'apikey': (None, self.api_key),
35+
'link': (None, observable),
3636
}
37-
38-
response = requests.post(self.wildfire_url, data=payload, headers=headers)
37+
response = requests.post(self.wildfire_url, files=payload, headers=headers)
3938
if response.status_code == 200:
4039
self.report({'message': 'Observable sent to Wildfire. Message: {}'.format(response.text)})
4140
elif response.status_code == 401:

0 commit comments

Comments
 (0)