def start(self):

        """ Do the thing """

        start_time = datetime.now()

        row_fmt = "{:30} {:30} {:30}"
        print 'Bruteforcing Telnet logins ...'
        print '-' * 80
        print row_fmt.format('password', 'username', 'server')
        print '-' * 80
        for status, username, password, host, port in self.tuples.tuple_q:
            if status:
                print row_fmt.format(password, username, host + ':' + str(port))
                if self.dbh:
                    ip = ''
                    fqdn = ''
                    typ = cUtil.getTargetType(host)
                    if typ == cUtil.TTYPE.IP:
                        ip = host
                    if typ == cUtil.TTYPE.DOMAIN:
                        fqdn = host
                    br = ccd.BruteforceResult(
                        ip=ip,
                        fqdn=fqdn,
                        port=int(port),
                        username=username,
                        password=password,
                        service='telnet',
                    )
                    self.dbh.add(br)
                    #br = ccd.TelnetBruteforceResult(
                    #    host=host,
                    #    port=int(port),
                    #    user=username,
                    #    password=password,
                    #)
                    #self.dbh.add(br)

        self.tuples.join()

        print '-' * 80
        print "Finished in %fs" % cUtil.secs(start_time)
    def start(self):

        """ Do the thing """

        start_time = datetime.now()

        row_fmt = "{:30}{:30}{:}"
        for username, password, target in self.tuples.tuple_q:
            print row_fmt.format(password, username, target[0] + ':' + str(target[1]), '')
            if self.dbhandler:
                host, port = target
                ip = ''
                fqdn = ''
                typ = cUtil.getTargetType(host)
                if typ == cUtil.TTYPE.IP:
                    ip = host
                if typ == cUtil.TTYPE.DOMAIN:
                    fqdn = host
                br = ccd.BruteforceResult(
                    ip=ip,
                    fqdn=fqdn,
                    port=int(port),
                    username=username,
                    password=password,
                    service='ssh',
                )
                #br = ccd.SshBruteforceResult(
                #    host=target[0],
                #    port=int(target[1]),
                #    user=username,
                #    password=password,
                #)
                self.dbhandler.add(br)

        self.tuples.join()
        print("\nfinished in %fs" % cUtil.secs(start_time))
예제 #3
0
    def start(self):
        """ Do the thing """

        start_time = datetime.now()

        row_fmt = "{:30}{:30}{:}"
        for username, password, target in self.tuples.tuple_q:
            print row_fmt.format(password, username,
                                 target[0] + ':' + str(target[1]), '')
            if self.dbhandler:
                host, port = target
                ip = ''
                fqdn = ''
                typ = cUtil.getTargetType(host)
                if typ == cUtil.TTYPE.IP:
                    ip = host
                if typ == cUtil.TTYPE.DOMAIN:
                    fqdn = host
                br = ccd.BruteforceResult(
                    ip=ip,
                    fqdn=fqdn,
                    port=int(port),
                    username=username,
                    password=password,
                    service='ssh',
                )
                #br = ccd.SshBruteforceResult(
                #    host=target[0],
                #    port=int(target[1]),
                #    user=username,
                #    password=password,
                #)
                self.dbhandler.add(br)

        self.tuples.join()
        print("\nfinished in %fs" % cUtil.secs(start_time))
    def start(self):
        """ Do the thing """

        start_time = datetime.now()

        row_fmt = "{:30} {:30} {:30} | {:30}"
        for username, password, host, port, status in self.tuples.tuple_q:
            if status:
                print row_fmt.format(password, username,
                                     host + ':' + str(port), '')
                if self.dbh:
                    ip = ''
                    fqdn = ''
                    typ = cUtil.getTargetType(host)
                    if typ == cUtil.TTYPE.IP:
                        ip = host
                    if typ == cUtil.TTYPE.DOMAIN:
                        fqdn = host
                    br = ccd.BruteforceResult(
                        ip=ip,
                        fqdn=fqdn,
                        port=int(port),
                        username=username,
                        password=password,
                        service='mysql',
                    )
                    #br = ccd.MysqlBruteforceResult(
                    #    host=host,
                    #    port=int(port),
                    #    user=username,
                    #    password=password,
                    #)
                    self.dbh.add(br)

        self.tuples.join()
        print("\nfinished in %fs" % cUtil.secs(start_time))
    def start(self):

        """ Do the thing """

        start_time = datetime.now()

        print '\nStarting bruteforce'

        row_fmt = "{:30} {:30} {:30}"

        print '-' * 80
        print 'Real logins:'
        print row_fmt.format('password', 'username', 'target')
        print '-' * 80
        for success, code, user, password, host, port in self.tuples.tuple_q:
            # we actually found sth.
            if success:

                print row_fmt.format(password, user, host + ':' + str(port))

                # add creds to database
                if self.dbh:
                    ip = ''
                    fqdn = ''
                    typ = cUtil.getTargetType(host)
                    if typ == cUtil.TTYPE.IP:
                        ip = host
                    if typ == cUtil.TTYPE.DOMAIN:
                        fqdn = host
                    br = ccd.BruteforceResult(
                        ip=ip,
                        fqdn=fqdn,
                        port=int(port),
                        username=user,
                        password=password,
                        service='ftp',
                    )
                    #br = ccd.FtpBruteforceResult(
                    #    host=host,
                    #    port=int(port),
                    #    user=user,
                    #    password=password,
                    #)
                    self.dbh.add(br)
        self.tuples.join()

        if self.anon:
            print '-' * 80
            print 'Anonymous logins:'
            print row_fmt.format('password', 'username', 'target')
            print '-' * 80
            while True:
                try:
                    target, passw, user = self.anon_q.get_nowait()
                except:
                    break
                host, port = target
                print row_fmt.format(passw, user, host + ':' + str(port))

                # add creds to database
                if self.dbh:
                    ip = ''
                    fqdn = ''
                    typ = cUtil.getTargetType(host)
                    if typ == cUtil.TTYPE.IP:
                        ip = host
                    if typ == cUtil.TTYPE.DOMAIN:
                        fqdn = host
                    br = ccd.BruteforceResult(
                        ip=ip,
                        fqdn=fqdn,
                        port=int(port),
                        username=user,
                        password=passw,
                        service='ftp',
                    )
                    #br = ccd.FtpBruteforceResult(
                    #    host=host,
                    #    port=int(port),
                    #    user=user,
                    #    password=passw,
                    #)
                    self.dbh.add(br)

        print("\nfinished in %fs" % cUtil.secs(start_time))
