背景

之前有个业务需求,抓取用户在银行的个人信息(经授权)。但由于安全控件的原因,程序在密码框无法输入,导致无法抓取。

银行流水,对网贷平台而言这是非常重要的征信数据。我所知道的,就有好些爬虫在为安全控件的问题头疼,甚至有专门的外包,寻求解决方案。

我做过各种检索和尝试,发现大部分方法都是无效的。但银行征信数据的采集,确实有些平台在做,那就说明这个问题能破,那也就没什么好担心的了,静下心一点一点来。

本文分享一些相关资料,但不便公开具体解决方案。想必对很多人而言也算是一个福利贴了。 
先上几篇论文。

《键盘输入安全研究》(链接: https://pan.baidu.com/s/1Vu4k7EkCz3LkI0ulvkopMg 密码: p7fa)
《银行网上支付发展研究》(链接: https://pan.baidu.com/s/1dLK_v2UW-oNEHfEnF-yY5Q 密码: qmy9)
《驱动挂载对网银的入侵以及相应的防御方式》(链接: https://pan.baidu.com/s/1w1J0KRQWMPVJOMEoKxKghg 密码: iyry)
《基于WDM的多功能鼠标和键盘驱动的设计与实现》(链接: https://pan.baidu.com/s/1ED3NQZRpsdzwxvCzgJiovw 密码: shf7)

正文

我的尝试

首先大家都应该知道,安全控件肯定会对密码做一个加密。银行的安全加密级别,基本上是没法直接正面破解的,所以就直接上模拟浏览器吧。然而在密码框,webdriver用各种姿势的按键输入都无效。疑惑开始。。
想想,安全控件是独立的一个exe安装在系统上的,可能是密码输入调用了浏览器之外的东西,所以浏览器层的模拟输入无效。那就换系统级的模拟输入吧。来,python调用winAPI接口模拟键盘输入,无效;按键精灵,无效。
奇怪,再来。屏幕键盘,无效。我平时是用着两台电脑的,之间用mousewithoutborders共享鼠标键盘。发现直连键盘的那台机能输入,但另一台机没法输入,在密码输入框,怎么按都没有输入。
好吧,用键盘钩子监控一下键盘的输入吧。发现正常输入密码时,监控到的字符变成空了。看来加密控件在hook层之前就动了手脚。

我看过控件的白皮书,说的如何如何,确实这些都HOOK掉了,我都试过。确实以上都不行。业界据说有人用JS解决了,我对这个人表示你是我不知道的神仙,NB,NB,听说而已。

寻求原因

以上为热身动作,开始吧。先搜索键盘输入一个按键的传递流程,再搜索安全控件的功能(目的)和实现原理。

百度 谷歌很容易搜得到的,我就不说了。下面提一些比较关键的内容。

Windows 操作系统中,PS/2 键盘输入信息的传递流程如下: 
  1)用户敲击按键,一个按键被按下时,键盘发送相应的电信号到计算机主板上的键盘控制器(i8042); 
  2)键盘控制器告知CPU有键按下,同时将按键信息以键盘扫描码的形式写到键盘 I/O 接口(其中 0x60 端口保存按键扫描码,0x64 端口记录键盘控制器的状态),并产生终端请求IRQ1; 
  3)操作系统根据 IOAPIC 重定位表查到 IRQ1 所对应的中断号(正常情况为0x93),在根据中断向量表(IDT)查得这一中断对应的中断处理函数的地址,调用中断处理程序(ISR)进行处理;ISR 读出 0x60 端口的键盘扫描码,将之转换成系统扫描码,封装包含按键信息的 IO 请求包(IRP),将 IRP 发往键盘端口驱动(PS/2 键盘的端口驱动为 i8042 prt.sys); 
  4)键盘端口驱动将按键信息发往键盘类驱动(Kdbclass.sys,所有类型键盘通用); 
  5)键盘类驱动将按键信息封装到系统消息中发往 csrss.exe,按键信息首先被保存到系统消息队列中; 
  6)csrss.exe 将按键信息分发到各个应用程序的线程消息队列; 
  7)焦点窗口所属的程序从线程消息队列中读取被转为 ASCII 码(如果需要,还需要经过输入法编辑器 IME 的处理)的按键信息,并调用 use32.dll 更新用户界面。 
   
  (摘自2013年《键盘输入安全研究》)

以上,可以很清晰的看到 PS/2 类型键盘的传递流程。而银行的安全控件,应该是从第2层拿了端口数据进行加密。对于这种情况,我们只需要查询所要输入字符的键盘扫描码,发送到60/64端口即可。事实上我们网上搜到的大部分“驱动级模拟键盘输入”,都是这种。 
然而,这是对于 PS/2 这种键盘而言的。可是目前只有笔记本和部分老台式机才保留有 PS/2 ,现在主流的服务器都是只接受 USB 键盘的。所以向端口发送键盘扫描码这种方式并不好用。

来,再来看一下安全控件的原理。

