lunes, 29 de septiembre de 2008

Virus++: Segunda convocatoria

Alien [blackhat4all@gmail.com]

Hace unos meses me di a la tarea de escribir un semi artículo sobre un tipo de virus que, en caso de que se creara, podía traerle a muchos unos cuantos dolores de cabeza.

En aquel momento, temiendo un poco ser malinterpretado por algunos cerebros ávidos de información y bailando otro poco en la línea que define lo correcto de lo menos correcto, traté de no ser tan explícito y medio que busqué sinónimo más lindos para referirme a las cosas feas. Ahora, luego de un período de poca escritura y de desafiar a la máquina a ver si ella es capaz de continuar reconociéndome el HDD mientras termino este texto, me doy a la tarea de explicar un poco más detallado el artículo Virus++.

Intro

Independientemente de lo que haga el virus, todos deben pasar por una especie de ciclo:
1. Inserción en el sistema
2. Acción a ejecutar
3. Propagación

Aquí defino “Inserción en el sistema” como el momento en que el “pequeño” se adapta al medio de vida y se aloja en ciertos lugares desde los que garantizará su ejecución una ves iniciado el sistema. “Acción a ejecutar” será lo que haya definido el programador como objetivos a cumplir una ves ya dentro de la PC y “Propagación” no será más que…

Según las tendencias (al menos en nuestro país) el paso 1 se ejecuta siempre de la misma manera; vienen en una memoria y se van al registro. Un Viruker un poco más pícaro, tratará de buscar nuevas formas de introducir sus aplicaciones en sus víctimas, para esto deberá estar al tanto de los llamados Cero Days (nuevas vulnerabilidades), así como tener un vasto dominio del funcionamiento del sistema así como de los archivos que se ejecutan en el inicio de sesión. Virus con nuevas formas de infección quizá no aseguren una invisibilidad completa ente los antivirus, pero si un desarrollo de esta técnica así como un aumento en la dificultad de ser vistos y reconocidos por usuarios un tanto más aventajados en estos temas.

Las acciones a ejecutar no las discuto, cada quien crea los virus por razones diferentes y por lo tanto con diferentes objetivos, pero se debe prestar especial atención al cuidado y aseguramiento de la aplicación. (sin comentarios)

La Propagación estará muy ligada a la Inserción en el sistema y es quizás lo más importante. Más allá de si funciona o no en una máquina determinada, el virus debe ser capaz de reproducirse y abarcar el mayor área posible facilitando con esto una mayor posibilidad de cumplir su objetivo.

Ready??

En el artículo Virus++ me refería a algo que hasta ahora no he visto en ningún virus y es su capacidad para actualizarse.

Hasta el momento eso es algo que se ha dejado solo en manos de los antivirus y otros software pero…, ¿que impide que un virus se pueda actualizar?.

Básicamente ningún virus de estos tiempos utiliza un disquete como medio de propagación y es que, por el reducido tamaño y la inserción de nuevos medios de almacenamiento, los disquetes han sido reemplazados por memorias flash, discos duros externos y quien sabe cuantos otros dispositivos que superan por mucho los escasos 1.38 Mb.

Muchos de los virus se hacen acompañar en algunos casos de dos, tres y hasta cuatro archivos; DLLs, EXEs, COMs y otros ficheros que en determinado momentos son necesarios para la buena ejecución del animalito, entonces, ¿por qué no incluir en compilador?. Un virus creado en Delphi (por ejemplo) y que lleva consigo el compilador, sería capas de, leyendo desde cierto lugar un código en Delphi, crear una versión mejorada de si mismo u otros módulos que necesite para algo. De esta forma el Viruker podría lanzar un ataque dirigido a una máquina en especial de las miles que a infectado.

Ejemplo

Un virus común, cubano, de hoy en día, no se interesa por hacer trizas nuestra RAM, o por modificar el MBR del disco duro (a menos que lo haya hecho el vecino al que le instalamos Windows Milenium la semana pasada). Por lo general los virus se alojan en nuestra máquina para extraernos información y dejarnos 50.(xD)

Imaginemos ahora que hemos creado un virus que, acompañado de su compilador, lo primero que nos enviará será el nombre de usuario y a partir de ahí estará leyendo constantemente todos los archivos de correo que recibe dicho usuario. Un día x, pepito@dominio.cu recibe un correo con un archivo adjunto que tiene este contenido:

<html>
<head>
</head>
<body>
Hola
  <!--
    inicio
    Código
    fin
  -->
</body>
</html>

A simple vista eso es un html que al abrirlo lo único que mostrará será un “Hola”, pero para nuestro programa, que lee línea a línea, la palabra inicio significa que deberá copiar todo lo que dice más abajo hasta que llegue a la palabra fin, y todo eso se lo dará al compilador, el cual ya habrá creado un nuevo ejecutable que inmediatamente será ejecutado y…

He aquí, de manera simple, un programa capaz de crear programas, los cuales cumplirán una función determinada que puede ser la de proteger al compilador, proteger al programa principal, actualizar con nuevas funcionalidades al programa principal o simplemente ejecutar cualquier otra tarea de manera independiente.

Como inconveniente pudiera ser que algunos lenguajes de programación no utilizan un compilador solamente, sino que requieren además de muchos otros archivos y DLLs que pueden levantar sospechas; para eso también existe ya una solución, pero eso lo dejaremos para la Tercera Convocatoria (El Mundial!!, jajjajja)

