Ejemplo n.º 1
0
def new():
    global g_slave
    global g_service_configs

    logger.info("Initializing services ...")
    dionaea_config = g_dionaea.config().get("dionaea")

    mode = dionaea_config.get("listen.mode")
    interface_names = dionaea_config.get("listen.interfaces")

    if mode == 'manual':
        addrs = {}

        addresses = dionaea_config.get("listen.addresses")
        ifaces = g_dionaea.getifaddrs()
        for iface in ifaces.keys():
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    if iface not in addrs:
                        addrs[iface] = []
                    for config in configs:
                        if config["addr"] in addresses:
                            addrs[iface].append(config['addr'])
        g_slave = slave(addresses=addrs)
    elif mode == 'getifaddrs':
        ifaces = g_dionaea.getifaddrs()
        addrs = {}
        for iface in ifaces.keys():
            if interface_names is not None and iface not in interface_names:
                logger.debug("Skipping interface %s. Not in interface list.",
                             iface)
                continue
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    for config in configs:
                        if iface not in addrs:
                            addrs[iface] = []
                        addrs[iface].append(config['addr'])
        g_slave = slave(addresses=addrs)
    elif mode == 'nl':
        # ToDo: handle error if ifaces is None
        g_slave = nlslave(ifaces=interface_names)

    load_submodules()

    module_config = g_dionaea.config().get("module")
    filename_patterns = module_config.get("service_configs", [])
    g_service_configs = load_config_from_files(filename_patterns)
Ejemplo n.º 2
0
def new():
    print("START")
    global g_slave
    global g_service_configs
    dionaea_config = g_dionaea.config().get("dionaea")

    mode = dionaea_config.get("listen.mode")
    interface_names = dionaea_config.get("listen.interfaces")

    if mode == 'manual':
        addrs = {}

        addresses = dionaea_config.get("listen.addresses")
        ifaces = g_dionaea.getifaddrs()
        for iface in ifaces.keys():
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    if iface not in addrs:
                        addrs[iface] = []
                    for config in configs:
                        if config["addr"] in addresses:
                            addrs[iface].append(config['addr'])
        g_slave = slave(addresses=addrs)
    elif mode == 'getifaddrs':
        ifaces = g_dionaea.getifaddrs()
        addrs = {}
        for iface in ifaces.keys():
            if interface_names is not None and iface not in interface_names:
                logger.debug("Skipping interface %s. Not in interface list.", iface)
                continue
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    for config in configs:
                        if iface not in addrs:
                            addrs[iface] = []
                        addrs[iface].append(config['addr'])
        print(addrs)
        g_slave = slave(addresses=addrs)
    elif mode == 'nl':
        # ToDo: handle error if ifaces is None
        g_slave = nlslave(ifaces=interface_names)

    load_submodules()

    module_config = g_dionaea.config().get("module")
    filename_patterns = module_config.get("service_configs", [])
    g_service_configs = load_config_from_files(filename_patterns)
Ejemplo n.º 3
0
def new():
    print("START")
    global g_slave, mode, addrs
    global addrs
    if mode == 'manual':
        addrs = g_dionaea.config()['listen']['addrs']
        g_slave = slave()
    elif mode == 'getifaddrs':
        g_slave = slave()
        ifaces = g_dionaea.getifaddrs()
        addrs = {}
        for iface in ifaces.keys():
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    for config in configs:
                        if iface not in addrs:
                            addrs[iface] = []
                        addrs[iface].append(config['addr'])
        print(addrs)
    elif mode == 'nl':
        g_slave = nlslave()
        g_slave.ifaces = g_dionaea.config()['listen']['interfaces']

    load_submodules()
Ejemplo n.º 4
0
def new():
    print("START")
    global g_slave, mode, addrs
    global addrs
    if mode == 'manual':
        addrs = g_dionaea.config()['listen']['addrs']
        g_slave = slave()
    elif mode == 'getifaddrs':
        g_slave = slave()
        ifaces = g_dionaea.getifaddrs()
        addrs = {}
        for iface in ifaces.keys():
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    for config in configs:
                        if iface not in addrs:
                            addrs[iface] = []
                        addrs[iface].append(config['addr'])
        print(addrs)
    elif mode == 'nl':
        g_slave = nlslave()
        g_slave.ifaces = g_dionaea.config()['listen']['interfaces']

    load_submodules()
Ejemplo n.º 5
0
def new():
    print("START")
    global g_slave, mode, addrs
    global addrs
    if mode == 'manual':
        addrs = g_dionaea.config()['listen']['addrs']
        g_slave = slave()
    elif mode == 'getifaddrs':
        g_slave = slave()
        ifaces = g_dionaea.getifaddrs()
        addrs = {}
        for iface in ifaces.keys():
            afs = ifaces[iface]
            for af in afs.keys():
                if af == 2 or af == 10:
                    configs = afs[af]
                    for config in configs:
                        if iface not in addrs:
                            addrs[iface] = []
                        addrs[iface].append(config['addr'])
        print(addrs)
    elif mode == 'nl':
        g_slave = nlslave()
        g_slave.ifaces = g_dionaea.config()['listen']['interfaces']



    if "http" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(httpservice)

    if "https" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(httpsservice)

    if "tftp" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(tftpservice)

    if "ftp" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(ftpservice)

    if "mirror" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(mirrorservice)

    if "smb" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(smbservice)

    if "epmap" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(epmapservice)

    if "sip" in g_dionaea.config()['modules']['python']['services']['serve']:
        for proto,factory in {'tcp': siptcpservice, 'tls': siptlsservice, 'udp': sipudpservice}.items():
            if proto in g_dionaea.config()['modules']['python']['sip']:
                g_slave.services.append(factory)

    if "mssql" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(mssqlservice)

    if "mysql" in g_dionaea.config()['modules']['python']['services']['serve']:
        g_slave.services.append(mysqlservice)

    g_slave.start(addrs)
Ejemplo n.º 6
0
def is_local_addr(addr):
    # sanatize addr, maybe IPv4 mapped
    # I think it is impossible to connect yourself via
    # IPv4 mapped IPv6 sockets, but ...
    if addr.startswith('::ffff:'):
        addr = addr[7:]

    # getifaddrs and compile a dict of addrs assigned to the host
    ifaddrs = g_dionaea.getifaddrs()

    vX = {}
    for iface in ifaddrs:
        for family in ifaddrs[iface]:
            if family != AF_INET and family != AF_INET6:
                continue
            for i in ifaddrs[iface][family]:
                if 'addr' in i:
                    vX[i['addr']] = iface

    if addr in vX:
        return True
    return False
Ejemplo n.º 7
0
def is_local_addr(addr):
    # sanatize addr, maybe IPv4 mapped
    # I think it is impossible to connect yourself via
    # IPv4 mapped IPv6 sockets, but ...
    if addr.startswith('::ffff:'):
        addr = addr[7:]

    # getifaddrs and compile a dict of addrs assigned to the host
    ifaddrs = g_dionaea.getifaddrs()

    vX = {}
    for iface in ifaddrs:
        for family in ifaddrs[iface]:
            if family != AF_INET and family != AF_INET6:
                continue
            for i in ifaddrs[iface][family]:
                if 'addr' in i:
                    vX[i['addr']] = iface


    if addr in vX:
        return True
    return False