如上图所示,AcitveX 安全控件的防护原理如下: 
  1、 当用户将输入焦点定位到安全控件上,准备进行口令输入时,激活相应安全控件。 
  2、用户通过敲击键盘上的字符,产生相应的电信号。触动操作系统的相应的中断 IRQ。 
  3、操作系统调用键盘驱动解释相应电信号所代表的字符,并进行相应的数据加密。将驱动解释出来的字符发送到操作系统消息队列中。 
  4、安全控件将接收到的密文保存在控件内的私密控件中,然后在界面上显示星号(*),并且停止字符的继续传播。 
  5、当用户点击网页上的登录提交按钮时,安全控件中被通知执行提交动作。安全控件动态将已加密的口令内容添加到页面中要提交的表单中,然后提交表单。 
  6、IE 将表单中的数据通过 HTTPS 通道传送到服务器,进行相应的处理工作。
  
  依靠微软的驱动,先于用户态下和核心态上层的病毒和木马程序(如 hook 和篡改 SSDT、系统服务 API)获取到键盘输入,以杜绝病毒和木马程序获取到键盘输入。。。 
   
   摘自论文《银行网上支付发展研究》,张春鹤,2010年。

嗯,难怪我用系统 API 和 hook 都无效,原来安全控件在之前就已经把数据加密了。了解安全控件在哪里加密,那我们在它之前来模拟就好了。3、操作系统调用键盘驱动解释相应电信号所代表的字符,并进行相应的数据加密。Windows系统自带键盘驱动,供标准USB键盘使用。但有些特殊的像游戏键盘,经常会编写自己的键盘驱动,我们可以找相关的开发资料。另外,有些游戏对鼠标键盘的输入要求高响应,经常会像安全控件的做法那样,直接读驱动解释出来的数据。我们只需要找相应的外挂程序,也能作一些参考。

《驱动挂载对网银的入侵以及相应的防御方式》中,就是通过驱动挂载监控到密码的输入。然而攻防是个博弈的过程,两者都不断在发展,技术不断更新。。

结语

本文纯属瞎扯淡,我只是做了一些技术上的分享,我可没有怂恿你去爬银行数据哦。

题外话

近日群里都在说去年的一个裁判文书,爬虫被告,法人坐牢一年。

嗯,又一个爬虫案。

咋说呢,天眼查广告都做到地铁里了,大大一墙广告忒威风;征信数据的同步服务,一条就是几毛到几元不等,这油水,这数据。。

咋说呢,爬虫工程师不应该仅限于爬虫,可以搞搞安全,玩玩大数据。现如今大家都在互相爬,一起爬,一份数据100个人大家一人爬一遍,何必呢。。
--------------------- 
作者:九茶 
来源:CSDN 
原文:https://blog.csdn.net/Bone_ACE/article/details/80765299 
版权声明:本文为博主原创文章,转载请附上博文链接!

---------------------

感谢作者:https://blog.csdn.net/Bone_ACE/article/details/80765299。

也证明了如果按照这种方式。加上写一个人工机器人(不用那么复杂),未来是人工智能的时代,面对人工智能,还有一种RPA,我那个公司白费觉得无能为力,现在的RPA技术几乎做到和人一样。还可以利用沙盒技术该公司的ANDROID版本,以及IOS配合越狱IOS也是废品。银行XXXX任何插件,无论什么技术,整个过程HOOK任意任何环节都是白费。这里问题是为什么手机要安装沙盒和越狱,内鬼呗。我自己的手机才不过用这些东西,本身已经破坏了安全体系,如果破坏了安全体系,什么安全都是扯淡。我自己的手机华为老手机,我的宝贝,不能乱搞。

未来再配合图像验证码和服务器,是不是可以。有啊,用到了RPA,再配合AI,免费不少,还是能搞。

之后呢,做一个智商一点,语音级别,之后,之后走下去吧。就是无底洞。。。。。记住不到万不得已,不要做这条路。

领导要做,公司要做,你就说无解!,只要我们技术自信的团结,就会保护和支持到胜利。建立安全体系。

我也试过正面破解,也不是不可以,你自己权衡吧。不过相当麻烦,关键插件一改还的重搞,要找到关键点非常难。

近日群里都在说去年的一个裁判文书,爬虫被告,法人坐牢一年。 嗯,又一个爬虫案。咋说呢,天眼查广告都做到地铁里了,大大一墙广告忒威风;征信数据的同步服务,一条就是几毛到几元不等,这油水,这数据。。

咋说呢,爬虫工程师不应该仅限于爬虫,可以搞搞安全,玩玩大数据。现如今大家都在互相爬,一起爬,一份数据100个人大家一人爬一遍,何必呢。。】等云云手法,我不赞同。理由如下:

感谢你,但是我不同意,爬虫工程师无罪!不到万不得已,程序员工程师才不会呢。

这些都是领导层等头或者为了年终奖,公司为了利润的疯狂行为,巨大利润面前,甚至有上市公司参与到其中,大领导一句话,你做不做,不做滚蛋,你还吃饭吗?,工程师八百年不会涨工资,做了网银爬虫也不会得到一毛钱,不过为了生活而已。

就像我自地铁里看到,最搞笑的广告就是,很多富豪名人宣传为了保护象牙请不要猎杀动物一样可笑。

