爬虫应对银行安全控件-实践
背景
之前有個業務需求,抓取用戶在銀行的個人信息(經授權)。但由于安全控件的原因,程序在密碼框無法輸入,導致無法抓取。
銀行流水,對網貸平臺而言這是非常重要的征信數據。我所知道的,就有好些爬蟲在為安全控件的問題頭疼,甚至有專門的外包,尋求解決方案。
我做過各種檢索和嘗試,發現大部分方法都是無效的。但銀行征信數據的采集,確實有些平臺在做,那就說明這個問題能破,那也就沒什么好擔心的了,靜下心一點一點來。
本文分享一些相關資料,但不便公開具體解決方案。想必對很多人而言也算是一個福利貼了。?
先上幾篇論文。
《鍵盤輸入安全研究》(鏈接: 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個人大家一人爬一遍,何必呢。。】等云云手法,我不贊同。理由如下:
感謝你,但是我不同意,爬蟲工程師無罪!不到萬不得已,程序員工程師才不會呢。
這些都是領導層等頭或者為了年終獎,公司為了利潤的瘋狂行為,巨大利潤面前,甚至有上市公司參與到其中,大領導一句話,你做不做,不做滾蛋,你還吃飯嗎?,工程師八百年不會漲工資,做了網銀爬蟲也不會得到一毛錢,不過為了生活而已。
?
就像我自地鐵里看到,最搞笑的廣告就是,很多富豪名人宣傳為了保護象牙請不要獵殺動物一樣可笑。
?
試問:普通人會買象牙做筷子,做賭博的色子?坐地鐵都是地鐵窮人,寫到哪里給誰看?
還有地產大佬說,你不買就足夠了,做廣告就是說,自己不用象牙筷子了。】
我們的家門口樹枝掰斷得就行了,蹲著吃面,聊咋咧,賭博也沒錢,撲克就行了。就是這個世界,看不懂。。
=========================================
真的是廢品嗎?不是,記住再好的東西也防止不了內鬼和貪婪的老板。
怎么實現,樓主已經說了。涉及敏感信息,技術是無辜的,只是為了生存。
如果老板讓你做,做技術也要挺起腰板不做!拿刀逼著你,你為了混口方式,記住千萬就說不會!這是為自己。
上市公司做這種事不少,上市不過就是為了圈錢,不是黑客黑軟件玩獲取高新技術,無恥!
以上只是吹牛逼。。。。。。。。昨天喝多了,身體不好,才一杯酒,把夢里面的寫下來,做夢永遠是那么美好。
總結
以上是生活随笔為你收集整理的爬虫应对银行安全控件-实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件系统的服务器环境,服务器软件环境操作
- 下一篇: ICV:超声波雷达迎来数字化变革,202