Copy Link
Add to Bookmark
Report

Vana Imago 1 34

eZine's profile picture
Published in 
Vana Imago
 · 5 years ago

  

                ³                                    ³                                          ³COME INFETTARE GLI .EXE DI WINDOWS95³                                          |____________________________________|                                                                                                                          ....DAL GRANDE MAESTRO DEL VIRUS WRITING...                                                 (ohhhhhhhh)                                                                                                                                                  ...Techno Knight    !!!                                                             (buuuuuuu!!)                                                                                                                                                                                                      Allora, un saluto da Techno Knight   , dato che nel numero scorso ho promesso   (sia maledetto quel giorno!) di insegnarvi a infettare i PE, adesso sono        costretto a farlo davvero!                                                      ....                                                                                                                                                            Scherzi a parte l'infezione dei PE Š molto pi— impegnativa di quella dei .COM   ma se seguite per bene e non vi dispiace fare qualche prova prima di creare     un virus decente, allora potete senza dubbio imparare quella che oramai         Š l'unica infezione che pu• permettere la sopravvivenza e la diffusione del     vostro virus.                                                                                                                                                   Allora, considerando che questo articolo magari lo legge anche uno che non      ne capisce niente (lamer : se non ci fossero bisognerebbe inventarli!) comincio col dire che i PE altro non sono che gli eseguibili di Windows95.               Si, infatti (mi rivolgo sempre ai mitici lameroni) gli eseguibili di Windows9x  sono diversi da quelli del DOS e da quelli del Windows 3.x (NE)                                                                                                 Ecco come Š strutturata la parte iniziale di un eseguibile Windows 9x :                                                                                                                                                                         SEZIONE DOS  (contenente l'header di tipo DOS pi— altra robbaccia)              PE HEADER    (ecco la prima novit…, all'header DOS segue l'header di Win)       OBJECT TABLE (poi vi spiego che cos'e', pazientate...)                          IMPORT INFO                                                                     EXPORT INFO                                                                     FIXUP INFO                                                                      RESOURCE INFO                                                                   DEBUG INFO                                                                      ....                                                                                                                                                            La sezione DOS contiene un header compatibile con il DOS 2.0 (ecco perchŠ       anche i PE cominciano con la classica signature 'MZ')                           Il PE Header segue la sezione DOS ed Š l'header vero e proprio di Windows9x,    e comincia con la signature 'PE' (guarda un p•...).                                                                                                             Allora, la prima cosa da fare Š trovare dove inizia questo PE HEADER, dato      che la sezione DOS Š variabile di dimensione.                                   Per farlo ci basta sapere che dal byte 3ch del header DOS Š contenuto l'offset  dove comincia il PE HEADER. Quindi dobbiamo leggere per prima cosa un certo     numero di bytes dall'inizio del file (superiore a 3fh) e salvarli in un buffer  Poi leggeremo la dword che comincia al byte 3fh del buffer, ricordate per• che  dovete leggerla in ordine inverso, cioŠ :                                                                                                                                       3ch  3dh  3eh  3fh                                                               |    |    |    |                                                                B0   00   00   00                                                                                                                              indica che il PE HEADER inizia all offset 0000:00B0.                            Una volta trovato l'offset del PE HEADER leggiamo 88 bytes dal suo inizio       e salviamoli in un altro buffer. Ora mi sembra che sia arrivato il momento      di spiegarvi per bene come Š fatto il PE HEADER....                                                                                                             Byte(d) ³  Contenuto                                                            --------+----------                                                              0      ³  Signature                                                             4      ³  CPU Type                                                              6      ³  Numero degli oggetti                                                  8      ³  TIME/DATE Stamp                                                       12     ³  Reserved                                                              20     ³  NT HDR Size                                                           22     ³  Flags                                                                 24     ³  Reserved                                                              26     ³  LMajor                                                                27     ³  LMinor                                                                28     ³  Reserved                                                              40     ³  EntryPoint RVA                                                        44     ³  Reserved                                                              52     ³  Image Base                                                            56     ³  Object Align                                                          60     ³  File Align                                                            64     ³  OS Major                                                              66     ³  OS Minor                                                              68     ³  User Major                                                            70     ³  User Minor                                                            72     ³  Subsys Major                                                          74     ³  Subsys Minor                                                          76     ³  Reserved                                                              80     ³  Image Size                                                            84     ³  Header Size                                                                                                                                          Uff e basta, questo Š quello che ci interessa per ora (che rottura)                                                                                             Allora leggete i primi 88 bytes dicevo, e vi ritroverete con tutti questi       bei dati. A che cazzo servono ? Ve lo spiego io (eh se non ci fossi io come     fareste...)                                                                     Allora al 6 c'Š il numero degli oggetti (.text, .data, .fanculo, non so se      vi ricordano qualcosa). Per infettare uno di questi files dovrete aggiungerne   uno. Dopo il PE Header Š presente la Object Table, che contiene i dati di       tutti gli oggetti.                                                              Ma andiamo avanti. Allora, leggete il valore di NT HDR Size. Sappiate che       questo valore vi serve a sapere quanti bytes ci sono dopo Flags prima che       cominci la Object Table. Quindi prendete NT HDR Size, sommatelo a 24 e          poi sommate ancora all'offset di inizio del PE HEADER (trovato in 3ch), e       avrete l'offset di inizio della Object Table.                                   Per aggiungere un oggetto alla object table non dovrete spostare niente,        perchŠ ci sar… sicuramente dello spazio vuoto alla fine.                        Il problema Š sapere dove finisce l'ultimo oggetto (e quindi dove comincia lo   spazio vuoto che possiamo occupare con i dati del nostro nuovo oggetto).        Prendiamo il valore trovato al byte 6 del PE Hdr (numero degli oggetti) e       lo moltiplichiamo per 40, che Š appunto la dimensione in bytes di un oggetto    nella object table. Cos (auff!) siamo arrivati alla fine dell'ultimo oggetto   della object table. Vediamo come Š fatto un oggetto :                                                                                                           Nome dell'oggetto - 8 bytes                                                     Virtual Size      - 4 bytes                                                     RVA               - 4 bytes                                                     Physical Size     - 4 bytes                                                     Physical Offset   - 4 bytes                                                     Reserved          - 12 bytes                                                    Object Flags      - 4 bytes                                                                                                                                                                                                                     Quello che dobbiamo fare Š costruire una nuova struttura come questa per        il nostro oggetto.                                                              Il nome dell'oggetto deve essere di 8 caratteri (come '.text   ', '.data   ',   ecc.). Per fare sfoggio della mia cultura vi ricordo che l'oggetto inserito     da Bizatch (poi chiamato Boza) il primo virus per Win95, si chiamava .vlad      (indovinate un p• di che gruppo era quello che l'ha fatto .... :)                                                                                               Ecco come calcolarci il resto :                                                                                                                                                                                                                                         Virtual Size                                                                         =                                                   ((Dimensione del virus + altrospazio)/Object Align+1)*Object Align                                                                                                                                                                                                                                                                                         RVA                                                                              =                                                   ((RVA dell'oggetto precedente + Virtual Size dell'ogg.prec.)/Object Align+        +1)*Object Align                                                                                                                                                                                                                                                                                                                                     Physical Size                                                                        =                                                        (Dimensione del Virus/File Align+1)*File Align                                                                                                                                                                                                                                                                                                    Physical Offset                                                                       =                                                       Physical Offset dell'ogg.prec. + Physical Size dell'ogg.prec.                                                                                                                                                                                                                                                                                      Object Flags                                                                         =                                                                          40h,0,0,c0h                                                                                                                                                                                                            Ecco. Ora sarete stanchi (anche io, ve lo assicuro) ma sappiate che abbiamo     quasi finito. Infatti una volta che avete scritto il vostro nuovo oggetto       nella Object Table dovrete soltanto :                                                                                                                                                                                                           -Cambiare EntryPoint RVA (byte 40) con il valore dell'RVA del vostro nuovo       oggetto (che vi siete appena calcolati)                                                                                                                        -Cambiare l'Image Size nel seguente modo :                                                                                                                                              NuovaImageSize                                                                       =                                                  ((VecchiaImageSize+LunghezzadelVirus+altrospaziodilavoro)/ObjAlign+1)*ObjAlign                                                                                                                                                                  -Aumentare di uno il valore di numero degli oggetti (byte 6)                                                                                                    -Scrivere il virus all'offset Physical Offset (che anche vi siete calcolati)                                                                                    Ovviamente il nostro virus dovr… salvare il vecchio entrypoint RVA e la         Image Base del file, che sommati daranno l'indirizzo dove saltare per eseguire  il programma originale.                                                                                                                                                                                                                                         EVVIVA!!!!!!!!                                                                  ABBIAMO INFETTATO WINTENDO!!!!!!!                                                                                                               Avete visto ? non era poi tanto difficile. E poi Windows95 era stato fatto      in modo da essere ininfettabile, e dopo un p• hanno anche smesso di             distribuire la documentazione sui PE per i programmatori. Quel bastardone       di bill gates credeva di aver pensato a tutto, invece c'Š stato qualcuno        pi— intelligente di lui (mitico Quantum!). E adesso vuoi mettere la             soddisfazione di sapere che anche noi possiamo dare vita a microorganismi       elettronici capaci di infettare il sistema operativo pi— bastardo del mondo ?                                                                                                         Techno Knight(techno83@freemail.it)                                                                                                                                                                                                                                                                                                                                                       

← previous
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