黑入Windows 95实战:利用CIFS共享密码绕过漏洞实现入侵
Jump ESP, jump!: 黑入Windows 95(第一部分)
在CTF比赛中,我们遇到了非常古老的系统。结果发现,黑入这些恐龙级老系统并不容易,因为现代工具(如Metasploit)没有针对这些老箱子的漏洞利用,当然,没有Metasploit,我们的“133t h4cking skillz”也毫无用处... 😃
但我有个想法:这可以是一个很有趣的小研究。
黑客规则如下:
- 只能使用公开可用的工具进行黑客攻击,因此不能开发工具。这是一个脚本小子的CTF,我们不能编写代码!
- 只允许无需用户交互的黑客攻击(基于IE的漏洞利用不在范围内)。
- 我需要即时远程代码执行。例如,如果我能将恶意软件放到C:驱动器,并修改autoexec.bat,我仍然没有完成,因为在真实的CTF中没有人会为我重启机器。如果我能重启机器,那没问题。
- 我没有物理访问权限。
我选择了Windows 95来完成这个任务。首先,我必须获取一个正版的Windows 95安装程序,所以我访问了微软在线商店并从他们的官方网站下载了它。
我在虚拟化环境中安装了它(记得,你需要启动软盘才能从CD安装),在看了安装屏幕后,它给了我严重的怀旧炸弹。“更易使用”、“更快更高效”、“高性能”、“友好”、“直观界面”。谁不想要这些呢? 😃
现在我有一个可用的Windows 95盒子,设置TCP/IP很容易,让我们尝试黑入它!
我的第一个工具总是nmap。让我们扫描这个盒子!下面我展示了结果中有趣的部分:
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
Running: Microsoft Windows 3.X|95
OS details: Microsoft Windows for Workgroups 3.11 or Windows 95
TCP Sequence Prediction: Difficulty=25 (Good luck!)
IP ID Sequence Generation: Broken little-endian incremental
第一个令人兴奋的事情是没有端口445!端口445自NT 4.0才开始有。如果你检查所有著名的Windows漏洞利用(例如MS03-026、MS08-067),它们都使用端口445和命名管道。但Windows 95上没有命名管道!
因为我是Nessus猴子,让我们在上面运行免费的Nessus扫描!
只发现一个关键漏洞:
Microsoft Windows NT 4.0 Unsupported Installation Detection
没什么用,Nessus!但至少它是免费的。
接下来,我尝试了GFI Languard,什么都没有。它检测到机器为Win95,打开的TCP端口,以及一些UDP端口为开放(误报),仅此而已...
让我们尝试另一个免费的漏洞扫描器工具Nexpose。结果好多了:
- CIFS NULL Session Permitted
- Weak LAN Manager hashing permitted
- SMB signing not required
- Windows 95/98/ME Share Level Password Bypass
- TCP Sequence Number Approximation Vulnerability
- ICMP netmask response
- CIFS Share Readable By Everyone
我认为以下漏洞目前对我无用:
- Weak LAN Manager hashing permitted - 没有用户交互或服务查看网络,无用(我可能错了,稍后会检查这个)
- TCP Sequence Number Approximation Vulnerability - 不感兴趣
- ICMP netmask response - 不感兴趣
- CIFS Share Readable By Everyone - 除非文本文件中有密码,否则无用
但我们有两个有趣的漏洞:
- CIFS NULL Session Permitted - 这可能有趣,我稍后会检查这个...
- Windows 95/98/ME Share Level Password Bypass - BINGO!
让我在这里引用Nexpose:
"3.2.3 Windows 95/98/ME Share Level Password Bypass (CIFS-win9x-onebyte-password)
Windows 95/98/ME文件和打印共享服务中的一个缺陷允许未经授权的用户通过发送密码的第一个字符来访问文件和打印共享。由于猜测密码所需的尝试次数有限,暴力攻击可以在几秒钟内执行。
已使用密码P建立到共享TEST的连接。"
微软方面的漏洞描述:
http://technet.microsoft.com/en-us/security/bulletin/ms00-072
例如,如果密码是“Password”(不带引号),客户端发送密码“P”(不带引号)和长度1,客户端被认证。为了找到密码的其余部分,攻击者将长度增加到2,并开始猜测第二个字母,直到他达到“PA”并再次被认证。由于Windows 95中的共享密码不区分大小写,“Pa”和“PA”也将被接受。攻击者可以继续增加长度并逐个猜测下一个字母,直到他获得完整的“PASSWORD”(因为最大长度是8个字符)。
我相信ALT+033到ALT+255之间的所有字符都可以在Windows 95的共享密码中使用,但由于不区分大小写,我们有196个字符可用,最大长度为8个字符。在最坏的情况下,这意味着我们可以在1568个请求中猜出完整密码。有趣的是,共享密码(默认情况下)不连接到任何用户名/账户,并且无法通过暴力破解锁定。
幸运的是,有一个伟大的工具可以利用这个漏洞:
Share Password Checker
让我们检查这个工具的行动:
W00t w00t,它在不到2秒内暴力破解了密码!
查看wireshark转储,我们可以看到它是如何完成的:
如你所见,在转储中间,我们可以看到它已经猜到了部分“PASS”,并且正在暴力破解第五个字符,它发现“W”是正确的第五个字符,并开始暴力破解第六个字符。
如果我们在CTF中幸运,整个C:\驱动器以完全读写访问共享,我们可以将我们的团队标识符写入c:\flag.txt。但如果我们想要远程代码执行呢?请保持关注,这将是本文下一部分的主题。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码