escalar privilegios DESDE WINDOWS (brute force)

0 comentarios

Este método se basa en un ataque de fuerza bruta a los hashes de las contraseñas, por lo que el factor "suerte" juega un papel importante, lo ideal es seguir uno de los métodos de arriba

1. Descargar driver para ver particiones ext2 y ext3, el programa se llama "ext2fs" y se descarga de aqui: http://sourceforge.net/projects/ext2fsd

2. Copiar los ficheros /etc/passwd y /etc/shadow a una carpeta de Windows, estos ficheros contienen los hashes de las contraseñas de los usuarios

3. Ahora necesitaremos aplicarle fuerza bruta a estos ficheros, para ello utilizaremos un programa llamado john the ripper: Descargar el programa "john the ripper" de aqui: http://www.openwall.com/john/

4. Nos documentamos en internet sobre como usar los comandos del john the ripper; Básicamente usaremos los siguientes comandos en este orden:

  • unshadow (para fusionar el fichero passwd con shadow, esto es necesario para poder empezar a crackear las contraseñas)
  • single, incremental etcétera (para realizar distintos ataques de fuerza bruta)
  • show (para ver las contraseñas ya crackeadas)

informatica forense

0 comentarios

Informática Forense

Este documento no pretende ni tiene la finalidad de convertirse en manual de referencia. Este documento relata los aspectos básicos relacionados en el campo de la informática forense, explicando de una forma simple y concisa las herramientas utilizadas para la captura de evidencias. También explicará los aspectos técnicos relativos a la arquitectura de un sistema Windows. Probablemente esto ayudará al lector a comprender mejor cómo un sistema Windows recopila y almacena la información, ayudando también a entender la arquitectura del sistema.

