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)
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)
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()
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)
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