Virus? opciones en w$, gnu/linux y máquina virtual

Hace poco un amigo me habla preocupado porque instaló un virus en su computador. Si textual, él lo instaló. La razón de haber cometido ese error, fue el típico que envuelve al mundo micro$oft, el que los productos que tienen son privativos y de costos muy elevados, así que buscando un crack se encontró con una explosión de archivos infectados.

No soy quien para juzgarlo, así que tomé sus discos duros y me los llevé para revisarlos. En total tiene 2 discos, un HDD y un SSD, en el primero tiene su vida, toda la información relevante y en el segundo el sistema operativo (que corre muy rápido en ese disco). Según la información recopilada y sobre todo, consultando mucho en diferentes lados, las posibilidades que el virus se hubiese propagado por el primer disco eran muy bajas, así que algo más tranquilo preferí comenzar con el disco de estado sólido (SSD) y formatearlo.

Disco externo en una máquina virtual

El proceso de formateo está en este link, para los pasos siguientes conviene sacar y volver a colocar el disco, para asegurarse que está montado.

Preparando el disco externo

Para este post se trabajó con el programa VirtualBox, es necesario que esté instalado para poder continuar con el procedimiento. Las instrucciones para usar un disco externo desde una máquina virtual, las encontré en éste link, recomiendo que se lea, la información usada acá es para usuarios de GNU/Linux.

1° Dar acceso al usuario al grupo Disk

*Nota: Esto genera una grave vulnerabilidad en el sistema.

En la terminal ingresamos como super usuario.

peumo@Bosque:~$ sudo su
[sudo] password for peumo:
root@Bosque:/home/peumo#

Ahora ingresamos el siguiente código, con el que estamos diciendo usermod añade al usuario al grupo disk

usermod -a -G disk nombredeusuario

Para activar el cambio, es necesario cerrar la seción y volver a entrar.

Creando la imagen del disco

Ahora colocamos el disco duro que nos servirá para la máquina virtual. En la terminal nos aseguramos que la dirección del disco esté en sdb con lsblk y escribimos el siguiente código:

VBoxManage internalcommands createrawvmdk \
-rawdisk /dev/sdb \
-filename ~/.VirtualBox/Disco_duro.vmdk

El signo “\” indica que el código continua, es decir, solo se separa para que sea visualmente legible. Asímismo, el signo “~” acorta la dirección a la carpeta personal del usuario.

Importante: Este codigo es sin escribir sudo, sinó habrá problemas de permisos.

El resultado será una imagen como la siguiente:

El resultado es una especie de canal que le permite a la máquina virtual entrar al disco externo.

*Importante: Cualquier cambio en el disco desde la máquina virtual se realizará de forma efectiva.

Trabajando con la máquina virtual

En la web hay mucha información sobre como trabajar con máquinas virtuales, aquí solo se hará paso a paso con imagenes de la configuración del disco externo:

Paso 1

Aunque parezca obio, lo primero es abrir el programa, la interfaz gráfica puede cambiar, pero igual tendrá un botón nuevo, le hacemos click.

Paso 2

Aquí aparecerán los detalles de la máquina a crear, en este caso el nombre que elegimos para la máquina virtual es “test”, pero puedes colocar el que tu quieras. Puedes modificar el tipo de sistema operativo y la versión/distribución a utilizar. Una vez definido, apretamos siguiente.

Paso 3

En esta parte colocamos la memora ram que tendrá la máquina, entre 1 y 2Gb está bien. Apretamos siguiente.

Paso 4

Aquí colocamos usar archivo de disco duro virtual existente y apretamos la carpeta para buscar en el sistema.

Paso 5

Nos aparecerá esta pantalla:

La cual aún no tiene un disco. Le damos en agregar y buscamos la dirección donde guardamos el disco.
y aparecerá:

Le damos siguiente:

Y crear. Así tenemos nuestra máquina virtual con un disco duro externo.

Paso 6

En este paso se instala el o los sistemas operativos que se necesiten, como se explicó anteriormente, no nos detendremos en explicar como se instala el SO en una MV (Maquina Virtual), para más información en una búsqueda rápida por internet, encontré estos articulos (Link1 y Link2)

Revisar que existan virus en el disco personal

Con lo anterior listo, mi amigo ya no se tiene que preocupar por tener el SO (Sistema Operativo) instalado. Ahora solo queda rezarle a algún dios de turno que no existan virus entre sus documentos.

Revisar el disco en GNU/Linux

Ante la emergencia aparecio un antivirus para GNU/Linux llamado ClamAV, debo decir que fue maravilloso encontrarme con este programa. Para instalar se utiliza el código:

sudo apt install clamav

y para buscar archivos infectados, utilizamos:

clamscan -r -i /directorio

-r Genera una busqueda recursiva, es decir, entra a cada una de las sub carpetas.
-i Genera una lista con los errores y archivos infectados.
/directorio Especifica la ruta donde se generará la búsqueda.

Después de algunos minutos (u horas si el disco es muy grande) tendremos el resultado, sabremos que terminó la busqueda por que la terminal está liberada.

Es muy probable que los crack y keys para programas de W$ sean considerados amenazas o virus.

Revisar el disco en Window$

No alcancé a ocupar este método, el programa ClamAV cumplió muy bien mis espectativas, pero es bueno tener un “As bajo la manga”, me recomendaron hiren's boot cd. Según la información que aparece en internet es bastante útil (link1 y link2).

Es importante recalcar que la seguridad se encuentra en nuestros hábitos, utilizar Software Libre no es solo una cuestión económica, sino también ética y de seguridad.

Posted in GNU/Linux | Leave a comment

Formatear y bootear un disco o pendrive

Suele pasar que se me olvida como formatear y posteriormente grabar una imagen en un pendrive, por esta razón va este post.

Formateando el pendrive

Primero que todo, es necesario revisar que puertos son los que se están utilizando, para ello tenemos

  • sudo fdisk -l
  • lsblk

Comando fdisk

Al utilizar sudo fdisk -l

entregará una respuesta como esta:

Disco /dev/sda: 931,53 GiB, 1000204886016 bytes, 1953525168 sectores
Modelo de disco: TOSHIBA xxxxxxxx
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 4096 bytes
Tamaño de E/S (mínimo/óptimo): 4096 bytes / 4096 bytes
Tipo de etiqueta de disco: gpt
Identificador del disco: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Disposit. Comienzo Final Sectores Tamaño Tipo
/dev/sda1 2048 1023999 1021952 499M Entorno de recuperación de Windows
/dev/sda2 1024000 1228799 204800 100M Sistema EFI
/dev/sda3 1228800 1261567 32768 16M Reservado para Microsoft
/dev/sda4 1261568 409602047 408340480 194,7G Datos básicos de Microsoft
/dev/sda5 409602048 425226239 15624192 7,5G Linux swap
/dev/sda6 425226240 1953523711 1528297472 728,8G Sistema de ficheros de Linux

Disco /dev/sdb: 7,7 GiB, 7591690240 bytes, 14827520 sectores
Modelo de disco: USB Flash Drive
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0xc0555c47

Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo
/dev/sdb1 * 2048 60555263 60553216 7,7G c W95 FAT32 (LBA)

Comando lsblk

Al usar este comando entrega un esquema simple de los discos utilizados:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 499M 0 part
├─sda2 8:2 0 100M 0 part
├─sda3 8:3 0 16M 0 part
├─sda4 8:4 0 194,7G 0 part
├─sda5 8:5 0 7,5G 0 part [SWAP]
└─sda6 8:6 0 728,8G 0 part /
sdb 8:16 1 7,7G 0 disk
└─sdb2 8:18 1 7,7G 0 part /media/usuario/Dispositivo

De ambos comandos podemos sacar la dirección donde se ubica el dispositivo externo (/dev/sdb1).

Para poder formatear el disco, necesitamos desmontarlo. Para ello escribiremos:

sudo umount /dev/sdb1

Podemos corroborar (opcional) que el disco está desmontado, escribiendo nuevamene lsblk y aparecerá algo como esto:

AME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 499M 0 part
├─sda2 8:2 0 100M 0 part
├─sda3 8:3 0 16M 0 part
├─sda4 8:4 0 194,7G 0 part
├─sda5 8:5 0 7,5G 0 part [SWAP]
└─sda6 8:6 0 728,8G 0 part /
sdb 8:16 1 7,7G 0 disk
└─sdb2 8:18 1 7,7G 0 part

Donde se puede apreciar que la dirección sdb1 ya no está montada.

Ahora es posible formatear el disco, en este caso queremos hacer un disco que pueda ser leido por sistemas operativos de baja calidad como window$, con el código

sudo mkfs.fat -F 32 -n NOMBRE_USB /dev/sdb1

se formatea el disco con formato FAT. (El nombre debe estar en mayúsculas)

Booteando el pendrive

Una vez formateado el pendrive (y aún sin montar), copiaremos la información de un archivo iso al pendrive, para esto utilizaremos el programa dd.

dd permite copiar información de un punto a otro byte a byte.

en la terminal nos dirigimos a la carpeta donde se ubica el iso que utilizaremos, en este caso utilizaremos el iso con nombre Imagen.iso. Reconocido el archivo iso y la dirección del disco externo desmontado, utilizamos el programa dd con el código

sudo dd if=Imagen.iso of=/dev/sdb1

Esperamos que termine de cargar y tendremos nuestro pendrive booteable.

PD: al utilizar dd, el pendrive queda completamente utilizado, sin importar que el pendrive fuese más grande que el archivo iso.

Posted in GNU/Linux | Comments Off on Formatear y bootear un disco o pendrive

Pasar de pdf a imagenes para trabajarlos en scantailor

Tengo un monton de libros digitales que he estado imprimiendo para encuadernar. El problema es que algunos de estos libros son digitalizaciones de baja calidad, donde ambas páginas aparecen juntas, o,libros en posición horizontal que no resulta cómodo de trabajar al momento de pasarlo a cuadernillo.

Lo primero que realicé, fue buscar información en la red, es así como llegué a este foro (convertir pdf a jpg), en él dan a conocer 2 herramientas: ImageMagick y pdfimages. El primero es un conjunto de herramientas, al realizar man imagemagick en la terminal, lo primero que nos muestra es:

ImageMagick – es un paquete de software gratuito para la creación, modificación y visualización de imágenes de mapa de bits.

De este paquete utilizaremos convert. La segunda herramienta es un poderoso script que analiza las imagenes dentro del pdf y luego las extrae en diferentes formatos (para saber más instalar pdfimages, manual1, manual2). Al buscar en su manual (man pdfimages) nos aparece:

pdfimages – Extractor de imágenes en formato PDF (version 3.03)

Siguiendo las recomendaciones del foro, utilice pdfimages para libros escaneados, con la siguiente estructura pdfimages -j libro_completo.pdf nombre_imagenes, notese que el nombre de las imagenes no contiene extensión, puesto que el -j le informa al programa que debe entregarlos en jpg. Para este tipo de documentos, viene muy bien este script, puesto que toda la página es una imagen, pero para libros que son una composición de imagenes, solo extrae las imagenes por separado y sin el texto.
Para casos como estos es recomendable usar convert con con sus diferentes opciones, pero el resultado no fue el esperado, las imagenes resultantes son de mala calidad. Probe comprimiendo la imagen con ps2pdf, pero no genera ningún cambio. Con un libro en específico no me generó un error al utilizar convert:

$~ convert Libro_problematico.pdf libro_imagen.jpg
como resultado me dio:
**** Error: stream operator isn't terminated by valid EOL. Output may be incorrect.

Al no poder trabajar con este pdf, generé un nuevo documento, es decir, imprimí el documento problemático en un nuevo pdf, la calidad es relativamente la misma, pero al momento de usar convert no me genera problemas… o eso creia.

Mientras buscaba soluciones, me recomendaron pasar las imagenes a la extensión .tiff puesto que mantiene la resolución de la imagen, pero al escribir el código convert Libro_problematico.pdf libro_imagen.tiff el resultado era una sola imagen con extensión .tiff con la portada del documento.

Ahora estoy probando otra estrategia, dividir el libro en pdf’s de cada hoja, esto lo logré con la herrmaienta pdftk, con la opción burst que permite dividir las hojas, el código utilizado fue: pdftk Libro_problematico.pdf burst.

En el foro del primer link, aparece una opción para generar un bucle o repetición con convert, al modificarlo para mi necesidad queda de la siguiente forma:

for file in pg_0*.pdf
do
convert -interlace none -density 212x203 -quality 100 $file ${file/pdf/tiff}
done

La traducción del código sería:

Para los archivos escritos de esta forma
hacer
convertir con la opción ‘sin separación de rgb’ ‘tamaño de la imagen’ ‘a maxima calidad’ el $archivo y que salga con extensión tiff

El resultado es una imagen por cada página.

Continuará…. Continue reading

Posted in GNU/Linux | Comments Off on Pasar de pdf a imagenes para trabajarlos en scantailor