domingo, 27 de febrero de 2011

MSDART 6.5 Crear Boot USB

Ya hemos visto en el articulo anterior como crear el Live CD de la herramienta MSDART 6.5, ahora vamos a crear un Boot USB. Nos hace falta un usb con poco tamaño de unos 500MB esta perfecto, bueno vamos a ello.
Conectamos el usb y abrimos la ventana de comandos (CMD) como Administrador metemos los siguientes comandos en el mismo orden que están abajo:
diskpart  
select disk 2
clean
create partition primary
select partition 1
active
format fs=FAT32
assign

Salimos del diskpart con el comando>exit  . El siguiente paso es extraer los archivos de la imagen que hemos creado en el post anterior con el winrar en nuestra unidad USB:

Cuando finaliza la extracción y el copiado de todos los ficheros en la unidad USB, tenemos que hacerle botable con el Bootsect que os lo podéis descargar y copiar en la raíz de la unidad del sistema por defecto sera la unidad C$. Una vez hecho este paso en la CMD ponemos el siguiente comando:
bootsect.exe /nt60 O:

Donde la Letra O: es la letra se le asigno anteriormente con el comando assign, pues una finalizados todos estos pasos ya podemos disfrutar de nuestro BooT USB.
Saludos

MSDART 6.5 Crear Live CD

La herramienta Diagnostics Recovery Toolset MSDART 6.5 es una verdadera joya se puede usar para administrar,reparar,ver fallos,recuperar archivos, hackear...eso ya queda a la elección de cada uno .. :D
En este Link podéis ver un vídeo tutorial donde os explica como funciona esta herramienta y para que se suele usar.
Pero para tener esta herramienta tendríamos que descargarnosla y crear un LIVE CD o un Boot USB.
Bien primero vamos a crear el Live CD, y después vamos a ver como crear el Boot USB. Para ello tenemos que descargarnos la herramienta MSDART 6.5 tanto la versión X86 como la X64 dependiendo del S.O. que tenemos.
Descargamos la herramienta y la instalamos:
Realizamos una instalación completa de la aplicacion:
 
Una vez realizada la instalación podemos ver en el menú de Inicio > Todos los Programas la carpeta de instalación del MSDART:


Arrancamos la herramienta ERD Commander Boot para crear el Live CD:


En la siguiente pantalla nos va pedir el DVD del Windows 7 para insertarlo (en mi caso he usado una imagen mapeada en una unidad virtual):
Al pulsar Next va ha empezar a extraer todos los archivos necesarios para crear el BooT CD:

Después de a ver copiado los archivos necesarios nos dará la opción de seleccionar las herramientas que queremos que incluya la imagen:
Recomiendo que dejen todas la herramientas porque nunca se sabrá cuando las pueda necesitar. En la siguiente pantalla nos pedirá la herramienta Debugging Tools y sus symbolos:
En la siguiente pantalla nos pedirá actualizar las definiciones de la herramienta Standalone System Sweeper que es una herramienta anti-malware, anti-spyware, anti-rootkits, etc. :

Cuando concluye la actualizacion de las definiciones y de las firmas de malware, en la siguiente pantalla nos ofrecerá la opción de incluir drivers adicionales:

En la siguiente pantalla nos mostrara que la imagen esta lista para grabar, pero nos da la opción de si queremos meter mas herramientas(por ejemplo portables):
En la siguiente pantalla nos pide que le indiquemos la ruta de destino donde vamos a guardar la imagen:
Una vez finalizado la creación de la imagen .ISO nos dará la opción de grabarla en un cd (si queremos) si no, nos guardamos solo el archivo .iso :
En el caso de que no queramos grabar la ISO desmarcamos la pestaña Burn the Image y finalizamos.

miércoles, 23 de febrero de 2011

Seguridad ??? Confiar en los correos del banco ??


Hoy revisando los correítos de mi cuenta de correo me encuentro con una sorpresita en la bandeja del Correo No Deseado , tenía un email de Caixa Nova con el asunto: CUENTA INACTIVA! , muy pero muy curioso porque esta cuenta de correo no la uso para recibir información del banco, además yo no trabajo con el banco Caixa Nova...
Bien, pues me puse a investigar, abrir el correo y me encuentro con el siguiente texto:

Caixanova

