==Phrack Inc.== Volume Un, Édition Quatre, Article #6 sur 11 Crashing DEC-10's par The Mentor 13-mars-86 À l'occasion, le besoin de la destruction se fera sentir. Que ce soit contre un système tyranique, ou une compagnie particulière, parfois, il est nécessaire de toucher au coeur de la compagnie ... leurs ordinateurs. Ce qui suit est une explication assez détaillée de comment arriver à crasher un ordinateur DEC-10 qui fonctionne sous n'importe quel système. L'utilisateur aura besoin de pouvoir créer et exécuter des fichiers de niveau assembleur et de language de plus haut niveau, ainsi que d'avoir une bonne connaissance pratique de la programmation. La première étape est d'obtenir un compte. Que ce soit un compte par default comme 5,30 (GAMES) ou un compte piraté par une autre méthode, vous devez avoir un accès au système. L'accès en super utilisateur n'est pas nécessaire pour que cette méthode fonctionne de toute façon. Au coeur de tout serveur central, il y a l'unité centrale de traitement (Central Processing Unit - CPU). Le CPU gère toutes les instructions, allant les chercher en mémoire, les décodant et les exécutant. Un DEC a ce qu'ils appellent un controleur DMA (Direct Memory Access) qui fonctionne comme un petit CPU gérant toutes les entrées et sorties de la mémoire et des périphériques, laissant le CPU libre d'exécuter des instructions. On prendra l'avantage en l'utilisant pour crasher le système. Théorie : Le CPU dépend du controleur DMA pour gérer tous les accès mémoires. Si le DMA peut être crashé, le CPU s'arrete et le sysop doit lancer DSK:RAT pour restaurer tous les fichiers sur le système (un processus d'une heure, mortel aux heures de pointes). On fera crasher le DMA en le ralentissant incroyablement et en faisant déborder la pile du système. Pratique- Il y a une zone connue en tant que "Job Data Area" de l'octet 20 à 140 de la mémoire de l'utilisateur. Elle enregistre toutes les informations à propos de la tâche en cours d'exécution. Chaque emplacement a un mnémonique de 6-bits qui commence par .JB dans chaque cas. Ils doivent être compris en tant que symboles d'une table de référence externe. La plus haute adresse noyau disponible à l'utilisateur est enregistrée à .JBREL dans la Job Data Area. Si vous tentez d'acceder à plus de noyau que vous n'ête autorisé, vous allez recevoir une interruption et ça va crasher. La première étape consiste à désactiver l'interruption. C'est fait en mettant le bits 22 de AC à 1. Ce qu'on fait avec un masque comme suit : APRENB AC MOVEI AC,20000 (octal) L'interruption est maintenant désactivée. Ensuite, vous devez ceuillir touts les noyaux systèmes disponibles. On ne peut pas le faire simplement en bidouillant .JBREL. À la place, vous devez altérer AC (l'ACumulateur) pour qu'il contienne la plus haute adresse désirée et ensuite, la placer dans .JBREL. Ce qu'on fait avec la procédure suivante : CORE AC, TOP: MOVE AC,.JBREL## AOJA AC,.+1 CORE AC, BRA TOP Au début, incrémenter seulement de un parait un peut lent pour récupérer les coeurs mais puisque c'est alloué par morceaux de 1K ou de 2K de mots [NDT : words], on peut vite pomper un paquet de mémoire. (À la fin de ce fichier, il ya un programme d'exemple complet en MACRO-10 qui montre comment augmenter le coeurs jusqu'à une certaine limite). Maintenant que nous avons tous les coeurs qu'on peut, le système déjà un pied dans la tombe. C'est bien. Maintenant, on donne le coup de grâce. Vous devriez déjà avoir préparé un programme très récursif. Le choix d'un language porte autant vers le C ou le Pascal. Faites simplement un programme récursif simple (les tours de Hanoï avec 100 anneaux, par exemple), et demandez au système de l'exécuter. Ce qui va se passer, c'est que la pile du DMA va se remplir, ralentissant encore un peut plus le système. Finalement, après entre 5 et 15 minutes (ça m'a toujours pris le max), vous récupérez un gentil beep et ... ;;OPSER- DEC SYSTEM-10 NOT RUNNING Je n'ai du le faire que sur trois système où les sysop m'avait vraiment fait chier (je ne compte pas le système sur lequel je vais à l'école, sur lequel je le fait chaque fois que je m'ennuie...). C'est le genre de mesure extrême, mais qui peut être efficace. Le programme suivant est un exemple pour ceux qui ne sont pas familiés avec l'assembleur MACRO-10. 32 START: TITLE SAMPLE MOVE P,[IOWD 3,MEM] MOVE [PUSHJ P,PDLOV] MOVEM .JBAPR## MOVEI AC,600000 APRENB AC, SETZB CT MOVEM AC AOS PUSHJ P,S1 JRST .-3 S1: IDIVI AC,10 HRLM N,(P) JUMPE AC,.+3 PUSHJ P,S1 SKIPA PUSHJ P,S2 HLRZ N,(P) ADDI N,60 OUTCHR N POPJ P, S2: SOJG CT,.+4 OUTCHR [15] OUTCHR [12] MOVEI CT,10 MOVE T,P OUTCHR [40] AOBJN T,.-1 POPJ P, PDLOV: PUSHJ P,LIMIT SUB P,[1,,0] JRSTF @.JBTPC## LIMIT: CAIL 1000 ;CHANGEZ PAR CE QUE VOUS VOULEZ EXIT POPJ P, MEM: BLOCK 10 END START ----- [Traduit de l'anglais par TboWan pour arsouyes.org]