爬虫应对银行安全控件-实践

背景

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

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

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

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


《键盘输入安全研究》(链接: 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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值