Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Blue Pill / Red Pill

Leo hoy en Kriptopolis:

Cita:
Empezado por Kriptopolis
Fueron por lana y salieron trasquilados. Tal y como estaba previsto, Microsoft habló sobre la seguridad de Windows Vista en Black Hat. Mientras tanto, en una sala contigua, la investigadora polaca Joanna Rutkowska mostraba cómo utilizar su técnica Blue Pill para insertar código malicioso en las mismísimas entrañas de una copia de Windows Vista versión 64-bit.
Dejando a un lado que los Rootkit que crea esta mujer dan miedo, y que podría callar algunas bocas que dicen que las mujeres no saben programar. Vamos a centrarnos en su pildorita. Básicamente su Blue Pill (al mas puro estilo matrix) consigue que nuestro windows se ejecute de manera virtual, al vuelo, sin necesidad de reiniciar la maquina ni hacer cambios en el disco duro. De este modo controla todo lo que "ve y siente" windows de hay la referencia a matrix. No voy a entrar en los detalles técnicos, porque estan muy por encima de mi nivel, y además ya lo hace ella en su blog, pero en su blog también menciona una sencilla función para detectar si windows se esta ejecutando de forma virtual y, como no podía ser de otra manera, la llamo Red Pill. Pues bien, me he tomado la libertad de traducir su función a delphi (espero que nadie se moleste) y aquí os la dejo (código fuente y exe) por si tenéis curiosidad de saber si estáis dentro o fuera de matrix

PD: Como la mayoría no estaréis infectados, podéis probar como funciona ejecutándolo dentro de VirtualPC o vmware.

Última edición por seoane fecha: 28-03-2008 a las 22:08:38.
Responder Con Cita
  #2  
Antiguo 05-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Muchas gracias como siempre Seoane.

Código Delphi [-]

/* Itento de comprensión del código fuente */

program Matrix;

uses Windows;

function SwallowRedpill: Boolean;
var
  RedPill: array[0..7] of byte; // Hum...
  m: array[0..5] of byte;       // + Hum...
  p: procedure; stdcall;        // ++ Hum...
begin
  // Vale, vale, por algún sitio hay que empezar...
  RedPill[0]:= $0f; RedPill[1]:= $01; RedPill[2]:= $0d; RedPill[3]:= $00;
  RedPill[4]:= $00; RedPill[5]:= $00; RedPill[6]:= $00; RedPill[7]:= $c3;

  // ¿Pero esto qué es lo que es? :-)
  PPointer(@RedPill[3])^:= @m;
  
  // ¿Y adónde vamos ahora?
  p:= @RedPill;
  
  // Y ahora ejecutamos... ¿el qué? XD
  p();
  
  // Menos mal... ;´)
  Result:= m[5] > $d0;
end;

begin
  if SwallowRedpill then
    // Para que te enteres macho...
    MessageBox(0,'Estas dentro de Matrix','Matrix',MB_OK)
  else
    // A ver qué va a pasar, ¿eh? 
    MessageBox(0,'Estas fuera de Matrix','Matrix',MB_OK);
end.

/* Fin del intento de comprensión del código fuente */

/* Resultados sobre 10: 2                           */

/* ¡Ouch! ^_* */
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-08-2006 a las 15:49:43.
Responder Con Cita
  #3  
Antiguo 05-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Tienes razón dec, la función quedo bastante extraña al intentar hacer una traducción mas o menos literal de la función en C. Pero viéndolo ahora con mas calma, recuerdo que Delphi permite escribir código en ensamblador sin tener que hacer este tipo de malabares.

La cosa ahora quedaría así:
Código Delphi [-]
function SwallowRedpill: Boolean;
var
  m: array[0..5] of byte;
begin
  // La instruccion SIDT nos devuelve el registro IDRT
  asm    
    SIDT m
  end;
  // Este valor toma unos valores caracteristicos si el sistema 
  // se ejecuta de forma virtual, vmware=$FF, VirtualPC=$E8, etc ... 
  Result:= m[5] > $d0;
end;

begin
  if SwallowRedpill then
    MessageBox(0,'Estas dentro de Matrix','Matrix',MB_OK)
  else
    MessageBox(0,'Estas fuera de Matrix','Matrix',MB_OK);
end.
Archivos Adjuntos
Tipo de Archivo: zip Matrix.zip (9,5 KB, 40 visitas)
Responder Con Cita
  #4  
Antiguo 05-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por dec
// ¿Pero esto qué es lo que es? :-)
PPointer(@RedPill[3])^:= @m;
Esto querido dec es la traducción mas o menos literal de esto otro:
Cita:
*((unsigned*)&rpill[3]) = (unsigned)m;
¿Que te parece?
Responder Con Cita
  #5  
Antiguo 05-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno... pues con el ensamblador ya lo has terminado de arreglar...

Pero se agradece el intento. Lo cierto es que no podemos estar en todo, ¿que no?

PD. Al menos hoy prefiero verlo así...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-08-2006 a las 22:08:18.
Responder Con Cita
  #6  
Antiguo 05-08-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por seoane
Esto querido dec es la traducción mas o menos literal de esto otro:

*((unsigned*)&rpill[3]) = (unsigned)m;

¿Que te parece?
aaahhhh!!!, bueno, eso ya es otra cosa... ahora sí que está claro
Responder Con Cita
  #7  
Antiguo 05-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por dec
Hola,

Bueno... pues con el ensamblador ya lo has terminado de arreglar...
Estoy totalmente de acuerdo con dec.

__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 05-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola, yo de esto no entiendo nada. Pero nada de nada. Así que asustado me puse a probar la función y obtuve: "Estas dentro de matrix" Pero luego, me puse a ejecutarla varias veces seguidas y unas veces me dice que estoy dentro y otras que estoy fuera, algo casi aleatorio. ¿Me pueden explicar?

// Saludos
Responder Con Cita
  #9  
Antiguo 06-08-2006
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso es porque estas corriendo sicodelicamente intentando alcanzar la meta y recibes espamos de realidad.

Ten cuidado, al llegar, te desplomas.

__________________
El malabarista.
Responder Con Cita
  #10  
Antiguo 06-08-2006
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
De todas maneras aunque tampoco me va muy bien con algo tan de bajo nivel conceptualmente es un hack, que viendolo bien, es obvio. Eso es lo mas preocupante.
__________________
El malabarista.
Responder Con Cita
  #11  
Antiguo 06-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Yo no entiendo mas que tu, me limite a copiar lo que decía ella. Solo puedo decir que a mi me funciona, si lo ejecuto en un windows real (Windows XP SP2) siempre me da que no es virtualizado. Sin embargo si lo ejecuto en un XP SP2 sobre vmware lo detecta, y si lo hago en un w98 o w2000 sobre VirtualPC también lo detecta.

El método no es infalible, ya que se basa en la suposición de que en un sistema real el contenido del registro IDRT es diferente que en un sistema virtual. De hecho deja entrever que se puede usar el contenido de este registro para identificar el software que se utiliza para la virtualización, y anima a la gente a que mande los diferentes valores que toma, para así hacer una tabla que relacione cada sistema con un valor.

Lo que me asombra es que el contenido del registro, en tu caso Roman, se modifique todo el tiempo. No creo que ese sea un comportamiento normal, pero ¿quien soy yo para decir lo que es normal? . De todas formas yo pasaría un detector de rootkits, no esta de mas asegurarse.

http://www.sysinternals.com/SecurityUtilities.html

Y si alguno se anima a probar el programa en su equipo o en alguna maquina virtual, estaría bien que pusiera si funciona bien. Por cierto, el problema ¿te lo da con las 2 versiones o solo con una de ellas?

Última edición por seoane fecha: 06-08-2006 a las 01:04:23.
Responder Con Cita
  #12  
Antiguo 06-08-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Me dice que estoy fuera. No importa las veces que lo ejecute.

Win'Xp SP2

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #13  
Antiguo 06-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Troi
Me dice que estoy fuera. No importa las veces que lo ejecute.

Win'Xp SP2

Saludos
Lo mismo puedo decir yo. Además añadiré que probé también el programa original (escrito en C) obteniendo el mismo resultado.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 06-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues parece entonces que estoy dentro o por lo menos algo tiene raro mi pc. Nada más por no dejar dudas les pregunto: ¿han ejecutado varias veces una tras otra en una rápida sucesión? Es que es así cuando me empiezan a aparecer distintos resultados.

// Saludos
Responder Con Cita
  #15  
Antiguo 06-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
(...) ¿han ejecutado varias veces una tras otra en una rápida sucesión?
Sí; acabo de hacerlo tal como dices y "estoy fuera de Matrix"...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #16  
Antiguo 07-08-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo he hecho algunas pruebas, y todas me han funcionado perfectamente:

* Windows 2000 ==> OK
* W98 (SE) + VirtualPC ==> OK
* WXP SP2 + VirutalPC ==> OK
* W98 + VMWare ==> OK
* WXP SP2 + VMWare ==> OK

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #17  
Antiguo 07-08-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por roman
¿han ejecutado varias veces una tras otra en una rápida sucesión?
Como Speedy Gonzalez y todo está correcto.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #18  
Antiguo 07-08-2006
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 20
marceloalegre Va por buen camino
Post Anda muy bien

Muy lindo todo , en un vmware me dice que estoy dentro, sino me dice que estoy fuera...

Pero la funcion SwallowRedpill esta en un idioma que excede totalmente mis conocimientos
Responder Con Cita
  #19  
Antiguo 13-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vaya! Ha pasado tiempo desde esto. Finalmente he reinstalado mi pc. O, mejor dicho, estoy con una nueva aquí en el trabajo.

Según esto estoy dentro de Matrix (a veces dentro, a veces fuera) y hasta el momento sólo he instalado cosas como Firefox, Thunderbird, Avast.

Responder Con Cita
  #20  
Antiguo 13-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por roman
Vaya! Ha pasado tiempo desde esto. Finalmente he reinstalado mi pc. O, mejor dicho, estoy con una nueva aquí en el trabajo.

Según esto estoy dentro de Matrix (a veces dentro, a veces fuera) y hasta el momento sólo he instalado cosas como Firefox, Thunderbird, Avast.

Si que paso tiempo. Aunque el otro día vi este hilo por casualidad, y me pregunte si al final averiguaste porque se comportaba así el programa en tu PC. Aunque veo que el problema continua.

¿Utilizas la segunda versión? la de ensamblador, porque siendo así no se que puede fallar, es una simple instrucción, no puede haber fallo posible. Puede que algún programa de los que instalas, programas legítimos, este jugando con tu equipo. Pero vete a saber, este tema me sobrepasa
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:18:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi