志在指尖
用双手敲打未来

安卓app逆向分析

本文是我的关于怎么开端Android逆向系列文章的榜首部分。在文末供给了一个文档,你能够依据该文档说明部署同我一样的实验环境。
在了解android运用的逆向之前,你有必要对android渠道及其架构和android运用程序的构建块(组件)已有了一个较好的了解。假如你并不了解这些,那么我主张你先参阅以下链接,然后再继续阅读本文。
我当时的实验室环境如下:主机体系为windows,其间装置了virtualbox和genymotion
virtualbox和genymotion的设备都处于桥接形式
Android4.4(kitkatAPIversion19)
在virtualbox中,kalilinux也同时运转(与genymotion一起)
注:该设置并非固定,你能够依据本身需求环境进行调整。例如,你也能够运用kalilinux作为你的主机体系,并在上面装置genymotion。
在正式开端咱们的逆向之旅前,我想先向大家介绍一下名为adb(androiddebuggerbridge)的工具/服务器。它能够协助咱们衔接,获取数据并将指令传递给远程Android设备(调试形式能够经过设备设置中的开发者形式打开)。当时状况下,咱们将运用genymotion设备(虚拟设备)。
关于安卓运用的逆向,这里有一个十分好的可供咱们学习和练习的apk-DIVA(DamninsecureandvulnerablemobileApplication)。这是一个由Payatu的安全分析师开发的软弱安卓运用。下面咱们也将以该运用为例:

安卓
首先,让咱们来发动genymotion设备:在Windows/Linux中查找Genymotion运用
Startgenymotion
选中你想要发动的设备,然后点击Start按钮。
17ff602f653c8f210e6f76877969e99b.png
假如你以上步骤正确履行,则应该能看到类似以下的界面:
能够看到Android设备现已发动,现在咱们来发动虚拟机中的kalilinux。步骤如下:发动virtualbox
从中发动kali虚拟机
注:这两个虚拟机处于桥接形式。假如有DHCP服务器,则需要衔接到路由器或网络。
现在两台机器都已发动,下面让咱们来查看下kali和Android设备之间的衔接状况。为此,咱们需要获取Android设备的IP地址。导航到设置菜单
单击WiFi选项
你会在网络中看到WiredSSID
长按“WiredSSID”选项
你会看到如下所示界面
获取IP后咱们回到kali终端,并键入以下指令查看衔接状况:adbconnect192.168.20.74
假如指令正确履行,你将会看到以下输出。
现在让咱们经过履行以下指令,来验证设备是否真实衔接:adbdevices
经过承认咱们得知设备已衔接到IP地址192.168.20.74和5555端口(adb默许的衔接端口为5555)。
现在,咱们就能够在Android设备上履行不同的adb指令了。经过-h选项查看可用参数:adb-h
9e4ee4258e2a38b24fcf27c5880511a5.png
在协助信息中会为你列出所有可用的参数选项。下面是一些在逆向中时常会用到的指令:
ADB调试adbdevices–Listsalltheconnecteddevices
adbforward–usedforforwardingsocketconnections
adbkill-serve
无线adbconnect–connectstotheremotedevice
adbusb–connectstotheUSBattacheddevice
包管理器adbinstall–installapackageadbuninstall-uninstallapackageadbshellpmlistpackages–usedfordisplayinglistsofpackagesinstalledadbshellpmpath–usedfordisplayingpackagepathondeviceadbshellpmclear
文件管理器adbpull–usedforpulling/downloadingafileadbpush–usedforpushing/uploadingafileadbshellls–usedfordisplayinglistoffilesanddirectoriesinthecurrentdirectoryadbshellcd–usedforchangingthedirectoryadbshellrm-usedforremovingafileadbshellmkdir–usedforcreatingadirectoryadbshelltouch–usedforcreatingafileadbshellpwd–usedfordisplayingthecurrentpathadbshellcp–usedforcopyingafileadbshellmv–usedformovingafile
网络adbshellnetstat–usedfordisplayingthestatisticsfornetworkconnectionadbshellping–usedforpingingahost/IPadbshellnetcfgadbshellip
Logcatadblogcatadbshelldumpsysadbshelldumpstate
截图adbshellscreencapadbshellscreenrecord
体系adbrootadbsideloadadbshellpsadbshelltopadbshellgetpropadbshellsetprop
在了解adb指令后,下面咱们来装置DIVA(Android运用程序)。
注:请将该运用下载装置至你的kali机器上,由于所有的adb指令都将从kali中触发。
履行以下指令装置该运用:adbinstalldiva-beta.apk
现在,咱们现已完成了diva-beta.apk的装置。让咱们来验证下该运用是否已在咱们的设备中成功装置。
能够看到运用程序已被正确装置,并可在设备的菜单中运用。
让咱们经过单击该运用程的图标来发动它。你将看到如下发动界面:
当时,DIVA为咱们准备了以下应战:
不安全的日志记载硬编码问题-第1部分不安全的数据存储-第1部分不安全的数据存储-第2部分不安全的数据存储-第3部分不安全的数据存储-第4部分输入验证问题-第1部分输入验证问题-第2部分访问操控问题-第1部分访问操控问题-第2部分访问操控问题-第3部分硬编码问题-第2部分输入验证问题-第3部分
咱们将逐一处理上述应战,让你了解Android运用中的不同缝隙。关于榜首项应战,即不安全日志记载,咱们能够经过adb指令来查看diva运用的日志记载。指令如下:adblogcat
假如指令正确履行,你将会看到如下所示内容:
能够看到这里的日志记载十分的凌乱,由于它显现了许多不同的日志记载数据(整个设备)。为了让咱们看起来愈加清晰,我将运用grep指令。但在此之前,咱们需要首先获取该运用程序包的进程ID。指令如下:adbshellps|grepdiva
假如指令正确履行,你将会看到如下所示内容:
adbshell是用于经过adb发送任何shell指令的指令;ps作为shell指令发送,ps的输出供给给grep指令。Grep是一个十分棒的用于查找相关字符串的工具,在本例中咱们查找的字符串为“diva”。
从输出结果中咱们得知,diva的pid为1654,包名称为“jakhar.aseem.diva”
现在,让咱们以组合的形式运用logcat和grep指令:adblogcat|grep1654

未经允许不得转载:IT技术网站 » 安卓app逆向分析
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载