예제 #1
0
def main():
    from tornado.wsgi import WSGIContainer
    from tornado.httpserver import HTTPServer
    from tornado.ioloop import IOLoop

    mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())

    while not is_db_server_up(mongo_url):
        logger.info('Waiting for MongoDB server')
        time.sleep(1)

    app = init_app(mongo_url)
    if env.is_debug():
        app.run(host='0.0.0.0',
                debug=True,
                ssl_context=('monkey_island/cc/server.crt',
                             'monkey_island/cc/server.key'))
    else:
        http_server = HTTPServer(
            WSGIContainer(app),
            ssl_options={
                'certfile':
                os.environ.get('SERVER_CRT', 'monkey_island/cc/server.crt'),
                'keyfile':
                os.environ.get('SERVER_KEY', 'monkey_island/cc/server.key')
            })
        http_server.listen(env.get_island_port())
        logger.info('Monkey Island Server is running on https://{}:{}'.format(
            local_ip_addresses()[0], env.get_island_port()))
        IOLoop.instance().start()
예제 #2
0
파일: config.py 프로젝트: zelda3721/monkey
 def set_server_ips_in_config(config):
     ips = local_ip_addresses()
     config["cnc"]["servers"]["command_servers"] = [
         "%s:%d" % (ip, env.get_island_port()) for ip in ips
     ]
     config["cnc"]["servers"]["current_server"] = "%s:%d" % (
         ips[0], env.get_island_port())
예제 #3
0
파일: local_run.py 프로젝트: xuacker/monkey
def run_local_monkey():
    import platform
    import subprocess
    import stat

    # get the monkey executable suitable to run on the server
    result = get_monkey_executable(platform.system().lower(), platform.machine().lower())
    if not result:
        return False, "OS Type not found"

    monkey_path = os.path.join('binaries', result['filename'])
    target_path = os.path.join(os.getcwd(), result['filename'])

    # copy the executable to temp path (don't run the monkey from its current location as it may delete itself)
    try:
        copyfile(monkey_path, target_path)
        os.chmod(target_path, stat.S_IRWXU | stat.S_IRWXG)
    except Exception as exc:
        logger.error('Copy file failed', exc_info=True)
        return False, "Copy file failed: %s" % exc

    # run the monkey
    try:
        args = ['"%s" m0nk3y -s %s:%s' % (target_path, local_ip_addresses()[0], env.get_island_port())]
        if sys.platform == "win32":
            args = "".join(args)
        pid = subprocess.Popen(args, shell=True).pid
    except Exception as exc:
        logger.error('popen failed', exc_info=True)
        return False, "popen failed: %s" % exc

    return True, "pis: %s" % pid
예제 #4
0
def run_local_monkey():
    import platform
    import subprocess
    import stat

    # get the monkey executable suitable to run on the server
    result = get_monkey_executable(platform.system().lower(), platform.machine().lower())
    if not result:
        return False, "OS Type not found"

    monkey_path = os.path.join('binaries', result['filename'])
    target_path = os.path.join(os.getcwd(), result['filename'])

    # copy the executable to temp path (don't run the monkey from its current location as it may delete itself)
    try:
        copyfile(monkey_path, target_path)
        os.chmod(target_path, stat.S_IRWXU | stat.S_IRWXG)
    except Exception as exc:
        return False, "Copy file failed: %s" % exc

    # run the monkey
    try:
        args = ['"%s" m0nk3y -s %s:%s' % (target_path, local_ip_addresses()[0], env.get_island_port())]
        if sys.platform == "win32":
            args = "".join(args)
        pid = subprocess.Popen(args, shell=True).pid
    except Exception as exc:
        return False, "popen failed: %s" % exc

    return True, "pis: %s" % pid
예제 #5
0
if BASE_PATH not in sys.path:
    sys.path.insert(0, BASE_PATH)

from cc.app import init_app
from cc.utils import local_ip_addresses
from cc.environment.environment import env
from cc.database import is_db_server_up

if __name__ == '__main__':
    from tornado.wsgi import WSGIContainer
    from tornado.httpserver import HTTPServer
    from tornado.ioloop import IOLoop

    mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())

    while not is_db_server_up(mongo_url):
        print('Waiting for MongoDB server')
        time.sleep(1)

    app = init_app(mongo_url)
    if env.is_debug():
        app.run(host='0.0.0.0', debug=True, ssl_context=('server.crt', 'server.key'))
    else:
        http_server = HTTPServer(WSGIContainer(app),
                                 ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'),
                                              'keyfile': os.environ.get('SERVER_KEY', 'server.key')})
        http_server.listen(env.get_island_port())
        print('Monkey Island C&C Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
        IOLoop.instance().start()

예제 #6
0
파일: main.py 프로젝트: zelda3721/monkey
if __name__ == '__main__':
    from tornado.wsgi import WSGIContainer
    from tornado.httpserver import HTTPServer
    from tornado.ioloop import IOLoop

    mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())

    while not is_db_server_up(mongo_url):
        print('Waiting for MongoDB server')
        time.sleep(1)

    app = init_app(mongo_url)
    if env.is_debug():
        app.run(host='0.0.0.0',
                debug=True,
                ssl_context=('server.crt', 'server.key'))
    else:
        http_server = HTTPServer(WSGIContainer(app),
                                 ssl_options={
                                     'certfile':
                                     os.environ.get('SERVER_CRT',
                                                    'server.crt'),
                                     'keyfile':
                                     os.environ.get('SERVER_KEY', 'server.key')
                                 })
        http_server.listen(env.get_island_port())
        print('Monkey Island Server is running on https://{}:{}'.format(
            local_ip_addresses()[0], env.get_island_port()))
        IOLoop.instance().start()
예제 #7
0
파일: main.py 프로젝트: subkanthi/monkey
if BASE_PATH not in sys.path:
    sys.path.insert(0, BASE_PATH)

from cc.app import init_app
from cc.utils import local_ip_addresses
from cc.environment.environment import env
from cc.database import is_db_server_up

if __name__ == '__main__':
    from tornado.wsgi import WSGIContainer
    from tornado.httpserver import HTTPServer
    from tornado.ioloop import IOLoop

    mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())

    while not is_db_server_up(mongo_url):
        print('Waiting for MongoDB server')
        time.sleep(1)

    app = init_app(mongo_url)
    if env.is_debug():
        app.run(host='0.0.0.0', debug=True, ssl_context=('server.crt', 'server.key'))
    else:
        http_server = HTTPServer(WSGIContainer(app),
                                 ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'),
                                              'keyfile': os.environ.get('SERVER_KEY', 'server.key')})
        http_server.listen(env.get_island_port())
        print('Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
        IOLoop.instance().start()

예제 #8
0
파일: config.py 프로젝트: subkanthi/monkey
 def set_server_ips_in_config(config):
     ips = local_ip_addresses()
     config["cnc"]["servers"]["command_servers"] = ["%s:%d" % (ip, env.get_island_port()) for ip in ips]
     config["cnc"]["servers"]["current_server"] = "%s:%d" % (ips[0], env.get_island_port())