1. 程式人生 > >Android版本的 Wannacry 檔案加密病毒樣本分析 附帶鎖機

Android版本的 Wannacry 檔案加密病毒樣本分析 附帶鎖機

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

一、前言

之前一個Wannacry病毒樣本在PC端肆意了很久,就是RSA加密檔案,勒索錢財。不給錢就刪除。但是現在移動裝置如此之多,就有一些不法分子想把這個病毒擴散到移動裝置了,這幾天一個哥們給了一個病毒樣本,就抽空看了一下,下面就來分析一下這個病毒樣本程式。


二、病毒樣本分析

首先國際慣例,這類的病毒都是用一些特殊的app名稱吸引誘導使用者下載,這裡是一個叫做:魅影WIFI,下載安裝之後介面如下:


我們點選免費啟用,出現授權介面:


需要裝置管理器,這時候應該猜到了,他是想修改鎖機密碼,我們就授權,然後分析程式找到重置的密碼就好了,授權之後,就被鎖屏了,解鎖螢幕會發現:


病毒作者是真夠狠的,盡然有自己弄了一個浮窗鎖機,這時候我們不得不看程式碼了,找到這個密碼了,當然這個浮窗型別的鎖機其實很容易解決的。因為他主要是藉助WindowManager搞得,所以這時候可以連線adb使用命令可以直接幹掉這個程序就好了:am force-stop pkgname;我們可以用dumpsys命令獲取其包名:


然後在強制停止app即可:


停止了之後,發現就是解鎖螢幕了,當然密碼已經被篡改了,所以的分析軟體了,當然如果裝置root了,可以直接刪除/data/system/password.key檔案即可。當然這些說的都是因為本身就是個開發者,而對於小白使用者,肯定這麼做不合適的。我們需要分析app,拿到這兩個地方鎖機密碼。告訴被坑的小白使用者,解救他們。下面就來分析app了:


三、破解獲取解鎖密碼

第一、獲取鎖屏密碼

因為我們知道現在大多數鎖機軟體都是利用裝置管理器來修改裝置密碼的,所以想看他的密碼也很簡單。直接用jadx開啟軟體,然後全域性搜尋類:DeviceAdminReceiver


然後看看這個類裡面修改程式碼部分邏輯:


看到了,這裡直接將手機的鎖機密碼修改成9815了。這個就是我們待會需要解鎖的密碼。


第二、浮窗鎖機密碼

這個比上面密碼有點麻煩,因為是自己定義的浮窗鎖機,所以直接看到鎖機介面文字,去Jadx全域性搜尋即可,這裡全域性搜尋字串"輸入密碼":


進入到這個類即可:


這裡是定義了一個Service然後用WindowManager實現,然後把許可權設定為最高,使用者就無法進行任何操作了。因為最終的密碼輸入都是在這個EditText,取密碼作比較也要用到這個文字框,就看這裡的this.ed在哪裡取值:


這裡直接比對密碼,如果密碼正確了,就直接幹掉服務,浮窗鎖機就沒有了。所以這裡最重要的是decrypt方法了,他是從SP中拿到key是passw的密文進行解密比對。其實到這裡我們可以藉助Xposed工具直接hook這個decrypt方法就能很輕易的拿到這個密碼了:


然後直接執行就可以獲取對應的密碼了:


不過這裡還想繼續分析這個DES的加密邏輯,因為本身就是要學習的。所以我們繼續手動分析這個加密演算法,我們看看des變數定義:


這裡會看到有一個du和du2變數,這個不要在意,可能是程式碼混淆原因,其實就是一個值。看初始化傳入一個字串值,可能是DES加密的key值,然後就立馬對一個密文進行解密,之後的內容在作為新的DES的金鑰值。相當於這裡二次獲取金鑰了。看DU程式碼實現:


傳入的字串就是作為key進行加解密操作的。那麼下面我們就需要手動寫一個簡單的DES加解密演算法了,這個網上很多程式碼了,直接拷貝一個:


第一次初始化金鑰是字串:"flower",然後直接解密內容:"c29fe56fa59ab0db"


然後直接解密,獲取第二次要用到的金鑰"xxx",然後在初始化以下key:


然後,我們需要去程式的xml中找到加密內容,然後拷貝出來進行解密:


把這個串拷貝出來進行解密:


這個就是解鎖密碼了,而我們在回過頭看看怎麼把這個加密串存到xml中的:


這裡他生成密碼盡然是採用隨機值,然後在加上123456,最後在DES加密儲存到xml中,同時也會把隨機數儲存到xml中的,從上面可以看到值是:


而這個值加上123456也就是密碼了:92944926+12346=93068382,這個也就是上面我們解密之後的密碼,這就對上了。所以這個鎖機,如果加他QQ索要密碼,其實他是需要讓小白使用者做點東西,因為這個密碼是隨機的,不是固定值,必須讓小白使用者把程式的xml檔案給他。不然它也是不知道解鎖密碼的。實在坑爹。


四、破解進行檔案解密

而上面的鎖機並不是本文的重點,本文的重點其實是檔案加密,在回他的app中:


然後點選註冊使用:


點選註冊軟體,會等一會,其實這裡他在做一些壞事,後面會分析程式碼幹什麼壞事:


這就是我們熟悉的Wannacry病毒介面了,需要付錢才能對檔案解密了,而這時候悲劇的是我們的裝置SD卡中的檔案已經被全部加密了:


那麼這時候就很噁心了,檔案全部被加密,最蛋疼的是,你開啟自己的SD卡可能都打不開了,這個是因為他做了一件更噁心的事就是無限制的新建一些檔案和資料夾到SD中。這樣其實手機已經廢了。因為SD卡的檔案非常多。看到上面的截圖可以發現,每個檔案都是0位元組,然後檔案對應一個空資料夾。下面來分析他的程式碼:


然後進入這個類看看,在他的onCreate方法中看到幾個方法:


繼續追蹤發現:


有一個可怕的方法就是爆炸boom了:


在這裡會創造出很多空檔案和空資料夾,這樣你的SD卡到最後幾乎打不開了。手機也就廢了。不過到這裡我們貌似還沒有介紹檔案加密的內容,其實檔案加密在程式啟動的時候就做了,就是MainActivity中:


然後就開始跟蹤這個方法了:


這裡會過濾他自己創建出來的空檔案和空資料夾不進行加密的,繼續看程式碼:


這裡通過方法的最後一個引數來判斷是加密檔案還是解密檔案。加解密方法引數都是類似的,第一個引數是AES加解密的金鑰。所以到這裡我們大致清楚了,這個病毒是用AES對檔案進行加密的。而金鑰他又用AES加密,這時候的加密內容的key和內容是:


所以分析到這裡,我們就可以開始進行手動解密檔案了。這裡當然有很多種方法:

第一種方法:藉助Xposed工具直接hook他的FormetFileSize方法,因為我們在上面分析知道,這個方法的最後一個引數標誌是解密檔案還是加密檔案,我們攔截這個方法之後,修改這個引數狀態為false表示就是解密檔案了:



第二種方法:把他解密功能程式碼拷貝出來,自己寫一個解密程式,這個比較適合給中招的小白使用了:


因為他的程式碼這幾個類都比較獨立,所以直接拷貝出來不會有太多的錯誤,而有些錯誤就是變數定義重複自己手動改一下即可:


下面就開始執行這個程式即可,這裡為了操作不浪費時間,就把SD卡情況了,然後寫入三個簡單的檔案,讓他加密:


這時候會發現,他加密之後的檔名就是原始檔名憑藉一個串而已,這裡忽略亂碼哈哈。因為只有這樣,他在解密之後才能獲取到原始檔案,從他程式碼中也可以看到這點:


然後執行我們解密程式,看到日誌:


到這裡,我們就成功的進行解密了。


五、病毒分析總結

到這裡我們就分析完了這個病毒,總得來說病毒作者心非常狠,鎖機採用兩套機制,而且浮窗鎖機盡然還用隨機密碼坑人。最噁心的是他的檔案加密,盡然在SD中建立了那麼多的空檔案和空資料夾,讓裝置無法使用了。開啟SD卡也是失敗的。罪惡中的罪惡。最後他用的是AES演算法對檔案進行加解密操作。而這裡他沒有采用RSA加密的原因其實很簡單,如果用RSA加密的話,裝置真的要報廢了。因為RSA加密演算法非常耗時吃記憶體。手機會扛不住的。他也不敢用RSA加密了,只好用AES了,但是AES加密只要知道了金鑰其實沒多大問題對於解密來說。這裡我們解密可以用兩種方式一種是Xposed框架進行hook,一種是自己把它的介面程式碼拷貝出來自己寫一個解密程式。當然第二種是最優的,因為對於那些中招的小白使用者他們是沒有root的,也是沒有安裝Xposed框架的,只有寫一個解密程式給他安裝進行解密就好了。不過有個很大的問題,就是因為病毒還建立了很多空檔案和空資料夾,導致操作的時候,我們需要區別對待。也要做一次過濾,這些病毒自己生成的檔案和資料夾就不要做解密了,不然會無限制宕機了。


從這個病毒中我們可以瞭解到關於鎖機策略機制,對於裝置管理器的鎖機直接找到DeviceAdminReceiver這個類就好了,或者直接看xml中的定義:


快速找到修改密碼的地方,找到鎖機密碼即可。而對於那種浮窗鎖機。因為都是採用Service和WindowManager來實現邏輯的。所以直接使用am命令強制停止程式執行即可。


特別說明:

關於病毒樣本這裡不能給出,非常抱歉,我知道你們肯定想說:"留毒不留種,小心被人捅",但是四哥不想被請去喝茶,所以你們要罵要捅隨意吧。而沒有病毒樣本,其實都是扯淡。只看分析不操作就是浪費時間。如果真的真的想要樣本私信我。方式加入我的小密圈。留言四哥的真實姓名即可。


六、總結

從這個病毒來看,其實即使你付費了,他幫你解密,也是很噁心的,因為他建立了那麼多檔案,刪除需要時間,解密還消耗機器效能,這就是赤裸裸的迫害。所以遇到這種病毒千萬不要給錢,可以自己解密,或者刷機。不要想那麼多。手機解密這麼多檔案會宕機了,你的手機會扛不住爆炸的。乾脆備份檔案,刷機得了。還有最重要的一點就是千萬不要去下載來歷不明的app,不要有歪想法,好好用手機。去正規的應用市場下載應用是最保險的。

《Android應用安全防護和逆向分析》

點選立即購買:京東  天貓

更多內容:點選這裡

關注微信公眾號,最新技術乾貨實時推送

編碼美麗技術圈 微信掃一掃進入我的"技術圈"世界

掃一掃加小編微信
新增時請註明:“編碼美麗”非常感謝!
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述