Aumentando Segurança Linux - I Parte (Conceitos e Praticas)
Autor: Paulo Cesar | Publicado: 2014-04-02T02:32:00-07:00


OBS-1:&nbsp;Todos os dados e exemplos descritos neste arquivo possuem somente

&nbsp; &nbsp; &nbsp;propositos educacionais, o autor nao se responsabiliza pelo mau uso

&nbsp; &nbsp; &nbsp;dos mesmos.


Continuando...



&nbsp;&nbsp;***********************************

&nbsp; * &nbsp; &nbsp;Conceitos e Praticas - I Parte&nbsp;&nbsp;*

&nbsp; ***********************************





-------------------------------- ÍNDICE ----------------------------------



1. Introdução

2. Problemas de Segurança

&nbsp; &nbsp;2.0 &nbsp;- Escaneamento

&nbsp; &nbsp;2.1 &nbsp;- Brutal Force

&nbsp; &nbsp;2.2 &nbsp;- Senhas &nbsp;&nbsp;

&nbsp; &nbsp;2.3 &nbsp;- Overflows&nbsp;

&nbsp; &nbsp;2.4 &nbsp;- Vírus&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------------------------&gt; próximos artigos

&nbsp; &nbsp;2.5 &nbsp;- DoS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;---------------------------&gt; próximos artigos

&nbsp; &nbsp;2.6 &nbsp;- IP Spoof&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------------------------&gt; próximos artigos

&nbsp; &nbsp;2.7 &nbsp;- Format Bugs&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------------------------&gt; próximos artigos

&nbsp; &nbsp;2.8 &nbsp;- Backdoors&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;---------------------------&gt; próximos artigos

&nbsp; &nbsp;2.9 &nbsp;- Outros&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;---------------------------&gt; próximos artigos

3. Terminando

&nbsp; &nbsp;3.1 &nbsp;- Links e Referencias.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------------------------&gt; próximos artigos

&nbsp; &nbsp;3.2 &nbsp;- Considerações Finais.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;---------------------------&gt; próximos artigos




---------------------------------------------------------------------------



---------------

1 - Introducao |

---------------



Diferente dos demais artigos, neste, eu me limitarei apenas a descrever os

assuntos por auto, da forma mais básica possível. Não pretendo entrar na

parte de programação, de modo que, os pre-requisitos para o total

entendimento deste artigo, se limitam apenas a um conhecimento básico do Linux.&nbsp;

A distribuição do linux a ser trabalhada é o famoso Slackware , em sua kernel original.

Os conceitos e ferramentas descritas podem ser expansíveis a outras distribuições,

Kernel e implementações. Este é mais um artigo onde o publico alvo é o pessoal newbie(iniciante)

&nbsp;fuçador, e o meu interesse em ensinar as coisas elementares aqui, não é prover discussão

de segurança, mas apenas informar a respeito de tais aspectos e e um futuro próximo,&nbsp;

aumentar a discussão a respeito de furos em tais conceitos e aspectos.



Muita gente havia me pedido p/ descrever o básico sobre alguns conceitos

envolvidos no hacking, de modo que me aproveitarei deste artigo p/&nbsp;


procurar descrever a tais estes conceitos.




--------------------------

2. Problemas de Seguranca |

--------------------------



Os conceitos são muito abrangentes, de modo que descrever por menos a

respeito de cada um levaria séculos e encheria alguns milhões de linhas.

Meu intuito é somente descrever aspectos básicos de tais conceitos e ---------

demonstrar que uma rede ou um pc usando Linux pode ser configurado de modo

a aumentar um pouco mais a segurança, não que isto queira dizer que de

fato o linux esta seguro, pelo contrário, o Linux, assim como todos os

SOs, sem exceção, tem se mostrado problemático em diversos aspectos de

segurança. Cabe a cada administrador, fuçador, usuário de linux procurar

melhorar a situação de sua rede ou pc.



Todas as tecnicas abordadas aqui serão as mais conhecidas e utilizadas.

não pretendo neste artigo inicial avançar em esquemas mais complexos

envolvendo as técnicas, de modo que, os exemplos e esquemas descritos

visam, quando muito, a defesa de uma rede contra script kiddies! Sim,

É pensando neles(os script kiddies) que eu faço este artigo!&nbsp;

Espero que&nbsp;muitos administradores de rede venham a ler este documento e procurem&nbsp;informar-se mais a respeito das técnicas e defesas contra essas técnicas&nbsp;que irei descrever, pois deste modo, espero que venhamos a ter uma

considerável diminuição do número de script kiddies!!&nbsp;



Jaá que a Comunidade de segurança não faz seu papel, cabe a cada um de

nós, procurar discutir mais sobre tais assuntos e principalmente sobre

a diminuição de script kiddies.



2.0 - Scaneamento

------------------



Uma rede geralmente e alvo de um scaneamento antes de ser invadida.

Apesar&nbsp;de existirem diversas técnicas hoje disponíveis, se uma porta esta aberta, &nbsp;é&nbsp;quase sempre possível que um atacante obtenha informações a respeito da porta.

Um scaneamento é o responsável direto pela obtenção de informações&nbsp;

da rede por parte de script kiddies.

Uma vez que um scanner obteve informações&nbsp;cruciais da rede, um atacante iraá se concentrar em determinados serviços

que Entao rodando na rede.

&nbsp;E muito comum, um script kiddie executar um&nbsp;scaneamento em uma rede, obter informações dos serviços e em seguida ir

atrás de um exploit p/ exploitar os serviços que ele descobriu usando o

scanner.



Existem diversas ferramentas capazes de executar um scaneamento em uma

rede, sendo algumas delas amplamente conhecida, tais como NMAP para

varredura de portas, VETESCAN e SSCAN2K para procura de vulnerabilidades

em serviços, WHISKER para procura de vulnerabilidades num servidor Web,

dentre muitos outros. Alguns são capazes de identificar qual Sistema

Operacional estal sendo executado em uma rede, tais como NMAP, o antigo

QUESO, e o WINFINGERPRINT, sendo que estes se utilizam de uma técnica

conhecida como "fingerprint".

Tambem necessitamos destacar que existem&nbsp;scanners especificos, que procuram obter informações especificas, como

a versao do ftp, do bind e de algum outro servico.Existem ainda diversos

outros tipos de scanners, tais como ICMP Scanner, Traceroutes e Firewalk,

onde tais conceitos sao mais complexos.



* Tentando Proteger:



Existem varias ferramentas que procuram evitar que um atacante obtenha

informacoes sobre portas e servicos da rede em questao.Atualmente eh

dificil dizer de fato quais sao os mais usados em ambiente Linux, pois

varia muito e a eficacia dos mesmos tambem eh limitada.Mas vale destacar

que se um atacante estah usando uma ferramenta como NMAP para obtencao

de portas, o uso da ferramenta PortSentry pode ser eficaz contra este

atacante.O PortSentry eh capaz de barrar uma rota e deixar o atacante

sem obter informacoes de portas e servicos de uma rede.No link abaixo

encontramos o PortSentry:



http://www.psionic.com/tools/portsentry-1.0.tar.gz



No que se refere a tecnica de fingerprint, recentemente saiu um programa

feito em LKM que eh muito interessante! Ele eh capaz de pegar dados do

proprio Nmap para "emular" um TCP/Stack de outro sistema operacional.

Testei ele com sucesso em minha box e veja o que o nmap captou:



# ./parser Windows

Windows NT4 / Win95 / Win98 ? [y/N] y

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Finger Print Fucker

Idea and lkm by |CyRaX| of Packet Knights Crew (www.pkcrew.org)

Parser for the nmap's file by FuSyS of S0ft Project (www.s0ftpj.org)

Comments to cyrax@pkcrew.org

THIS SOFTWARE IS SISTERWARE! REMEBER TO REGISTER!

See copyright info in FingerPrintFucker.c



Depois no Nmap:



# nmap -O localhost



Starting nmap V. 2.54BETA1 by fyodor@insecure.org ( www.insecure.org/nmap/)

