Notice: La función wp_enqueue_script ha sido llamada de forma incorrecta. Los scripts y estilos no se deberían registrar o poner en cola hasta que se carguen los ganchos wp_enqueue_scripts, admin_enqueue_scripts y login_enqueue_scripts. Este aviso ha sido activado por la gestión de nfd_wpnavbar_setting. Por favor, ve depuración en WordPress para más información. (Este mensaje fue añadido en la versión 3.3.0). in /home1/spotsail/public_html/martra/wp-includes/functions.php on line 6078
Buffer Overflow Para Negados. II-Parte. Ejecutando código del chungo. – Pere Martra
No se han encontrado widgets en la barra lateral
Meme de Chuck Norris con los ObverflowChuck Norris pasa de los Overflow. Don't be Norris.

En esta segunda parte vamos a ver como se puede usar un stack overflow para ejecutar código malicioso. No quiere decir que vayamos a ser capaces de hacerlo, sino de entender el mecanismo y tener más fácil crear código seguro. Que por algo esto este post esta en Ciberseguridad Básica 🙂 Los Hackeos serios los dejamos para verdaderos expertos.

¿Como se guardan los datos en el Stack?

Vamos a ver como quedan los datos que teníamos en nuestra función ya vista en el primer post de la serie: Buffer Overflow para negados Parte -I.

[code language=”c”]
#include <stdio.h>
#include <strings.h>

