(转载自: http://www.rising.com.cn/newsletter/news/2013-06-26/13965.html 2013-06-26 )
钓鱼攻击是目前互联网环境中最为常见的攻击方式之一,很多不法分子通过网站、邮箱、短信以及打电话等方式,骗取网民的敏感信息或钱财,而这些欺骗手段始终没有一个根本的解决方法。近日,笔者在浏览网站时就收到了一封钓鱼攻击邮件,在对该电子邮件分析过程中,发现有很多用户被该钓鱼攻击骗取了敏感信息,甚至可能对有些用户造成了经济损失。所以在这里,我们简要分析一下这个邮箱钓鱼攻击的全过程,并借此帮助网民用户了解在遇到类似情况时要如何有效保护自己的敏感信息不被泄露。
邮箱钓鱼过程的分析
笔者收到的电子邮件的标题和内容部分都比较简单,发件人显示的名称为管理员,而发件人的邮件地址是一个不熟悉的地址信息,邮件的正文内容为一个简单的超链接地址,并且当笔者把鼠标移动到超链接地址位置时,浏览器的状态栏中显示的超链接地址为一个swf文件,如下图1所示。
图1
通过前几期中对网络攻击手段的介绍我们知道,在SWF文件中,可以通过ActionScript脚本执行操作实现恶意代码攻击的目的,如漏洞利用代码或者是通过脚本去访问某些恶意网站等。当看到这个超链接地址时,因为无法看到SWF中ActionScript代码中包含的内容,所以如果我们直接在浏览器中执行这个超链接地址的话,可能会发生一些意料之外的事情。所以我们在这里选择不在浏览器环境中访问这个超链接地址,而是通过文件下载的方式将该SWF文件下载回本地后再继续分析。
下载SWF文件的方式可以通过使用迅雷等下载工具下载,也可以通过在超链接上点击鼠标右键选择文件另存为的方式将该SWF文件下载回本地。在前几期介绍网马分析的文章中笔者曾经介绍过,查看SWF文件中ActionScript代码可以通过一些SWF反编译工具实现,这里我们使用的工具是ActionScript Viewer。在工具中加载该SWF文件后,我们发现这个文件非常简单,只有一句核心语句,就是通过getURL方法去访问一个网站,而这个网站具体是挂马攻击的页面还是钓鱼攻击的页面,目前还无法确定,如下图2所示。
图2
在未了解这个网站的安全性之前,我们最好不要在浏览器中直接访问这个网站,以免对我们的客户端造成攻击。所以我们还是通过下载或者使用一些网页源码获取工具将页面代码下载回本地进一步分析,获取到的网页源码如下图3所示。
图3
代码中除了对CSS代码的定义以外,核心代码就是通过Script标签引入了一个JS文件并执行,所以我们进一步下载baidu目录下的jquery.js进一步分析,该JS文件的代码如下图4所示。
图4
通过上述代码我们可以看到,JS文件是通过document.writeln进一步输出一些脚本代码。代码的作用是创建一个框架集,并且引入了一个HTML文件,文件的路径经过了URL编码处理,所以我们需要继续获取这个路径的代码信息,该引入文件的代码内容如下图5所示。
图5
通过对上述代码的查看,我们发现代码内容经过了简单的加密处理,执行时会通过unescape进行解码操作,然后再通过document.write将代码进行输出。所以根据我们在网马解密文章中的介绍,我们尝试将document.write修改为alert来获取执行的代码内容的具体信息,保存代码如下图6所示。
图6
将文件保存成本地HTML文件以后,我们在浏览器中直接执行,浏览器给我们的弹窗结果如下图7所示。
图7
从图7中我们可以看到,网页代码尝试创建Script标签并加载一个名字为logo.js的脚本文件,所以我们继续分析logo.js文件的内容,该文件的代码如下图8所示。
图8
核心代码是count函数中的windows.location,它尝试将我们的浏览器重新定向访问那个网站的内容。截至到目前,我们发现了从SWF文件到HTML文件再到JS文件的反复操作,最终的目的就是让我们去访问这个网站,而目前我们从字符串上还是没有办法确认这个网站是否是安全的。
在经历了多番周折以后,我们继续通过下载的方式去访问这个网站的源代码,通过源代码分析的方式,我们发现该网站代码中没有恶意挂马代码,但是它却是一个钓鱼网站。再确认了该网站不会对我们的客户端造成漏洞利用攻击以后,我们尝试在浏览器中直接访问这个网站,网站页面如下图9所示,是一个利用中国好声音进行欺骗的恶意钓鱼网站。
图9
对于普通用户来说,分析到此已经可以简单确认该网站是一个钓鱼网站,或许就可以结束了,但是为了了解进一步钓鱼攻击过程以及这个网站已经对多少网民用户造成了危害等信息,我们尝试获取这个钓鱼网站的数据库信息。但是由于类似的钓鱼网站程序往往很简单,并且后台地址一般都被设置成非主流名称,所以即使我们通过SQL注入获取到登录信息,我们也可能会因为无法找到管理后台而无法查看到有多少用户被钓鱼攻击。所以在结合网站特点及实现目标的基础上,我们尝试利用XSS跨站脚本攻击的方式来对钓鱼网站管理的会话进行劫持,通过对钓鱼攻击的过程的进一步分析,查找可以被我们利用来输入数据攻击管理人员的攻击点。
再进一步分析过程中,我们发现网站和其他钓鱼网站相似,都是通过欺骗用户获取大奖的方式来骗取用户的敏感信息及经济利益。首先网站会要求用户输入QQ号码和验证码,我们这里随便填写一个QQ号码和前面钓鱼页面中提示的验证码,如下图10所示。
图10
点击登录以后,网站会提示我们中奖信息并要求我们填写领奖资料,如下图11和图12所示。
图11
图12
看到图12的界面后,我们终于发现了可以用来输入数据写入到后台用来获取管理员会话信息的部分了。所以我们尝试将我们的XSS跨站脚本攻击漏洞利用代码写入到文本框中,如下图13所示。
图13
其中创建script标签中src引入的文件内容为我们的XSS利用代码,但是在提交过程中我们发现网站提示提交数据中包含有非法字符串,如下图14所示。
图14
通过弹窗提示内容信息,我们可以做如下简单的判断:我们通过POST方式提交的数据被过滤了,因为我们提交的特征字符串中包含有双引号和尖括号等常见的被程序过滤的特征字符,所以很大可能是由于该原因导致。而这种过滤方式可能是由于空间服务商或者是Web应用程序本身,并且过滤的方式很有可能是针对GET方式和POST方式的过滤。考虑到很多ASP程序员习惯直接使用Request函数直接获取变量的内容,针对Request函数获取变量的方式不仅可以获取GET方式和POST方式的数据内容,同样包含通过COOKIE提交变量的内容。所以我们尝试通过COOKIE方式提交数据内容中包含有双引号和尖括号的变量内容,我们再一次进入提交领奖资料页面,并在提交数据信息的同时使用抓包工具将提交的数据报文捕获,如下图15所示。
图15
然后我们将提交的数据报文保存到TXT文件中,并将包含有双引号和尖括号内容的变量转移到HTTP数据报文头的Cookie部分,并修改提交数据报文的长度信息,如下图16所示。
图16
数据包构造完成以后,我们使用NC将该数据报文进行提交,这次没有显示提交的数据内容含有被挂马数据信息的窗体代码。但是新的问题又出现了,这次提示的信息为安全狗拦截信息,提示我们提交的数据内容中包含有不合法的参数信息,如下图17所示。
图17
对上述情况的分析,我们可以确定我们通过COOKIE方式提交的数据报文信息被安全狗拦截了,这同时也说明了先前被检测怀疑含有挂马代码的拦截操作应该是空间服务商的安全防护软件拦截的操作,我们通过将数据改为COOKIE提交方式以后绕过了空间服务商的安全防护,但是到达钓鱼网站服务器时,却被安全狗的安全检测拦截了。那么,接下来就是要如何针对安全狗的拦截实现绕过了。正好在前一段时间,网上有位黑客公布了安全狗的检测缺陷,就是当安全狗检测HTTP数据报文的安全性时,会检测访问来源是否来自于百度蜘蛛等搜索引擎的爬虫系统,如果请求信息是来自于此类情况时,安全狗不会对该类请求进行进一步的安全检测。所以结合安全狗的这一特性,可以通过将提交数据报文伪装成百度蜘蛛的特点来绕过安全狗的检测。这类特点的判断是通过HTTP数据报文中的User-Agent段的内容实现的,所以我们再次构造我们提交的HTTP数据包将HTTP包头部分的User-Agent段内容修改为百度蜘蛛User-Agent的内容,如下图18所示。
图18
构造完成以后,我们再次将数据报文进行提交,原本以为这次终于可以顺利地将内容提交到钓鱼网站的服务器了,但是问题又再一次出现了,如下图19所示。
图19
从提示信息中,我们没有看到安全狗的拦截提示信息,说明我们构造的百度爬虫特征信息帮助我们绕过了安全狗的检测拦截,但是在执行数据库插入操作时却发生了错误,而且这个错误比较常见的——我们提交的数据内容太长了,超出了数据库中对字符数的定义范围。针对该问题的解决方法可以采取使用短链接变形的方式来处理,但是我们利用的代码已经很短了,即使利用短链接变形的方式也无法解决这个问题,所以我们这次采取将跨站脚本代码拆开的方式进行提交。重新构造提交的数据报文,将跨站攻击代码分别写在不同的变量内容中,减少插入数据库的字符数,如下图20所示。
图20
使用NC将修改后的数据报文再次提交,终于看到我们数据提交成功的返回信息,在浏览器中访问提交数据成功后的页面如下图21所示。
图21
从图21我们可以理解到之前所有的过程都是为了这个页面存在的,钓鱼程序的作者系统通过一步一步的欺骗来实现被钓鱼者向其汇款的目的。如果访问网站的用户相信网站上面的内容并汇款的话,将带来巨大的经济损失。
在我们的数据成功提交一段时间后,在XSS漏洞利用平台中我们收到了管理人员登录了后台的消息信息,如下图22所示。
图22
从上图中,我们能发现钓鱼人员登录的IP地址以及对应的物理地址信息,同时也在location字段中获取到了管理后台的地址,我们访问这个后台地址,发现后台地址并没有验证登录人员的权限,同时也发现了一些被钓鱼用户提交的地址和银行账号信息,如下图23所示。
图23
邮箱钓鱼攻击的防范
钓鱼攻击的防范一直都是互联网环境中安全防护的关键之一。邮箱钓鱼攻击结合垃圾邮件和网站钓鱼的方式使得用户在打开邮件时往往没有办法在第一时间快速确认邮件的安全性,所以容易被邮件的标题、发件人的地址以及邮件的内容信息所迷惑,尤其是当邮件中嵌入的超链接地址信息与真实网站地址信息很相近时,用户更是很难分辨真伪。所以在收到陌生邮件时,网民需要对邮件的内容信息进一步安全确认以后再执行进一步操作。针对邮箱钓鱼攻击的防范,我们建议用户可以从以下几方面做起:
1. 对于陌生人发送的邮件信息,不要随便直接点击访问邮件内容中的超链接地址信息,建议通过简单分析之后再进行访问。尤其是针对垃圾邮件信息,许多超链接地址中包含有恶意挂马代码或者是恶意下载文件等,当用户直接点击访问超链接地址时很容易造成恶意代码攻击。同时,即使发件人地址信息为可信任人的地址信息,但是邮件内容为比较敏感数据信息时,建议与当事人进行确认后再继续操作,以防止出现伪造邮件人地址的攻击。
2. 对于邮件中包含有银行等高度敏感的网站数据时,建议通过浏览器手工键入的方式去访问官方站点,而不要通过点击邮件中的超链接地址的方式。邮件中超链接地址可能会被伪造成与真实银行地址极为相似的钓鱼网址,所以在需要访问银行等重要站点时,建议通过打开浏览器手工输入,或经过搜索引擎安全搜索以后再访问。
3. 对于邮件附件的下载使用,需要先经过安全防护软件的查杀,方可继续执行使用,而针对一些诸如网上银行客户端程序,则需要到明确的官方网站下载使用,而不通过邮件附件安装的方式。目前互联网环境中钓鱼功能的实现不仅仅包括网站钓鱼,还有客户端钓鱼的方式。有一些钓鱼攻击者通过自己编写软件将客户端程序伪装成网上银行客户端程序,程序外表虽然完全一样,但是在程序内部进行通信时连接的服务器却为钓鱼网站的服务器。并且,此类程序和计算机病毒有着明显的差异,很多杀毒软件没有办法对该类软件进行查杀,所以建议用户选择通过官方站点下载程序的方式来安装运行一些敏感程序。
4. 安装支持钓鱼网站拦截功能的安全防护软件。邮箱钓鱼虽然比较难快速识别,但是很多邮箱钓鱼攻击过程中都会通过超链接等方式在浏览器中跳转打开钓鱼网站。虽然安全防护软件在用户打开邮件时直接分析出目标网站是否为钓鱼网站比较困难,但是在用户浏览器中打开钓鱼网站时,安全防护软件可以对该操作进行快速的提示和封堵。
在不断解决旧问题又不断出现新问题的过程中,我们完成了对邮箱钓鱼攻击实例的分析,并通过技术手段找到并浏览了钓鱼网站的后台页面。但是我们却无法知道线下有多少个用户将钱汇入了钓鱼攻击者的账号,也无法知道在这次钓鱼攻击之后又会出现多少个类似的攻击,给网民用户造成多少的经济利益的损失。希望通过本文的分析和描述,能够帮助用户了解到邮箱钓鱼攻击的流程,并以此提高安全防护意识,保护自己的合法权益不再受到恶意钓鱼攻击者的侵害。