Catégorie : Ligne de commande

22 juin 2015 /

Pour empêcher n’importe quel fichier/dossier d’être modifié, supprimé ou même renommé, et ce, par par n’importe quel utilisateur, root compris, la commande chattr (change attribut) est parfaite:

L’option  » i  » (immuable) nous permet cela:

“+i” pour activer la protection
“-i” pour désactiver la protection .

Pour protéger un fichier/dossier:

chattr +i fichier
chattr +i dossier

Retirer la protection sur un fichier/dossier:

chattr -i fichier
chattr -i dossier

21 juin 2015 /

La fork bomb est une forme d’attaque par déni de service contre un système en utilisant la fonction fork. Elle se base sur la supposition que le nombre de programmes et de processus pouvant être exécutés simultanément sur un ordinateur est limité.

Une fork bomb fonctionne en créant un grand nombre de processus très rapidement afin de saturer l’espace disponible dans la liste des processus gardée par le système d’exploitation. Si la table des processus se met à saturer, aucun nouveau programme ne peut démarrer tant qu’aucun autre ne termine. Même si cela arrive, il est peu probable qu’un programme utile démarre étant donné que les instances de la bombe attendent chacune d’occuper cet emplacement libre.

Non seulement les fork bombs utilisent de la place dans la table des processus, mais elles utilisent chacune du temps processeur et de la mémoire. En conséquence, le système et les programmes tournant à ce moment-là ralentissent et deviennent même impossibles à utiliser.

En Bash:

:(){ :|:& };:

Explications:

:() définit une fonction nommée : .
Puis { :|:& } est le corps de la fonction. Dans celui-ci, la fonction s’appelle elle-même (:), puis redirige la sortie à l’aide d’un pipe (|) sur l’entrée de la même fonction : et cache le processus en fond avec &. La fonction, ensuite appelée avec :, s’appelle récursivement à l’infini.

La fork bomb fonctionne en créant autant de processus que possible. Ainsi, s’en premunir, il suffit simplement de limiter le nombre de processus pouvant être exécutés par un programme ou par un utilisateur. En permettant aux utilisateurs de non-confiance de lancer seulement un petit nombre de processus, le danger d’une fork bomb, intentionnelle ou non, est réduit. Toutefois, cela n’empêche pas un groupe d’utilisateurs de collaborer pour consommer les emplacements processus, à moins que la limite totale des processus soit plus grande que la somme des limites des processus individuelles.

Les systèmes de type Unix permettent de limiter le nombre de processus via la commande ulimit. Dans un noyau Linux, cette limite peut être indiquée via RLIMIT_NPROC. Si un processus appelle fork et que l’utilisateur possède déjà plus de RLIMIT_NPROC processus alors le fork échoue. Ici encore la limitation est propre à un utilisateur donné et ne permet pas de déjouer les attaques simultanées par plusieurs utilisateurs. Elle permet toutefois de limiter l’impact de forks accidentels, par exemple lors de la conception d’un logiciel ou d’un bogue dans une application.

 

Voici d’autre façon de faire des Fork Bomb:

En langage C:

#include
int main(void)
{
while(1) {
/* ici on peut ajouter un malloc pour utiliser plus de ressources */
fork();
}
return 0;
}

En Javascript:

function open_target_blank()
{
window.open(window.location);
}
window.onload = open_target_blank();
OU
while (true)
{
var w = window.open();
w.document.write(document.documentElement.outerHTML || document.documentElement.innerHTML);
}

En Perl:

fork while fork

En Perl depuis un terminal:

perl -e "fork while fork" &

En Python:

import os
while True:
os.fork()

En Ruby:

loop { fork }

En VB:

Private Sub Main()
Do
Shell App.EXEName
Loop
End Sub

20 juin 2015 /

Scanmem est un programme qui permet de modifier la une variable dans la RAM. On peut l’utiliser pour tricher ou changer le comportement d’un jeu.
Pour cet exemple, je vais utiliser Scanmem sur Borderland Pre-Sequel pour avoir le max d’argent.

