¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Terminos, Definiciones Basicas

2 participantes

Ir abajo

Terminos, Definiciones Basicas Empty Terminos, Definiciones Basicas

Mensaje  Arbolito Jue Jul 19, 2012 10:55 pm

DEFINICIONES


Que es una Shell

-Basicamente y Brevemente el término Shell se emplea para referirse a programas que proveen una interfaz de usuario para acceder a los servicios del sistema operativo. Estos pueden ser gráficos o de texto simple como la famosa CMD (Linea de comandos), dependiendo del tipo de interfaz que empleen. ...

Que es metasploit
CS, SS, ES y DS

Son registros de segmento, suelen apuntar a una cierta sección de la memoria. Se
suelen usar Registro+Offset para direccionar a una dirección concreta de
memoria. Los mas usados son CS, que apunta al segmento actual de direcciones que
esta ejecutando EIP, SS, que apunta a la pila y DS, que apunta al segmento de
datos actual. ES es "multipropósito", para lo mismo, referenciar direcciones de
memoria, y un largo etc...

ESP EBP

Extended Stack Pointer y Extender Base Pointer. Ambos los veremos más en
profundidad cuando explique la pila.
Sirven para manejar la pila, referenciando la "cima" (ESP) y la "base" (EBP).
ESP siempre contiene la dirección del inicio de la pila (la cima) que esta
usando el programa o hilo (thread) en ese momento. Cada programa usara un
espacio de la pila distinto, y cada hilo del programa también. EBP señala la
dirección del final de la pila de ese programa o hilo.

¿Que es una vulnerabilidad?

- Una vulnerabilidad es un fallo que compromete la seguridad del programa o
sistema. Aunque se le asocia también a "bug" (fallo), pero no es lo mismo. Un
bug es un fallo de cualquier tipo, desde que un juego no funcione bien porque
vaya lento, a un programa que funciona mal al intentar hacer una división por 0.
Las vulnerabilidades son bugs de seguridad, que pueden comprometer el sistema o
el programa, permitiendo al "hacker" ejecutar código arbitrario, detener el
sistema o aprovecharse del mismo para sacar cualquier tipo de beneficio.

¿Que es un exploit?

- Un exploit es un código, un "método", un programa, que realiza una acción contra
un sistema o programa que tiene una vulnerabilidad, "explotándola", y sacando un
beneficio de la misma. Dicho beneficio normalmente es la ejecución de código
(dentro de ese programa, con los privilegios del mismo) que nos beneficia,
dándonos por ejemplo una contraseña, o dándonos una shell de comandos, añadir un
usuario administrador al sistema, o incluso lo único que hacen es detener el
servicio o el sistema, según nuestros propósitos.

Habría que distinguir entre exploits "completos" (los que están completamente
funcionales) y los POCs (proof of concept) que son exploits que demuestran que
dicha vulnerabilidad existe y que es explotable, pero que no dan ningún
beneficio o el beneficio es mínimo. Normalmente se usan estos últimos para
evitar el uso de los mismos por niñatos (script kiddies) o para evitar gusanos
(supongo que se acuerdan del blaster o del sasser, se liberaron los exploits
completamente funcionales)

¿Que es una shellcode?


- Una shellcode es un código básico en ASM, muy corto generalmente, que ejecuta
los comandos que queremos, como system("cmd.exe") (ejecuta una shell msdos en
windows); o execv("/bin/sh") (ejecuta una shell sh en Linux/Unix), o sirve
para añadir un usuario a la cuenta del sistema, para descargar un troyano y
ejecutarlo, para dejar abierto un puerto conectado a una shell, etc.... Es el
código que ejecutara el programa vulnerable una vez tengamos su control. No es
nada difícil de programar sabiendo ASM básico y como funciona tu SO.

Una vez programada en ASM (para testearla, por ejemplo, además de que es mas
fácil programarla en ASM que directamente con opcodes Razz), se pasa a un string,
compuesto por los opcodes (codigos de operacion, en hexadecimal) de dichas
instrucciones ASM. Lo veremos mas adelante Smile

¿Que es un overflow?

- Un overflow es, básicamente, cuando resguardamos espacio de memoria insuficiente
para una variable (allocate), y le introducimos más datos a dicha variable de
los que puede soportar. La variable "desborda", y los datos que no caben
sobrescriben memoria continua a dicha variable. Si declaramos una variable que
solo debe soportar 8bytes, si le movemos 10bytes, los 2bytes restantes no se
pierden, sino que sobrescriben la memoria contigua a dicha variable.

Hay distintos tipos de overflow, stack overflow (el que veremos aquí, también
llamado buffer overflow, o desbordamiento de buffer, etc...), heap overflow (ya
lo veremos en algún otro texto, se refiere a desbordar una variable declarada en
el heap en vez de en la pila...), format string overflow (bugs de formato de las
cadenas de texto), integer overflow (debidos a declaraciones de variables con un
espacio mínimo o negativo que proveemos nosotros...), etc...

¿Porque se le llama Stack Overflow?

- La pila (stack) es una estructura tipo LIFO, Last In, First Out, ultimo en
entrar, primero en salir. Pensad en una pila de libros, solo puedes añadir y
quitar libros por la "cima" de la pila, por donde los añades. El libro de mas
"abajo", será el ultimo en salir, cuando se vacíe la pila. Si tratas de quitar
uno del medio, se puede desmoronar.

Bien, pues el SO (tanto Windows como Linux, como los Unix o los Macs) se basa en
una pila para manejar las variables locales de un programa, los retornos (rets)
de las llamadas a una función (calls), las estructuras de excepciones (SEH,
en Windows), argumentos, variables de entorno, etc...

Por ejemplo, para llamar a una función cualquiera, que necesite dos argumentos,
se mete primero el argumento 2 en la pila del sistema, luego el argumento 1, y
luego se llama a la función.

Si el sistema quiere hacer una suma (5+2), primero introduce el 2º argumento en
la pila (el 2), luego el 1º argumento (el 5) y luego llama a la función suma.
Arbolito
Arbolito
Admin
Admin

Mensajes : 167
Fecha de inscripción : 27/06/2012

https://arbolito.foroactivo.mx

Volver arriba Ir abajo

Terminos, Definiciones Basicas Empty Re: Terminos, Definiciones Basicas

Mensaje  BrUn3y Vie Ago 17, 2012 5:45 pm

interesante información eso si muy difícil de aprenderse en una leida
BrUn3y
BrUn3y
Arbol
Arbol

Mensajes : 41
Fecha de inscripción : 30/06/2012

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.