Copy Link
Add to Bookmark
Report

Minotauro Magazine Issue 08 02 Boot Sector Viruses

eZine's profile picture
Published in 
Minotauro Magazine
 · 6 Feb 2021

  

Minotauro Magazine #8:

Boot Sector Viruses
Por Bugs Bunny

En este art¡culo vamos a describir los virus de BOOT sector y Tabla de
Particiones, pero para esto debemos comenzar por explicar qu‚ es y c¢mo
funciona el BOOT y la Tabla de Particiones (TP).

Como sabemos el BIOS, luego de hacer todos los chequeos necesarios para
arrancar la m quina, carga de la primera unidad de disco (Algunas versiones
de BIOS permiten configurar el arranque A:,C: o C:,A:) el primer sector de
este (Lado 0; Sector 1; Cilindro 0), o sea el sector de BOOT si se trata de
un diskette ubicado en la undidad A: o la TP en el caso de tratarse del disco
r¡gido ubicado en C:.

La idea de un Virus de BOOT es que ‚ste reemplace al sector de BOOT
orig., por un c¢digo con las caracter¡sticas de un Virus, m s adelante veremos
c¢mo hacer ‚sto, por ahora nos dedicaremos a describir al BOOT y la TP. En el
sector de BOOT se encuentra un peque¤o programita encargado de cargar los
archivos del sistema (en DOS: Io.sys y Dos.sys) o, si el disco no tiene el
sistema operativo, nos pone el famoso mensajito "No system Disk, remplace....."
o algo as¡.

El Boot tiene en sus primeros 62 bytes una tabla de datos llamada BPB
(Bios Parameters Block), que contiene los datos de la configuraci¢n del disco.
La estructura del BPB es la siguiente:

Offset - Cantidad - Descripci¢n
03(03) - 08 Bytes - OEM ID
0B(11) - 02 Bytes - Bytes per sector
0D(13) - 01 Byte - Sectors per cluster
0E(14) - 02 Bytes - Reserved sectors at beginning
10(16) - 01 Byte - FAT Copies
11(17) - 02 Bytes - Root directory entries
13(19) - 02 Bytes - Total sectors on disk
15(21) - 01 Byte - Media descriptor byte
16(22) - 02 Bytes - Sectors per FAT
18(24) - 02 Bytes - Sectors per track
1A(26) - 02 Bytes - Sides
1C(28) - 04 Bytes - Special hidden sectors
20(32) - 04 Bytes - Big total number of sectors
24(36) - 02 Bytes - Physical Drive number
26(38) - 01 Byte - Extended Boot Record Signature
27(39) - 04 Bytes - Volume Serial Number
2B(43) - 11 Bytes - Volume Label
36(54) - 08 Bytes - File system ID

NOTA: Los tres primeros Bytes no son parte de la tabla, sino que se usan para
hacer el salto incondicional al principio del codigo ejecutable.

-Esta zona de datos no es escencial para el funcionamiento del virus,
es m s, si queremos podemos no incluirla en el principio del Virus, aunque yo
lo recomiendo para que si alguien mira el Boot infectado, no sea tan f cil
darse cuenta de que esta infectado-.

El Boot sector termina con los bytes 55AA en el offset 1FE Hex que le
indican al BIOS que es un boot v lido.

En la Tabla de Particiones, o tambi‚n llamada Master Boot Record hay un
codigo ejecutable junto con una tabla de datos que contiene informaci¢n sobre
las particiones del Hard Disk (Long de cada partici¢n, Particion Booteable,
etc), ‚sta tabla est  ubicada en los £ltimos 66 Bytes de este sector,
comenzando en el offest 446 (1BE Hex) con la siguiente estructura de datos:

Partici¢n Nø1: offset 1BEh ÷ 1CDh
Partici¢n Nø2: offset 1CEh ÷ 1DDh
Partici¢n Nø3: offset 1DEh ÷ 1EDh
Partici¢n Nø4: offset 1EEh ÷ 1FDh

Ejemplo para la Partici¢n Nø1:
Offset - Cantidad - Descripci¢n
1BEh - 1 Byte - Boot
1BFh - 1 Byte - Side \
1C0h - 1 Byte - Sector > Start Location
1C1h - 1 Byte - Cylinder /
1C2h - 1 Byte - System
1C3h - 1 Byte - Side \
1C4h - 1 Byte - Sector > End Location
1C5h - 1 Byte - Cylinder /
1C6h - 4 Bytes - Relative Sectors
1CAh - 4 Bytes - Number of Sectors

La tabla de datos termina con los bytes 55AA en el offset 1FEh al igual
que el Boot Sector y tiene el mismo fin.

