`
leo_dream
  • 浏览: 132284 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

网上银行等的WEB登陆安全性简要分析

阅读更多

转载自:http://security.zdnet.com.cn/security_zone/2008/1205/1267748.shtml

前言:本文还是去年年初写的,当时出于安全考虑没放出来。现在部分网上银行已大幅度降低了无高级别安全措施情况下的转账限额,并建议用户使用动态口令卡或者USB Key,总体安全系数有所提高。

    随着子商务的普及,网上银行以及在线电子支付等方式逐渐被网民所接受和喜爱。但是网上银行以及电子商务支付平台的安全性不容乐观。尽管各网上银行采取 SSL加密防止通过嗅探网络封包的方式截取密码;对于防止WEB登陆时密码被窃取,网上银行采取了安全控件或者动态软键盘的方法,但考虑的仍不全面,我们 还是能采取相应的方法截获用户输入的密码。
  
   下面就以具有代表性的四大银行:中国工商银行、中国农业银行、中国建设银行、 中国银行;商业银行:招商银行;电子支付平台:阿里巴巴支付宝等为例,分别就客户端密码方面进行脆弱性分析。网上银行以及其他电子商务支付平台的WEB登 陆安全性直接与用户的经济利益相关,所以有必要不遗余力的加强WEB登陆安全性的建设。另外由于不是所有的用户都使用数字证书和U盾之类安全认证产品,所 以“黑客”只要截取到用户的登陆密码以及支付密码就能随心所欲的转帐/支付,危害甚大。本文谈的是采用纯技术截取密码,而不是用假页面假接口等钓鱼方式骗 取密码的方法。
  
   网上银行对于防止密码被盗分别采用了安全控件和动态软键盘的方法:

1、采取安全控件的,典型代表有:中国工商银行、招商银行、阿里巴巴支付宝等
  
    这类安全控件考虑还算全面,防止了键盘/消息钩子,而且使通过IE的COM接口获取密码的方法也无能为力。但是这类安全控件做得不够底层,考虑得欠深入。 
  
    我们采用键盘过滤驱动的方法就可以突破安全控件的保护记录密码了。除了键盘过滤驱动方法外还可以挂接IDT(中断描述符表)的键盘入口,或者挂钩键盘驱动 Dispatch例程以及Inline hook相应IRP分发函数。 当然,更深入点的话还可以挂钩i8042prt.sys。

   不过由于编写驱动程序不同与开发普通的应用程序,难度稍大,所以目前还未见公开的采用此技术截取这些网上银行密码的木马。但是开发起来也并不是太困难,相对而言采取键盘过滤驱动的方法较通用稳定。
  
    基本原理是我们的驱动创建一个设备附加到键盘驱动Kbdclass下的设备,这样所有的IRP(输入输出请求包)包都将先发给我们的驱动程序,然后再转发 给系统中的键盘驱动,我们的驱动程序获取IRP后就可以从中获得键盘的scancode扫描码,这样就能在系统内核的层面获得键盘输入信息。键盘过滤驱动 的部分代码如下: 

以下是引用片段:
  NTSTATUS HookKeyboard(IN PDRIVER_OBJECT pDriverObject) 
  { 
    PDEVICE_OBJECT pKeyboardDeviceObject; 
    NTSTATUS status = IoCreateDevice(pDriverObject,sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_KEYBOARD, 0, true, &pKeyboardDeviceObject); 
    pKeyboardDeviceObject->Flags = pKeyboardDeviceObject->Flags | (DO_BUFFERED_IO | DO_POWER_PAGABLE); 
    pKeyboardDeviceObject->Flags=pKeyboardDeviceObject->Flags& ~DO_DEVICE_INITIALIZING; 
    RtlZeroMemory(pKeyboardDeviceObject->DeviceExtension, sizeof(DEVICE_EXTENSION)); 
    PDEVICE_EXTENSION pKeyboardDeviceExtension=(PDEVICE_EXTENSION)pKeyboardDeviceObject->DeviceExtension;  
    CCHAR   ntNameBuffer[64] = "//Device//KeyboardClass0"; 
   STRING   ntNameString; 
    UNICODE_STRING  uKeyboardDeviceName; 
   RtlInitAnsiString( &ntNameString, ntNameBuffer ); 
   RtlAnsiStringToUnicodeString( &uKeyboardDeviceName, &ntNameString, TRUE ); 
    IoAttachDevice(pKeyboardDeviceObject,&uKeyboardDeviceName,&pKeyboardDeviceExtension->pKeyboardDevice); 
    RtlFreeUnicodeString(&uKeyboardDeviceName); 
   return STATUS_SUCCESS; 
  } 


   
     下面以工商银行的网上银行为例,演示我们的程序。为了演示,我们的驱动程序将实时打印出获得的键盘记录的信息,并且把完整的信息记录到磁盘文件上。招商银 行、阿里巴巴支付宝等效果等同,支付密码用此法同样能截取。截取时实时打印的信息 如图1:,记录到文件里的完整信息:如图2。 合发送邮件或者 ASP/PHP留言的方式我们就能远程的得到密码。
  
2、采取动态软键盘的,典型代表有:中国建设银行、中国银行、中国农业银行

   采用动态软键盘技术初看确实能使攻击者无法截获密码,但是截取密码的方法不仅仅是接截获键盘记录一种方法。我们可以通过IE的COM获取的密码。 

    对于中国建设银行,通过IE的COM接口获取的密码框里的内容就是密码,其他大部分采用软键盘技术的网站大都也是这样。但是中国农业银行WEB程序中做了 一点处理,通过鼠标点击软键盘传入密框的内容不是实际密码而是按钮序号,所以我们只要枚举当前窗口,发现是中国农业银行的网上银行页面时,我们的程序就自 动截图发给我们,我们根据所截获得的图象和通过IE的 COM接口所获得的序号伪密码之间的关系进行转换(抽象为一个简单的函数映射),很容易的。这样便 获得了农行网上银行的密码。下面是截取中国建设银行网上银行密码的演示截图,利用动态软键盘的其他网站效果相同。如图3:(衍生:对付应用程序的部分软键 盘可以运用Hook TextOutW/A的类似屏幕取词的方法来截取。)
  
后记:
   尽管网上银行等电子支付平台在密码防盗方面做了安全考虑,但是还是不够安全。不过大家也大可不必因此不使用网上银行,采取数字证书以及USB Key(比如U盾)等安全措施相对而言还是比较安全的。

分享到:
评论

相关推荐

    几个常见的 Web 应用安全缺陷及样例

    在网络安全领域,Web应用安全是至关重要的一环。...此外,定期进行安全性审计和漏洞扫描也是必不可少的。 以上内容仅是对Web应用安全缺陷的简要介绍,实际防范工作需要深入理解和持续关注最新的安全动态。

    Restful web service+MFC ATM系统(带详细文档设计)

    "实时视频播放和交易抓图"的功能,意味着该ATM系统还集成了多媒体技术,以增强用户体验和安全性。实时视频播放可能是为了验证用户身份,比如通过摄像头捕捉用户面部进行人脸识别。而交易抓图则可能是为了记录交易...

    自己实现的银行记账系统的简要描述。代码量大约为2万左右(只限框架代码)

    总的来说,这个银行记账系统采用了分层架构,前后台分离,通过消息队列和自定义数据格式实现了高效、安全的数据交换。同时,利用数据库连接池和多线程技术优化了处理性能,确保了系统的稳定性和扩展性。

    员工工资管理系统需求分析.pdf

    本系统适用于Windows XP及以上操作系统,具备高安全性、可维护性和可操作性。开发环境包括Windows操作系统和SQL Server数据库,编程语言采用C或易于理解的其他语言。遵循相关的软件开发规范,并在16周内完成交付。...

    股票在线交易设计方案论文

    综上所述,基于ASP.NET的股票在线交易系统设计不仅需要满足基本的交易功能,更需要在系统性能、安全性、易用性等方面下功夫。通过精心的设计和开发,可以为投资者提供一个高效、可靠的在线交易环境。

    Banking.pdf

    设计应确保安全性和易用性,避免用户在支付过程中出现困惑。 15. **Pending**:待处理部分显示即将进行的交易,用户可以查看、修改或取消这些交易。此部分的设计需注重及时性和准确性。 16. **StandingOrders**:...

    J2EE指南.doc

    - **其他的EJB特性**:列举了除了基本功能之外,EJB还支持的一些高级特性,比如事务管理、安全性等。 #### 五、BMP的例子 - **SavingsAccountEJB**:通过具体的储蓄账户案例,展示了如何使用Bean-managed ...

    网络工程师 网络协议神图

    11. SSL/TLS(安全套接层/传输层安全):这些协议提供端到端的数据加密,保障网络通信的安全性。 此外,还有FTP(文件传输协议)、SMTP(简单邮件传输协议)、SNMP(简单网络管理协议)等协议,分别用于文件传输、...

    让Amazon Aurora助您的业务腾飞

    对于数据库安全,Aurora提供了静态和传输中的数据加密功能,确保了数据的安全性和合规性。这为各类企业,尤其是那些需要处理敏感数据的企业,提供了一个非常安全的存储选项。 在部署方面,Amazon Aurora通过简单...

    支付宝接口实现For ASP.NET(附第三方支付平台简介)

    在IT行业中,第三方支付...通过与第三方支付平台的深度集成,开发者可以提供用户友好的支付体验,同时保证交易的安全性。对于初学者,建议参考"asp.net实现的支付宝接口"中的示例代码,逐步理解并实践整个支付流程。

    corba 自学教程

    - **安全性和事务处理**:讨论ATM应用中的安全性问题以及如何通过CORBA实现事务处理。 ##### 第九天:使用回调增加推送功能 - **回调机制**:介绍回调(Callback)的概念及其在CORBA中的实现方式。 - **实时通信**...

    短信彩信群发系统平台源码1.0版

    1)采用3层安全认证机制,安全性超强。一层:用户授权访问;二层:动态安全码、用户ID和用户角色MD5加密验证机制,防止用户篡改COOKIE,每个页面进行用户权限验证;三层:系统统一过滤危险SQL代码,防止注入式攻击。...

    用友最新版U871价格表

    8. 网上银行:15000元,实现与各大银行的在线接口,提高银行业务处理速度。 9. 现金流量表:4000元,用于编制企业的现金流入流出报告。 10. 出纳管理:4000元,规范出纳业务,确保资金安全。 11. 报账中心:30000元...

    Bank

    1. **安全性**:在银行系统中,数据安全至关重要。PHP提供了一系列安全功能,如过滤输入数据、防止SQL注入、XSS攻击等,确保用户信息的安全。开发者需严格遵循最佳实践,比如使用预处理语句和参数绑定来防范SQL注入...

    道德黑客:白帽黑客的故事-研究论文

    互联网的大规模发展带来了许多好东西,例如电子商务、轻松访问广泛的学习资料来源、协作计算、电子... 研究道德黑客攻击的主要原因是评估目标系统的安全性。 本文有助于对道德黑客行为和各个方面产生一个简要的概念。

Global site tag (gtag.js) - Google Analytics