lunes, 17 de noviembre de 2008

Winrar: I give up

Alien [blackhat4all@gmail.com]

Todo aquel que me conoce desde hace ya varios años, sabe que entre mis quimeras se encuentran:
1. Encontrar vulnerabilidades en Windows
2. Encontrar vulnerabilidades en Winrar
3. Perder un poco de tiempo con lo números primos
4. Encontrar algunas cositas más sobre...

Del primer caso está más que claro que existen así como en el cuarto, no sucediendo lo mismo con el segundo y tercero; no obstante estoy totalmente convencido de que el triunfo solo se alcanza con la perseverancia y como no estamos hablando de cosas triviales, las trabas que me pueda encontrar no son razones suficientes para desalentarme. Además, uno de los requisitos es lograr no solo encontrar nuevos bug en dichos programas o servidores, sino llevarlos a explotación sin contar con otra herramienta que no sean mis propias manos, cosa esta que hace más difícil la tarea.

No obstante, por la inmensa carga de trabajo que tengo últimamente, me declaro un fracasado totalmente al menos con el Winrar, así que dejaré a un lado todo análisis que haya hecho sobre el tema no sin antes compartirlo con ustedes.

Básico

Empezaré por lo que considero básico y de dominio general aunque sin adentrarme mucho en el tema pues, como quiera que se mire, es algo básico, y de dominio general ;)

Winrar permite no solo comprimir, sino escoger el nivel de compresión adecuado para cada cosa; acepta password, opciones personalizadas, exclusión de archivos, cargar comentarios y el resultado final puede ser dividido en varias partes de tamaño similar en caso que, aún compactado, el archivo .rar no quepa en el dispositivo en que queramos guardarlo.

Después de mucho intentar, leer y estudiar, acepto que quizás el método de compresión que utiliza Winrar es uno de los mejores, no solo porque utilice Hoffman o cualquier otro, sino porque liga esto a una increíble forma de jugar con la fecha de la máquina haciendo que sea más difícil “entrarle” a un archivo comprimido y con contraseña. Puede que se compacte el mismo archivo, de la misma forma, incluso con el mismo password, pero simplemente porque la fecha de la máquina sea distinta hará que los archivos resultantes sean también diferentes.

Esto es quizás el motivo de que Winrar sea tan difícil de decodificar por otra vía que no sea Brute Force y que se haya convertido en el formato perfecto para proteger los datos pero, al final es un archivo igual, y como todo archivo tiene algo que lo iguala a los demás: La cabecera.

Intermedio

Puede que para muchos la cabecera del Winrar sea: Rar!. Pero para mi son unos cuantos caracteres más.

Viendo cualquier archivo .rar vemos que hay unos 19 caracteres que son invariables, que no cambian, que se mantienen iguales sin importar que el contenido sea un .exe, .doc o .me_da_la_gana; para mi, esta es la verdadera cabecera y si bien, alguno de estos caracteres puede ser modificado y no afecta la apertura del archivo, en caso de hacerlo se muestra un mensaje al inicio de la aplicación advirtiéndonos de algún Warning como “header is corrupt”.

Después de romperme mucho la cabeza, cambiar muchos valores, e ir comprobando el resultado en cada caso, encontré una letra, una combinación de 0 y 1 que puede ser modificado sin problema alguno y que puede traernos ciertas facilidades.

El carácter que se encuentra en la posición 22 representado en hexagesimal como 74 y visto en el código de un .rar como una “t” puede ser reemplazado por un espacio (“ ”) por ejemplo, logrando que el archivo .rar suprima de forma virtual el primer archivo que encuentre.

Nota: El primer archivo que Winrar encuentra siempre aparece a partir del carácter 50 (viendo el código del .rar en formato hexagesimal) y es además el primero que se ve cuando se abre la carpeta.

Nota: Si hay varios archivos, entonces el primero será definido por orden alfabético.

Advanced

Esto funciona tanto para los archivos comprimidos con contraseña como para los archivo comprimidos de forma normal y puede además llevarse a un ambiente automatizado como:

Nota: El código ha sido escrito en Visual Basic
‘para esconder
Dim linea As String * 1
linea = " "
Open ("d:\a.rar") For Binary As #1
  Put #1, 23, linea
Close #1

‘para mostrar
Dim linea As String * 1
linea = "t"
Open ("d:\a.rar") For Binary As #1
  Put #1, 23, linea
Close #1

Cuando se oculta información de esta manera, evidentemente el tamaño del .rar no se ve afectado de ninguna manera, ya que no se elimina o añade información, sino que se reemplaza un carácter por otro.

Y como si fuera poco, al ocultar un archivo de esta forma, cuando se le da extraer aquí al Winrar se descomprimen todos los archivos menos el que no se muestra, siendo quizás este otro de los truquillos de Winrar que aún quedan por descubrir.

Continuar leyendo

Virus: PQ.pif

Alien [blackhat4all@gmail.com]

Datos

Nombre: pq.pif:
Tamaño: 16k
Compreciòn UPX: No

Introducción:

A simple vista parece un virus común, pero en realidad no lo es, cosa que debí sospechar desde el primer momento, pues tanto el autorun como el archivo del virus como tal son distintos a los populares kavo, ;)


La eliminación de este virus es bastante fácil una vez que se sabe más o menos como trabaja. En realidad el virus lo que hace es reemplazar al archivo wuauclt.exe que se encuentra en C:\WINDOWS\system32 y C:\WINDOWS\system32\dllcache, haciéndose pasar por las actualizaciones automáticas de Windows. Una vez que se puede entrar al registro, vemos que este archivo se manda a cargar desde HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\explorer\run (lugar poco o no usado hasta el momento por otros virus).

Este es el menor de los problemas, para los que sepan un poco solo les pondré dos imágenes.

Mensaje al tratar de abrir el archivo C:\WINDOWS\regedit.exe

Ejemplo de como bloquear una aplicaciònmediante el registro.

Si, como lo ven, este poco común virus no solo deja sin acceso al registro, sino que se ejecuta cada vez que se intenta acceder al mismo, pero esto no solo lo hace con Regedit.exe, sino también con el NOD32, Kaspersky, AVP, AVMonitor, AutoRunKiller, msconfig, y en fin, una larga lista de archivos que supera los 50.

Como se puede ver es un virus bastante poco peculiar, tanto por su forma de actuar como por los métodos que utiliza para asegurar su estancia en la máquina conviertiendose en Debugger de algunas apicaciones comunes. (¿Por qué no tratará de debuggear al SAV también?)

Eliminación:

Para eliminarlo se debe empezar primero por borrar el archivo que se encuentra en C:\WINDOWS\System32\dllcache\wuauclt.exe, luego el de C:\WINDOWS\System32\wuauclt.exe y por último acudir al registro para eliminar todas las claves creadas, tanto la que se encarga de ejecutar el virus en cada nueva instancia de la máquina como las que vinculan los archivos del sistema con el virus. Al momento se podrá acceder a todos los archivos bloqueados por el virus y vivirán felices (al menos de este virus) por los siglos de los siglos.

Nota: Para no perder archivos de Windows, sería buena idea volver a copiar el archivo wuauclt.exe (para algo debe servir, no todos los archivos de Windows son basura ¿no?, ;))

Los Pro:

A favor de este virus podemos decir que utiliza un sistema nuevo de inserción en el registro, algo verdaderamente poco común y que surtiría un muy buen efecto en las PC, además está la inmensa lista de aplicaciones a las que les impide el acceso y transfiere hacia el mismo el control.

En Contra:

Aún deja acceso al registro si se logra renombrar el mismo y permite además acceso a la consola y al administrador de tareas, los que, al menos para este caso no fueron utilizados, pero nunca está demás quitar el acceso a estas herramientas.

Todas las claves que infecta:


