Add more compatibility for windows exe

- decrease winrm timeout to 3 seconds so @IppSec 's videos
 tlast less time :)
 -- add ico to cme exe
 -- add option smb-server-port to make cme compatible with windows
main
mpgn 2020-07-30 15:14:31 +02:00
parent 1aa2f8cc0f
commit ce8094045d
6 changed files with 14 additions and 9 deletions

BIN
cme/data/cme.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -1,4 +1,5 @@
import os
import errno
import sqlite3
import shutil
import cme
@ -82,11 +83,14 @@ def first_run_setup(logger):
try:
check_output(['openssl', 'help'], stderr=PIPE)
except OSError as e:
if e.errno == os.errno.ENOENT:
if e.errno == errno.ENOENT:
logger.error('OpenSSL command line utility is not installed, could not generate certificate')
exit(1)
else:
logger.error('Error while generating SSL certificate: {}'.format(e))
exit(1)
os.system('openssl req -new -x509 -keyout {path} -out {path} -days 365 -nodes -subj "/C=US" > /dev/null 2>&1'.format(path=CERT_PATH))
if os.name != 'nt':
os.system('openssl req -new -x509 -keyout {path} -out {path} -days 365 -nodes -subj "/C=US" > /dev/null 2>&1'.format(path=CERT_PATH))
else:
os.system('openssl req -new -x509 -keyout {path} -out {path} -days 365 -nodes -subj "/C=US"'.format(path=CERT_PATH))

View File

@ -89,7 +89,7 @@ def requires_smb_server(func):
if not smb_server:
#with sem:
logging.debug('Starting SMB server')
smb_server = CMESMBServer(self.logger, smb_share_name, verbose=self.args.verbose)
smb_server = CMESMBServer(self.logger, smb_share_name, listen_port=self.args.smb_server_port, verbose=self.args.verbose)
smb_server.start()
output = func(self, *args, **kwargs)
@ -130,6 +130,7 @@ class smb(connection):
dgroup.add_argument("--local-auth", action='store_true', help='authenticate locally to each target')
smb_parser.add_argument("--port", type=int, choices={445, 139}, default=445, help="SMB port (default: 445)")
smb_parser.add_argument("--share", metavar="SHARE", default="C$", help="specify a share (default: C$)")
smb_parser.add_argument("--smb-server-port", default="445", help="specify a server port for SMB", type=int)
smb_parser.add_argument("--gen-relay-list", metavar='OUTPUT_FILE', help="outputs all hosts that don't require SMB signing to the specified file")
smb_parser.add_argument("--continue-on-success", action='store_true', help="continues authentication attempts even after successes")

View File

@ -111,7 +111,7 @@ class winrm(connection):
for url in endpoints:
try:
requests.get(url, verify=False, timeout=10)
requests.get(url, verify=False, timeout=3)
self.endpoint = url
if self.endpoint.startswith('https://'):
self.port = 5986

View File

@ -8,7 +8,6 @@ class CMESMBServer(threading.Thread):
def __init__(self, logger, share_name, share_path='/tmp/cme_hosted', listen_address='0.0.0.0', listen_port=445, verbose=False):
try:
threading.Thread.__init__(self)
self.server = smbserver.SimpleSMBServer(listen_address, listen_port)
self.server.addShare(share_name.upper(), share_path)
if verbose: self.server.setLogFile('')

View File

@ -6,8 +6,8 @@ block_cipher = None
a = Analysis(['./cme/crackmapexec.py'],
pathex=['./cme','./cme/thirdparty/pywerview'],
binaries=[],
datas=[('./cme/protocols', 'cme/protocols'),('./cme/thirdparty', 'cme/thirdparty'),('./cme/data', 'cme/data')],
hiddenimports=['cme.protocols.mssql.mssqlexec', 'cme.connection', 'impacket.examples.secretsdump', 'impacket.dcerpc.v5.lsat', 'impacket.dcerpc.v5.transport', 'impacket.dcerpc.v5.lsad', 'cme.servers.smb', 'cme.protocols.smb.wmiexec', 'cme.protocols.smb.atexec', 'cme.protocols.smb.smbexec', 'cme.protocols.smb.mmcexec', 'cme.protocols.smb.smbspider', 'cme.protocols.smb.passpol', 'paramiko', 'pypsrp.client', 'pywerview.cli.helpers', 'impacket.tds', 'impacket.version'],
datas=[('./cme/protocols', 'cme/protocols'),('./cme/thirdparty', 'cme/thirdparty'),('./cme/data', 'cme/data'),('./cme/modules', 'cme/modules')],
hiddenimports=['cme.protocols.mssql.mssqlexec', 'cme.connection', 'impacket.examples.secretsdump', 'impacket.dcerpc.v5.lsat', 'impacket.dcerpc.v5.transport', 'impacket.dcerpc.v5.lsad', 'cme.servers.smb', 'cme.protocols.smb.wmiexec', 'cme.protocols.smb.atexec', 'cme.protocols.smb.smbexec', 'cme.protocols.smb.mmcexec', 'cme.protocols.smb.smbspider', 'cme.protocols.smb.passpol', 'paramiko', 'pypsrp.client', 'pywerview.cli.helpers', 'impacket.tds', 'impacket.version', 'cme.helpers.bash', 'pylnk3', 'lsassy','win32timezone'],
hookspath=[],
runtime_hooks=[],
excludes=[],
@ -30,4 +30,5 @@ exe = EXE(pyz,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
console=True,
icon='./cme/data/cme.ico' )