Lugares de Carga

Un alto porciento de los virus utiliza el registro como zona de carga y si no es menos cierto que es un lugar bastante tentador, también debemos reconocer que es un lugar un poco “quemado” por muchos.

Es aquí don de entra a jugar un papel súper importante el conocimiento de los bugs del sistema así como estar al tanto de los Cero Days. Bien difícil es encontrarle vulnerabilidades a un sistema, pero ya hemos demostrado también aquí en BlackHat que no es imposible.

Muchos, pero muchos lugares de la máquina se pueden utilizar como zonas de lanzamiento, incluso se puede hacer uso de algunos conflictos que tiene Windows con los nombres de archivo para ejecutar determinadas aplicaciones de forma silenciosa y sin tocar para nada el Regedit, pero eso, va también para el Mundial.

Conclusiones

No quisiera que vieran esto como una guía de “Haz un buen virus en 21 días” o algo por el estilo, puesto que no lo es; me gustaría que lo vieran más como un “Déjame irme preparan do que la cosa está en candela”. La “industria” de los virus es cada vez algo más tentador y quizás hasta lucrativo; cada segundo, son más los que aprender a hacer virus, los que han pasado meses testeando ciertos archivos en busca de recursos adicionales y por desgracia esos no tienen la posibilidad de aplicar esos conocimientos para bien así que, “¡Que rayos, vamos a fastidiar a pepito!. Total, el tiene dinerito y mañana se compra otra PC”.

Continuar leyendo

Tras los laberintos y el código oculto en busca de la verdad. El paradigma de la velocidad. (II)

Mr. I/O [blackhat4all@gmail.com]
A la pelusita

Bill Gates tuvo grandes ideas – sin dudas es un visionario – un ordenador en cada buró de cada oficina, en cada mesa escolar y en cada casa. Eso fue genial.

Fueron buenas proyecciones pensando – no solo en él – en los demás, pero para ello debían constituir recursos sencillos – o en apariencia serlos – sin muchas complejidades técnicas – o ocultándonoslas –, lo hizo de buena fe quizás – así lo creo, pues era un gran h@cker – pues amaba la informática como la amamos tú y yo.

Luego tal vez amo más al dinero – ahí fue donde la cagó – y descubrió – o inventó – la forma de esclavizarnos sin que lo supiéramos, y con las facilidades y supuestas formas de eludir las dificultades en entornos más amigables encandiló a quienes decidieron por ti y por mi – no votamos en esa reunión – para proclamarlo el sistema operativo ideal para estas tierras.

El error ahora es caro de enmendar, la gente se resiste al cambio, las comodidades diluyen el cerebro en sopores dulces, no hay de que preocuparse todo funciona bien – o así debemos creerlo – esto es sencillamente lo mejor porque es lo que más se vende – los mejores productos a veces son desconocidos – y su precio es caro como demostración de que es lo mejor - nada barato puede ser bueno en la mente de los tontos – eso lo que nos vendió.

“Los que vendimos fuimos nosotros[1]”, dijo alguien y creo que tiene razón, “cree que somos estúpidos” – eso también lo creen quienes nos ven hacer y usar otras cosas, porque sino para que pasar trabajo frente a consolas cuando ya todo está hecho en dibujitos.

Seres inferiores incapaces de decidir – por ejemplo – como instalar nuestro SO, por ello se roba el papel de Dios cibernético y nos predefine una manera de instalar – aun más caníbal es la amenaza de los Windows ue – sin saber que aun nosotros podemos elegir en dos opciones: estar con Windows o no estar.

Aunque esto quizás no sea totalmente cierto – si se quiere –

La contraofensiva

Una PC es como un caballo – una herramienta de trabajo – puede ser salvaje, loca, malcriada, hacer lo que le de la gana, incluso utilizarnos a nosotros en función de otros amos que gobiernan el mercado.

O podemos estudiarla, moldearla y asumir el control. Obligarla a ser nuestra esclava, nuestra más fiel vasalla. Destruir los vínculos que la ligan a que las cosas sean así porque así se deben hacer – ¿Leyes de quién? ¿Escritas dónde? – y tú, no tienes que preocuparte por nada – ni por los huecos de seguridad, puertas traseras para el NSA[2], errores que producen colgaduras, si total, reinicias y todo vuelve a la normalidad.

Mi propuesta es otra más sencilla, yo propongo luchar, que demos pasos por tomar el control y aprendamos a usar lo que nos han obligado, con firmeza y responsabilidad, es por ello que propongo estudiemos la táctica.

Dividamos por áreas a las zonas de combate y abramos 4 frentes que nos serán necesarios:

• el del área de Boot
• el del área de los Drivers
• el del área de OEM
• el del área de Harware

Aquí discutiremos entonces aspectos dentro de las mismas y propondremos un plan de acciones para liberar las mentes.

Acciones a tomar en la BIOS

La BIOS se controla fundamentalmente desde el setup, hacia ese lugar debemos encaminar nuestro empeño. Recuerden que cada generación de máquinas – y para cada fabricante – es un universo aparte, no existen protocolos, no es un ABC, por tanto tampoco hay recetas, pero sin miedos, ese lugar tampoco es el Fin del mundo.

Es solo un poco de menús – en idioma inglés – que permiten escoger opciones. Que a su vez escriben en el – llamémosle así para poder explicarlo a quienes inician – sistema operativo propio de la máquina.

