1.telnetjava
2.SSHpython
3.字典生成器gen2k.py代码分析git
1、Metasploit批量验证爆破telnet安全
2、Metasploit对目标主机SSH爆破服务器
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工做的能力。在终端使用者的电脑上使用telnet程序,用它链接到服务器。终端使用者能够在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入同样。能够在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登陆服务器。Telnet是经常使用的远程控制Web服务器的方法。网络
使用Telnet协议进行远程登陆时须要知足如下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登陆标识与口令。app
Telnet远程登陆服务分为如下4个过程:ssh
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为创建在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登陆会话和其余网络服务提供安全性的协议。利用 SSH 协议能够有效防止远程管理过程当中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其余操做平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎全部UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其余平台,均可运行SSH。函数
SSH 主要由三部分组成:工具
提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 一般运行在TCP/IP链接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,而且该协议不执行用户认证。更高层的用户认证协议能够设计为在此协议之上。
用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符惟一标识此会话而且适用于标记以证实私钥的全部权。 SSH-USERAUTH 也须要知道低层协议是否提供保密性保护。
将多个加密隧道分红逻辑通道。它运行在用户认证协议上。它提供了交互式登陆话路、远程命令执行、转发 TCP/IP 链接和转发 X11 链接。
首先分析其参数
USAGE: ./gen2k.py -w <wordlist> -o <output> [options] [ -c ] Enable word combination among the words in wordlist.
链接wordlist里面words。
[ -d ] Custom comma separated values to combine with wordlist.
定制逗号分隔值用来链接wordlist
[ -e ] Enable wpa/wpa2 fitness check for generated passwords. [ -h ] Prints this help. [ -n ] Enable frequently used number combination with wordlist.
使用常用的数字来链接wordlist
[ -o ] Output filename. [ -w ] Path to word list file. Wordlist must contain info related to Target. [ -y ] Enable year combination with wordlist.
添加年份
[ -z ] Enable conversion of words to upper & lower case letters.
若使用参数-c
if exist('-c'): temp = gen_word_combo(master_list) data = list(set(temp+data)) def gen_word_combo(words=[]): """ Function to mix multiple words from given list. """ word_list = [] if len(words) <= 1: return word_list for word in words: for second_word in words: if word != second_word: word_list.append(second_word+word) return word_list
能够看见这个函数的功能是word拼接word。
若使用参数-d
if exist('-d'): try: custom_values = find('-d').split(',') except (AttributeError): print '[!] Are you kidding me with no values?' sys.exit(1) temp = gen_custom(master_list, custom_values) data = list(set(temp+data)) def gen_custom(words=[], data=[]): """ Funtion to combine user defined input with wordlist. """ word_list = [] if (len(words) <= 0 or len(data) <= 0): return word_list for item in data: for word in words: word_list.append(item+word) word_list.append(word+item) return word_list
当关键词之间有“,”,则按照“,”分开以后再链接。
若使用参数-e
if exist('-e'): data = wpa_validation_check(data) write_file(find('-o'), data) print '[*] Total words generated: %d' % (len(data)) sys.exit(0) def wpa_validation_check(words=[]): """ Function to optimise wordlist for wpa cracking Removes Duplicates. Removes passwords < 8 or > 63 characters in length. """ custom_list = list(set(words)) custom_list = [x for x in custom_list if not (len(x) < 8 or len(x) > 63)] return custom_list
把每一个words按照一个一个单词分开以计算单词量。
若使用参数 -n
if exist('-n'): temp = gen_numbers(master_list) data = list(set(temp+data)) def gen_numbers(words=[]): """ Function to mix words with commonly used numbers patterns. """ word_list = [] if len(words) <= 0: return word_list num_list = ['0', '01', '012', '0123', '01234', '012345', '0123456', '01234567', '012345678', '0123456789', '1', '12', '123', '1234','12345', '123456','1234567','12345678','123456789', '1234567890', '9876543210', '987654321', '87654321', '7654321', '654321', '54321', '4321', '321', '21'] for word in words: for num in num_list: word_list.append((word+num)) word_list.append((num+word)) return word_list
将word和num表里面的num拼接,这里咱们能够修改num表的数字为用户的生日或者学号。
若使用参数 -y
temp = gen_year(master_list) data = list(set(temp+data)) def gen_year(words=[]): """ Function to mix auto generated year with words from wordlist. Hint: Date of birth & special dates are often combined with certain words to form passwords. """ word_list = [] if len(words) <= 0: return word_list # Double digit dates start = 1 while(start <= 99): for word in words: word_list.append(word + str("%02d") % (start)) word_list.append(str("%02d") % start + word) start += 1
这里是拼接末两位
# Four digit dates start = 1900 while (start <= 2020): for word in words: word_list.append(word+str(start)) word_list.append(str(start)+word) start += 1
这里拼接四位年份。
return word_list
若使用参数 -e
if exist('-e'):
data = wpa_validation_check(data)
def wpa_validation_check(words=[]): """ Function to optimise wordlist for wpa cracking Removes Duplicates. Removes passwords < 8 or > 63 characters in length. """ custom_list = list(set(words)) custom_list = [x for x in custom_list if not (len(x) < 8 or len(x) > 63)] return custom_list
这里是按照长度检查,把最后wordlist里面长度小于8或者大于63的words去掉。这里咱们能够按照咱们所须要的长度修改。
1) 使用枚举的方法破解telnet登录密码。
利用Metasploit暴破目标主机telnet服务。
这里使用的是实验bar所提供的kali虚拟机进行的这次实验
使用gen2k工具生成密码表。单击桌面空白处,右键菜单选择“在终端中打开”。
在终端中输入命令“cd /home”,进入软件目录,在终端中输入命令“more user.txt”,查看已收集到的关键词文件“user.txt”,利用此文件生成对应的密码。
3.在终端中输入命令“python gen2k.py -n -y -z -e -c -w user.txt -o passwd.txt”,生成密码文件passwd.txt,在终端下输入命令“more passwd.txt”,查看生成的内容。
在终端中输入命令“nmap –sV 192.168.1.3”,扫描目标主机,发现目标主机开启telnet服务。
在终端中输入命令“use auxiliary/scanner/telnet/telnet_login”,启用漏洞利用模块, 提示符就会提示进入到该路径下。
在终端中输入命令“set RHOSTS 192.168.1.3”,设置目标主机的IP地址。
在终端中输入命令“set PASS_FILE /home/passwd.txt”,爆破时使用的密码文件为passwd.txt。
在终端中输入“telnet 192.168.1.3 ”,输入获取的帐号root和密码Simplexue123,链接成功。
输入“nmap –sV -O 192.168.1.3”,对目标主机进行端口扫描,发现开放22端口。
在msfconsole中输入命令“search ssh_login”,搜索ssh_login的相关工具和攻击载荷。
在终端中输入命令“use auxiliary/scanner/ssh/ssh_login”,启用漏洞利用模块, 提示符就会提示进入到该路径下。
在终端中输入命令“show options”,查看须要设置的相关项,“yes”表示必须填写的参数。
在终端中输入命令“set RHOSTs 192.168.1.3”,设置目标主机的IP地址。
在终端中输入“set USERNAME root”,指定登录用户名root。
在终端中输入“set PASS_FILE /home/passwd.txt”,设置暴力破解的密码文件路径。
在终端中输入“set THREADS 50”,设置暴力破解的线程数为50。
在终端中输入“run”, 开始向目标主机爆破ssh的登录账号和密码,登录账号为root,密码为Simplexue123。
输入“ssh
rootz@192.168.1
.3”,链接目标主机,而后能够看见网卡信息。
实验bar的虚拟机真的太tm的慢并且卡了,我之后不再用了...
暴力破解有一个很好用的软件是burpsuite,这个软件功能很是强大,可是最近要输入lisence才能使用。咱们这些平民百姓只能另找出路才行。。
解决方法以下:在同一目录下创建一个.bat文件,内容为
java -jar BurpLoader.jar
,同时修改系统时间为2016年12月3日前才能使用。
接下来回到正题,咱们使用burpsuite暴力破解咱们学院的教务管理系统,首先进入教务管理系统,任意输入东西。而后使用burpsuite截取包信息。
接下来咱们尝试使用爆破,send to intruder
后,咱们在输入密码的地方设置爆破点。
接下来设置爆破的payload
,首先利用字典生成器生成payload,以我本人的帐号密码进行尝试。因为我知道本身的生日,因此就不须要设置年份进行逐年猜想。
选择payload以后咱们进行爆破,爆破完成后查看返回包的长度,假如包的长度与别的包不同的话就说明这里可能爆破成功了!
仔细对比这几个包发现最后结果都是登陆不成功,缘由均是验证码不正确。后来发如今不使用其余软件状况下burpsuite没法爆破带验证码的登陆,由于验证码会实时更新,每一个包的验证码都不同。
网上搜索了相关的信息后发现可使用PKAV HTTP Fuzzer配合burpsuite进行对有验证码的登陆进行爆破。
首先使用burpsuite抓包,而后将包内容复制到PKAV HTTP Fuzzer里面,添加爆破标记和验证码标记。
接下来咱们就对验证码进行识别....
.....
没想到学校的验证码这么难识别,首先中文就难以识别了,并且还要选择红字,我必定是失了智才去爆破学校的登陆网站,下载一个次世代验证码识别,生成识别库还要钱。。。
放弃了放弃了,开始我还鄙视学校的登陆网站,我仍是菜啊,此次换一个验证码简单的来爆破吧...
此次尝试对某网的登陆页面进行爆破
发现有一个是明显和其余的不同,用这个看成密码尝试登陆发现是成功的
这个是没有验证码的网站,不太具备表明性。
接下来尝试一下攻击一个有验证码
咱们仍是任意输入,用burpsuite抓包,
在帐号固定为邮箱的状况下,在密码处设置爆破点。此次针对验证码,咱们发现这个好像与学院的登陆有点不同,咱们对图片右键复制其地址:
http://passport.shiyanbar.com/captcha/b567608c162ac48ab71aa9d019fc84e6.png
发现其后缀是一个.png的图片格式,说明只要这个地址不变,每次爆破的包验证码都是同样的。
而学院的验证码的地址是:
http://dzjw.besti.edu.cn/(xqopn4jvbuixlu55l2arf045)/CheckCode.aspx
后缀是.aspx的动态页面格式,不管图片是否同样,而地址都同样。说明每次执行爆破的包验证码都不同。
这样的话,咱们只要事先输入输入验证码的值再执行爆破就好了。。
发现有个payload返回包的长度不一样,尝试一下果真正确了。
由上述几个实验咱们知道暴力破解的关键是生成破解字典的种子。那么咱们针对中国人经常使用密码,咱们该采用怎么样的字典呢?
咱们以一个学生为例,一个电科院的学生拥有的信息有:姓名、性别、出生年月日、手机号、班级、学号、邮箱、身份证号。那么咱们设置的种子就将这些信息放进去而后利用字典生成器生成就能够了。
假如以我本身为例,设置种子以下
看似不是不少,尝试一下生产字典看看有多少:
才933,也不是不少啊。
我总结了国内用户的密码主要来源于如下方面:
姓名的汉语拼音变体
好比xiaoming(小明)、xiaohong(小红)、liming(李明)等,因为国内两字姓名的广泛性,尤为是王、李、张这些大姓的存在,使得这种建立密码的方法存在很大的重合几率,风险很大。好比在百度上搜索“李明”,有1740万个结果。用生日和手机号看成密码。
咱们常常看到相似1985080四、13560898这样的密码。因为现有的邮箱和SNS网站,一般限定密码最低为8位,因此那些位数相近的数字组合,如生日、固定电话号码、手机号前8位等成为人们经常使用的密码。
默认的密码
在研究用户使用密码行为的时候,至少有75%以上的用户不会主动改变默认的密码,好比当申请ADSL密码重置、手机密码重置以后,不少人选择把系统给的密码记在小本上,而不是本身去设定一个熟悉的,这也致使像admin、root、administrator这样的系统默认密码被普遍应用。
弱密码
国内最大的网络安全厂商360安全中心也发布了中国网民最经常使用的25个“弱密码”。其中,除password、abc12三、iloveyou、qwerty等全球网民通用“弱密码”外,其他均为数字组合。而简单的数字组合,彷佛更是中国网民最爱,占了榜单近半数。好比“666666”和“888888”这样的吉利数,几乎是全部中国黑客密码字典中的必备项,而“5201314”(我爱你一辈子一世)显然被国人寄予了浓厚的感情色彩,为中国特点“弱密码”。据统计,网民经常使用的“弱密码”主要包括简单数字组合、顺序字符组合、临近字符组合以及特殊含义组合等四大类别。而从中国版“弱密码”榜单来看,国内网民更习惯设置6位字符密码,TOP25中竟有18个是6位字符,所占比例高达72%。此外,“a1b2c3”和“p@ssword”这类组合型密码看似复杂,其实也在黑客重点关注的密码列表中。南方日报记者戴远程这些统计的数据是国内的一些安全厂商的专家数据的研究得出来的结论国内网民经常使用的25个“弱密码”包括:000000、1111十一、111111十一、11223三、12312三、12332一、12345六、1234567八、65432一、66666六、88888八、abcdef、abcabc、abc12三、a1b2c三、aaa1十一、123qwe、qwerty、qweasd、admin、password、p@ssword、passwd、iloveyou、5201314。
为了咱们的帐号安全,你还在使用这些弱口令吗?不得不说上面的数据都是挺精准的,并且咱们的密码比较多的仍是最后面的那一个5201314了,目测也有不少人会使用一些英文带上5201314,也有带上本身名字的缩写加上5211314
总的来讲,为了咱们的帐号密码安全,尽可能设置复杂一些的密码吧,另外,咱们也要作好其它的防御措施,作好手机的绑定,密保的设置,还有不用一些非法的软件,当心识别钓鱼网站