Você está na página 1de 34

DoS:NegaodeServio eformasdedefesa

TchLinuxUlbraGravata
http://tchelinux.org/gravatai

ElgioSchlemer UlbraGravatai
http://gravatai.ulbra.tche.br/~elgio 31deMaiode2008

Introduo

Problemasdesegurana

EngenhariaSocial

"AArtedeEnganar" virus,worms,capturadoresdesenhas,... invases,comprometimentodosistema "Apenas"tirardoar

Programasmaliciosos

Bugsdeprogramao

DoS:DeniedofService

Tiposdenegaodeservio

Existemdoistiposdenegaodeservio:

NegaodeservioLocal

usuriomaliciosoprecisaexecutarcomandosnamquina usuriomaliciosonoexecutacomandosnamquina

NegaodeservioRemota

DoSLocal

precisaexecutarcomandosnamquina

isto,teracesso,login,nele ouumusuriolegtimomalicioso(oudescuidado) ouroubouasenhadeumusuriolegtimo ouexploroualgumavulnerabilidadeparaexecutar comandosnamquina esgotaralgumrecursodosistema

OqueumDoSlocalpodefazer?

Recursosdamquina:disco

capacidadedodiscorgido

podeescrevernodiscoatesgotarsuacapacidade serviosqueprecisamdeespaoficaroindisponveis

Exemplo:selotaro/var/spool/mailnoserecebemais mensagensdeemail

Demonstrao Solues:

corretoparticionamentododiscorgido,quotasdeuso demonstraodassolues

RecursosdoSO:processos

capacidadedoescalonamentodeprocessos

atacantepodecriarprocessosatlotar novosprocessosnopoderosercriados serviosficamindisponveis(oulentos) Demonstrao:


usuriotcheLinuxexecutabyebyeProc rootnoconsegueselogar,servidorHTTPficaFORA quotasdeprocessosporusuriocomPamLimits

Solues:

Recursosdamquina:memria

capacidadedamemria

atacantepodealocarmemriaatlotar serviosqueprecisamalocarmemrianoconseguiro serviospodemficamindisponveis Demonstrao:


usuriotcheLinuxexecutabyebyeMem rootnoconsegueselogar,servidorHTTPficaFORA quotasdememriaporusuriocomPamLimits

Solues:

DemonstraoPamLimits

Permitedefinirrecursosqueusuriopodeusar

disco:quota+particionamento memria,processos:pamlimits

Mostrandooarquivo/etc/security/limits.conf
#limitesparagruporoot @roothardmaxlogins50 @roothardnproc500 @rootharddata2000000 #limitesparatodos(excetogruporoot, #poisasregrasanterioresprecedem) *hardmaxlogins15 *hardnproc20 *harddata20000

DoSLocal:Concluso

Fcilderesolver,sconfigurar

Particionarcorretamenteodiscoduranteainstalao

paraservidores!!Planejarantes

Configurarquotasdedisconaspartiesqueusurios poderoescrever Configurarquotasderecursos Permitirloginapenasparaquemrealmenteprecisar

DoSLocal:nodeveriaserumproblema!!

Negaodeservioremota

Derrubaservioousistemasemprecisarexecutar comandos

Obs:seexplorouumbugparaexecutarcomandos,no DoSremoto,local(apenasusouumbugparapoder executarcomandos) bugsnosaplicativos ataquesaoprotocolo

DoSremoto:

DoSRemoto:Bugsemprogramas

Oserviopossuiproblemasemsuaprogramao Bastafazeralgoparaqueelecaia

Exemploclssico:pingdamorte:

ICMPcomdadosmaioresqueobufferdoWindows.Pilha TCPcaia(TUDO!) Umtpicoproblemadebufferoverflow umminiservidorHTTPcombug Exploraoatravsdeumsimplesnavegador

Demonstrao:

Bugsemprogramas:Soluo

correodosproblemasdeprogramao

crtico:dependedofornecedor

Linux:comoeupossomexernocdigo... proprietrios:somentequandovierostaisPatches...:D

