【安裝體驗】MobSF,一款開源移動安全測試框架

前言

本系列前面的文章說過,爲了某信息安全比賽,我選了一個APK行爲分析的題目。之前一直在研究安卓的編程,然後看了一下關於apk分析方面的書,覺得完全沒有目標,不知道如何下手,偶然間在freebuf閒逛的時候,隨手搜了一下這方面的資料,還真找到了兩篇文章:

第一篇文章介紹的就是我選擇的一個C/S架構的工具MobSF,用django+python寫的。作者是Ajin Abraham,這個項目他發佈在了github上面https://github.com/ajinabraham/Mobile-Security-Framework-MobSF,一直在更新,所以如果提交issue的話他很快就會回。
自己看書完全不知道如何做,所以我決定用C++/Qt重寫這個項目。後續的文章會同步開發過程。

安裝MobSF

怎麼安裝MobSF在FreeBuf的文章中已經說的很清楚了,將源碼、虛擬機、java、依賴項下載安裝好後,應該是這樣:
這裏寫圖片描述
進入終端輸入
python manage.py runserver
顯然,錯誤是不可避免的:
這裏寫圖片描述
直接根據錯誤提示打開java.py,解決第一個錯誤(應該是java路徑的問題)
這裏寫圖片描述
問題出在第65行:
proc = subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,)
subprocess.Popen函數的詳細用法與作用可百度,這裏以args爲參數打開了一個新的進程,既然問題出在這裏,而且args參數是傳遞進來的,回溯到調用RunProcess(args)的地方:
這裏寫圖片描述
可以看到:

MAC_LINUX_JAVA="/usr/bin/"
args=[MAC_LINUX_JAVA+"java"]

也就是說,subprocess.Popen()在這裏實際上執行了一個命令:/usr/bin/java
和我們在命令行下輸入這條命令是一樣的。那麼我們嘗試在命令行下輸入這條命令:
這裏寫圖片描述
顯然,路徑是錯誤的。我的java 並沒有直接裝在/usr/bin目錄下:
這裏寫圖片描述
而是在/usr/bin/jdk1.8.0_91下。
找到可執行文件java,在/usr/bin/jdk1.8.0_91/bin/下:
這裏寫圖片描述
在命令行下輸入
/usr/bin/jdk1.8.0_91/bin/java
這裏寫圖片描述
看完終端的輸出結果,就可以明白作者在java.py中這一段代碼的含義:
這裏寫圖片描述
這裏寫圖片描述
就是檢測在運行java可執行文件後,檢測終端的輸出中有沒有“oracle”字段,從而判斷有沒有安裝java。
既然如此,我們就有兩個選擇:
1. 修改源碼
2. 修改java安裝地址
顯然,修改源碼更方便:
修改java.py第43行爲:
MAC_LINUX_JAVA="/usr/bin/jdk1.8.0_91/bin/"
再次運行manage.py:
這裏寫圖片描述
OK.
打開網站127.0.0.1:8000
這裏寫圖片描述
隨便上傳一個apk進行分析,結果又有報錯:
這裏寫圖片描述
這裏寫圖片描述
第一個錯誤應該是python的一個第三方包xhtml2pdf安裝出了問題導致無法導入,這個問題在ubuntu16.04LTS上沒有得到解決,忽略不計,關注第二個錯誤。應該是編碼錯誤,將源碼的文件夾複製到home中,使得文件夾路徑中不包含中文,再次執行,ok了:
這裏寫圖片描述

其他

關於MobSF的使用方法就需要自己研究了,下一節將從MobSF的靜態分析部分的源碼分析開始,並開始第一步:使用zlib解壓apk文件夾。

其他安裝報錯(Update 2016.5.24)

最近在安裝的時候發現,除了前面提到的java路徑錯誤外,在使用pip安裝pyOpenSSL時,會報一系列錯誤,在ubuntu16.04和ubuntu15.10中都存在。
解決方法:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev libjpeg-dev
主要原因是因爲缺少上面這些包的原因。

動態分析模塊安裝錯誤

virtual box

由於vmbox對各個ubuntu版本都有不同的版本支持,所以建議下載系統版本相對應的deb包

virtual box的Host-Only模式網卡

安裝動態分析模塊,需要開啓一個虛擬的網卡,但是vmbox在linux系統下默認是不自動生成的。所以需要手動添加
1. 打開vmbox,ctrl+G進入全局設置:
這裏寫圖片描述
2. 選擇【網絡】這一項,添加一個host-only虛擬網卡
這裏寫圖片描述
順便吐槽下由於學校的網絡限制,我只能在斷網的情況下才能開啓這個虛擬網卡

adb工具

在動態分析的過程中,幾乎所有的測試都依賴adb工具(Android Debug Bridge)這個工具。但是mobsf中給的那個工具,我並不能成功調用,直接在命令行下使用也不行,所以還是手動安裝一個。
記得把mobsf的源代碼中獲取adb工具的函數修改一下,當然,作者也考慮到了這種情況,不修改也ok,只要你的adb在環境變量中就行。
函數位於./DynamicAnalyzer/views.py中
具體如下:
這裏寫圖片描述

一些沒解決的問題

不知道爲什麼,作者給的那個安卓虛擬環境在ubuntu下導入後,第一次啓動才能看到那個IP地址192.168.56.101
假如你第一次啓動沒有做好系統快照的話,第二次啓動就會報錯,雖然系統能夠正常啓動,但是查看網卡的ip地址的話,就不在是192.168.56.101,而是ip全爲空。
這樣的話就會導致adb連接不上,後續的動態分析也就無從談起
我也試過在安卓虛擬機的terminal下手動配置ip:192.168.56.101/24.
配置好後,能夠ping通了,adb也能夠連上了,但是webproxy出了問題,抓不到任何web請求
因爲我在用C++重寫,但是找不到合適的web代理,我又不想自己寫一個,所以我就把作者用tornado模塊寫的pyWebproxy全部拿下來,自己用python寫了一個執行腳本,然後在C++中調用。
在這個過程中,我自己作死把虛擬機刪除了,然後重新導入一次之後,手動配置了ip,結果web代理的腳本無法退出了,即使退出也拿不到任何數據。
所以,強烈建議在第一次啓動這個玩意的時候,及時做個系統快照。不然,你就回跟我一樣,重新裝一次系統(不要問我怎麼知道在ubuntu15.10和16.04下pip安裝第三方包的那些錯誤的,滿滿都是淚)。
這個問題我覺得突破口就在如何在安卓的終端內正確配置ip,有時間再研究下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章