Estimado cliente de Caixanova:
Caixanova le comunica que con la entrada del año 2011 los servidores de procesos bancarios han sido actualizados y estan ya operativos
Sin embargo debido a la ingente cantidad de usuarios que usan Internet como medio de pago seguro, nos vemos en la obligación a pedirle su colaboración para una rápida restauracion de los datos en las nuevas plataformas..
Necesitamos que usted verifique los datos de su cuenta, se ruega lo haga de inmediato para evitar cualquier posible anomalía en su cuenta o futura pérdida de datos. .
Puede entrar a su cuenta haciendo click sobre la imagen y seguir las instrucciones
Pulse "Restaurar mi cuenta" para abrir nuestra pagina virtual y activar su cuenta:

Restaurar mi cuenta


© Novacaixagalicia. Todos los derechos reservados

Bien, como podemos ver en el correo nos quieren engañar a través de la ingeniería social (que por cierto es no está para nada buena :D, porque que en la 1ª frase te habla de actualización de servidores y en la 2ª te habla de backup de restauración de tus datos :D jajajaja). Nos quiere convencer de pinchar en el link "Restaurar mi cuenta"  supuestamente para que puedas restaurar tu cuenta. O sea metes usuario, password,dni,etc...
Mirando el supuesto link "Restaurar mí cuenta" veo la siguiente url: http://rack17.findo.ru/.de/de.php
o sea un PUTO FRAUDE. Desde cuando Caixa Nova trabaja con servidores de Rusia?? :D :D
Rastreando un poco más la url viene de Rusia con la IP: 62.244.10.58 con un S.O Linux, más exacto un Debían, y en dominio findo.ru, resulta que es una página de anuncios de toda clase de Rusia...

En definitiva, Tener mucho cuidado con los correos que recibís y en que enlaces pincháis, porque os podéis llevar una gran sorpresa...
 Saludos

domingo, 20 de febrero de 2011

Debugging I parte

En este articulo quiero hablar del Debugging en Windows, más abajo vamos a ver las definiciones de las Aplicaciones, Procesos, Threads y CallStacks una vez que ya sabemos estas definiciones nos podemos defender con las aplicaciones de Debugging.
Aplicaciones, procesos y threads
Una aplicación está formada por uno o más procesos
Un proceso es un ejecutable (.exe) que está en memoria y que está formado por uno o más threads (hilos de ejecución) y sus propios recursos
Piensa en un proceso como en un contenedor de threads
Un thread es la unidad básica de ejecución para la que el sistema operativo reserva tiempo de procesador para llevar a cabo una tarea
Un thread es lo que la CPU ejecuta. Todo proceso vivo ha de tener al menos un thread, y a menudo tiene varios.
Thread Call Stacks
Foto de un thread en un instante de tiempo
Muestra la historia de llamadas a funciones
Cada thread tiene su propio Call Stack
Ejemplo:
ntdll!KiFastSystemCallRet
USER32!NtUserGetMessage+0xc
notepad!WinMain+0xe5
notepad!WinMainCRTStartup+0x174
kernel32!BaseProcessStart+0x23
Cada hilo(Thread) de un proceso tiene su Call Stack independiente. Con el Windbg (Debugging Tools for Windows) podemos ver los call stack de alguna aplicación común, como notepad.exe o calc.exe por ejemplo.
Aquí os dejo un procedimiento que habría que seguir para determinar la causa y ubicar el fallo de nuestro Sistema Operativo.
Procedimiento a seguir para resolver problemas:
Determinar el tipo de fallo: Access Violation, resultado inesperado…
Documentar los síntomas: Memory Leak, 100% CPU, Crash…
Elegir las herramientas y técnicas adecuadas:
  - Habilitar tracing en la aplicación.
  - Usar logs de debug o “checked builds”.
  - Perfmon, EventLogs, Netmon, Filemon, logs de IIS, MSDN, etc.
  - Conseguir dumps y analizarlos.
  - y analizarlo: examinar el stack, evaluar parámetros y variables, desensamblar y entender el código, poner breakpoints antes del fallo, examinar/modificar la memoria y loAdjuntarse al proceso con un depurador s registros, editar el código o los datos, etc.
