Android版本的Wannacry文件加密病毒样本分析(附带锁机)
一、前言
之前一個Wannacry病毒樣本在PC端肆意了很久,就是RSA加密文件,勒索錢財。不給錢就刪除。但是現(xiàn)在移動設(shè)備如此之多,就有一些不法分子想把這個病毒擴散到移動設(shè)備了,這幾天一個哥們給了一個病毒樣本,就抽空看了一下,下面就來分析一下這個病毒樣本程序。
二、病毒樣本分析
首先國際慣例,這類的病毒都是用一些特殊的app名稱吸引誘導用戶下載,這里是一個叫做:魅影WIFI,下載安裝之后界面如下:
我們點擊免費激活,出現(xiàn)授權(quán)界面:
需要設(shè)備管理器,這時候應(yīng)該猜到了,他是想修改鎖機密碼,我們就授權(quán),然后分析程序找到重置的密碼就好了,授權(quán)之后,就被鎖屏了,解鎖屏幕會發(fā)現(xiàn):
病毒作者是真夠狠的,盡然有自己弄了一個浮窗鎖機,這時候我們不得不看代碼了,找到這個密碼了,當然這個浮窗類型的鎖機其實很容易解決的。因為他主要是借助WindowManager搞得,所以這時候可以連接adb使用命令可以直接干掉這個進程就好了:am force-stop pkgname;我們可以用dumpsys命令獲取其包名:
然后在強制停止app即可:
停止了之后,發(fā)現(xiàn)就是解鎖屏幕了,當然密碼已經(jīng)被篡改了,所以的分析軟件了,當然如果設(shè)備root了,可以直接刪除/data/system/password.key文件即可。當然這些說的都是因為本身就是個開發(fā)者,而對于小白用戶,肯定這么做不合適的。我們需要分析app,拿到這兩個地方鎖機密碼。告訴被坑的小白用戶,解救他們。下面就來分析app了:
三、破解獲取解鎖密碼
第一、獲取鎖屏密碼
因為我們知道現(xiàn)在大多數(shù)鎖機軟件都是利用設(shè)備管理器來修改設(shè)備密碼的,所以想看他的密碼也很簡單。直接用jadx打開軟件,然后全局搜索類:DeviceAdminReceiver
然后看看這個類里面修改代碼部分邏輯:
看到了,這里直接將手機的鎖機密碼修改成9815了。這個就是我們待會需要解鎖的密碼。
第二、浮窗鎖機密碼
這個比上面密碼有點麻煩,因為是自己定義的浮窗鎖機,所以直接看到鎖機界面文字,去Jadx全局搜索即可,這里全局搜索字符串"輸入密碼":
進入到這個類即可:
這里是定義了一個Service然后用WindowManager實現(xiàn),然后把權(quán)限設(shè)置為最高,用戶就無法進行任何操作了。因為最終的密碼輸入都是在這個EditText,取密碼作比較也要用到這個文本框,就看這里的this.ed在哪里取值:
這里直接比對密碼,如果密碼正確了,就直接干掉服務(wù),浮窗鎖機就沒有了。所以這里最重要的是decrypt方法了,他是從SP中拿到key是passw的密文進行解密比對。其實到這里我們可以借助Xposed工具直接hook這個decrypt方法就能很輕易的拿到這個密碼了:
然后直接運行就可以獲取對應(yīng)的密碼了:
不過這里還想繼續(xù)分析這個DES的加密邏輯,因為本身就是要學習的。所以我們繼續(xù)手動分析這個加密算法,我們看看des變量定義:
這里會看到有一個du和du2變量,這個不要在意,可能是代碼混淆原因,其實就是一個值。看初始化傳入一個字符串值,可能是DES加密的key值,然后就立馬對一個密文進行解密,之后的內(nèi)容在作為新的DES的密鑰值。相當于這里二次獲取密鑰了。看DU代碼實現(xiàn):
傳入的字符串就是作為key進行加解密操作的。那么下面我們就需要手動寫一個簡單的DES加解密算法了,這個網(wǎng)上很多代碼了,直接拷貝一個:
第一次初始化密鑰是字符串:"flower",然后直接解密內(nèi)容:"c29fe56fa59ab0db"
然后直接解密,獲取第二次要用到的密鑰"xxx",然后在初始化以下key:
然后,我們需要去程序的xml中找到加密內(nèi)容,然后拷貝出來進行解密:
把這個串拷貝出來進行解密:
這個就是解鎖密碼了,而我們在回過頭看看怎么把這個加密串存到xml中的:
這里他生成密碼盡然是采用隨機值,然后在加上123456,最后在DES加密保存到xml中,同時也會把隨機數(shù)保存到xml中的,從上面可以看到值是:
而這個值加上123456也就是密碼了:92944926+12346=93068382,這個也就是上面我們解密之后的密碼,這就對上了。所以這個鎖機,如果加他QQ索要密碼,其實他是需要讓小白用戶做點東西,因為這個密碼是隨機的,不是固定值,必須讓小白用戶把程序的xml文件給他。不然它也是不知道解鎖密碼的。實在坑爹。
四、破解進行文件解密
而上面的鎖機并不是本文的重點,本文的重點其實是文件加密,在回他的app中:
然后點擊注冊使用:
點擊注冊軟件,會等一會,其實這里他在做一些壞事,后面會分析代碼干什么壞事:
這就是我們熟悉的Wannacry病毒界面了,需要付錢才能對文件解密了,而這時候悲劇的是我們的設(shè)備SD卡中的文件已經(jīng)被全部加密了:
那么這時候就很惡心了,文件全部被加密,最蛋疼的是,你打開自己的SD卡可能都打不開了,這個是因為他做了一件更惡心的事就是無限制的新建一些文件和文件夾到SD中。這樣其實手機已經(jīng)廢了。因為SD卡的文件非常多。看到上面的截圖可以發(fā)現(xiàn),每個文件都是0字節(jié),然后文件對應(yīng)一個空文件夾。下面來分析他的代碼:
然后進入這個類看看,在他的onCreate方法中看到幾個方法:
繼續(xù)追蹤發(fā)現(xiàn):
有一個可怕的方法就是爆炸boom了:
在這里會創(chuàng)造出很多空文件和空文件夾,這樣你的SD卡到最后幾乎打不開了。手機也就廢了。不過到這里我們貌似還沒有介紹文件加密的內(nèi)容,其實文件加密在程序啟動的時候就做了,就是MainActivity中:
然后就開始跟蹤這個方法了:
這里會過濾他自己創(chuàng)建出來的空文件和空文件夾不進行加密的,繼續(xù)看代碼:
這里通過方法的最后一個參數(shù)來判斷是加密文件還是解密文件。加解密方法參數(shù)都是類似的,第一個參數(shù)是AES加解密的密鑰。所以到這里我們大致清楚了,這個病毒是用AES對文件進行加密的。而密鑰他又用AES加密,這時候的加密內(nèi)容的key和內(nèi)容是:
所以分析到這里,我們就可以開始進行手動解密文件了。這里當然有很多種方法:
第一種方法:借助Xposed工具直接hook他的FormetFileSize方法,因為我們在上面分析知道,這個方法的最后一個參數(shù)標志是解密文件還是加密文件,我們攔截這個方法之后,修改這個參數(shù)狀態(tài)為false表示就是解密文件了:
第二種方法:把他解密功能代碼拷貝出來,自己寫一個解密程序,這個比較適合給中招的小白使用了:
因為他的代碼這幾個類都比較獨立,所以直接拷貝出來不會有太多的錯誤,而有些錯誤就是變量定義重復自己手動改一下即可:
下面就開始運行這個程序即可,這里為了操作不浪費時間,就把SD卡情況了,然后寫入三個簡單的文件,讓他加密:
這時候會發(fā)現(xiàn),他加密之后的文件名就是原始文件名憑借一個串而已,這里忽略亂碼哈哈。因為只有這樣,他在解密之后才能獲取到原始文件,從他代碼中也可以看到這點:
然后運行我們解密程序,看到日志:
到這里,我們就成功的進行解密了。
五、病毒分析總結(jié)
到這里我們就分析完了這個病毒,總得來說病毒作者心非常狠,鎖機采用兩套機制,而且浮窗鎖機盡然還用隨機密碼坑人。最惡心的是他的文件加密,盡然在SD中創(chuàng)建了那么多的空文件和空文件夾,讓設(shè)備無法使用了。打開SD卡也是失敗的。罪惡中的罪惡。最后他用的是AES算法對文件進行加解密操作。而這里他沒有采用RSA加密的原因其實很簡單,如果用RSA加密的話,設(shè)備真的要報廢了。因為RSA加密算法非常耗時吃內(nèi)存。手機會扛不住的。他也不敢用RSA加密了,只好用AES了,但是AES加密只要知道了密鑰其實沒多大問題對于解密來說。這里我們解密可以用兩種方式一種是Xposed框架進行hook,一種是自己把它的界面代碼拷貝出來自己寫一個解密程序。當然第二種是最優(yōu)的,因為對于那些中招的小白用戶他們是沒有root的,也是沒有安裝Xposed框架的,只有寫一個解密程序給他安裝進行解密就好了。不過有個很大的問題,就是因為病毒還創(chuàng)建了很多空文件和空文件夾,導致操作的時候,我們需要區(qū)別對待。也要做一次過濾,這些病毒自己生成的文件和文件夾就不要做解密了,不然會無限制死機了。
從這個病毒中我們可以了解到關(guān)于鎖機策略機制,對于設(shè)備管理器的鎖機直接找到DeviceAdminReceiver這個類就好了,或者直接看xml中的定義:
快速找到修改密碼的地方,找到鎖機密碼即可。而對于那種浮窗鎖機。因為都是采用Service和WindowManager來實現(xiàn)邏輯的。所以直接使用am命令強制停止程序運行即可。
特別說明:
關(guān)于病毒樣本這里不能給出,非常抱歉,我知道你們肯定想說:"留毒不留種,小心被人捅",但是四哥不想被請去喝茶,所以你們要罵要捅隨意吧。而沒有病毒樣本,其實都是扯淡。只看分析不操作就是浪費時間。如果真的真的想要樣本私信我。方式加入我的小密圈。留言四哥的真實姓名即可。
六、總結(jié)
從這個病毒來看,其實即使你付費了,他幫你解密,也是很惡心的,因為他創(chuàng)建了那么多文件,刪除需要時間,解密還消耗機器性能,這就是赤裸裸的迫害。所以遇到這種病毒千萬不要給錢,可以自己解密,或者刷機。不要想那么多。手機解密這么多文件會死機了,你的手機會扛不住爆炸的。干脆備份文件,刷機得了。還有最重要的一點就是千萬不要去下載來歷不明的app,不要有歪想法,好好用手機。去正規(guī)的應(yīng)用市場下載應(yīng)用是最保險的。
作者:JiangWei_App
鏈接:http://www.jianshu.com/p/f195a2d05a07
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
總結(jié)
以上是生活随笔為你收集整理的Android版本的Wannacry文件加密病毒样本分析(附带锁机)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生成对抗网络简介(包含TensorFlo
- 下一篇: Android逆向之旅---Native