From 99c93e8f08b3274cb8106dd8a5de7848ab4e0418 Mon Sep 17 00:00:00 2001 From: Michel Oosterhof Date: Fri, 6 Nov 2015 19:35:07 +0000 Subject: [PATCH] wip --- cowrie/commands/base.py | 4 +++- cowrie/core/fs.py | 4 ++++ cowrie/core/protocol.py | 4 ++++ cowrie/core/ssh.py | 19 ++++++------------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/cowrie/commands/base.py b/cowrie/commands/base.py index c36d7c9..8634de4 100644 --- a/cowrie/commands/base.py +++ b/cowrie/commands/base.py @@ -120,7 +120,9 @@ commands['/bin/echo'] = command_echo class command_exit(HoneyPotCommand): def call(self): - self.protocol.terminal.loseConnection() + #self.protocol.terminal.transport.session.sendEOF() + #self.protocol.terminal.transport.session.sendClose() + self.protocol.terminal.transport.session.loseConnection() return def exit(self): pass diff --git a/cowrie/core/fs.py b/cowrie/core/fs.py index d1ebcd0..abd950f 100644 --- a/cowrie/core/fs.py +++ b/cowrie/core/fs.py @@ -36,6 +36,10 @@ class FileNotFound(Exception): pass class HoneyPotFilesystem(object): + +# def __del__(self): +# print "FS GONE!" + def __init__(self, fs, cfg): self.fs = fs self.cfg = cfg diff --git a/cowrie/core/protocol.py b/cowrie/core/protocol.py index a674c49..b9eda48 100644 --- a/cowrie/core/protocol.py +++ b/cowrie/core/protocol.py @@ -17,6 +17,9 @@ from . import utils class HoneyPotBaseProtocol(insults.TerminalProtocol, TimeoutMixin): + def __del__(self): + print "PROTOCOL GONE" + def __init__(self, avatar): self.user = avatar self.cfg = self.user.cfg @@ -167,6 +170,7 @@ class HoneyPotInteractiveProtocol(HoneyPotBaseProtocol, recvline.HistoricRecvLin def connectionMade(self): self.displayMOTD() + HoneyPotBaseProtocol.connectionMade(self) recvline.HistoricRecvLine.connectionMade(self) diff --git a/cowrie/core/ssh.py b/cowrie/core/ssh.py index 2f646df..0659d92 100644 --- a/cowrie/core/ssh.py +++ b/cowrie/core/ssh.py @@ -460,29 +460,22 @@ class SSHSessionForCowrieUser: def openShell(self, proto): - serverProtocol = protocol.LoggingServerProtocol( + self.protocol = protocol.LoggingServerProtocol( protocol.HoneyPotInteractiveProtocol, self) - self.protocol = serverProtocol - serverProtocol.makeConnection(proto) - proto.makeConnection(session.wrapProtocol(serverProtocol)) - #self.protocol = serverProtocol - self.protocol = proto + self.protocol.makeConnection(proto) + proto.makeConnection(session.wrapProtocol(self.protocol)) def getPty(self, terminal, windowSize, attrs): - #log.msg('Terminal size: %s %s' % windowSize[0:2]) log.msg(eventid='KIPP0010', width=windowSize[0], height=windowSize[1], format='Terminal Size: %(width)s %(height)s') - self.windowSize = windowSize return None def execCommand(self, proto, cmd): - serverProtocol = protocol.LoggingServerProtocol( + self.protocol = protocol.LoggingServerProtocol( protocol.HoneyPotExecProtocol, self, cmd) - self.protocol = serverProtocol - serverProtocol.makeConnection(proto) - proto.makeConnection(session.wrapProtocol(serverProtocol)) - self.protocol = serverProtocol + self.protocol.makeConnection(proto) + proto.makeConnection(session.wrapProtocol(self.protocol)) # this is reliably called on both logout and disconnect # we notify the protocol here we lost the connection