mirror of
https://github.com/aljazceru/cowrie.git
synced 2025-12-17 14:04:28 +01:00
move loggers to tac file
move
This commit is contained in:
@@ -32,8 +32,6 @@ class CowrieSSHFactory(factory.SSHFactory):
|
|||||||
sessions = {}
|
sessions = {}
|
||||||
privateKeys = None
|
privateKeys = None
|
||||||
publicKeys = None
|
publicKeys = None
|
||||||
dbloggers = None
|
|
||||||
output_plugins = None
|
|
||||||
primes = None
|
primes = None
|
||||||
|
|
||||||
def __init__(self, cfg):
|
def __init__(self, cfg):
|
||||||
@@ -45,9 +43,9 @@ class CowrieSSHFactory(factory.SSHFactory):
|
|||||||
Special delivery to the loggers to avoid scope problems
|
Special delivery to the loggers to avoid scope problems
|
||||||
"""
|
"""
|
||||||
args['sessionno'] = 'S'+str(args['sessionno'])
|
args['sessionno'] = 'S'+str(args['sessionno'])
|
||||||
for dblog in self.dbloggers:
|
for dblog in self.tac.dbloggers:
|
||||||
dblog.logDispatch(*msg, **args)
|
dblog.logDispatch(*msg, **args)
|
||||||
for output in self.output_plugins:
|
for output in self.tac.output_plugins:
|
||||||
output.logDispatch(*msg, **args)
|
output.logDispatch(*msg, **args)
|
||||||
|
|
||||||
|
|
||||||
@@ -70,38 +68,6 @@ class CowrieSSHFactory(factory.SSHFactory):
|
|||||||
'ssh-rsa': keys.Key.fromString(data=rsaPrivKeyString),
|
'ssh-rsa': keys.Key.fromString(data=rsaPrivKeyString),
|
||||||
'ssh-dss': keys.Key.fromString(data=dsaPrivKeyString)}
|
'ssh-dss': keys.Key.fromString(data=dsaPrivKeyString)}
|
||||||
|
|
||||||
# Load db loggers
|
|
||||||
self.dbloggers = []
|
|
||||||
for x in self.cfg.sections():
|
|
||||||
if not x.startswith('database_'):
|
|
||||||
continue
|
|
||||||
engine = x.split('_')[1]
|
|
||||||
try:
|
|
||||||
dblogger = __import__( 'cowrie.dblog.{}'.format(engine),
|
|
||||||
globals(), locals(), ['dblog']).DBLogger(self.cfg)
|
|
||||||
log.addObserver(dblogger.emit)
|
|
||||||
self.dbloggers.append(dblogger)
|
|
||||||
log.msg("Loaded dblog engine: {}".format(engine))
|
|
||||||
except:
|
|
||||||
log.err()
|
|
||||||
log.msg("Failed to load dblog engine: {}".format(engine))
|
|
||||||
|
|
||||||
# Load output modules
|
|
||||||
self.output_plugins = []
|
|
||||||
for x in self.cfg.sections():
|
|
||||||
if not x.startswith('output_'):
|
|
||||||
continue
|
|
||||||
engine = x.split('_')[1]
|
|
||||||
try:
|
|
||||||
output = __import__( 'cowrie.output.{}'.format(engine),
|
|
||||||
globals(), locals(), ['output']).Output(self.cfg)
|
|
||||||
log.addObserver(output.emit)
|
|
||||||
self.output_plugins.append(output)
|
|
||||||
log.msg("Loaded output engine: {}".format(engine))
|
|
||||||
except:
|
|
||||||
log.err()
|
|
||||||
log.msg("Failed to load output engine: {}".format(engine))
|
|
||||||
|
|
||||||
factory.SSHFactory.startFactory(self)
|
factory.SSHFactory.startFactory(self)
|
||||||
|
|
||||||
|
|
||||||
@@ -109,8 +75,6 @@ class CowrieSSHFactory(factory.SSHFactory):
|
|||||||
"""
|
"""
|
||||||
"""
|
"""
|
||||||
factory.SSHFactory.stopFactory(self)
|
factory.SSHFactory.stopFactory(self)
|
||||||
for output in self.output_plugins:
|
|
||||||
output.stop()
|
|
||||||
|
|
||||||
|
|
||||||
def buildProtocol(self, addr):
|
def buildProtocol(self, addr):
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ class HoneyPotTelnetFactory(protocol.ServerFactory):
|
|||||||
Special delivery to the loggers to avoid scope problems
|
Special delivery to the loggers to avoid scope problems
|
||||||
"""
|
"""
|
||||||
args['sessionno'] = 'T'+str(args['sessionno'])
|
args['sessionno'] = 'T'+str(args['sessionno'])
|
||||||
for dblog in self.dbloggers:
|
for dblog in self.tac.dbloggers:
|
||||||
dblog.logDispatch(*msg, **args)
|
dblog.logDispatch(*msg, **args)
|
||||||
for output in self.output_plugins:
|
for output in self.tac.output_plugins:
|
||||||
output.logDispatch(*msg, **args)
|
output.logDispatch(*msg, **args)
|
||||||
|
|
||||||
|
|
||||||
@@ -55,38 +55,6 @@ class HoneyPotTelnetFactory(protocol.ServerFactory):
|
|||||||
# For use by the uptime command
|
# For use by the uptime command
|
||||||
self.starttime = time.time()
|
self.starttime = time.time()
|
||||||
|
|
||||||
# Load db loggers
|
|
||||||
self.dbloggers = []
|
|
||||||
for x in self.cfg.sections():
|
|
||||||
if not x.startswith('database_'):
|
|
||||||
continue
|
|
||||||
engine = x.split('_')[1]
|
|
||||||
try:
|
|
||||||
dblogger = __import__( 'cowrie.dblog.{}'.format(engine),
|
|
||||||
globals(), locals(), ['dblog']).DBLogger(self.cfg)
|
|
||||||
log.addObserver(dblogger.emit)
|
|
||||||
self.dbloggers.append(dblogger)
|
|
||||||
log.msg("Loaded dblog engine: {}".format(engine))
|
|
||||||
except:
|
|
||||||
log.err()
|
|
||||||
log.msg("Failed to load dblog engine: {}".format(engine))
|
|
||||||
|
|
||||||
# Load output modules
|
|
||||||
self.output_plugins = []
|
|
||||||
for x in self.cfg.sections():
|
|
||||||
if not x.startswith('output_'):
|
|
||||||
continue
|
|
||||||
engine = x.split('_')[1]
|
|
||||||
try:
|
|
||||||
output = __import__( 'cowrie.output.{}'.format(engine),
|
|
||||||
globals(), locals(), ['output']).Output(self.cfg)
|
|
||||||
log.addObserver(output.emit)
|
|
||||||
self.output_plugins.append(output)
|
|
||||||
log.msg("Loaded output engine: {}".format(engine))
|
|
||||||
except:
|
|
||||||
log.err()
|
|
||||||
log.msg("Failed to load output engine: {}".format(engine))
|
|
||||||
|
|
||||||
# hook protocol
|
# hook protocol
|
||||||
self.protocol = lambda: CowrieTelnetTransport(HoneyPotTelnetAuthProtocol,
|
self.protocol = lambda: CowrieTelnetTransport(HoneyPotTelnetAuthProtocol,
|
||||||
self.portal)
|
self.portal)
|
||||||
@@ -97,8 +65,6 @@ class HoneyPotTelnetFactory(protocol.ServerFactory):
|
|||||||
"""
|
"""
|
||||||
Stop output plugins
|
Stop output plugins
|
||||||
"""
|
"""
|
||||||
for output in self.output_plugins:
|
|
||||||
output.stop()
|
|
||||||
protocol.ServerFactory.stopFactory(self)
|
protocol.ServerFactory.stopFactory(self)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ class CowrieServiceMaker(object):
|
|||||||
tapname = "cowrie"
|
tapname = "cowrie"
|
||||||
description = "She sells sea shells by the sea shore."
|
description = "She sells sea shells by the sea shore."
|
||||||
options = Options
|
options = Options
|
||||||
|
dbloggers = None
|
||||||
|
output_plugins = None
|
||||||
|
|
||||||
def makeService(self, options):
|
def makeService(self, options):
|
||||||
"""
|
"""
|
||||||
@@ -82,23 +84,6 @@ class CowrieServiceMaker(object):
|
|||||||
|
|
||||||
cfg = readConfigFile(options["config"])
|
cfg = readConfigFile(options["config"])
|
||||||
|
|
||||||
topService = service.MultiService()
|
|
||||||
application = service.Application('cowrie')
|
|
||||||
topService.setServiceParent(application)
|
|
||||||
|
|
||||||
factory = cowrie.ssh.factory.CowrieSSHFactory(cfg)
|
|
||||||
|
|
||||||
factory.portal = portal.Portal(core.realm.HoneyPotRealm(cfg))
|
|
||||||
factory.portal.registerChecker(
|
|
||||||
core.checkers.HoneypotPublicKeyChecker())
|
|
||||||
factory.portal.registerChecker(
|
|
||||||
core.checkers.HoneypotPasswordChecker(cfg))
|
|
||||||
|
|
||||||
if cfg.has_option('honeypot', 'auth_none_enabled') and \
|
|
||||||
cfg.getboolean('honeypot', 'auth_none_enabled') == True:
|
|
||||||
factory.portal.registerChecker(
|
|
||||||
core.checkers.HoneypotNoneChecker())
|
|
||||||
|
|
||||||
# ssh is enabled by default
|
# ssh is enabled by default
|
||||||
if cfg.has_option('ssh', 'enabled') == False or \
|
if cfg.has_option('ssh', 'enabled') == False or \
|
||||||
(cfg.has_option('ssh', 'enabled') and \
|
(cfg.has_option('ssh', 'enabled') and \
|
||||||
@@ -118,7 +103,56 @@ class CowrieServiceMaker(object):
|
|||||||
print('ERROR: You must at least enable SSH or Telnet')
|
print('ERROR: You must at least enable SSH or Telnet')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Load db loggers
|
||||||
|
self.dbloggers = []
|
||||||
|
for x in self.cfg.sections():
|
||||||
|
if not x.startswith('database_'):
|
||||||
|
continue
|
||||||
|
engine = x.split('_')[1]
|
||||||
|
try:
|
||||||
|
dblogger = __import__( 'cowrie.dblog.{}'.format(engine),
|
||||||
|
globals(), locals(), ['dblog']).DBLogger(self.cfg)
|
||||||
|
log.addObserver(dblogger.emit)
|
||||||
|
self.dbloggers.append(dblogger)
|
||||||
|
log.msg("Loaded dblog engine: {}".format(engine))
|
||||||
|
except:
|
||||||
|
log.err()
|
||||||
|
log.msg("Failed to load dblog engine: {}".format(engine))
|
||||||
|
|
||||||
|
# Load output modules
|
||||||
|
self.output_plugins = []
|
||||||
|
for x in self.cfg.sections():
|
||||||
|
if not x.startswith('output_'):
|
||||||
|
continue
|
||||||
|
engine = x.split('_')[1]
|
||||||
|
try:
|
||||||
|
output = __import__( 'cowrie.output.{}'.format(engine),
|
||||||
|
globals(), locals(), ['output']).Output(self.cfg)
|
||||||
|
log.addObserver(output.emit)
|
||||||
|
self.output_plugins.append(output)
|
||||||
|
log.msg("Loaded output engine: {}".format(engine))
|
||||||
|
except:
|
||||||
|
log.err()
|
||||||
|
log.msg("Failed to load output engine: {}".format(engine))
|
||||||
|
|
||||||
|
topService = service.MultiService()
|
||||||
|
application = service.Application('cowrie')
|
||||||
|
topService.setServiceParent(application)
|
||||||
|
|
||||||
if enableSSH:
|
if enableSSH:
|
||||||
|
factory = cowrie.ssh.factory.CowrieSSHFactory(cfg)
|
||||||
|
factory.tac = self
|
||||||
|
factory.portal = portal.Portal(core.realm.HoneyPotRealm(cfg))
|
||||||
|
factory.portal.registerChecker(
|
||||||
|
core.checkers.HoneypotPublicKeyChecker())
|
||||||
|
factory.portal.registerChecker(
|
||||||
|
core.checkers.HoneypotPasswordChecker(cfg))
|
||||||
|
|
||||||
|
if cfg.has_option('honeypot', 'auth_none_enabled') and \
|
||||||
|
cfg.getboolean('honeypot', 'auth_none_enabled') == True:
|
||||||
|
factory.portal.registerChecker(
|
||||||
|
core.checkers.HoneypotNoneChecker())
|
||||||
|
|
||||||
if cfg.has_option('ssh', 'listen_addr'):
|
if cfg.has_option('ssh', 'listen_addr'):
|
||||||
listen_ssh_addr = cfg.get('ssh', 'listen_addr')
|
listen_ssh_addr = cfg.get('ssh', 'listen_addr')
|
||||||
elif cfg.has_option('honeypot', 'listen_addr'):
|
elif cfg.has_option('honeypot', 'listen_addr'):
|
||||||
@@ -154,6 +188,7 @@ class CowrieServiceMaker(object):
|
|||||||
listen_telnet_port = 2223
|
listen_telnet_port = 2223
|
||||||
|
|
||||||
f = cowrie.telnet.transport.HoneyPotTelnetFactory(cfg)
|
f = cowrie.telnet.transport.HoneyPotTelnetFactory(cfg)
|
||||||
|
f.tac = self
|
||||||
f.portal = portal.Portal(core.realm.HoneyPotRealm(cfg))
|
f.portal = portal.Portal(core.realm.HoneyPotRealm(cfg))
|
||||||
f.portal.registerChecker(core.checkers.HoneypotPasswordChecker(cfg))
|
f.portal.registerChecker(core.checkers.HoneypotPasswordChecker(cfg))
|
||||||
for i in listen_telnet_addr.split():
|
for i in listen_telnet_addr.split():
|
||||||
|
|||||||
Reference in New Issue
Block a user