Bien, una vez que tenemos claro todo esto, podemos empezar a hablar de las herramientas de Debbuging.
Para analizar el archivo de volcado que se genera al "colgarse" el sistema operativo necesitaremos un depurador y los símbolos pertenecientes al sistema operativo en el que se ha producido ese dump.
Windbg es una herramienta de depuración tanto en modo kernel como en modo usuario, con ella analizaremos los volcados.
Cuando pasa un error en modo kernel Windows nos saluda con una pantalla azul y la info sobre el código de stop. Esto puede modificarse, de manera que:
- Se puede asignar un depurador (como windbg o KD).
- Se grabe el archivo de volcado de memoria (dump).
- Se produzca un reinicio automático del sistema.
- Se grabe el volcado y reinicie el sistema inmediatamente después.
Los volcados.
Modo-kernel:
Completo: volcado de tamaño más grande, contendrá la memoria física del equipo en el momento del error. Lo que implica que el archivo de paginación deba tener al menos el tamaño de la memoria real + 1MB.
El volcado se guarda en la raíz del sistema  %systemroot%\Minidump con el nombre de memory.dmp, y en el caso de volcados posteriores, irían sustituyendo al existente.
Memoria Kernel: Con un tamaño significativamente menor contiene la memoria ocupada por el kernel en el momento del error. Es decir, ni memoria no asignada ni la que está asignada a aplicaciones en modo usuario, sólo la usada por el kernel, HAL, y la asignada a controladores y programas en modo kernel.
En general es el volcado más útil y se guarda en la raíz del sistema con el nombre memory.dmp. Los volcados posteriores, sean memoria kernel o completo, sustituyen al existente.
Volcado pequeño: Con un tamaño de 64KB es el más pequeño de todos y por tanto sólo requiere un archivo de paginación de ese tamaño.
Su contenido es:
- Mensaje del código de stop y sus parámetros.
- El contexto del procesador que ha cascado.
- La información del proceso y el contexto kernel, del proceso que ha petado.
- La información del hilo y el contexto kernel, del proceso que ha petado.
- La pila de llamadas en modo kernel para el hilo que ha petado. Sólo hasta 16KB, los de arriba de la pila.
- Una lista de los controladores cargados.
Además, si es Windows XP o posterior:
- Una lista de módulos cargados y descargados.
- El bloque de datos del depurador (información de depuración básica del sistema).
- Cualquier página de memoria que Windows crea que es útil en la depuración de errores. (Las páginas de datos a qué apuntan los registradores en el momento del pete y otras que hayan sido solicitadas específicamente por el componente que falla).
Después de esta pequeña explicación, vamos a descargar e instalar la herramienta, le tenemos que descargar los símbolos desde el servidor de descarga:
SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
Para eso tendríamos que crear un directorio en C$ con el mismo nombre "websymbols" o poner el nombre que os convengan, en mi caso es"DebuggingToolsSymbols". Una vez que ya hemos creado el directorio, abrimos la aplicación y entramos en File>Symbol File Path... o con Ctrl+S y se nos abrirá esta misma ventana donde debemos que pegar la ruta a utilizar en el Windbg:
Una vez que ya tenemos esta parte hecha ya podemos abrir el  archivo .dmp (DUMP) en  File>Open Crash Dump y cuando se abre la ventana tenemos que ir a  %systemroot%\Minidump (en este directorio el sistema guarda los volcados de memoria) para seleccionar el archivo .dmp.
Se abrirá el archivo dump (al abrir el primer archivo dump va tardar un poco por el motivo de que se está descargando los Symbolos de la url que le hemos configurado antes)
Podemos empezar con el comando:
!analyze –v
Con este comando podemos ver todos los detalles de archivo dump.
0: kd> !analyze -v
PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists (ie: calling
MmUnlockPages twice with the same list, etc).  If a kernel debugger is
available get the stack trace.
Arguments:
Arg1: 00000099, A PTE or PFN is corrupt
Arg2: 0004d4f9, page frame number
Arg3: 00000002, current page state
Arg4: 0004d4ee, 0

Debugging Details:
------------------
BUGCHECK_STR:  0x4E_99
CUSTOMER_CRASH_COUNT:  1
DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT
PROCESS_NAME:  Mcshield.exe
CURRENT_IRQL:  2
LAST_CONTROL_TRANSFER:  from 82b066dc to 82af9d10
STACK_TEXT: 
aadbba50 82b066dc 0000004e 00000099 0004d4f9 nt!KeBugCheckEx+0x1e
aadbba68 82ac4598 c0006000 aadbbbf0 00000000 nt!MiBadShareCount+0x24
aadbbb7c 82ad6ad4 c0005eb8 c0005f38 855da4a8 nt!MiDeletePteRun+0x66a
aadbbc84 82ad0e41 00bd0000 00c50fff 8c5ea1d1 nt!MiDeleteVirtualAddresses+0x3c1
aadbbd1c 82a6044a ffffffff 02cbf828 02cbf824 nt!NtFreeVirtualMemory+0x60b
aadbbd1c 77a664f4 ffffffff 02cbf828 02cbf824 nt!KiFastCallEntry+0x12a
WARNING: Frame IP not in any known module. Following frames may be wrong.
02cbf75c 00000000 00000000 00000000 00000000 0x77a664f4
STACK_COMMAND:  kb
FOLLOWUP_IP:
nt!MiBadShareCount+24
82b066dc cc              int     3
SYMBOL_STACK_INDEX:  1
SYMBOL_NAME:  nt!MiBadShareCount+24
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: nt
DEBUG_FLR_IMAGE_TIMESTAMP:  4c1c3fac
IMAGE_NAME:  memory_corruption
FAILURE_BUCKET_ID:  0x4E_99_nt!MiBadShareCount+24
BUCKET_ID:  0x4E_99_nt!MiBadShareCount+24
Followup: MachineOwner

