Showing posts with label Windows. Show all posts
Showing posts with label Windows. Show all posts

Sunday, February 03, 2019

¿Por qué sigue habiendo virus en Windows?



Hace un par de días enfrenté un virus ransomware en mi máquina. Miren que me precio de estar bien educado en cómputo: no abro archivos de correos que desconozco, no bajo programas de sitios inseguros, no hago cosas que en general hacen que las máquinas se infecten, pero de alguna manera entró este virus ransomware (“rapid” se llama) en mi máquina y empezó una pequeña pesadilla.

Lo primero que noté es que la máquina parecía estar lenta. Tardaba incluso en refrescar la pantalla rápidamente, como siempre lo hacía. No le di demasiada importancia pero habría que habérsela dado, pues fue un síntoma importante. Pero al día siguiente, al arrancar la máquina, empezó con un comportamiento errático y entonces empecé a sospechar que algo realmente andaba mal. El administrador de tareas se cerraba sin que yo lo hiciese o había un aviso de querer re-arrancar. Y de pronto, apareció un mensaje diciendo que mis archivos estaban encriptados. Escuché entonces que el disco duro tenía una actividad exagerada. Apague la computadora entonces y decidí investigar qué hacer.

Como ya el virus me había dicho que había cifrado mis archivos, sabía de qué se trataba. Encendí la máquina y maté todos los procesos que me parecieron sospechosos. Un archivo llamado info.exe parecía ser el culpable del cifrado. Los archivos comprometidos tenían todos un añadido, que era ".rapid".

Aparentemente el virus había hecho su tarea y se había auto-borrado. La razón de esto es que si alguien puede hacerse del virus, quizás pueda ver cómo cifró la información y así ayudar a los usuarios afectados a descifrar la misma. Desde luego que se me pedía un rescate en bitcoins, el cual no pensaba dar por dos razones: primero, porque está demostrado que una vez que se paga, prácticamente nadie recibe el decodificador de los archivos cifrados y los ciber-criminales en realidad no les importa ayudar. Hicieron lo que quisieron, se salieron con la suya y finalmente ¿quién confía en quien te hace daño?

Revisando los archivos comprometidos, encontré que el virus había cifrado mis carpetas con mi tesis. Cada vez que hacía modificaciones a la misma, copiaba toda la carpeta y las iba numerando. Tenía las últimas cinco o seis versiones de la tesis. El virus cifró las imágenes realmente, pero no mis archivos “.bib” y “.tex”. También el virus cifró una carpeta de archivos públicos con imágenes y un par de carpetas donde tenía mi código fuente de mis programas en Delphi. Parecía pues un desastre.

Pero en realidad, como mencioné al principio de este artículo, fue una pequeña pesadilla, porque tengo respaldo de todo, de mi tesis, de mis imágenes, de mi software, etcétera. Simplemente borré los archivos cifrados y puse los nuevos. Esto me salvó de un feo coraje y de un problema que me hubiese quitado mucho tiempo solucionar.  Vamos, en un par de horas tenía todo de nuevo como estaba originalmente.

Entonces me pregunté ¿por qué Windows sigue teniendo estos problemas de seguridad? ¿Por qué no es como Linux o OS X? Hay muchas razones para ello. La primera es que Windows está construido en un sistema de archivos en donde en una sola carpeta está todo el sistema (C:\Windows). Si eliminamos uno de los archivos de esa carpeta podemos dejar inutilizado el sistema. En Linux no es así, pues hay varias carpetas del sistema, por ejemplo /bin, /usr, /root. Vamos, el sistema está distribuido en muchas carpetas. Una segunda razón es que en Windows los programas tienen la extensión .exe, lo que hace que los criminales y programadores de virus puedan atacar estos archivos. En Linux no se necesita de estas extensiones particulares, pues se pueden crear modos para que los archivos hagan lo que queramos y no necesitamos siquiera ponerle extensión.

Pero quizás lo más importante: Linux tiene un sistema de archivos con permisos, en donde cada archivo puede ejecutarse, leerse o escribirse. Esto puede regularlo el usuario y así, por ejemplo, cualquiera puede meterse a mis archivos, por ejemplo, pero no puede, si no quiero, que los modifique. Los permisos los da cada usuario del sistema. Esto se puede hace también con las carpetas, por lo que un virus podría adentrarse, pero si no tiene los permisos del usuario, no puede modificar ningún archivo de ninguna carpeta.

Esto no quiere decir que Linux no pueda sufrir de virus, pero claramente es más difícil que esto ocurra porque el sistema jerárquico de permisos, por mencionar uno de los puntos importantes, permite controlar quién puede leer, escribir o ejecutar un archivo o meterse en una carpeta determinada.