Prohibida la reproducción total o parcial de este texto sin poner la fuente (http://www.elhacker.net)
Prohibida la modificación o eliminación de enlaces e imágenes en este documento.
Redactado por Silverhack el 08 de Agosto de 2006
Versión 0.1

General

Definición de análisis forense

Evidencia Digital

RFC3227 (Recolección y manejo de evidencias)

Buenas prácticas a la hora de analizar datos


Entorno Microsoft

Cuentas de usuario y perfil de usuario

Tipos de Logon en un sistema basado en Windows

La Papelera de Reciclaje. Estructura y funcionamiento

Archivos de Registro. Estructura

Index.dat e Internet Explorer. Estructura y funcionamiento

Service Pack, HotFix. Qué es y para qué sirve?

Introducción y definición de análisis forense

En este tutorial, vamos a explicar de la forma más sencilla posible el uso de algunas herramientas que nos pueden facilitar la tarea a la hora de realizar un análisis forense en entornos Windows.
Existen muchísimas herramientas destinadas a éste propósito, comerciales y gratuitas. En este tutorial vamos a ver como enfocaríamos un análisis partiendo de herramientas gratuitas.
Cuando un usuario no autorizado toma el control de un sistema, éste puede instalar múltiples backdoors (puertas traseras) que le permitan entrar al sistema en un futuro, aunque parcheemos la vulnerabilidad original.
Se denomina análisis forense al proceso de analizar una copia completa de un sistema que ha sufrido una intrusión o ataque.

El análisis forense permite obtener la mayor cantidad posible de información sobre:

  • El método utilizado por el atacante para introducirse en el sistema
  • Las actividades ilícitas realizadas por el intruso en el sistema
  • El alcance y las implicaciones de dichas actividades
  • Las "puertas traseras" instaladas por el intruso



Realizando un análisis forense nos permitirá, entre otras cosas, recuperarnos del incidente de una manera más segura y evitaremos en la medida de lo posible que se repita la misma situación en cualquiera de nuestras máquinas.

Un buen análisis forense debe dar respuestas a varias cuestiones, entre las que se encuentran las siguientes:

  • ¿En que fecha exacta se ha realizado la intrusión o cambio?
  • ¿Quién realizó la intrusión?
  • ¿Cómo entró en el sistema?
  • ¿Qué daños ha producido en el sistema?



Si una vez realizado el análisis forense no conocemos con exactitud las respuestas a estas preguntas, no tendremos un análisis funcional. Esto puede derivar en futuros ataques, bien por la misma persona, o bien por diferentes medios de intrusión que desconozcamos.

Evidencia digital

Uno de los pasos a tener en cuenta en toda investigación, sea la que sea, consiste en la captura de la/s evidencia/s. Por evidencia entendemos toda información que podamos procesar en un análisis. Por supuesto que el único fin del análisis de la/s evidencia/s es saber con la mayor exactitud qué fue lo que ocurrió.
Bueno, y ¿qué entendemos por evidencia digital? Podemos entender evidencia como:

  • El último acceso a un fichero o aplicación (unidad de tiempo)
  • Un Log en un fichero
  • Una cookie en un disco duro
  • El uptime de un sistema (Time to live o tiempo encendido)
  • Un fichero en disco
  • Un proceso en ejecución
  • Archivos temporales
  • Restos de instalación
  • Un disco duro, pen-drive, etc...

RFC3227. Recolección y manejo de evidencias

El propósito de este documento (RFC3227) no es otro que proveer a los administradores de sistemas unas pautas a seguir en el aspecto de recolección de evidencias, si se diese el caso de un incidente de seguridad.
En este rfc se trata los siguientes aspectos:

  • Principios para la recolección de evidencias
  • Orden de volatilidad
  • Cosas a evitar
  • Consideraciones relativas a la privacidad de los datos
  • Consideraciones legales
  • Procedimiento de recolección
  • Transparencia
  • Pasos de la recolección
  • Cadena de custodia
  • Como archivar una evidencia
  • Herramientas necesarias y medios de almacenamiento de éstas


Algunos de los principios que rige el documento para la recolección de evidencias son:

  • Comprometer al personal de aplicación de la ley y manejo de incidentes apropiados
  • Capturar la imagen tan exacta del sistema como sea posible
  • Anotar todo lo que se vaya investigando
  • Recolectar las evidencias en función de la volatilidad de la misma. Primero se recogerán las de mayor volatilidad


El orden de volatilidad que recoge el rfc es el siguiente:

  • Registros, Cache
  • Tabla de ruta. ARP Cache, Tabla de Proceso, Núcleo de estadísticas, memoria
  • Sistema de Archivo temporales
  • Disco
  • Datos de monitoreo y Log's remotos relativos al caso
  • Configuración física, topología de red
  • Medio de Archivos


Si se quiere leer más sobre el RFC3227 sobre la recolección y manejo de evidencias, puede hacerlo en el siguiente enlace:

http://rfc.net/rfc3227.html

Buenas prácticas a la hora de la recogida y análisis de los datos

Estudio Preeliminar

Es el primer paso de cualquier análisis forense. Nos deben o debemos explicar con la mayor exactitud posible qué ha ocurrido, qué se llevaron o intentaron llevar y cuándo ocurrió.
También tendremos que recoger información sobre la organización, ya sea organización, casa, etc...
Recogeremos información sobre la tipología de red y de gente directa o indirectamente implicada.
También podríamos recoger información sobre el tipo de escenario y el/los sistema/s afectado/s.

¿Apagamos el equipo?

Podemos presentarnos con dos casos. El primero es el de no apagar el equipo. Si no apagamos el equipo, podremos ver todos los procesos en ejecución, los consumos de memoria, las conexiones de red, los puertos abiertos, los servicios que corren en el sistema, etc.
También se nos presenta el problema de que si apagamos el equipo, se perderá información volátil que puede ser esencial para el curso de la investigación.
La parte mala de esta situación es que el sistema, al poder estar contaminado, éste puede ocultar la información. También se nos presenta el problema de que si no apagamos el sistema, éste puede comprometer a toda la red.
Si no apagamos el sistema tendremos que controlar este aspecto de la seguridad, y aislarlo completamente de la red, lo cual llega a ser prácticamente imposible en determinados escenarios.


Tipo de Herramientas

Una de las cosas más importantes a la hora de realizar un análisis forense es la de no alterar el escenario a analizar. Esta es una tarea prácticamente imposible, porque como mínimo, alteraremos la memoria del sistema al utilizar cualquier herramienta.
Las herramientas que utilicemos deben de ser lo menos intrusivas en el sistema, de ahí que se huya de las herramientas gráficas, las que requieren instalación, las que escriben en el registro, etc...
Lo normal y lógico sería utilizar herramientas ajenas al sistema comprometido, ya sean herramientas guardadas en cualquier soporte (CD-ROM, USB, etc...). Esto lo hacemos para no tener que utilizar las herramientas del sistema, ya que pueden estar manipuladas y arrojar falsos positivos, lecturas erróneas, etc...

Tipo de Copia del Sistema

En el caso de que se pueda realizar, lo ideal sería hacer más de una copia de seguridad. Una de ellas se podría guardar herméticamente junto con algún sistema de fechado digital como el proporcionado por RedIris http://rediris.es/app/sellado.
Otra copia la podría guardar algún responsable de la compañía afectada, y una copia se destinaría a trabajar sobre ella.
En el caso que sea posible, la imagen obtenida podremos montarla sobre un hardware similar al de la máquina afectada.
Destacaremos los siguientes aspectos:

  • La copia que realicemos debería ser lo más exacta posible
  • Si es posible, haremos varias copias de seguridad
  • Una de ellas se guardará herméticamente, para aislarla de todo tipo de agente exterior
  • A ser posible se fecharán digitalmente y sobre el papel
  • En el caso que sea posible, la imagen obtenida la montaremos sobre hardware similar

Cuentas de usuario y perfiles de usuario

Dejando a un lado si se accede legítima o ilegítimamente, un usuario no es más que cualquier persona que pueda acceder al sistema.
En una cuenta de usuario almacenaremos información acerca del usuario. Algunos datos que se guardan son:

  • Nombre de usuario: Nombre con el que nos identificaremos en el sistema
  • Nombre completo: Nombre completo del usuario (Siempre que se rellene)
  • Contraseña: Palabra cifrada para autenticarnos en el sistema
  • SID: Código de identificación de seguridad *
  • Directorio: Es el lugar donde en un principio se guardará toda información relevante al usuario.

*Nota.- A diferencia de los demás, este es el único dato que no podemos especificar manualmente

El perfil de usuario contiene las preferencias y las opciones de configuración de cada usuario. En la tabla siguiente se puede ver un ejemplo de la configuración que contienen los perfiles de usuario.

En Windows 2003 Server, los perfiles de cada usuario se almacenan en el directorio Documents and Settings de la raíz. Si nuestro equipo estuviese montado en la unidad C: \, el directorio de los perfiles se encontrará en el directorio siguiente:

C:\Documents and Settings\usuario

Tipos de Logon en un sistema basado en Windows

Los sucesos de inicio de sesión en un sistema Windows se generan en los controladores de dominio para la actividad de cuentas de dominio y en los equipos locales para la actividad de cuentas locales. Si están habilitadas ambas categorías de directiva, los inicios de sesión que utilizan una cuenta de dominio generan un suceso de inicio o cierre de sesión en la estación de trabajo o servidor, y generan un suceso de inicio de sesión de cuenta en el controlador de dominio.
La categoría de inicio de sesión en Windows registrará la entrada con un evento ID 528 que contendrá una serie de datos importantes, como son el tipo de entrada y el ID de inicio de sesión.
Dependiendo del inicio de sesión que hagamos en la máquina, ya sea a través de recursos compartidos, de forma remota o de forma física, Windows registrará ese inicio de sesión con una numeración u otra.
Algunos tipos de inicio de sesión son:

Tipo 2. Interactivo. Entrada a un sistema desde la consola (teclado)
Tipo 3. Red. Entrada al sistema a través de la red. Por ejemplo con el comando net use, recursos compartidos, impresoras, etc...
Tipo 4. Batch. Entrada a la red desde un proceso por lotes o script programado.
Tipo 5. Servicio. Cuando un servicio arranca con su cuenta de usuario.
Tipo 7. Unlock. Entrada al sistema a través de un bloqueo de sesión.
Tipo 10. Remote Interactive. Cuando accedemos a través de Terminal Services, Escritorio Remoto o Asistencia Remota.

La Papelera de Reciclaje. Estructura y funcionamiento

Al contrario de lo que se piensa mucha gente, cuando un archivo se borra de una computadora, realmente no se borra. Los archivos se modifican por decirlo de alguna manera, para que el sistema operativo no los vea. Windows utiliza un almacén para los archivos eliminados llamado Papelera de Reciclaje. La existencia de este almacén permite que un usuario pueda recuperar la información, si ésta ha sido borrada accidentalmente por ejemplo. Cuando Windows da orden de eliminar cierto archivo o directorio, la información se guarda en expedientes, por si el usuario se arrepiente y quiere recuperar sus datos. El archivo que contiene esta información se llama INFO2 y reside en el directorio de la Papelera de Reciclaje, es decir, está dentro de la Papelera.
Es
necesario explicar cómo funciona la Papelera de Reciclaje antes de que discutamos las estructuras del archivo INFO2. Cuando un usuario suprime un archivo a través del explorador de Windows, una copia del archivo se mueve al almacén de la Papelera de Reciclaje. La localización de este directorio es distinta, dependiendo de la versión de Windows que tengamos. En versiones NT/XP/2003, el archivo INFO2 se encuentra en el siguiente directorio:

C:\Recycler\\INFO2

Cuando eliminamos un fichero, Windows lo renombra siguiendo este parámetro:

D .Extensión del archivo

Es decir, que si nosotros quisiésemos eliminar el archivo Contabilidad.doc y lo mandásemos a la Papelera de Reciclaje, Windows lo renombraría de la siguiente manera:

DC1.Doc

Si borrásemos otro archivo, a éste nuevo archivo se le pondría el número 2, y así sucesivamente.

Si al menos un archivo se ha movido a la Papelera de Reciclaje, el archivo INFO2 existirá. Cuando se vacía la Papelera de Reciclaje, el contenido del archivo INFO2 se limpiará, y el número se establecerá de nuevo a 1. Es decir, el archivo INFO2 se suprime y se crea un nuevo y vacío INFO2.

Archivos de Registro de Windows. Estructura

Windows define al registro como una base de datos jerárquica central utilizada en todas las versiones de Windows, con el fin de almacenar información necesaria para configurar el sistema para uno o varios usuarios, aplicaciones y dispositivos hardware. El registro contiene información que Windows utiliza como referencia constantemente, como por ejemplo los perfiles de usuario, las aplicaciones instaladas, los parches o HotFixes instalados, etc... Los archivos del registro de Windows se almacenan en archivos binarios, es decir, que si abrimos estos ficheros con un editor de texto, como puede ser notepad, no podremos leerlo.
El registro se puede manipular desde muchos medios, tanto en línea de comandos como por la propia interfaz gráfica de Windows. Evidentemente la forma más fácil de manipular el registro es de forma gráfica. Sólo tendríamos que ejecutar la herramienta regedit.
El Registro está organizado en una estructura jerárquica compuesta por subárboles con sus respectivas claves, subclaves y entradas.
Las claves pueden contener subclaves y éstas, a su vez, pueden contener otras subclaves. Generalmente, la mayor parte de la información del Registro se almacena en disco y se considera permanente, aunque en determinadas circunstancias hay datos que se almacenan en claves llamadas volátiles, las cuales se sobrescriben cada vez que se inicia el sistema operativo.
Toda información relativa al sistema operativo y al PC se encuentra recogida en los archivos del sistema del registro de Windows, los cuales se localizan en %systemroot%\system32\config, y atienden a los nombres siguientes:

  • SECURITY
  • SOFTWARE
  • SYSTEM
  • SAM
  • DEFAULT


Cada sección del Registro está asociada a un conjunto de archivos estándar. En la tabla siguiente se muestran las secciones y archivos asociados a estas secciones:

Index.dat e Internet Explorer. Estructura y funcionamiento

Internet Explorer es el navegador por excelencia de Microsoft. A partir de su versión XP, este navegador viene integrado en el sistema operativo, es decir, que no se puede desinstalar. Internet Explorer guarda una copia de las páginas visitadas en el disco duro. Si vas a una página ya visitada, Internet Explorer busca primero en la caché, y la compara con la página del servidor, mostrándote la página desde tu disco duro, si no ha habido actualizaciones. Con esto conseguimos una carga mucho más rápida de las páginas Web, o como dirían los expertos, Una mejor experiencia para el usuario final. Podemos borrar el caché de disco desde el propio Internet Explorer (herramientas, opciones de Internet, eliminar archivos). El problema es que esta opción borra todo el contenido del historial de Internet (los archivos html, los gráficos, etc.) pero no borra el índice de referencia que Internet Explorer usa para buscar dentro de su historial: el archivo index.dat. Estos archivos (hay varios index.dat) están definidos como ocultos y de sistema; por eso no podemos acceder a su contenido desde el propio Windows, a no ser que quitemos el atributo de ocultos a esos directorios. En ellos se guarda una lista de todos los sitios Web que hemos ido visitando (aunque hayamos borrado el historial, esta lista no está sincronizada, luego no borra esas Urls). Esto supone un problema de privacidad, ya que cualquiera que sepa localizar y leer estos archivos index.dat tendrá un listado completo de los sitios que hayamos visitado (aunque hayamos borrado el historial del navegador). Además este archivo está creciendo constantemente, y puede llegar a ocupar varios megas de la forma más innecesaria. Aparte, si por cualquier razón su contenido se corrompe, puede ocasionar que Internet Explorer no pueda visualizar correctamente algunas páginas o no pueda descargar ficheros. La ruta en donde se encuentran estos archivos (index.dat) es la siguiente:

Service Pack, HotFix, ¿Qué es y para qué sirve?

Un Service Pack mantiene la versión de Windows y/o aplicaciones actualizados, corrigen problemas conocidos así como ampliar funcionalidad al equipo. En un Service Pack se incluyen drivers o controladores, herramientas y actualizaciones, así como algunas mejoras realizadas después de la puesta al público del producto. Y todo esto incluido en un paquete.
Cada nuevo Service Pack contiene todas las soluciones incluidas en los anteriores, es decir, cada Service Pack es acumulativo. Para mantener actualizado nuestro sistema sólo necesitaremos instalar el último Service Pack para cada producto o versión de Windows, ya que los Service Packs son específicos para cada producto. No se utiliza el mismo Service Pack para actualizar un Windows XP, que para actualizar un Windows 2000, por ejemplo.
Un HotFix básicamente es una revisión de un producto. Estas revisiones se realizan con el fin de subsanar errores específicos para los que no existe una solución viable.
Un HotFix no se somete a pruebas rigurosas, por lo que se recomienda aplicar estas revisiones, si se experimenta el problema exacto.
Cada cierto tiempo, al incorporarse nuevas funcionalidades y actualizaciones en los Service Packs, estos HotFix se someten a comprobaciones más exhaustivas, y se ponen a disposición del público en general.
La rama encargada de programar HotFix en Microsoft se denomina Ingeniería de corrección rápida o QFE (Quick Fix Engineering).

Fuente: http://foros.cantv.net/forum_posts.asp?TID=1414

Crackear contraseñas de Linux con John the Ripper

0 comentarios

John the Ripper (Juan el destripador) es el programa de cracking de contraseñas por excelencia, en esta entrada veremos como averiguar las contraseñas de Linux mediante dos métodos disitintos, a través de diccionarios y por fuerza bruta.

No es tan fácil como parece, las contraseñas de Linux están encriptadas bajo MD5 en el archivo /etc/shadow, el cual no puede ser leído por los usuarios normales, asique tendremos que ingeniárnoslas, para conseguir ese archivo como sea; con exploits o con escalada de privilegios es lo más común.

Una vez tenemos el archivo en nuestro poder, lo primero que haremos será instalar el paquete john:

sudo apt-get install john

Una vez instalado podemos empezar con el primer método.

El ataque por diccionarios se basa en un archivo, que contendrá todas las palabras que probaremos para adivinar el password. John leerá ese archivo e irá probando de una en una hasta dar con la acertada. Ejemplo:

ekhtor@macbook:~$ john -w=spanish.txt /etc/shadow

Loaded 2 passwords with 2 different salts (FreeBSD MD5 [32/32])

guesses: 0 time: 0:00:00:05 6% c/s: 2404 trying: amiento

Session aborted

En este caso estoy utilizando el diccionario spanish.txt porque pienso que la clave puede estar compuesta sólo con letras, si supiéramos que la clave es numérica usaríamos un diccionario numérico.

En los siguientes enlaces podéis descargar un ejemplo de cada uno:

Diccionario normal Diccionario numérico

¿Qué ventajas o inconvenientes tiene este método?

Pues la principal ventaja es la velocidad, es un método muy rápido pero a su vez tiene un gran inconveniente, si el password que queremos descifrar no se encuentra en el diccionario, nunca lo hallaremos. Este método lo usaremos sobre todo cuando queramos una cuenta de usuario en un sistema en el que hay muchos, porque al haber muchos usuarios, la probabilidad de tener algún password en nuestro diccionario es muy alta.

El segundo método es más agresivo, usaremos la fuerza bruta cuando queramos la clave de un usuario concreto, por ejemplo root. Los administradores de sistemas son más cuidadosos con sus claves y es muy raro que usen claves fáciles asique la única forma de conseguirlo será probar todas las posibles combinaciones. Ejemplo:

john -i /etc/shadow

Esto probará todas las combinaciones posibles, pero si sabemos el tipo de password que puede ser podemos indicarle que sólo use letras o números. Si queremos que los password que pruebe sean numéricos escribimos esto:

john -i:Digits /etc/shadow

Por el contrario si queremos que sólo pruebe con letras:

john -i:Alpha /etc/shadow

Hasta aquí ya sabemos como conseguir las contraseñas, ahora sólo queda saber cómo visualizarlas,y se hace con el siguiente comando:

john -show /etc/shadow

El hecho de averiguar mediante fuerza bruta una clave puede no ser cuestión de minutos u horas, sino de semanas, meses o incluso años si es lo suficientemente compleja, por eso si en algún momento queremos parar el proceso pulsamos CTRL+C y cuando queramos continuar escribimos el comando:

john -restore /etc/shadow

Como dije anteriormente este programa es el mejor(en mi opinión) y por lo tanto aquí no se acaban sus posibilidades, tiene muchos parámetros, configuraciones, parches, formatos… aquí os hago una pequeña introducción, si queréis profundizar, en la sección de manuales podréis encontrar lo que buscáis.

Para protegernos de estos ataques, sólo tenemos que hacer dos cosas muy sencillas, hacer una clave compleja compuesta de números, letras mayúsculas y minúsculas y carácteres raros como @ , . + - y de una logitud considerable, unos 10 carácteres está bien. Además de eso, como el john también es capaz de descifrar claves complejas, debemos de cambiar nuestra contraseña periódicamente.


Fuente: http://linuteca.com/crackear-contrasenas-de-linux-con-john-the-ripper/

Escalar Privilegios en Windows XP

0 comentarios
Elevando privilegios en máquinas con Windows XP


En este pequeño manual explicaré unas cuantas formas para llevar a cabo una tarea muy codiciada por muchos: elevar sus privilegios en una máquina con Windows XP. Básicamente nos centraremos en este sistema operativo de la casa Microsoft, puesto que actualmente es su ultimo sistema operativo y es uno de los mas utilizados hoy en día.
Por otra parte los sistemas 9x, ME, NT y 2000 están ya un tanto desfasados (principalmente los 3 primeros) y no creo necesario detallar nada acerca de dichos sistemas, sería, en cierto modo, una perdida de tiempo, aunque algunas de las técnicas aquí explicadas serían aplicables a un Windows 2000 por ejemplo.
He considerado oportuno escribir este pequeño manual, en cierto modo para relatar uno de los métodos que yo utilicé en una ocasión, y además, en caso de que no funcionara, tener otros métodos como posibles alternativas válidas.
Cabe destacar que los métodos aquí explicados funcionan en la mayoría de los casos, aunque a veces te funcionará un método en concreto y otro no, de ahí la razón por la cuál explico varios. Una última puntualización a destacar antes de pasar a la acción, es que en sistemas “capados” resultará muy difícil elevar tus privilegios, se puede decir que es casi imposible, auque como creo que sabéis en este mundo no hay nada imposible. De todos modos podéis probarlo, pasemos a la acción.
A continuación, numeraré y explicaré uno por uno los distintos métodos de elevación de privilegios que podemos hacer en una maquina con Windows XP, vamos allá.

Elevación de privilegios mediante el exploit GETAD2


Este tipo de elevación es muy sencilla de explicar, básicamente pasaremos de ser un usuario restringido del sistema, invitado o cualquier otro “rol” sin privilegios, a formar parte del grupo de administradores del sistema en cuestión.
Para ello, usaremos el exploit GETAD2, que en mis pruebas es capaz de elevar privilegios en un Windows 2000 en cualquiera de sus subsistemas con un sp3 y en un Windows XP Home//Profesional con un sp1.
En primer lugar nos tendremos que hacer con dicho exploit; si bien consigues el GETAD2.exe estas de suerte, lo más lógico es que lo encuentres como GETAD2.c y lo debas compilar, por ejemplo usa el Visual C++ o bien el Dev C++.
Una vez tengas el archivo ejecutable arranca la maquina con la cuenta que te hayan asignado y entra en el sistema. Ahora viene el momento cumbre de este “hack”, lograr ejecutar el exploit con éxito, es aquí donde vienen los problemas. Para ejecutar el exploit, deberás hacerlo en la consola de sistema (cmd.exe) y se puede dar el caso que no tengas acceso a ella, o bien que tu cuenta no tenga permisos de escritura o mil historias (en el peor de los casos si el Windows XP está “capado” olvídate de este método).
Si en el terminal que estés puedes introducir disquetes estarás de suerte, puesto que lo copias en el disquete y de ahí enviarlo a la carpeta temporal (donde lo mas probable es que tengas permisos de escritura), incluso pueden que te hayan hecho un subdirectorio específico para tu cuenta donde también cuentes con dichos permisos. Si lo bajas de Internet lo mismo, compilas y a la carpeta temporal.
Para ejecutarlo puedes probar lo típico, ejecutar cmd.exe, command.com, buscarlo en C: (si es que puedes) etc. Otras opciones serían crearte un archivo *.bat que llame a la consola de sistema, o bien copiártelo en un disquete y ejecutarlo en la maquina. Por último también lo podrías bajar de Internet (otro programa que abra una interfaz de comandos) o bien utilizar los denominados "GUI cmd", que básicamente son consolas de sistema (cmd.exe) que tienen interfaz gráfica con la apariencia de una página web del correo de hotmail, así si algún capullo pasa por delante de ti, pensará que estás leyendo tu correo, cuando en realidad estás delante de la shell del sistema.





Para acabar con este apartado, aquí tienes los pasos a seguir, una vez obtenido el exploit y la consola de sistema:

C:\>GETAD2.exe à Ejecutar el exploit. Acto seguido se nos abrirá una ventana shell de sistema.

C:\Windows\System32> à Acto seguido realizaremos la elevación de privilegios; ejecutaremos los siguientes comandos:

C:\Windows\System32\> net user XfjXt 123456 /add àEste comando crea una nueva cuenta de usuario, su login es XfjXt y su password es 123456.

C:\Windows\System32\>net localgroup “administradores” XfjXt /add à Este comando añade al grupo de administradores locales del sistema al usuario XfjXt. Conlleva que XfjXt conserva el mismo password.

Bueno ya eres administrador del sistema, puedes hacer lo que te venga en gana (cosa que no veo bien).

Por ultimo solo nos queda reiniciar la maquina y entrar con nuestro login y nuestro password. Ahora tendremos privilegios de administrador local del sistema en cuestión.

Tan solo avisar que puede que al ejecutar el exploit el sistema se vuelva realmente inestable, de hecho puede llegar a tirar abajo el sistema y reiniciarse solo. En todo caso cuando esto pase nos logeamos con nuestro login y password y punto.


Elevación de privilegios mediante el protector de pantalla de Windows XP

Éste método consta principalmente de “crearnos” una shell con permisos de sistema aprovechando un pequeño despiste de los chicos de Microsoft.
Se basa en la modificación de ficheros, tal que en lugar de ver el protector de pantalla, se nos ejecutará la consola de sistema (cmd.exe).
Una vez arrancada la maquina y con algún método de los antes explicados de acceder al cmd.exe, te sitúas en la carpeta:

C:\Windows\System32

Ahora realizamos un “dir” y observaremos un fichero llamado logon.scr, que es el protector de pantalla que se ejecuta si tardamos entre 15 o 20 minutos antes de entrar en el sistema como usuario alguno. Es gracias a este “fallo” mediante el cual nos vamos a hacer con la shell de sistema.

A continuación, deberemos hacer una copia de seguridad de dicho archivo, puesto que lo vamos a eliminar del sistema para llevar a cabo nuestro propósito, dicho esto, nos crearemos un directorio en tu espacio de disco duro personal, si es que tienes, o bien en la carpeta Temp. de sistema, puesto que probablemente como he dicho antes tengas permiso de escritura. Aquí resumo el algoritmo a seguir en la consola de sistema:

1.- Ejecutamos: mkdir nombredecarpetaquemedelagana...
2.- Trasladar fichero original: copy logon.scr c:\carpeta...\logon.scr
3.- Trasladar fichero shell: copy cmd.exe c:\carpeta...\cmd.exe
4.- Eliminar fichero original: del logon.scr
5.- Reemplazar ficheros para llevar a cabo este “hack”:
rename cmd.exe logon.scr
6.- Salir de la consola de sistema: exit

Bueno pues ya esta, solo queda reiniciar la máquina y esperar entre 10 y 20 minutos (sin entrar en Windows), dependiendo de la máquina en cuestión, y en vez de aparecer el protector de pantalla, nos saldrá la shell de sistema, en la cuál podremos ejecutar el comando que nos de la gana.
Una vez dentro, cada cuál sabrá que camino elegir.

Elevación de privilegios mediante la consola de recuperación de sistema a través de Windows 2000


Bueno a partir de éste método, la cosa se pone un poco más fácil, ya que no nos tendremos que hacer con ningún fichero, ni tener permisos de ningún tipo ni nada por el estilo, por otro lado, en máquinas que no deja acceder al BIOS o sistemas con cargadores de arranque (Windows conviviendo con Linux) o sistema “capados” ya citados anteriormente, resultara casi imposible efectuar esta operación.
Solo necesitaremos un cd-rom de instalación de un Windows 2000 Pro, y que nos dejen arrancar desde la unidad D: (si es la que pertenece al lector de cd-rom). Todo ello se realiza desde el BIOS indicando a la opción Boot Sequence que en su orden de prioridad permita arrancar primero a la unidad lectora.
Una vez realizado esto, y arrancado el cd-rom. Se nos presenta la pantalla de instalación de Windows 2000 (aunque en el disco duro este instalado Windows XP). Una vez allá, seleccionaremos la opción “iniciar la consola de reparación”.
Como podréis comprobar vosotros solitos, una vez hecho esto, accederemos a la shell de sistema sin necesidad de introducir ningún password, que es lo que hubiera sucedido si hubiéramos usado el cd de instalación de Windows XP.
A partir de aquí, tenemos acceso ilimitado a la máquina en cuestión, y como ya he mencionado anteriormente, cada cuál es libre para hacer lo que le venga en gana.

Bueno, los 3 principales métodos de elevación de privilegios han quedado explicados, espero que se entiendan y sirvan para conseguir dicho objetivo.

Recalcar que existen un par de métodos más, aunque si bien no, poco efectivos, e incluso algunos ineficientes (explicados en otros textos y comprobados por mi), incluso otros que no ha hecho falta ni comprobarlos, puesto que la evidencia supera la explicación.

Como ya dije al principio, quizás os sirvan los 3 métodos, quizás 2 o solo 1, incluso puede que ninguno, esto es en sistema “capados” y/o bien protegidos. Son, por lo tanto, los 3 métodos que mas posibilidades tienen de realizar con éxito la tarea, así pues, una vez más, espero que os ayuden.

Para finalizar, como en toda guía orientada al mundo del hacking, no me hago responsable del uso que se le de a esta guía, puesto que tan solo se trata y se investiga uno de los muchos aspectos de Windows XP referentes a la seguridad, y en ningún caso se incita a burlar la seguridad de dicho sistema. El estudio e investigación, así como la curiosidad no son delitos... aún.

Fuente: http://www.laelitehacker.com/Hacker-Forums_-_file_-_viewtopic_-_t_-_23.html

Escalar Privilegios en Windows XP

0 comentarios
Se te ha presentado la situación donde pierdes la cuenta de administrador y tienes que loguearte como usuario limitado, pero no puedes hacer nada por obvias razones. Pues hoy veremos como escalar privilegios para tener control de una cuenta administrativa (?? hay que ser muuy pero muuy descuidado para perder la cuenta de administrador).

Solo necesitamos acceos a la consola de comandos para poder realizar este ejercicio. Los pasos son los siguientes:
  • Entrar a la consola de comando. Inicio --> Ejecutar ---> escribir "cmd" + Tecla Enter
  • Escribir at 17:41 /interactive "cmd.exe" (donde la hora es un minuto mas que la hora actual de su ordenador, asi mismo las comillas tambien se escriben) ejemplo y presionas la tecla enter
  • Al llegar el reloj de su ordenador a la hora que señalarón, aparecera una nueva consola de comando con la cuenta de system o sistema como aparece en este ejemplo
  • Matamos el proceso del nuestro explorer actual (el de la cuenta limitada) escribiendo lo siguiente taskkill /F /IM explorer.exe presionamos Enter.
  • Ahora, por último, iniciamos el proceso del explorador que se reconocera como administrador del equipo, es decir la cuenta system que cuenta con esos privilegios. Esto se hace escribiendo explorer.exe y presionamos Enter
Listo ya tenemos una cuenta administrativa, ahora a recuperar nuestra contraseña perdida xD

Fuente: http://ktheruler.blogspot.com/2008/05/escalar-privilegios-en-windows-xp.html

Virus en Linux

0 comentarios

Un nuevo campo de batalla

Pablo Garaizar Sagarminaga
txipinet@txipinet.com

El mundo de los virus ha acompañado a la microinformática desde sus inicios. Si bien las plataformas más atacadas han sido las de Microsoft, ha habido incursiones en otros sistemas por parte de los escritores de virus. Linux ha permanecido unos años al margen, con unos pocos virus que eran más una prueba de concepto que una amenaza real... quizá esto no haya hecho más que empezar.

Breve introducción a Linux

Linux es un SO similar a UNIX, con una breve pero intensa historia. No quiero hablaros de Linus Torvalds y de toda la poesía que rodea a Linux. Para ello visitad www.linux.org ó www.fsf.org para tener un enfoque más global en cuanto al Software Libre. Centrándonos en el tema técnico, diremos que Linux es compatible con la mayoría de software desarrollado para UNIX comerciales, tiene un kernel monolítico con módulos, y utiliza mayoritariamente ejecutables de tipo ELF o scripts de shell, Perl, etc. Actualmente es una alternativa seria a los productos de Microsoft o Sun, tanto en entornos de escritorio como en servidores de producción, aunque quedan muchas cosas por mejorar.

Pero bueno, esto sólo pretendía situar en el tema a quienes no tuvieráis muy claro que es Linux, así que vamos a entrar en materia...

¿Qué es un virus?

Un virus informático es:

Virus

Figura 1. Definición formal de virus informático.

Bien, esta es la definición formal basada en los estudios de Fred Cohen, el inventor del término "virus informático", que hace las delicias de los matemáticos pero que sólo está aquí para asustar. Afortunadamente Cohen da otra definición más asequible de virus informático: "un virus es un programa que es capaz de infectar otros programas modificándolos para que incluyan una copia, quizá evolucionada, de él mismo". Es decir, un virus lo que hace es tratar de añadir una copia de su propio código en otros programas.

Si os fijáis nadie ha dicho nada de discos duros destrozados, accesos ilícitos a ordenadores o ficheros secretos, etc. Más adelante veremos lo que es el "payload" de un virus, pero no tiene relación con la esencia de los virus en sí.

¿Qué NO es un virus?

Muchas veces oímos por la calle:

  • "Jo, le voy a meter un virus a mi novia para espiarle lo que hace por Internet"
  • "¿Si? Yo necesito un virus para que el día de la entrega de notas estalle el ordenador central de la Universidad"
  • "Lo malo es que nunca seremos capaces de programar un virus tan potente como el Melissa o el ILoveYou..."

Existe una creencia popular que identifica "virus" con "TODO lo que hace daño al ordenador o a su seguridad". Eso es totalmente falso.

En el primero de los casos, lo que nuestro desconfiado amigo quiere es un programa espía, que normalmente suele presentarse en el formato de troyano o "caballo de Troya". Un troyano es un programa que hace otra cosa distinta a la que se supone que hace. Si nosotros troyanizamos un programa que muestra una felicitación de cumpleaños y le incluímos un programa espía que nos informará de todo lo que hace, cuando mandemos esa felicitación y su receptor la abra, se ejecutará la felicitación y el programa espía, de manera análoga a lo que sucedió con el regalo del caballo de Troya.

En el segundo caso estamos hablando de una "bomba lógica". En este tipo de programas hay una condición de activación ("fecha de la entrega de notas") y un efecto ("estallar el ordenador central de la Universidad"). No es necesario infectar ficheros. Sólo conseguir "instalar la bomba lógica".

El tercer caso habla de "afamados virus de ordenador" de los que se han hablado en los medios de comunicación. En ambos casos se trataba de "gusanos" o "worms" que en lugar de infectar ficheros, lo que infectaban era ordenadores. Es decir, un gusano es similar a un virus pero en lugar de infectar ficheros se propaga de ordenador en ordenador. En cuanto a la calidad de los citados gusanos... es como si a alguien todavía le extraña por qué un músico de conservatorio nunca venderá tantos discos en su vida como David Bisbal, así es este mundo :-D

Muchas veces virus, troyanos, bombas lógicas y gusanos utilizan técnicas de unos y otros entremezcladas, por lo que es difícil establecer fronteras fijas.

Bacterias, programas con vida

El término "virus informático" fue acuñado por Fred Cohen a comienzos de los 80. En mi opinión, no es el nombre más adecuado para este tipo de programas. Un virus biológico destruye las células por las que pasa, monopolizando todo su trabajo vital para su provecho, hasta que termina por matar al organismo. Un virus de computadora puede "convivir" durante años con un sistema de producción, y los buenos virus hacen todo lo posible para no interrumpir la funcionalidad de sus programas "huéspedes".

Yo prefiero llamarlos bacterias, o programas con vida. Quizá esta denominación deje clara mi postura ante los virus de ordenador, y quizá alguno de vosotros estará tirándose de los pelos diciendo: ¿o sea que ahora me dices que los virus de ordenador no son malos? ¿estás loco? Hay un debate abierto sobre la posibilidad de crear virus benévolos y no me gustaría alargarme en este tema, pero si alguien tiene curiosidad sobre ello, ya proporcionaré bibliografía y referencias acerca de ello.

Repaso de términos relacionados con los virus

Payload

El payload es el efecto de un virus en el sistema. Los virus normalmente se hacen famosos por sus payloads más que por sus métodos de infección. Mucha gente cree que un virus es más o menos potente en función de su efecto destructivo. Esto es absolutamente falso. Un virus mal programado, con un montón de bugs en su código y un payload absurdamente destructivo podrá salir en los titulares del telediario, pero desde un punto de vista académico o técnico no es más que un aporreo de teclas por parte de algún programador frustrado.

Marca de infección

Los virus, por lo general, necesitan saber si un fichero ha sido infectado ya para no infectar una y otra vez. Aquí puede residir el punto flaco de un virus en cuanto a su supervivencia: si se define una marca de infección muy específica, esa será la llave para que un antivirus lo detecte con precisión.

Existen virus famosos que no tenían marca de infección, como el Jerusalem, que infectaba una y otra vez los ficheros y provocaba el colapso en los discos duros.

Actualmente se suelen utilizar marcas de infección muy sutiles, que puedan cumplir ficheros que no estén realmente infectados, para provocar falsos positivos en los antivirus. Si, por ejemplo, definimos como marca de infección que el tamaño del fichero sea multiplo de 144, no infectaremos a todos los ficheros del sistema, pero un antivirus no podrá detectar el virus usando esa marca de infección, porque habrá muchos ficheros sin infectar que tengan un tamaño múltiplo de 144.

Cavity

Los ficheros y las páginas o segmentos de memoria se guardan en bloques que suelen ser múltiplos de una cantidad fija de bytes (típicamente 4 KB). Cuando la información no ocupa exactamente un múltiplo de ese tamaño de bloque, se hace un rellenado a ceros o "padding" y ese espacio se marca como inútil.

Un virus podrá hacer uso de este espacio sin alterar el tamaño en disco del fichero en el que se aloja. Si cabe en ese "recoveco" cumplirá dos objetivos: pasar desapercibido y meterse dentro del fichero sin corromper ningún dato original.

Virus

Figura 2. Padding en los segmentos de memoria.

Técnicas

Overwrite (sobreescritura)

El método de sobreescritura es el más obvio y el más sencillo de realizar, pero también el más burdo. Consiste simplemente en sobreescribir el host con el código del virus.

Como habréis adivinado, el huesped queda inutilizado, por lo que ocultar la presencia del virus es casi imposible. Además el método de infección se convierte en su payload. Un "buen" virus (o mal virus, según se mire) permite que el huesped siga funcionando. Este tipo de infección sólo la utiliza gente muy vaga o con pocos conocimientos.

Un símil en shell script podría ser el siguiente:


$> cat virus > host

Virus

Figura 3. Un virus de sobreescritura.

Prepending (copia al principio)

El siguiente paso lógico es que el virus se copie justo antes que el código del huesped, para asegurarse que el código vírico se va a ejecutar y no interferir en el funcionamiento del huesped.

Este método tiene un inconveniente: es costoso en cuanto a tiempo, y además, variable. Imaginémonos que el virus quiere instalarse en un huesped que es un ejecutable de 500 K's de tamaño: para ello deberá almacenar el equivalente al tamaño del virus en un buffer, luego copiarse al principio, e ir repitiendo este proceso de desplazamiento del código huesped hasta el final. También se podría crear un fichero temporal en el que se copiaría el código del virus y luego concatenar el huesped, para, por último, mover el fichero temporal sobre el fichero que contenía al huesped... Ambas alternativas son costosas en cuanto a tiempo y Entrada/Salida, por lo que esta técnica tampoco es muy eficiente.

Siguiendo con los ejemplos en shell script, el método de copia al principio (prepending) podría entenderse de la siguiente manera:


$> cat virus > tmp
$> cat host >> tmp
$> mv tmp host

Virus

Figura 4. Proceso de copia al principio.

Postpending (copia al final)

Una vez vistas las limitaciones del método anterior, vamos a ver cómo se las ingenian los virus para que el efecto sea el mismo pero reduciendo el tiempo y la Entrada/Salida. La idea es relativamente sencilla: el virus se copia al del huesped y se pones un salto desde el principio del huesped, hasta el principio del código vírico, y cuando termine el virus, otro salto hasta el comienzo del huesped... ¿me seguís? Veamos:

- Situacion inicial:

        
Virus, Huesped (separados)

- Situacion final:

        
[saltar a Virus]Huesped[Fin]Virus[saltar a Huesped]

La ejecución sería:

  1. Saltamos a Virus
  2. Virus
  3. Saltamos a Huesped
  4. Huesped
  5. Final

Virus

Figura 5. Proceso de copia al final.

Companion

Un companion virus, como su propio nombre indica, lo que hace es acompañar al fichero "huesped", sin modificarlo. Lo que se suele hacer es mover el fichero original a otro (generalmente oculto) y escribir el código vírico en un fichero con el nombre del original.

Este tipo de infección tiene el inconveniente de que si alguien intenta mover o copiar el fichero original, todo el efecto se perderá, ya que se rompera la "compañía" y el código vírico difícilmente encontrará al "huesped" original.

Multipartite (multiplataforma)

Los virus multiplataforma tienen como peculiaridad la posibilidad de infectar diferentes plataformas. Los casos más espectaculares de este tipo de virus pueden infectar diferentes microprocesadores, haciendo verdaderas virguerías en ensamblador. Normalmente suele hablarse de un virus multipartite cuando infecta ficheros y el sector de arranque, por ejemplo.

Técnicas anti-bait

Muchos antivirus crean ficheros "cebo" ("bait" o "goat files") para ver si hay un virus en el sistema y comprobar cómo ha cambiado ese fichero. Las técnicas anti-bait pretenden detectar esos ficheros y no infectarlos, saltarse la trampa.

Resindencia (+ per-process)

Para poder extenderse por el sistema, un virus puede infectar fichero a fichero o directorio a directorio, pero este método es bastante lento. Una alternativa a este método de diseminación es permanecer residente e infectar los ficheros a los que se vaya accediendo.

Esto en MSDOS o las primeras versiones de Mac era algo muy fácil de hacer (TSRs), pero conforme los sistemas se han ido complicando, las protecciones han sido cada vez más serias y ahora es bastante difícil conseguir una residencia en RING-0 (el nivel más alto de privilegios dentro del procesador) y lo que se utiliza bastante es la residencia en RING-3 (nivel de usuario) "per-process". Esta técnica la inventó Jacky Qwerty, ex-29a, y consiste en parchear una determinada API (por ejemplo CreateProcess) y asi suplantar todas las llamadas a esa API por parte de los procesos hijos que se crean a partir del ejecutable infectado. Este metodo de infeccion es bastante ingenioso, ya que con pocos privilegios se pueden infectar muchos ficheros.

Virus

Figura 6. Residencia "per-process".

Encriptación (cifrado)

Los primeros antivirus fueron analizadores de cadenas de bytes, los virus tenían siempre el mismo código, y aislando la parte caracterísitca del código del virus, podía detectarse fácilmante con una comprobación (por ejemplo: "Si el fichero contiene 'I Love You, by megah4x0r' entonces ILoveYouDetectado;"). Para tratar de ocultar el código vírico los escritores de virus dividieron el código en dos: una pequeña rutina de desencriptado, y el resto del código vírico encriptado con ese mismo algoritmo.

Virus

Figura 7. Virus encriptado.

Poly (polimorfismo)

La anterior técnica oculta el contenido real del virus en cuanto a código, pero sigue generando virus idénticos generación tras generación. Si se convina con el polimorfismo, el virus puede convertirse en una auténtica pesadilla para las casas de antivirus. La idea es que la rutina de encriptado y desencriptado será diferente cada vez, y la clave para encriptar el código vírico será variable. Así, con muchas rutinas de encriptado e infinitas claves posibles, el código del virus va mutando asombrosamente en cada infección, y detectarlo es mucho más difícil.

Para detectar este tipo de virus, en lugar del análisis de cadenas de bytes, se suelen emplear simuladores, que tratan de simular la ejecución del virus para ver si, una vez desencriptado, se trata realmente de un virus.

EPO (Entry Point Obscuring)

Cuando un virus infecta un ejecutable, es bastante normal que cambie el Entry Point o puntero a la dirección de memoria que contiene el comienzo del código ejecutable. Antes, al explicar la infección postpending o de copia al final, ocurría esto: el virus cambia el puntero que apunta al comienzo del código por un puntero que apunta al comienzo de SU código, para asegurarse que será lo primero que se ejecute.

Este método es sencillo, pero muy fácilmente detectable por un antivirus. GriYo, de 29a, ideó una técnica para hacer esto menos transparente que consiste en ocultar el salto al código vírico dentro del código del fichero infectado. Es decir, el virus deja que el fichero infectado se ejecute normalmente durante unas instrucciones para que el antivirus no lo detecte, y poco después, lanza su código.

Virus

Figura 8. Entry Point Obscuring.

En Linux no hay virus... ¡Falso! Objetivos y técnicas:

Scripts: sh, Perl

Los lenguajes interpretados han sido una constante en todo sistema UNIX. Actualmente los más utilizados son los scripts de shell y Perl. Programar un virus en estos lenguajes es un juego de niños, aquí tenemos un ejemplo de un virus de shell sencillo:

#!/bin/sh
for FICHERO in *
do
tail -4 $0 >> $FICHERO
done

¿Qué hace? Va copiando sus 4 últimas líneas (tail -4 $0) al final de cada fichero en este directorio (">>" es append, o añadir al final). Como podemos ver, es un virus bastante tonto, infecta tanto ejecutables como ficheros de datos, y puede dejarlos inutilizados, pero con unas pocas decenas de líneas más, podría hacerse algo más presentable.

La sencillez de estos virus es su ventaja para sus programadores, pero también su debilidad: son tremendamente fáciles de detectar a simple vista, engordan el tamaño del fichero infectado considerablemente y realentizan su ejecución más allá de lo inperceptible por un usuario normal.

Binarios

a.out

Es un formato realmente simple, casi tanto como los COM de DOS. Actualmente este tipo de ejecutables está en desuso, pero todavía quedan sistemas con a.out's (a pesar de que el compilador genere un fichero llamado "a.out", eso no implica que tenga este formato, casi con seguridad se tratará de un ELF).

Estructura de un ejecutable a.out:

Virus

Figura 9. Formato de un a.out.

Infeccion de ejecutables a.out:

Se puede optar por aumentar el tamaño de la sección de código (.text) y desplazar el resto del archivo, o tratar de encontrar una cavidad (cavity) para instalar el virus allí. El virus, además, deberá modificar la cabecera para reflejar los cambios (diferente tamaño de secciones, diferente entry point...).

ELF

El formato ELF es el más utilizado hoy en día en los ejecutables para UNIX. Es un formato muy flexible y bastante bien diseñado.

Estructura de un ELF:

Virus

Figura 10. Formato de un ELF.

Infeccion de ejecutables ELF:

Las investigaciones más serias en este campo vienen de la mano de Silvio Cesare. Ha publicado ya numerosos artículos acerca de este tema, y todos sus virus han sido programados en C, para poder ser compilados en cualquier sistema UNIX. El método que utiliza es el siguiente:

  • Incrementar un campo en la cabecera del ELF (p_shoff) que indica el desplazamiento u offset donde se encuentra la tabla de cabecera de secciones (Section header table).
  • Hallar la cabecera de programa del segmento de codigo y:
    • Incrementar la variable que indica el tamaño que ocupa el código físicamente (p_filesz).
    • Incrementar la variable que indica el tamaño que ocupa el código cuando se carga en memoria (p_memsz).
  • Para cada cabecera de programa cuyo segmento esta despues del de codigo (que es donde hemos introducido el virus):
    • Incrementar el offset del segmento en el fichero (p_offset).
  • Para cada cabecera de seccion cuya seccion este despues de nuestra insercion:
    • Incrementar sh_offset, para tener en cuenta el nuevo codigo
  • Insertar el virus en si en el fichero

Esto puede parecer un lío para más de uno, en simples palabras lo que se trata es de hacer el tamaño del segmento de código más grande para hacer espacio para el virus. Luego hay que actualizar todos los valores para que el código nuevo se cargue, y cambiar el entry point para que apunte al virus.

Virus

Figura 11. Infección de un ELF por el método de Silvio Cesare.

Este método de infección funciona perfectamente, pero no es el único. Wintermute presento en el hackmeeting de 2000 un nuevo virus para Linux, el Lotek, que realizaba una infección aprovechando una cavidad (cavity) en la sección ".note".

Recientemente el ex-VXer Bumblebee ha publicado un virus para Linux con residencia per-process en RING-3 y unas cuantas técnicas aprendidas en entornos win32. Muchas de las estructuras de win32 tienen su paralelismo en Linux, por lo que gran cantidad de técnicas pueden portarse fácilmente a los virus de Linux.

Ficheros de fuentes

Hay algunos intentos de infectar ficheros fuente en lugar de binarios. Se puede realizar un enfoque desde el punto de vista de ensamblador "inline" o embebido dentro del código, o bien un ejecutable que genere fuente como salida.

Packages: .deb, .rpm, .mdk

Un punto todavía poco explotado es el de los paquetes de software de las diferentes distribuciones de Linux. Mucha gente utiliza paquetes para instalar programas de manera sencilla y ordenada, y en ocasiones esos paquetes son descargados por un usuario sin privilegios desde un navegador, para ser instalados posteriormente por "root". En ese intervalo de tiempo en el que permanecen en el directorio del usuario sin privilegios podrían ser infectados y luego, al ser instalados por "root", acceder a todo el sistema.

Un paquete generalmente tiene comprobaciones mediante MD5, pero pueden recalcularse, por lo que este puede ser un punto flaco importante en nuestras distribuciones Linux.

Virus

Figura 12. Infección de un paquete .deb tras ser descargado por un usuario desde su navegador.

Ya, pero Linux es seguro, ¿no?

Linux es seguro

Sí, Linux es bastante seguro. De hecho un virus deberá utilizar algun despiste de configuración en el sistema para poder colarse hasta tener acceso a todas sus partes.

Está claro que actualmente usar Linux es el mejor antivirus que existe. No he visto a nadie que haya sufrido un virus en Linux y eso que conozco a mucha gente que usa Linux masivamente. Es posible que con el tiempo esta situación vaya cambiando y Linux sea otro escenario donde se libren las batallas entre programadores de virus y de antivirus. Por el momento, salvo experimentos de laboratorio, estamos a salvo.

¿Cómo podemos hacer una escalada de privilegios?

Exploits

Un exploit es un programa que aprovecha un fallo en el sistema para conseguir algo no permitido de él. Si un virus incluye ese código dentro del suyo, podría conseguir acceder a zonas no permitidas y hacerse con el control del sistema.

Este enfoque ha sido utilizado en varios virus para Linux, como el staog por Quantum/VLAD, pero implica la extinción del virus en cuanto el fallo que explota el exploit sea subsanado. Algunos virus intentan aprovecharse del exploit, y si no tiene éxito, eliminan el código del exploit del resto de infecciones.

Este enfoque es más propio de entornos menos dinámicos en cuanto a correcciones de fallos en programas, como Windows (poca gente actualiza periódicamente su navegador o su editor de textos). En entornos de desarrollo open source los fallos suelen ser detectados y subsanados más dinámicamente.

LKMs (Loadable Kernel Modules)

Hemos dicho en la introducción que el núcleo de Linux es monolítico, pero tiene un sistema de carga y descarga de módulos que permiten un uso más eficiente de los controladores de dispositivos (drivers).

Un módulo del kernel (o LKM) se ejecuta en RING-0, dentro del espacio reservado para el kernel, es decir, tiene un poder total sobre la máquina. Es posible programar LKMs que tengan mas poder o que engañen a "root", por lo que si un virus lograse cargar un módulo dentro del módulo, podría ser una pesadilla para el administrador de la máquina, y el único límite de acción serían las limitaciones físicas de los dispositivos.

Con un LKM se puede hacer de todo: ocultar procesos, modificar tamaños de archivos, etc. por lo que puede que los futuros virus de Linux incluyan LKMs para sus propósitos.

Windows/Linux

Muchos de los ordenadores personales que utilizan los usuarios de Linux, aunque a veces cueste reconocerlo, tienen una partición con Windows. Existen varias herramientas para acceder a particiones Linux desde Windows, explore2fs quizá sea la más conocida.

Si un virus atacase un sistema Windows, consiguiese los privilegios suficientes como para acceder al disco duro y buscar un fichero clave dentro de la partición Linux, como pueda ser "init" (el proceso inicial del que se crean todos los demás procesos) o la shell que use "root", todas las protecciones de Linux como tal habrían sido inútiles. Aunque suene un poco fuerte: la inseguridad inherente de Windows actuaría como "Caballo de Troya" contra el sistema Linux.

Existe otra herramienta bastante utilizada, VMWare, que permite tener varias máquinas virtuales corriendo Sistemas Operativos diferentes. Es también muy común tener Windows y Linux funcionando al mismo tiempo con VMWare. En lugar de tener que esperar a que el sistema rearranque con Linux como en el caso anterior, la infección podría hacerse directamente, ya que VMWare es fácilmente detectable (utiliza un RING que no es ni 0 ni 3).

fork() y crack

Un virus desde una cuenta de usuario podría armarse de paciencia y crear un proceso con muy baja prioridad (para no interferir en el rendimiento normal del sistema) que intentase crackear las contraseñas por fuerza bruta.

Imaginemos un sistema automatizado, en el que el administrador entra sólo cada semana a retocar 4 cosas, pero no hay una supervisión real. Un virus podría colarse desde una cuenta sin privilegios, y estar un par de semanas intentando crackear las contraseñas. Una vez conseguido esto, sólo queda dar el salto a "root" y de ahí a donde quiera (kernel, otros ordenadores...).

Entonces... ¿por qué no hay (casi) virus para Linux?

Perfil del usuario medio

Actualmente el usuario medio de Linux tiene poco que ver con el usuario medio de Windows o Macintosh. Quizá mucha gente cayó con lo de "Enanito si, pero que pedazo de coj...", pero esto tendría poco éxito en un entorno de usuarios de Linux.

La gente acostumbra a conocer el origen de sus programas, y examina su código fuente. No quiero decir que todos los usuarios de Linux lo hagan, pero hay un grupo importante de gente que lo hace y lo comenta al resto.

Las llamadas "técnicas de ingeniería social", es decir, hacer uso de la candidez del usuario que recibe un virus o gusano, tienen muchas más dificultades con usuarios de Linux.

Filosofía del software

Como acabo de comentar, que Linux sea de código abierto y haya una mentalidad clara en cuanto a ese tema, dificulta ocultar código en los programas.

Ken Thompson dijo que ningún software creado por otro podía ser confiable, especialmente si había creado por él. Tal y como explicó en una conferencia en mitad de la década de los 80, Thompson había introducido un sistema de autoreplicación y "troyanización" en todo compilador C para UNIX que le permitió hasta entonces poder entrar como "root" en todo sistema hasta la fecha. Si alguien quiere saber cómo se las ingenió el bueno de Thompson, lo explicaré por email gustosamente, o bien esperáis al turno de preguntas O:-)