Si nos fijamos en MODULE_NAME y IMAGE_NAME este es el error, que tenemos, los bloques de memoria están corruptos, pero para asegurarnos de que es la memoria física, tenemos que usar este comando:
0: kd> !memusage
Search: READ_PVOID error
InitTypeRead(nt!MmPhysicalMemoryBlock, nt!_PHYSICAL_MEMORY_DESCRIPTOR) error 1
En este caso ya está más que claro, que es lo que está fallando y para detectar cual es el modulo de memoria que nos está fallando (en el caso de que tenemos más de 1 modulo) tenemos que realizar un test de la memoria física.

sábado, 19 de febrero de 2011

Debugging V Parte

En la V parte me gustaria hablar de una herrameinta no muy conocida que nos puede ser de gran ayuda en los casos que nuestro servidor tiene problemas con algun proceso o con los handles de algun proceso que nos pone la CPU al 100% y no podemos trabajar con el servidor, se queda bloqueado.
La herramienta se llama Notmyfault del creaador Mark Russinovich y sirve para provocar un el famoso pantallazo azul y a su vez el volcado de memoria.
En el archivo .rar que nos descargamos tenemos 2 ejecutables tanto para procesadores de X86 como para X64:
Ejecutamos el ejecutable Notmyfault de X86 o X64 (el que coincida con nuestro s.o.) y veremos la siguiente pantalla:
Como podeis ver tenemos varias opciones para realizar un volcado del S.O., si ejecutamos la 1ª opcion High IRQL fault (por ejemplo), el equipo se reiniciara y podemos ver como realiza el volcado de memoria en el BSOD:


Una vez completado el proceso de volcado de memoria y despues de que se reinicie el servidor al iniciar sesion, podemos observar el mismo codigo de error que en el pantallazo azul anteriormente mostrado:
Bien , pues ya teniendo el volcado de memoria lo podemos analizar con debugging tools y realizar el troubleshooting para localizar el fallo.
Un Saludo

Debugging IV Parte

En la IV parte os quiero comentar de la simple herrameinta con la cual se puede configurar los archivos dump en local. Ya se que pensais que para configurar el volcado de los archivos dump en local se puede hacer en las propiedades de sistema > Opciones avanzadas > Inicio y Recuperacion y listo, pero esta herramienta no solo lo puede hacer en el sistema local donde se esta ejecutando, si no tambien en remoto.
La herramienta se llama Dump Configurator.hta y se puede usar cuando no podemos acceder a un servidor por control remoto porque tiene la CPU al 100% y se reinicia o tiene el servicio RDP caido.





Pulsando en Change nos podemos conectar a cualquier servidor o pc de nuestra red local por el hostname o la IP que tengamos en nuestra empresa para cambia la configurarion del Volcado de memoria.
Espero que os sirva.
Un Saludo

domingo, 6 de febrero de 2011

Banco de Sonidos de discos fallando


La empresa Data Cent Data Recovery, acaba de publicar en su web los sonidos más comunes de los fallos físicos de discos tanto de distintos fabricantes y tamaños. 
Es bastante interesante ya que nos podrá ayudar a identificar el fallo.
Saludos

jueves, 3 de febrero de 2011

Debugging III Parte

