信安易安全卫士的启动机制解析
对在E680g手机上被广泛使用的软件信安易安全卫士猜测解析后得出一个大概结论:使用大家请小心使用!!!!
今天看到信安易有新版本了,所以赶紧下了一个,给自己装上,很惊奇的发现它有个开机自启动的功能,但是我打开后发现没有修改startup.txt,不禁让我更加好奇,所以我解开了mcleaner.mpkg。也有了接下来的一些探究。
发现的文件列表:
whitelist.png setup.png b.png log.png s.png
sms.png uc.png us.png blacklist.png MCleaner.desktop
call.png minstall mcleaner.o MCleaner MScreen
MScreen_cn.qm installer.o
根据猜测,发现了几个感兴趣的东西installer.o和minstall,一个模块和一个程序。将minstall反编译过来之后发现的字串表:
.rodata:000094FC 00000007 C "'?91G?
.rodata:00009504 00000007 C 81-U/9O
.rodata:00009520 0000001B C /etc/rc.d/rc2.d/S50apmd.sh
.rodata:00009540 00000010 C rmmod installer
.rodata:00009550 0000001E C /sbin/insmod -f ./installer.o
.rodata:00009570 00000015 C kill -9 pidof apmd
.rodata:00009588 00000021 C kill -9 pidof -s windowsserver
.rodata:000095B0 00000013 C kill -9 pidof am
.rodata:000095C8 00000016 C kill -9 pidof phone
.rodata:000095E0 00000013 C /ezxlocal/msafe.cn
.rodata:000095F8 00000018 C . /home/native/.profile
.rodata:00009610 0000000B C /MCleaner&
.rodata:00009620 00000008 C sleep 5
.rodata:00009628 0000000E C %sn%sn%sn%s%s
.rodata:00009638 0000000A C #!/bin/sh
.rodata:00009648 0000000E C /dev/apm_bios
.rodata:00009658 0000000F C /proc/minstall
.rodata:00009678 00000006 C block
.rodata:00009680 0000000D C %s%s%s%s%s%d
嗯,不错,模块的加载和卸载,还有几个kill没理解为什么要在程序执行的时候杀掉这几个进程。看到了几个不正常的路径:
/etc/rc.d/rc2.d/S50apmd.sh和/ezxlocal/msafe.cn
按道理来说etc文件夹是不可写的,莫非。。。。。。。。。??!!!
所以接下来我打开了这个S50apmd.sh看了下,内容如下:
!/bin/sh
start up apmd
/usr/bin/apmd&
echo "after apmd"
try_time
同时也将installer.o反编译了,字串没有什么奇怪的地方吧,就是说明啥的:
.modinfo:00000838 00000029 C kernel_version=2.4.20_mvlcee30-mainstone
.modinfo:00000868 0000000C C parm_load=i
.modinfo:00000878 00000025 C deSCRIPTion=Ezx Bootloader(msafe.cn)
.rodata.str1.8:000008A8 0000000B C /bin/chown
.rodata.str1.8:000008B8 0000000A C root.root
.rodata.str1.8:000008C8 0000000E C /tmp/minstall
.rodata.str1.8:000008D8 00000009 C minstall
root.root是什么意思??不知道。。
但是当看到函数表的时候,居然,居然有些东西很眼熟呀:
reboot_phone .text 00000000 00000008 R . . . . . .
my_suspend .text 00000008 00000004 R . . . . . .
my_resume .text 0000000C 00000004 R . . . . . .
init_rwflash .text 00000010 00000104 R . . . B . .
exit_rwflash .text 00000144 00000018 R . . . . . .
rwflash_read_proc .text 00000160 00000018 R . . . . . .
cfi_intelext_unlockdown_L18 .text 00000184 00000390 R . . . B . .
fake_cfi_intelext_suspend .text 00000524 00000118 R . . . B . .
fake_cfi_intelext_resume .text 00000658 0000015C R . . . B . .
cfi_build_cmd .text 000007D0 00000008 R . . . . . .
call_usermodehelper extern 0000090C 00000004 R . . . . . .
__get_mtd_device extern 00000910 00000004 R . . . . . .
add_mtd_partitions extern 00000914 00000004 R . . . . . .
create_proc_entry extern 00000918 00000004 R . . . . . .
udelay extern 00000920 00000004 R . . . . . .
mod_timer extern 00000924 00000004 R . . . . . .
init_rwflash这些函数真的很眼熟,只是想不起哪里见过了。
继续,telnet后执行minstall,手机重启,突然理解了前边的那些kill是干什么的了,呵呵。。重启后发现/ezxlocal文件夹里面出现一个shell程序,大致是启动mcleaner的,但是放这个文件夹里能够自启动么??
突然想起前边的rc.d里面的文档,打开来看。内容居然被修改了,如下:
!/bin/sh
/usr/bin/apmd&
/usr/bin/emud&
/ezxlocal/msafe.cn&
这下我就目瞪口呆了,这个程序居然能够修改这些东西,以前的软件就只有一款做到了这步,那就是flashkit,是的,是的,函数表里面的东西是很眼熟,以前在flashkit里面见过,而flashkit的程序一时没有找到,所以不好做比对,听intoxicated说flashkit是开源的,也许。。。原来如此。。。
多启动了两个东西,emud和msafe.cn
emud是什么??找到相应的目录居然没有。我的神呀。汗毛都竖起来了。。。
不安全呀。。。。
最后,我关闭信安易卫士,msafe.cn这个shell程序被删除,S50apmd.sh这个文件仍然没有还原回来,还是那个样子,那个第三行的执行和第四行的执行变成了空的,奇怪了,确实不安全。
最后,顺便说上一句,minstall这个程序的函数表里面有个TAPI_POWER_NotifyBpPowerOff 和TAPI_CLIENT_Init函数,这个TAPI_CLIENT_Init是打开初始化tapi_client的函数,以前psysun的反编译工作就给出了相应的代码,但是没有看到TAPI_CLIENT_Fini??只创建就不销毁??嗯,也许是个隐患,也许不是,我不是作者,不清楚具体的工作状况,不好说什么。
最后,猜测下信安易的工作机制,捕捉到NotifyBpPowerOff 信号就开始结束手机系统,然后填写一个shell放到ezxlocal目录,然后修改bp程序,使S50apmd.sh文件指向ezxlocal里面的msafe.cn?连没有刷机都能进行启动是指向,并且比am还要先执行,个人认为真都很不安全。猜测,猜测而已。。