Article original : Linux for Hackers – Basics for Cybersecurity Beginners
Il est temps d'apprendre à utiliser le système d'exploitation du hacker moyen 🐧.
Dans cet article, nous allons faire un petit tour d'horizon de :
- Le système d'exploitation Linux
- La gestion des paquets
- La structure des fichiers Linux
- L'interface en ligne de commande (CLI)
Et vous apprendrez également comment mettre à jour votre distro Linux. On y va ? 🙃
Qu'est-ce que Linux ?
Hacker Penguins | Crédit : Wallpaperflare.com
Le kernel (noyau) Linux a été créé par Linus Torvalds en 1991. Ce qui en fait un système d'exploitation, ce sont les ajouts au noyau tels qu'un gestionnaire de paquets, un environnement de bureau, un shell et un bootloader, entre autres composants.
Parce que Linux est open-source, de nombreuses personnalisations ont été apportées au système d'exploitation. Chaque combinaison spécifique de personnalisations est appelée une distribution ou distro en abrégé.
Il existe des centaines, voire des milliers de distros dans le monde. Chacune d'entre elles a été optimisée pour un but spécifique, ou simplement pour le plaisir par des gens comme vous et moi.
Certaines distros célèbres sont :
- Ubuntu (La plus courante)
- Elementary OS (L'une des plus belles)
- Debian (Propre et classique)
- Arch Linux (Pour les boss de Linux)
- Red Hat Enterprise Linux (Commerciale et coûteuse 💰)
Quel est le rapport entre Linux et le hacking ?
Un masque de Guy Fawkes sur un clavier | Crédit : Wallpaperflare.com
Linux est le système d'exploitation de choix de nombreux hackers. Pourquoi, me demanderez-vous ? Parce qu'il est open-source, moins sujet aux malwares, léger, portable et très compatible avec de multiples outils de hacking.
Windows est un système quelque peu fermé, il y a donc beaucoup de choses qu'il ne permet pas à un hacker de faire. Mac OS n'est pas non plus idéal en raison de ses nombreux logiciels propriétaires. Linux propose de nombreuses distros et la plupart peuvent être modifiées au gré de l'utilisateur sans aucune restriction.
Un certain nombre de distros couramment utilisées par les hackers sont Kali Linux, Parrot, BlackArch et Archstrike. Mais ne vous arrêtez pas là, les options sont illimitées.
Comme je l'ai mentionné plus tôt, Linux est également hautement personnalisable. Un excellent exemple de cette fonctionnalité est l'environnement de bureau, qui est un nom sophistiqué pour désigner l'apparence du bureau.
Sous Windows, il y a la barre des tâches de base, le menu démarrer et un arrière-plan avec des icônes. C'est bien de pouvoir faire de légères modifications, et le ressenti change avec chaque nouvelle version de Windows, surtout avec Windows 11. Mais les efforts de Microsoft font pâle figure face aux progrès massifs de la communauté Linux en ce qui concerne l'apparence et la convivialité d'un bureau.
Les environnements de bureau courants incluent :
- Gnome (Le meilleur 😎)
- KDE Plasma (Un sosie de Windows)
- Xfce (Pour les geeks)
- Mate (Économe en ressources matérielles)
Si vous aimez la programmation, vous pourriez vous baser sur un environnement de bureau actuel publié sous licence GNU ou développer votre propre environnement de bureau pour répondre à vos besoins.
Conseil : Si vous êtes complètement nouveau sur Linux, vous devriez peut-être attendre un peu avant de remplacer votre système d'exploitation par défaut. De nombreux utilisateurs ont l'habitude d'une GUI (Interface Graphique) pour effectuer leurs activités. Mais les utilisateurs de Linux ont tendance à utiliser davantage la CLI (Interface en Ligne de Commande). C'est simplement parce que Linux s'adresse aux développeurs et aux scientifiques, et non à l'utilisateur moyen.
Je suggère personnellement d'installer une distro Linux sur un hyperviseur tel que VirtualBox, et de vous entraîner à vous y habituer. (Je ne suggère pas VMware car il présente une vulnérabilité connue au moment de la rédaction). Si vous ne savez pas comment installer Linux, vous pouvez l'apprendre ici.
Gestion des paquets Linux
Paquets colorés | Crédit : Wallpaperflare.com
Linux est assez différent des autres systèmes d'exploitation, ce qui signifie que l'installation d'applications l'est aussi. Version courte ? Vous allez télécharger des applications depuis le magasin d'applications de la distro via la CLI (terminal). Passons maintenant à la version longue.
Les installateurs .exe et .msi (que vous utilisez pour installer des applications sous Windows) ne fonctionnent pas très bien sous Linux. Les gestionnaires d'une distro disposent donc de serveurs qui hébergent de multiples applications optimisées pour cette distro particulière.
Avec quelques commandes de votre part dans le terminal, et l'aide d'un gestionnaire de paquets, votre ordinateur se connecte au serveur, télécharge les applications et les installe. Vous pouvez également obtenir les mises à jour du système de cette manière.
Un gestionnaire de paquets est un logiciel utilisé pour gérer les logiciels téléchargés et installés. Vous avez peut-être entendu parler d'au moins un des gestionnaires de paquets suivants :
- Apt (Linux)
- Chocolatey (Windows)
- MacPorts (MacOS)
- Pip (Python)
- Npm (Javascript)
- Gradle (Java)
- Composer (PHP)
Certains installateurs .exe et .msi peuvent fonctionner sur des ordinateurs Linux, mais avec un bémol. Un logiciel appelé Wine ajoute une couche de compatibilité Windows à la distro pour l'optimiser pour les applications Windows. Malheureusement, cela ne fonctionne pas pour toutes les applications.
Une autre alternative est d'installer Steam, ou mieux encore, SteamOS si vous êtes un joueur avec un penchant pour Linux 🎮.
Structure des fichiers Linux
Dossiers | Crédit : Wallpaperflare.com
Le système d'exploitation Linux possède une arborescence de répertoires tout comme Windows. Tout en haut (ou en bas, selon votre perspective), nous avons le dossier « / ». Ce serait comme votre lecteur C: sous Windows. Il abrite tous vos répertoires, fichiers et applications. En dessous se trouvent d'autres dossiers qui sont résumés dans l'image ci-dessous :
La structure des fichiers Linux | Crédit : Hackers-arise.com
Quelques répertoires importants à noter :
- /bin : programmes binaires ou exécutables (un bon endroit pour conserver des scripts persistants)
- /etc : fichiers de configuration du système (un endroit idéal pour obtenir des identifiants)
- /home : répertoire personnel (le répertoire actuel par défaut lorsque vous ouvrez le terminal)
- /opt : logiciels optionnels ou tiers
- /tmp : espace temporaire, généralement vidé au redémarrage (un excellent endroit pour stocker des scripts d'énumération)
- /usr : programmes liés à l'utilisateur
- /var : fichiers de journaux (l'endroit parfait pour frustrer un analyste forensique)
Il y a beaucoup plus à dire sur la structure des fichiers Linux et cela mériterait probablement son propre article, mais cela suffira pour l'instant.
Maintenant, passons à une expérience beaucoup plus pratique dans le terminal et exécutons quelques commandes de base que tout hacker devrait connaître.
Introduction au Shell Linux
Unix et ses divers dérivés | Crédit : Wallpaperflare.com
Un shell est une interface textuelle permettant de contrôler un ordinateur Linux. Semblable au Powershell ou au cmd de Microsoft, c'est l'interface entre l'utilisateur et le noyau, en dehors de la GUI (Interface Graphique).
Il existe différents types de shells, chacun ayant été amélioré par rapport aux précédents ou optimisé pour un objectif particulier.
Les shells sont beaucoup utilisés par les hackers car ils constituent le moyen le plus rapide et le plus efficace de transmettre des instructions à un ordinateur. La GUI est correcte, mais peut être assez limitée car certaines fonctionnalités ne sont pas accessibles graphiquement, ou l'outil que vous voulez utiliser n'a tout simplement pas d'interface graphique.
Certains shells courants incluent :
- Le Bourne shell (sh)
- Le GNU-Bourne Again shell (bash)
- Le Z shell (zsh)
- Le C shell (csh)
- Le Korn shell (ksh)
Petite leçon : Les mots « terminal » et « shell » sont utilisés de manière interchangeable dans le monde de la cybersécurité et tout au long de cet article. Pourtant, ils sont différents. Le terminal est le programme qui vous permet d'accéder au shell via une interface graphique.
Commandes de base du Shell Linux
Dans cet article, nous allons passer en revue les commandes suivantes : whoami, pwd, ls, cd, touch, cat, nano, operators, mv and cp, mkdir, rm and rmdir, stat, echo, grep, le drapeau « help » et les pages man.
Vous aurez besoin de la distro Linux de votre choix, bien que je suggère Kali. Si vous ne savez pas comment en installer une, vous pouvez lire cet article.
Ouvrez l'application appelée « Terminal » et commençons. On continue ? 🙃
Comment utiliser la commande whoami
Vous utilisez cette commande pour vérifier quel utilisateur vous êtes. Sur un ordinateur personnel, vous n'avez probablement que deux comptes : celui créé lors de l'installation de l'OS et root. Si vous êtes dans le terminal en tant qu'utilisateur normal (compte), vous pouvez l'essayer.
whoami
whoami | Crédit : Mercury
Si vous voulez être root, exécutez la commande sudo su et entrez votre mot de passe. Essayez whoami et le terminal vous répondra root :
whoami en tant que root | Crédit : Mercury
Les ordinateurs d'entreprise ont tendance à avoir de nombreux utilisateurs sur une seule machine. Comme je l'ai indiqué dans un article précédent, chacun possède diverses permissions, certaines plus étendues que d'autres. Lorsque vous obtenez un accès initial après l'exploitation, vous commencez généralement avec un compte standard. Si vous voulez vérifier le nom du compte compromis, utilisez cette commande.
Comment utiliser la commande pwd
La commande Present Working Directory (pwd) vous informe de l'endroit où vous vous trouvez actuellement dans l'arborescence des répertoires. Par défaut, il s'agit généralement du répertoire personnel.
pwd
Répertoire de travail actuel | Crédit : Mercury
Si vous êtes débutant, il est tout à fait normal de se perdre dans l'arborescence et de perdre soudainement le fil de l'endroit où vous êtes. Cette commande vous aide à garder une trace des choses.
Selon votre distro, vous pouvez voir un symbole ~ lorsque vous ouvrez le terminal. C'est le symbole du répertoire personnel par défaut de l'utilisateur. C'est comme le dossier C:\Users\<default_user> sous Windows, contenant tous les fichiers spécifiques à l'utilisateur. Sous Linux, il sera au format ci-dessus /home/<default_user>.
Comment utiliser la commande ls
Vous utilisez la commande ls pour lister le contenu d'un répertoire. Elle vous permet de savoir quels fichiers se trouvent à l'intérieur d'un répertoire sans GUI.
Lorsqu'elle est utilisée avec des drapeaux (flags), c'est un véritable couteau suisse, offrant diverses manières d'afficher le contenu du répertoire.
Les drapeaux courants que vous pourriez vouloir noter sont -l (liste détaillée), -a (tous, c'est-à-dire afficher les fichiers cachés) et -c (afficher les modifications récentes).
Liste | Crédit : Mercury
Les drapeaux sont des fonctionnalités des applications/outils qui vous permettent de leur dire quoi faire. Regardons le drapeau -l pour ls à titre d'exemple. La liste détaillée est une fonctionnalité qui peut être activée en utilisant la commande ls -l.
Liste détaillée | Crédit : Mercury
Comme vous pouvez le voir, l'exécution de ls avec le drapeau diffère du simple ls. J'expliquerai les détails supplémentaires dans un autre article, ou vous pouvez faire vos propres recherches pour savoir ce qu'ils signifient.
Comment utiliser la commande cd
Vous utilisez la commande Change Directory (cd) pour naviguer dans l'arborescence des répertoires.
cd <directory>
Changement de répertoire | Crédit : Mercury
Si vous exécutez la commande ls -a, vous remarquerez qu'il y a deux fichiers qui sont toujours là, quel que soit le dossier : . et .. . Le fichier . représente le répertoire actuel et le fichier .. représente le répertoire parent (le répertoire situé au-dessus du répertoire actuel).
Comment utiliser les commandes cat, more et less
Toutes les commandes ci-dessus sont des commandes de sortie. Vous les utilisez pour afficher le contenu des fichiers dans le terminal.
Mais il y a des différences notables. cat est couramment utilisé pour les fichiers contenant de petites quantités de texte. less et more sont plus susceptibles d'être utilisés pour des fichiers contenant de grandes quantités de texte, et la sortie peut être contrôlée avec les touches fléchées.
cat <file_name>
more <file_name>
less <file_name>
cat vs more vs less | Crédit : Mercury
Vous remarquerez que cat imprime la sortie directement dans votre terminal, tandis que more et less vous permettent d'utiliser les touches fléchées. Les commandes de sortie sont utilisées pour recueillir des informations et des identifiants à partir de systèmes compromis.
Comment utiliser la commande touch
Vous utilisez la commande touch pour créer des fichiers. Vous pouvez écrire dans ces fichiers de plusieurs manières, par exemple en utilisant un éditeur de texte ou en y redirigeant une entrée (nous y reviendrons plus tard).
Vous pouvez créer un fichier en utilisant la syntaxe suivante :
touch <file_name>
Vous pouvez ensuite utiliser la commande ls pour vérifier si votre fichier a bien été créé.
Création d'un fichier | Crédit : Mercury
Comment utiliser la commande nano
Nano est un éditeur de texte intégré populaire sous Linux. Il est très courant car il est facile à utiliser et supporté dans de nombreux environnements CLI. D'autres éditeurs de texte courants sont Vim (très agaçant 😫) et gedit (aussi simple que Notepad 🙃).
Vous pouvez éditer un fichier avec la commande suivante :
nano <file_name>
L'interface nano | Crédit : Mercury
Certaines commandes sous l'interface Nano peuvent vous aider. « ^ » signifie simplement le bouton Ctrl et le bouton « M » est Alt. « ^S » (ou dans ce cas Ctrl + S) est utilisé pour enregistrer le fichier après y avoir écrit. La commande nano est utilisée par les hackers pour modifier des informations dans les fichiers, éditer des logs ou, si vous êtes un hacker red hat, supprimer des lignes essentielles de fichiers de configuration.
Opérateurs de chaînage de commandes
Le « chaînage » de commandes est le concept consistant à écrire plusieurs commandes ensemble et à les exécuter de diverses manières. Vous le faites généralement à l'aide de caractères spéciaux. Les exemples incluent :
- Esperluette (&) : Pour exécuter un programme en arrière-plan
- ET logique (&&) : La commande suivante ne s'exécutera que si la précédente a réussi
- Tube (|) : La sortie de la commande précédente sert d'entrée à la commande suivante
- Écraser (>) : Écrase le contenu d'un fichier avec la sortie de la commande précédente
- Ajouter (>>) : Ajoute la sortie de la commande précédente à la fin d'un fichier
Si vous ne comprenez pas comment tout cela fonctionne, ne vous inquiétez pas. Ils sont généralement exécutés avec d'autres commandes que je mentionnerai plus tard dans l'article.
Comment utiliser les commandes mv et cp
Ce sont deux commandes assez similaires mais qui présentent des différences notables. Vous utilisez mv pour déplacer un fichier vers un autre emplacement. Vous utilisez cp pour copier un fichier vers un autre emplacement.
mv <file_name>
cp <file_name>
Exemples de cp et mv | Crédit : Mercury
Il n'existe pas de commande spécifique pour renommer des fichiers sous Linux, la plupart des gens utilisent donc la commande mv avec cette syntaxe :
mv <original_file_name> <new_file_name>
Essayez par vous-même pour vous faire la main.
Comment utiliser la commande mkdir
La commande mkdir crée des répertoires. Vous pourriez l'utiliser pour créer un répertoire personnalisé auquel vous seul pouvez accéder sur un système compromis afin d'y conserver des scripts ou des outils pour la persistance.
mkdir <directory>
Création d'un nouveau répertoire | Crédit : Mercury
Comment utiliser les commandes rm et rmdir
Vous pourriez être capable de deviner celle-ci par vous-même. rm est la commande pour supprimer des fichiers, et rmdir est la commande pour supprimer des répertoires.
rm <file_name>
rmdir <directory>
rm, rmdir et rmdir avec le drapeau ignore-fail-on-non-empty | Crédit : Mercury
Linux n'est pas très enclin à supprimer des dossiers s'ils ne sont pas vides. Pour remédier à cela, utilisez le drapeau ignore-fail-if-non-empty pour supprimer à la fois les fichiers et les répertoires.
Notez que vous devrez être extrêmement prudent avec ces commandes car elles n'envoient pas les fichiers ou répertoires supprimés à la Corbeille. Ils disparaissent, tout simplement.
Comment utiliser la commande stat
Vous utilisez la commande stat pour obtenir des informations sur un fichier.
stat <file_name>
stat | Crédit : Mercury
Vous pouvez recueillir des informations sur le nom du fichier et son extension, les permissions, la date de création, de modification, de dernier accès et bien plus encore.
C'est le moment idéal pour en apprendre davantage sur les permissions. Si vous exécutez les commandes ls -la ou stat, vous verrez peut-être quelque chose comme ceci : drwxrwxrwx. Décortiquons cela.
Les permissions démystifiées | Crédit : unix.stackexchange.com
La permission de lecture (r) vous permet de voir le contenu d'un fichier, la permission d'écriture (w) vous permet de modifier le fichier, et la permission d'exécution (x) vous permet de l'exécuter en tant que processus s'il s'agit d'un script ou d'un exécutable.
Il existe 3 classes d'utilisateurs pouvant accéder à un fichier : un utilisateur (user), un groupe (group) et les autres (others). Le compte root est une autre classe mais il est exempté ici.
Chaque ensemble « rwx » appartient à une classe de permission. Si l'espace affiche une lettre, l'ensemble possède cette permission. S'il y a un tiret, il n'a pas la permission.
Qu'en est-il du « d » au début ? Il indique s'il s'agit d'un répertoire (directory) ou d'un fichier. Le « d » signifie que c'est un répertoire, et s'il s'agit d'un tiret (-), c'est un fichier. Techniquement, un répertoire est un type spécial de fichier. Mais c'est une autre histoire.
Comment utiliser la commande echo
Vous utilisez la commande echo pour afficher une entrée. Prenons un exemple pour clarifier les choses.
echo "<text>"

Comme vous pouvez le voir, vous pouvez utiliser echo avec l'opérateur > pour écrire du texte dans des fichiers.
Comment utiliser la commande grep
Montons d'un cran. Vous utilisez la commande grep pour extraire un texte spécifié d'un fichier en utilisant l'opérateur tube (pipe).
grep "<text>"
grep | Crédit : Mercury
La commande ci-dessus n'est pas aussi compliquée qu'elle en a l'air. Nous disons à l'ordinateur d'afficher le contenu d'un fichier et, à l'aide de l'opérateur tube, nous disons à la commande grep de l'utiliser comme entrée. C'est ce qu'on appelle rediriger (piping) une commande vers une autre, et cela peut être fait plusieurs fois. Le texte trouvé est affiché en rouge.
grep est couramment utilisé pour rechercher certains textes dans des fichiers volumineux. Un exemple pratique serait de chercher les identifiants d'un utilisateur spécifique dans un fichier contenant beaucoup de texte. Vous pourriez utiliser grep pour chercher des mots comme « password », « login » et d'autres mots-clés que vous pensez trouver autour des identifiants que vous recherchez.
Comment utiliser le drapeau « help » et les pages man
Les derniers sur notre liste sont « help » et man. Le drapeau « help » n'est pas nécessairement une commande mais c'est une aide précieuse si vous êtes confus au sujet d'une application ou d'un outil. Utilisez simplement ce qui suit :
<app or tool> --help
Cela vous donnera des informations rapides et concises à son sujet. man, quant à lui, vous donne toutes les informations documentées sur l'application.
man <app>
help vs man | Crédit : Mercury
Vous remarquerez peut-être que dans le gif, j'ai utilisé -h. C'est parce que c'est la forme courte du drapeau. Certains drapeaux ont des formes courtes. S'il commence par un seul tiret, c'est la forme courte. S'il commence par deux tirets, c'est la forme longue.
Comment mettre à jour votre Linux
Toute cette section peut en fait être réalisée avec une seule commande, mais décomposons-la pour bien comprendre l'ensemble. La tâche : mettre à jour votre système d'exploitation. Pour atteindre cet objectif, vous devez faire deux choses.
- Mettre à jour les informations du dépôt local : Considérez cela comme une vérification des mises à jour avant de les télécharger et de les installer réellement.
- Mettre à niveau le système : Comme son nom l'indique, nous téléchargeons les mises à jour, puis nous les installons.
La première commande à exécuter est :
sudo apt update
- sudo : Pour indiquer que nous exécutons la commande avec des privilèges élevés
- apt : Le gestionnaire de paquets
- update : Pour dire à l'ordinateur de mettre à jour ses informations locales sur le dépôt
Après avoir tapé cette commande, vous saisissez votre mot de passe, et voilà. Comme vous l'observerez, votre ordinateur téléchargera des informations depuis les dépôts sur les paquets (applications) à mettre à jour.
J'ai déjà mis à jour le mien, donc il ressemble à celui ci-dessous. Mais si c'est votre première fois, cela devrait prendre quelques minutes.
sudo apt update | Crédit : Mercury
Une fois que c'est terminé, vous pouvez exécuter la commande suivante pour télécharger et installer les mises à jour :
sudo apt full-upgrade
sudo apt full-upgrade | Crédit : Mercury
Note : Vous pouvez interrompre le processus de téléchargement des paquets, mais jamais le processus d'installation. Cela pourrait casser votre système d'exploitation et le rendre inutilisable.
Pendant la mise à niveau, vous remarquerez peut-être quelques irrégularités, comme celle ci-dessous :
Mise à niveau brouillée | Crédit : Mercury
Ne vous inquiétez pas, votre ordinateur ne va pas vous exploser au visage ou quoi que ce soit 😂. C'est juste un bug. Une fois les mises à niveau installées, vous devrez redémarrer votre ordinateur. Cela permettra à votre machine d'implémenter pleinement toutes les mises à jour.
Mon bureau personnalisé | Crédit : Mercury
Félicitations 🎉. Vous avez mis à jour votre système avec succès. Vous vous souvenez quand j'ai dit que tout cela pouvait être fait avec une seule commande ? La voici. 👀
sudo apt update && sudo apt upgrade -y && reboot
Détendez-vous, ce n'est pas aussi compliqué qu'il n'y paraît. Regardez le code morceau par morceau. Les seuls éléments inconnus sont les symboles &&.
Comme je l'ai mentionné plus tôt, ce sont des opérateurs ET logiques. Cela dit simplement à l'ordinateur d'exécuter la première commande, de la terminer, puis d'exécuter la suivante. Le drapeau -y dit à l'ordinateur d'effectuer la mise à niveau sans intervention de l'utilisateur.
Ainsi, la commande ci-dessus dit à l'ordinateur de d'abord mettre à jour, puis de mettre à niveau, et enfin, de redémarrer. Simple comme bonjour, non ? 😎
Conclusion
Tux le Parrain ¦ Crédit : Wallpaperflare.com
Faisons un récapitulatif rapide de ce que vous avez fait :
- Nous avons fait un tour d'horizon de l'OS Linux
- Nous avons appris la gestion des paquets sous Linux
- Nous avons passé en revue la structure des fichiers Linux
- Et nous avons exécuté quelques commandes sur l'interface en ligne de commande
Et sur cette note, nous sommes arrivés à la fin de cet article. J'espère qu'il vous a plu. Et comme je le dis toujours, bon hacking ! 🙃
Ressources Linux
- Vous pouvez en savoir plus sur le chaînage des commandes ici
- Voici une excellente vidéo sur la gestion des paquets.
- Et voici une introduction rapide à la structure des fichiers Linux.
Remerciements
Merci à Anuoluwapo Victor, Chinaza Nwukwa, Holumidey Mercy, Favour Ojo, Georgina Awani, et ma famille pour l'inspiration, le soutien et les connaissances utilisés pour rédiger cet article. Vous êtes géniaux.