基于随机森林算法的Android恶意行为识别与分类方法
柯懂湘,潘丽敏,罗森林,张寒青

Android malicious behavior recognition and classification method based on random forest algorithm
Dong-xiang KE,Li-min PAN,Sen-lin LUO,Han-qing ZHANG
附表 1 动态数据采集模块监控函数列表
恶意行为 监控函数列表 备注
恶意扣费 SmsManager.sendTextMessage 可用于发送sp短信,订购附加服务
BroadcastReceiver.abortBroadcast
ContentResolve.delete
资费消耗 DefaultHttpClient.execute 通过网络接收数据,消耗流量
AbstractHttpClient.execute
Socket.getInputStream
Socket.getOutputStream
URL.openConnection
OutputStream.write 用于保存从网络接受的数据
InputStream.read 读取从网络接收的数据
隐私窃取 ContentResolver.query 根据参数不同,可用于获取短信,通讯录,照片等隐私
LocationManager.getProvider 用于获取地理位置信息
Location.getLatitude
Location.getLongitude
PackageManager.getInstalledPackages 获取已安装应用
PackageManager.getInstalledApplications
TelePhonyManager.getSubscriberId 获取手机IMSI号码
TelePhonyManager.getDeviceId 获取手机设备号
SmsManager.sendTextMessage 可用于将窃取的隐私通过短信发送出去
DefaultHttpClient.execute 可用于将窃取的隐私通过网络发送
URL.openConnection
AbstractHttpClient.execute
流氓行为 Runtime.exec("su") 可用于获取root权限
DevicePolicyManager.isAdminActive 获取设备管理员权限
ApplicationPackageManager.setComponentEnabledSetting 隐藏应用图标
ApplicationPackageManager.installPackage 静默安装
ShortcutIconResource.fromContext 创建快捷方式
Dialog.onCreate 可用于广告弹窗
java.lang.Runtime.exec("mount") 将应用设置为系统应用
java.lang.Runtime.exec("cp")
java.lang.Runtime.exec("chmod")
系统破坏 Runtime.exec("su") 可用于获取root权限
DevicePolicyManager.isAdminActive 用于获取设备管理员权限
ActivityManager.getRunningAppProcesses 用于查看现有进程信息
ActivityManager.killBackgroundProcesses 用于终止其他进程
ActivityManager.forceStopPackage 用于终止其他应用
ApplicationPackageManager.deletePackage 用于卸载其他应用
File.delete 用于删除用户文件
Cipher.getInstance 用于加密用户文件
MessageDigest.getInstance
ApplicationPackageManager.setComponentEnabledSetting 可用于终止其他组件
android.app.admin.DevicePolicyManager.resetPassword 可用于修改锁屏密码,并锁屏
android.app.admin.DevicePolicyManager.lockNow
权限提升 Runtime.exec("su") 可用于获取root权限
DevicePolicyManager.isAdminActive 用于获取设备管理员权限
mmap 通过脏牛、Futex、zergRush等漏洞进行权限提升攻击时所需使用的native函数
madvise
malloc
phtread_create
getgid
futex_lock_pi
futex_lock_pi_atomic
mount
fopen("/proc/mounts","r")
setresuid 设置文件的S权限位