Fondamentaux offensifs

Linux pour le hacker

Linux est le terrain de jeu du pentester : distributions offensives, shells omniprésents et machines cibles fonctionnent dessus. Cette fiche condensée réunit les gestes indispensables — naviguer, gérer les permissions, comprendre les privilèges, sonder le réseau, chercher vite et scripter. Chaque commande tient dans un bloc à copier, expliquée en une phrase.

ShellPermissionsPrivilègesRéseaufind / grepBash

🔐 Permissions (chmod / chown / SUID)

Comprendre et modifier les droits UNIX est central : c'est là que se cachent bien des chemins d'escalade.

ls -l fichier

Lit les permissions rwx du propriétaire, du groupe et des autres.

chmod 750 script.sh

Restreint l'exécution au propriétaire et aux membres du groupe.

chmod +x maintenance.sh

Rend un script exécutable pour pouvoir le lancer directement.

chmod u+s binaire

Positionne le bit SUID : le binaire s'exécute avec les droits de son propriétaire.

chown root:secops /srv/outils

Assigne la propriété d'un dossier à un utilisateur et un groupe.

umask 027

Définit les permissions retirées par défaut aux nouveaux fichiers.

getfacl fichier

Affiche les ACL étendues au-delà des droits UNIX classiques.

find / -perm -4000 -type f 2>/dev/null

Recherche les binaires SUID, piste classique d'élévation de privilèges.

👥 Utilisateurs & privilèges

Savoir qui vous êtes, ce que vous pouvez faire et par où grimper vers root.

whoami

Vérifie l'utilisateur effectif avant d'agir.

id

Affiche UID, GID et groupes pour comprendre vos droits.

sudo -l

Liste les commandes autorisées en sudo, souvent une voie d'escalade.

sudo <commande>

Exécute une commande avec les privilèges root après authentification.

su - analyste

Ouvre une session sous un autre compte utilisateur.

sudo useradd analyste

Crée un nouveau compte sur le système.

passwd analyste

Initialise ou change le mot de passe d'un compte.

cat /etc/passwd

Énumère les comptes locaux et leurs shells de connexion.

groups analyste

Affiche les groupes d'un utilisateur pour cerner ses accès.

🌐 Réseau (ip, ss, netcat)

Cartographier les interfaces, repérer les ports ouverts et manipuler des connexions brutes.

ip a

Liste toutes les interfaces et leurs adresses IP.

ip route

Affiche la table de routage et la passerelle par défaut.

ss -tulpn

Montre les ports en écoute et les processus associés.

ss -tan state established

Liste les connexions TCP actives en cours.

nc -lvnp 4444

Ouvre un listener netcat en attente d'une connexion entrante.

nc -vz 10.0.0.5 22

Teste rapidement si un port distant est ouvert.

curl -s ifconfig.me

Récupère l'adresse IP publique vue depuis l'extérieur.

scp rapport.txt user@10.0.0.5:/srv/

Transfère un fichier chiffré vers un serveur distant.

ssh user@10.0.0.5

Ouvre une session distante chiffrée sur un hôte.

🔎 Recherche (find / grep)

Trouver un fichier, filtrer une chaîne, isoler l'information utile dans le bruit.

find /var/log -name "*.log"

Repère tous les journaux d'un répertoire par motif de nom.

find / -writable -type d 2>/dev/null

Liste les dossiers modifiables, utiles pour déposer un payload.

find . -mtime -1

Trouve les fichiers modifiés dans les dernières 24 heures.

grep -Ri "password" /etc 2>/dev/null

Cherche récursivement des secrets en clair dans la configuration.

grep -n "error" app.log

Affiche les lignes contenant « error » avec leur numéro.

grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" fichier

Extrait toutes les adresses IPv4 d'un fichier via une regex.

locate sshd_config

Retrouve instantanément un fichier via l'index système.

which python3

Indique le chemin de l'exécutable trouvé dans le PATH.

⚙️ Processus & services

Observer ce qui tourne, piloter les services systemd et couper un processus au besoin.

ps aux | head

Affiche un aperçu des processus actifs classés par utilisateur.

ps -ef | grep ssh

Filtre les processus liés à un service précis.

top

Surveille en direct la charge CPU, mémoire et tâches.

systemctl status ssh

Contrôle l'état du service SSH et son dernier journal.

systemctl restart nginx

Redémarre un service après modification de configuration.

systemctl list-units --type=service

Énumère les services chargés pour repérer l'inhabituel.

kill -9 1234

Termine un processus récalcitrant par son PID.

nohup ./tache.sh &

Lance une tâche en arrière-plan qui survit à la fermeture du shell.

🧩 Scripting bash de base

Automatiser une routine et enchaîner des commandes : la brique de tout outillage maison.

nano maintenance.sh

Édite rapidement un script shell léger.

#!/bin/bash

Shebang à placer en première ligne pour désigner l'interpréteur.

for ip in $(cat ips.txt); do ping -c1 $ip; done

Boucle sur une liste d'hôtes pour un test de disponibilité.

if [ -f fichier ]; then echo "présent"; fi

Teste l'existence d'un fichier avant d'agir.

./maintenance.sh

Lance le script courant une fois rendu exécutable.

crontab -e

Planifie une tâche récurrente pour automatiser vos routines.

alias ll='ls -lah'

Crée un raccourci de commande pour la session courante.

watch -n5 'ss -tulpn'

Réexécute une commande toutes les cinq secondes pour un suivi.

🧾 Journaux & traces

Lire les logs, quantifier l'activité et suivre les événements en temps réel.

journalctl -u ssh --since "15 min ago"

Consulte les logs récents d'un service ciblé.

tail -f /var/log/syslog

Suit en direct les journaux système pour réagir vite.

grep "Failed password" /var/log/auth.log

Repère les tentatives de connexion SSH échouées.

wc -l /var/log/auth.log

Compte les lignes d'un log pour estimer l'activité.

awk -F: '{print $1, $3}' /etc/passwd

Affiche les couples utilisateur/UID en une ligne d'awk.

sort ips.txt | uniq -c | sort -nr | head -5

Compresse les doublons et sort les cinq IP les plus fréquentes.

last -n 10

Liste les dernières connexions au système.

history | tail -20

Rappelle les vingt dernières commandes pour documenter.