Skip to content

Commit e5f16e9

Browse files
committed
bug fixes, performance improvements
AddNote transform Samba Users from enum4linux
1 parent 2ad7a6b commit e5f16e9

22 files changed

Lines changed: 288 additions & 129 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ msploitego/src/msploitego/transforms/common/scratch\.py
1313
/msploitego/src/msploitego/transforms/smblistshares.py
1414
/msploitego/src/msploitego/transforms/toHashFile.py
1515
/msploitego/src/msploitego/transforms/enum4linuxlive.py
16+
/msploitego/src/msploitego/transforms/enum4sambashare.py
16.8 KB
Loading
94.6 KB
Binary file not shown.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from pprint import pprint
2+
3+
from common.MaltegoTransform import *
4+
from common.corelib import inheritvalues
5+
6+
__author__ = 'Marc Gurreri'
7+
__copyright__ = 'Copyright 2018, msploitego Project'
8+
__credits__ = []
9+
__license__ = 'GPLv3'
10+
__version__ = '0.1'
11+
__maintainer__ = 'Marc Gurreri'
12+
__email__ = 'marcgurreri@gmail.com'
13+
__status__ = 'Development'
14+
15+
def dotransform(args):
16+
mt = MaltegoTransform()
17+
# mt.debug(pprint(args))
18+
mt.parseArguments(args)
19+
noteon = mt.getValue()
20+
noteent = mt.addEntity("msploitego.Note", "Note:{}".format(noteon))
21+
noteent.setValue("Note:{}".format(noteon))
22+
noteent.addAdditionalFields("note", "Note", False, "")
23+
noteent.addAdditionalFields("link", "Link", False, "")
24+
inheritvalues(noteent,mt.values)
25+
mt.returnOutput()
26+
27+
dotransform(sys.argv)
28+
# dotransform(args)

msploitego/src/msploitego/transforms/bannergrab.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import re
21
from pprint import pprint
3-
42
from common.nsescriptlib import scriptrunner
53
from common.MaltegoTransform import *
64
import sys
75

8-
from common.corelib import bucketparser
9-
106
__author__ = 'Marc Gurreri'
117
__copyright__ = 'Copyright 2018, msploitego Project'
128
__credits__ = []
@@ -17,25 +13,25 @@
1713
__status__ = 'Development'
1814

1915
def dotransform(args):
20-
global nmap_proc
2116
mt = MaltegoTransform()
2217
# mt.debug(pprint(args))
2318
mt.parseArguments(args)
2419
ip = mt.getVar("ip")
2520
port = mt.getVar("port")
2621

27-
rep = scriptrunner("80", "banner", ip)
22+
rep = scriptrunner(port, "banner", ip, args="-sV")
2823
if rep:
29-
for scriptrun in rep.hosts[0].services[0].scripts_results:
30-
regex = re.compile("^\s+Path:")
31-
results = bucketparser(regex,scriptrun.get("output").split("\n"))
32-
for res in results:
33-
k,v = res.get("Header").split(":",1)
34-
commententity = mt.addEntity("msploitego.SourceCodeComment", v)
35-
commententity.setValue(v)
36-
commententity.addAdditionalFields("comment", "Comment", False, "\n".join(res.get("Details")))
37-
commententity.addAdditionalFields("linenumber", "Line Number", False, res.get("Line number"))
38-
commententity.addAdditionalFields("path", "Path", False, v)
24+
pprint(rep)
25+
# for scriptrun in rep.hosts[0].services[0].scripts_results:
26+
# regex = re.compile("^\s+Path:")
27+
# results = bucketparser(regex,scriptrun.get("output").split("\n"))
28+
# for res in results:
29+
# k,v = res.get("Header").split(":",1)
30+
# commententity = mt.addEntity("msploitego.SourceCodeComment", v)
31+
# commententity.setValue(v)
32+
# commententity.addAdditionalFields("comment", "Comment", False, "\n".join(res.get("Details")))
33+
# commententity.addAdditionalFields("linenumber", "Line Number", False, res.get("Line number"))
34+
# commententity.addAdditionalFields("path", "Path", False, v)
3935
else:
4036
mt.addUIMessage("host is either down or not responding in this port")
4137
mt.returnOutput()

msploitego/src/msploitego/transforms/common/corelib.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,17 @@
1616
'static_var',
1717
'bucketparser',
1818
'checkAndConvertToAscii',
19-
'getFileContents'
19+
'getFileContents',
20+
'inheritvalues'
2021
]
2122

23+
noinheritfields = ["niktofile", "properties.", "created_at","updated_at","datastore"]
24+
25+
def inheritvalues(ent,values):
26+
for k,v in values.items():
27+
if v and v.strip() and not any(x in k for x in noinheritfields):
28+
ent.addAdditionalFields(k, k.capitalize(), False, v)
29+
2230
def static_var(varname, value):
2331
def decorate(func):
2432
setattr(func, varname, value)

msploitego/src/msploitego/transforms/common/postgresdb.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ def getServices(self,hostid):
5757
return self._cur.fetchall()
5858

5959
def getSessions(self,wid):
60-
sql = "SELECT sessions.id, sessions.host_id, sessions.stype, sessions.via_exploit, sessions.via_payload, sessions.desc, sessions.port, sessions.platform,sessions.opened_at, sessions.closed_at, sessions.close_reason, sessions.local_id, sessions.last_seen, sessions.module_run_id, hosts.workspace_id as workspaceid FROM public.sessions, public.hosts, public.workspaces WHERE hosts.id = sessions.host_id AND workspaces.id = hosts.workspace_id AND hosts.workspace_id = {};".format(wid)
60+
sql = "SELECT sessions.id as sessionid, sessions.host_id, sessions.stype, sessions.via_exploit, sessions.via_payload, sessions.desc as sessiondescription, sessions.port, sessions.platform,sessions.opened_at, sessions.closed_at, sessions.close_reason, sessions.local_id, sessions.last_seen, sessions.module_run_id, hosts.workspace_id as workspaceid, hosts.address as ip FROM public.sessions, public.hosts, public.workspaces WHERE hosts.id = sessions.host_id AND workspaces.id = hosts.workspace_id AND hosts.workspace_id = {};".format(wid)
61+
self._cur.execute(sql)
62+
return self._cur.fetchall()
63+
64+
def getSessionsForHost(self,hostid):
65+
sql = "SELECT hosts.address AS ip, sessions.host_id AS hostid, sessions.stype AS sessiontype, sessions.via_exploit, sessions.via_payload, sessions.desc AS sessiondescription, sessions.port, sessions.platform, sessions.opened_at, sessions.closed_at, sessions.close_reason, sessions.local_id AS localid, sessions.last_seen, sessions.module_run_id, sessions.id AS sessionid FROM public.hosts, public.sessions WHERE hosts.id = sessions.host_id AND hosts.id = {};".format(hostid)
6166
self._cur.execute(sql)
6267
return self._cur.fetchall()
6368

msploitego/src/msploitego/transforms/common/servicefactory.py

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,25 @@
1010
__email__ = 'marcgurreri@gmail.com'
1111
__status__ = 'Development'
1212