试问:普通人会买象牙做筷子,做赌博的色子?坐地铁都是地铁穷人,写到哪里给谁看?

还有地产大佬说,你不买就足够了,做广告就是说,自己不用象牙筷子了。】

我们的家门口树枝掰断得就行了,蹲着吃面,聊咋咧,赌博也没钱,扑克就行了。就是这个世界,看不懂。。

=========================================

真的是废品吗?不是,记住再好的东西也防止不了内鬼和贪婪的老板。

怎么实现,楼主已经说了。涉及敏感信息,技术是无辜的,只是为了生存。

如果老板让你做,做技术也要挺起腰板不做!拿刀逼着你,你为了混口方式,记住千万就说不会!这是为自己。

上市公司做这种事不少,上市不过就是为了圈钱,不是黑客黑软件玩获取高新技术,无耻!

以上只是吹牛逼。。。。。。。。昨天喝多了,身体不好,才一杯酒,把梦里面的写下来,做梦永远是那么美好。

爬虫应对银行安全控件-实践相关推荐

  1. 利用爬虫和Tkinter控件实现电影展示与收藏

    目录 电影展示与收藏 系统结构 系统整体结构介绍 系统相关模块介绍 实现代码 实验截图 总结和展望 附录 电影展示与收藏 系统结构 系统整体结构介绍 系统结构 2.系统原理 当程序启动时就开始执行爬虫 ...

  2. android 应用内悬浮,Andorid 应用内悬浮控件实践方案总结

    推荐使用 FloatWindow 库实现悬浮窗,功能全面,链式调用,简洁清爽. 地址 : https://github.com/yhaolpz/FloatWindow 2017/12/30 更新: F ...

  3. Android 应用内悬浮控件实践总结

    推荐使用 FloatWindow 库实现悬浮窗,功能全面,链式调用,简洁清爽. 地址 : https://github.com/yhaolpz/FloatWindow 2017/12/30 更新: F ...

  4. 小程序外卖地图编辑控件实践指南

    先放个图看下地图编辑实际效果: 地图控件示例代码 在开发者工具中预览效果 <!-- map.wxml --> <map id="map" longitude=&q ...

  5. treeview控件使用详解python_TreeView控件实践

    TreeView控件可以通过HierarchicalDataTemplate 和 DataTemplate来自定义. 1)HierarchicalDataTemplate用来支持HeaderedIte ...

  6. Web开发-Lodop打印控件实践

    Web开发,我们常常会用到打印的功能. Lodop是Web开发常用的打印组件,方便快捷!! 废话少说,直接上效果图. lodop在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来,支持通过 ...

  7. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题

    开发中很常见的一个问题,项目中的lListview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现 ...

  8. 2-7 StatusStrip 控件

    2-7  StatusStrip 控件 u     本节学习目标: n了解StatusStrip控件的基本属性及方法 n学习用StatusStrip控件统计文本字数信息 n学习通过StatusStri ...

  9. 2-5 ImageList 控件

    2-5  ImageList 控件 u     本节学习目标: n         了解ImageList控件的基本属性及方法 n         掌握配置ImageList 控件的图片列表内容 n  ...

  10. COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

    源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...

最新文章

  1. Microsoft Dynamics CRM 2013 试用之系统篇 Windows Server 2012 R2安装
  2. shell 循环判断语法
  3. git在实际开发中的应用
  4. sklearn自学指南(part52)--潜在狄利克雷分配(LDA)
  5. @transactional注解失效情况
  6. 几种人类设计的永动机,最后一个彻底服了!| 今日最佳
  7. Pycharm社区版安装教程(永久免费,随时升级)
  8. robust off matlab,matlab_robust LM test 求指点!(空间计量)
  9. 如果用户计算机已接入,01计算机基础知识题(50道)
  10. 毕业准备:外企面试--基本涵盖了所有问题【附带有答案版本】
  11. 虚拟机vCPU和vNUMA调整大小-经验法则
  12. Java基础学习总结(21)——常用正则表达式列表
  13. Openjudge-NOI题库-出书最多
  14. ECS 7天实践训练营-day1
  15. Android清理缓存工具类
  16. openresty ngx_lua常用指令
  17. 解放双手——Android的自动化构建及发布
  18. 业精于勤毁于嬉,行成于思毁于随
  19. 信息收集详情(高能集锦)
  20. python调用海康威视的摄像头,实时显示监控内容

热门文章

  1. android9 三星 港版,三星S9+官方港版安卓9固件rom刷机包:TGY-G9650ZHS4CSD7
  2. 【Chrome/插件】Chrome 插件 推荐
  3. npm下载require
  4. 黑苹果EFI大全下载,拥有各种电脑机型配置!
  5. matlab的simulink文件mdl和slx对比
  6. JAVA王思聪吃热狗程序_易语言制作王校长吃热狗游戏的源码
  7. 基于python实现网络课程秒刷
  8. 随机搜索和网格搜索以优化函数
  9. vue 项目安装axios报错
  10. 最棒的SpringCloud微服务后台管理系统