您的位置:首页 > 运维架构 > Linux

CTF 【每日一题20160616】windows、linux hash破解

2016-06-18 16:34 387 查看
http://hackgame.blackbap.org/找乐子第三天

题目3(如下图所示)



这道题先考查一下系统常识:密码存放的路径(百度一下,你就知道),还提供了一个小工具。

一般情况下,windows密码存放位置在:
c:\windows\system32\config\SAM 下的SAM文件中。sam是security account manager的缩写。即安全账户管理的意思。里边包括账户密码、SID、权限等信息。安全标识符 (SID) 是长度可变的唯一值,用来标识 Windows 操作系统中的安全主体或安全组。常见 SID 是标识一般用户或一般组的一组 SID。它们的值在所有操作系统中都相同。
将 提交后,返回下面的字符串


d18e760f2b15a239328274a447cd67f7
- > NTLM?


linux系统的密码存放在:
用户帐号 /etc/passwd
用户密码 /etc/shadow
在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,比如下面是某人系统中的/etc/passwd 的两行;
第一行beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash
第二行beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:501:502::/home/linuxsir:/bin/bash
第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是 beinan 和linuxsir;
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID ;请参看本文的UID的解说;
第四字段:GID;请参看本文的GID的解说;
第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户是没有设置全称;
第六字段:用户的家目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;
第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是 bash ;所以设置为/bin/bash;

/etc/shadow文件是/etc/passwd 的影子文件,这个文件并不由/etc/passwd 而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效期限等;这个文件只有root权限可以读取和操作。
/etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割;我们以如下的例子说明;
第一行beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
第二行linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用; www.2cto.com
第九字段:保留字段,目前为空,以备将来Linux发展之用;

本题在提交/etc/passwd后,返回如下代码:


$1$1zUVF6AN$uHBYbOv4WW1Z9kkKFnJ2v.
- > MD5(UNIX)?


这道题还提供了一个密码恢复工具passwordpro,下载解压后看其帮助,功能挺强大。可以用于恢复– MySQL – MySQL5 – DES(Unix) – DES(Oracle) – MD2 – MD2(HMAC) – MD4 – MD4(HMAC) – MD4(Base64) – MD5 – MD5(APR) – MD5(Unix) – MD5(HMAC) – MD5(Base64) – MD5(phpBB3) – MD5(Wordpress) – MD5(Cisco PIX) – MD5_Middle – MD5(HMAC(Wordpress)) – NTLM – SHA-1 – SHA-1(HMAC) – SHA-1(Base64) – SHA-1(Django) – SHA-224 – SHA-224(HMAC) – SHA-256 – SHA-256(HMAC) – SHA-256(Unix) – SHA-256(Django) – SHA-256(Base64) – SHA-256(md5($pass)) – SHA-256(PasswordSafe) – SHA-384 – ......等等等等
另外解hash码有许多在线工具:
alimamed.pp.ru/md5/
www.phpbbhacks./md5.php
md5.shalla.de/cgibin/search.cgi
www.schwett./md5/ ...
www.clicasso.fr/outils/md5.php
www.iwebtool./md5/
md5.benramsey./
csthis./md5/index.php
shm.hardcore.pl/md5/
md5.altervista.org/
md5.allfact.info/
www.acecoolco./tool_md5.php
tools.elitehackers.info/md5.php
md5.geeks.li/
bokehman./cracker/
www.thepanicroom.org
md5.overclock.ch
www.tydal.nu/article/md5crack/
md5.neeao./
www.xmd5.org/
md5.neeao./
www.plaintext.info/search.php
passcracking./Good_values_list.asp
www.hashchecker./index.php_slssearch_hash
uploadpage.net/ap/php/projects/rt/addhash.php
www.md5lookup./
ivdb.org/search/md5/
passcracking.ru/
gdataonline./seekhash.php
www.securitystats./tools/hashcrack.php
passcrack.spb.ru/index.phpnameCrackMD5 //about 10,1 million hashes
md5.t145.1paket./md5crack.php
www.cmd5.
本题提供的passwordspro使用方法如下:打开passwordspro,右键单击中间区域,打开“添加”对话框(或者直接按alt+Insert组合键),然后键入:用户名(随意)、要解密的hash码(本题中为:windows中的d18e760f2b15a239328274a447cd67f7或linux中的$1$1zUVF6AN$uHBYbOv4WW1Z9kkKFnJ2v)、你所知道的salt(hash时需要的一个随机数,使解码更加困难,不知道就不要填)、哈希类型(本题windows的似乎为NTLM,linux的为MD5(UNIX)),然后确定保存。之后点运行键,开始计算(穷举)。
然后要配置暴力破解的字符集、密码生成要求、分布式攻击方式等等




选择审计方式:暴力破解。




运气不错,选择NTLM的hash码会很快得到结果:*#!*提交成功。
但如果要破解MD5(UNIX)的那个hash码,就比较困难了,我试着调了几次字符集,都未成功解除密码。似乎是工具使用不当,搜了百度,发现有人提供了不同系统进行hash时的一些方法要点:
一、Linux/Unix系统hash要点:
1.ES(Unix)
例子: IvS7aeT4NzQPM
说明:Linux或者其他linux内核系统中
长度: 13 个字符
描述:第1、2位为salt,例子中的'Iv'位salt,后面的为hash值
2.系统
4000
:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
说明:Linux或者其他linux内核系统中
长度:34个字符
描述:开始的$1$位为加密标志,后面8位12345678为加密使用的salt,后面的为hash
加密算法:2000次循环调用MD5加密
3.系统:SHA-512(Unix)
例子:$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm
说明:Linux或者其他linux内核系统中
长度: 13 个字符
描述:开始的$6$位为加密标志,后面8位为salt,后面的为hash
加密算法:5000次的SHA-512加密
4.系统:SHA-256(Unix)
例子:$5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi
说明:Linux或者其他linux内核系统中
长度: 55 个字符
描述:开始的$5$位为加密标志,后面8位为salt,后面的为hash
加密算法:5000次的SHA-256加密
5.系统:MD5(APR)
例子:$apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
说明:Linux或者其他linux内核系统中
长度:37个字符
描述:开始的$apr1$位为加密标志,后面8位为salt,后面的为hash
加密算法:2000次循环调用MD5加密
二、windows系统下hash要点
Windows hash由二部分组成,分别是LM HASH&NT HASH
例子:Admin:b474d48cdfc4974d86ef4d24904cdd91
长度:98个字符
组成:用户名称:RID:LM-HASH值:NT-HASH值
加密算法:MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
详情参考:http://www.freebuf.com/articles/database/70395.html
1.LM
LM hash算法:
1.用户的密码被限制为最多14个字符。
2.用户的密码转换为大写。
3.系统中用户的密码编码使用了OEM内码页
4.密码不足14字节将会用0来补全。
5.固定长度的密码被分成两个7byte部分。
每部分转换成比特流,在分7bit为一组末尾加0,组成新的编码
6.上步骤得到的8byte二组,分别作为DES key为“KGS!@#$%”进行加密。
7.将二组DES加密后的编码拼接,得到最终LM HASH值。
2.NLTM
首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0补足14字节;
"123456"->310032003300340035003600。
从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian 序,ntoh*()、hton*()函数不宜用在SMB报文解码中。0×80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成 0×00??。此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0×00。对所获取的 Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值,16字节310032003300340035003600-进行标准MD4单向哈希->32ED87BDB5FDC5E9 CBA88547376818D4,就得到了最后的NTLM Hash。 NTLM Hash:32ED87BDB5FDC5E9CBA88547376818D4。
与LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"KGS!@#$%"。MD4是真正的单向哈希函数,穷举作为数据源出现的明文,难度较大。
三、mysql系统下hash要点
例子:606717496665bcba
说明:老版本的MySql中
长度:8字节(16个字符)
说明:包括两个字节,且每个字的值不超过0x7fffffff
系统:MySQL5
例子:*E6CC90B878B948C35E92B003C792C46C58C4AF40
说明:较新版本的MySQL
长度:20字节(40位)
加密算法:SHA-1(SHA-1($pass))
四、其他系统hash要点:
1.系统:MD5(WordPress)
例子:$P$B123456780BhGFYSlUqGyE6ErKErL01
说明:WordPress使用的md5
长度:34个字符
描述:$P$表示加密类型,然后跟着一位字符,经常是字符‘B’,后面是8位salt,后面是就是hash。
加密算法:8192次md5循环加密
2.系统:MD5(phpBB3)
说明:phpBB 3.x.x.使用
例子:$H$9123456785DAERgALpsri.D9z3ht120
长度:34个字符
描述:开始的$H$为加密标志,后面跟着一个字符,一般的都是字符‘9’,然后是8位salt,然后是hash值。
加密算法:2048次循环调用MD5加密
3.系统:RAdmin v2.x
说明:Remote Administrator v2.x版本中
例子:5e32cceaafed5cc80866737dfb212d7f
长度:16字节(32个字符)
加密算法:字符用0填充到100字节后,将填充过后的字符经过md5加密得到(32位值)
4.标准MD5
例子:c4ca4238a0b923820dcc509a6f75849b
使用范围:phpBB v2.x, Joomla 的 1.0.13版本前,及其他cmd
长度:16个字符
5.其他的加salt及变形类似:
md5($salt.$pass)
例子:f190ce9ac8445d249747cab7be43f7d5:12
md5(md5($pass))
例子:28c8edde3d61a0411511d3b1866f0636
md5(md5($pass).$salt)
例子:6011527690eddca23580955c216b1fd2:wQ6
md5(md5($salt).md5($pass))
例子: 81f87275dd805aa018df8befe09fe9f8:wH6_S
md5(md5($salt).$pass)
例子: 816a14db44578f516cbaef25bd8d8296:1234

本题中要解开MD5(unix),可以参考Linux/Unix系统hash要点进行选项设置,我试了若干次,没有成功,很遗憾,日后再说吧。

总之本题可以通过提交*#!*解决!

最后,推荐一个有关hash的专业网站http://www.insidepro.com/ 打开它的Forum可以下在SAMinside、passwordspro和EGB(极速GPU爆破): http://www.insidepro.com/download/saminside.zip http://www.insidepro.com/download/passwordspro.zip http://www.insidepro.com/download/EGB.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hash ctf