Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Noticias
Register FAQ Members List Calendar Guía de estilo Today's Posts

Colaboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 05/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Blue Pill / Red Pill

Leo hoy en Kriptopolis:

Quote:
Originally Posted by 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.

Last edited by seoane : 28/03/2008 at 22:08.
Reply With Quote
  #2  
Old 05/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
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

Last edited by dec : 05/08/2006 at 15:49.
Reply With Quote
  #3  
Old 05/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
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.
Attached Files
File Type: zip Matrix.zip (9.5 KB, 40 views)
Reply With Quote
  #4  
Old 05/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Quote:
Originally Posted by 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:
Quote:
*((unsigned*)&rpill[3]) = (unsigned)m;
¿Que te parece?
Reply With Quote
  #5  
Old 05/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
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

Last edited by dec : 05/08/2006 at 22:08.
Reply With Quote
  #6  
Old 05/08/2006
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,702
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Quote:
Originally Posted by 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
Reply With Quote
  #7  
Old 05/08/2006
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
Quote:
Originally Posted by 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.
Reply With Quote
  #8  
Old 05/08/2006
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Reply With Quote
  #9  
Old 06/08/2006
mamcx's Avatar
mamcx mamcx is offline
Moderador
 
Join Date: Sep 2004
Location: Medellín - Colombia
Posts: 3,941
Poder: 28
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.
Reply With Quote
  #10  
Old 06/08/2006
mamcx's Avatar
mamcx mamcx is offline
Moderador
 
Join Date: Sep 2004
Location: Medellín - Colombia
Posts: 3,941
Poder: 28
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.
Reply With Quote
  #11  
Old 06/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
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?

Last edited by seoane : 06/08/2006 at 01:04.
Reply With Quote
  #12  
Old 06/08/2006
vtdeleon's Avatar
vtdeleon vtdeleon is offline
Miembro
 
Join Date: Apr 2004
Location: RD & USA
Posts: 3,236
Poder: 26
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!
Reply With Quote
  #13  
Old 06/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Quote:
Originally Posted by 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
Reply With Quote
  #14  
Old 06/08/2006
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Reply With Quote
  #15  
Old 06/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Quote:
Originally Posted by 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
Reply With Quote
  #16  
Old 07/08/2006
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,478
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.
Reply With Quote
  #17  
Old 07/08/2006
vtdeleon's Avatar
vtdeleon vtdeleon is offline
Miembro
 
Join Date: Apr 2004
Location: RD & USA
Posts: 3,236
Poder: 26
vtdeleon Va por buen camino
Quote:
Originally Posted by 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!
Reply With Quote
  #18  
Old 07/08/2006
marceloalegre's Avatar
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Join Date: Apr 2005
Location: Mar del Plata - Argentina
Posts: 448
Poder: 22
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
Reply With Quote
  #19  
Old 13/01/2007
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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.

Reply With Quote
  #20  
Old 13/01/2007
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Quote:
Originally Posted by 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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 10:20.


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