Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
atacante deve ter condi'es de e ecutar comandos locais na mquina. )as o que o atacante, estando na mquina, pode fa6er para derru#ar servios7 )uitas coisas8 1ode e ecutar comandos em seq9:ncia que esgotem a mem;ria, por e emplo. &u a capacidade do 3ernel de criar novos processos. <m e emplo #em t2pico de $&S local o atacante fa6er% dd i!"#dev#$ero o!"#var#spoo%#&ai%#usuario (considerando que =var=spool=mail partio onde esto os emails dos usurios e que ele possa escrever no arquivo usuario, que seu) Se nen-uma defesa e istir (neste caso seria o emprego de quotas), o disco ou esta partio ser esgotado, impedindo a entrada de novos emails. 0ausa!se um $oS no servio de email. >s defesas para $oS locais so fceis e requerem apenas a sua configurao, como o emprego de quotas, particionamento correto do disco e a adoo de limites de recursos para cada processo ou usurio (no ?inu tem o 1>) limits que fa6 isto). #) DoS remoto% neste o atacante no precisa estar logado na mquina e nem e ecutar comandos nela. @emotamente, de alguma forma, ele derru#a o servio. 1rogramas mal feitos, com #ugs, so os recordistas deste tipo de negao. $evido a descuidos na programao, as ve6es s; por enviar um pacote devidamente constru2do j suficiente para derru#ar o servio. & lendrio ping da morte pode ser citado como um e emplo #em t2pico. &u ainda o ataque A)>S (rvore de natal), onde se enviava um pacote /01 com todos os flags ligados (anormal e imposs2vel. 0omo um pacote teria, por e emplo, flag de SBN, @S/ e +CN ao mesmo tempo7). <ma pil-a /01 #em programada deveria descartar este pacote, mas implementa'es antigas se perdiam e caiam. $e qualquer forma estes ataques, #aseados em erros de programao, aca#am tendo vida curta% s; e istem at que o fa#ricante do sistema disponi#ili6e corre'es (se #em que por ve6es aca#am sendo eternos para aqueles que no aplicam corre'es nos seus sistemas). )as e istem as nega'es de servios que so #aseados na forma como os protocolos /01=C1 foram implementados e alguns, como o SBN flood, no e istem corre'es, ou seja, eles e istem e continuaro e istindo. S; nos resta nos defender deles. <m destes ataques de negao de servio o SBN flood, que quando reali6ado de forma distri#u2da (d$oS) derru#am o servio mesmo8
> etapa de "discar" no /01 c-amada de -ands-a3e de tr:s vias e os flags /01 so usados para sinali6ar qual etapa se est reali6ando. >ntes de qualquer #it de dados, a seguinte troca de pacotes acontece entre cliente e servidor% E. & cliente envia uma solicitao de cone o, com um pacote /01 sem dados, possuindo o flag de SBN ligado e os demais desligados. 1or causa da presena do flag de SBN, este pacote con-ecido como pacote SBN F. Se o servidor quiser e puder atender, devolve um pacote ao cliente ainda sem dados, com os flags de SBN e de >0G ligados. "sta segunda etapa con-ecida como SBN=>0G. H. Se o cliente ainda quiser manter a cone o, devolve ao servidor um terceiro pacote sem dados, apenas com o flag de >0G ligado (SBN desligado). Somente ap;s a terceira etapa que os dados podem ser trocados. & mais importante para entender a gravidade do ataque sa#er que o servidor, ao rece#er o primeiro pacote (SBN), se ele quiser atender (e emplo% servio 5//1, porta IJ), precisa antes de responder com o SBN=>0G, alocar recursos de -ardKare para atender esta nova cone o. 0omo o /01 um protocolo confivel, que trata de desordenamento e perdas de pacotes, estes recursos no so poucos, pois envolvem #uffers de envio e de rece#imento, controle de n.meros seq9enciais, rel;gios diversos, enfim, muitos recursos de mem;ria, principalmente. " o que acontece se uma mquina fi6er o SBN (etapa E), o servidor alocar recursos e responder com o SBN=>0G (etapa F) mas o cliente no completa o -ands-a3e e no reali6a a .ltima etapa7 &s recursos ficam alocados7 +icam, mas no para sempre. & servidor fica esperando o >0G do cliente e se o mesmo no c-egar depois de certo tempo, os recursos so desalocados. )as o fato que estes recursos realmente permanecem alocados por algum tempo, mesmo que curto. >2 que entra o SBN +lood (traduo literal% inundao de SBN). Nele o atacante gera quantos SBNLs a mquina dele for capa6 e no responde nen-um deles. /em!se que o servidor vai alocar recursos para cada um, como se fossem requisi'es leg2timas, s; desalocando quando aca#ar o tempo. M perfeitamente compreens2vel que o atacante consegue gerar pacotes de SBN muito mais rapidamente e facilmente do que o servidor consegue trat!los. 0laro, -oje temos -ardKare com capacidades de mem;ria e recursos gigantescos, mas no e istem recursos infinitos. )ais cedo ou mais tarde os recursos se esgotaro e o servidor ficar incapa6 de atender clientes leg2timos. "ste o SBN flood8 "A")1?& $" +C@"N>??% O O rc.fireKall .,* ?inus ,lac3 +or slac3KareEF.F O O O modpro#e ipPta#les
modpro#e ipPconntrac3 modpro#e ipta#lePfilter modpro#e ipta#lePmangle modpro#e ipta#lePnat modpro#e iptP?&Q modpro#e iptPlimit modpro#e iptPstate modpro#e iptP@"$C@"0/ modpro#e iptPoKner modpro#e iptP@"("0/ modpro#e iptP)>SR<"@>$" modpro#e ipPconntrac3Pftp modpro#e ipPnatPftp modpro#e ipPgre O O?impa as @egras ipta#les !+ ipta#les !A ipta#les !+ !t nat ipta#les !A !t nat ipta#les !+ !t mangle ipta#les !A !t mangle O ec-o "E" S =proc=s*s=net=ipvT=ipPforKard ec-o "E" S =proc=s*s=net=ipvT=conf=all=rpPfilter ec-o "E" S =proc=s*s=net=ipvT=conf=all=acceptPsourceProute ec-o "J" S =proc=s*s=net=ipvT=conf=all=acceptPredirects ec-o "J" S =proc=s*s=net=ipvT=conf=all=logPmartians ec-o "E" S =proc=s*s=net=ipvT=icmpPec-oPignoreP#roadcasts ec-o "E" S =proc=s*s=net=ipvT=icmpPignoreP#ogusPerrorPresponses ec-o "HJ" S =proc=s*s=net=ipvT=tcpPfinPtimeout ec-o "EIJJ" S =proc=s*s=net=ipvT=tcpP3eepalivePintvl ec-o "E" S =proc=s*s=net=ipvT=tcpPs*ncoo3ies ec-o "E" S =proc=s*s=net=ipvT=tcpPecn ec-o "E" S =proc=s*s=net=ipvT=tcpPtimestamps ec-o "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" ec-o "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV" ec-o "V%CNC0C>N$& > 0&N+CQ<@>WLcXWLcH& $& +C@"N>?? N"/+C?/"@ >/@>YWLcZS%V" ec-o "V% $& C1/>,?"S %V" ec-o "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV" ec-o "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" O1oliticas 1adrao ipta#les !1 CN1</ $@&1 ipta#les !1 &</1</ $@&1 ipta#les !1 +&@N>@$ $@&1 O OOO >tivando 1rotecoes 0ontra >taques OOO O E ! 1rotecao contra /rinoo ipta#les !N /@CN&& ipta#les !> /@CN&& !m limit !!limit E=s !j ?&Q !!log!level [ !!log!prefi "+C@"N>??(1rot. /rinoo)% " ipta#les !> /@CN&& !j $@&1
ipta#les !> CN1</ !p tcp !i et-J !!dport FXTTT !j /@CN&& ipta#les !> CN1</ !p tcp !i et-J !!dport FX[[\ !j /@CN&& ipta#les !> CN1</ !p tcp !i et-J !!dport HEHH\ !j /@CN&& ipta#les !> CN1</ !p tcp !i et-J !!dport HT\\\ !j /@CN&& ipta#les !> CN1</ !p tcp !i et-J !!dport H\\\\ !j /@CN&& ec-o "ativado o #loqueio a tentativa de ataque do tipo /rinoo" ec-o "&N .................................................] &G ^" O F ! 1rotecao contra /rojans ipta#les !N /@&(>N ipta#les !> /@&(>N !m limit !!limit E=s !j ?&Q !!log!level [ !!log!prefi "+C@"N>??(1rot. /rojan)% " ipta#les !> /@&(>N !j $@&1 ipta#les !> CN1</ !p tcp !i et-J !!dport [[[ !j /@&(>N ipta#les !> CN1</ !p tcp !i et-J !!dport [[[ !j /@&(>N ipta#les !> CN1</ !p tcp !i et-J !!dport TJJJ !j /@&(>N ipta#les !> CN1</ !p tcp !i et-J !!dport [JJJ !j /@&(>N ipta#les !> CN1</ !p tcp !i et-J !!dport [JJ[ !j /@&(>N ipta#les !> CN1</ !p tcp !i et-J !!dport E[[[J !j /@&(>N ec-o "ativado o #loqueio a tentativa de ataque do tipo /rojan" ec-o "&N .................................................] &G ^" O H ! 1rotecao contra Norms ipta#les !> +&@N>@$ !p tcp !!dport EH\ !i et-J !j @"("0/ ec-o "ativado o #loqueio a tentativa de ataque do tipo Norms" ec-o "&N .................................................] &G ^" O T ! 1rotecao contra S*n!+lood ipta#les !> +&@N>@$ !p tcp !!s*n !m limit !!limit E=s !j >00"1/ ec-o "ativado o #loqueio a tentativa de ataque do tipo S*n!+lood" ec-o "&N .................................................] &G ^" O \ ! 1rotecao contra 1ing da )orte ipta#les !> +&@N>@$ !p icmp !!icmp!t*pe ec-o!request !m limit !!limit E=s !j >00"1/ ec-o "ativado o #loqueio a tentativa de ataque do tipo ping " ec-o "&N .................................................] &G ^" O [ ! 1rotecao contra 1ort Scanners ipta#les !N S0>NN"@ ipta#les !> S0>NN"@ !m limit !!limit E=s !j ?&Q !!log!level [ !!log!prefi "+C@"N>??(1ort Scanner)% " ipta#les !> S0>NN"@ !j $@&1 ipta#les !> CN1</ !p tcp !!tcp!flags >?? +CN,<@Q,1S5 !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags >?? N&N" !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags >?? >?? !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags >?? +CN,SBN !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags >?? SBN,@S/,>0G,+CN,<@Q !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags SBN,@S/ SBN,@S/ !i et-J !j S0>NN"@ ipta#les !> CN1</ !p tcp !!tcp!flags SBN,+CN SBN,+CN !i et-J !j S0>NN"@ ipta#les !> CN1</ !p udp !s J=J !i et-J !!dport HHTH\%HH\F\ !j @"("0/ ipta#les !> CN1</ !m state !!state CNY>?C$ !j @"("0/ ec-o "ativado o #loqueio a tentativa de ataque do tipo Scanners" ec-o "&N .................................................] &G ^" O O@otiamento e redirecionamento Oipta#les !t nat !> 1@"@&</CNQ !i et-E !p tcp !!dport IJ !j @"$C@"0/ !!to!port HEFI ipta#les !t nat !> 1&S/@&</CNQ !s EZF.E[I.J.J=E[ !j )>SR<"@>$"
ec-o "ativado o @otiamento" ec-o "&N .................................................] &G ^" O O?i#erando rrede interna ipta#les !> &</1</ !s EZF.E[I.J.J=E[ !j >00"1/ ipta#les !> CN1</ !s EZF.E[I.J.J=E[ !p udp !!dport \H !j >00"1/ ipta#les !> CN1</ !s EZF.E[I.J.E\ !p tcp !!dport FF !j >00"1/ ipta#les !t filter !> CN1</ !i lo !j >00"1/ O O)antendo a coneo ipta#les !> CN1</ !m state !!state "S/>,?CS5"$,@"?>/"$ !j >00"1/ ipta#les !> +&@N>@$ !m state !!state "S/>,?CS5"$,@"?>/"$ !j >00"1/ ipta#les !> &</1</ !m state !!state "S/>,?CS5"$,@"?>/"$ !j >00"1/ O O ,?&R<"> & R<" N>& S" "N0>CA> N>S @"Q@>S >0C)> ipta#les !> CN1</ !p tcp !!s*n !j $@&1 ipta#les !1 +&@N>@$ $@&1 ec-o "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" ec-o "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV" ec-o "V% 0>@@"Q>)"N/& ,") S<SS"$C$& %V" ec-o "V% $& C1/>,?"S %V" ec-o "UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV" ec-o "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" sera que isso7 uma coisin-a que estou tra#al-ando e seu artigo ta EJ8
a. ao rece#er o SBN, memori6a o C1 e porta de origem de quem enviou` #. devolve o SBN=>0G` c. quando rece#er o >0G, verifica se o C1 e porta con-ecido, se for, aloca os recursos do /01. $e maneira alguma8 ")emori6ar" o C1 e porta no significa alocar recursos7 1ara que o servidor ficasse realmente imune ao SBN flood, ele no deve alocar a#solutamente nada ao rece#er o SBN, mas mesmo assim, deve "lem#rar!se" dele ao rece#er o >0G final8 Csto poss2vel7
&u seja, em cada pacote a mquina devolve como N>0G o SN do outro anterior a E. >i est o "pulo do gato" da tcnica S*n coo3ie. Ruando o servidor escol-e o seu NS (no e emplo, FJJ), ele o fa6 atravs de uma funo -as- de HF #its, onde sero consideradas informa'es como C1=1orta do cliente e dados que s; o servidor tem. & servidor gera este n.mero e esquece8 (no aloca recursos, portanto). & fato que quando vier o .ltimo pacote, com o N>0GUFJE, o servidor refa6 o clculo do 5>S5,
pois nen-um dado foi alterado. @efa6endo o clculo ele encontra FJJ, que justamente o n.mero rece#ido menos um. &u o cliente leg2timo, pois completou o -ands-a3e ou um cara de muita sorte. &#serve que um atacante est impossi#ilitado de reali6ar o SBN flood, pois ele no rece#e o pacote SBN=>0G que tem o NS!SU FJJ. 0omo ele falsificou o C1 (ele precisa) este pacote foi l para o Cp falso que o atacante inventou. ?ogo o atacante no con-ece o valor de NS!S (FJJ) para poder devolv:!lo com mais um(FJE). ?-e resta adivin-ar ou que#rar o fraco -as- de HF #its. )as veja, ele fraco mas resolve. Se o atacante precisar de H segundos para que#rar, isto j uma eternidade para que o SBN flood realmente cause uma negao de servio.
6on/%uso
>taques de SBN flood so sofisticados, envolvem falsificao de n.meros Cps e diversas mquinas atuando em conjunto. Solu'es por fireKall so insuficientes. > utili6ao de fireKalls deveria sim ser empregada no sentido de evitar o ip spoofing, coisa que muitos provedores de acesso no fa6em. Se sou um provedor de acesso, por e emplo, e min-a fai a de ips EZF.E[I.J.J=E[ (estou usando ips privados por quest'es ticas), como eu dei o um assinante meu gerar um pacote com ip de origem sendo EXF.E[.\.T7 &ra, eu deveria, ao menos, ter uma regra #em simples no meu fireKall% ipta#les !> +&@N>@$ !i 1laca!>ssinantes !s 8 EZF.E[I.J.J=E[ !j $@&1 1ronto. Cmpedi que meus clientes faam ip spoofing. >- se todos os provedores do mundo fi6essem isto... & fato que a imensa maioria preocupa!se em no ser atacado, e raramente se preocupam em no permitir que seus clientes ataquem8
0&)& <S>@ & 51CNQ7 )e perguntaram... & -pingH fa6 tudo isto, tanto o Cp spoofing como o flood. 1ara testar voc: pode com serguna ver em S"< S"@YC$&@ o efeito. $ei e um tcpump ligado no servidor para ver os ips falsos gerados% tcpdump !i et-J !n port IJ You mostrar com o meu mesmo, local-ost% O -pingH !!rand!source !p IJ !S local-ost 51CNQ local-ost (lo EFX.J.J.E)% S set, TJ -eaders a J data #*tes lenUTT ipUEFX.J.J.E ttlU[T $+ idUJ sportUIJ flagsUS> seqUT KinUHFXZF rttUJ.F ms " o que eu peguei no tcpdump% O tcpdump !i lo !n port IJ JZ%EZ%EI.H\ITJX C1 EF.\X.FTE.E[T.FJZI S EFX.J.J.E.IJ% S ZHTTJ\\JE%ZHTTJ\\JE(J) Kin \EF JZ%EZ%EZ.H\ZEFE C1 EZX.EH[.FH\.X[.FJZZ S EFX.J.J.E.IJ% S EIXZHZFF[X%EIXZHZFF[X(J) Kin \EF
JZ%EZ%FJ.H[HE\H C1 E[I.EX[.EHT.FFF.FEJJ S EFX.J.J.E.IJ% S E\\\ITXZ[F%E\\\ITXZ[F(J) Kin \EF Yejam os ips de origem... >gora o -ping #em comportado, gera um SBN a cada segundo. >c-ou ele lento7 O -pingH !!flood !!rand!source !p IJ !S local-ost 51CNQ local-ost (lo EFX.J.J.E)% S set, TJ -eaders a J data #*tes -ping in flood mode, no replies Kill #e s-oKn +i6 isto e meu monitor de rede su#iu >& )>AC)&8 >precie com moderao.