13+
webservices = ["http", "https", "possible_wls", "www", "ncacn_http", "ccproxy-http", "ssl/http","http-proxy"]
14+
sambaservices = ["samba", "netbios-ssn", "smb", "microsoft-ds", "netbios-ns", "netbios-dgm", "netbios"]
15+
1316
def getserviceentity(s):
1417
entityname = "msploitego.MetasploitService"
1518
try:
16-
servicename = s.get("servicename")
19+
servicename = s.get("servicename").lower()
1720
except AttributeError:
1821
servicename = "NoName"
1922
try:
20-
serviceinfo = s.get("info")
23+
serviceinfo = s.get("info").lower()
2124
except AttributeError:
2225
serviceinfo = None
2326
if s.get("state").lower() in ["filtered", "closed"]:
2427
return "msploitego.ClosedPort"
2528
else:
2629
if not servicename and not serviceinfo.strip():
2730
return "msploitego.MetasploitService"
28-
if servicename in ["http", "https", "possible_wls", "www", "ncacn_http", "ccproxy-http", "ssl/http",
29-
"http-proxy"]:
31+
if any(x in servicename for x in webservices):
3032
if serviceinfo:
3133
if "iis" in s.get("info").lower():
3234
return "msploitego.IISWebservice"
@@ -77,14 +79,13 @@ def getserviceentity(s):
7779
return "msploitego.WebService"
7880
elif s.get("port") == "32768":
7981
return "msploitego.PotentialBackdoor"
80-
elif any(
81-
x in servicename for x in ["samba", "netbios-ssn", "smb", "microsoft-ds", "netbios-ns", "netbios-dgm", "netbios"]):
82+
elif any(x in servicename for x in sambaservices):
8283
return "msploitego.SambaService"
8384
elif servicename == "ssh":
8485
return "msploitego.SSHService"
8586
elif servicename in ["dns", "mdns", "domain"]:
8687
return "msploitego.DNSService"
87-
elif "rpc" in servicename:
88+
elif any(x in servicename for x in ["rpc","portmap"]):
8889
return "msploitego.RPC"
8990
elif "epmap" in servicename:
9091
return "msploitego.epmap"
@@ -104,111 +105,111 @@ def getserviceentity(s):
104105
return "msploitego.finger"
105106
elif "imap" in servicename:
106107
return "msploitego.imap"
107-
elif "winrm" in servicename.lower():
108+
elif "winrm" in servicename:
108109
return "msploitego.winrm"
109-
elif "nmap" in servicename.lower():
110+
elif "nmap" in servicename:
110111
return "msploitego.Nmap"
111-
elif "ldap" in servicename.lower():
112+
elif "ldap" in servicename:
112113
return "msploitego.LDAP"
113-
elif "compressnet" in servicename.lower():
114+
elif "compressnet" in servicename:
114115
return "msploitego.compressnet"
115-
elif "ansys" in servicename.lower():
116+
elif "ansys" in servicename:
116117
return "msploitego.ansys"
117-
elif "boinc" in servicename.lower():
118+
elif "boinc" in servicename:
118119
return "msploitego.boinc"
119-
elif "bakbone" in servicename.lower():
120+
elif "bakbone" in servicename:
120121
return "msploitego.bakbonenetvault"
121-
elif "cisco" in servicename.lower():
122+
elif "cisco" in servicename:
122123
return "msploitego.CISCO"
123124
elif "ntp" in servicename:
124125
return "msploitego.ntp"
125126
elif "dhcp" in servicename:
126127
return "msploitego.DHCP"
127-
elif "dbase" in servicename.lower():
128+
elif "dbase" in servicename:
128129
return "msploitego.dBase"
129-
elif "chargen" in servicename.lower():
130+
elif "chargen" in servicename:
130131
return "msploitego.chargen"
131132
elif "directplaysrvr" in servicename:
132133
return "msploitego.directplaysrvr"
133-
elif "smtp" in servicename.lower():
134+
elif "smtp" in servicename:
134135
return "msploitego.smtp"
135-
elif "ident" in servicename.lower():
136+
elif "ident" in servicename:
136137
return "msploitego.ident"
137-
elif any(x in servicename.lower() for x in ["snmp", "smux"]):
138+
elif any(x in servicename for x in ["snmp", "smux"]):
138139
return "msploitego.SNMP"
139140
elif "tcpwrapped" in servicename:
140141
return "msploitego.tcpwrapped"
141142
elif "mysql" in servicename:
142143
return "msploitego.mysql"
143-
elif any(x in servicename.lower() for x in ["mssql", "ms-sql", "dbm"]):
144+
elif any(x in servicename for x in ["mssql", "ms-sql", "dbm"]):
144145
return "msploitego.mssql"
145146
elif any(x in servicename for x in ["nat-pmp", "upnp", "natpmp"]):
146147
return "msploitego.natpmp"
147-
elif any(x in servicename.lower() for x in ["confluent", "kafka"]):
148+
elif any(x in servicename for x in ["confluent", "kafka"]):
148149
return "msploitego.ApacheKafka"
149150
elif any(x in servicename for x in ["ndmp"]):
150151
return "msploitego.NAS"
151-
elif any(x in servicename.lower() for x in ["neod", "corba"]):
152+
elif any(x in servicename for x in ["neod", "corba"]):
152153
return "msploitego.ObjectRequestBroker"
153154
elif "ajp" in servicename:
154155
return "msploitego.ajp"
155-
elif "llmnr" in servicename.lower():
156+
elif "llmnr" in servicename:
156157
return "msploitego.llmnr"
157-
elif any(x in servicename.lower() for x in ["keysrvr", "keyshadow"]):
158+
elif any(x in servicename for x in ["keysrvr", "keyshadow"]):
158159
return "msploitego.KeyServer"
159-
elif servicename.lower() in ["kerberos", "kpasswd5", "kerberos-sec", "krb524"]:
160+
elif servicename in ["kerberos", "kpasswd5", "kerberos-sec", "krb524"]:
160161
return "msploitego.kerberos"
161-
elif "msexchange-logcopier" in servicename.lower():
162+
elif "msexchange-logcopier" in servicename:
162163
return "msploitego.MSExchangeLogCopier"
163-
elif any(x in servicename.lower() for x in ["nfs", "lockd", "amiganetfs"]):
164+
elif any(x in servicename for x in ["nfs", "lockd", "amiganetfs","mountd","nlockmgr"]):
164165
return "msploitego.nfsacl"
165-
elif "x11" in servicename.lower():
166+
elif "x11" in servicename:
166167
return "msploitego.X11"
167-
elif re.search("\bsip\b|sip-proxy", servicename.lower(), re.I):
168+
elif re.search("\bsip\b|sip-proxy", servicename, re.I):
168169
return "msploitego.SIP"
169-
elif "fmtp" in servicename.lower():
170+
elif "fmtp" in servicename:
170171
return "msploitego.fmtp"
171-
elif "telnet" in servicename.lower():
172+
elif "telnet" in servicename:
172173
return "msploitego.telnet"
173-
elif any(x in servicename.lower() for x in ["rdp", "xdmcp"]):
174+
elif any(x in servicename for x in ["rdp", "xdmcp"]):
174175
return "msploitego.rdp"
175-
elif "ipp" in servicename.lower():
176+
elif "ipp" in servicename:
176177
return "msploitego.ipp"
177-
elif "vnc" in servicename.lower():
178+
elif "vnc" in servicename:
178179
return "msploitego.vnc"
179-
elif "wap-wsp" in servicename.lower():
180+
elif "wap-wsp" in servicename:
180181
return "msploitego.wapwsp"
181-
elif "blackjack" in servicename.lower():
182+
elif "blackjack" in servicename:
182183
return "msploitego.blackjack"
183-
elif any(x in servicename.lower() for x in ["backorifice", "bo2k"]):
184+
elif any(x in servicename for x in ["backorifice", "bo2k"]):
184185
return "msploitego.backorifice"
185-
elif "rtsp" in servicename.lower():
186+
elif "rtsp" in servicename:
186187
return "msploitego.rtsp"
187-
elif "bacnet" in servicename.lower():
188+
elif "bacnet" in servicename:
188189
return "msploitego.Bacnet"
189-
elif "msdtc" in servicename.lower():
190+
elif "msdtc" in servicename:
190191
return "msploitego.msdtc"
191-
elif "wfremotertm" in servicename.lower():
192+
elif "wfremotertm" in servicename:
192193
return "msploitego.wfremotertm"
193-
elif "msdp" in servicename.lower():
194+
elif "msdp" in servicename:
194195
return "msploitego.msdp"
195-
elif "ssl" in servicename.lower():
196+
elif "ssl" in servicename:
196197
return "msploitego.ssl"
197-
elif all(x in servicename.lower() for x in ["afs", "fileserver"]):
198+
elif all(x in servicename for x in ["afs", "fileserver"]):
198199
return "msploitego.AFS"
199-
elif "adobeserver" in servicename.lower():
200+
elif "adobeserver" in servicename:
200201
return "msploitego.AdobeserverService"
201-
elif "ms-wbt-server" in servicename.lower():
202+
elif "ms-wbt-server" in servicename:
202203
return "msploitego.MicrosoftTerminalServices"
203-
elif servicename.lower() in ["rmiregistry", "java-rmi"]:
204+
elif servicename in ["rmiregistry", "java-rmi"]:
204205
return "msploitego.JavaRMI"
205206
elif re.match("^ams$", servicename, re.I):
206207
return "msploitego.AdvancedMultithreadedServer"
207208
elif re.search("landesk", servicename, re.I):
208209
return "msploitego.Landesk"
209210
elif re.search("xmpp", servicename, re.I):
210211
return "msploitego.xmpp"
211-
elif any(x in servicename.lower() for x in ["lansource","citrix"]):
212+
elif any(x in servicename for x in ["lansource","citrix"]):
212213
return "msploitego.Lansource"
213214
return entityname
214215

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import re
2+
from pprint import pprint
3+
from common.MaltegoTransform import *
4+
import sys
5+
6+
from common.corelib import bucketparser
7+
8+
__author__ = 'Marc Gurreri'
9+
__copyright__ = 'Copyright 2018, msploitego Project'
10+
__credits__ = []
11+
__license__ = 'GPLv3'
12+
__version__ = '0.1'
13+
__maintainer__ = 'Marc Gurreri'
14+
__email__ = 'marcgurreri@gmail.com'
15+
__status__ = 'Development'
16+
17+
def dotransform(args):
18+
mt = MaltegoTransform()
19+
# mt.debug(pprint(args))
20+
mt.parseArguments(args)
21+
cleanse = re.compile("\[\+\]|denied|warning|failed|attempted|attempting|reconnecting", re.I)
22+
# cleanse = re.compile("\[\+\]|\[v\]")
23+
data = mt.getVar("data").split("\n")
24+
# regex = re.compile("^Sharename")
25+
# results = bucketparser(regex, data, sep=" ")
26+
res = []
27+
for line in data:
28+
if "---" in line or not line or cleanse.search(line):
29+
continue
30+
res.append(line)
31+
pprint(res)
32+
# if data:
33+
# for line in data:
34+
# sid = name = typ = ""
35+
# if line.strip() and not regex.search(line):
36+
# details = line.split()
37+
# for d in details:
38+
# if sidex.match(d):
39+
# sid = d
40+
# elif namex.match(d):
41+
# name = d
42+
# elif re.search("group|user",d,re.I):
43+
# typ = d.strip(")")
44+
# if name:
45+
# if typ.lower() == "group":
46+
# entityname = "msploitego.SambaGroupInformation"
47+
# else:
48+
# entityname = "msploitego.SambaUser"
49+
# sambauser = mt.addEntity(entityname, name)
50+
# sambauser.setValue(name)
51+
# sambauser.addAdditionalFields("sid", "Sid", False, sid)
52+
# sambauser.addAdditionalFields("type", "Type", False, typ)
53+
mt.returnOutput()
54+
55+
dotransform(sys.argv)
56+
# dotransform(args)

0 commit comments

Comments
 (0)