新聞中心
本人關(guān)注移動網(wǎng)絡(luò)安全將近3年了,寫這篇文章主要是想科普下手機木馬查殺相關(guān)的一些技術(shù),最近在網(wǎng)上看了騰訊移動安全實驗室安全快訊和360手機衛(wèi)士安全播報,感覺移動終端的安全性一年比一年嚴(yán)峻。本人這些年主要是做網(wǎng)絡(luò)攻防,近幾年由原來的PC端轉(zhuǎn)向移動互聯(lián)終端。在APT攻擊方面研究的同時也研究防御方面的技術(shù)。

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。
下面就分享下最近的一些研究成果。
這篇文章主要是淺談,所以會從簡單方面開始講起。
關(guān)于手機木馬查殺,有些人會說安裝手機殺毒軟件不就解決了嗎? 其實不然。因為手機和PC不一樣,手機反木馬技術(shù)沒有PC端那么強。
就算你把目前市面上的所有手機殺毒軟件都安裝到手機里,也不一定查殺出來。
下面就開始正式講解手工查殺的方法。
第一種方法:用Android Debug Bridge(簡稱adb)調(diào)試工具補助查殺,
首先打開android手機的調(diào)試模式,然后到網(wǎng)上下載adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll這三個文件,放在電腦磁盤任意目錄下,用數(shù)據(jù)線把手機連上電腦。然后通過命令提示符用pushd或者cd命令跳轉(zhuǎn)到剛才那三個文件所在目錄。執(zhí)行adb
shell命令連入手機shell終端。之后相當(dāng)于在linux下的shell一樣操作了。如果你是搞android開發(fā)的,安裝eclipse和android SDK后就不用去下載剛才那三個文件了,在sdk\platform-tools這個目錄下就有。重點是后面,通過執(zhí)行netstat命令查看當(dāng)前網(wǎng)絡(luò)連接(不需要root權(quán)限)。如下圖:
能看到網(wǎng)絡(luò)連接信息,但是卻不能看到進(jìn)程pid以及進(jìn)程對應(yīng)的包名。這樣想要找到惡意程序或木馬程序是很困難的。
下面介紹兩個很有用的命令:
cat /proc/net/tcp (不需要root權(quán)限)
cat /proc/net/tcp6 (不需要root權(quán)限)
/proc/net/tcp文件,這里記錄的是ipv4下所有tcp連接的情況
/proc/net/tcp6文件,這里記錄的是ipv6下所有tcp連接的情況
執(zhí)行cat
/proc/net/tcp6命令后返回的記錄格式如下:
local_address remote_address st tx_queue rx_queue tr tm ->when retrnsmt uid timeout inode
0000000000000000FFFF00006801A8C0:8018 0000000000000000FFFF00007095FB3A:0050 08 00000000:00000001 00:00000000 00000000 10136 0 15335 1 d50216a0 37 4 6 5 -1
最主要的,就是local_address本地地址:端口、remote_address遠(yuǎn)程地址:端口、st連接狀態(tài),這里重點看下uid信息,下面會用到。截圖如下:
注1:返回的IP地址端口和狀態(tài)碼都是用的16進(jìn)制,比如HTTP的80端口記錄為0050。
注2:狀態(tài)碼對應(yīng)如下
00 "ERROR_STATUS", 01 "TCP_ESTABLISHED", 02 "TCP_SYN_SENT", 03 "TCP_SYN_RECV", 04 "TCP_FIN_WAIT1", 05 "TCP_FIN_WAIT2", 06 "TCP_TIME_WAIT", 07 "TCP_CLOSE", 08 "TCP_CLOSE_WAIT", 09 "TCP_LAST_ACK", 0A "TCP_LISTEN", 0B "TCP_CLOSING",
下面以騰訊手機管家為例,通過執(zhí)行dumpsys
activity|grep “10136″命令來查找uid
10136對應(yīng)的Pid和應(yīng)用程序包名,如下圖:(注:10136是打開騰訊手機管家后重新執(zhí)行cat/proc/net/tcp6命令獲得的。)
看下包名com.tencent.qqpimsecure是不是騰訊手機管家,在手機的設(shè)置->應(yīng)用程序->正在運行的服務(wù)中查找(這里以android
2.3.7為例),如下圖:
由上面的執(zhí)行結(jié)果找到騰訊手機管家訪問的IP地址和端口是:
7095FB3A:0050 (原格式是:
0000000000000000FFFF00007095FB3A:0050把前面的0000000000000000FFFF0000這段刪掉.)
轉(zhuǎn)換成十進(jìn)制就是: 58.251.149.112:80
和執(zhí)行netstat命令獲取的IP地址是一樣的,如下圖:
這里整理下思路:通過執(zhí)行cat/proc/net/tcp6或cat /proc/net/tcp找到聯(lián)網(wǎng)程序的uid,然后通過uid找到對應(yīng)的應(yīng)用程序pid和包名,最后判斷應(yīng)用是不是可疑,如果可疑就卸載掉。
如上面的騰訊手機管理是不可疑的,所以接著查找下一個,依次類推,直到找到惡意程序或木馬程序為止。在查找過程中不要人為打開聯(lián)網(wǎng)應(yīng)用程序(如UC瀏覽器,QQ瀏覽器等等。),這樣會增加手工查殺的難度。而且惡意程序或病毒程序是開機自動打開的,當(dāng)然也有少部分是隨著其他應(yīng)用啟動之后才觸發(fā)的。
如果想獲取應(yīng)用對應(yīng)的安裝路徑等詳細(xì)信息,可以執(zhí)行下面的命令獲得。
adb shell dumpsys meminfo $package_name or $pid //使用程序的包名或者進(jìn)程id
當(dāng)然在這里還得詳細(xì)說明下,剛才通過可疑網(wǎng)絡(luò)聯(lián)接找到對應(yīng)的應(yīng)用程序包名,然后怎么判斷程序是否可疑呢?因為很多程序都要聯(lián)網(wǎng)的,大家可以這樣做,找到包名后,可以到設(shè)置->應(yīng)用程序->管理應(yīng)用程序,在列表里找到對應(yīng)的應(yīng)用,然后點擊進(jìn)去查看應(yīng)用的權(quán)限列表。
通過權(quán)限就能判斷應(yīng)用的可疑性了。下面截一張圖,大家可以參考下。
第二種方法:通過耗電統(tǒng)計,找到耗電比較高的應(yīng)用,然后查看應(yīng)用的權(quán)限列表,進(jìn)而判斷程序是否可疑,這種方法比較簡單,我就不詳細(xì)介紹了。
第三種方法:通過查看logcat日志找到可疑應(yīng)用程序。我不推薦用adb shell logcat來查看,因為里面的信息太多,而且查到可疑日志不方面。這里推薦大家安裝一款第三方應(yīng)用,叫做系統(tǒng)系統(tǒng)。打開系統(tǒng)信息這款應(yīng)用,在基本信息下面點擊查看日志,這時彈出選擇對話框,選擇logcat選項點擊進(jìn)去就可以查看logcat日志了。如下面:
里面可以找到應(yīng)用的服務(wù)名,以及對應(yīng)的進(jìn)程ID。這里特別是注意紅色部分的警告信息。
大多數(shù)手機木馬都會請求網(wǎng)絡(luò)連接,在請求的同時會拋出異常,因為木馬客戶端并不是實時處于監(jiān)聽狀態(tài),這時服務(wù)端反彈連接會拋出異常。通過異常信息就能找到木馬程序的進(jìn)程ID,進(jìn)而找到程序的安裝路徑,并卸載掉。
如果想獲取應(yīng)用對應(yīng)的安裝路徑等詳細(xì)信息,可以執(zhí)行下面的命令獲得。
adb shell dumpsys meminfo $package_name or $pid //使用程序的包名或者進(jìn)程id
第四種方法:通過抓取網(wǎng)絡(luò)通訊數(shù)據(jù)包分析手機應(yīng)用到底做了什么。前面的三種方法并不能100%的判斷某個應(yīng)用是否是惡意程序或者木馬。
所以第四種方法來了。第四種方法是最復(fù)雜的,并不適合所有人,只適合手機安全發(fā)騷友。
抓取手機網(wǎng)絡(luò)通訊數(shù)據(jù)包分三步走:
第一步:在PC上運行ADVsock2pipe,輸入如下命令
ADVsock2pipe.exe -pipe=wireshark -port 9000
第二步:在PC上運行wireshark,設(shè)置caption-Options
Capture | Options, Interface: Local, \\.\pipe\wireshark
第三步:adb shell
# tcpdump -nn -w - -U -s 0 "not port 9000" | nc 192.168.1.101 9000 -w:指定將監(jiān)聽到的數(shù)據(jù)包寫入文件中保存-nn:指定將每個監(jiān)聽到的數(shù)據(jù)包中的域名轉(zhuǎn)換成IP、端口從應(yīng)用名稱轉(zhuǎn)換成端口號后顯示-s:指定要監(jiān)聽數(shù)據(jù)包的長度
192.168.1.101 這個IP地址是你本機的IP。
至于這個9000端口可以隨便改,只要不被系統(tǒng)占用就可以。
還有一個重要前提條件是手機需要root權(quán)限。
之后在wireshark上面就可以看到通訊數(shù)據(jù)在不停的增加了。
通過上面的第一種手工查殺方法,大家應(yīng)該知道怎么找到可疑連接的IP地址和端口了。
然后就是過濾可疑連接的IP地址和端口。
過濾語法是:ip.dst ==可疑IP
and tcp.dstport ==端口
這里跟大家介紹一種和第三種方法達(dá)到異曲同工之妙的語法。
tcp.flags.syn == 0×02 顯示包含TCP
SYN標(biāo)志的封包。
TCP網(wǎng)絡(luò)連接要完成三次握手,這個地球人都知道的,是吧。
過濾出TCP SYN標(biāo)志的封包后,在wireshark上面就能找到可疑連接的IP地址了。
結(jié)合第一種方法就能找到可疑IP地址對應(yīng)的應(yīng)用程序ID和包名。然后就是查看權(quán)限列表進(jìn)一步判斷,之后就是選擇是否卸載應(yīng)用了。
最后再來回答上面提到的抓包分析手機應(yīng)用到底做了什么的問題。
方法很簡單,剛才用ip.dst
==可疑IP and tcp.dstport ==端口
這個語法過濾出可疑信息,在上面鼠標(biāo)右鍵,選擇follow
TCP stream
就可以跟蹤指定TCP流的包。如下圖:
數(shù)據(jù)包是加密的。怎么去解密就留給大家做課后練習(xí)了。
最后再來補充說明下手機安全軟件為什么查殺不了,非得要手工查殺不可呢?
看下下面的分析就知道原因了。
假設(shè)你的手機不小心被植入了一款手機木馬程序。這個時候你安裝了一款手機安全軟件,比如騰訊手機管家,360手機衛(wèi)士,LBE安全大師,金山手機衛(wèi)士等等等。
然后你每天更新手機殺軟病毒庫并掃描??墒悄?每次的結(jié)果都是您的手機很安全,可以放心使用。如下圖:
所以殺軟都是最新版本最新病毒庫。
通過幾款安全軟件的掃描查殺并沒有找到真正的木馬程序。而通過剛才的四種手工查殺,真正的手機木馬其實已經(jīng)不難找到了。
最后的最后讓大家欣賞下這款手機遠(yuǎn)控的廬山真面目:
我在這里不是黃婆賣瓜自賣自夸。只是想讓所有人提高安全意識,現(xiàn)在的安全形勢有多嚴(yán)峻,不言而喻。
我們通過上面的分析還可以得出一個結(jié)論:
就是市面上的主流手機安全軟件并不靠譜,全中國還有多少手機木馬,什么杜蕾斯手機遠(yuǎn)控,爵士幫手機遠(yuǎn)控,都還沒有浮出水面,是吧?元芳,你怎么看?
當(dāng)前文章:淺談Android手機木馬手工查殺
網(wǎng)頁路徑:http://m.fisionsoft.com.cn/article/cdpdjhp.html


咨詢
建站咨詢