Il faut d’abord récupérer le PID du Borderland Pre-Sequel, on lance donc le jeu et on fait un atl tab pour pouvoir ouvrir un terminal.
puis:

ps -ef | -i borderland

Il y a plusieurs processus, dans le cas présent la ligne qui nous intéresse est en gras.

starmate@entropia:~ $ ps -ef | grep -i borderland
starmate 2858 2857 0 15:02 ? 00:00:00 /bin/sh -c "/media/Starmate/steamapps/common/BorderlandsPreSequel/./BorderlandsPreSequel"
starmate 2859 2858 82 15:02 ? 00:01:02 /media/Starmate/steamapps/common/BorderlandsPreSequel/./BorderlandsPreSequel
starmate 2954 2779 0 15:04 pts/3 00:00:00 grep --color=auto -i borderland

Le PID du Borderlands est donc 2859, nous allons maintenant faire:

sudo scanmem 2859

Nous sommes maintenant dans une invite de commende du programme, il faut a présent identifier la case memoire où se trouve la valeur à modifier (ici c’est notre montant en cash qui nous interesse).

J’ai 156258 dollars, je tape donc:

0> 156258

Après avoir scanner la mémoire il affiche sur sa dernière ligne:

info: we currently have 4 matches.
4>

Il nous faut donc affiner cette recherche pour avoir le nombre le plus restreint possible. Je vais donc acheter un objet ou tuer un monstre pour modifier la valeur de mon porte monnaie.

Puis je recommence mon scan avec la nouvelle valeur:

4> 156248

Le programme me dis maintenant qu’il ne reste plus que deux variables en mémoire avec cette valeur.

info: we currently have 2 matches.
2>

Cela est suffisamment bas pour tenter de modifier la valeur, il faut donc maintenant faire un:

2> set 999999999

Bravo, vous avez maintenant 999999999$ Ingame, cela marche aussi avec les cristaux, l’Xp, pierre lunaire etc… ainsi que la grande majorité des jeux

19 juin 2015 /

Si vous souhaitez programmer un redémarrage d’un machine la commande « at » est parfaite.

Pour un redémarrage le 22 février 2016 à 23h (Mois/Jour/Année):

at 23:00 02/22/16
reboot -f
CTRL+D

Pour un redémarrage dans 5 minutes:

at now +5 minutes
reboot -f
CTRL+D

Pour un redémarrage dans 3 heures:

at now +3 hours
reboot -f
CTRL+D

Pour un redémarrage dans 4 jours:

at now +4 days
reboot -f
CTRL+D

Pour un redémarrage dans 2 semaines:

at now +5 weeks
reboot -f
CTRL+D

Pour un redémarrage dans 6 mois:

at now +6 months
reboot -f
CTRL+D

Pour un redémarrage dans 2 ans:

at now +2 years
reboot -f
CTRL+D

Pour un redémarrage aujourd’hui à 23h:

at 23:00
reboot -f
CTRL+D

Sinon:

shutdown -r 23:00

18 juin 2015 /

Pour identifier un processus consommant le plus de mémoire:

ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head

Pour identifier un processus consommant le plus de CPU:

ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head

 

ps -> Liste des processus courants
-e -> Sélectionne l’ensemble des processus
-o -> Spécifie un format utilisateur
pmem,pcpu,pid,args -> format utilisateur définit sur la mémoire,cpu, numéro de pid et commande
tail -n +2 -> Sortie standard à partir de la seconde ligne (pour éviter la sortie des intitulés de colonnes comme %MEM, etc ...)
sort -rnk 1 -> Classer par ordre numérique (n) décroissant (r) suivant la première colonne (mémoire)
sort -rnk 2 -> Classer par ordre numérique (n) décroissant (r) suivant la seconde colonne (cpu)
head -> Sortie des 10 premières lignes