int main(int argc, char *argv[]){
int puede_pasar = 0;
char password[12];
char passwordGuardado[12] = "SIoNOoES";
gets (password);
if (strncmp(password, passwordGuardado, 6) == 0){
puede_pasar = 1;
}
if (puede_pasar == 0){
printf("Ehhhh!! ¿que haces tu aqui?");
} else {
printf("Yeah!!! Hola megasuperUsuario!");
}
[/code]

Ok, los datos que vemos en esta función quedarían el stack de la siguiente manera:

  1. argc : 4 bytes.
  2. argv : 4 bytes.
  3. dirección retorno: 4 bytes.
  4. puede_pasar : 4 bytes.
  5. password : 12 bytes.
  6. passwordGuardado : 12 bytes.

Los datos se asignan desde las direcciones superiores hasta las inferiores, en cambio, cuando les damos valor es al contrario, se asignan desde abajo. Por esos las variables que se desbordan (Overflow) sobreescriben las de arriba, que son las que se han definido en el código justo antes que ellas.

Si recordáis en el ejemplo anterior, al poner un valor con una longitud superior a 12 bytes en password, se sobreescribia el valor de puede_pasar.
En este caso la clave está en poder modificar el contenido de dirección retorno, que es la dirección desde la que se ha llamado a la función y a la que se devuelve el control del flujo del programa una vez finalizada la función.
El funcionamiento continúa siendo muy similar, y el problema es exactamente el mismo. Todo lo que asignemos que sea mayor de 12 bytes a la variable password, se irá escribiendo en partes de memoria que no le corresponden. Primero ocupará la memoria de la variable puede_pasar, y si superamos su espacio empezaremos a ocupar la dirección de retorno. Es tan sencillo como pasar como parametro la dirección que ocupa en la memoria el código que queremos ejecutar. En este caso esta dirección tendría que estar a partir del 16avo byte de la variable password.

A preocuparse por los Overflow.

Chuck norris mirando tu stack.
Ante este Hacker solo podemos correr!

Como programadores tendríamos que comprobar siempre la longitud de cualquier entrada que permitamos a nuestro programa.

Como Responsables técnicos tenemos que actuar como evangelizadores para que nuestros desarrolladores asuman la multitud de agujeritos que se pueden dejar por un código bien escrito pero descuidado.

Si somos gestores de proyectos tenemos que traspasar esta preocupación a nuestros proveedores. ¿Pero qué hay del código standard? O lo que es peor ¿del semi standard? Si, ese código que es un nicho de mercado, que se usa en todo tu sector, pero no es popular, es decir, no lo conoce la mayoría de la población. Este es el software más peligroso. Sobretodo si nuestro sector es uno de los golosos, medios de pago, banca, fintech, sanidad, inversión, etc etc… Muchos de los ataques van contra el software que producen estas empresas, a veces descubriendo los Zero Days (vulnerabilidades desconocidas por el fabricante) otras con un Topo. Estas empresas medianas no tienen la capacidad de las grandes ni su presupuesto, y no sabemos las condiciones laborales de sus programadores.

Y así podríamos continuar con toda la escala jerárquica de cualquier organigrama empresarial. Poco a poco se va tomando consciencia y ahora muy poca gente le lleva la contraria al departamento de seguridad, o le pone palos en la rueda. Pero contunamos sin preocuparnos por código que no es nuestro, nos parece perfecto que en nuestros sistemas tengamos código corriendo de una empresa que paga 600 euros a un ingeniero subcontratado. Algún día alguien le dará un poquito (o mucho mucho) más para liarnos una buena.

Espero que ahora estemos todos un poco mas concienciados. 🙂 o Preocupados!

(ATM Malware) Winter is coming!
Malware en cajeros

Cada vez que damos un paso para securizar un sistema, cada vez que lo fortalecemos, cada ataque que evitamos, sobretodo Read more

Una introducción a uno de los clásicos de la ciberseguridad: los SQL Injection.
Orden SQL Injection

Si estás cansado de oír hablar de los SQL Injection pero nunca te ha quedado muy claro para qué servían... Read more

Vamos a informarnos sobre CiberSeguridad.

Este mundo cambia: aparecen nuevas amenazas, nuevos crímenes, nuevas herramientas, y es tan importante conocer algunos métodos básicos de Hacking, Read more

CEH 02 segundo test para el Certified Ethical Hacker

Segundo test conteniendo 10 preguntas para preparar la certificación oficial de Certified Ethical Hacker. El objetivo de este examen es ayudar ver si estas preparado a presentarte al CEH, pero sobretodo servir también como guia de estudio. Si no aciertas una pregunta busca el por que y entiendelo, no lo repitas, solo para saber cual es la respuesta correcta.

1. An Intrusion Detection System(IDS) has alerted the network administrator to a possibly malicious sequence of packets went to a Web server in the networks external DMZ. The packet traffic was captured by the IDS and saved to a PCAP file. What type of network tool can be used to determine if these packets are genuinely malicious or simply a false positive?

 
 
 
 

2. You are performing a penetration test. You achieved access via a buffer overflow exploit and you proceed to find interesting data, such as files with usernames and passwords. You find a hidden folder that has the administrators bank account password and login information for the administrators bitcoin account. What should you do?

 
 
 
 

3. You’ve just been hired to perform a pentest on an organization that has been subjected to a large-scale attack. The CIO is concerned with mitigating threats and vulnerabilities to totally eliminate risk. What is one of the first thing you should to when the job?

 
 
 
 

4. Which of the following best describes a distributed denial-of-service attack?

 
 
 
 

5. The Open Web Application Security Project (OWASP) is the worldwide not-for-profit charitable organization focused on improving the security of software. What item is the primary concern on OWASPs Top Ten Project most Critical Web application Security Rules?

 
 
 
 

6. Which of the following tools can be used to crack SAM files in Windows?

 
 
 
 

7. This phase is the very first step in Information Gathering, and it will tell you what the landscape looks like, and also  will increase the odds of success in later phases of the penetration test.  Most experts think that  is the most important phase of ethical hacking in which you need to spend a considerable amount of time. Can you name it?

 
 
 
 

8. Which of the following is the greatest threat posed by backups?

 
 
 
 

9. During a security audit of IT processes, an IS auditor found that there was no documented security procedures. What should the IS auditor do?

 
 
 
 

10. Which of the following is true regarding WEP cracking?

 
 
 
 

Por Martra

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *