Español | English
rss facebook linkedin Twitter

Protección del software (Parte I)

Aprovechando la proximidad del evento Asegúrat IT III, vamos a iniciar una serie de post (en principio semanales) en los que vamos a tratar la seguridad del software.

Este termino puede albergar dos significados diferentes:
  1. La seguridad desde el punto de vista de que una aplicación mal programada ponga nuestro equipo en peligro y pueda causar denegaciones de servicio o incluso llegar a ejecutar código no deseado.
  2. La seguridad de la propia aplicación ante la copia/modificación de la misma por terceros.
Si el problema es el del primer caso, probablemente nos encontremos ante un déficit en la formación del desarrollador en temas de seguridad, una posible falta de concienciación y una falta de testing/auditoría de la aplicación y código fuente, Por supuesto, también puede ocurrir porque, como cualquier proceso en la industria, el desarrollo del software se realiza con excesivas prisas.

Por ejemplo, no es de recibo que una aplicación que se instala como servicio y corre con permisos de SYSTEM se cree con un ACL a cero y permita que cualquier aplicación inyecte código en el proceso y pueda ejecutar el código que desee con los permisos del servicio. Lamentablemente, esto sucede, y no solo en aplicaciones “amateur” ;)

Pero el segundo caso es el que me interesa analizar en esta serie de post. Antes de nada, veamos en que situación nos encontramos.

Hoy día podemos ver como Internet se encuentra plagado de software privado, software de pago, etc. Pero también podemos observar como para todos estos programas (o casi todos), disponemos del parche o número de serie correspondiente, capaz de eliminar limitaciones y proporcionar un software completo.

Por supuesto, a sabiendas de que la gente va a descargar un fichero y lo va a lanzar, no faltan los regalitos que acompañan a dichos parches, pero esto es ya otro tema.

La primera preguntas que nos pueden surgir son, ¿quién se encarga de realizar estos parches? ¿quién sabe sacar un número de serie de un programa? ¿es fácil? ¿requiere mucho tiempo? ¿qué obtiene a cambio?.

La respuesta a estas preguntas es compleja. Antes que nada, cabe destacar que la dificultad y el tiempo requeridos depende tanto de la protección que tenga el programa como de la habilidad de la persona que realiza al ingeniería inversa, o de si ha podido analizar con anterioridad un esquema de protección similar, etc. Lo que está claro es que puede llegar a ser una tarea muy difícil y requerir mucho tiempo.

Hay quien lo hace por hobby (existe más afición por la ingeniería inversa de la que mucha gente imagina), pero está claro que el que analiza aplicaciones para pasar el rato o aprender cosas nuevas no se dedica a sacar un parche tras otro, sino que por lo general tiende a investigar nuevas protecciones, muchos dan el salto al mundo del exploiting, etc. En definitiva, no son nuestro hombres.

No hay que fijarse demasiado para ver que muchos parches llevan la firma de un “grupo”. Generalmente en un grupo dedicado a la distribución de warez. Existen miembros a los que se le proporcionan aplicaciones “recién salidas del horno” y, a cambio de X cracks o números de serie por semana, se le da acceso a un servidor ftp privado desde el que descargar warez.

Por supuesto, y como tiene que haber de todo en este mundo, encontraremos a quien lo haga por dinero. Esto no lo he podido constatar, pero, ¿piensas que no es posible? Por ejemplo, una manera de lucrarse consiste en tener una buena página de warez plagada de publicidad. El disponer software actual pirateado es un muy buen reclamo para los visitantes y, si dicho software tan solo se encuentra pirateado en tu página, te estás asegurando muchas visitas.

En el siguiente post comentaremos algunos esquemas de protección que nos podemos encontrar en el software.

Nota: Puede que la palabra parche (entre otras) no sea la más adecuada, porque si nos ponemos quisquillosos puede no abarcar loaders, etc., pero voy a intentar explicar el tema de una manera llana hasta que no haya más remedio que entrar en tecnicismos ;)

Mikel Gastesi
S21sec labs

10 comentarios:

Alberto dijo...

Muy interesante! Espero ansioso las siguientes entregas

Lobosoft dijo...

La verdad es que sí, una interesante cuestión. Sin duda, "romper" el software es una práctica más que habitual en cuanto nos encontramos con una aplicación con una distribución medianamente importante. Partiendo de la premisa de que todo software se puede "romper", sin duda es un juego de gato y ratón el intentar proteger tu software ante ataques de uno u otro tipo.
En mi blog incluí hace unos meses unas rutinas que pueden descargarse para proteger software asociándolo a un dispositivo físico (una memoria USB en este caso), y dentro de poco quiero publicar alguna ampliación al respecto. Si os parece de interés, podéis encontrar el artículo en Lobosoft.

Gracias. Y espero la continuación de la serie :)

Un saludo.

Álvaro Del Hoyo dijo...

Otra opción de proteger el software puede ser el "cloud computing" ;-p

S21sec labs dijo...

Gracias a todos por los comentarios.

La idea de tener una "ayuda" externa siempre ayuda, pero sobre todo si lleva parte de la lógica de la protección, ya que una mera comprobación se puede saltar más o menos fácilmente.

Viendo tu ejemplo, lobosoft, mucho me temo que la aplicación se basa en un check true/false, por lo que revertiendo la lógica del if conseguiríamos pasar esta comprobación.
--
if (CheckUSB.CheckUSBKey())
--

Pienso que sería más útil (totalmente subjetivo ;) ) que te devuelva el número de serie del pendrive y utilices éste código para descifrar el programa en memoria, de tal manera que un código erróneo provoque un fallo en la aplicación, fallo que puedes manejar con un seh o similar.