\360rpt.EXE]
\360safe.EXE]
\360safebox.EXE]
\360tray.EXE]
\ANTIARP.EXE]
\ArSwp.EXE]
\Ast.EXE]
\AutoRun.EXE]
\AutoRunKiller.EXE]
\AvMonitor.EXE]
\AVP.COM]
\AVP.EXE]
\CCenter.EXE]
\Frameworkservice.EXE]
\GFUpd.EXE]
\GuardField.EXE]
\HijackThis.EXE]
\IceSword.EXE]
\Iparmor.EXE]
\KASARP.EXE]
\KAVPFW.EXE]
\kavstart.EXE]
\kmailmon.EXE]
\KRegEx.EXE]
\KVMonxp.KXP]
\KVSrvXP.EXE]
\KVWSC.EXE]
\kwatch.EXE]
\Mmsk.EXE]
\msconfig.EXE]
\Navapsvc.EXE]
\nod32krn.EXE]
\Nod32kui.EXE]
\PFW.EXE]
\QQDoctor.EXE]
\RAV.EXE]
\RavStub.EXE]
\Regedit.EXE]
\rfwmain.EXE]
\rfwProxy.EXE]
\rfwsrv.EXE]
\rfwstub.EXE]
\RSTray.EXE]
\Runiep.EXE]
\safeboxTray.EXE]
\SREngLdr.EXE]
\TrojanDetector.EXE]
\Trojanwall.EXE]
\TrojDie.KXP]
\VPC32.EXE]
\VPTRAY.EXE]
\WOPTILITIES.EXE]


Como pu

eden ver este virus en particular afecta a más de un archivo y casi todos de cierta importancia, así que mejor sería eliminarlo en cuanto lo vean.

Nota:
Hunter Console ya tiene una vacuna para dicho Virus.

Continuar leyendo

Virus: Explorer.exe

Alien [blackhat4all@gmail.com]

Datos:

Nombre: Exporer.exe
Icono: Similar al de una foto
Tamaño: 23 Kb
UPX: No
Lenguaje: Delphi (Quizás)

Como todos los demás virus, explorer.exe va a parar de inmediato a las raíces de todas las unidades junto con un autorun.inf e igualmente deshabilita la opción de ver los archivos y carpetas ocultos. pero no se limita a esto, sino que también deshabilita la edición del registro aunque aún permite el trabajo en la consola. Entre sus puntos débiles está que se muestra en el administrador de tareas de Windows (Ctrl + Alt + Del) bajo el nombre de EXPLORER.exe (Nótese que el nombre del proceso es en mayúsculas a diferencia del explorer normal)

La imagen del virus se graba oculta además de en las raíces de las unidades en C:\WINDOWS\System32 bajo el nombre de iexplorer.exe y aún conserva el icono de una imagen.

Se graba también en C:\WINDOWS\System32\ con el nombre wuauc1t.exe, muy similar al nombre de un archivo de Windows que se encentra en esa misma ubicación.

Cada unos 30-40 segundos recorre las raíces de las unidades, pero no solo para ocultar los archivos que al virus le pertenecen, sino para reemplazar el autorun.inf en caso de que coexista otro virus en la máquina. Con esto logra que en caso que una memoria se introduzca, sea su código y no otro el que la infeste. (oculta también a iexplorer.exe y a wuauc1t.exe)

A pesar de que el proceso sale en el administrador de tareas y se pueda cancelar desde allí, esto no es el kit de la cosa, ya que como tal lo que verdaderamente hace es que pone una serie de programas en una especie de lista negra y a el como el debuger por defecto de esos programas, de esa forma cada vez que se intenta ejecutar una aplicación que está en esta "lista negra" a quien verdaderamente se está llamando es al virus (intresting!!)

Dentro de la lista aparentemente está el editor del registro (regedit.exe), ya que cada vez que se llama al mismo el virus se ejecuta.

Solución.

Lo primero es abrir el registro, pero como no se puede por estar este en la lista negra, lo que debemos hacer es cambiarle el nombre, así el ejecutable que se cargará no será regedit.exe sino hola.exe (por ejemplo). Ahora, si se intenta renombrar C:\WINDOWS\Regedit.exe en hola.exe, lo más probable es que a los pocos segundos de un error, puesto que el editor del registro es uno de los archivos claves del sistema operativo y este constantemente tratará de protegerlo y en caso que no se encuentre repondrá una copia del mismo que tiene almacenada en C:\WINDOWS\system32\dllcache.

Entonces, para evitarnos esto, lo que debemos hacer es modificar directamente el que está en dllcache.

Sabiendo que el regedit está en la lista negra, lo que debemos hacer es ver cuantos archivos más está con el. Para esto abrimos el registro (recuerden que ahora es hola.exe) y buscamos por la palabra regedit. Serán varias las entradas que hagan referencia al mismo pero a nosotros solo nos interesarán en las que la palabra buscada aparezca como un valor y no como una clave.

Lamentablemente esos son los datos que se me están permitidos revelar, no obstante, si les sugiero a todos los que hayan aprendido un poquito sobre virus a que lo busquen, analicen, y vean por ustedes mismos las cosas tan interesantes que hace este virus y de la forma tan original que trabaja.

Continuar leyendo

Digital Art

Thunder [yuniet02015@hab.jovenclub.cu]

INTRODUCCIÓN

Primero que nada agradecer a todos los que desinteresadamente comparten sus experiencias y conocimientos con cada uno de los que leemos esta revista, gracias por darnos de sus vivencias y andanzas. En esta ocasión me animo a escribir este artículo, un artículo muy diferente, un artículo que alguien pensó que seria bueno abordar y al que, estando de acuerdo con dicha persona, me dedico en esta entrega a argumentar. Es el caso del mundo tan fascinante del diseño, si, aunque les parezca irrelevante, el diseño ha sido y es una parte muy importante en el desarrollo de aplicaciones (interfaces graficas). A quien no le gusta un programita con pacotilla…y no me refiero específicamente a esos que devoran nuestra RAM en busca de embellecimiento, sino me voy más al “nacimiento” de dichas aplicaciones, y me refiero al grupo de diseñadores, a los encargados de “vestir” el trabajo echo por los demás programadores (aunque estos últimos también pueden hacer dicho papel). Muchos son del criterio de que el ambiente visual es “flojera” y son estos “tipos duros”, los fanáticos a ambientes de consola (UNIX, LINUX sin GUI) y que no soportan los ambientes visuales porque para ellos (Ambientes Visuales=Microsoft Windows), y no los critico (Dios me libre…) y estoy de acuerdo con ellos en que es mejor la eficiencia y eficacia de una app a modo consola que un programa de una interfaz muy atractiva y poco “corazón” (estamos de acuerdo) pero a lo que me refiero es que…sin paños calientes…los usuarios prefieren un programa (bien echo) con una buena interfaz a un programa (bien echo) con mala interfaz. Si no las grandes compañías no se gastaran tanto dinero en “gente" que les haga todo este “forro” por gusto. Aún en tiempos antiguos se esmeraban por integrar algo de ASCII Art. a sus app, y…que es esto sino “Art.”.

ANTES DE CONTINUAR

Bueno, dejando a un lado esta cuestión, que no es lo que persigo con este escrito, les decía que el diseño es algo bien fascinante, un mundo lleno de oportunidades, ideas, novedades, cambios…

Vale aclarar que no soy un “diseñador” en el completo sentido de la palabra, no he estudiado al respecto, ni me he graduado, no he trabajado para ninguna empresa y…además…posiblemente muchos de los que están leyendo este articulo en estos momentos sepan más de diseño que yo, lo único que deseo en este escrito es compartir mis cortas experiencias en este mundo (algo de DigitalArt con Photoshop) y lograr incentivar este fantástico arte para cualquiera de nuestras aplicaciones, trabajos, aún para nuestro propio gusto, desempeño y aprendizaje. Si eres de los que les gusta todo este rollo, Bienvenido a bordo!!!

QUE ME INSPIRA

“La musa no me baja”…decimos muchas veces cuando no encontramos la mejor forma de hacer algo. Ahora…¿Cómo puedo “bajar” yo a la musa? Para encontrar inspiración para un trabajo no hay que ir muy lejos…a nuestro alrededor hay miles de cosas, cosas que nos rodean, en las cuales podemos encontrar inspiración. A creative mind is an inspiration tank. La inspiración solo viene, viene al ver y tomar recursos de cosas que vemos y se nos graban, cosas que nos gustan, aun podemos tomar recursos de otros diseñadores, y no me refiero al “plagio”, sino a la adopción de dichas técnicas y adaptación para nuestros fines, de donde aprender sino de los mejores..jeje. Busca y observa…verás como te vienen las imágenes de lo que deseas a la mente…después solo te queda reproducirlas en tu editor de imágenes favorito.

EXPERIENCIAS

Soy autodidacta en lo que a trabajar imágenes se refiere, solo he leído par de truquillos para photoshop y, como les decía anteriormente, he adquirido los recursos que me gustan y los he puesto a disposición del ingenio y el buen gusto para lograr aquello que deseo. No tengo entrenamiento formal en todo esto, pero simplemente es algo en lo que me siento bien, disfruto y me desarrollo bien. Es difícil para mi hacer un seguimiento de cada paso que hago para lograr una imagen final, ya que salto muy fácilmente entre fuentes, imágenes, trazos, formas, texturas…todo buscando la forma que me agrade, la forma en la que me centro y sigo desarrollando. Una vez que miro la imagen, las ideas me vienen a la mente. Tengo una idea inicial de lo que deseo hacer con mi diseño, después simplemente sigo por el camino, me baso en un estilo y de ahí parte todo lo demás…aunque me ha pasado que muchas veces he empezado algo y por el camino empiezo a cambiar aquí y allá y al final me resulta algo totalmente distinto a lo que tenia planeado…la cosa es así..debes dejarte llevar. El artista debe ver dentro sus emociones y sueños y tratar de contaminar a las personas que le rodean los mismos sueños y emociones a través de imágenes.

HERRAMIENTAS

Mayormente trabajo con Photoshop, uno de los mejores, aunque no el único. Me aseguro de tenerlo bien “fortificado” en lo que a recursos se refiere. Nada se compara con el acabado que le da un pincel de “FloralActress” a una obra, o aún, un estilo a un texto, o una textura, etc. Hay veces que busco otros resultados con PhotoExpress, un buen editor de imágenes, pero no tan profesional como el primero, aunque presenta varias herramientas y oportunidades de las que me aprovecho para luego complementar con el Photoshop. Aun así la mayoría de mi trabajo lo realizo con este último.

COMO SABER CUANDO ESTA LISTO

Simplemente lo sabes…te das cuenta que al ponerle “algo” más, solo vas a lograr deshacer otra “cosa” ya echa, o sea que no hay para más..jeje. Esto del arte gráfico es muy parecido a otra manifestación del arte como es la música. La música tiene “matices”, momentos de euforia, momentos de pasividad…solo hay que encontrar estos “matices” en nuestros trabajos gráficos y de esta forma sabremos cuando es “suficiente”. Ponemos la imagen en algún visor, en pantalla completa, lo miramos, le buscamos algún “faltante”, algún detalle, puede que tenga alguno y nos encargamos de el, volvemos a repasar el trabajo y decimos…esto esta perfecto!!!

PALABRAS FINALES

Cada uno de nosotros tiene algo de arte dentro, en una u otra manifestación, expresamos al mundo lo que poseemos, nuestras habilidades. Si eres de los que piensa que este, el Arte Digital, es tu medio para hacerlo, no esperes más y lánzate a desarrollarlo. No esperes a ser un “maestro” en el tema, simplemente exprésate como eres. Las habilidades que no entrenamos o no desarrollamos, nunca van a ser perfeccionadas. Alguien dijo que la madre de la perfección es la repetición…o algo parecido…jeje. Espero que este pequeño escrito te anime, te sorprendas y sorprendas a los demás de lo que puedes lograr con algo de esfuerzo y dedicación. Un salu2….recuerda que

The truth is out there…seek it!!!

Continuar leyendo

Huevos de pascuas

Alien [blackhat4all@gmail.com]

Todos jugamos, algunos más (like Yordan), otros menos (like me), pero al final, al menos una vez en la vida, todos hemos abierto un juego aunque sea para ver de que se trata. El hecho es que, como todos ya deben saber, un juego no es más que un programa, un software, una aplicación programada en un lenguaje específico que, en lugar de servir para optimizar/arreglar la PC, crear hojas de cálculo o para escuchar un archivo de música, está destinado a generar entretenimiento y relajación (aunque hay jueguitos que… ni lo uno ni lo otro)


Siendo entonces no más que aplicaciones programadas por los seres humanos, los juegos tampoco están librados de errores, errores que pueden ser graves como el “colgado” de Windows por no tener una tarjeta específica o más ligeros como una simple instrucción mal programada que impide que en determinada posición el “muñequito” salte como debería hacerlo.

Hay otros errores que son dejados a propósito por los programadores y que son conocidos entre estos como huevos de páscua (lo que nosotros llamamos comúnmente “secretos” o “claves”). Estos no son más que instrucciones dejadas con la intención de ayudar a quien la “descubra” a realizar determinada acción con lo que ganará más puntos o llevará una ventaja por encima de los demás competidores.

En este artículo trataré de demostrar como realizar, descubrir y utilizar estos “secretos”.

Realizar

Como dije anteriormente estas claves no son más que cosas que, o bien son productos del olvido o bien cosas dejadas a conciencia, el caso es que en la mayoría de las veces consiste en una simple condicional: Si haces esto, entonces actúa de esta forma

Un ejemplo perfecto en pseudos código podría ser este:
Supongamos que estamos jugando a los “pistoleros” y cada 10 segundos se nos recarga la pistola de forma automática; este juego debería tener un código similar a:

    Si time=10 entonces reload

No obstante, una línea adicional podría especificar algo como:
    Si Mouse(x)=0 y Mouse(y)=0 entonces reload

De esta forma, incluso por encima de la primera condición estaría la segunda, y para aplicar el truco lo único que deberíamos hacer es poner en ratón en la posición (0, 0) o sea en la parte superior izquierda de la pantalla, con lo que obtendríamos un reload adicional y por lo tanto más balas que nuestro oponente.

Encontrar

Por lo general cosas como estás se encuentran de dos maneras, o bien por ser un jugador extremo de dicho juego, o por que un amigo se lo sabía y se lo dijo a otro, y a otro, y a otro….. y ese otro a ti.

Descubrir uno de estos trucos puede llevar mucho tiempo de juego y quizás jamás se encuentre. No obstante existe otra forma, más rápida y quizás con mejores posibilidades de acertar, y es tratar de pasarle al juego parámetros que no está preparado para recibir en un momento determinado. Por lo general ese tipo de cosas que parecen ilógicas son las que los programadores suelen olvidar pues no piensan que alguien pudiera tratar de hacerlas.

Ej: Tratar de saltar cuando se está agachado
Ej: Disparar desde abajo del agua
Ej: Subir una escalera caminando para atrás.

La semana pasada publiqué un código en el que avisaba que existía un error, el caso es que:
Pseudocódigo:
    Si tecla=Enter entonces
    Si texto_escrito = lista_primer_elemento entonces
    Aumenta Cantidad_correcta
    Aumenta velocidad
    Quita lista_primer_elemento

Pero ¿y si la lista está vacía y se presiona Enter?, pues bien, en ese caso se estará comparando un texto vacío con el primer elemento de la lista que como está vacía es “” y por lo tanto “”=””, así que actuará como si se hubiese escrito una palabra correcta cuando en verdad no se ha escrito nada.

Ejemplos como este existen miles, por lo general en juegos creados de forma rápida y que no son probados durante el tiempo necesario.

Explotación

La forma de explotación es fácil y depende de cuanto se necesite ganar dicho juego. Pero en caso que se descubra una vulnerabilidad o bugs en un juego y este sea lo suficientemente complejo, podría darse el caso de que tuviera más, por lo que sería una buena práctica buscar otras.

Ejemplos concretos

En el Winlinez jamás se coloca una bola en la última fila y columna mientras exista otro espacio para ponerla. En Delta Force existe una misión en la que el hombre se sube en una especie de rampa, cuando se está ahí, si se manda a saltar desde la posición de acostado, el hombre se introduce dentro de la pared haciendo imposible que las balas le den pero dándole la posibilidad de disparar (la única forma de salir de ahí es matándose uno mismo con una granada)

