Ir al contenido principal

#2 Virus: Worm - Mi primer gusano

Hola !, continuamos con esta sección de creando nuestros propios malwares básicos para entender un poco más de estos temas, hoy venimos con un ejemplo de un gusano.




Disclaimer: El contenido de este post es con fines educativos, ni el autor ni R3gularWeb se hace responsable del mal uso que se pueda hacer.

¿Qué es un gusano?

Un gusano (también llamados IWorm por su apocope en inglés, I de Internet, Worm de gusano) es un malware que tiene la propiedad de duplicarse a sí mismo.
Los Gusanos Informáticos son programas que realizan copias de sí mismos, alojándolas en diferentes ubicaciones del ordenador.
El objetivo de este malware suele ser colapsar los ordenadores y las redes informáticas, impidiendo así el trabajo a los usuarios. 
A diferencia de los virus, los gusanos no infectan archivos. A diferencia de un virus, un gusano no precisa alterar los archivos de programas, sino que reside en la memoria y se duplica a sí mismo.
Los gusanos casi siempre causan problemas en la red (aunque sea simplemente consumiendo ancho de banda), mientras que los virus siempre infectan o corrompen los archivos de la computadora que atacan.

¿Sobre que S.O. vamos a usarlo?

Voy a estar usando un sistema GNU/Linux, en especial Debian 10, pero no deberían tener problema en otros derivados o distribuciones.

¿Qué lenguaje de programación vamos a usar?
Bueno la intención es hacerlo en varios lenguajes, uno por cada blog y por cada S.O.
Linux 》》Python
Windows 》》C#
Mac OS 》》Swift
¿Por qué estos lenguajes? Simplemente porque quiero y puedo

Script

Bueno, el ejemplo será muy básico pero mostrará como funcionan estos scripts. Si les gusta, podría realizar otra entrada realizando uno más complejo.

Lo primero es importar las librerías que vamos a estar usando
Tendremos dos variables globales, ADDRESS que será la dirección donde moveremos cada una de las copias de nuestro script
Y NAME, que será el nombre que le pondremos a las copias

if __name__ == '__main__':
Será nuestra primera acción en ejecutarse, lo que hacemos es llamar a la función main()
def main():
Es nuestro método principal, lo que haremos es evaluar con una condición que tengamos los dos argumentos [ nombre del script, cantidad de copias ]
Y mandamos a llamar la función copy_script()
def copy_script()
Lo único que hará es copiar nuestro script, llamará a una función llamada name_random() para juntarlo con nuestra variable global NAME quedando cada copia de la siguiente forma
WORM_jdiaJajIEJD.py
Y la otra función que va a llamar es move_script() que será el encargado de mover cada copia a la dirección de la variable global ADDRESS
name_random()

Lo único que hace esta función, es retornar un string de longitud 10 con letras aleatorias
move_script()
Es el encargado de mover cada copia a la ruta ADDRESS
Para esto utilizamos la librería os con su método system que nos deja ejecutar cómandos del sistema
Ya con eso ustedes pueden mejorar el script a como se les de la gaba

Ejecutando el script

Lo único que tenemos que hacer es escribir python el nombre del script y pasarle un número de copias que queremos
Y listo, como la ruta la hemos puesto en el escritorio, aquí tenemos nuestras copias.

Claro, es un ejemplo muy sencillo, pero es para mostrar como funcionan los gusanos para novatos

Comentarios

Entradas más populares de este blog

3# Criptografía - Cifrado por sustitución Atbash

__ Indice __ ¿Qué es Atbash? Proceso de cifrado Proceso de descifrar  Código Github ¿Qué es Atbash? Atbash es un método de cifrado para el alfabeto hebreo, por lo tanto entra en la clasificación de           - Cifrado Clásico - se le conoce también como el método espejo, pues consiste en sustituir en la que la primera letra (A) será sustituida por la última (Z), la segunda por la penúltima (B - Y) y así sucesivamente. Proceso de cifrado Vayamos a probarlo, vamos a cifrar nuestra palabra de costumbre RegularWeb: R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : IVTFOZIDVY A  =  Z R  =  I W =  D E  =  V B  =  Y Proceso de descifrar  Para descifrar es el mismo procedimiento. R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : REGULARWEB A  =  Z R  =  I W =  D E  =  V B  =  Y Código Github   https://github.com/NeoTRAN001/Crypt

2# Criptografía - Polybios

__ Indice __ ¿Qué es Polybios? Proceso de cifrado Proceso de descifrar Código Github __ ¿Qué es Polybios? __ Es un sistema de cifrado en el que se coloca todo el alfabeto en una matriz, y cada letra tiene una posición en la que será convertida.  Es considerado el algoritmo de cifrado más antiguo que se tiene registro •Su nombre se le da por el Historiador griego Polybios • Alrededor del año 150 a. C. __ Proceso de cifrado __ Bien, el proceso de cifrado es bastante fácil, tenemos nuestra matriz bidimensional , si queremos traducir el carácter - ? - nos da como resultado [ 0, 0 ] Y pues, eso es todo... Vayamos a cifrar la palabra Hola H = [4, 9]    o = [1 , 9]    l  = [1, 5]     a = [0, 4]  Resultado: 49191504 __ Proceso de descifrar __  Ahora si queremos el proceso inverso, solamente tenemos, tenemos que mandarle las posiciones y este nos devolverá el carácter [4, 9] = H     [1 , 9] = o    [1, 5] = l    [0

Sockets en C#

__ Índice __ ¿Qué son los sockets en programación? Ejemplo en C# Github __ ¿Qué son los socket en programación? __ Un socket es un método de comunicación entre un programa cliente y un servidor. Entonces podemos decir que los sockets, son el "tunel" de comunicación entre dos aplicaciones. __ Ejemplo en C# __ Servidor  Creamos un nuevo proyecto en consola que será el código del servidor Importamos las librerías necesarias para los sockets Declaramos dos variables, una será la dirección del Server , ya que estamos haciendo todo en nuestra pc la dirección debe de ser la local, localhost o 127.0.0.1 La otra variable será el puerto de conexión, es recomendable seleccionar un puerto alto. Es por eso que las aplicaciones utilizan 8080 . Ahora tenemos que crear un objeto de tipo Socket, que nos pide tres parámetro: 1- Esquema del tipo de diccionario: AddressFamily.InterNetwork dice que utilizará una dirección IP