Saludos,

Anónimo dijo...

Otra vez yo Mr_anonimato jeje

En esta ocasión vamos a hablar de crackear por dinero para poder constatar lo que el compañero Mikel Gastesi no ha podido :)

Bien veamos... por donde empezamos?

Exploits y cracks.

Igual que hay gente que se dedica a programar exploits de tipo 0days o el que hace malware indetecable a los AVs o el que programa cypters privados para esto mismo hay que gente que paga por cracks.

Mucha gente se imaginara, pero...como es esto posible?

Pues muy facil el dinero :)

Hay muchas aplicaciones de tipo CAD que son muy muy caras que casi todas por no decir todas llevan proteccion de algún tipo de mochila y por la mitad de precio o menos inclusive puedes hacerte con ellas pagando el servicio de un cracker o grupo de ellos que generalmente son rusos (Con esto no quiero decir que todos los rusos sean unos delincuentes ;))

Sé de varias paginas que se dedican a crackear aplicaciones con mochilas pero como no sé si se pueden poner aquó nombres para que no me borren el post que tanto sudor/esfuerzo me está costando no los pondré :)

Bien dejando de lado esos servicios hay otros como el del mundo de GSM o liberación de móviles en el que se mueve mucha pastica :) en el que todo el mundo se copia y en el que todos los "creadores" de aplicaciones de liberación intentar proteger sus creaciones con todo tipo de mochilas y packers para evitar que les "copien" el trabajo que tanto les ha costado conseguir para poder liberar alguna marca/modelo de movil.

Por lo que aqui entra el juego de contratar a crackers para que a algún creador de GSM del "montón" a mi entender les desempaqueten las aplicaciones protegidas para que ellos puedan copiar códigos de liberación.etc y evidentemente por dinero de por medio y no poco :)

Y ya para finalizar decir a Mikel Gastesi que la idea que el comenta al final del post para poder lucrarse a través del WAREZ ya está muy extendida como por ejemplo pagar una cuota al mes por GB bajados y velocidad en algún FTP server privadete.

Aunque bueno ese sistema no es nada nuevo y ahora lo "normal" es pagar un dinero al año o por una cuenta vitalicia y bajar desde un foro privado desde cuentas rapidshare "premium" montones y montones de warez diariamente

Y ahora si que ya termine :)

Espero no haber ofendido a nadie y que no borren el post jeje

S21sec labs dijo...

Hola Mr_anonimato,

jejej, como bien dices, el tema de la publicidad no era una idea, sino algo usado hoy día.

y por lo demás, $$$. El soft pirateado existe y se puede descargar y comprar, al igual que existen emuladores para las diferentes mochilas.

Uniendo el tema con el comentario del GTA en la segunda parte de esta serie de post, decir que siendo todos los programas muy buenos, la diferencia radica en el "muy muy caro" que comentas, pero volvemos a temas totalmente subjetivos.

gracias por el comentario, muy bueno

Anónimo dijo...

De nuevo yo :) el "sin nick" jeje
En realidad si que tengo,aunque lo dejé de usar cuando abandoné la scene del cracking.
Y como fue una etapa de mi vida que acabó,el nick se fue con el.

Por lo que sigo siendo anonimo en parte claro está :)

Dicho esto que sé que no venía al caso vayamos al lio jeje

Respecto al tema de los emuladores para las mochilas me gustaría hacerte una pregunta :)

-Venderlas es delito? Y no entro en el tema de si es ilicito o no, si no en si es legal.

Por ejemplo si yo vendo un unpacker de un protector no estoy haciendo nada ilegal? O si ya que no sé como está el tema del EULA,etc

Pero ahí también entra entonces el tema de búsqueda de vulnerabilidades que por narices tienes que ver código :)

O por ejemplo el que hace un debugger o desensamblador (que no desesamblador :) )

Porque por ejemplo hay descompiladores para flash y se venden sin ningun problema en sus paginas oficiales.

Y ya no hablemos del mundo .NET :)

Al igual que hay programas para quitar el password de un archivo pdf

Entonces por esa regla de tres si yo hago un unpacker para una aplicación y lo vendo no estoy haciendo nada ilegal.

Las casas antivirus tienen unpackers internos que usan para mejorar el motor de su AV el cual luego venden.

Entonces......

No hablo de vender cracks si no de crear una aplicación :)

S21sec labs dijo...

Hola "sin nick",

No se si vender el emulador de la mochila es ilegal o no.

Supongo que la questión es: ¿Hasta que punto es legal ver código? Como bien dices, afecta a unpackers, mochilas, descompiladores...

Supongo que todo lo que vaya contra aplicaciones concretas no es muy legal.
Para un debugger o desensamblador puedes basarte en la arquitectura y aplicaciones propias, por lo que supongo que no tendrán ese problema.

Y para los recuperadores de contraseñas por fuerza bruta, por ejemplo, tal vez puedan argumentar que no intentan romper la protección, ya que solo automatizan la descompresión. El uso que se le de es otra cosa...

A ver si se moja alguien que sepa un poco más de de estos temas ;)

Saludos,

Anónimo dijo...

La mejor forma que he encontrado para proteger mis aplicaciones ha sido la llave Cm de Wibu.

Anónimo dijo...

Yo tengo 1 llave usb tipo HardKey, la cual puedo grabar informacion en ella tambien puedo leer el nro de la llave, cual piensan ustedes que seria la mejor forma de proteger con 1 medio externo, si como comentan de todas formas podrian saltear la proteccion.
Entonces no hay forma posible de proteger una aplicacion, salvo complicarla no mas ?
Gracias por sus comentarios.


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login