Pocos VXers linuxeros

Todavía hay pocos escritores de virus que usan Linux habitualmente. Algunos han instalado Linux en una partición para hacer sus pruebas y conocen bastantes cosas de él, pero no tienen en absoluto la soltura que han conseguido durante años de uso de DOS y Windows.

Supongo que esto cambiará con el tiempo, y pronto los VXers usarán Linux a diario. Cuando esto ocurra, yo creo que habrá una nueva hornada de virus para Linux programados desde la experiencia, no como un experimento de laboratorio.

¿Y qué puede pasar en el futuro?

  • + Usuarios novatos
  • + Empresas usan Linux -> - Open Source
  • + Configuraciones "click&play" -> - Robustez del sistema
  • + VXers linuxeros

Conclusión

Solución: una buena "salud" informática

Es decir:

  • actualizar las versiones de nuestros programas para evitar bugs.
  • conseguir los programas de fuentes fidedignas.
  • utilizar siempre que sea posible la versión en código fuente de los programas.
  • no ejecutar todo lo que nos llegue por Internet
  • ...

Todo ese tipo de cosas que, como espero que haya quedado claro ;-), utilizan los virus para colarse en nuestros sistemas

Para saber más...


Este documento ha sido escrito por un miembro de e-GHOST, y su contenido es libre de ser reproducido en otros medios bajo las condiciones de la Licencia FDL (GNU Free Documentation License).


