移动应用测试之APP日志的抓取

VSole2023-01-11 11:51:41

1.为什么要抓取app日志

在移动应用渗透测试中敏感信息安全风险检测需要对应用日志进行分析,日志内容如果包含敏感信息,可能会造成数据泄漏的风险。

在app应用程序发生异常出现Crash崩溃、ANR阻塞时通常说明应用程序存在一定的问题,这时候需要收集应用日志定位错误位置帮助开发调试修复程序。

2.Logcat收集app日志相关工具配置

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用。logcat本身是android的shell的一个命令,可以通过adb shell进入shell后执行logcat命令,也可以通过adb logcat直接运行。

2.1 ADB的安装与基础使用

adb全称是Android Debug Bridge,它是一个命令行工具,通过它可以与Android设备进行交互,可以进行常见的安装/卸载app、打开app、查看app的日志等操作。

这里简单列出几条ADB常用命令为下文中我们测试使用:

# 1.查看
adb --help #查看帮助手册
adb devices #检查连接到电脑的安卓设备,常用的检查命令
adb shell dumpsys activity | find "mFocusedActivity" #Android 7.0及以下查看前台应用包名
adb shell dumpsys activity | find "mResumedActivity" #Android 8.0及以上用此命令查看包名
adb logcat #打印log信息
adb logcat -v time #log信息显示时间戳
adb logcat -v time > d:\logcat.txt #把日志信息重定向至d:/logcat.txt

# 2.连接与交互
adb connect ip:port #通过WiFi进行远程连接手机进行调试,手机和电脑需在同一个局域网上,计算机内部通信地址127.0.0.1,夜神模拟器默认的端口号是62001
adb disconnect ip:port #断开一个(ip:port)连接
adb shell #登录设备shell(安卓的底层是Linux)

# 3.文件传输
adb pull <手机文件路径> <本机路径> #从手机拉取文件到本地电脑
adb push <本地电脑路径> <手机路径> #从本地推送文件到手机

# 4.安装与卸载
adb install *.apk #为了快速获取apk的安装包路径,可以直接把apk直接拖到cmd的窗口,安装成功会返回success
adb uninstall  #卸载需要输入应用包名

ADB的安装:

实际上adb是一个免安装工具,使用adb时只需要adb工具被命令行调用到就可以了。

1.首先根据系统的版本下载adb

2.解压下载的Platform-tools zip包,将Platform-tools路径添加到系统环境变量中。随后在命令行执行adb version查看adb版本,未出现报错安装配置成功。

3.mac os中可直接使用brew进行安装

brew install android-platform-tools

安装完成后在根目录.bash_profile添加环境变量,使用open .bash_profile打开编辑,在下方插入如下代码

export ANDROID_HOME=/Users/用户名/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

保存后source .bash_profile更新变量,查看adb

2.2Logcat语法命令

语法格式:

[adb] logcat [
] … [] …
选项:
-b:加载可供查看的备用日志缓冲区,例如event或radio。默认使用 main和system缓冲区集。请参阅查看备用日志缓冲区

-c, –clear:清除所选的缓冲区并退出,默认缓冲区集为main和system。要清除所有缓冲区,请使用-b all -c。

-e, –regex=:只输出日志消息与匹配的行,其中是一个正则表达式

-m, –max-count=:输出行后退出。这样是为了与–regex配对,但可以独立运行

-print:与–regex和–max-count配对,使内容绕过正则表达式过滤器,但仍能够在获得适当数量的匹配时停止

-d:将日志转储到屏幕并退出

-f:将日志消息输出写入

-g, –buffer-size:输出指定日志缓冲区的大小并退出

-n:设置轮替日志的数量上限,默认值为4,需要使用 -r 选项

-r:每输出时轮替日志文件,默认值为16。需要使用-f选项

-s:相当于过滤器表达式‘*:S’;它将所有标记的优先级设为“静默”,并用于放在可添加内容的过滤器表达式列表之前

-v:设置日志消息的输出格式。默认格式为threadtime。

-D, –dividers:输出各个日志缓冲区之间的分隔线

-c:清空(清除)整个日志并退出

-t:仅输出最新的行数。此选项包括-d功能

2.3Logcat缓冲区

android log输出量巨大,特别是通信系统的log,因此,android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:

1)Radio:输出通信系统的log

2)System:输出系统组件的log

3)Event:输出event模块的log

4)Main:所有java层的log,遗迹不属于上面3层的log

缓冲区主要给系统组件使用,一般的应用不需要关心,应用的log都输出到main缓冲区中。默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log。

实例:

adb logcat –b radio

adb logcat –b system

adb logcat –b events

adb logcat –b main

//将缓冲区的log打印到屏幕并退出
adb logcat -d 
//清除缓冲区log(testCase运行前可以先清除一下)
adb logcat -c
//打印缓冲区大小并退出
adb logcat -g
//输出log
adb logcat -f /data/local/tmp/log.txt -n 10 -r 1

3.日志收集过程

连接设备

先将设备通过usb数据线连接到电脑,设备开启USB调试。

