Security Hacks: Linux & BSD
Neste artigo abordaremos alguns "Security Hacks" para sistemas Linux e *BSD, ou seja, implementações simples que irão ajudar você a melhorar a segurança de seus servidores. Vamos conhecer algumas dicas matadoras e softwares que farão a diferença nesta empreitada.
Parte 4: OpenBSD: OS fingerprint Fuzzy
Bom, não irei me ater em explicar a definição de fingerprinting aqui no artigo, pois o conceito é muito difundido na internet, quem quiser conhecer mais sobre este conceito por favor fique à vontade de parar a leitura e fazer uma breve busca no Google.
Vou dar uma idéia esdrúxula sobre o conceito. Finger print significa impressão digital, todo sistema operacional tem o seu fingerprint, que irá revelar o tipo de sistema operacional em questão.
Existem ferramentas que coletam essas informações que serão muito úteis para o atacante em potencial. Um das mais difundidas ferramentas e de mais fácil uso é o "nmap", escrito pelo sr. Fyodor ( www.insecure.org ).
Vamos verificar um ataque coletando o fingerprint do sistema:
# nmap -O test.rootsec-labs.net
Starting nmap 3.45 ( www.insecure.org/nmap ) at 2004-06-02 at 15:00 MST
Interesting ports on test.rootsec-labs.net
(The 1653 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
13/tcp open daytime
22/tcp open ssh
37/tcp open time
113/tcp open auth
Device type: general purpose
Running: OpenBSD 3.X
OS details: OpenBSD 3.0 or 3.3
Nmap run completed -- 1 IP address (1 host up) scanned in 24.873 seconds
Como podemos observar, o nmap coletou o fingerprint do sistema e nos retornou o sistema operacional que o servidor alvo utilizava, no caso um OpenBSD.
Agora o que poderíamos fazer em nosso OpenBSD para bloquear essa técnica? Vamos adicionar algumas regras ao nosso pf.
Para bloquear vamos adicionar algumas regras como essas a seguir em nosso /etc/pf.conf:
Vou dar uma idéia esdrúxula sobre o conceito. Finger print significa impressão digital, todo sistema operacional tem o seu fingerprint, que irá revelar o tipo de sistema operacional em questão.
Existem ferramentas que coletam essas informações que serão muito úteis para o atacante em potencial. Um das mais difundidas ferramentas e de mais fácil uso é o "nmap", escrito pelo sr. Fyodor ( www.insecure.org ).
Vamos verificar um ataque coletando o fingerprint do sistema:
# nmap -O test.rootsec-labs.net
Starting nmap 3.45 ( www.insecure.org/nmap ) at 2004-06-02 at 15:00 MST
Interesting ports on test.rootsec-labs.net
(The 1653 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
13/tcp open daytime
22/tcp open ssh
37/tcp open time
113/tcp open auth
Device type: general purpose
Running: OpenBSD 3.X
OS details: OpenBSD 3.0 or 3.3
Nmap run completed -- 1 IP address (1 host up) scanned in 24.873 seconds
Como podemos observar, o nmap coletou o fingerprint do sistema e nos retornou o sistema operacional que o servidor alvo utilizava, no caso um OpenBSD.
Agora o que poderíamos fazer em nosso OpenBSD para bloquear essa técnica? Vamos adicionar algumas regras ao nosso pf.
Para bloquear vamos adicionar algumas regras como essas a seguir em nosso /etc/pf.conf:
set block-policy return
block in log quick proto tcp flags FUP/WEUAPRSF
block in log quick proto tcp flags WEUAPRSF/WEUAPRSF
block in log quick proto tcp flags SRAFU/WEUAPRSF
block in log quick proto tcp flags /WEUAPRSF
block in log quick proto tcp flags SR/SR
block in log quick proto tcp flags SF/SF
block in log quick proto tcp flags FUP/WEUAPRSF
block in log quick proto tcp flags WEUAPRSF/WEUAPRSF
block in log quick proto tcp flags SRAFU/WEUAPRSF
block in log quick proto tcp flags /WEUAPRSF
block in log quick proto tcp flags SR/SR
block in log quick proto tcp flags SF/SF
Pacotes que acionem estas regras pode ser facilmente analisados usando o tcpdump, usando os seguintes comandos:
# ifconfig pflog0 up
# tcpdump -n -1 pflog0
Bom, agora depois de adicionadas as regras ao nosso servidor, vamos fazer o teste para verificar se o nmap consegue pegar o fingerprint:
# nmap -O test.rootsec-labs.net
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-12-02 22:56 MST
Interesting ports on teste.rootsec-labs.net
(The 1653 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
13/tcp open daytime
22/tcp open ssh
37/tcp open time
113/tcp open auth
No exact OS matches for host (If you know what OS is running on it, see
http://www.insecure.org/cgi-bin/nmap-submit.cgi).
TCP/IP fingerprint:
SInfo(V=3.48%P=i686-pc-linux-gnu%D=12/2%Time=3FCD7B3F%O=13%C=1)
TSeq(Class=TR%IPID=RD%TS=2HZ)
T1(Resp=Y%DF=Y%W=403D%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=Y%DF=Y%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=Y%W=0%ACK=O%Flags=AR%Ops=)
T4(Resp=Y%DF=Y%W=4000%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
Nmap run completed -- 1 IP address (1 host up) scanned in 27.028 seconds
Como podemos ver, o nmap se confundiu e nos liberou um Gnu/Linux entre as fingerprints.
Recomendo uma leitura aprofundada do assunto para utilizar técnicas como esta em outros sistemas.
muito bom... até o proximo