Este es una estructura sencilla de acceder que levanta cuando oprimimos, la tecla del, f2, f12 en dependencia de quien lo hizo, y la tecla que le dio la gana de escoger, por si hay dudas leer en la pantalla, allí aparecerá cual es.

Su aspecto recuerda a algunos viejos programas de estructura windeable sobre pantallas texto – de nada vale allí el ratón – o quizás son eso mismo, la demostración de que las consolas de comando son importantes, aunque algunos piensen que no, aunque otros no sepan que es eso.

Esa será el arma. Lo demás será sencillo[3]:

• Activaremos[4] el soporte para la bandera de boot simple, con esta acción reduciremos todas las demoras posibles del Post si el último boot se conoce que fue bueno.
• Asignaremos el primer lugar en el orden de boot al disco que incluye la partición C:\. Con eso evitaremos las siguientes demoras
o Eliminaremos que trate de arrancar desde disquete de 3½”, esta acción solo nos será útil en una reinstalación, y si solo si levantamos los sistemas desde ms-dos – que aun no ha muerto.
o Eliminaremos que intente arrancar desde un CD[5], pues esto solo es necesario si vamos a reinstalar el XP.
• No activaremos – o desactivaremos – el bloqueo de discos – drive lock – ya que esto solo es usado por razones de seguridad en ambientes clasificados.
• Eliminar el logo de la Bios.
• Eliminar la búsqueda de otras unidades no existentes – o no conectadas – en la máquina en cualquiera de los canales secundarios o primarios.

Aun podemos tomar otro grupo de acciones en la BIOS, a las que llamaremos Acciones para agilizar el despertar. • De ser posible – actualizar el microcode del procesador[6]
• Inicializar solo los dispositivos necesarios
• No enumerar los puertos usb para que no pierda tiempo en contarlos.
• No tocar los dispositivos PS/2 solo habilitar los puertos
• Tratar de reducir el tiempo de BIOS WAKE[7] a 500ms o menos.
• Optimizar la int 13 que permite – a su vez – mejorar la entrada/salida en discos.

Elementos – las acciones se reservan – a tener en cuenta respecto a la aplicación de los drivers

• Los drivers de los dispositivos realizan – y esto es lo correcto – lo que es necesario para inicializar un dispositivo durante el proceso de arranque. Otros solo son necesarios después. El colofón es solo cargar los que son absolutamente necesarios antes del boot, luego cargar los otros.
• Los drivers usan alta prioridad de trabajo threads[8] y una cola de elementos funcionando no se volvería crítica, en la vía de un difícil camino – embotellado – hacia el despertar – porque estos tendrían que hacer solo pequeñas tareas. De otra manera, ellos – podríamos decir – que casi morirían de inanición – al no llegar a ser energizados de manera rápida – debido a ser tratadas como – vulgarmente hablando – ensartas de elementos no relacionadas, lo que ocasionaría un despertar relentizado.
• Los drivers completarán sus SO IRPs inmediatamente, y solicitarán DO IRPs, esto ayudará a que el SO a despertar completamente mientras los drivers echan a funcionar las especificaciones de reinicialización para cada dispositivo en el background.
• Los drivers nunca serán retenidos en su carga excepto por pequeños momentos, especialmente en el reinicio, debido a que esto aniquilaría los esfuerzos realizados para una inicialización en paralelo.
• (de momento estará en blanco)
• (de momento estará en blanco)[9]

Acciones para OEM con vistas a mejorar el boot

• Tener muchos programas cargando en el boot hará que este proceso sea mucho más lento.
• Debemos alejarnos de las tareas programadas – como por ejemplo autoejecución de actualizaciones, defragmentado de discos – lo más que se pueda, cada quien debe decidir cuando es correcto que estas ocurran, pues puede suceder que echen a andar en este momento crítico y ya se pueden imaginar las consecuencias.
• No utilizar filtros de keyboards – usen los shortcus definidos por el sistema.
• Si es necesario cargar alguna otra aplicación – o función – al inicio, se puede considerar dejarlo para después, y cargar las aplicaciones cuando el sistema ya haya arrancado. Solo cargar lo más crítico. Ejemplo el antivirus.
• Fat es más eficiente que el sistema NTFS solo si tu disco duro es igual o menor que 8 GB, ya que cuando este carga lee toda la FAT en memoria. Mientras que el NTFS lee solo la requerida metadata, que es mucho menor que la FAT en Discos de 10 GB en lo adelante.
• Optimiza el uso de Wallpapers, punteros animados, sombras y demás pacotillas siempre que sea posible. Ellas solo consumen y es un sacrificio caro a pagar en maquinitas viejas.

Limitaciones de hardware

• Según Microsoft “memorias de 128 MB como mínimo”
• “Un disco rápido significa un rápido boot”

A manera de conclusiones

Hemos concluido con las posibles acciones a realizar en las distintas áreas, cada quien – acorde a su capacidad y estudio – podrá realizar más o menos tareas. No se desanimen si no lograron muchas, recuerden que solo hablamos de milisegundos.

Si ya hemos llegado hasta aquí es porque reunimos los conocimientos fundamentales y estamos listos para comenzar a trabajar en una instalación personalizada de Windows XP de manera consciente – lo cual no quiere decir que quien haya decidido no leerse todo esto no pueda realizarla, tan solo que los que hayan seguido todo hasta el momento tendrán también el bagaje teórico – por supuesto hay huecos en la exposición de los temas, pero algo debe quedar para el estudio independiente, de la misma manera los habrá en la parte final de la trilogía de artículos – así como una tarea final solo apta para mentes ágiles. Con autoevaluación y la satisfacción de haber llegado hasta donde hayan podido.

Ya estamos listos para tomar el control de la instalación, para lograrlo solo nos resta buscar las armas, aquí dejo una lista, no se asombren si lo que mando a buscar son para algunos tarecos viejos ya pasados de moda. La magia consiste en que ya están probadas, y algunas versiones más modernas de los mismos no me gustaron en su forma de trabajar – trabajan en función de las doctrinas de los amos – otras ni siquiera a mis colegas más abiertos.

Arsenal básico que necesitaremos (que falta hace un ftp para poner todas estas cosas al alcance de todos)

Un disco con un sistema operativo MS-DOS (fat 16 ó 32 da lo mismo), puede ser cualquier versión, o de los remedos hechos con W’9x o Milenium (esto es opcional, solo para almas aventureras, que quieren saber como funcionan las cosas). 1. Un disco instalador de W’XP (no desatendido)
2. Los drivers de la máquina
3. Los tweakers:
a. Ainhi
b. Tweak XP Pro V 2.0.8
4. System mechanic V 4.0b
5. Regitry mechanic V5.1.0.224
6. Ccleaner
7. O&O Defrag 8.0
8. Nortón Ghost 2003
9. Una antigua herramienta sorpresa de la colección de armas de Microsoft que les voy a girar como regalo, de gran fuerza y poder y lo más lindo, con la clásica filosofía de Microsoft que entiende que no somos actos para entender, y por tanto no hay que ser un genio para usarla.
10. Winboost cualquier versión, solo para quienes desean un tanto de seguridad (técnicos de lab. docentes, o alguien que tema a la fuerza destructiva o investigadora de algunos familiares)

Se que les gustará probar – y tener el control – así que nos leemos en la próxima, donde aprenderemos que nadie puede decirnos como tenemos que hacer las cosas. Que aún en la “esclavitud” se puede escoger.

Continuar leyendo

Controla XP (I)

Thunder [yuniet02015@hab.jovenclub.cu]

Muchas veces hemos estado frente la PC y nos hemos puesto a pensar de que forma pudiéramos hacer algo en nuestro Win, algo de lo que después nos podamos jactar con aire de orgullo sano frente a nuestros amigos, novia, algo como: “Oye men, como hiciste eso?”, “estas escapa’o brother”, o algo por el estilo, ese algo que nos hace sobresalir con “la ultima”. Pues en este articulo eso mismo es lo que vamos a hacer.

Cambia el Logo de Inicio, la Pantalla de Bienvenida, la Pantalla de Apagado, el aspecto de las Ventanas de Windows, Restringe opciones en las Ventanas de las Aplicaciones, Modifica las aplicaciones que funcionan bajo XP, Cambia y Traduce las frases existentes en las ventanas, Personaliza las ventanas, los iconos, la barra de tareas, .....y mucho más.

Es decir, que puedes hacer que la Calculadora tenga este aspecto:


(... y además funciona!):

Bueno para todos aquellos que les gusta el tarequeo, el invento y las configuraciones en Win(como un amigo al que todos le decimos: “mister configureichon, todas las semanas tiene que formatear y reinstalar el win por “meter los cascos”). Bueno, nosotros vamos a tarequear, pero tomando todas las medidas para no tener que reinstalar Win cada vez que hagamos algo y no nos pase como este amigo mío. Bienvenidos a la serie de artículos llamados: “Controlando Totalmente XP”.

Precalentamiento:

Comencemos con unas nociones muy importantes antes de continuar:

-Para ver las extensiones de los archivos:
Mi PC/Herramientas/Opciones de carpeta/Ver/
Marcar: Mostrar todos los archivos y carpetas ocultos.
Desmarcar: Ocultar archivos protegidos...
Desmarcar: Ocultar las extensiones de archivos...

-¿Qué son los archivos .exe?
Son Aplicaciones, Programas, Ejecutables. Si pulsas
\Windows\System32\calc.exe, se ejecutará la Calculadora

-¿Qué son los archivos .cpl?
Son las aplicaciones del Panel de Control. Si pulsas
\Windows\System32\desk.cpl , saldrá la ventana para configurar el Escritorio (Propiedades de pantalla)

-¿Qué son los archivos .dll?
Se llaman bibliotecas de vínculo dinámico. En su interior pueden tener iconos (moricons.dll, pifmgr.dll) o programas (user32.dll, rundll32.dll) o ambos. De manera que algunas aplicaciones pueden acceder a los programas que los dll tienen en su interior.

Con el programa de Microsoft Dependency Walker podrás ver:
  a) Los dll de los que depende un programa.
  b) Los "programas" que tienen en su interior los dll.

Es decir, que si en el Depends ponemos al Windows\Explorer.exe, nos indicará que necesita para su funcionamiento los siguientes dll: (MSVCRT.DLL, ADVAPI32.DLL, KERNEL32.DLL, GDI32.DLL, USER32.DLL, NTDLL.DLL, SHEL32.DLL, OLE32.DLL, OLEAUT32.DLL, BROWSEUI.DLL, SHDOCVW.DLL, UXTHEME.DLL, WINMM.DLL, SETUP.DLL, WINSTP.DLL, OLEACC.DLL, USERENV.DLL)

Además de este, en la red existen otros soft que cumplen la misma función, googlealos.

