CTF 【每日一题20160616】windows、linux hash破解
2016-06-18 16:34
387 查看
在http://hackgame.blackbap.org/找乐子第三天
题目3(如下图所示)
题目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
相关文章推荐
- c语言实现hashmap(转载)
- Ruby中Hash的11个问题解答
- Ruby简明教程之数组和Hash介绍
- 在C#中生成与PHP一样的MD5 Hash Code的方法
- js中hash和ico的关联分析
- 详解JavaScript中Hash Map映射结构的实现
- Javascript SHA-1:Secure Hash Algorithm
- 理解php Hash函数,增强密码安全
- Ruby中Hash哈希结构的基本操作方法小结
- PHP利用hash冲突漏洞进行DDoS攻击的方法分析
- PowerShell中定义哈希散列(Hash)和调用例子
- Redis String 类型和 Hash 类型学习笔记与总结
- php操作redis中的hash和zset类型数据的方法和代码例子
- Perl 哈希Hash用法之入门教程
- perl哈希hash的常见用法介绍
- php自定义hash函数实例
- php对文件进行hash运算的方法
- php常用hash加密函数
- PHP Hash算法:Times33算法代码实例
- php的hash算法介绍