Fuente: http://www.e-ghost.deusto.es/docs/articulo.virus.html

Core Security's "Pen Testing Ninjitsu" webcast series

0 comentarios
---------------------------------------------------------------------------------------
Pen Testing Ninjitsu Part I – “Windows Command Line Hero”
---------------------------------------------------------------------------------------
A brief introduction to the value of penetration testing + an overview of pen testing techniques using the Windows command shell.
* Presentation
* Slide deck

---------------------------------------------------------------------------------------
Pen Testing Ninjitsu Part II – “Crouching Netcat, Hidden Vulnerabilities”
---------------------------------------------------------------------------------------
An introduction to techniques for performing the functions of Netcat - such as moving files, scanning ports and creating backdoors - without using Netcat.
* Presentation
* Slide deck


---------------------------------------------------------------------------------------
Pen Testing Ninjitsu Part III – “After the Initial Compromise”
---------------------------------------------------------------------------------------
This installment explores what can happen after the initial vulnerability is compromised and a threat becomes truly invasive – and how to proactively assess your systems against such attacks. This installment will explore what can happen after the initial vulnerability is compromised and a threat becomes truly invasive – and how to proactively assess your systems against such attacks.
* Presentation
* Slide deck

Core Security Technologies

Repetimos: Acceso local significa acceso total

