楠木軒

銀行劫持病毒鼻祖利用AVPass技術 繞過谷歌的殺毒引擎

由 費莫白竹 發佈於 綜合

  背景

  近期,一批偽裝成flashlight、vides和game的應用,發佈在google play官方應用商店。經錢盾反詐實驗室研究發現,該批惡意應用屬於新型BankBot。Bankbot家族算得上是銀行劫持類病毒鼻祖,在今年年初曾爆發,之前主要針對歐洲國家,可劫持50多家銀行應用,而新發酵的BankBot已將攻擊目標擴散到全球,可劫持銀行增加到145家。

  那麼新型BankBot是怎麼再次入侵用户手機?

  能上架應用商店和入侵用户手機,BankBot使用了AVPass技術,包括針對靜態分析和動態沙盒的逃逸,這樣成功繞過大多數殺毒引擎。可信應用商店+繞過殺毒引擎,這樣病毒自然能輕鬆入侵用户手機。本文接下來的內容將解析BankBot是如何規避殺毒引擎,病毒劫持釣魚過程可參考《警惕一大波銀行類木馬正在靠近,新型BankBot木馬解析》。

  AVPass分析

  1、使用成熟的AVPass技術,可繞過反病毒檢測系統

  病毒AvPass工作流程圖如下:

  Binary Obfuscation

  混淆自身特徵,包括類名、函數名、字符串加密、反射調用,並將待劫持應用包名sha1編碼,隨後使用加固技術,將惡意dex打包加密。處理後的app如下圖:

  2、對抗動態沙盒

  通過自檢測運行環境和增加用户行為交互對抗沙盒,新型BankBot只有同時滿足以下4條才會觸發惡意行為:

  運行在Android5.0以及以上設備

  運行設備非俄羅斯、巴西、烏克蘭用户

  檢測運行環境,若非真機環境將不會觸發惡意行為

  用户行為交互,點擊按鈕

  下圖運行設備檢測

  3、FCM遠控,獲取短信驗證碼

  目前,各大銀行實施雙因素認證即在支付過程中進行身份認證和基於手機動態密碼的驗證。BankBot在通過釣魚拿到用户銀行身份信息後,還差動態短信,之前BankBot直接使用短信劫持,但這樣殺軟可通過靜態或動態檢測出惡意行為。新型BankBot通過集成谷歌提供的Firebase Cloud Messaging(簡稱FCM)框架,利用FCM向指定設備發送指令數據,從而獲取受害者短信驗證碼,也就是控制端在成功釣魚後,通過FCM下發獲取短信的指令,病毒讀取最新短信,通過網絡上傳至控制端。下圖整個攻擊流程。

  FCM下發的指令數據還包括:更新C&C地址、彈偽造的通知欄、界面劫持數據,其中彈偽造的通知欄和界面劫持都是BankBot的釣魚手段。下圖下發的指令數據。

  攻擊者一旦成功截獲受害者銀行賬號、密碼和短信動態驗證碼,將繞過銀行雙因素認證,這樣受害者們不僅僅構造成了一個可以被攻擊者控制的移動殭屍網絡,更成了攻擊者的天然提款機。

  安全建議

  1、建議用户安裝錢盾等手機安全軟件,定期進行病毒掃描。

  2、切勿點擊任何陌生鏈接,尤其是短信、QQ、微信等聊天工具中不熟識的“朋友”發來的鏈接。

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

  * 作者:錢盾反詐實驗室,更多安全類熱點信息和知識分享,請關注阿里聚安全的官方博客


  什麼是DNS劫持?

  DNS劫持就是通過劫持了DNS服務器,通過某些手段取得某域名的解析記錄控制權,進而修改此域名的解析結果,導致對該域名的訪問由原IP地址轉入到修改後的指定IP,其結果就是對特定的網址不能訪問或訪問的是假網址,從而實現竊取資料或者破壞原有正常服務的目的。DNS劫持通過篡改DNS服務器上的數據返回給用户一個錯誤的查詢結果來實現的。

  DNS劫持症狀:在某些地區的用户在成功連接寬帶後,首次打開任何頁面都指向ISP提供的“電信互聯星空”、“網通黃頁廣告”等內容頁面。還有就是曾經出現過用户訪問Google域名的時候出現了百度的網站。這些都屬於DNS劫持。

  再説簡單點,當你輸入google.com這個網址的時候,你看到的網站卻是百度的首頁。

  什麼是HTTP劫持?

  在用户的客户端與其要訪問的服務器經過網絡協議協調後,二者之間建立了一條專用的數據通道,用户端程序在系統中開放指定網絡端口用於接收數據報文,服務器端將全部數據按指定網絡協議規則進行分解打包,形成連續數據報文。

  用户端接收到全部報文後,按照協議標準來解包組合獲得完整的網絡數據。其中傳輸過程中的每一個數據包都有特定的標籤,表示其來源、攜帶的數據屬性以及要到何處,所有的數據包經過網絡路徑中ISP的路由器傳輸接力後,最終到達目的地,也就是客户端。

  HTTP劫持是在使用者與其目的網絡服務所建立的專用數據通道中,監視特定數據信息,提示當滿足設定的條件時,就會在正常的數據流中插入精心設計的網絡數據報文,目的是讓用户端程序解釋“錯誤”的數據,並以彈出新窗口的形式在使用者界面展示宣傳性廣告或者直接顯示某網站的內容。

  如何判定是DNS劫持還是HTTP劫持?

  從個人遭受DNS和HTTP劫持情況來看,DNS劫持多傾向展示廣告(網頁出現錯誤後跳轉某些網頁,如帶有運營商名號的114,189等網頁),惡意插入產品的推廣,如針對特定設備的推廣,apple設備的app推廣,某些開發者利用了apple開發者協議這個口子進行的惡意app推廣。

  DNS劫持傾向於持續性,訪問被劫持的網站時,會不停的出現其惡意廣告。

  HTTP劫持,這種劫持也是最為麻煩,其常見的現象為針對大流量網站的加小尾巴行為,如百度,hao123導航,360導航,百度知道,各大電商網站(淘寶,天貓,噹噹等)

  HTTP的劫持出現的頻率多變,針對不同的ip也會不同(斷網之後再連接,也許劫持就暫時消失),一定程度會造成錯誤的假象,用户可能會忽視該問題,由於其劫持過程非常快,只是經過某個IP後就快速的跳轉,用户如果不注意地址欄的變化,根本不會注意到該問題的出現。

  總結一下,DNS劫持有這三種情況:

  1.錯誤域名解析到糾錯導航頁面,導航頁面存在廣告。判斷方法:訪問的域名是錯誤的,而且跳轉的導航頁面也是官方的,如電信的114,聯通移網域名糾錯導航頁面。

  2.錯誤域名解析到非正常頁面,對錯誤的域名解析到導航頁的基礎上,有一定幾率解析到一些惡意站點,這些惡意站點通過判斷你訪問的目標HOST、URI、 referrer等來確定是否跳轉廣告頁面,這種情況就有可能導致跳轉廣告頁面(域名輸錯)或者訪問頁面被加廣告(頁面加載時有些元素的域名錯誤而觸發)這種劫持會對用户訪問的目標HOST、URI、 referrer等會進行判定來確定是否解析惡意站點地址,不易被發現。

  3.直接將特點站點解析到惡意或者廣告頁面,這種情況比較惡劣,而且出現這種情況未必就是運營商所為,家裏路由器被黑,或者系統被入侵,甚至運營商的某些節點被第三方惡意控制都有可能。具體情況要具體分析,這裏就不展開了。

  DNS劫持常見於使用自動的DNS地址,所以,不管有沒有被劫持,儘量不要使用運營商默認的DNS。

  HTTP劫持

  HTTP劫持:你DNS解析的域名的IP地址不變。在和網站交互過程中的劫持了你的請求。在網站發給你信息前就給你返回了請求。

  HTTP劫持很好判斷,當年正常訪問一個無廣告的頁面時,頁面上出現廣告彈窗,八成就是運營商劫持了HTTP。下圖中,右下角的廣告並不是所訪問的網站放置的。

  HTTP劫持比較出名的是360導航的首頁,曾經被某運營商彈出廣告,而且只有用户打開360導航時才會出現該廣告,以至於很多用户認為這是360自己的廣告,引發了大量投訴,結果最後被證實是運營商乾的。

  關於DNS劫持和HTTP劫持,打個比方來描述這兩種劫持,DNS劫持就是你想去存錢運營商卻把你拉到了劫匪手中;而HTTP劫持就是你從服務器買了一包零食電信給你放了一坨屎,橫豎都很噁心人。

  解決辦法

  如果你遇到類似情況,可以先給運營商打電話投訴,説明自己遇到劫持了。一般徹底處理的辦法,是沒有的,因為劫持的現象一般是發生在運營商的DNS服務器層面,而在國內,運營商大大小小很多家且均屬於商業企業無法有效處理。

  目前市面上一些針對劫持現象的解決辦法是,通過全國各地多地採取分步節點的方式,24小時不斷刷新運營商的DNS緩存,如果運營商的DNS緩存一直都能獲取到權威DNS下發的解析記錄,那麼劫持自然無疾而終,將這種方法運用到實踐當中的解析服務提供商也已經開始在使用,例如dns.com的雲加速產品就是利用這個原理。

  當然,如果想要徹底的從根本上解決DNS劫持或者HTTP劫持,還需要從國內的網絡運營商管理入手,建立統一的解析管理機制和反饋投訴渠道,才能從源頭上清理出所有病因。

  (2017-07-19)


  最近,我們又獲得了一架無人機!

  作為一個技術黨

  作為好奇心暴強的人

  不搞(zuo)一波豈不是很對不起自己?

  準備工作

  hackrf 一台

  一台已經裝好Kali Linux的電腦

  遙控無人機和配套的遙控器

  無人機

  遙控器

  hackrf環境配置見前幾篇文章,這裏不再贅述。

  拆解

  在對設備進行反覆的操作之後,發現所獲得資料實在太少,甚至連無人機工作的具體頻段都無法獲知,僅僅知識知道工作在2.4G頻段附近。

  為獲得更多更詳細資料,我們對遙控器和無人機進行了拆解。

  對遙控器的拆解

  可以發現遙控器的控制板上僅僅只有一顆芯片,所以這顆芯片應該就是整個遙控器的控制核心。這顆芯片的型號是XNS104芯片。查詢得知,這是一顆AD型2.4G 高速無線收發單片機芯片,可以進行編程和無線收發通信。

  對無人機的拆解

  1為XN297L芯片。但是芯片2被廠家抹去了芯片型號。(嘖嘖嘖,一定是個重要的芯片)

  現在獲得的芯片有無人機上的XN297L芯片和遙控器的XNS104芯片。

  XN297L芯片只有無線收發的功能,無法作為無人機的MCU(主控芯片)。所以可推斷獲知無人機上面被抹去信號的芯片應該是一顆MCU芯片。

  無人機和遙控器之間的通信通過XN297L芯片和XNS104芯片進行。XNS104芯片集成了XN297芯片的功能,所以兩者的通信機制應該是基於XN297芯片的。

  接下來,我們需要分析XN297L芯片的具體通信狀況。通過技術手冊,我們發現這樣的內容,如下所示。

  如此看來,重放攻擊似乎是不大可行的,但是柳暗花明又一村,翻到最底部的時候突然看到了XN297L的數據報格式,具體如下圖所示:

  從數據報文裏面可以發現PID碼僅僅只有兩個比特位,因此這裏使用的PID並不是為了防止重放攻擊的,而是用來去除重複數據報文的。僅僅兩個比特位的PID碼可以在短時間內遍歷,所以重放攻擊應該是可行的,確認了這一點之後,就可以展開下面的劫持操作了。

  劫持

  劫持這個類型的無人機,我們需要去獲取遙控器發射的信號。首先來看看無人機的工作機制。

  工作機制

  首次對碼,確認無人機處於可以使用的狀態

  二次對碼,成功建立遙控器和無人機的通信線路

  最後,遙控器成功操控無人機

  前兩者在開啓遙控器和無人機的時候會自動完成,但是對於劫持而言,我們需要去模擬這兩個步驟,從而獲取到無人機的控制權。

  獲取無人機和遙控器的一次對碼信息

  使用kali Linux下的gqrx來確定配對信息的所在頻率,單獨打開無人機,信道表現如下圖所示,信道中沒有任何信息

  開啓遙控器之後,信道中開始出現大量內容,如下圖

  由上可知,首次對碼信息僅僅由遙控器發出,無人機僅僅來接收這個信息。所以,我們可以錄製相應的頻段信息來獲得模擬遙控器和無人機之間的對碼過程。

  錄製信息的hackrf操作

  hackrf_transfer –r fly.raw –f 2479000000 –g 16 –l 8 –s 8000000 –b 4000000

  在Kali Linux上面執行上述操作後,如下圖所示:

  獲取無人機的二次對碼信息

  獲得了無人機的一次對碼信息之後,接下來就需要去獲取無人機的二次對碼信息。

  無人機的二次對碼信息比一次對碼信息更加的複雜,這是由於一次對碼完成之後,二次對碼中就引入了ACK機制,來確保無人機收到二次對碼的信息。

  所以在這一步中,雖然同樣可以使用重放攻擊,但是需要對針對ACK機制,多次重放二次對碼的數據報文段。具體的錄製操作和和一次對碼的類似。

  獲得了上述報文之後,就可以去獲取飛機的操作信息了,操作信息的處理方法和二次對碼的相同。不同的是,需要確保操作信息錄製的時間長度,來防止PID機制將重放出去的信號當作重複的報文進行丟棄。

  happy的重放過程

  在之前那篇門鈴重放中,我們使用了GNU radio工具來重放信號,不得不説可視化的軟件減少了很多的操作步驟。

  但是這一次,我們直接使用hackrf來進行錄製信號的重放,我們將這個操作寫成了shell腳本,接下來只需要執行shell腳本就可以了。具體的shell腳本如下所示:

  #!/bin/bash

  hackrf_transfer -t flystart.raw -f 2479000000 -a 1 -s 8000000 -b 4000000 -x 47

  hackrf_transfer -t flying.raw -f 2479000000 -a 1 -s 8000000 -b 400000 -x 47

  這樣,我們就完成了無人機的劫持

  Duang~

  大家可以看到,期初飛機在正常飛

  用hackrf播放事先錄製好的下降信息,飛機就下降了

  腳本很簡單哦,是不是已經迫不及待想動手嘗試一下啦!

  特別注意

  由於ACK和PID機制的存在,錄製信號的時候,請確保無人機和遙控器同時處於開啓狀態,否則,錄製的信號很可能是無效的!

  實驗時,由於工作在2.4GHz頻段的設備有很多,比如説WIFI藍牙等,所以請找一個無線電環境比較好的地方,進行本次實驗!

  安全提示

  在對這架無人機研究過程中,可以發現這架無人機具有以下弱點:首先PID碼的位數不夠長,使得重放攻擊能夠通過一些修改和變通來實現;第二點,在ACK機制上面,沒有充分利用ACK的安全機制,代碼上也沒有實施芯片擁有的雙向認證功能。

  也希望有關廠商能夠對這兩個問題進行修復,使這架無人機變得更加安全。

  (2017-07-14)


  最近看到周圍有小夥伴在研究GPS定位,打算偽造GPS信號更改手機定位位置。但是手機定位可不僅僅是通過GPS,還有Wi-Fi和基站定位。正是基於這樣的背景,我們開始研究劫持Wi-Fi定位。

  1. 唯一地址

  每一個無線AP(Access Point,把有線網絡轉化為無線網絡)都有其唯一的MAC地址

  2. 廣播地址

  無線AP會廣播出自身的MAC地址,當設備開啓無線局域網時無論是否連接都會掃描到接入點並獲得它的MAC地址

  3. 服務器檢索

  設備將附近的熱點信息上傳到服務器,服務器根據已有的數據和位置信息判斷設備所在位置並返回定位結果

  4. 眾包

  在獲取自身定位信息的同時,設備也將周圍無線AP的MAC地址以及位置信息上傳到了服務器上,當其他設備在附近時可以使用這些信息進行定位

  測試

  知道了原理我們很容易就能想到劫持定位的簡單辦法就是偽造足夠多的熱點以欺騙服務器。因為偽造的熱點信息需要已經在數據庫中,所以需要獲取偽造地點附近的真實熱點信息。

  當然現有的熱點信號會干擾結果,因此在周圍熱點數量較少時比較容易成功。

  在開始測試前,我們需要一張USB無線網卡

  ↑↑↑就是上面這貨↑↑↑

  看上去是個功率很大的網卡......

  軟件方面,需要安裝好aircrack-ng、mdk3和wireshark。當然如果你用的是kali-linux的話,都已經內置好了。

  安裝完軟件之後呢?

  連接上無線網卡,在終端中輸入命令:

  sudo airmon-ng check kill

  sudo airmon-ng start wlan0

  似乎網卡已經連接上了

  如果你想偽造地點,最重要的是獲取這個地方的Wi-Fi信息,所以......親自帶上你心愛的電腦和網卡使用wireshark去收集一波......

  當然,如果能通過社工的方式找到捷徑也是極好的

  還是先了解下後面的步驟吧

  把你收集到的信息存到一個result.txt文件裏,然後在終端執行:

  sudo mdk3 wlan0mon b -v result.txt

  打開地圖,就發現位置已經不對啦!

  顯示位置不對

  總結

  當然,手機開啓GPS和蜂窩數據的時候劫持的目的很難達到,所以感興趣的小夥伴可以在下一篇GPS欺騙的文章閲讀一下!

  (2017-07-10)


  #成都新聞#【歹徒劫持人質 危急時刻#成都黑豹特警#一根手指救8名人質】李建華,現任成都市公安局特警支隊"黑豹"大隊副大隊長,入警至今累計處置各類配偵抓捕任務220起。工作常讓他置身危險之中,近年來挑戰最大的一次當屬2016年德陽6·20涉槍涉毒系列案,嫌疑人劫持8名人質並向警方開槍,危急時刻,李建華找準時機一把控制住嫌疑人手中已經上膛的槍支套筒,憑着對槍械結構爛熟於心的瞭解,他將左手食指插入槍膛的縫隙,阻止了槍支擊發。最終靠着這根手指,8名人質全部獲救無一傷亡,但他食指卻受傷嚴重,骨頭都露了出來。轉發,致敬特警!成都“黑豹”特警李建華 一根指頭救下8名人質

  (2017-06-23)