Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - uso
Forum - C/C++ - uso "underground" di CreateProcessA per packer

Avatar
danrevella (Normal User)
Newbie


Messaggi: 7
Iscritto: 05/04/2008

Segnala al moderatore
Postato alle 13:22
Mercoledì, 28/05/2008
Salve a tutti amici!!!
Mi presento qui: sono Danrevella, ho 50 anni e qualche minima esperienza di programmazione.
Ultimamente mi gira per la testa un problema: come posso caricare in memoria un programma .exe senza che esso risieda fisicamente sull'hard disk?
Per quale ragione vorrei farlo? Ve ne potrei dare mille, ma una in particolare è quella che m'interessa di piu': un file che si carica e si esegue tutto direttamente in memoria, NON e rilevabile da alcun antivirus.........
Cio' puo' essere utilizzato per scopi buoni o cattivi, ma cio' credo valga praticamente per ogni concetto che qui si cerca di spiegare, dico bene?
Ora cercherò di spiegarmi meglio:
Vorrei fare un semplice packer e lo spunto (non il sorgente purtroppo....) l'ho preso da un programma che svolge piu' o meno quanto segue:
n tutta questa faccenda però non mi importa della compressione e/o delle eventuali protezioni.... a me interessa capire una cosa sola:
COME SI FA A CARICARE UN EXE IN MEMORIA SENZA AVERLO FISICAMENTE SU DISCO?(il resto può arrivare dopo...)
---------------------------------------------------------------------------------------------------------
Mi sono armato di tanta pazienza ed ho esaminato forse un centinaio di programmi di packing ed ho cercato di capire il funzionamento dello stub..... e ho trovato uno il cui autore ammette che lo stub è scritto in C è che non è a sua volta protetto, difatti l'output di Ollydbg è piuttosto cristallino (almeno per un esperto).
Mi pare di capire quanto segue:
-) il file che d'ora in poi chiamerò packed.exe è formato dallo stub.exe (circa 3kb) e dal programma che gli abbiamo fatto packare che chiamerò original.exe.
-) per ottenere packed.exe si fa così: si prende un qualsiasi file exe e.......
c:>copy /b stub.exe+master.exe packed.exe
-) Insomma, lo stub è sempre uguale, basta accodargli un exe e lui (lo stub) sa esattamente come fare per eseguirlo in memoria senza swappare sull'hd
-)Ecco i passi che compie (almeno cio' che io sono riuscito a capire da Olly), almeno quelli principali:
si supponga: stub.exe lungo 3.000 bytes, master.exe 17.000 bytes
1) Ricava il nome del file ed il percorso, ad es.: c:packed.exe (ovvero lui stesso)
2) Ricava la lunghezza di packed.exe ------->20.000
3) Apre se stesso quale file dati in sola lettura
4) Effettua (20000-3000)=17000 e quindi carica in una zona di memoria 17000 bytes a partire dall'offset 3001 (in pratica l'intero file master.exe viene caricato in una zona di memoria)
5) Chiama CreateProcessA dandogli come parametro il dato ottenuto al punto 1): c:packed.exe (ovvero lui stesso); il processo viene creato in forma sospesa.
6) Effettua giusto una manciata di istruzioni (almeno così a me sembra...) nel corso delle quali invoca : ReadProcessMemory, VirtualQueryex, e finalmente 2 serie di WriteProcessMemory prelevando i dati ottenuti nel precedente punto 4)...
7) Sblocca il processo testè creato, e tutto funziona master.exe sta funzionando, e NON esiste una copia di ses tesso sul disco fisso!!!
Ho provato con diversi file exe e mi funzionano tutti. Se qualcuno è interessato ad aiutarmi a reversare questo stub posso uplodare il file da qualche parte.
Grazie per l'attenzione.

Danrevella

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:50
Mercoledì, 28/05/2008
Invia il programma in modo che si possa scaricare ...

Una domanda ... hai provato ad usare questi programmi in un sistema dotato di CPU con bit DEP (Data Execution Prevention) attivato? Funziona?

Ultima modifica effettuata da gantonio il 28/05/2008 alle 15:06
PM Quote
Avatar
danrevella (Normal User)
Newbie


Messaggi: 7
Iscritto: 05/04/2008

Segnala al moderatore
Postato alle 17:08
Mercoledì, 28/05/2008
Testo quotato

Postato originariamente da gantonio:

Invia il programma in modo che si possa scaricare ...

Una domanda ... hai provato ad usare questi programmi in un sistema dotato di CPU con bit DEP (Data Execution Prevention) attivato? Funziona?


il programma è qui:
hxxp://w_ww.sendspace.com/file/sieqsx
Per quanto riguarda la seconda domanda, la risposta e NO, anche se mentre ne ho provati tanti altri ne ho trovati alcuni che permettevano tale funzione, anche se ora non ricordo quali siano....
Questo l'ho scelto solo perchè ha lo stub molto piccolo e mi pare piu' semplice da riversare...
Una volta che avremo costruito il codice base, potremo poi pensare di inserire tutte le altre possibilità...
Nel file troverete anche un dump di una mia frettolosa analisi fatta con Ollydbg.
Saluti!!!


Ultima modifica effettuata da danrevella il 28/05/2008 alle 17:12
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 17:48
Mercoledì, 28/05/2008
L'ho scaricato ... lo studio un po' ... ma dimmi ... perche' parlavi di codice che non deve essere individuato dall'antivirus ?

PM Quote
Avatar
danrevella (Normal User)
Newbie


Messaggi: 7
Iscritto: 05/04/2008

Segnala al moderatore
Postato alle 11:54
Giovedì, 29/05/2008
Testo quotato

Postato originariamente da gantonio:
L'ho scaricato ... lo studio un po' ... ma dimmi ... perche' parlavi di codice che non deve essere individuato dall'antivirus ?


Sicuramente non sono stato molto chiaro, cerco di esserlo ora:
-) ogni volta che ho provato a proteggere un mio programma con upx, ovvero con un altro packer/crypter, nel 90% dei casi l'antivirus mi avvisava che il programma era un virus, oppure che era un programma potenzialmente dannoso!!!
-) Ma questo avveniva perchè lo stub del packer utilizzato, e NON il mio programma che avevo packato, era marchiato dall'antivirus. In altre parole: impacca un qualsiasi innocuo programma con Upx (ad es.) e vedrai che qualche antivirus te lo bollerà col marchio d'infamia di virus....
Spero di aver chiarito, altrimenti chiedimi pure.

Danrevella

PM Quote