RSS

Virus "PHX" segunda parte.

Hoy vamos a desempolvar una crónica fascinante, Es una historia que lo tiene todo: ingenio, traición, un plan de venganza y una lección aprendida de la peor manera.

Imaginen la escena: son los años 90. Los juegos de computadora se mueven en diskettes y la piratería es la norma.

El Ingenio: La "Intro" Imborrable

En Rosario, un programador muy talentoso, que se movía bajo el alias de "Armagedón", tenía un negocio de venta de shareware y juegos. Para publicitarse, desarrolló un programita brillante: una "Intro" (una pantalla de presentación) que se "pegaba" al inicio de cada juego que vendía. (overlay)

Esta intro no era un simple cartelito. Estaba diseñada para que, si alguien copiaba ese juego o programa (es decir, pirateaba al pirata), no pudiera sacarle la publicidad. El próximo comprador vería inevitablemente el anuncio del local. Era un sello de agua digital imposible de borrar.

El programa era un secreto bien guardado, compartido solo con uno o dos colegas de confianza en Rosario.

Ingreso a la Galería Vía Florida en los 90 (San Martín 1051)

La Traición: El Pirata de la Moto

Como en toda buena historia, aparece el conflicto. El colega de “Armagedón” tenía un socio en Buenos Aires. Este "pirata porteño" consiguió una copia de la famosa "Intro" con la promesa de no compartirla con nadie.

Pero, como dice el artículo, "pirata al fin", vio el potencial de negocio. Rompió su promesa, empezó a vender el programa de Armagedón por su cuenta y le fue tan bien que, con las ganancias del esfuerzo ajeno, se compró una moto.

Cuando Armagedón se enteró, la furia fue total. Él apenas tenía dinero, y el otro se estaba enriqueciendo gracias a su código.

"La Cueva" o "La Tinto" Entre Ríos 1071 - 1075

La Venganza: Nace el "Tracker"

Armagedón buscó primero la vía legal. Fue al registro de propiedad intelectual, pero el trámite era un laberinto. Un abogado amigo le bajó las esperanzas: "Ni te molestes. Aunque lo registres, se va a salir con la suya. Tiene amigos en lugares importantes".

Desesperanzado de la justicia, Armagedón optó por la venganza. Digital, por supuesto.

Decidió crear un virus.

Aunque nunca había hecho uno, sus "intros" eran técnicamente similares, ya que se "pegaban" a otros programas. Su plan era crear un "tracker" (buscador), un virus que se esparciría de máquina en máquina, silencioso e inofensivo, hasta que diera con la computadora del pirata traidor. Solo ahí, en esa máquina, el virus despertaría y empezaría a destruir lentamente el disco rígido.

Para proteger su identidad, adoptó el apodo "Armagedón", sugerido por un amigo, un nombre que sonaba potente y no tenía nada que ver con su alias habitual en el mundo informático.

El Error: "Volvete en Virus, es más Rápido"

El Día del Padre de 1993, el virus estuvo listo.

Armagedón y su "pandilla" probaron el virus en todas las computadoras que pudieron para asegurarse de que era 100% inofensivo para los inocentes… O eso creyeron.

Comenzaron la distribución de forma "quirúrgica". Le pasaron una copia del software "Vista Pro" infectado a un conocido pirata de Buenos Aires. Casi al mismo tiempo, uno de sus amigos viajó a Uruguay por negocios (que también trabajaban con el enemigo porteño) y llevó una versión 2 del virus.

Aquí es donde todo se salió de control.

El virus demostró ser más infeccioso de lo que jamás imaginaron. Unos días después, el pirata de Buenos Aires volvió a Rosario. Cuando revisaron sus diskettes, Armagedón no podía creerlo: ¡tenía la versión 2, la que se había ido a Uruguay!

El virus había viajado de Uruguay a Buenos Aires y de Buenos Aires a Rosario en cuestión de días. La broma interna fue épica:

—¿En qué te volviste de Uruguay?

—En colectivo.

—No, eso pasó de moda. La próxima vez volvete en virus que es mucho más rápido.

Las Consecuencias: El Virus "PHX"

La broma dejó de ser graciosa muy rápido. Armagedón descubrió que su creación tenía errores. Esos "pequeños" bugs que se le habían pasado hacían que el virus no fuera inofensivo para las computadoras inocentes. Estaba corrompiendo datos en todas partes.

La culpa lo carcomía. La infección se multiplicaba exponencialmente. Habían elegido demasiado bien a sus distribuidores.

Mientras tanto, el virus llegó a organizaciones antivirus internacionales. En EE.UU. lo llamaron "Willistrover III" y (gracias a un dato falso) creyeron que venía de Bolivia. Pero fue el islandés Fridrik Skulason, autor del famoso antivirus F-Prot, quien le dio el nombre con el que pasaría a la historia: PHX. Lo llamó así por un texto que el virus buscaba en las máquinas para identificar a su víctima.

El virus "PHX" estaba en todos lados: Uruguay, Paraguay, Rosario y Buenos Aires. Había infectado incluso a organismos oficiales del gobierno, que (en teoría) no deberían usar software pirata.

La Redención: El Antivirus

Irónicamente, el virus cumplió parcialmente su objetivo. El pirata porteño recibió una avalancha de quejas de clientes a los que se les borraba la información. La venganza se había servido...

Pero el plato estaba demasiado frío. La alegría de Armagedón y compañía quedó completamente opacada por la culpa de la infección masiva que había causado.

En un intento por frenar a su propia creación, crearon varios programas antivirus y curas específicas para el PHX. Empezaron a repartirlos gratuitamente y hasta montaron una "campaña de vacunación" en Rosario.

La experiencia los marcó para siempre. Aprendiendo por las malas que un virus es algo que, por definición, se sale de control.

El limpiador es eficiente: no analiza byte por byte, sino que va directo a donde sabe que está el virus.

  • Objetivo: Archivos ejecutables (.COM y .EXE).

  • Posición Clave: El virus PHX mide exactamente 822 bytes y siempre se adhiere al final del archivo.

  • Método: El programa salta al final del archivo y retrocede 822 bytes. Luego, lee ese bloque y verifica cuatro "marcas" o "firmas" exactas en posiciones específicas. Si las cuatro firmas coinciden, confirma la infección y avanza a la curación.


2. La Cirugía: Revertir la Infección

La infección consistía en que el virus sobrescribía el inicio del archivo original para ejecutarse primero. La cura revierte esto en dos pasos:

A. Recuperación del "ADN" Original

El virus fue diseñado para guardar los datos de arranque originales (header) dentro de sus propios 822 bytes. El limpiador tiene que hacer una distinción:

  • Para archivos .COM: Recupera los pocos bytes originales que el virus necesitaba para saltar al programa real.

  • Para archivos .EXE: Recupera y reconstruye el encabezado del archivo, incluyendo los valores originales del puntero de instrucción (IP) y de la pila (SP) para que el archivo vuelva a ser ejecutable.

B. El Corte y el Reemplazo (Truncamiento)

Con el encabezado (header) original reconstruido en memoria, el programa finaliza la cura:

  1. Corte del Virus: Mueve el puntero del archivo justo antes de donde inician los 822 bytes del virus. Ejecuta un comando de "escritura de 0 bytes" (truncamiento), que efectivamente corta y elimina el bloque de 822 bytes del PHX.

  2. Restauración del Inicio: Vuelve al principio del archivo y sobrescribe el inicio dañado (que antes era un salto al virus) con el cabezal original y limpio que había reconstruido.

El resultado es un archivo limpio, con su tamaño original restaurado, como si nunca hubiera sido infectado.

Facu LU6FPJ

.286c assume cs:cseg,ds:cseg cseg segment para public 'WIII cleaner' org 100h remove proc near jmp startup_sequence tracker_lenght equ 822 alloc_mem dw 0 lenght_hi dw 0 lenght_lo dw 0 filehandle dw 0 id db 0dh,0ah,' File cleaner for WIII',0dh,0ah db ' (C) 1993 The Last Hackers Group - Internal Use Only',0dh,0ah db ' Date: 31/08/1993',0dh,0ah,0dh,0ah,'$' filespec1 db '*.com',0 filespec2 db '*.exe',0 disk_transfer_area db 080h dup (0) header db 01ch dup (0) buffer db tracker_lenght dup (0) scanning db 0dh,0ah,'Scanning: $' fileinfected db ', cleaning$' done db ', done.$' no_more_files: ret clean_dir: mov ah,01ah mov dx,offset disk_transfer_area int 21h mov dx,offset filespec1 call search_n_rescue mov dx,offset filespec2 search_n_rescue: mov ah,04eh xor cx,cx int 21h clean_curr_dir: cmp ax,012h je no_more_files mov ax,03d02h mov dx,offset disk_transfer_area+01eh int 21h mov bx,ax mov filehandle,bx call print_scanning mov ax,04202h mov cx,-1 mov dx,-tracker_lenght int 21h mov lenght_hi,dx mov lenght_lo,ax mov ah,03fh mov cx,tracker_lenght mov dx,offset buffer int 21h cmp word ptr buffer+tracker_lenght-3,00828h jne not_infected cmp byte ptr buffer+tracker_lenght-1,093h jne not_infected cmp word ptr buffer,0680eh jne not_infected cmp word ptr buffer+2,0100h jne not_infected call neutralize not_infected: mov dx,offset done mov ax,0900h int 21h mov ah,03eh int 21h mov ah,04fh int 21h jmp clean_curr_dir neutralize: mov dx,offset fileinfected mov ax,0900h int 21h mov ax,04200h xor cx,cx xor dx,dx int 21h mov ah,03fh mov dx,offset header mov cx,01ch int 21h mov si,offset buffer mov di,offset header cmp word ptr [di+000h],'ZM' je is_a_fucking_exe mov ax,[si+023h] mov bl,[si+02ah] mov [di+000h],ax mov [di+002h],bl jmp neutralized is_a_fucking_exe: mov dx,[di+016h] add dx,[di+008h] mov cx,dx shl dx,4 shr cx,12 mov ax,04200h mov bx,filehandle int 21h mov ah,03fh mov cx,080h mov dx,offset buffer int 21h mov ax,[si+061h] mov bx,[si+05fh] mov cx,[si+063h] mov dx,[si+05ch] mov [di+016h],ax mov [di+014h],bx mov [di+00eh],cx mov [di+010h],dx ;RHP: ******************* mov ax,04202h mov bx,filehandle mov cx,-1 mov dx,-(tracker_lenght) int 21h mov [di+002h],ax and [di+002h],01ffh shr ax,9 shl dx,7 or dx,ax mov [di+004h],dx inc word ptr [di+004h] jmp chop_file_end neutralized: mov ax,04202h mov bx,filehandle mov cx,-1 mov dx,-(tracker_lenght) int 21h chop_file_end: mov ah,040h xor cx,cx int 21h mov ax,04200h mov bx,filehandle xor cx,cx xor dx,dx int 21h mov ah,040h mov dx,offset header mov cx,01ch int 21h ret print_scanning: mov di,offset disk_transfer_area+01eh xor al,al mov cx,080h repne scasb mov byte ptr [di-1],'$' mov dx,offset scanning mov ax,0900h int 21h mov dx,offset disk_transfer_area+01eh mov ax,0900h int 21h ret startup_sequence: call clean_dir int 20h remove endp cseg ends end remove


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentarios:

Publicar un comentario