从渗透机房到窃取考试卷子

Table of Contents

本文已发于《黑客X档案》2011.2、3月合刊

1. 第一节课:踩点机房

踩点,是渗透测试的第一步,该过程又叫做“信息收集”。踩点的目的是收集对方一切可在渗透中使用的信息。掌握了对方敏感信息的多与少,是决定渗透测试成败的关键要素。可以通过搜索引擎深度搜索、社会工程学欺骗、扫描主机端口和漏洞等方法来获取对方各种敏感信息。最后将这些信息稍加整理,并利用这些信息进行渗透测试。在《黑客大曝光——网络安全机密与解决方案》的第一章对踩点环节有着非常详尽的说明,建议各位读者去细细品味。

作为学校用于课堂教学的机房,为满足教学需求和学生实验的方便,机房所有机器内的操作系统都是相同的配置、安装有一致的应用程序,并且都安有还原精灵。这是种非常常见的机房配置环境。在这样的环境下,更加有利于我们对其进行渗透,我们不用对内网中任何一台机器进行盲目的扫描探测,因为系统内部配置都一样的,只需要检查本机存在的脆弱点即可。只要本机出现安全问题,那么其他所有机器都存在着相同的安全问题,因此避免了扫描、猜测等等烦琐的过程,并且得到的结果准确性非常高,从而节约了不少时间。例外情况下便是部分同学关闭了部分进程,或者存在个别还原功能失效了的,导致系统乱七八糟,不跟其他机器配置相等。不过这个可能性不太高,即便存在也不对渗透有太多影响。这样,只要能渗透一台机器,便等于渗透了整个机房了。

在踩点过程中,我们首先要得到一些在渗透中能使用上的重要信息:IP 地址、系统开启的端口、系统漏洞补丁更新状态、系统开启的服务,以及部分涉及系统安全相关的配置情况,例如远程桌面是否开启、是否有共享、账号空口令等等。我将这次对整个机房踩点得到的结果整理成表,如下:

本机IP地址:10.10.25.61;

子网掩码:255.255.255.128;

主机里没有 Web 站点,IIS 版本是 5.1;SQL server 版本是 2005,SA 权限,空口令;FTP 是用的 IIS 中的 FTP,无写入权限。

SQL Server 的服务是开了的

没有任何共享目录

我想,列出的这些信息完全可以反映出机房的安全性了。从整理出的结果来说,成功渗透整个内网的几率比较大。在开始进行渗透时,我们来首先确定先从哪一步下手,选出其中可能使用到的脆弱点,并且根据脆弱点的危害程度的高低依次排列:SQL Server > IIS/FTP > 系统漏洞。我将从威胁度最高的开始下手——SQL Server。

然后,我们还需要确定机房内 IP 分配方式。每台主机有自己的 IP,该机房内一共有4排主机,每排20台。本机IP地址是 10.10.25.31,子网掩码是 255.255.255.128,网关是 10.10.25.7,那么可以得出 IP 地址的范围是 10.10.25.1~10.10.25.126。以后即便是需要扫描,也只用扫描这个段的 IP 了。

计算 IP 地址范围的方法:

IP 地址是32位的,子网掩码全部为1的部分称为网络号,剩下的位数中为0的称为主机号。

首先将IP地址10.10.25.61转换成二进制格式:00001010.00001010.00011001.00011111,然后再把子网掩码也转换成二进制格式:11111111.11111111.11111111.10000000。并将IP地址的每一位对应子网掩码的每一位做AND运算,运算法则是:1 和 1 结果为 1,其余都为 0。

00001010.00001010.00011001.00011111
11111111.11111111.11111111.10000000
————————————————————————
00001010.00001010.00011001.00000000
得到的结果即:00001010.00001010.00011001.00000000,转成十进制表示为 10.10.25.0。

由于本例中子网掩码网络位有 25 位,IP 地址是 32 位的,那么,还剩下的 7 位就是主机号。将得到的结果中倒数的 7 个 0 变成 1,得到的结果为:00001010.00001010.00011001.01111111,转换成十进制表示为:10.10.25.127。然后除去两个特殊用途的地址 10.10.25.0 和 10.10.25.127,剩下的 10.10.25.1~10.10.25.126 即为 IP 地址范围。再排除一个网关地址 10.10.25.7。所以该子网内一共可以有 125 台主机。机房共 80 台机子,有 125-80=45 个IP地址未使用。

2. 第二节课:尝试渗透

通过第一节课的踩点,我已经获得了大量的信息,那么这节课便是利用这些信息尝试渗透了。