A diferencia de la tabla de datos que tiene el Boot Sector, ‚sta si es
esencial para el correcto funcionamiento del DOS, si ‚sta tabla no est 
presente en el primer sector de HD, el DOS no podr  reconocerlo y no podr 
usarlo. Por lo tanto debemos tener una copia de esta tabla al final del virus
para que no haya ningun tipo de problemas con el DOS. El codigo ejecutable se
encarga de interpretar ‚sta tabla de datos para poder cargar del HD el BOOT de
la partici¢n booteable activa en ese momento. El BOOT que est  en ‚sta
partici¢n es exactamente igual al que est  en un diskette.

Este programita (tanto el codigo ejecutable del BOOT como el de la TP)
es cargado por el BIOS en la direcci¢n 0:7C00 Hex y se le pasa el control a
‚ste. Ahora ¨Qu‚ pasar¡a si en lugar de este prog., lo que se cargara fuera
nuestro Virus?. Facil!, tendr¡amos el control de la m quina desde el primer
momento.

% Funcionamiento del Virus %

Ahora nos dedicaremos a ver que es lo que tenemos que hacer para
reemplazar el Boot o la TP original por nuestro Virus. Lo primero es copiar el
Boot o la TP original a un lugar seguro (por ej. en el caso del Boot, al ultimo
sector del directorio, y en el caso de la TP, a un lugar del HD que no se
utiliza que puede ser cualquier sector del lado 0 del primer cilindro) y
sobreescrivirlo con nuestro virus, colocando al principio de este la tabla de
datos del Boot, o al final la tabla de datos de la TP seg£n sea el caso. Lo
siguiente trata de ser un diagrama de flujo de nuestro Virus ejemplo, para
entender como funcionan los virus de Boot:

Start:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Resta 1K de mem. ³
³ y se instala all¡ ³
ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÙ
³ Handler INT 13h:
ÚÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ¿
³ Tomo la INT 13h ³ ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿
ÀÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÙ ³ R/W de ³No ³ INT 13h ³
³ ³ A:? ÃÄÄÄÄÄ´ original. ³
ÚÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ¿ ÀÄÄÄÂÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
³ Cargo la TP o el ³ ³S¡ 
³ Boot en 0000:7C00h ³ ÚÄÄÄÁÄÄÄÄ¿ ³
ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÙ ³ estaba ³S¡ ³
³ ³ infec? ÃÄÄÄÄÄÄÄÄÄÄÄ´
ÚÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ¿ ÀÄÄÄÂÄÄÄÄÙ ³
³ Me fijo si se ³HD ³No ³
³ cargo de flopy o ÃÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ¿ ³
³ del HD. ³ ³ ³ Salva el Boot ³ ³
ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÙ ³ ³ orig. en disco ³ ³
³Flopy ³ ÀÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÙ ³
ÚÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ¿ ³ ³ ³
³ Me fijo si el ³S¡ ³ ÚÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ¿ ³
³ HD ya estaba ÃÄÄÄÄÄÄÄ´ ³ Copia la tabla de ³ ³
³ infectado ³ ³ ³ datos al principio³ ³
ÀÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÙ ³ ³ del Virus. ³ ³
³No ³ ÀÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÙ ³
ÚÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄ¿ ³ ³ ³
³ Salva la TP ³ ³ ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ¿ ³
³ orig. en disco ³ ³ ³ Escribe el Virus³ ³
ÀÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ ³ ³ en el Boot. ÃÄÄÄÄÄÄÙ
³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ¿ ³
³ Copia la tabla de ³ ³
³ datos al final ³ ³
³ del Virus. ³ ³
ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÙ ³
³ ³
ÚÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄ¿ ³
³ Escribo el Virus ³ ³
³ en la TP ³ ³
ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÙ ³
³ ³
ÚÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ¿ ³
³ Salto a 0000:7C00h ÃÄÄÄÄÙ
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

El Boot tiene una longitud de 512 Bytes (200 Hex), por lo tanto el
cuerpo principal del Virus no puede superar esta long. (si se necesita m s
Bytes se pueden usar m s sectores del disco), como restamos 1K (1024 Bytes) de
mem. base, nos quedan justo 512 Bytes libres para usar como buffer de lectura y
all¡ leeremos el Boot para copiarlo o compararlo con alguna etiqueta que le
hallamos puesto, para poder saber si un disco ya estaba infectado o no. Una vez
que el virus ya est  en activo memoria, tenemos que leer el Boot original en la
posici¢n 0:7C00 Hex y transferirle el control a ‚ste, para que la instalaci¢n
del DOS siga con toda normalidad, como si no hubiera pasado absolutamente nada!

Bugs Bunny [DAN]

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT