Archive for the ‘CLI’ Category

BASH strings cheat sheet

Sunday, May 12th, 2013

Un autre cheat sheet pour continuer dans la foulée, cette fois ci, focus sur les manipulations de chaines de caractères en bash. Beaucoup de manipulations ci-dessous sont plus simple à réaliser à l’aide d’outils tiers (awk, sed, tr,wc…) mais ici, nous nous faisons du bash pur. L’intérêt est de gagner en performance ce qui peut être primordial pour certains projets.

Soit la chaine de caractères suivante:

var="bli-bla-blo"

${#var} = la longueur de la chaine (11)
${var:0:1} = le premier caractère (‘b’)
${var:4:6} = les caractères du 5eme à 7eme (‘bla’)
${var: -1} = le dernier caractère (‘o’)
${var%-*} = la plus grande sous-chaine jusqu’à un ‘-’ en partant de la gauche (‘bli-bla’)
${var%%-*} = la plus petite sous-chaine jusqu’à un ‘-’ en partant de la gauche (‘bli’)
${var#*-} = la plus grande sous-chaine jusqu’à un ‘-’ en partant de la droite (‘bla-blo’)
${var##*-} = la plus petite sous-chaine jusqu’à un ‘-’ en partant de la droite (‘blo’)

Voici un script qui reprend les notions décrites avec des exemples concrets:

String_Cheat_Sheet

 

Comment faire: Lancer une commande persistante après fin de session

Monday, February 18th, 2013

Lorsque vous lancez une une commande sur votre serveur linux, si la session est interrompue, la commande sera interrompue également. Heureusement, il existe une solution pour qu’une commande soit immunisée contre les déconnexions.

Par exemple, nous souhaitons scanner les adresses du subnet de notre FAI (ici 88.120.0.0/16) dont le port 3389 est ouvert. Nous utilisons nmap comme ceci:

nmap -v -PN -n -p3389 88.120.1-254.1-254 | grep open

Le problème avec la commande ci-dessus, est qu’on est obligé de garder la session ouverte au risque d’interrompre la commande avant la fin.

La solution à choisir est donc d’utiliser nohup :

nohup <ma_super_commande> &

le ‘&’ en fin de ligne permet de récupérer le prompt.

 

SSH : Connexion à l’aide d’une paire de clés

Wednesday, February 13th, 2013

L’utilisation de clés RSA plutot qu’un mot de passe est préférable pour plusieurs raison. On peut désactiver l’authentification par mot de passe ou on peut utiliser la clé en plus du mot de passe pour plus de sécurité. mais surtout, c’est indispensable pour les comptes de service.

Générer la pair de clé
Nous devons commencer par générer une pair de clé sur le “client”.

ssh-keygen

Par défaut, cette commande génère une paire de clé RSA de 2048 bit. Deux fichier sont créé dans ~/.ssh/ :
ls ~/.ssh/
id_rsa
id_rsa.pub

id_rsa est la clé privé : Elle doit resté confidentielle.
id_rsa.pub est la clé publique : C’est celle-ci qui doit être ajouté dans la liste des client autorisé sur le serveur afin que la connexion SSH avec agent fonctionne.

Copier la clé publique sur le serveur

Le plus simple est de copier la clé publique… par ssh

Si le serveur n’a pas encore de fichier authorized_keys, vous pouvez taper la commande suivante sur le Client:

scp ~/.ssh/id_rsa.pub <IP_du_serveur>:.ssh/authorized_keys

Si le serveur à déja un fichier authorized_keys, nous allons ajouter la clé publique à la fine du fichier authorized_keys déja sur le serveur. Tapez la commande suivante sur le Client:

scp ~/.ssh/id_rsa.pub <IP_du_serveur>:.ssh/myClientNewKey

Puis sur le serveur:

cat ~/.ssh/myClientNewKey >> ~/.ssh/authorized_keys

Et voila!! Vous pouvez désormais vous connecter à l’aide de votre clé RSA.

 

Katana toolkit : pentest, network analysis, forensic…

Tuesday, February 5th, 2013

Voici un projet formidable qui regroupe la plupart des outils de sécurité informatique.
katana bootable embarque backtrack, caine, ophcrack, clonezilla…
katana toolkit (linux et windows) regroupe tout un pannel d’outils sécurité:
chiffrement, anti-virus, destruction de données, sauvegarde, analyse de fichiers…
Bref, une trousse à outils qui vous servira tot ou tard:

 

Comment faire : déterminer depuis combien de temps tourne un process

Wednesday, January 16th, 2013

Lorsque nous faisons un ‘ps aux’, la neuvieme colonne nous renseigne sur le moment ou le process a démarré.
Si le process a démarré dans la journée, vous aurez l’heure et la minute. Par contre, si le process a démarré depuis plus de 24H, alors vous aurez seulement le jour et le mois.

Il peut être utile de savoir l’heure exacte du démarrage de ce process (pour une analyse de log par exemple).

Tout d’abord, il nous faut le PID du process, prenons pour exemple le daemon sshd :

ps aux | grep sshd

Voici le résultat :

root 767 0.0 0.2 5516 320 ? Ss Jan03 0:04 /usr/sbin/sshd

On pourrait croire que la 10e colonne indique l’heure de démarrage mais c’est en fait le temps de CPU consommé depuis le démarrage du process.

Le PID de notre sshd est donc 767. Nous savons aussi que le process tourne depuis le 3 Janvier.

Pour chaque process, un fichier (nommé avec le PID du process) est créé dans le répertoire /proc.
Il suffit donc de faire :
ls -ld /proc/767

et voici le résultat:

dr-xr-xr-x 7 root root 0 Jan 13 06:26 /proc/767

Ainsi, nous savons que le fichier /proc/767 et le process sshd ont été créés à 6h26 le 13 janvier

Comment faire : afficher les crontabs de tous les utilisateurs

Monday, January 14th, 2013

Voici un petit ‘one-liner’ qui peut servir. Pour afficher tous les crontabs pour tous les utilisateurs, il faut évidement avoir les droits root. Voici la commande à taper:

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

Et c’est tout !

scapy : packet crafting et bien plus encore!

Saturday, January 12th, 2013

Scapy est un outils interactif qui permet d’effectuer plusieurs taches d’analyse réseaux. C’est un shell interactif capable d’interpréter les commandes python. Cet outil peut paraitre compliqué de prime abord, mais il offre beaucoup d’avantages. Scapy peut remplacer la plupart des outils de diagnostique réseau ( hping, arpspoof, arp-sk, arping, tcpdump, tshark, p0f et partiellement nmap). De plus, il permet d’obtenir des informations (more…)

Comment faire : trouver tous les fichiers qui contiennent un pattern

Friday, January 11th, 2013

Voici une comande qui retourne la liste de tous les fichiers qui contiennent un mot ou un bout de phrase :

find /chemin/a/scanner -type f -exec grep -l "text to look for" {} \;

Par exemple si nous cherchons tous les fichiers qui contiennent ERROR ou error dans /var/log/apache2, (more…)