Así, ¿por qué Windows no crea un sistema de permisos? Lo tiene, pero nadie lo usa y además, es poco efectivo porque hay que pasar por una serie de ventanas para hacer esto. Si Microsoft quisiese, debería hacer una forma mucho más simple para realizar esta tarea, además de hacer una jerarquía real en los usuarios para otorgar y dar permisos. Así, por ejemplo, cuando un programa se quiere instalar, el sistema siempre podría avisarle al usuario que alguien está tratando de instalar un programa en particular y entonces podríamos revisar qué está pasando. Muchos antivirus tienen esto implementado y no entiendo por qué Microsoft no toma las acciones pertinentes.

Sí, Windows ha ido evolucionando con los años y un problema que tiene es que debe mantener muchas cosas del pasado para que los siguientes sistemas puedan trabajar con lo que el usuario tiene. Y esto sin duda tiene un costo. Pero claramente, con esta nueva generación de ransomware, bien podría pensarse que hay que decidir nuevas acciones y quizás incluso, ir modificando el sistema para hacerlo de verdad más seguro.

Tuesday, March 01, 2016

Nuevo curso de la programación lúdica


Porque algunas personas me lo han pedido, se me ha ocurrido organizar un nuevo cursillo de programación lúdica, en donde quienes asistan podrán aprender algunos trucos e ideas que les pueden ser útiles no solamente para hacer programas simpáticos, sino como parte de sus actividades profesionales si es que se dedican a escribir código.

Son cinco sábados [o domingos, a definir aún] (3 horas por sesión) (de 4:30 pm a 7:30 pm), empezando el 19 o 20 de marzo del 2016, y quizás una sexta sesión si acaso es necesario ponerla. Nos reuniremos en un lugar que está muy cerca de lo que era el toreo de 4 caminos. Solamente cinco "alumnos" que sepan programar en algún lenguaje de alto nivel, de preferencia C, Java, Python, etcétera.  El costo por alumno es de 2000 pesos por todo el curso, pero el quinto alumno será becado, es decir, a quienes les interese, mándenme un correo a morsa@la-morsa.com y díganme los motivos por los cuales deberían ser becados. A quienes puedan pagar, les sugiero le den la chance de ser otro el que se beneficie de la beca.

Requisitos:

  • Computadora portátil
  • Windows 7, Vista, XP
  • Ganas de aprender
  • Asistir a todas las sesiones
  • Los materiales de software los pongo yo


El plan de trabajo es aprender -desde Delphi- algunas ideas en programación. Pienso que puede ser interesante. Avísenme a quienes les interese.

Tuesday, October 29, 2013

Lazarus, un cuasi-clon de Delphi



Por razones meramente académicas tuve que incursionar en Lazarus, una herramienta de aplicación rápida (RAD, por sus siglas en inglés), que permite programar en un ambiente muy similar a Delphi 7. La filosofía es la misma y Lazarus empezó precisamente como un esfuerzo comunitario para dotar de una herramienta al mejor estilo Delphi pero de código abierto y gratuita.

Hoy en día, me da la impresión, Lazaus es lo suficiente estable y maduro para realizar una buena cantidad de programas en un ambiente verdaderamente poderoso y amigable. Desde luego, no tiene la miriada de componentes que ya Delphi tiene (ver por ejemplo el sitio Torry.net), pero sin duda se ha hecho un estupendo esfuerzo por tener una herramienta funcional de verdad.

Mucha de la documentación de Lazarus puede verse en los diferentes sitios wiki que explican -muchas veces con lujo de detalles- todo lo que hacen las diferentes bibliotecas y componentes. Es a veces incluso abrumador cuando uno busca una información particular. No obstante esto, es siempre mejor en estos casos pecar por exceso.

Dos cosas son diferentes a Delphi. Una de ellas es que evidentemente, compila mucho más lentamente (porque es claro que es difícil vencer a los compiladores turbo de la empresa original, Borland), pero eso no es demasiado grave. Con respecto a los programas de Delphi, para convertirlos a Lazarus, hay poco que convertir en algunos casos (dependerá de la complejidad del software), pero aún así, muchas veces hay instrucciones parecidas, que no iguales, entre una plataforma como Lazarus y la comercial, Delphi.

Por ejemplo, tenemos que en Delphi, puedo mandar pintar un pixel con el color que quiera con la siguiente instrucción:

Image2.Canvas.Pixels[i,j] := RGBToColor(B,G,R);

Mientras que en Delphi 7 se hace así:

Image2.Canvas.Pixels[i,j] := RGB(B,G,R);

No es la gran diferencia, pero hay que saber que existe esata instrucción en Lazarus (RGBToColor) para poderla aplicar y que el sistema no marque error.

Lazarus tiene otras ventajas aparentes sobre Delphi, sin embargo. Una de ellas es ese sueño de crear código en una plataforma y poder correrlo en todas las demás plataformas y sistemas operativos. En principio al menos, código fuente de Lazarus escrito para Windows puede copiarse a Mac o Linux, y recompilar con las reespectivas versiones de Lazarus para generar programas ejecutables en esas plataformas. Eso simplemente no lo puede hacer Delphi.