Dentro de un .dll o de un .exe puede haber iconos, vamos a comprobarlo.
Vamos a:
Mi PC/Herramientas/Opciones de carpeta/Tipos de archivos
Opciones avanzadas/Cambiar icono/Examinar/
Poner moricons.dll, después pifmgr.dll, luego shell32.dll. Observamos que dentro de estos dll hay iconos.
Pon también un ejecutable, calc.exe.

Después de estas comprobaciones pulsa Cancelar para que no se efectúen los cambios.

En sus marcas….

Como herramienta principal para proseguir con este articulo, nos vamos a ceñir de un arma muy usada en la Ingeniería Inversa, una herramienta mas que útil para nosotros, me refiero a un “editor de recursos”, en especial vamos a trabajar con el Resource Hacker. De seguro algunos lo habrán oído mencionar, otros lo tengan y quizás algunos ya han hecho algunas cosillas con el, bueno, el caso es que no solo existe este, existen muchos editores de recursos en la Web, como el ExeScope, XN Resource Editor, por mencionar solo dos mas. Los que tengan Internet, pues pregúntele al “Oráculo” (Google), por uno de ellos y descárguenlo.

Antes de Continuar….

Es bueno que se sepa, que este articulo es solo con fines educativos, todo lo que se enseña en el es para una mejor comprensión del sistema de trabajo de Win como S.O, así como algunas particularidades y facilidades de config del mismo. Al hacer uso de esta herramienta, que como dije anteriormente, se usa en el Reversing, podemos hacer lo que queramos con “casi” cualquier aplicación, desde cambiarle el titulo de la ventana, borrar algún texto, algún nombre…..etc. Por lo que no es mi objetivo que vayas por ahí plagiando proyectos, cambiándole unas imágenes, unos nombres y poniendo el tuyo en el copyright, si estas leyendo esto porque deseas hacerlo, aun sin el consentimiento del autor de la aplicación, pues en este mismo momento puedes cerrar esta pagina y continuar escuchando a “Baby Loren y el Chacal”, mientras juegas Solitario.

Continuar leyendo

Programar en Batch (I)

Bill WHG [michel.grc1@gmail.com]

En múltiples ediciones de BlackHat se han publicado muchos temas sobre programación, ya sea Visual Basic, C++, entre otros, pero nada sobre Batch, un lenguaje muy sencillo y fácil para programar, esto se puede lograr solo con un Bloc de notas y sin necesidad compiladores.

Ahora que es Batch, o su diminutivo .Bat que no es mas que su aplicación.
Los archivo batch (o bat) no son mas que un archivos de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas.

Cualquier comando DOS puede ser utilizado en un archivo batch.

Batch es un sublenguaje de programación muy apreciado por muchísima gente, principalmente es MS-DOS, creado para hacer sistemas operativos, con dificultad de movimiento y escala, al principio, muy poca gente sabia usarlo, aunque fue una de los avances mas importantes del mundo. Con el se puede crear desde un simple programa para apagar nuestra PC, hasta un potente troyano, los cuales creados por Batch son muy nocivos en ocasiones, ya que no son detectados por antivirus, aunque suelen tener una pequeña desventaja, es que no se auto ejecutan, la victima tendrá que hacer el trabajo por ustedes.

Bien vamos la plato fuerte, como ya había dicho en programación BATCH se pueden poner todos los comandos permitidos en la consola de comandos, al ejecutar el programa los comando se ejecutarán de forma secuencial. Este es el típico programa de ¡HOLA MUNDO!:

Ejemplo:
Código:
@echo off
cls
echo ¡HOLA MUNDO!
pause>nul

Nota: El siguiente código debe ser escrito en un Bloc de notas, y guardado con extensión .bat

¿Porque se le llama .bat?
La respuesta es sencilla, en MS-DOS las extensiones tienen un máximo de 3 letras y se usan las tres primeras letras de BATCH
Efecto: Este código lo que hace es escribir en la pantalla ¡HOLA MUNDO!

Sobre los comandos

En batch usaremos todos los comandos de MS-Dos para crear nuestras aplicaciones, para el que no domine Dos leer primero sobre el tema.

La consola de comando es esa pantalla negra que seguro que todos han visto alguna vez, para ir a la consola vamos a INICIO allí entramos en EJECUTAR y escribimos cmd.exe. Nos saldrá una pantalla negra, allí se pueden escribir los comandos, por ejemplo escribir esto:

Código:
echo ¡HOLA A TODOS!!

En la pantalla saldrá escrito lo que pusimos, después del echo, ya explicare el echo mas adelante. Podemos personalizar la consola de comandos de igual manera que Dos, al final es puro MS-Dos en lo que estamos trabajando, quiero dejar claro que es lo mismo, no puede haber confusión.

Seguro que a algunos les gustaría cambiar el color de las letras de la consola de comandos o cambiar el color de fondo, bien pues para eso tenemos el comando color.

Esta es la descripción del comando al usar HELP:

Código:
Configura los colores predeterminados de primer y segundo plano de la consola.

COLOR [atr]
atr Especifica el atributo de color de la salida de consola

Los atributos de color están especificados con dos dígitos hex (el primero
corresponde al segundo plano; el segundo al primer plano). Los dígitos pueden ser cualquiera de los siguientes valores:

0 = Negro       8 = Gris
1 = Azul 9 = Azul claro
2 = Verde A = Verde claro
3 = Aguamarina B = Aguamarina claro
4 = Rojo C = Rojo claro
5 = Púrpura D = Púrpura claro
6 = Amarillo E = Amarillo claro
7 = Blanco F = Blanco brillante