0 comentarios

No sé cuántas veces más habremos de repetir esta igualdad para que quede bien grabada en nuestras mentes.

De ese modo nadie se sorprendería por la existencia y disponibilidad de artilugios como el CSI Stick o el Lil' Buttie LB110.

El primero (CSI Stick) se conecta a un teléfono móvil y obtiene una copia de todos sus datos (agenda, llamadas, fotos, mensajes, etc...). El segundo (Lil' Buttie LB110) se conecta con unas pinzas de cocodrilo a los cables expuestos de cualquier línea telefónica convencional y permite escuchar y grabar las conversaciones e incluso hacer llamadas.

El primero se supone destinado a los cuerpos de seguridad. El segundo a los técnicos de mantenimiento telefónico. Sin embargo ambos pueden adquirirse libremente.

Por tanto, lo repetiremos una vez más: Acceso local significa acceso total. Y eso con independencia de que se trate de un PC (con cualquier sistema operativo), una PDA, un teléfono móvil o fijo, o cualquier otros dispositivo que pueda contener o intercambiar información. La única vacuna conocida es el cifrado... y eso siempre que sea completo y haya sido bien implementado.

Fuente:http://www.kriptopolis.org/acceso-local-es-acceso-total

Recuperar partición NTFS dañada

0 comentarios

Creando una copia de seguridad casi me quedo sin una partición NTFS. El problema ha sido provocado por el usuario (por mí), como casi siempre. He enchufado el disco duro externo (USB) al PC para copiar una carpeta a la partición NTFS de dicho disco externo. Lo he dejado unos minutos y cuando he vuelto, he visto que le quedaban unas 2 horas y pico para terminar…. dado que he enchufado el disco a una entrada USB no USB2. Despistado, he parado la transferencia, y cambiado el cable USB. El lector habrá observado que se me ha olvidado el “detalle” de desmontar el disco antes. La consecuencia de este desastre la tenéis en el pantallazo:


$MFTMirr does not match $MFT...

Linux me recomienda arrancar en Windows, pasar un chkdsk /f y reiniciar dos veces. Lo he intentado hacer pero Windows no reconoce la partición :-O . Mirando y rezando a San Google, he encontrado lo siguiente:


sudo -i
ntfsfix /dev/sdb3
ntfs-3g /dev/sdb3 /mnt/ntfs -o force

Varias cosas:
sudo -i : no conocía esta opción de sudo. Es similar a convertirse en root (su -) pero a través de sudo, para abrir una sesión interactiva como root.

ntfsfix: magia. Ha solucionado el error (si no lo tienes instalado, deberás de instalar el paquete ntfsprogs)

ntfs-3g (-o force) : forzar el montaje del disco, incluso si el fichero de log de NTFS no es correcto.


Fuente: http://diariolinux.com/2008/08/31/recuperar-particion-ntfs-danada/

Asesorias

0 comentarios
Hola Gente , porfavor por msn me demoro un poquito dando asesorias y tambien por comentarios , a las personas que les quede facil utilizar programas nos quedaria mucho mejor.

Dare asesorias por medio de estos 2 programas:

1. hamachi : por el hamachi entran al room bad_robot y la contraseña es igual bad_robot
2. Soulseek: la igual que el hamachi el room de llama bad_robot le dan en crear room y le dan ese nombre

Saludos
Powered by Bad Robot
Helped by Blackubay