boasprticasdeprogramao

requermudanadementalidade programarpensandoemsegurana casodominiservidor:nousargetsparalerstrings!

DoSRemoto:Ataquesaprotocolos

ExploraodedetalhesdapilhaTCP/IP Alguns,notemcorreo:

correoseriaimplementarnovosprotocolos Enviaseumpingcomipspoofadoparatodos todosrespondemparaoipquecai Soluo(fcil):


Exemplo:pingbroadcast

trataripspoofingnofirewall noresponderapingsbroadcast

EstudodecasoDoSremoto SynFlood

BaseadonaformacomooTCPimplementa confiabilidade Nohcorreo!


defesacomplicada,maspossvel defesaimpossvelcomregrasdefirewall

muitoemboraalgunstutoriaisnaInternetdigamocontrrio exemplodoguiaFocaAvanadoquepregasoluopor firewall

SynFlood

Servidorprecisaderecursosparacadaconexo

paraosbuffersdeenvioerecebimento paracontroledeconfirmaes,entreoutros alocaestesrecursos defineoseunmerosequencial respondeaoclientecomumSyn+Ack(handshake)

AoreceberoSyn(inciodeconexo),oservidor:

SynFlood

Seclientenocompletarhandshakeapscerto tempo:

desalocaestesrecursos enviaumRST(reset)paraocliente atqueotemposeesgote,recursosficamalocados EseclientesfizerSYNsenuncacompletaro handshake?

Importante:

SynFlood

ClientepodegerarpacotesSynmuitomais rapidamentedoqueoservidorpodetratlos Flood,inundaodeSyns:

servidoralocatantosrecursosparafalsosclientesque ficasemrecursosparaatenderumclientelegtimo Negaodeservionoservidor! hping3fazflood

DefesaSynFlood

Muitocomplicado! Bloquearipsdosatacantes?

FALHO:atacanteprecisafazeripspoofingparaque ataquetenhasucesso Qualipbloquear? FALHO:firewallvairecusarSynsdeclienteslegtimos OprpriofirewallacabacausandooDoS

LimitarquantidadedeSynsnofirewall?

eoatacantepodeexploraristoaindamaisfcil

DefesaSynCookie

Alocaoderecursosfeitanofinaldohandshake

Somenteseclienteforlegtimo Clientelegtimo:algumquecompletouohandshake ArmazenarIpeportanoprimeiroSYN

comosaberseoclientecompletouohandshake?

FALHO:istonoalocarrecursos? COMO????

Reconhecerclientemesmosemarmazenarnada.

FuncionamentoSynCookie

Servidorgeraseunmerosequencialapartirde umHASHde32bits:

envolvendoaportaeoIPdocliente informaesdetimestamp informaosigilosa(senha)quesoservidortem

Clientelegtimodevernoltimopacotedo handhshake:

NumerodeACK=nmeroseqenciadoservidor+1

SynCookie:Clientelegtimo
Servidor
Cliente Ip 10.1.0.4 Porta 3000

Segredo = 3456

SynCookie:Clientelegtimo
Servidor
Cliente Ip 10.1.0.4 Porta 3000 De 10.1.0.4, porta 3000 Pacote SYN, NS-C=100 NACK=0

HASH (10.1.0.4,3000,3456) HASH32 = 17377737 NS = 17377737

Segredo = 3456

SynCookie:Clientelegtimo
Servidor
Cliente Ip 10.1.0.4 Porta 3000 De 10.1.0.4, porta 3000 Pacote SYN, NS-C=100 NACK=0

ESQUECE TUDO!! No aloca nada


Pacote SYN/ACK, NS-S=1737737, NACK=101

Segredo = 3456

SynCookie:Clientelegtimo
Servidor
Cliente Ip 10.1.0.4 Porta 3000 De 10.1.0.4, porta 3000 Pacote SYN, NS-C=100 NACK=0

Pacote SYN/ACK, NS-S=1737737, NACK=101

Pacote ACK, NS-C=101, NACK=1737738

