在Android沙盒监控恶意软件运行时,通常会有记录执行了什么shell(root)命令的需求。一般执行root命令通常会使用Runtime.getRuntime.exec("su"),获取一个Process对象后通过InputStream往里面填命令。有些偷懒的会直接su command来执行。 监控这种类型的命令执行,第一个监控点是在su的main入口中,记录argv来获取命令。但更多情况下,su是会调用sh去获得一个shell,后续的命令交互就交给了这个shell。 那么就还需要去修改下shell的代码。Android 4.x之后用更强大的体积更小的mksh取代了ash,但是模拟器的build里还没有这么做,需要手动用mksh去覆盖掉ash。 对mksh的修改集中在两个方面: 1)对于shell启动时直接接收参数,或者对于exec等特殊的shell指令,同样在main函数中做记录 2)对于通过标准输入记录的指令,在main.c的command函数中,解析Source结构体,获取传入的命令并记录。 通过这两种方式,就可以较好地记录应用执行过什么root命令了。 具体可见http://blog.flanker017.me/一种android沙盒中监控root命令执行的方法-enable-command-logging-in-android/
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)