Interesting ports on localhost (127.0.0.1):

(The 1519 ports scanned but not shown below are in state: closed)

Port &nbsp; &nbsp; &nbsp; State &nbsp; &nbsp; &nbsp; Service

110/tcp &nbsp; &nbsp;open &nbsp; &nbsp; &nbsp; &nbsp;pop-3

143/tcp &nbsp; &nbsp;open &nbsp; &nbsp; &nbsp; &nbsp;imap2

512/tcp &nbsp; &nbsp;open &nbsp; &nbsp; &nbsp; &nbsp;exec

513/tcp &nbsp; &nbsp;open &nbsp; &nbsp; &nbsp; &nbsp;login

514/tcp &nbsp; &nbsp;open &nbsp; &nbsp; &nbsp; &nbsp;shell

6000/tcp &nbsp; filtered &nbsp; &nbsp;X11



TCP Sequence Prediction: Class=random positive increments

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Difficulty=846195 (Good luck!)

Remote operating system guess: Windows NT 4 SP3



Como podemos notar acima, ele enganou direitinho!! Poderiamos ateh colocar

um OpenBSD, ou mesmo um VAX fazendo com isso que metade dos script kiddies

fossem desencorajados de invadir o nosso sistema!No link abaixo voce pode

obter esta ferramenta:



http://www.pkcrew.org/



Quanto aos scanners de vulnerabilidade, eles sao atualizados

constantemente, mas a versao publica deles eh capaz de fornecer a voce um

meio em que se basear.Atualizando as versoes ou imprimindo banners&nbsp;

diferentes das versos de servicos bugados, suas chances de "enganar" um

atacante de procurar se utilizar de tais meios eh consideravel.O Blind_Bard

descreveu alguns esquemas no forum do Unsekurity Scene p/ alteracao de

banners do Sendmail e do Apache.Um outro meio de impedir que tais ataques

venham a ser bem sucedidos eh executar uma ferramenta anti-portscan,

estilo PortSentry, jah descrita.A maioria dos scanners de vulnerabilidade

necessitam rodar em TCP Socks para obter os banners dos servicos, de modo

que se torna trivial barrar um scaneamento deste tipo.



O WHISKER e demais scanners de WEB e CGIs tambem podem ser detectados.

Atraves de uma ferramenta de IDS, eh possivel em determinados casos, se

detectar uma solicitacao de paginas WEB, mas isso eh algo que poderah ser

muito trabalhoso.O ideal neste caso eh procurar conhecer bem o servidor

WEB da rede e alterar o trivial, ou seja, procurar ter uma atencao

redobrada no que diz respeito a diretorios criticos, tais como /cgi-bin,

/scripts e etc.Uma ferramenta IDS como o SNORT eh capaz de detectar

tais scaneamentos.No SNORT a regra abaixo eh capaz de normalizar o trafego

WEB, convertendo caracteres de "escape" para sua representacao em ASCII.O

WHISKER se utiliza muito desta tecnica para obter informacoes de uma rede,

tais como usar %20 ao inves de espaco, e a regra abaixo eh capaz de&nbsp;

detectar um scaneamento deste tipo:



preprocessor http_decode: 80 443 8080



O SNORT pode ser obtido em:



http://www.snort.org/Files/snort-1.6.3.tar.gz





2.1 - Brutal Force

-------------------



Ataques de Brutal Force sao mais comuns do que se imagina! Uma rede bem

atualizada tende a ser vitima de tais ataques, pois, se um kiddie nao

consegue achar exploits para os servicos atualizados da rede, entao ele

logo passarah a tentar um Brutal Force para tentar obter acesso a rede

alvo.Um Brutal Force nada mais eh do que um metodo de ataque que visa

obter contas e senhas validas em determinados servicos, principalmente a

obtencao de uma shell valida.Uma vez obtida uma conta valida em algum

servico, um atacante poderah se aproveitar de tal conta p/ obter maiores

privilegios(inclusive buscar root).



Evitar ataques de Brutal Force nao eh tao dificil hoje em dia! As

