标题 | 《网络攻防技术》课程实验初探 |
范文 | 梁发洵 摘要:该文初步探索如何开展《网络攻防技术》课程实驗,研究了Kali Linux操作系统在该课程的实验课上的应用,并以一个漏洞攻击案例为例介绍了Metasploit工具的使用。 关键词:kali linux;metasploit;ms08-067漏洞 中图分类号:TP393.08 文献标识码:A 文章编号:1009-3044(2017)27-0142-03 Abstract: This paper preliminarily explores how to perform the experiments for the course of Network Attack and Defense Technology. The application of Kali Linux operating system to the experiments of this course is investigated, which is accompanied with an example of vulnerability attack to show the utilization of Metasploit tool for this purpose. Key words: kali linux; metasploit; ms08-067 vulnerability 1 概述 近年来,随着互联网的蓬勃发展和网络支付的广泛应用,网络安全的问题日益严峻。2017年5月12日,基于Windows操作系统SMB服务漏洞的“永恒之蓝”勒索病毒在全球爆发,短短数小时攻击了150多个国家,被攻击用户硬盘中的重要数据被加密锁定,并索要价值300美元比特币的赎金。该病毒感染全球30万名用户,造成损失达80亿美元,影响到金融、能源、医疗、教育等行业,造成严重的危机管理问题。为应对社会对网络安全人才的需求,高职的计算机网络技术专业和信息安全专业都逐渐把《网络攻防技术》设为专业必修课。 《网络攻防技术》作为一门近几年才开设新课程,市面上可选的教材还不多,而且多数教材存在重理论轻实践的现象。而《网络攻防技术》课程本身是基于多门专业课程之上综合应用性很强的课程,涵盖的知识面广,对动手操作能力要求尤其高。所以,在当前难以找到一本同时兼顾理论实践教材的情况下,可以从行业中选择一款成熟主流的攻防系统作实验之用。这里推荐全球著名的Kali Linux,它是一个设计用于数字取证、渗透测试和黑客攻防的Linux系统。 2 Kali Linux Kali Linux 的前身是BackTrack Linux发行版。BackTrack是一个基于Ubuntu的Linux发行版,Kali Linux是一个基于Debian的Linux发行版。Kali Linux内含很多信息收集和渗透攻击相关工具。 一名黑客对目标进行一次完整渗透测试,都会包含这5个步骤:信息收集——漏洞扫描——漏洞利用——权限提升——保持访问。Kali Linux内置了300多个渗透测试工具,以上5个步骤都有相应的代表工具实现。 (1) 信息收集:在发起攻击之前,应该尽可能了解被攻击目标主机的信息。用户得到的信息越多,攻击成功的概率也就越高。发起一次渗透攻击收集的信息包括研究目标在互联网的踪迹,监测资源、人和过程,扫描网络信息。例如DNS枚举可以帮助用户收集目标组织的关键信息,如IP地址、用户名、计算机名等,代表工具有DNSenum、fierce;SNMP枚举可以查询SNMP协议中对象标识树信息、主机信息等,代表工具有Snmpwalk;SMTP枚举可以探测服务器存在的邮箱账户,代表工具有smtp-user-enum;通过Dmitry工具可以用来查询IP或域名WHOIS信息;通过Scapy工具可以扫描网络和嗅探数据包。做信息收集有一个功能强大的工具Nmap,它有三个基本功能:一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;三是可以推断所用的操作系统。 (2) 漏洞扫描:在信息收集阶段已经获取到被攻击主机的信息,如IP地址、存活情况,在此基础上,使用漏洞扫描器能够自动在计算机、信息系统、网络及应用软件中寻找和发现安全弱点。它通过网络探测目标系统,向目标系统发送数据,将反馈数据与自带已知的漏洞特征库进行匹配,进而获取目标系统上存在的安全漏洞。漏洞扫描的代表工具有Nessus和OpenVAS。 (3) 漏洞利用:在第二步漏洞扫描阶段获取到被攻击主机存在的安全漏洞信息,利用这些信息窃取非授权数据或一定的访问权限。漏洞利用是渗透测试服务和其他被动服务如漏洞评估和安全审计的主要区别。如果没有获得目标的资产所有者授权,漏洞利用和后续步骤都会带来法律后果。漏洞利用的代表工具有Metasploit。 (4) 权限提升:在第三步利用漏洞获取到目标主机一定的访问权限,这个权限往往是有限的或最低的权限,并不能保证能完成渗透测试任务的目标。如果需要做进一步的渗透攻击,可能需要管理员账号的权限,所以要做权限提升。权限提升通常通过漏洞利用工具集或密码攻击来实现。 (5) 保持访问:为了保持对目标系统的访问,首先要做到不被发现。所以用户尽量隐藏渗透攻击留下的痕迹,这个主要通过删除用户日志、掩盖现有的访问通道和删除篡改的痕迹;另外要建立其他到系统的入口来保持访问,如建立后门、创建管理员账户、加密过的隧道和新的网络访问通道。这步主要通过权限维持工具来实现。 3 Metasploit 在Kali Linux内置的数百个渗透测试工具中,Metasploit是功能最强大的安全工具之一。在2011年SecTools网站公布最受欢迎Top125安全工具,Metasploit仅次于Wireshark软件名列第2。Metasploit是一款开源的安全漏洞检测工具,它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报。以下以Metasploit v4.13.10-dev版本为例作相关介绍。 目前使用的Metasploit版本有1610个攻击模块、914个辅助模塊、279个后渗透模块、471个攻击载荷模块、39个编码器模块、9个空指令模块。 攻击模块(exploits)是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件。Metasploit攻击模块可以按照所利用的安全漏洞所在的位置分为主动渗透攻击与被动渗透攻击两大类。主动渗透攻击利用位于网络服务端软件与服务承载的上层应用程序之中的安全漏洞,通过连接目标系统网络服务,注入一些特殊构造的攻击代码,触发安全漏洞,并使得远程服务进程执行攻击代码中包含的攻击载荷,从而获取目标系统的控制会话。被动渗透攻击利用的安全漏洞位于客户端软件中,如电子邮件客户端、浏览器、浏览器插件、Office与Adobe等各种文档阅读与编辑软件。对于这类存在于客户端软件的安全漏洞,我们通过设计针对性的网页、电子邮件或文档文件,并架设包含此类恶意文档的服务端或发送邮件附件,结合社会工程学攻击、网络欺骗和劫持技术等方式分发诱骗目标用户打开精心设计的链接,等目标用户点击这些链接,从而触发客户端软件中的安全漏洞,给出控制目标用户系统的Shell会话。浏览器软件漏洞攻击和文件格式类漏洞攻击是最常见的两类被动渗透攻击。 辅助模块(Auxiliary)能够帮助渗透测试者在进行渗透攻击之前得到目标系统丰富的情报信息,从而发起更精准的攻击。辅助模块包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试发掘漏洞、实施网络协议欺骗等模块。 后渗透模块(Post)主要支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行多种的后渗透攻击动作,比如收集敏感信息、提升权限、实施跳板攻击等。 攻击载荷模块(Payloads)是攻击成功后,渗透攻击者为了打开与目标系统会话连接,促使目标系统运行的一段特定代码。 编码器模块(Encoders)对攻击代码重新进行编码。这样做的目的有两个。一是确保攻击载荷避免出现特定字符,这些特定字符的存在会导致攻击目标不能正常执行攻击载荷。二是修改攻击载荷的特征码,以逃避杀毒软件、IDS入侵检测系统和IPS入侵防御系统的检测。 空指令模块(Nops)是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。Metasploit中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。 Metasploit通过以上模块或模块组合,针对不同的系统漏洞,实现各种渗透攻击。 4 案例 下面以针对ms08-067漏洞的攻击为例,介绍使用Metasploit做一次渗透攻击的典型操作过程。 ms08-067漏洞是一个远程执行代码漏洞,攻击者利用此漏洞可以完全远程控制受影响的系统。在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证通过 RPC 利用此漏洞运行任意代码。 此漏洞可能用于进行蠕虫攻击。 如被利用攻击成功将导致严重后果,攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新账户。 第一步,搭建攻防平台。为了方便学习和演示,我们使用Vmware Workstation 12 Pro虚拟机软件安装2个操作系统,一个作为攻击机安装Kali Linux(IP地址是192.168.1.4/24),一个作为受害机安装Windows XP Professional。两台虚拟机配置在同一个网络,分配好同一个网段的IP地址,用ping命令测试两者的连通性。 第二步,探测存在的攻击对象。在攻击机使用命令nmap -PR 192.168.1.0/24,发现同一网络存活主机192.168.1.5,见图1。 第三步,探测主机漏洞。在攻击机使用命令nmap —script=vuln 192.168.1.5,探测到受害机有多个漏洞,包括ms08-067漏洞,见图2。 第四步,发起攻击。操作次序如下: (1) 在攻击机输入命令msfconsole运行Metasploit,进入Metasploit操作界面; (2) 执行命令search ms08_067,可以查到有一个针对ms08_067漏洞的攻击模块; (3) 执行命令use exploit/windows/smb/ms08_067_netapi,使用该攻击模块; (4) 执行命令set payload windows/meterpreter/reverse_tcp,设置攻击载荷模块; (5) 执行命令show options,查看需要设置的参数,见图3,可以看到攻击模块有3个参数,攻击载荷模块也有3个参数,攻击目标1个参数,其中5个参数已有默认设置,我们可以不必修改,还有2个参数“RHOST”和“LHOST”是空的,需要设置; (6) 执行命令set RHOST 192.168.1.5,设置受害机IP; (7) 执行命令set LHOST 192.168.1.4,设置攻击机IP; (8) 执行命令show targets,查看支持的攻击目标的操作系统类型; (9) 在不清楚被攻击机器的操作系统类型时,可以设置攻击目标Id是0,如果已知被攻击机器的操作系统,可以设置相应的Id,在这里选择前者,执行命令set target 0(默认已设置); (10) 执行命令show options,检查设置的参数是否正确; (11) 执行命令info,查看该漏洞的介绍; (12) 执行命令run,启动攻击,攻击结果见图4,看到“Meterpreter session 1 opened”表示攻击成功,与受害机建立了一个连接; (13) 执行命令ipconfig,可以看到受害机的机器信息; (14) 执行命令shell,可以进入受害机的命令行界面;在此可以做一些提权操作,如使用net user 命令创建用户,然后把用户加入到管理员组等。 (15) 执行命令exit,退出shell; (16) 执行命令quit,关闭与受害机的连接。 以上的攻击案例已经包含了一个完整的渗透攻击的5个步骤:信息收集——漏洞扫描——漏洞利用——权限提升——保持访问。 5 结束语 《网络攻防技术》作为一门综合性强涉及面广难度高的课程,需要学生掌握多方面的知识,包括数据库、密码学、操作系统、PHP、Python等。本文对该门课程的实验内容做了初步的探讨,给出了一个基于Kali Linux系统上的实验内容的设计,将来根据网络攻防技术的发展变化和学校实验条件的改变而不断完善课程实验内容。 参考文献: [1] 杨波. Kali Linux渗透测试技术详解[M]. 北京:清华大学出版社,2015:3-4. [2] Joseph Muniz,Aamir Lakhani. Web渗透测试使用Kali Linux[M]. 北京:人民邮电出版社,2014:8-11. [3] David Kennedy,Jim O'Gorman,Devon Kearns,et al. Metasploit渗透测试指南[M]. 北京:电子工业出版社,2012:8. [4] Microsoft. Microsoft 安全公告 MS08-067 - 严重:服务器服务中的漏洞可能允许远程执行代码 (958644) [EB/OL]. https://technet.microsoft.com/zh-cn/library/security/ms08-067.aspx,2008-10-23 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。