日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何開(kāi)始對(duì)Android應(yīng)用的逆向分析?

本文是我的關(guān)于如何開(kāi)始Android逆向系列文章的第一部分。在文末提供了一個(gè)文檔,你可以根據(jù)該文檔說(shuō)明部署同我一樣的實(shí)驗(yàn)環(huán)境。

在了解android應(yīng)用的逆向之前,你必須對(duì)android平臺(tái)及其架構(gòu)和android應(yīng)用程序的構(gòu)建塊(組件)已有了一個(gè)較好的理解。如果你并不了解這些,那么我建議你先參閱以下鏈接,然后再繼續(xù)瀏覽本文。

  • Android平臺(tái)架構(gòu)
  • Android應(yīng)用程序及其組件
  • Android應(yīng)用程序及其架構(gòu)(PPT)

我當(dāng)前的實(shí)驗(yàn)室環(huán)境如下:

  • 主機(jī)系統(tǒng)為windows,其中安裝了virtual box 和 genymotion
  • virtual box 和 genymotion的設(shè)備都處于橋接模式
  • Android 4.4 (kitkat API version 19)
  • 在virtual box中,kali linux也同時(shí)運(yùn)行(與genymotion一起)

注:該設(shè)置并非固定,你可以根據(jù)自身需求環(huán)境進(jìn)行調(diào)整。例如,你也可以使用kali linux作為你的主機(jī)系統(tǒng),并在上面安裝genymotion。

在正式開(kāi)始我們的逆向之旅前,我想先向大家介紹一下名為adb(android debugger bridge)的工具/服務(wù)器。它可以幫助我們連接,獲取數(shù)據(jù)并將指令傳遞給遠(yuǎn)程Android設(shè)備(調(diào)試模式可以通過(guò)設(shè)備設(shè)置中的開(kāi)發(fā)者模式打開(kāi))。當(dāng)前情況下,我們將使用genymotion設(shè)備(虛擬設(shè)備)。

對(duì)于安卓應(yīng)用的逆向,這里有一個(gè)非常好的可供我們學(xué)習(xí)和練習(xí)的apk - DIVA ( Damn insecure and vulnerable mobile Application )。這是一個(gè)由Payatu的安全分析師開(kāi)發(fā)的脆弱安卓應(yīng)用。下面我們也將以該應(yīng)用為例:

首先,讓我們來(lái)啟動(dòng)genymotion設(shè)備:

  • 在Windows/Linux中搜索Genymotion應(yīng)用
  • Start genymotion

選中你想要啟動(dòng)的設(shè)備,然后點(diǎn)擊Start按鈕。

如果你以上步驟正確執(zhí)行,則應(yīng)該能看到類似以下的界面:

可以看到Android設(shè)備已經(jīng)啟動(dòng),現(xiàn)在我們來(lái)啟動(dòng)虛擬機(jī)中的kali linux。步驟如下:

  • 啟動(dòng)virtual box
  • 從中啟動(dòng)kali虛擬機(jī)

注:這兩個(gè)虛擬機(jī)處于橋接模式。如果有DHCP服務(wù)器,則需要連接到路由器或網(wǎng)絡(luò)。

現(xiàn)在兩臺(tái)機(jī)器都已啟動(dòng),下面讓我們來(lái)檢查下kali和Android設(shè)備之間的連接情況。為此,我們需要獲取Android設(shè)備的IP地址。

  • 導(dǎo)航到設(shè)置菜單
  • 單擊WiFi選項(xiàng)
  • 你會(huì)在網(wǎng)絡(luò)中看到WiredSSID
  • 長(zhǎng)按“WiredSSID”選項(xiàng)
  • 你會(huì)看到如下所示界面

獲取IP后我們回到kali終端,并鍵入以下命令檢查連接情況:

 
 
 
 
  1. adb connect 192.168.20.74 

如果命令正確執(zhí)行,你將會(huì)看到以下輸出。

現(xiàn)在讓我們通過(guò)執(zhí)行以下命令,來(lái)驗(yàn)證設(shè)備是否真正連接:

 
 
 
 
  1. adb devices 

通過(guò)確認(rèn)我們得知設(shè)備已連接到IP地址192.168.20.74和5555端口(adb默認(rèn)的連接端口為5555)。

現(xiàn)在,我們就可以在Android設(shè)備上執(zhí)行不同的adb命令了。通過(guò)-h選項(xiàng)查看可用參數(shù):

 
 
 
 
  1. adb -h 

在幫助信息中會(huì)為你列出所有可用的參數(shù)選項(xiàng)。下面是一些在逆向中時(shí)常會(huì)用到的命令:

ADB 調(diào)試

 
 
 
 
  1. adb devices – Lists all the connected devices  
  2. adb forward – used for forwarding socket connections  
  3. adb kill-serve 

