diff --git a/cowrie/core/avatar.py b/cowrie/core/avatar.py index 403d59b..3eab3c3 100644 --- a/cowrie/core/avatar.py +++ b/cowrie/core/avatar.py @@ -10,12 +10,13 @@ from zope.interface import implementer import twisted from twisted.conch import avatar from twisted.conch.interfaces import IConchUser, ISession, ISFTPServer -from twisted.conch.ssh import filetransfer +from twisted.conch.ssh import filetransfer as conchfiletransfer from twisted.python import log, components from cowrie.core import pwd -from cowrie.core import ssh from cowrie.core import session +from cowrie.core import filetransfer +from cowrie.core import forwarding @implementer(IConchUser) @@ -31,7 +32,7 @@ class CowrieUser(avatar.ConchUser): self.channelLookup.update( {"session": session.HoneyPotSSHSession, - "direct-tcpip": ssh.CowrieOpenConnectForwardingClient}) + "direct-tcpip": forwarding.CowrieOpenConnectForwardingClient}) try: pwentry = pwd.Passwd(self.cfg).getpwnam(self.username) @@ -46,7 +47,7 @@ class CowrieUser(avatar.ConchUser): # Sftp support enabled only when option is explicitly set try: if (self.cfg.get('honeypot', 'sftp_enabled') == "true"): - self.subsystemLookup['sftp'] = filetransfer.FileTransferServer + self.subsystemLookup['sftp'] = conchfiletransfer.FileTransferServer except: pass @@ -57,7 +58,7 @@ class CowrieUser(avatar.ConchUser): log.msg('avatar {} logging out'.format(self.username)) -components.registerAdapter(ssh.SFTPServerForCowrieUser, CowrieUser, ISFTPServer) +components.registerAdapter(filetransfer.SFTPServerForCowrieUser, CowrieUser, ISFTPServer) components.registerAdapter(session.SSHSessionForCowrieUser, CowrieUser, ISession) diff --git a/cowrie/core/ssh.py b/cowrie/core/filetransfer.py similarity index 87% rename from cowrie/core/ssh.py rename to cowrie/core/filetransfer.py index 45c2bfd..6335252 100644 --- a/cowrie/core/ssh.py +++ b/cowrie/core/filetransfer.py @@ -12,7 +12,6 @@ from zope.interface import implementer import twisted from twisted.conch.interfaces import ISFTPFile, ISFTPServer from twisted.conch.ssh import filetransfer -from twisted.conch.ssh import forwarding from twisted.conch.ssh.filetransfer import FXF_READ, FXF_WRITE, FXF_APPEND, FXF_CREAT, FXF_TRUNC, FXF_EXCL import twisted.conch.ls from twisted.python import log @@ -282,34 +281,3 @@ class SFTPServerForCowrieUser: """ raise NotImplementedError - -def CowrieOpenConnectForwardingClient(remoteWindow, remoteMaxPacket, data, avatar): - """ - """ - remoteHP, origHP = twisted.conch.ssh.forwarding.unpackOpen_direct_tcpip(data) - log.msg(eventid='COW0014', format='direct-tcp connection request to %(dst_ip)s:%(dst_port)s', - dst_ip=remoteHP[0], dst_port=remoteHP[1]) - return CowrieConnectForwardingChannel(remoteHP, - remoteWindow=remoteWindow, remoteMaxPacket=remoteMaxPacket, - avatar=avatar) - - - -class CowrieConnectForwardingChannel(forwarding.SSHConnectForwardingChannel): - """ - """ - def channelOpen(self, specificData): - """ - """ - pass - - - def dataReceived(self, data): - """ - """ - log.msg(eventid='COW0015', - format='direct-tcp forward to %(dst_ip)s:%(dst_port)s with data %(data)s', - dst_ip=self.hostport[0], dst_port=self.hostport[1], data=repr(data)) - self._close("Connection refused") - -# vim: set et sw=4 et: diff --git a/cowrie/core/forwarding.py b/cowrie/core/forwarding.py new file mode 100644 index 0000000..e00921b --- /dev/null +++ b/cowrie/core/forwarding.py @@ -0,0 +1,41 @@ +# Copyright (c) 2009-2014 Upi Tamminen +# See the COPYRIGHT file for more information + +""" +This module contains ... +""" + +import twisted +from twisted.conch.ssh import forwarding +from twisted.python import log + + +def CowrieOpenConnectForwardingClient(remoteWindow, remoteMaxPacket, data, avatar): + """ + """ + remoteHP, origHP = twisted.conch.ssh.forwarding.unpackOpen_direct_tcpip(data) + log.msg(eventid='COW0014', format='direct-tcp connection request to %(dst_ip)s:%(dst_port)s', + dst_ip=remoteHP[0], dst_port=remoteHP[1]) + return CowrieConnectForwardingChannel(remoteHP, + remoteWindow=remoteWindow, remoteMaxPacket=remoteMaxPacket, + avatar=avatar) + + + +class CowrieConnectForwardingChannel(forwarding.SSHConnectForwardingChannel): + """ + """ + def channelOpen(self, specificData): + """ + """ + pass + + + def dataReceived(self, data): + """ + """ + log.msg(eventid='COW0015', + format='direct-tcp forward to %(dst_ip)s:%(dst_port)s with data %(data)s', + dst_ip=self.hostport[0], dst_port=self.hostport[1], data=repr(data)) + self._close("Connection refused") + diff --git a/cowrie/core/realm.py b/cowrie/core/realm.py index 942efa0..1e04f89 100644 --- a/cowrie/core/realm.py +++ b/cowrie/core/realm.py @@ -38,7 +38,6 @@ from twisted.python import log from cowrie.core import protocol from cowrie.core import server -from cowrie.core import ssh from cowrie.core import avatar import sys