通过adb devices命令查看是否连接成功:

molengsu@mlsdeMacBook-Pro / % adb devices
List of devices attached
FJH5T19114009780 device

查看设备log输出

我们直接通过adb logcat查看的输出是所有应用的

adb logcat -d  ##所有应用logcat输出

为了精准分析我们可以通过应用pid来查看我们想要分析的应用日志。首先列出设备已安装的应用查看应用包名

adb shell pm list package

然后获取应用的pid,在获取时现在手机上打开要获取的应用,因为pid是分给进程的,应用运行起来才会分配pid。需要注意的是,pid是分配给进程的,如果app关闭了再重新打开,就会分配一个新的进程,同一个包名对应的pid就会变。

adb shell dumpsys meminfo com.xxxx.xxxx  ##com.xxxx.xxxx是包名

拿到pid后就接着可以输出应用日志了

adb logcat -d --pid=30923

为了方便查找也可以将日志导出到文件中,导出时要注意新建一个文本向里写入文本设置好可写的权限。

adb logcat -d --pid=30923 > logcat_test.txt

loglogcat
本作品采用《CC 协议》,转载必须注明作者和本文链接
大多数计算机系统设计为可与多个用户一起使用。特权是指允许用户执行的操作。普通特权包括查看和编辑文件或修改系统文件。特权升级意味着用户获得他们无权获得的特权。这些特权可用于删除文件,查看私人信息或安装不需要的程序,例如病毒。
一文吃透 Linux 提权
2021-10-23 07:09:32
特权升级意味着用户获得他们无权获得的特权。通常,当系统存在允许绕过安全性的错误或对使用方法的设计假设存在缺陷时,通常会发生这种情况。结果是,具有比应用程序开发人员或系统管理员想要的特权更多的应用程序可以执行未经授权的操作。
渗透过程中,我们可能用普通账号进到了系统,在提权或者进一步信息收集的过程中,我们会获得一些日志文件,根据这些日志文件我们需要进一步的分析。
在app应用程序发生异常出现Crash崩溃、ANR阻塞时通常说明应用程序存在一定的问题,这时候需要收集应用日志定位错误位置帮助开发调试修复程序。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用。logcat本身是android的shell的一个命令,可以通过adb shell进入shell后执行logcat命令,也可以通过adb logcat直接运行。
Android 应用gl,使用了加固i,老版本的应用gl是js源码,新版本更新后,刚开始以为是加密了源码,分析后才知道是使用了Hermes优化引擎。Hermes优化的优化效果如下:优化前:优化后:二、前期准备2.1 绕过root检测应用gl使用了加固i,在被root 的手机上运行,闪退。绕过方法也很简单,在magisk的设置中,开启遵守排除列表,然后在配置排除列表中选择应用gl。
为了避免下半辈子只能在几平米的空间活动,我在某鱼上淘到了一款蓝牙锁作为小蓝车的平替。nRF蓝牙抓包首先需要解决的问题是获取蓝牙锁的MAC地址,因为最后我们需要使用gatttool直接通过MAC地址与蓝牙锁交互。比较好用的是nRF这个软件,能够直接扫描查看周围的蓝牙设备。使用gatttool尝试连接并使用primary看查所有service:然后通过characteristics命令看查所有的特性:其中handle是特性的句柄,char properties是特性的属性值,char value handle是特性值的句柄,uuid是特性的标识。
C:\Users\bk\Desktop\天府科技云APP\天府科技云服务平台\天府科技云服务平台.apkC:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe?文件将解压出来的classes.dex文件拷贝到dex2jar工具文件夹中执行命令:d2j-dex2jar classes.dex执行完毕后,得到反编译而来的classes-dex2jar.jar文件使用jd-gui.exe或者luyten-0.5.4打开 classes-dex2jar.jar文件,得到360安全加固混淆加密的源代码。应同时使用V1+V2签名)6.应用完整性校检将反编译出来源码中修改图片文件名为test.png进行重新生成apk包,命令如下:java -jar apktool.jar b -f?
未正确验证用户输入的应用程序使它们容易受到 SQL 注入的攻击。SQL 注入攻击 发生在攻击者能够通过操纵用户输入数据将一系列恶意 SQL 语句插入“查询”以供后端数据库执行时。使用这种类型的威胁,应用程序可以很容易地被黑客入侵并被攻击者窃取机密数据。
FartExt是我之前学习脱壳实践时做的一个自动脱壳机,是基于FART的主动调用思想实现对特定的抽取壳进行优化处理的工具。由于原本的FART没有配置相关的,所以我增加了配置对指定app脱壳。
最近在学习Android APP客户端漏洞挖掘过程中,对Android APP端漏洞挖掘做了一个基本的梳理总结本节主要是在介绍Android APP漏洞挖掘过程中,使用常见的Android漏洞挖掘工具的安装和使用办法,帮助Android漏洞挖掘人员提供便利。本文里面一部分的介绍采摘与网络博客,大家可以点击对应的网址进行查看。
VSole
网络安全专家