예제 #6
0
    def parse_arguments(self, args):
        """parse all command line arguments"""

        parser = argparse.ArgumentParser(
            formatter_class=argparse.RawTextHelpFormatter,
            prog=__plgname__,
            description="Bruteforce pop3 logins",
            epilog="""Examples:
       popbruteforce.plg -t pop.test.local -u [email protected] -p password
       popbruteforce.plg -t pop.test.local -P pass.txt -U user.txt -nt 20
            """
        )

        parser.add_argument(
            "-t",
            help="target server address or hostname",
            dest='target',
            required=True,
        )

        parser.add_argument(
            "-port",
            help="port number, use 110 in combination with NOSSL/STARTTLS, 995 with SSL crypto",
            dest='port',
            type=int,
            default=-1,
            required=False,
        )
        parser.add_argument('-delay',
                            help='delay in between requests',
                            dest='delay',
                            default=0.0,
                            type=float
                            )

        parser.add_argument('-u',
                            help='usernames',
                            default=[],
                            nargs='+',
                            dest='users',
                            )
        parser.add_argument('-p',
                            help='passwords',
                            default=[],
                            nargs='+',
                            dest='passw',
                            )
        parser.add_argument('-U',
                            help='file containing one username per line',
                            default='',
                            dest='user_fn',
                            )
        parser.add_argument('-P',
                            help='file containing one password per line',
                            default='',
                            dest='passw_fn',
                            )

        parser.add_argument(
            "-c",
            help="cryptolayer STARTTLS/SSL/NOSSL (default SSL)",
            dest='crypto',
            default='SSL'
        )

        parser.add_argument(
            "-nt",
            help="thread count",
            dest='nthreads',
            type=int,
            default=1,
            required=False,
        )

        if not args:
            parser.print_help()
            sys.exit(1)

        arguments, _ = parser.parse_known_args(args)

        typ = cUtil.getTargetType(arguments.target)
        if typ == cUtil.TTYPE.DOMAIN:
            self.host = socket.gethostbyname(arguments.target)
            self.fqdn = arguments.target
        elif typ == cUtil.TTYPE.IP:
            self.host = arguments.target
            self.fqdn = ''
        else:
            print 'Invalid Target %s' % arguments.target

        self.port = arguments.port

        if (arguments.crypto):
            self.cryptolayer = str(arguments.crypto.upper())
            if self.port < 0:
                if self.cryptolayer == 'SSL':
                    self.port = 995
                else:
                    self.port = 110

        test.port = self.port
        test.host = self.host
        test.cryptolayer = self.cryptolayer

        try:
            ig_users = cTuples.cInputGenerator(data=arguments.users,
                                               filename=arguments.user_fn,
                                               expand_cb=test,
                                               prepare_cb=lambda x: x.strip(),
                                               maxthreads=arguments.nthreads,
                                               circle=False)
        except cTuples.ENoInput:
            print 'Error: No Usernames specified, please use the -u/U parameter to set usernames(s)'
            sys.exit(1)

        try:
            ig_passw = cTuples.cInputGenerator(data=arguments.passw,
                                               filename=arguments.passw_fn,
                                               prepare_cb=lambda x: x.strip(),
                                               maxthreads=arguments.nthreads,
                                               circle=True)
        except cTuples.ENoInput:
            print 'Error: No Passwords specified, please use the -p/P parameter to set password(s)'
            sys.exit(1)

        ig_users.start()
        ig_passw.start()
        self.tuples = cTuples.cTuples(inputs=[ig_users, ig_passw], prep_callback=brute, delay=arguments.delay)
        self.tuples.start()