Si no se indican argumentos, este comando restaura el color que tenía cuando se inicio CMD.EXE. Este valor proviene de la ventana de la consola, el modificador de línea de comando o el valor del registro DefaultColor.

El comando COLOR configura ERRORLEVEL a 1 si se realiza un intento de ejecutar el comando COLOR con el mismo color de primer y segundo plano.

Por si no ha quedado muy claro tiene que escribir color seguido de dos dígitos, el primero indica el color de fondo y el segundo indica el color de las letras. Ejemplo:

Código:
color 0a
Esto cambia las letras a vede y el fondo a negro, pero como ya es negro solo cambia las letras.
Puro MS-DOS señores.

Ahora pasaremos a conocer una lista de comandos:
El comando HELP sirve para pedir ayuda sobre un comando o para ver la lista de comandos disponibles. Para ver los comandos disponibles Escribimos HELP en la consola, nos saldrá algo como esto:

Código:
Para obtener más información acerca de un comando especifico, escriba HELP
seguido del nombre de comando
ASSOC Muestra o modifica las asociaciones de las extensiones de archivos.
AT Planifica comandos y programas para ejecutarse en un equipo.
ATTRIB Muestra o cambia los atributos del archivo.
BREAK Establece o elimina la comprobación extendida de Ctrl+C.
CALCS Muestra o modifica las listas de control de acceso (ACLs) de archivos.
CALL Llama a un programa por lotes desde otro.
CD Muestra el nombre del directorio actual o cambia a otro directorio.
CHCP Muestra o establece el número de página de códigos activa.
CHDIR Muestra el nombre del directorio actual o cambia a otro directorio.
CHKDSK Comprueba un disco y muestra un informe de su estado.
CHKNTFS Muestra o modifica la comprobación de disco al iniciar.
CLS Borra la pantalla.
CMD Inicia una nueva instancia del interprete de comandos de Windows
COLOR Establece los colores de primer plano y fondo predeterminados de la consola.
COMP Compara el contenido de dos archivos o un conjunto de archivos.
COMPACT Muestra o cambia el estado de compresión de archivos en particiones NTFS.
CONVERT Convierte volúmenes FAT a volúmenes NTFS. No puede convertir la unidad actual.
COPY Copia uno o m s archivos a otro lugar.
DATE Muestra o establece la fecha.
DEL Elimina uno o m s archivos.
DIR Muestra una lista de archivos y subdirectorios en un directorio.
DISKCOMP Compara el contenido de dos disquetes.
DISKCOPY Copia el contenido de un disquete en otro.
DOSKEY Edita líneas de comando, memoriza comandos y crea macros.
ECHO Muestra mensajes, o activa y desactiva el eco.
ENDLOCAL Termina la búsqueda de variables de entorno del archivo por lotes.
ERASE Elimina uno o m s archivos.
EXIT Sale del programa CMD.EXE (interfaz de comandos).
FC Compara dos archivos o conjunto de archivos y muestra las diferencias entre ellos.
FIND Busca una cadena de texto en uno o m s archivos.
FINDSTR Busca cadenas de texto en archivos.
FOR Ejecuta un comando para cada archivo en un conjunto de archivos.
FORMAT Da formato a un disco para usarse con Windows.
FTYPE Muestra o modifica los tipos de archivo utilizados en una asociación de archivos.
GOTO Direcciona el intérprete de comandos de Windows a una línea en un programa por lotes.
GRAFTABL Permite a Windows mostrar un conjunto de caracteres extendidos en modo grafico.
HELP Proporciona información de ayuda para los comandos de Windows.
IF Ejecuta procesos condicionales en programas por lotes.
LABEL Crea, cambia o elimina la etiqueta del volumen de un disco.
MD Crea un directorio.
MKDIR Crea un directorio.
MODE Configura un dispositivo de sistema.
MORE Muestra la información pantalla por pantalla.
MOVE Mueve uno o m s archivos de un directorio a otro en la misma unidad.
PATH Muestra o establece una ruta de búsqueda para archivos ejecutables.
PAUSE Suspende el proceso de un archivo por lotes y muestra un mensaje.
POPD Restaura el valor anterior del directorio actual guardado por PUSHD.
PRINT Imprime un archivo de texto.
PROMPT Cambia el símbolo de comandos de Windows.
PUSHD Guarda el directorio actual y después lo cambia.
RD Elimina un directorio.
RECOVER Recupera la información legible de un disco dañado o defectuoso.
REM Graba comentarios en archivos por lotes o CONFIG.SYS.
REN Cambia el nombre de uno o m s archivos.
RENAME Cambia el nombre de uno o m s archivos.
REPLACE Reemplaza archivos.
RMDIR Elimina un directorio.
SET Muestra, establece o elimina variables de entorno de Windows.
SETLOCAL Inicia la localización de cambios del entorno en un archivo por lotes.
SHIFT Cambia posición de modificadores reemplazables en archivos por lotes.
SORT Ordena las entradas.
START Inicia otra ventana para ejecutar un programa o comando.
SUBST Asocia una ruta de acceso con una letra de unidad.
TIME Muestra o establece la hora del sistema.
TITLE Establece el título de la ventana de una sesión de CMD.EXE.
TREE Muestra gráficamente la estructura de directorios de una unidad o ruta de acceso.
TYPE Muestra el contenido de un archivo de texto.
VER Muestra la versión de Windows.
VERIFY Comunica a Windows si debe comprobar que los archivos se escriben de forma correcta en un disco.
VOL Muestra la etiqueta del volumen y el número de serie del disco.
XCOPY Copia archivos y árboles de directorios.

Nos solo existen estos comandos, también hay algunos como el ping, netstat, tracert,... pero estos más que comandos son programas que están en system32, los programas que están en system32 se pueden ejecutar desde la consola escribiendo su nombre.

Si necesitamos ayuda sobre un comando de los de esta lista solo hay que usar HELP "AQUI EL COMANDO". Por ejemplo más arriba hemos visto la ayuda del comando color, para ver esto tenemos que escribir:
Código:
help color

Si queremos ayuda en "comandos" como ping o tracert hay que escribir el comando y detrás "x" o "/?"

Comando ECHO:

ECHO

El echo es el comando mas simple y mas usado en programas en BATCH, lo único que hace es imprimir en la pantalla lo que se escribe detrás del echo, miren este ejemplo:
Código:
@echo off
cls
echo ¡Hola!, como te va
pause>nul
echo Como estas?
pause>nul
exit

Este código hace que es escriba en la pantalla "¡HOLA!, como te va" y cuando pulsas una tecla te dice: "Como estas?", cuando vuelves a pulsar una tecla el programa acaba. Esto no tiene más complicación.

ECHO OFF / ON

Este es muy fácil, pero también es importante. Si han observado algún programa en BATCH, habrán notado que todos empiezan así:

Código:
@echo off

Lo que hace este comando es que no se impriman los comandos que escribes en la pantalla, si haces un programa como el HOLA MUNDO y no escribes el echo off al principio en vez de salir esto:

Código:
¡HOLA MUNDO!

Saldría esto:
Código:
c:\WINDOWS\system32> echo ¡HOLA MUNDO!
¡HOLA MUNDO!

Así echaríamos a perder la imagen de nuestro proyecto

Continuará...

Continuar leyendo

De Win2 y otra vulnerabilidades

elMor3no [celiarios@infomed.sld.cu]

Acá en mi primer articulo me referiré a un archivo poco conocido para el usuario estándar, presente para algunos como parte del sistema operativo Windows, este archivo a devenido en un peligro para quienes por ingenuidad o desconocimiento exponen información confidencial

Para nadie(o al menos para quienes leen estas páginas) es un secreto que Win2 cuenta con muchas vulnerabilidades (pareciera mas una política de Microsoft, que errores de sus creadores) y bugs entre sus líneas de programación. Pero en este caso esta vulnerabilidad para muchos y una buena oportunidad para otros es lo que encontramos en el archivo Index.dat.

A muchos, incluyéndome, no nos gusta que alguna persona que accediera en cualquier ocasión a nuestro ordenador, pudiera de algún modo saber que hemos hecho recientemente, que sitio hemos visitado, o a que persona le hemos escrito pocas semanas atrás. Sin embargo aunque usted no lo perciba, el sistema operativo Windows almacena secretamente todos los sitios visitados en Internet. Usted puede borrar el Historial de Internet Explorer, incluso los archivos temporales y las cookies, y aun así permanecerá el rastro de lo que usted hizo en la web.

En «index.dat», un archivo empleado por Internet Explorer, se almacena una lista con los sitios visitados y con información de los correos enviados y recibidos a través del programa Outlook. Igualmente guarda los datos de qué archivos se han abierto recientemente en la computadora y las búsquedas realizadas dentro de ella o desde ella en una intranet o red externa.

En principio es una “herramienta útil” del sistema pues si vemos su función desde el lado positivo no es mas que un archivos index muy parecido al de cualquier bases de datos, y los datos que almacena permiten acelerar los procesos de búsqueda. Pero por otro lado (el negativo) no es más que una manera muy sencilla y eficaz de saber todo lo que se ha hecho en un ordenador. Este archivo «index.dat» puede encontrarse en Documents and Settings/nombre de usuario/Configuración local/Historial/History.IE5 en algunos casos pero generalmente en Documents and Settings/nombre de usuario/Cookies.

Muchos usuarios saben de su existencia, al menos los cacharreros, pero no muchos para que sirve (lo mismo para el sistema que para un chismoso) pues no se ejecuta ni se puede abrir para ver su contenido del modo tradicional y por ende tampoco puede borrarse del modo tradicional, valga aclarar.

“En el reino del señor no hay nada oculto”, como tampoco nada queda oculto para quienes nos empeñamos en ir mas allá y aunque Windows no nos permite abrir el archivo, en Internet cualquiera puede encontrar programas de descifrado que abrirían y por tanto dejarían a merced de cualquiera su contenido, es decir toda la información privada dejaría de ser privada, los correos personales que creíamos haber borrado, las páginas web que visitamos, las contraseñas de correos, o cualquier otro dato crucial.

De este modo, cualquier usuario con malas intenciones que tuviera acceso a nuestra máquina, o que lograra copiar este archivo, podría descargar posteriormente de Internet programas como «Index Dat Spy» y ver los contenidos almacenados. Aunque realmente no hace falta un «Index Dat Spy» u otro programa de descifrado pues si llegáramos a probar con el Bloc de Notas o el Notepad++ podríamos ver algunos datos personales, nada del otro mundo, pero sí nos demuestra que ya de hecho no es muy complicado que cualquiera acceda a información que para muchos ya no existía después de borrar los Archivos Temporales de Internet, los Temporales del sistema, los archivos Recientes y los Historiales.

