基于IPC$管道的网络攻防综合实验设计
2018-12-07文淑华王瑞锦
文淑华,王瑞锦
(电子科技大学 信息与软件工程学院,四川 成都 610054)
目前网络攻防实训课程中全部都是基础验证型[1]实验,授课知识点过于分散,不利于学生对课程知识点的掌握,针对以上问题进行研究,采用将几个知识点联系并贯通到一个综合实验[2]中去,使学生通过操作该实验从而对需要掌握的知识点融会贯通,前后衔接各知识点来完成一个综合性的实验,实现想要的结果,这样使得学生能够更好地理解网络攻防核心知识和掌握网络攻防基本技能。基于这样的理念,设计了一个综合型实验——基于 IPC$ internet process connection管道[3-4]的网络攻防综合实验。
该实验涉及的知识点有IPC$的漏洞原理和攻击方法、Windows本地系统密码的破解原理、方法和NC作为后门的启动原理和运行方法。该实验分为Windows密码破解、IPC$连接和远程控制、软件后门NC连接3个部分,其关系如图1所示。该实验的执行顺序为:使用暴力破解[13]Windows本地系统密码,使用字典参数设置方法获取目标主机当前用户的密码,通过该密码可以在本地主机上使用IPC$的相关命令对目标主机进行连接,连接好后可以对目标主机实施攻击并且远程控制目标主机,然后通过本地主机(源主机)直接控制目标主机的NC后门[12]程序的安装,实施NC连接对目标主机进行其他命令控制,如计划关机命令——AT 命令。
图1 3个部分的关系
1 实验原理
该实验涉及的知识点包括:Windows系统密码破解、IPC$连接、NC后门种植、AT命令控制。下面分开来介绍各知识点的实验原理。
Windows系统密码破解采用暴力破解和字典破解方法,其原理是对密码进行一一推算,直到找到正确的密码为止,类似于数学上的 “完全归纳法”。例如,加入一个密码由6位数字组成,利用数学的排列组合方法,可以轻易推算得出该密码共有100 000种组合(10×10×10×10×10),因为正确的密码只有一个,那么要想得到正确的密码,就最多需要尝试100 000次。使用暴力破解方法来寻找密码,不管这个密码有多复杂,最终都能找到正确的密码,只是一个时间长短的问题。
IPC$从字面上就可以理解为“网络进程连接”的管道,是为了让进程间进行连接通信而开放的命名管道。在目标主机的IPC$默认共享已经打开的情况下,源主机如果知道目标主机的IP地址和当前用户的账号、密码,就可以跟目标主机通过建立安全的通道连接从而进行数据交换,最终实现对目标主机的访问。
NC全称Netcat,俗称为网络中的“瑞士军刀”,因其功能强大,所以黑客在入侵时经常使用该工具。如果在目标主机上运行“nc.exe-p port-L-de cmd.exe”命令,就可以构建一个telnet后门,即使关闭了nc.exe程序的运行窗口,这个后门程序还是继续存在于目标主机上,不会终止。
AT命令是Windows中的计划任务命令行,可在指定时间和日期、在指定计算机上运行命令、脚本和程序。
2 实验环境
实验环境:本地主机为Windows XP系统,目标主机为Windows Server 2003系统。该实验的两台主机必须处于一个网段中,否则无法进行实验。实验首先要查询源主机和目标主机的IP地址,如果不在同一网段,就需要提前设置好。
3 实验工具
包含saminside、radmin[13-14]、NC工具。
saminside:Windows密码破解软件,主要用来获取Windows的用户登录密码。它同时支持暴力破解、分布式破解、掩码破解、字典破解、混合破解、预计算表破解这6种不同的密码破解方式,但是本文中使用暴力破解和字典破解方式来获取目标主机的用户密码。
radmin:安全远程控制软件,可以帮助用户在远程主机上进行操作,如同用户坐在那台电脑前工作一样。和人们所熟悉的另外一款远程控制软件“灰鸽子”的最大区别是,“灰鸽子”是由目标主机发起连接,而radmin是源主机主动去发起跟目标主机的连接。
NC:NC.exe是一个非常标准的telnet客户端工具,也是一个后门程序,在目标主机上运行NC.exe后门程序后开起监听端口,源主机通过该监听端口和目标主机建立NC连接,这样源主机就可以在目标主机上执行相关命令操作。
这些软件都需要提前准备好,没有的需要到网上进行下载。
4 实验步骤
4.1 设置并获取双方主机的IP地址
源主机和目标主机事先通过ipconfig命令或者图形界面查询的方式查询好IP地址,不正确或不在同一个网段则需进行设置,正确无误后,将它们的IP地址进行记录。
4.2 获取目标主机当前用户的密码
1)在目标主机中,运行saminside工具,首先删除所有初始用户名。
2)从lsass导入目标主机上的所有用户。
3)进入选项(service-options)可选择使用大写字母、小写字母、数字、符号以及密码最大、最小长度等来配置暴力破解(brute-force attack)参数。假设目标主机账号为administrator,密码为8位的小写字母组成,学生可在该软件中自行设置以提高破解速度,如图2所示。
图2 字段参数设置
4)选中要破解的用户名,选中暴力攻击,点击开始攻击,如图3所示。等待一定时间,软件就可以破解出当前用户的密码,当然破解的时间跟密码的长度成正相关,密码长度越长,破解所需的等待时间一般也越长。破解后,记录下正确的密码。
图3 开始暴力破解
4.3 源主机与目标主机建立IPC$连接
1)在目标主机中开启IPC$默认共享,并练习IPC$的查看和删除命令:
a)在目标主机的命令行窗口使用net share命令查看它的IPC$默认共享是否已经打开;
b)使用net share admin$/delete命令删除IPC$共享,如图4所示;
c)使用net share admin$开启IPC$共享。共享名后面的“$”表示这些共享是隐藏的共享,在“我的电脑”是不可见的。
图4 删除IPC$共享
2)在源主机中使用以下命令与目标主机建立IPC$连接:
a)与目标主机建立IPC$连接通道:net use‖目标主机IP“密码” /user:“用户名”;
b)将目标主机的C盘映射成源主机的Z盘:net use z:‖目标主机IP‖c$;
c)拷贝源主机上的文件e:‖a.txt到目标主机:copy e:‖a.txt‖目标主机IP‖c$;
d)删除与目标主机的IPC$连接:net use‖目标主机ip/del。
4.4 在源主机上控制目标主机上的软件安装
4.3 节已经建立源主机和目标主机的IPC$连接,并且已经将目标主机的C盘映射为源主机上的Z盘,从而方便接下来的操作。
1)在源主机中,解压工具radmin,将解压后文件夹中的 r_ server.exe、raddrv.dll、AdmDll.dll文件拷贝粘贴到映射的Z盘,即目标主机的C盘。
2)在源主机中使用psexec命令获得目标主机的Shell,命令如下:psexec‖目标主机IP-u用户名-p密码cmd.exe(-u代表用户名,-p代表目标主机密码,cmd.exe代表命令行程序)。
执行该命令成功后可以获取到目标主机的Shell,如图5所示。
图5 输入命令得到目标主机的Shell
3)在得到的目标主机Shell上安装r_server,命令如下:C:‖r_server/install/pass:密码/port:端口/silence。 (通过/port参数指定端口号,默认是4899。/silence是静默安装,代表在目标主机用户不知情的情况下运行安装该软件,如果不使用这个参数,就会在目标主机上出现安装的窗口,因此暴露)。
4)启动r_server服务,命令如下:net start r_server(注:如果出现提示“服务名称无效”的情况,就需运行两次或多次)。
5)运行radmin的客户端radmin.exe,从菜单栏选择 “连接选项-连接到…”,输入目标主机的IP地址和安装r_server时指定的端口号,点击“确定”之后,就可以建立一个源主机到目标主机的连接。同时可以在该软件中对连接模式进行选择,其中完全连接权限最大。
6)连接建立成功之后在源主机上就可以看到目标主机的桌面,说明已经获取了目标主机的控制权,可以对目标主机实施攻击。
4.5 控制目标主机之后进行NC连接
1)运行目标主机上的NC。
前面的步骤显示,源主机已经获取到目标主机的桌面,说明已经控制了目标主机,所以接下来通过控制的目标主机的桌面来运行NC。
NC作为后门种植软件,将NC运行在监听状态等待源主机的连接,具体命令如下:nc-l-p 999-vv-e cmd.exe,其中999为目标主机监听端口,供源主机进行连接。
2)远程连接。
源主机使用telnet命令连接目标主机上NC所监听的999端口。命令运行后马上就会显示目标主机的命令行,与此同时目标主机中也会提示当前的连接状态,如图6所示。
图6 目标主机的命令行
4.6 AT命令
源主机和目标主机进行NC连接后,源主机可以在目标主机上执行AT命令等操作。
1)定时关机。
在源主机已连接目标主机的telnet窗口内输入命令:at 16∶40 shutdown-s-t 20。该命令表示主机在16∶40默认延时20 s自动关机。
2)取消关机。
输入定时关机命令后,可以使用以下命令取消关机:at 1/Delete。其中1为指派给已计划命令的标识编号。这样就可以在关机之前及时取消关机计划。
5 防御
前面的实验详细介绍了基于IPC$漏洞对目标主机进行攻击的操作过程。但是如何进行IPC$漏洞防御[15],则是一个值得需要认真思考的问题。在学生操作的过程中,就可以立马想到几个措施来预防IPC$漏洞攻击,比如把密码设置得更复杂一些或者删除IPC$默认共享。同时经过研究发现,IPC$漏洞产生的根源是因为Windows操作系统使用了NetBIOS协议,该协议是为了共享网络中各单机资源而设置的。在电脑安装TCP/IP协议(网络通信协议)时,就自动把NetBIOS协议作为默认设置装入了系统。因此要预防IPC$漏洞的攻击,就要从NetBIOS协议着手。针对基于IPC$管道连接的网络攻击的防御进行探究,有以下3点措施。
1)针对系统密码破解的防御措施。
a)升级系统的域的功能级别到Active Directory 2012 R2级别,从而可以将系统用户的用户名添加到受保护的用户组。
b)安装KB2871997,它会把保护用户组的功能移植到Windows中,这样就可以防御密码被破解。
c)把注册表中的“UseLogonCredential”项设置成0,因为密码的存储是由一个注册表设置决定的,设置为 “0”代表这个密码不会存储在内存中,从而可以使得密码破解软件无法获取到明文密码。
2)针对NetBIOS协议的防御措施。
a)取消NetBIOS的共享功能。
b)禁用TCP/IP上的NetBIOS。
c)对本地安全策略进行设置,启用“不允许SAM账户和共享的匿名枚举”。
d)禁止NetBIOS相关服务,具体操作为禁用“TCP/IP NetBIOSHelper”。
e)安装防火墙过滤掉139、445端口。IPC$管道连接是通过139或445端口来进行的,因为开启139或445端口就代表应用了NetBIOS协议,攻击方可以通过这两个端口来实现对共享文件/打印机的访问,因此关闭这两个端口就可以禁止IPC$的连接。
3)针对删除IPC$共享的防御措施。
a)在计算机共享的管理界面,删除隐藏的默认共享。
b)在命令提示符下使用命令 “net share admin$/delete”删除IPC$共享。
c)修改注册表,永久性删除IPC$共享。前面两种删除IPC$共享的方式,系统重启后又会恢复,因此可以选择永久性删除。
d)关闭IPC$共享依赖的服务,比如用命令“net stop lanmansever” 来关闭 lanmansever服务,因为该服务的启动也会导致IPC$漏洞的出现。
6 结束语
通过该综合实验,学生能够更好地理解网络攻防的基本原理和常用技能。该实验将3个部分的知识点串联起来贯穿其中综合运用完成这样一个实验,可以充分提高学生的动手实践能力,并增强学生的创新意识。