無(wú)線

 
 
 
 
  1. adb connect – connects to the remote device 
  2. adb usb – connects to the USB attached device 

包管理器

 
 
 
 
  1. adb install – install a package adb uninstall – uninstall a package adb shell pm list packages – used for displaying lists of packages installed adb shell pm path – used for displaying package path on device adb shell pm clear 

文件管理器

 
 
 
 
  1. adb pull – used for pulling / downloading a file adb push – used for pushing / uploading a file adb shell ls – used for displaying list of files and directories in the current directory adb shell cd – used for changing the directory adb shell rm- used for removing a file adb shell mkdir – used for creating a directory adb shell touch – used for creating a file adb shell pwd – used for displaying the current path adb shell cp – used for copying a file adb shell mv – used for moving a file 

網(wǎng)絡(luò)

 
 
 
 
  1. adb shell netstat – used for displaying the statistics for network connection adb shell ping – used for pinging a host / IP adb shell netcfg adb shell ip 

Logcat

 
 
 
 
  1. adb logcat adb shell dumpsys adb shell dumpstate 

截圖

 
 
 
 
  1. adb shell screencap adb shell screenrecord 

系統(tǒng)

 
 
 
 
  1. adb root adb sideload adb shell ps adb shell top adb shell getprop adb shell setprop 

在了解adb命令后,下面我們來(lái)安裝DIVA(Android應(yīng)用程序)。

注:請(qǐng)將該應(yīng)用下載安裝至你的kali機(jī)器上,因?yàn)樗械腶db命令都將從kali中觸發(fā)。

執(zhí)行以下命令安裝該應(yīng)用:

 
 
 
 
  1. adb install diva-beta.apk 

現(xiàn)在,我們已經(jīng)完成了diva-beta.apk的安裝。讓我們來(lái)驗(yàn)證下該應(yīng)用是否已在我們的設(shè)備中成功安裝。

可以看到應(yīng)用程序已被正確安裝,并可在設(shè)備的菜單中使用。

讓我們通過(guò)單擊該應(yīng)用程的圖標(biāo)來(lái)啟動(dòng)它。你將看到如下啟動(dòng)界面:

當(dāng)前,DIVA為我們準(zhǔn)備了以下挑戰(zhàn):

不安全的日志記錄 硬編碼問(wèn)題 – 第1部分 不安全的數(shù)據(jù)存儲(chǔ) – 第1部分 不安全的數(shù)據(jù)存儲(chǔ) – 第2部分 不安全的數(shù)據(jù)存儲(chǔ) – 第3部分 不安全的數(shù)據(jù)存儲(chǔ) – 第4部分 輸入驗(yàn)證問(wèn)題 – 第1部分 輸入驗(yàn)證問(wèn)題 – 第2部分 訪問(wèn)控制問(wèn)題 – 第1部分 訪問(wèn)控制問(wèn)題 – 第2部分 訪問(wèn)控制問(wèn)題 – 第3部分 硬編碼問(wèn)題 – 第2部分 輸入驗(yàn)證問(wèn)題 – 第3部分

我們將逐一解決上述挑戰(zhàn),讓你了解Android應(yīng)用中的不同漏洞。對(duì)于第一項(xiàng)挑戰(zhàn),即不安全日志記錄,我們可以通過(guò)adb命令來(lái)檢查diva應(yīng)用的日志記錄。命令如下:

 
 
 
 
  1. adb logcat 

如果命令正確執(zhí)行,你將會(huì)看到如下所示內(nèi)容:

可以看到這里的日志記錄非常的雜亂,因?yàn)樗@示了許多不同的日志記錄數(shù)據(jù)(整個(gè)設(shè)備)。為了讓我們看起來(lái)更加清晰,我將使用grep命令。但在此之前,我們需要首先獲取該應(yīng)用程序包的進(jìn)程ID。命令如下:

 
 
 
 
  1. adb shell ps | grep diva 

如果命令正確執(zhí)行,你將會(huì)看到如下所示內(nèi)容:

adb shell是用于通過(guò)adb發(fā)送任何shell指令的命令;ps作為shell指令發(fā)送,ps的輸出提供給grep命令。Grep是一個(gè)非常棒的用于搜索相關(guān)字符串的工具,在本例中我們搜索的字符串為“diva”。

從輸出結(jié)果中我們得知,diva的pid為1654,包名稱為“jakhar.aseem.diva”

現(xiàn)在,讓我們以組合的形式使用logcat和grep命令:

 
 
 
 
  1. adb logcat | grep 1654 

你將看到與該特定進(jìn)程(即diva)相關(guān)的所有日志。

實(shí)驗(yàn)環(huán)境設(shè)置文檔


網(wǎng)站欄目:如何開(kāi)始對(duì)Android應(yīng)用的逆向分析?
標(biāo)題鏈接:http://m.5511xx.com/article/cdhiepp.html