Kali Linux sur macOs Big Sur Apple Silicon - M1
Hello les amis, j'ai tellement galéré pour avoir quelque chose de correct, que j'ai décidé d'écrire ce post pour vous partager la manière la plus simple de disposer un environnement Kali Linux sur votre mac.
Dans ce post, je vais vous présenter la procédure que j'ai suivi pour installer un environnement Kali Linux sur mon Mac mini M1 (16Go Ram)
Contrainte : Architecture Arm64 avec puce Apple Silicon (M1)
NB: 2 options envisageables :
- Kali linux avec une machine virtuelle (Parallels Desktop Preview)
- Container Docker
Dans ce post, je vais vous indiquer les étapes principales à suivre pour installer un container Docker avec Kali Linux sur votre Apple M1.
Etape 1 - Installer Docker
Pour installer docker sur votre Apple M1, il est nécessaire de télécharger la version RC 3 (au 07/01/2021) qui permet de prendre en charge les puces Apple Silicon.
Récupérer docker RC3 ici :
https://desktop.docker.com/mac/stable/arm64/62632/Docker.dmg
Si vous êtes sur ce post, c'est qu'à priori, vous êtes suffisamment compétent pour savoir télécharger et installer des applications, je passerais donc TOUTES les étapes d'installation lorsqu'il n'y a pas de difficultés majeures relevés. Toutefois, si vous avez des questions (ou des remarques) vous pouvez laissez un commentaire (et puis si l'article vous plaît, vous pouvez aussi le dire 😀 ).
Après avoir récupérer docker :
- installer-le sur votre mac
- exécuter Docker Desktop
Etape 2 - Installer la bonne image Kali Linux
Une fois Docker installé et lancé, il nous faut à présent récupérer une image kali linux qui fonctionnera sur notre machine.
lancer Terminal via spotlight:cmd+espace
puis Terminal
Récupérez l'image KaliLinux/Kalilinux Rolling en tapant la commande suivant dans le terminal :docker pull kalilinux/kali-rolling
après avoir téléchargé l'image docker, il ne nous reste plus qu'à lancer notre container :
docker run -it --privileged --name Kali-blog kalilinux/kali-rolling /bin/bash
(lisez plus bas avant de choisir si vous souhaitez mettre votre container en mode --privileged)
Ici nous demandons de lancer un container en mode privileged que l'on nommera Kali-blog et qui utilise l'image kalilinux/kali-rolling que nous venons de télécharger en mode intéractif. Le dernier argument nous permet d'indiquer que nous souhaitons ouvrir un shell bash.
Le mode privileged permettra au container d'accéder aux ressources de la machine Host dès lors que nous aurons monté nos ressources via l'instruction mount
.
⚠ Attention ceci n'est pas sans risques : si votre container est exposé sur internet, alors votre machine Hôte est également exposée. Si vous n'avez pas besoin d'accéder aux ressources de l'hôte n'utilisez pas ce switch. De plus, en mode privileged, la vitesse de votre network dans votre container va subir une énorme baisse de débit.
A noter :docker run
n'est à utiliser qu'au tout premier lancement de votre container par la suite, si le container est en cours d'exécution et que vous souhaitez avoir plusieurs bash ouvert de votre container, vous devrez utiliser la commande exec
tel qu'ici :docker exec -it Kali-blog /bin/bash
Pour lancer un container, dans Docker Desktop, allez dans Containers/App puis cliquez sur l'icône de lecture ▶️.
Accédez à votre container en mode interactif :docker exec -it Kali-blog /bin/bash
Vous voici désormais avec un container Kali-Linux minimaliste. Nous devons désormais l'enrichir d'outils via les métapackages mis à disposition par Kali-Linux. (plus d'information ici)
Installons par exemple le Top 10 des outils Kali via les commandes :
apt update
apt install kali-tools-top10
Après plusieurs minutes vous disposerez des outils du Top 10 Kali :
Si vous le souhaitez vous pouvez ensuite ajouter tous les packages que vous sembleront utiles !
Petits packages supplémentaires
Afin de voir correctement les processus qui tournent dans notre container, récupérons htop. (plus d'information ici)
apt-get install htop
Dans nos différents challenges CTF (capture the flag) nous aurons également besoin de netcat, essentiel dans la toolbox des pentester, pour effectuer nos reverse-shell.
sudo apt-get install netcat-traditional
Nous pourrions être amenés à utiliser dig et nslookup durant nos investigations, installons les :
sudo apt install dnsutils
Pour nos reconnaissances nous pourrions également avoir besoin de gobuster, masscan, massdns et nikto:
sudo apt install gobuster
sudo apt install masscan
sudo apt install massdns
sudo apt install nikto
Il peut s'avérer utile également de disposer d'un simple client ftp :
sudo apt install ftp
Aussi pour identifier l'existence de vulnérabilités liés à nos découverts, nous pourrions être amené à utiliser searchsploit :
sudo apt update && sudo apt -y install exploitdb
Etape 3 - Postgres / Metasploit
Après avoir ajouter nos packages du top 10 et htop, voyons désormais si Metasploit fonctionne correctement.
Comme nous souhaiterons utiliser les fonctionnalités liées à la base de données, nous devons d'abord nous assurer que tout est ok pour assurer le bon fonctionnement de Metasploit avec cette base.
Executer : service postgresql start
vous obtenez ensuite ce retour :
Starting PostgreSQL 13 database server: main.
┌──(root💀3b17aad14809)-[/]
└─#
PostgreSQL est lancé, créons les bases et les rôles avec la commande msfdb reinit
:
┌──(root💀3b17aad14809)-[/]
└─# msfdb reinit
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[+] Starting database
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[+] Deleting configuration file /usr/share/metasploit-framework/config/database.yml
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[i] Database already stopped
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[+] Starting database
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema
┌──(root💀3b17aad14809)-[/]
└─#
Enfin lançons Metasploit avec la commande msfconsole
┌──(root💀3b17aad14809)-[/]
└─# msfconsole
___ ____
,-"" `. < HONK >
,' _ e )`-._ / ----
/ ,' `-._<.===-'
/ /
/ ;
_ / ;
(`._ _.-"" ""--..__,' |
<_ `-"" \
<`- :
(__ <__. ;
`-. '-.__. _.' /
\ `-.__,-' _,'
`._ , /__,-'
""._\__,'< <____
| | `----.`.
| | \ `.
; |___ \-``
\ --<
`.`.<
`-'
=[ metasploit v6.0.38-dev ]
+ -- --=[ 2114 exploits - 1138 auxiliary - 358 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 8 evasion ]
Metasploit tip: Use help <command> to learn more
about any command
msf6 >
Et vérifions si nous sommes bien connecté à la base de donnée :
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
C'est parfait ! Metasploit est désormais entièrement opérationnel !
Votre container est prêt à être utilisé ! Il ne vous reste plus qu'à ajouter les paquets qui vous intéresse pour pleinement en profiter !
Bonus
Il peut arriver que vous vous retrouviez avec des erreurs type "Permission Denied sur /dev/null" empêchant la base de donnée de fonctionner correctement, dans ce cas vous pouvez tenter les opérations suivantes :
$ apt-get remove --purge postgresql-13 postgresql-client-13 \
postgresql-client-common postgresql-common
$ rm -rf /etc/postgresql
$ rm -rf /var/lib/postgresql
$ apt remove postgresql
$ apt-get install metasploit-framework
$ chmod 666 /dev/null
Etape 4 - Partage de dossier entre l'Hôte et le container
Parfois vous souhaiterez partager un dossier de votre ordinateur hôte dans votre container. C'est ce que nous allons voir dès à présent.
La première chose à faire c'est de créer une nouvelle image de tout ce que nous venons d'installer.
- assurez vous que votre container soit arrêté
- Créons une image que nous appelerons kalilinux-ethical-custom à partir de notre container Kali-Blog en tapant la commande suivante :
docker commit Kali-blog kalilinux-ethical-custom
Une nouvelle image est désormais disponible remontons un container, cette fois-ci avec des dossiers qui seront commun entre notre mac mini Hôte et le container Kali Linux.
Je souhaite mettre à disposition mon dossier de téléchargement + mon dossier contenant mes outils de pentest à disposition du container
Nous allons utiliser la commande --mount
de docker de la manière suivante :
Et voilà, nous venons de recréer un container nommé Kali-ethical.
- le dossier hôte/Users/julienlange/Desktop/pentest est mappé dans le container à l'emplacement /home/shared/pentest
- le dossier hôte /Users/julienlange/Download est mappé à l'emplacement /home/shared/downloads
retournons dans le container et vérifions :
julienlange@Mac-mini-de-Julien ~ docker exec -it Kali-ethical /bin/bash ✔ 1224 22:54:07
┌──(root💀ee7a5175f812)-[/]
└─# cd /home/shared/downloads
┌──(root💀ee7a5175f812)-[/home/shared/downloads]
Le dossier est bien accessible depuis le container ! Vous pouvez maintenant échanger vos fichiers entre le container et l'host.👍🏻
Etape 5 - Permettre les connexions VPN et le montage de disque NFS
Nous savons tous à quel point les VPN sont pratiques et importantes. Voyons comment permettre tout cela avec docker.
Tout d'abord committons la dernière version de notre container dans l'image kalilinux-ethical-custom
docker commit Kali-ethical kalilinux-ethical-custom
assurez vous de supprimer votre container actuel avec la commande docker rm Kali-ethical
puis executer la commande suivante pour permettre les connexions vpn à l'intérieur même de votre container + permettre le montage de disque NFS (notamment).
docker run -it --name Kali-ethical --mount type=bind,source=/Users/julienlange/Desktop/pentest,target=/home/shared/pentest --mount type=bind,source=/Users/julienlange/downloads,target=/home/shared/downloads --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --device /dev/net/tun --sysctl net.ipv6.conf.all.disable_ipv6=0 kalilinux-ethical-custom /bin/zsh
Vous êtes prêt à accomplir vos prochains CTF sur TryHackMe, HackTheBox etc.
L'image docker
L'image docker Kali Linux pour Mac M1 est disponible gratuitement :
docker pull langju/kalilinux-mac-m1
Si vous avez aimé ce post, je vous invite à le partager sur les réseaux sociaux et même à laisser un commentaire ! Tous les commentaires sont lus !