ferramentas de IDS estao melhorando e a medida que o tempo passa, se

torna mais comum detectar ataques de tais tipo.Mas no entanto, abordaremos

algumas formas para se evitar ataques de tais tipo tambem nos daemons.

Vejamos abaixo algumas configuracoes que poderao servir p/ dificultar

alguns conhecidos ataques de Brutal Force:



* Sendmail:



Os comandos "vrfy" e "expn" sao velhos conhecidos da comunidade fucadora,

de modo que, existem algumas dezenas de programas disponiveis capazes de

obter usernames validos em uma rede alvo.Abaixo seguem exemplos do uso

de tais comandos:



# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 elvento.elvento.org ESMTP Sendmail 8.9.3/8.9.3; Mon, 27 Nov 2000

21:40:09 -0300

vrfy root

250 

expn root

250 

vrfy nashleon

250 

expn nashleon

250 

vrfy jkslkjakfjkaf

550 jkslkjakfjkaf... User unknown



Como voce pode notar, os dois comandos nos retornam usuarios validos.De

posse de tais usuarios ou logins, fica mais facilitado a implementacao de

outras tecnicas, tais como o envio de um trojan p/ uma conta de um usuario,

e mesmo um brutal force em um servico POP ou FTP.



O sendmail nos permite "retirar" o uso de tais comandos.Tudo que

necessitamos fazer eh alterarmos a linha:



O PrivacyOptions=authwarnings



para:



O PrivacyOptions=authwarnings,novrfy,noexpn



Use um 'grep -n "Privacy"' em /etc/sendmail.cf para saber em qual linha

se encontra esta diretiva de configuracao.Apos setarmos a configuracao e

reiniciarmos o daemon,podemos ver abaixo como ficaria se tentassemos

ataca-lo:



# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 elvento.elvento.org ESMTP Sendmail 8.9.3/8.9.3; Mon, 27 Nov 2000

21:44:37 -0300

vrfy root

252 Cannot VRFY user; try RCPT to attempt delivery (or try finger)

expn root

502 Sorry, we do not allow this operation



Como podemos ver, este eh um esquema eficiente, mas existe ainda outra

tecnica, a do "RCPT TO" que tambem pode ser usada para se obter logins

validos.No entanto, ainda nao encontrei uma "receita de bolo" para se

retirar isto, ou mesmo, ainda nao sei se esta eh uma opcao essencial de

alguns daemons Sendmail.



* FTP e POP



Um atacante poderia obter logins validos usando a tecnica descrita acima

(sendmail), mas apenas logins validos nao compensa.O que de fato ele

pretende eh invadir a rede, e se puder obter um login e uma senha validos,

ele terah entao dado um grande passo visando invadir o sistema! Servidores

de FTP e de POP sao quase sempre abertos ao publico! Ou seja, na maioria

das redes, qualquer um em qualquer parte do mundo pode acessar um servidor

FTP e POP qualquer.Dependendo da necessidade da sua rede, voce poderia

impedir o acesso a tais servidores de computadores de fora da sua classe

IP.Para isso bastaria usar uma ferramente estilo TCP-Wrapper:



http://packetstorm.securify.com/UNIX/IDS/tcp_wrappers_7.6.tar.gz



Apenas enderecos permitidos por voce poderiam ter acesso aos seus

servidores.Isto por sih soh nao impedia voce de sofrer um ataque do tipo

Brutal Force, mas diminuiria e muito as tentativas de fora.E como um&nbsp;

atacante teria que estar dentro da sua rede interna, logo, ficaria mais

facil detecta-lo e ateh mesmo saber quem eh.Voce poderia tambem usar um

firewall, mas o conceito de um firewall pode ser falho em alguns casos,

e se o seu firewall nao te proteger contra ataques de fragmentacao de

pacotes, voce estarah muito vulneravel!



Se vai realmente permitir acesso "anonymous" a um servidor de FTP(ProFTPd),

faca com que este servidor soh permita acesso anonymous e jamais acesso a

uma conta valida! Deste modo, um ataque estilo brutal force em seu servidor

de FTP anonimo seria em vao!