[Assembly (MASM)] InjMyPE: PE Injector

« Older   Newer »
 
  Share  
.
  1.     +2    
     
    .
    Avatar

    Senior Member

    Group
    Manager
    Posts
    10,796
    Reputazione
    +266

    Status
    Nome della release: InjMyPE
    Linguaggio di programmazione: Assembly (MASM32)
    Versione: 1.0.1
    Descrizione:
    È un PE injector che al momento enserisce in un EXE una MessageBoxA (doveva essere un esempio allegato all'articolo sul PE Header, ma ne è nato un software)

    Data di pubblicazione: 21/10/2015
    Licenza: GNU/GPL
    Download: Mediafire (ZIP)
    Screenshot:



    Altro:
    Il seguente software al momento effettua una injection di due stringhe, rispettivamente titolo e testo della MessageBoxA, e di uno shellcode (l'array che contiene il codice macchina della MessageBoxA).
    Il software è nato come esempio allegato all'articolo sul PE Header, ma successivamente mi sono accorto che è niente più di una Versione 2 di PE Analyzer.

    Al momento permette solo di effettuare una injection di una MessageBoxA, ma in seguito molto probabilmente permetterò di effettuare injection di altri tipi (e probabilmente customizzati utilizzando un'opzione ancora non presente... tempo al tempo); a questo dovrò anche aggiungere l'hack della sezione .CERTIFICATE presente in alcuni eseguibili.

    Cosa fa il Software.
    Effettuati gli injection, sostituisce l'EP del programma con quello al nuovo codice, e come prima istruzione esegue questo; al termine di questo codice è presente una CALL (avrei dovuto mettere un JMP, ma ho confuso gli opcodes quando ho steso il codice... prossimamente cercherò di ricordarmi di correggerlo) che salta al vecchio EP riprendendo l'esecuzione come nulla fosse.

    Lo shellcode hardcoded è il seguente:
    CODICE
    90h,
    90h,
    90h
    ,68h,00h,00h,00h,00h,
    68h,00h,00h,00h,00h,
    68h,00h,00h,00h,00h,
    68h,00h,00h,00h,00h,
    0FFh, 15h, 00h,00h,00h,00h,
    0E8h,00h,00h, 00h, 00h,
    90h


    Contiene anche del codice inutile, ma avendo la nuova sezione non serve più a nulla (i vari 90h ovvero i "NOP").

    In pratica fa tutto ciò che fa anche PE Analyzer, però non mostra le informazioni a video ed effettua le injection. Inserisce una sezione con un nome ed una dimensione fissate (.injcode, di 1000byte) ed effettua tutto il procedimento in maniea automatizzata (come si evince dallo screen). Come dicevo poche righe più sopra, fornirò altre opzioni... ma suppongo servano altri mesi per quella release (devo ancora pensare ad un aggiornamento futuro). Posso solo anticipare che molto probabilmente sarà necessaria la conoscenza dell'assembly, almeno in forma basilare.

    Mostrerò due screen del crackme di Koskha (scusa ma è uno dei pochi exe in codice nativo che ho sul pc e non miei :asd: ), così da non violare licenze di software commerciali (sono gli screen dell'articolo).

    Avvio di CrackMe1.exe


    Avvio di CrackMe1.exe dopo all'esecuzione di InjMyPE



    Lo lascio anche in allegato, in caso vogliate provarlo per farvi un'idea.

    Quando non funzionerà sicuramente.
    Non funzionerà sicuramente in presenza di EXE a 64bit.
    Non funzionerà quando è presente la sezione .CERTIFICATE.
    Non funzionerà se la libreria user32.dll e la funzione <i>MessageBoxA non sono presenti.
    Non funzionerà molto probabilmente in caso di exe packed.

    Vi sono molti software commerciali e non che non sono packed e non hanno quella sezione. Di solito la MessageBoxA è utilizzata... ma non è scontato.


    Source:


    Probabili Futuri Aggiornamenti
    - Injection della libreria desiderata anche se non presente;
    - Injection di codice proprio;
    - Generazione del proprio codice (magari inserito in asm però);
    - Aggiunta modificate .CERTIFICATE;



    Credo d'aver detto tutto. Se avete domande scrivete qui sotto. ;)
    File Allegato
    CrackMe1.zip
    (Number of downloads: 23)

     
    .
  2. JS96
         
     
    .

    User deleted


    Molto interessante. :P

    Visto che te ne intendi di injection, è possibile realizzare una cosa simile in C/C++ o è per forza necessario lavorare con ASM?
     
    .
  3.      
     
    .
    Avatar

    Senior Member

    Group
    Manager
    Posts
    10,796
    Reputazione
    +266

    Status
    Sisi, è possibile. È come in asm, cambia solo la sintassi in pratica. ;)
    Chiaramente dovrai usare la WINAPI per gestire l'apertura del file e la scrittura (uguale a questo in asm).
     
    .
  4. JS96
         
     
    .

    User deleted


    CITAZIONE (RootkitNeo @ 21/10/2015, 21:24) 
    Sisi, è possibile. È come in asm, cambia solo la sintassi in pratica. ;)
    Chiaramente dovrai usare la WINAPI per gestire l'apertura del file e la scrittura (uguale a questo in asm).

    Sarebbe molto interessante una guida o almeno il sorgente di come realizzare un software del genere usando un linguaggio di alto livello, C++ per esempio. :)
     
    .
  5.      
     
    .
    Avatar

    Senior Member

    Group
    Manager
    Posts
    10,796
    Reputazione
    +266

    Status
    L'articolo che posterò tra 1 o 2 giorni sarà una sorta di Pe Analyzer scritto in C. ;)
    Non modifica codice, ma dà info sull'exe insomma.
     
    .
  6.      
     
    .
    Avatar

    Senior Member

    Group
    Manager
    Posts
    10,796
    Reputazione
    +266

    Status
    CITAZIONE (JS96 @ 21/10/2015, 21:32) 
    Sarebbe molto interessante una guida o almeno il sorgente di come realizzare un software del genere usando un linguaggio di alto livello, C++ per esempio. :)

    Da pc posso risponderti meglio.
    Comunque si, potrebbe essere una buona idea. Alla base comunque le funzioni rimangono quelle. :)
     
    .
5 replies since 21/10/2015, 19:29   252 views
  Share  
.
Top