NADA OCULTO

Todos acá sabemos que nada es totalmente seguro o secreto en el mundo de la computación. Por mucho que se pretenda proteger la computadora, siempre estaremos ante la eventualidad de que alguien pueda acceder a la información que contiene.

Aunque no faltan los que creen que borrando el Historial del Internet Explorer, e incluso los archivos temporales o las cookies de la máquina, eliminan los rastros de lo que han hecho, la realidad indica que no es así, pues las huellas siempre quedan de una u otra manera. La historia del «index.dat» demuestras apenas un ejemplo de esto.

Mucho se ha hablado de que Microsoft, firmó hace mucho tiempo acuerdos secretos con el gobierno norteamericano para ayudarlo a espiar a casi todo el mundo. De hecho es así, pues hoy Windows está instalado en más de mil millones de computadoras, aproximadamente el 90 por ciento de todas las que existen. Pero sea o no su intención colaborar con el espionaje, piratas informáticos, curiosos, y cualquiera con cualquier intención se han aprovechado de las «vulnerabilidades» de seguridad de Windows, entre ellas el «index.dat», para averiguar información confidencial.

Aunque este archivo puede vaciarse de contenido, volverá a aparecer en cuanto hagamos alguna búsqueda nueva, puede borrarse, pero para eso es necesario algún software especializado en realizar dicho borrado; eliminarlo desde la línea de comandos arrancando con un disco sistema(ERD Commander 2003 ó Hiren Boot, por ejemplo); o desde el propio Windows, siempre que se hayan cerrado todos los programas que se estén ejecutando, se finalice el proceso explorer.exe desde el administrador de tareas y solo después se borre desde la línea de comandos. Por cierto todo este trabajo para que vuelva a aparecer a los pocos segundos de volver a hacer cualquier operación sobre el sistema.

Continuar leyendo

Introducción a las Estructuras de Datos (IV)

CHenry [chenry@lab.matcom.uh.cu]

Colas

Definición:

Una cola es un contenedor de objetos que se insertan y se eliminan siguiendo el principio de primero en entrar, primero en salir (FIFO: First In First Out). Al elemento de mas tiempo en la cola se le denomina frente de la cola (front).


Las operaciones definidas para una cola son las siguientes:
• enqueue: inserta un objeto al final de la cola.
• empty: retorna si la cola esta vacía o no.
• dequeue: remueve el objeto que está en el frente de la cola; no está¡ definido si la cola está¡ vacía.
• front: retorna el objeto que esta en el frente de la cola sin borrarlo; no esta definido si la cola esta vacía.

Su definición axiomática es como sigue:

Cola

Tipo

QUEUE[G]

Funciones

enqueue: QUEUE[G] x G P QUEUE[G]
dequeue: QUEUE[G] R-> QUEUE[G]
front: QUEUE[G] R-> G
empty: QUEUE[G] P-> BOOLEAN
new: QUEUE[G]

Axiomas x: G, q: QUEUE[G]

empty(new): al crear una cola siempre está vacía.
not empty(enqueue(q,x)): una cola que se le añade un elemento no está vacía.
front(enqueue(q, x)) = x si empty(q): si a una cola vacía se le añade un elemento, este pasa a ser el frente.
front(enqueue(q, x)) = front(q) si not empty(q): si a una cola que no está vacía le añadimos un elemento, el frente sigue siendo el mismo.
dequeue(enqueue(q, x)) = q si empty(q) (semejante a front).
dequeue(enqueue(q, x)) = enqueue(dequeue(q), x) si not empty(q) (semejante a front).

Precondiciones

dequeue(q: QUEUE[G]): not empty(q)
front(q: QUEUE[G]): not empty(q)


Las colas pueden ser implementadas de varias formas, como son:
• Arreglo (Aparece una nueva operación para la cola para saber si está llena; la mejor forma de hacerlo es considerando el arreglo con forma circular).
• Nodos enlazables.

Pilas

Definición:

Una pila es un contenedor de objetos que se insertan y se eliminan siguiendo el principio el último en entrar, primero en salir (LIFO: Last In First Out). Al último elemento que se inserta en una pila se le denomina tope de la pila.

Las operaciones definidas para una pila son las siguientes:
• push: inserta un objeto en el tope de la pila.
• empty: retorna si la pila esta vacía o no.
• pop: extrae el objeto que esta en el tope de la pila; no esta definido si la pila esta vacía.
• top: retorna el objeto que esta en el tope de la pila sin borrarlo; no esta definido si la pila esta vacía.

Su definición como TDA es igual al mostrado en el artículo introductorio.

Pila

Tipo

STACK[G]

Funciones

push: STACK[G] x G P STACK[G]
pop: STACK[G] R-> STACK[G]
top: STACK[G] R-> G
empty: STACK[G] P BOOLEAN
new: STACK[G]

Axiomas

top(push(s, x)) = x
pop(push(s, x)) = s
empty(new)
not empty(push(s, x))

Precondiciones

pop(s: STACK[G]): not empty(s)
top(s: STACK[G]): not empty(s)


Las pilas pueden ser implementadas de varias formas; entre ellas sobresalen como las más comunes:
• Arreglo (Aparece una nueva operación para la pila para saber si está llena.)
• Nodos enlazables.

Continuar leyendo