Nota: Lamentablemente no son muchos los juegos con los que he interactuado, pero se que habrán muchos más.

Continuar leyendo

XML mi primer choque (II)

DJ_Bryan [blackhat4all@gmail.com]

Cuando creamos un documento DTD estamos creando nuestro propio lenguaje de marcado, que puede ser definido a nuestro antojo y con el fin que deseemos, por ejemplo, definir un estándar de comunicación entre nuestras aplicaciones, definir una tarjeta visita y quien sabe cuantas cosas más. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos.


Los documentos que se ajustan a su DTD se pueden definir como documentos validos, un DTD puede ser un fichero externo el cual puede ser usados por varios ficheros XML, o simplemente puede estar incluido en el mismo fichero XML.

Un ejemplo:
<! DOCTYPE etiqueta[
<!ELEMENT etiqueta (nombre, calle, ciudad, país, código)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>


<nombre>Fulano Mengánez</nombre>
<calle>
c/ Mayor, 27</call>
<ciudad>
Valderredible</ciudad>
<pais>
España</pais>
<codigo>
39343</codigo>
</etiqueta>


La declaración del DTD empieza en la primera línea y termina con “]>”, en este documento se encuentra el DTD embebido dentro del fichero XML, esta puede cambiar y encontrase en cualquier otro lugar, como quedaría esto:

<?xml version="1.0"?>
<!DOCTYPE pc SYSTEM "http://www.sitio.com/dtd/pc.dtd">

<modelo>...</modelo>
...

Declarando elementos:

Los elementos son el corazón del fichero XML y estos deben ajustarse al DTD que los defina para considerar valido dicho documento.

A la hora de declarar un elemento en nuestro DTD siempre comenzamos nuestra línea con <!ELEMENT seguidas por el identificador genérico del elemento que se declara. A continuación tienen una especificación de contenido.

<!ELEMENT receta (titulo, ingredientes, procedimiento)>

En este ejemplo, el elemento <receta> puede contener dentro elementos <titulo>, <ingredientes> y <procedimiento>, que, a su vez, estarán definidos también en la DTD y podrán contener más elementos.

Siguiendo la definición de elemento anterior, este ejemplo de documento XML sería válido:

<receta>
  <titulo>...</titulo>
  <ingredientes>...</ingredientes>
  <procedimiento>...</procedimiento>
</receta>


Pero no este:

<receta>
  <parrafo>Esto es un párrafo</parrafo>
  <titulo>...</titulo>
  <ingredientes>...</ingredientes>
  <procedimiento>...</procedimiento>
</receta>


La especificación de contenido puede ser de cuatro tipos:

EMPTY

Puede no tener contenido. Suele usarse para los atributos.
<!ELEMENT salto-de-pagina EMPTY>

ANY

Puede tener cualquier contenido. No se suele usar, ya que es conveniente estructurar adecuadamente nuestros documenteo XML.
<!ELEMENT batiburrillo ANY>

Mixed

Puede tener caracteres de tipo dato o una mezcla de caracteres y sub-elementos especificados en la especificación de contenido mixto.

<!ELEMENT enfasis (#PCDATA)>
<!ELEMENT parrafo (#PCDATA|enfasis)*>


Por ejemplo, el primer elemento definido en el ejemplo (<enfasis>) puede contener datos de carácter (#PCDATA). Y el segundo (<parrafo>) puede contener tanto datos de carácter (#PCDATA) como subelementos de tipo <enfasis>.

Element

Sólo puede contener sub-elementos especificados en la especificación de contenido.
<!ELEMENT mensaje (remite, destinatario, texto)>

Para declarar que un tipo de elemento tenga contenido de elementos se especifica un modelo de contenido en lugar de una especificación de contenido mixto o una de las claves ya descritas.

Modelos de contenido:

Un modelo de contenido es en donde definimos los elementos aceptados y en el orden que deben aparecer.

Un modelo bien sencillo podría ser este, que solo soporta un elemento dentro
<!ELEMENT aviso (parrafo)>

Esto nos dice que <aviso> solo puede contener un elemento párrafo.

El uso de la coma nos permite definir el orden estricto en el cual deben aparecer los elementos.
<!ELEMENT aviso (titulo, parrafo)>

Esto nos dice que un elemento <aviso> tiene que contener un elemento <titulo> y seguido un elemento <parrafo>.
<!ELEMENT aviso (parrafo | grafico)>

Con la barra vertical nos permite representar un ó, en este caso quedaría, dentro del elemento <aviso> podemos tener un elemento <párrafo> o un elemento <grafico>.

Aquí mostramos como se pueden combinar para crear DTD mas complicados y que se adapten a nuestras necesidades.
<!ELEMENT aviso (titulo, (parrafo | grafico))>

Además, cada partícula de contenido puede llevar un indicador de frecuencia, que siguen directamente a un identificador general, una secuencia o una opción, y no pueden ir precedidos por espacios en blanco.

Indicadores de frecuencia:
? - opcional (0 o 1 ves)
* - Opcional y repetible (0 o más veces)
+ - necesario y repetible (1 o mas veces)

Para entender esto, vemos este ejemplo:

<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

En este caso, <aviso> puede tener <titulo> o no (pero sólo uno), y puede tener cero o más conjuntos <parrafo><grafico>, <parrafo><parrafo><grafico>, etc.

Continuar leyendo

File Pixmar.exe

Alien [blackhat4all@gmail.com]

Hace poco tiempo me enviaron un archivo bajo sospechas de virus, confieso que lo dejé un poco de lado pues otras tareas me apremiaban, pero luego, con un poco más de calma decidí “echarle el ojo”.

Datos de la aplicación:

Nombre: Pixmar.exe
Tamaño: 384 Kb
Comprimido con UPX: No
Lenguaje: Delphi
Icono: Celular con un mapamundi delante

Este archivo por supuesto es un ejecutable para Windows, y según sus propios datos fue creado por la organización Disney Juego, de la que no aparecen muchas cosas en la red, así que da ya motivos más que suficientes para sospechar, esto sin contar que algunos link lo refieren como un virus.

Quizás lo más curioso que tiene es que su comportamiento, a pesar de que es muy similar al de un virus, difiere con estos es mucho.
No oculta archivos
Se ve en el administrador de tareas.
No cancela cmd
No cancela regedit
No cancela el Administrador de Tareas de Windows

Quizás lo único que hace es cargarse en el inicio de sesión mediante la clave del registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run con el valor C:\WINDOWS\System32\Pixmar.exe, y para eso sigue estando muy mal ya que el nombre que tiene en el registro es el mismo que tiene la aplicación normal y el mismo que sale en las propiedades, y este es otro caso a analizar, puesto que ningún virus (o casi ninguno) tiene dato alguno en las propiedades a diferencia de este.

El otro dato similar al de un virus es que se graba en las memorias. Y ojo, dije memorias esta vez, no unidades, puesto que no hace nada en las unidades fijas (discos duros) solo en las memorias y no siempre, sino solo cuando estas se insertan en la máquina. Una vez que la memoria está dentro e infestada, si se elimina manualmente el archivo este no vuelve a aparecer hasta tanto no se extraiga y se vuelva a insertar la Flash.

Declaro que me causó gran intriga este ejecutable en especial, puesto que, si es un virus, no entendía cual era su función; no se preocupa por ocultarse ni limita las funciones de la PC.

Fue entonces que, al no estar comprimido con UPX, pude ver algunos fragmentos del código del ejecutable y me di cuenta que para algo estaba utilizando un calendario con los días y meses del año.

Pensé entonces que este virus podía ser un Troyano típico, así que traté de jugar un poco con la hora de la máquina pero nada. Le da lo mismo que estemos en el 2000 que en el 2050, el se mantiene inerte, como si fuese un archivo más de Windows.

Lamentablemente no tengo antivirus instalado, pero agradecería que alguien lo instalara con todos los antivirus que se pueda con el fin de saber si estos lo reconocen, y en caso positivo como que lo tienen: troyano, bomba lógica, etc…

Continuar leyendo