HASH (10.1.0.4,3000,3456) HASH32 = 17377737 NS = 17377737 Cliente forneceu 17377738 acertou o cookie ALOCA RECURSOS
Segredo = 3456

SynCookie:AtacantetentandoSynFlood
Servidor
Cliente Ip ??? Porta ??? De 172.21.0.4, porta 300 Pacote SYN, NS-C=100 NACK=0

Segredo = 3456

SynCookie:AtacantetentandoSynFlood
Servidor
Cliente Ip ??? Porta ??? De 172.21.0.4, porta 300 Pacote SYN, NS-C=100 NACK=0

HASH (172.21.0.4,300,3456) HASH32 = 926234331 NS = 926234331 ESQUECE TUDO!! No aloca nada

Segredo = 3456

SynCookie:AtacantetentandoSynFlood
Servidor
Cliente Ip ??? Porta ??? De 172.21.0.4, porta 300 Pacote SYN, NS-C=100 NACK=0

ra Pa

t co Pa 4 .0. 21 2. 17

-S NS K, /AC YN eS

31 43 3 62 92 =

1 10 K= AC ,N

Segredo = 3456

SynCookie:Atacantetentandopassar
Servidor
Cliente Ip ?? Porta ?? De 172.10.3.4 porta 300 Pacote ACK, NS-C=101, NACK=134538

Segredo = 3456

SynCookie:Atacantetentandopassar
Servidor
Cliente Ip ?? Porta ?? De 172.10.3.4 porta 300 Pacote ACK, NS-C=101, NACK=134538 Falso cliente no faz Syn, mas envia um ACK tentando fazer o servidor acreditar que j a 3 etapa do handshake. Ele falsifica o Ip (172.10.3.4) e porta (300) de origem e inventa (advinha) um nmero de ACK (134538) para convencer o servidor

Segredo = 3456

SynCookie:Atacantetentandopassar
Servidor
Cliente Ip ?? Porta ?? De 172.10.3.4 porta 300 Pacote ACK, NS-C=101, NACK=134538 Falso cliente no faz Syn, mas envia um ACK tentando fazer o servidor acreditar que j a 3 etapa do handshake. Ele falsifica o Ip (172.10.3.4) e porta (300) de origem e inventa (advinha) um nmero de ACK (134538) para convencer o servidor

HASH (172.10.3.4,300,3456) HASH32 = 388642517 NS = 388642517 Cliente forneceu 134538 NO ACERTOU O COOKIE No aloca recursos Envia reset (ou no ?)

Segredo = 3456

SynCookie:Atacantetentandopassar
Servidor
Cliente Ip ?? Porta ?? De 172.10.3.4 porta 300 Pacote ACK, NS-C=101, NACK=134538 Falso cliente no faz Syn, mas envia um ACK tentando fazer o servidor acreditar que j a 3 etapa do handshake. Ele falsifica o Ip (172.10.3.4) e porta (300) de origem e inventa (advinha) um nmero de ACK (134538) para convencer o servidor

ote ac P .4 0.3 2.1 17 ra Pa

T RS

Segredo = 3456

SobreSynCookie

AtacantenoconseguenadafazendoSYNs

AmenosqueelenomintasobreseuIP,parapoderrecebero cookie Masaieleseexpeeprecisaparticipardohandshake quebrarumalgoritmodehashde32bits

Paraenganaroservidoratacanteprecisa:

fraco,masqualquercoisaquelevesegundosjinviabiliza

adivinharumnmeroseqencialde32bits(tentativaeerro)

LinuxtemSynCookieamuitotempo:
echo1>/proc/sys/net/ipv4/tcp_syncookies

Concluso

Negaodeserviolocalnoproblema

dependedoadministradorconfigurarcorretamente Bugs:dependedacorreo Protocolo:difcil,requerdefesas Nohdefesaporcomfirewall Umasoluo:SynCookie

Negaodeservioremoto:

SynFlood

DoS:NegaodeServio eformasdedefesa
ElgioSchlemer http://gravatai.ulbra.tche.br/~elgio
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7070

Você também pode gostar