-[ 0x05 ]-------------------------------------------------------------------- -[ FREECAD V1.0 ]------------------------------------------------------------ -[ by +NetBul ]-------------------------------------------------------SET-19- [ Este texto y el software adjunto han sido creados con fines educativos, ] [ el uso o abuso que TU hagas de ellos es TU responsabilidad, queda claro? ] Hace varios meses que acabe esto pero, por problemas varios, ha estado perdido durante un tiempo en un disco. Al que me lo pidio en un mail aqui lo tienes, mas vale tarde... Bien, pues aqui teneis la ultima version del FREECAD, funciona tal y como se comento en SET 14. Por un lado esta el .EXE que se encarga de trocear y parchear el archivo infectado, por otro esta el .BAT que automatiza el proceso de aislar la cadena. Este se encarga de ejecutar el FREECAD y lanzar el antivirus. En pocos segundos aisla la cadena (string) del virus usando los "metodos" 1 y 2 del FREECAD. El metodo 3 se puede aplicar manualmente despues segun el gusto y las necesidades de cada uno. :-) No lo pillas?? No sabes de que va el tema? Leete SET 13 y 14... FREECAD v1.0 ============ Uso: FREECAD <-mt1|-mt2|-mt3> -mt1 Parte el archivo de entrada en dos archivos: #--A--#.com y #--B--#.com -mt2 Copia el centro del archivo de entrada en un archivo: #--C--#.com -mt3 Parchea el archivo de entrada, byte a byte, y escribe tantos archivos como bytes tiene. El nombre de los archivos de salida sigue un orden secuencial (en hexadecimal): 0.com ... 9.com, A.com, B.com, etc. El archivo 7.com tendra el byte en la posicion 7 parcheado. El parche predeterminado es 90h. GO-FCAD.BAT =========== Uso: GO-FCAD es el nombre completo de un archivo infectado que se encuentre en el directorio, es el nombre de un antivirus soportado por el go-fcad.bat, a escoger entre f-prot, scan, scanpm, avp, avplite, tbscan, avscan, pavcl, atm, xscan, pcscan, ivscan. Es importante poner el nombre del antivirus tal cual aparece en el .bat, si no no rula... :) Si tu antivirus no aparece en la lista puedes a¤adirlo al .BAT, solo necesitas saber el codigo de retorno (ERRORLEVEL) del antivirus cuando detecta un virus. Generalmente se indica en la documentacion del mismo pero en caso contrario la opcion indocumentada /Z del COMMAND.COM nos facilita el trabajo un huevo.. Hay otras cosas que se pueden cambiar en el .BAT a gusto del consumidor, como el directorio destino c:\cadenas\ (en la variable "destino") y la extension de los archivos con las cadenas y logs (en las variables "extcad" y "extlog"). Internamente, el GO-FCAD.BAT genera algunos archivos, que el se encarga de borrar despues si no se detiene el proceso. go-fcad.log .... el futuro .LOG anterior.com ... ultimo trozo en el que se detecto el virus #--A--#.com .... \ #--B--#.com .... generados por el freecad #--C--#.com .... / fctmp1.bat ..... estos 2 .bat se usan en un proceso interno que fctmp2.bat ..... mete el nombre del virus en una variable Si tiene exito y consigue aislar la cadena, el GO-FCAD genera un archivo .LOG como el de abajo y lo copia en el mismo directorio que la cadena. ------8<-------8<-------8<-------8<-------8<-------8<-------8<- Archivo infectado: DOOMSDAY.COM AntiVirus: pavcl *** INICIO ******************** +++ Usamos el metodo 1 ++++++++ +Partimos DOOMSDAY.COM en dos trozos: #--A--#.com y #--B--#.com - Virus NO detectado en #--A--#.com - Virus detectado en #--B--#.com +Partimos #--B--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus detectado en #--A--#.com +Partimos #--A--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus detectado en #--A--#.com +Partimos #--A--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus NO detectado en #--A--#.com - Virus detectado en #--B--#.com +Partimos #--B--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus detectado en #--A--#.com +Partimos #--A--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus detectado en #--A--#.com +Partimos #--A--#.com en dos trozos: #--A--#.com y #--B--#.com - Virus NO detectado en #--A--#.com - Virus NO detectado en #--B--#.com +++ Usamos el metodo 2 ++++++++ +Cogemos la parte central : #--C--#.com - Virus NO detectado en #--C--#.com *** FIN *********************** Cadena del virus DOOMSDAY.COM (pavcl) aislada en c:\cadenas\pavcl\DOOMSDAY.cad ------8<-------8<-------8<-------8<-------8<-------8<-------8<- El exito segun los antivirus varia bastante. P.ej. he conseguido aislar, sobre un total de 50 virus, un 10% de las cadenas con el f-prot y un 90% con el pavcl. INSTRUCCIONES DE USO :) ======================= Facil, compila el FREECAD :-O y copia *EN EL MISMO* directorio: + FREECAD.EXE + GO-FCAD.BAT + Un antivirus (escaner) para DOS soportado por el GO-FCAD.BAT + .. y tu virus favorito (archivo infectado). Por ejemplo, suponiendo que el antivirus sea el "scan" de McAfee y el virus se llame cachondo.com, escribe: GO-FCAD cachondo.com scan et voila ! En unos segundo tendras la cadena aislada en cachondo.CAD junto con el cachondo.LOG, todo ello en el directorio C:\CADENAS\SCAN\ Tambien puedes hacerlo con varios virus a la vez usando un .BAT del estilo de: <++> set_019/netbul/todoscom.bat REM TODOSCOM.BAT - Probar todos los *.com REM Uso: todos (nombre-ANTIVIRUS) for %%v in (*.com) do call go-fcad.bat %%v %1 <--> Como ejemplo, las cadenas del panda (pavcl) para 9 virus las aisla en poco mas de un minuto.. Virus bytes Cadena bytes ------------------------------------------------------------- HACKCOM .COM 1.045 --=> HACKCOM .CAD 33 HACKER-F.COM 3.289 --=> HACKER-F.CAD 51 FRIDAY13.COM 424 --=> FRIDAY13.CAD 27 FRODO .COM 4.378 --=> FRODO .CAD 35 EUROPE92.COM 1.452 --=> EUROPE92.CAD 46 DOOMSDAY.COM 1.676 --=> DOOMSDAY.CAD 26 CHECKSUM.COM 3.043 --=> CHECKSUM.CAD 49 CYBERNET.COM 1.095 --=> CYBERNET.CAD 68 BARCELNA.COM 1.892 --=> BARCELNA.CAD 31 Como podeis comprobar cualquiera que distinga un MOV de un JMP puede hacer mutaciones indetectables de un virus, tan solo necesita un sencillo programa como este, 10 minutos y ganas de marear.. Espero que esto sirva de ejemplo y no os fieis de usar un unico antivirus, siempre es preferible utilizar dos distintos y a ser posible que usen tecnicas heuristicas.. Ahi queda eso, no seais gamberros !! ;-) <++> set_019/netbul/freecad.c /******************************************************************/ /* FREECAD v1.0 (c)1999 by +NetBuL para Saqueadores (SET) */ /******************************************************************/ #include #include #include #include /* itoa */ #include FILE *origen; FILE *destino; void info1(void) { printf("\nFREECAD v1.0 \t\t (c)1999 by +NetBuL para Saqueadores Edicion Tecnica"); printf("\n============ (SET): http://www.thepentagon.com/paseante (puntero) ============\n"); return; } void info2(void) { printf("\n\n Uso: FREECAD < -mt1 | -mt2 | -mt3 >\n\n"); printf("\n\t-- Opcion --- Entrada ------ Salida -------- Nombres -----"); printf("\n\t -------- --------- -------- ---------\n"); printf("\n\t -mt1 [++++] [++] [++] #--A--#.COM #--B--#.COM\n"); printf("\n\t -mt2 [++++] + [++] + #--C--#.COM\n"); printf("\n\t -mt3 [++++] [X+++] [+X++] 0.COM ... 3.COM"); printf("\n\t [++X+] [+++X] (parche: 90h)"); printf("\n\n"); return; } void main(int argc, char *argv[]) { long int cont_bytes=0; long int tamanyo=0; char byte_leido=0x0; char *fuente; long int lado=0; long int centro=0; /* Solo para metodo 3 */ long int tp100=0,a=1; int fich_creados; char parche='\x90'; char nombre[]={"12345678.abc"}; clrscr(); info1(); /*** Filtramos la entrada ***/ if(argc==1) { info2(); exit(-1); } /*///////////////////// GENERAL ////////////////////////////////*/ /* Calculamos el tamanyo del archivo origen */ if ((origen=fopen(argv[1],"rb"))==NULL) { printf("\n\tERROR abriendo archivo origen : \"%s\"\n",argv[1]); exit(-1); } while(!feof(origen)) { fread(&byte_leido, sizeof(char), 1, origen); if(!feof(origen)) tamanyo++; } rewind(origen); /* METODO 1 ... partir por la mitad: #--A--#.com #--B--#.com */ if(!strcmp(argv[2],"-mt1")) { /* Escribo #--A--#.com */ if ((destino=fopen("#--A--#.com","wb"))==NULL) { printf("\n\n\tERROR creando archivo destino : \"#--A--#.com\" (HD lleno?)"); exit(-1); } while(cont_bytes < tamanyo/2) { fread(&byte_leido, sizeof(char), 1, origen); fwrite(&byte_leido, sizeof(char), 1, destino); cont_bytes ++; } fclose(destino); /* Escribo #--B--#.com */ if ((destino=fopen("#--B--#.com","wb"))==NULL) { printf("\n\n\tERROR creando archivo destino : \"#--B--#.com\" (HD lleno?)"); exit(-1); } while(cont_bytes100) { printf(" \b\b\b\b%d%",10*a++); tp100=0; } if ((destino=fopen(nombre,"wb"))==NULL) { printf("\n\n\tERROR creando archivo destino : \"%s\" (HD lleno?)",nombre); printf("\n\t ( total archivos creados: %d )\n",fich_creados); exit(-1); } while(cont_bytes <++> set_019/netbul/go-fcad.bat @echo off REM ************************************************ REM GO-FCAD (c) by +NetBuL para SET REM Archivo BAT para usar junto con el FREECAD v1.0 REM ************************************************ REM El valor de estas 3 variables se puede modificar sin problemas. REM *** Directorio destino para las cadenas y los logs: set destino=c:\cadenas REM *** Extension para el archivo log set extlog=log REM *** Extension para el archivo con la cadena set extcad=cad REM ***** NO tocar ! ***** REM *** Variable de exito set exito=no REM *** Nombre para los archivos de salida (limpia la variable) set nomvirii= if not exist %1 echo ((((((((((((( NO SE ENCUENTRA EL ARCHIVO !! ))))))))))))) if not exist %1 goto info if %2==f-prot goto inicio if %2==scan goto inicio if %2==scanpm goto inicio if %2==avp goto inicio if %2==avplite goto inicio if %2==tbscan goto inicio if %2==avscan goto inicio if %2==pavcl goto inicio if %2==atm goto inicio if %2==xscan goto inicio if %2==pcscan goto inicio if %2==ivscan goto inicio echo ((((((((((((( ANTIVIRUS NO SOPORTADO !! ))))))))))))) goto info REM //////////////////////////////////// REM // INICIO // REM //////////////////////////////////// :inicio copy %1 anterior.com freecad %1 -mt1 echo Archivo infectado: %1 AntiVirus: %2 > go-fcad.log echo. >> go-fcad.log echo *** INICIO ******************** >> go-fcad.log echo +++ Usamos el metodo 1 ++++++++ >> go-fcad.log echo +Partimos %1 en dos trozos: #--A--#.com y #--B--#.com >> go-fcad.log REM //////////////////////////////////// REM // METODO 1 // REM //////////////////////////////////// :metodo1 if %2==f-prot goto fprot-A if %2==scan goto scan-A if %2==scanpm goto scanpm-A if %2==avp goto avp-A if %2==avplite goto avplite-A if %2==tbscan goto tbscan-A if %2==avscan goto avscan-A if %2==pavcl goto pavcl-A if %2==atm goto atm-A if %2==xscan goto xscan-A if %2==pcscan goto pcscan-A if %2==ivscan goto ivscan-A :vuelve-A del #--A--#.com echo - Virus NO detectado en #--A--#.com >> go-fcad.log cls if %2==f-prot goto fprot-B if %2==scan goto scan-B if %2==scanpm goto scanpm-B if %2==avp goto avp-B if %2==avplite goto avplite-B if %2==tbscan goto tbscan-B if %2==avscan goto avscan-B if %2==pavcl goto pavcl-B if %2==atm goto atm-B if %2==xscan goto xscan-B if %2==pcscan goto pcscan-B if %2==ivscan goto ivscan-B :vuelve-B del #--B--#.com echo - Virus NO detectado en #--B--#.com >> go-fcad.log cls copy anterior.com #--C--#.com echo +++ Usamos el metodo 2 ++++++++ >> go-fcad.log REM //////////////////////////////////// REM // METODO 2 // REM //////////////////////////////////// :metodo2 copy #--C--#.com anterior.com echo +Cogemos la parte central : #--C--#.com >> go-fcad.log freecad anterior.com -mt2 if %2==f-prot goto fprot-C if %2==scan goto scan-C if %2==scanpm goto scanpm-C if %2==avp goto avp-C if %2==avplite goto avplite-C if %2==tbscan goto tbscan-C if %2==avscan goto avscan-C if %2==pavcl goto pavcl-C if %2==atm goto atm-C if %2==xscan goto xscan-C if %2==pcscan goto pcscan-C if %2==ivscan goto ivscan-C :fin-metodo2 REM ////////////////////////////////////////////////// REM ///// En este bloque aislamos el nombre del ////// REM ///// archivo infectado en la variable nomvirii // REM ////////////////////////////////////////////////// REM ***** Creamos FCTMP1.BAT ************** //// echo @echo off > fctmp1.bat echo shift >> fctmp1.bat echo :initmp >> fctmp1.bat echo if [%%1]==[.] goto endtmp >> fctmp1.bat echo set nomvirii=%%nomvirii%%%%1>> fctmp1.bat echo shift >> fctmp1.bat echo goto initmp >> fctmp1.bat echo :endtmp >> fctmp1.bat REM ***** Creamos FCTMP2.BAT ************** echo = | choice /c=%1= fctmp1.bat > fctmp2.bat REM ***** Ejecutamos FCTMP2 (a su vez ejecuta FCTMP1) call fctmp2.bat REM ***** Ya tenemos el nombre del virus sin extension! REM ***** en la variable nomvirii. Borramos FCTMPx del fctmp1.bat del fctmp2.bat REM //// REM ////////////////////////////////////////////////// del #--C--#.com echo - Virus NO detectado en #--C--#.com >> go-fcad.log echo *** FIN *********************** >> go-fcad.log echo. >> go-fcad.log md %destino% if %2==f-prot md %destino%\%2 if %2==scan md %destino%\%2 if %2==scanpm md %destino%\%2 if %2==avp md %destino%\%2 if %2==avplite md %destino%\%2 if %2==tbscan md %destino%\%2 if %2==avscan md %destino%\%2 if %2==pavcl md %destino%\%2 if %2==atm md %destino%\%2 if %2==xscan md %destino%\%2 if %2==pcscan md %destino%\%2 if %2==ivscan md %destino%\%2 if %exito%==no goto noexito echo Cadena del virus %1 (%2) aislada >> go-fcad.log echo en %destino%\%2\%nomvirii%.%extcad% >> go-fcad.log echo. echo ************************************************************* echo FIN .... cadena del virus %1 (%2) aislada echo en %destino%\%2\%nomvirii%.%extcad% echo. REM Copiamos la cadena al directorio destino copy anterior.com %destino%\%2\%nomvirii%.%extcad% del anterior.com REM Copiamos el log al directorio destino copy go-fcad.log %destino%\%2\%nomvirii%.%extlog% del go-fcad.log REM //////////////////////////////////// REM // METODO 3 // REM //////////////////////////////////// echo. echo [RECUERDA: Puedes usar la opcion -mt3 del FREECAD con el archivo echo %destino%\%2\%nomvirii%.%extcad% echo para encontrar la cadena *exacta* del virus..] goto fin REM **************************************************************** REM **************************************************************** REM //////////////////////////////////// REM // DETECTADO VIRUS ... // REM //////////////////////////////////// :partir-A copy #--A--#.com anterior.com echo - Virus detectado en #--A--#.com >> go-fcad.log set exito=si freecad anterior.com -mt1 echo +Partimos #--A--#.com en dos trozos: #--A--#.com y #--B--#.com >> go-fcad.log goto metodo1 :partir-B copy #--B--#.com anterior.com echo - Virus detectado en #--B--#.com >> go-fcad.log set exito=si freecad anterior.com -mt1 echo +Partimos #--B--#.com en dos trozos: #--A--#.com y #--B--#.com >> go-fcad.log goto metodo1 :detectado-C echo - Virus detectado en #--C--#.com >> go-fcad.log set exito=si goto metodo2 REM **************************************************************** REM //////////////////////////////////// REM // LANZANDO EL ANTIVIRUS... // REM //////////////////////////////////// :fprot-A f-prot #--A--#.com /NOMEM /NOBOOT /OLD /SILENT if errorlevel 3 goto partir-A goto vuelve-A :fprot-B f-prot #--B--#.com /NOMEM /NOBOOT /OLD /SILENT if errorlevel 3 goto partir-B goto vuelve-B :fprot-C f-prot #--C--#.com /NOMEM /NOBOOT /OLD /SILENT if errorlevel 3 goto detectado-C goto fin-metodo2 REM **************************************************************** :scan-A scan #--A--#.com /NOMEM if errorlevel 13 goto partir-A goto vuelve-A :scan-B scan #--B--#.com /NOMEM if errorlevel 13 goto partir-B goto vuelve-B :scan-C scan #--C--#.com /NOMEM if errorlevel 13 goto detectado-C goto fin-metodo2 REM **************************************************************** :scanpm-A scanpm #--A--#.com /NOMEM if errorlevel 13 goto partir-A goto vuelve-A :scanpm-B scanpm #--B--#.com /NOMEM if errorlevel 13 goto partir-B goto vuelve-B :scanpm-C scanpm #--C--#.com /NOMEM if errorlevel 13 goto detectado-C goto fin-metodo2 REM **************************************************************** :avp-A avp #--A--#.com /M /P /B /H /U /A /X if errorlevel 4 goto partir-A goto vuelve-A :avp-B avp #--B--#.com /M /P /B /H /U /A /X if errorlevel 4 goto partir-B goto vuelve-B :avp-C avp #--C--#.com /M /P /B /H /U /A /X if errorlevel 4 goto detectado-C goto fin-metodo2 REM **************************************************************** :avplite-A avplite #--A--#.com /M /P /B /H /U /A /X if errorlevel 4 goto partir-A goto vuelve-A :avplite-B avplite #--B--#.com /M /P /B /H /U /A /X if errorlevel 4 goto partir-B goto vuelve-B :avplite-C avplite #--C--#.com /M /P /B /H /U /A /X if errorlevel 4 goto detectado-C goto fin-metodo2 REM **************************************************************** :tbscan-A tbscan #--A--#.com /NB /NOMEM /BA /OLD if errorlevel 5 goto partir-A goto vuelve-A :tbscan-B tbscan #--B--#.com /NB /NOMEM /BA /OLD if errorlevel 5 goto partir-B goto vuelve-B :tbscan-C tbscan #--C--#.com /NB /NOMEM /BA /OLD if errorlevel 5 goto detectado-C goto fin-metodo2 REM **************************************************************** :avscan-A avscan #--A--#.com /NM /NB /R if errorlevel 100 goto partir-A goto vuelve-A :avscan-B avscan #--B--#.com /NM /NB /R if errorlevel 100 goto partir-B goto vuelve-B :avscan-C avscan #--C--#.com /NM /NB /R if errorlevel 100 goto detectado-C goto fin-metodo2 REM **************************************************************** :pavcl-A pavcl #--A--#.com /NOM /NOB if errorlevel 129 goto partir-A goto vuelve-A :pavcl-B pavcl #--B--#.com /NOM /NOB if errorlevel 129 goto partir-B goto vuelve-B :pavcl-C pavcl #--C--#.com /NOM /NOB if errorlevel 129 goto detectado-C goto fin-metodo2 REM **************************************************************** :atm-A atm #--A--#.com /NOM /NOB if errorlevel 129 goto partir-A goto vuelve-A :atm-B atm #--B--#.com /NOM /NOB if errorlevel 129 goto partir-B goto vuelve-B :atm-C atm #--C--#.com /NOM /NOB if errorlevel 129 goto detectado-C goto fin-metodo2 REM **************************************************************** :xscan-A xscan #--A--#.com /NOMEM /NOVAL /NOSISTEMA /NOEXPIRA /NOTECLA if errorlevel 1 goto partir-A goto vuelve-A :xscan-B xscan #--B--#.com /NOMEM /NOVAL /NOSISTEMA /NOEXPIRA /NOTECLA if errorlevel 1 goto partir-B goto vuelve-B :xscan-C xscan #--C--#.com /NOMEM /NOVAL /NOSISTEMA /NOEXPIRA /NOTECLA if errorlevel 1 goto detectado-C goto fin-metodo2 REM **************************************************************** :pcscan-A pcscan /NM /NB /NC #--A--#.com if errorlevel 1 goto partir-A goto vuelve-A :pcscan-B pcscan /NM /NB /NC #--B--#.com if errorlevel 1 goto partir-B goto vuelve-B :pcscan-C pcscan /NM /NB /NC #--C--#.com if errorlevel 1 goto detectado-C goto fin-metodo2 REM **************************************************************** :ivscan-A ivscan #--A--#.com if errorlevel 2 goto partir-A goto vuelve-A :ivscan-B ivscan #--B--#.com if errorlevel 2 goto partir-B goto vuelve-B :ivscan-C ivscan #--C--#.com if errorlevel 2 goto detectado-C goto fin-metodo2 REM **************************************************************** REM //////////////////////////////////// REM // INFORMACION // REM //////////////////////////////////// :info echo GO-FCAD.BAT Archivo BAT para usar junto con el FREECAD v1.0 echo (c)1999 by +NetBuL para SET #19 http://www.thepentagon.com/paseante (puntero) echo. echo Especifica un nombre completo de archivo infectado echo y un antivirus (escaner) soportado... echo. echo Uso : go-fcad (nombre-ARCHIVO-INFECTADO) (nombre-ANTIVIRUS) echo. echo Opcion Version echo ANTIVIRUS probada Empresa echo --------!--------------------------------------------------------- echo f-prot ! v3.04 Data Fellows Ltd echo scan ! v3.1.7 McAfee Inc echo scanpm ! v3.1.7 McAfee Inc echo avp ! v AntiViral Toolkit Pro, Eugene Kaspersky echo avplite ! v2.2 AntiViral Toolkit Pro, Eugene Kaspersky echo tbscan ! v8.03 Thunderbyte B.V. echo avscan ! v2.96 H+BEDV Datentechnik echo pavcl ! v6.0 Panda Software Internacional echo atm ! v4.0 Panda Software Internacional echo xscan ! v3.01 Anyware Seguridad Informatica, S.A echo pcscan ! v6.20 Trend Micro Inc. echo ivscan ! v6.10e InVircible - NetZ Computing Ltd. goto fin REM //////////////////////////////////// REM // FINALIZA SIN EXITO // REM //////////////////////////////////// :noexito echo Finalizado SIN EXITO: >> go-fcad.log echo NO se ha aislado la cadena del virus %1 ! >> go-fcad.log echo. echo Finalizado SIN EXITO: echo NO se ha aislado la cadena del virus %1 ! del anterior.com REM Copiamos el log al directorio destino copy go-fcad.log %destino%\%2\%nomvirii%.%extlog% del go-fcad.log goto fin REM //////////////////////////////////// REM // FIN // REM //////////////////////////////////// :fin REM Vaciamos variables set destino= set exito= set extlog= set extcad= set nomvirii= <--> Un saludo +NetBuL