Quizás la gran diferencia entre Delphi y Lazarus es que la calidad del software comercial, amén que es un esfuerzo que se está haciendo desde 1994, hacen a Delphi aún superior a Lazarus si se trata de crear aplicaciones robustas y de usar la enorme cantidad de componentes y código de terceros. Aún así, Lazarus es un muy buen esfuerzo y claramente con el tiempo será mucho mejor. Es una estupenda opción si se usa Linux (donde Kilyx, la versión de Delphi para Linux se malogró) o Mac OS X, aunque aún con algunas limitaciones.

Friday, October 12, 2012

Audite su computadora


La piratería de software es un fenómeno mundial. Se calcula que la mitad de las computadoras en el mundo tienen al menos un programa pirata, de acuerdo con la Business Software Alliance. Esto debería hacernos reflexionar sobre por qué se ha convertido en algo común hacerse de software pirata. ¿Quién tiene la culpa? ¿Qué provoca que la gente actúe así?

Entre los estudios sobre este tema, destacan las estadísticas sobre qué países son más piratas y cuáles lo son menos. La siguiente gráfica nos puede mostrar el fenómeno de la piratería (datos del 2010).



Pero una nueva pregunta surge naturalmente: ¿Cuáles son los programas más pirateados por la gente? Según la Software & Information Industry Association (SIIA), una organización antipiratería conformada por varios fabricantes de software de los Estados Unidos, elaboró un informe con los programas más pirateados durante el 2007. Es necesario hacer la salvedad que los programas que contabilizan son los que fabrican los miembros de la Organización y, dado que Microsoft no forma parte de ella, ni el Windows ni el Office están en ninguna de las dos listas siendo que seguramente estarían en la nómina si se tuvieran en cuenta todos los programas existentes.

Hay dos listas interesantes: la primera hace referencia a los títulos más pirateados por las empresas, mientras que la segunda tiene en cuenta a los programas pirateados en Internet.

Por compañías:

  1.  Symantec Norton Anti-Virus
  2.  Adobe Acrobat
  3.  Symantec PC Anywhere
  4.  Adobe PhotoShop
  5.  Autodesk AutoCAD
  6.  Adobe DreamWeaver
  7.  Roxio Easy CD/DVD Creator
  8.  Roxio Toast Titanium
  9.  Ipswitch WS_FTP
  10.  Nero Ultra Edition

En Internet:
  1. McAfee VirusScan
  2. Symantec Norton Anti-Virus
  3. McAfee Internet Security Suite
  4. Intuit TurboTax
  5. Adobe Photoshop
  6. Adobe Acrobat
  7. Intuit Quicken Home and Business
  8. Symantec Norton pcAnywhere
  9. Symantec Norton Ghost
  10. Adobe Creative Suite

Uno de los objetivos de estas asociaciones en contra de la piratería es buscar la manera de disminuir el efecto de la misma. Para ello intentan el que las empresas en particular, auditen las computadoras que usan para no caer en esta práctica, con las amenazas legales que esto conlleva. Pensemos por ejemplo en una compañía que tenga cientos de computadora. ¿Cómo hacer para que los usuarios, por ejemplo, no instalen software pirata? Se puede tener control pero éste no puede contemplar todos los casos ni qué hacen los usuarios de estos equipos. Muchas veces, por ejemplo, se pueden bloquear sitios en donde hay software pirata, pero hay tantos sitios que alojan estos contenidos de forma ilegal, que es complicado mantener un estricto control.

Con esto en mente, se me ocurrió que la programación lúdica podría ayudar. Así nació un programa que audita la PC, que verifica qué programas han sido instalados en Windows y con ello, tener información sobre qué software tiene una computadora instalado. Con esto a la mano, se podrían tomar decisiones sobre qué hacer en caso de hallar software "mal habido".


Cabe decir que al principio pensé que revisar una computadora, para ver qué programas había sido instalados, sonaba complejo. Suponía que tenía que revisar todo el disco duro, buscando los archivos con terminación ".exe". Esto implicaría analizar cada carpeta del disco, asunto que podría llevar horas incluso. Sin embargo, de pronto hallé una solución simple: analizar el archivo del registero en Windows, el Registry, el cual es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que hay funcionando en la plataforma: hacen uso del registro el kernel, los controladores de dispositivos, los servicios, el SAM, la interfaz de usuario y las aplicaciones de terceros. El registro también proporciona un medio de acceso a los contadores para generar un perfil del rendimiento del sistema.

Revisando el API de Windows hallé las llamadas para interactuar con el Registro de Windows y entonces mi programa, en un santiamén, puede desplegar qué aplicaciones están instaladas.

A quien le interese, escríbame a morsa@la-morsa.com y se lo enviaré de manera gratuita.