Para estar seguros que nuestro sistema podrá guardar los archivos de volcado, podemos comprobar que la unidad del sistema (normalmente C:\Windows) dispone de suficiente espacio libre, que el disco dispone de suficiente espacio libre y que el disco no esté corrupto.
Un volcado de memoria completo supone que el espacio libre necesario debe ser al menos igual a la cantidad de memoria física presente en el equipo. Hay que comprobar que hay espacio suficiente en la unidad del sistema para el máximo tamaño de archivo de paginación para el archivo de volcado.
Para evitar fragmentación del disco al crear el archivo de volcado de memoria es interesante establecer un tamaño fijo para el archivo de volcado como para el sistema, el tamaño deseado y recomendado por microsoft es de 1,5 tamaño de la memoria fisica y así no necesitar expandirlo mientras se crea el volcado de memoria.
Se ha de comprobar que la ruta del archivo de volcado de memoria, de forma predeterminada %systemroot%\Memory.dmp, dispone de suficiente espacio libre para almacenar el volcado.
Para utilizar con destreza la herramienta Windbg requiere largo tiempo de estudio ya que es una aplicacion bastante compleja, conocer todas las funcionalidades que pueda permitir esta herramienta. Sin embargo cuanto mas conocimientos se tenga de esta herramienta, mas informacion se obtendra y menos tiempo necesario se invertira. Entre los comandos fundamentales que se deben conocer aparte de los comando que he presentado en Debugging & Optimization II Parte son los siguientes:
!VM
La salida de este comando muestra las aplicaciones que usaban la memoria virtual junto con su distribucion en el momento del volcado.
.logappend
Permitira escribir todo el contenido de la shell en un archivo log.Es muy util para exportar todo lo que sacamos en pantalla de la shell y disponer de una bitacora de todos los comandos ejecutados hasta el momento.
.logappend D:\Windbg.log (en mi caso puse esta ruta de path, pero podeis poner la ruta cual os convenga mejor)
.logclose
Este comando cierra el log para su posterior analisis
!process 0 0 
Este comando informa sobre todos los procesos que se encontraban en ejecucion en el momento de la recojida del volcado de memoria.
!process 0 7
Este comando es para obtener datos asociados a los procesos, como puedes ser los hilos de ejecucion.
.process
Establece el contexto para un proceso determinado.
lm t n
Muestra una lista de los modulos que se encontraban cargados en la memoria antes de realizar el volcado.
dt (Display Type process)
Este comando es capaz de mostrar la estructura de una variable ya sea local o global y su tipo de dato.Por ejemplo el objeto EPROCESS:
kd> dt nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS
   +0x078 ProcessLock      : _EX_PUSH_LOCK
   +0x080 CreateTime       : _LARGE_INTEGER
   +0x088 ExitTime         : _LARGE_INTEGER
   +0x090 RundownProtect   : _EX_RUNDOWN_REF
   +0x094 UniqueProcessId  : Ptr32 Void
   +0x098 ActiveProcessLinks : _LIST_ENTRY
   +0x0a0 QuotaUsage       : [3] Uint4B
   +0x0ac QuotaPeak        : [3] Uint4B
   +0x0b8 CommitCharge     : Uint4B
   +0x0bc PeakVirtualSize  : Uint4B
   +0x0c0 VirtualSize      : Uint4B
   +0x0c4 SessionProcessLinks : _LIST_ENTRY
   +0x0cc DebugPort        : Ptr32 Void
   +0x0d0 ExceptionPort    : Ptr32 Void
   +0x0d4 ObjectTable      : Ptr32 _HANDLE_TABLE
   +0x0d8 Token            : _EX_FAST_REF
   +0x0dc WorkingSetPage   : Uint4B
   +0x0e0 AddressCreationLock : _KGUARDED_MUTEX
   +0x100 HyperSpaceLock   : Uint4B
   +0x104 ForkInProgress   : Ptr32 _ETHREAD
   +0x108 HardwareTrigger  : Uint4B
   +0x10c PhysicalVadRoot  : Ptr32 _MM_AVL_TABLE
   +0x110 CloneRoot        : Ptr32 Void
   +0x114 NumberOfPrivatePages : Uint4B
   +0x118 NumberOfLockedPages : Uint4B
   +0x11c Win32Process     : Ptr32 Void
   +0x120 Job              : Ptr32 _EJOB
   +0x124 SectionObject    : Ptr32 Void
   +0x128 SectionBaseAddress : Ptr32 Void
   +0x12c QuotaBlock       : Ptr32 _EPROCESS_QUOTA_BLOCK
   +0x130 WorkingSetWatch  : Ptr32 _PAGEFAULT_HISTORY
   +0x134 Win32WindowStation : Ptr32 Void

!cpuinfo
Muestra la informacion de la CPU.
!sysinfo
Permite mostrar info acerca de los objetos del sistema analizados como la BIOS, la CPU, etc.
!reg
Con este comando accedemos al registro del s.o. este mostrara las claves de registro almacenadas en la memoria en un instante concreto.