在渗透前,我们还需要做一件事,由于每台机器上都安有教学管理系统,主机是可以看到我们学生端的屏幕在做什么的,渗透教师机当然不能让老师看到你在渗透他。所以必须关闭它。

机器上安的是一款名为“极域电子教室”的教学管理系统。客户端(安在学生机器上的)一般是不会提供“退出”功能的。我尝试了用任务管理器直接结束学生端的进程 StudentMain.exe,但提示“无法完成操作,拒绝访问”,看来是利用了驱动程序来 HOOK 了 SSDT 里的 NtOpenProcess 函数。不过也没关系,因为我发现系统里安的智能 ABC 输入法是 5.0 的,该版本存在着一个非常经典的漏洞,只要依次按下 v、↑、Delete、空格键,即可使对应的程序崩溃。为了崩溃这个教学管理系统,我找了一处可以输入字符的地方,在传送文件给教师机,选择文件时,这里可以输入字符。将光标置于“文件名”后面的输入框内,依次按下 v、↑(方向键)、Delete 和空格键,程序立即就死了,如图1:

1.JPG

图1

这样一来就可以不必担心被老师从教师机上看到了,我们可以为所欲为了。提外话,通过该方法也崩溃其他程序,2005年时,利用该漏洞可以在网吧里崩溃掉网管程序从而免费上网,我朋友 JinhV 曾屡试不爽。

通过之前踩点得到的信息,可看出,其中威胁最大的脆弱点是 SQL Server,SA 权限,空口令。我尝试下登录,由于没有工具,就只好用 SQL Server 自带的“查询分析器”来完成本工作。先尝试本地登录,如图2、图3:

2.JPG

图2

3.JPG

图3

登录成功,没有任何问题。登录成功后的界面如图4:

4.JPG

图4

现在已经确定了可以利用 SQL Server 的 SA 来登录,那么多尝试几个 IP,都会成功。既然是 SA 权限了,接下来的一切都好办了。不过我主要目的是教师机,那么下一步便是确定教师机的 IP 地址。

回忆上节课记录下来的本机信息是 10.10.25.31,恰好上节课我坐的位置是从门往内数第二排,已知每排20台(直接数机器数确定),大胆猜测IP地址划分是从 10.10.25.1 开始的(排除网关地址 10.10.25.7)。

这节课我坐的机器本机 IP 为 10.10.25.51,为了做假设性的猜测,先按顺序数物理机器的某一台机器所在位置,然后恶作剧般将它电脑重启。为了便于观察,我重启了我旁边第二个同学的主机 10.10.25.49,不过他的物理位置是第50台,因为要排除网关地址 10.10.25.7。直接用“查询分析器”登录 10.10.25.49,然后再在旁边“查询”窗口中输入以下命令:

exec xp_cmdshell “shutdown –r –t 0 “

几秒后,该同学电脑重启。然后用同样的方法重启几台机器,都跟我预计的一样,那么便直接按顺序数到教师机的物理号数,再将 IP 地址主机位加1,如果没错,IP 地址应该是 10.10.25.62。然后用“查询分析器”登录,同上执行以下命令:

exec xp_cmdshell “tasklist”

用 tasklist 命令列出教师机当前运行中的进程,看看是否有教学管理系统的控制端进程运行着。因为之前我结束的学生端进程名为“StudentMain.exe”,那么根据命名规则,没猜错的话主机的控制端进程名应该带有“Teacher”字样,结果真找到了,进程名为“TeacherMain”,并确定了 10.10.25.62 就是教师机。而且我还在进程列表中看到了 mstsc.exe 进程,这个是远程桌面连接的进程,这个老师习惯用远程桌面登录到他办公室里的电脑中进行教学演示,由于机房内就连教师机也有还原精灵,很多软件环境在上课时才安装显然很浪费时间,于是他便每次登录到办公室里的电脑中进行教学演示。

看来,眼光得放远点了——拿下他办公室机器的权限。但由于没有足够的工具,不得不结束此次渗透。

3. 第三节课:最后的入侵

第二节课已经尝试了渗透,很成功。先说说这节课渗透的大概过程:首先用灰鼠远程控制生成服务端,然后再用 SQLTool 将服务端上传至教师机,接着运行之,紧接着结束教师机上的远程桌面连接进程,让老师误以为是电脑出了问题,并再次去连接远程桌面,就在此时,打开灰鼠远程控制的键盘记录功能,将他输入的终端密码记录之,最后成功拿到权限。

那么第三节课我是有备而来,我将 SQLTool 和灰鼠远程控制拷贝到了手机里带入机房。不过很不幸,这节课我来晚了,机房除了靠近教师机的机子无人坐,其他的都坐满了。无奈之下,我必须从中选出最安全的位置。于是我选择了教师背对着我的机器坐下,并将教学管理系统崩溃掉,然后关闭我右侧的那台电脑的显示器,并将显示器位置调至可反光看见教师的角度,便于观察教师的一举一动。如图5是通过显示器反光看到教师讲课的画面:

5.jpg

图5

接着,配置灰鼠远程控制的服务端。配置信息都默认即可,IP 地址就填成本机的静态 IP,配置如图6:

6.JPG

图6

然后使用 SQLTool 连接到教师机,并将木马上传上去,执行之。启动 SQLTool,服务器 IP 填成教师机 IP:10.10.25.62,用户名默认 sa,密码为空。连接成功后,选择菜单栏上的“利用工具”——“上传文件”,将木马上传到教师机 C 盘,命名为 server.exe,如图7:

7.JPG

图7

上传成功后,利用 SQLTool 的 DOS 命令执行功能,执行 dir c:\,看看木马是否已经成功上传到 C 盘,如图8:

8.JPG

图8

接着执行命令“c:\server.exe”,数十秒后,灰鼠的客户端出现了反应,主机上线了,如图9:

9.JPG

图9

此时打开屏幕监控,可见他还正在监视学生机的屏幕,如图10:

10.JPG

最后,直奔目标。用灰鼠的进程管理功能,结束远程桌面连接进程 mstsc.exe,然后立即打开键盘记录功能,不久就捕获到了他输入的终端密码了,如图11:

11.JPG

至此,我已经拿到了他办公机的权限了。

4. 第四节课:窃取卷子

第三节课已经拿到了终端权限,本该结束渗透的,但突发情况让我再次改变了计划。

临近期末,一次在多媒体教室上课时,他简单说了下与期末考试有关事项后,顺便讲了这么一个插曲:前两年我们学校有名学生窃取了某位老师的校园内部的邮箱账号,并偷走了存放在邮箱内的期末考试试题,后来该同学的盗窃行为被老师发现,并上报给学校,给了他严厉的处分。之后学院规定所有老师不得将期末考试题通过网络传播,只能通过 U 盘直接拷贝到每位教师的电脑里。

他的描述无意间就透露出期末考试卷子在他电脑里,于是,这节课我很仔细地盯着大屏幕,看他在教师机里操作的每一个步骤。大概了解到了他办公机里的分布情况:C 盘为系统盘,D 用来安装应用程序,E 盘存放了与他工作有关的所有资料,F 盘是放的电影、歌曲。他访问最多的是 E 盘,并且他不小心打开了 E 盘一个名为“与工作有关”的文件夹,那瞬间,我看到里面存放了不少与各个专业有关的文档,文件名命名方式都是“2009~2010 XX 专业……”、“2010~2011 XX 专业”之类的命名规则。虽然他不在意误打开了该文件夹,但我通过他打开的那几秒钟已经大致推测出期末卷子很可能就存放在该目录下。

待到第二日来机房上课时,我就准备对其下手。他正坐在教师机前,并且正连接着终端的,他办公室里的机器装的系统是 XP,XP 默认是不支持多个用户同时连接进终端的,如果直接连接过去,他会被强制挤出来,容易引起怀疑。真棘手。不过还好我发现我们机房开机速度很慢,进了系统以后,要想正常操作,还需等极域教学系统启动完成,总共要花费两分钟左右的时间。所以我决定再次恶作剧地重启教师机,因为机房内的机器突然重启已经是司空见惯了。在关机+重启的这近三分钟时间内,必须成功,如果那个目录里真是试卷,那么近三分钟的时间拷贝走期末试题是绰绰有余的。

为了方便拷走卷子,我在连接远程桌面时,选中了本地资源的驱动器,连接进终端后,就可以在他电脑里看到我本地的磁盘了。如图12:

12.JPG

我用 SQLTool 连接到教师机,先用 taskkill 命令结束远程桌面的进程,进程结束后我就马上连接了终端,然后再在 SQLTool 里执行 DOS 命令“shutdown –r –t 0”,教师机开始重启。

这时我进入到 E 盘的该目录下,按下组合件 Ctrl+a、Ctrl+c,再打开共享过去的本地磁盘 Ctrl+v,卷子很快全部拷贝到本地硬盘,最后还原他的打开的窗口,并离开终端。很完美地在他连接到终端之前完成拷贝工作。

不过悲剧的是,拷走的试卷里,惟独没有我们专业的。但希望通过本文,可以给大家一些点滴的渗透思路和技巧,并且希望提高大家的网络安全意识——而不是提高大家犯罪手段。所有窃取来的考试试题我全部都删除了。