rss
twitter
  •  

Netstat – Saiba o que está rolando em seu ambiente…

| Posted in Impressões, Linux, redes, segurança, software livre |

2


Saudações pessoal,

Que tal saber um pouco mais sobre o que lhe cerca virtualmente? Conexões de rede às quais sua máquina está ligada, tabelas de roteamento, estatísticas de interfaces, conexões mascaradas, multicasting, etc.. ?

Apesar de muitos conhecerem o netstat, poucos sabem que ele é capaz de tudo isso e mais um pouco. O netstat é sem sombra de dúvidas uma rica ferramenta que possui inúmeros comandos e combinações que sequer cabem em um artigo simples como este post.

A ideia vai ser apenas apresentar algumas opções que podem ser bem interessantes no dia a dia de um administrador de redes/sysadmin.

Vamos lá…

 

1. Listar todas as portas, incluindo portas que estão sendo escutadas e portas que não estão:

1.1 Para listar TODAS as portas, podemos utilizar o parâmetro -a:
[root@tuxcaverna ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost.localdo:55481 *:*                     LISTEN
tcp        0      0 *:60634                 *:*                     LISTEN
tcp        0      0 *:6881                  *:*                     LISTEN
tcp        0      0 172.16.1.6:46714        gru03s08-in-f20.1:https TIME_WAIT
tcp        0      0 172.16.1.6:40899        gx-in-f138.1e1:www-http ESTABLISHED
tcp        0      0 localhost.localdo:48742 localhost.localdo:55481 ESTABLISHED
tcp        0      0 172.16.1.6:48643        125-233-152-234.d:21990 TIME_WAIT
tcp        0      0 172.16.1.6:46717        gru03s08-in-f20.1:https TIME_WAIT
tcp        0      0 172.16.1.6:57293        apache2-fungi.:www-http TIME_WAIT
tcp        0      0 172.16.1.6:36444        gru03s05-in-f22.1:https ESTABLISHED
tcp        0      0 172.16.1.6:57659        gru03s06-in-f1:www-http ESTABLISHED
tcp        0      0 localhost.localdo:55481 localhost.localdo:48742 ESTABLISHED
tcp        0      0 172.16.1.6:50581        gru03s06-in-f23.1:https ESTABLISHED
tcp        0      0 172.16.1.6:39979        sn1msg1010828.phx.:msnp ESTABLISHED

Não coloquei a saída inteira, pois era bem extensa e ainda temos muitos parâmetros para ver. Onde existe XXX.XX.X.XX, obviamente, era o endereço IP que ocultei por puro protesto pela alta no preço do amendoim.

 

1.2 Para listar todas as portas UDP, utilizamos os parâmetros -au:

[root@tuxcaverna ~]# netstat -au

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:* udp 0 0 *:49119 *:* udp 0 0 *:mdns *:*

 

1.3 Para listar todas as portas TCP, utilizamos os parâmetros -at:

[root@tuxcaverna ~]# netstat -at
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN tcp 0 0 XXX.XX.X.XX:54293 gru03s06-in-f21.1:https ESTABLISHED tcp 1 0 XXX.XX.X.XX:58732 sn1msg3020104.sn1.:msnp CLOSE_WAIT

 

2. Listar os Sockets que estão no estado Listening ou escuta:

2.1 Para listar todas no estado Listening, utilizamos o parâmetro -l:

[root@tuxcaverna ~]# netstat -l

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 10443 @/tmp/.ICE-unix/1396 unix 2 [ ACC ] STREAM LISTENING 8262 /var/run/xdmctl/dmctl/socket unix 2 [ ACC ] STREAM LISTENING 8277 /var/run/xdmctl/dmctl-:0/socket

 

2.2 Para listar apenas as portas TCP no estado Listening, utilizamos os parâmetros -lt:

[root@tuxcaverna ~]# netstat -lt

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN

 

2.3 Para listar apenas as portas UNIX em estado Listening, utilizamos os parâmetrox -lx:

[root@tuxcaverna ~]# netstat -lx

Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 10443 @/tmp/.ICE-unix/1396 unix 2 [ ACC ] STREAM LISTENING 8262 /var/run/xdmctl/dmctl/socket unix 2 [ ACC ] STREAM LISTENING 8277 /var/run/xdmctl/dmctl-:0/socket

 

3. Apresentar as estatísticas para cada protocolo:

3.1 Para apresentar as estatísticas de todos os protocolos, utilizamos o parâmetro -s:

[root@tuxcaverna ~]# netstat -s

Ip: 98790 total packets received 54 with invalid headers 2 with invalid addresses 0 forwarded 0 incoming packets discarded 94778 incoming packets delivered 79070 requests sent out Icmp: 0 ICMP messages received 0 input ICMP message failed. ICMP input histogram: 0 ICMP messages sent 0 ICMP messages failed ICMP output histogram: Tcp: 2019 active connections openings 2 passive connection openings 10 failed connection attempts 161 connection resets received 14 connections established 88977 segments received 75703 segments send out 297 segments retransmited 0 bad segments received. 216 resets sent Udp: 2986 packets received 0 packets to unknown port received. 0 packet receive errors 3080 packets sent 0 receive buffer errors 0 send buffer errors

 

3.2 Para apresentar as estatísticas do protocolo TCP (ou) UDP, utilizamos os parâmetros -st (ou) -su:

[root@tuxcaverna ~]# netstat -st

Tcp: 2031 active connections openings 2 passive connection openings 10 failed connection attempts 164 connection resets received 10 connections established 89257 segments received 76010 segments send out 297 segments retransmited 0 bad segments received. 219 resets sent

ou

[root@tuxcaverna ~]# netstat -su

Udp: 3012 packets received 0 packets to unknown port received. 0 packet receive errors 3107 packets sent 0 receive buffer errors 0 send buffer errors

 

4. Apresentar o PID (ID do prcesso) e os nomes de programas:

4.1 Neste caso utilizamos o netstat com o parâmetro -p para receber a informação de “PID/Nome do Programa” na saída do netstat. Esta opção é muito útil para debugar e identificar qual programa está rodando em uma porta específica. O parâmetro -p pode ser combinado com demais parâmetros:

[root@tuxcaverna ~]# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 XXX.XX.X.X:6881         83-228-34-45.btc-:11729 SYN_RECV    -
tcp        0      0 XXX.XX.X.X:39508        200.123.194.16:www-http ESTABLISHED 30741/chromium
tcp        0      0 XXX.XX.X.X:36321        208.46.17.59:www-http   ESTABLISHED 30741/chromium
tcp        0      0 XXX.XX.X.X:57411        65.55.142.101:https     ESTABLISHED 3292/python2
tcp        0      0 XXX.XX.X.X:6881         bd3e1c77.virtua.c:59298 ESTABLISHED 20447/qbittorrent

 

5. Não resolver host, porta ou nome de usuário:

5.1 Utiliza-se o parâmetro -an quando não se deseja receber na saída do netstat informações de host, porta ou usuarios com seus respectivos nomes resolvidos. Ao invés destas informações virão números:

[root@tuxcaverna ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:61108           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6881            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:49155         0.0.0.0:*               LISTEN

 

5.2 Se você não quizer descartar as 3 informações de uma vez, pode optar por ocultar apenas uma em específico, conforme abaixo:

[root@tuxcaverna ~]# netstat -a –numericports

ou

[root@tuxcaverna ~]# netstat -a -numeric-hosts

ou

[root@tuxcaverna ~]# netstat -a numeric-users

 

6. Que tal ter uma saída contínua de informações em tempo real? Para isso usa-se o parâmetro -c, que vai atualizar as informações do netstat a cada segundo:

[root@tuxcaverna ~]# netstat -c
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 XXX.XX.X.X:57411        65.55.142.101:https     ESTABLISHED
tcp        0      0 XXX.XX.X.X:6881         bd3e1c77.virtua.c:59298 ESTABLISHED
tcp        1      0 XXX.XX.X.X:49920        sn1msg2010605.phx.:msnp CLOSE_WAIT
tcp        0      0 XXX.XX.X.X:45554        111-240-177-108.dy:8921 TIME_WAIT

 

7. Encontrar famílias de endereços não suportadas em seu sistema:

Utilizamos o parâmetro –verbose. Repare que nas últimas linhas do retorno teremos algo como:

[root@tuxcaverna ~]# netstat -c
netstat: no support for `AF IPX’ on this system.
netstat: no support for `AF AX25′ on this system.
netstat: no support for `AF X25′ on this system.
netstat: no support for `AF NETROM’ on this system.

 

8. Para apresentar informações de rotas do kernel utilizamos o parâmetro -r:

[root@tuxcaverna ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         172.16.1.1      0.0.0.0         UG        0 0          0 wlan0
172.16.1.0      *               255.255.255.0   U         0 0          0 wlan0

…ou, pode-se utilizar -rn para apresentar em formato numérico ao invés de nomes de hosts.

 

9. Para descobrir em qual porta um determinado programa está rodando utilizamos os parâmetros -ap:

[root@tuxcaverna ~]# netstat -ap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:61108                 *:*                     LISTEN      3452/wish
tcp        0      0 *:6881                  *:*                     LISTEN      20447/qbittorrent
tcp        0      0 localhost.localdo:49155 *:*                     LISTEN      4010/GoogleTalkPlug
tcp        0    269 172.16.1.3:58742        52.60.in-addr.arp:12814 FIN_WAIT1   -
tcp        0      0 172.16.1.3:6881         bd3e1c77.virtua.c:59298 ESTABLISHED 20447/qbittorrent

 

9.1 Se quizer especificar o programa, ao invés de o procurar em uma extensa lista, utilize um filtro com o grep da seguinte forma:

[root@tuxcaverna ~]# netstat -ap | grep chromium
unix  2      [ ACC ]     STREAM     LISTENING     252100   30741/chromium       /tmp/.org.chromium.Chromium.bSJLzX/SingletonSocket
unix  3      [ ]         STREAM     CONNECTED     309051   30741/chromium
unix  3      [ ]         STREAM     CONNECTED     308785   30741/chromium

 

9.2 Se ao invés de especificar o programa, você quizer especificar uma porta e saber o que está rodando nela, pode-se utilizar o filtro do grep da seguinte forma:

[root@tuxcaverna ~]# netstat -an | grep ‘:80′

 

10. Para terminar, podemos utilizar o parâmetro -i para listar nossas interfaces de rede:

[root@tuxcaverna ~]# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500 0         0      0      0 0             0      0      0      0 BMU
lo    16436 0       662      0      0 0           662      0      0      0 LRU
wlan0  1500 0    157377      0      4 0        133487      0      0      0 BMRU

Se desejar informações mas detalhadas sobre cada interface, pode-se utilizara combinação de parâmetros -ie:

[root@tuxcaverna ~]# netstat -ie
Kernel Interface table
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1
ether a4:ba:db:d7:41:c0  txqueuelen 1000  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
device interrupt 47  base 0xc000

Happy Hacking…

Dia Livre – Inscrições e grade do evento

| Posted in cultura hacker, Dia Livre, Impressões, Linux, redes, segurança, software livre, Tux-ce |

0

É hora de se inscrever no Dia Livre!

Gostaria de comunicar que a grade para o 1º Dia Livre já foi fechada e liberada.

Neste sábado estarei ministrando a palestra “Software Livre e Cultura Hacker: Tenha ética e ganharás respeito” na Faculdade Farias Brito durante o 1º Dia Livre.

Segue grade do encontro:

Horário Palestra Palestrante
08:00
- 08:10
Abertura -
08:10
- 09:00
Bacula
- Solução livre de Backup
Diego
Monte
09:10
- 10:00
Criando
soluções automatizadas com ShellScript
Rafael
de Carvalho Farias
10:00
- 10:20
CoffeeBreak -
10:30
- 11:20
Software Livre e a Cultura Hacker: Tenha Ética e Ganharás Respeito Marcelo Cavalcante
11;30
- 11:50
Sorteio
de brindes e encerramento
-

Quando?

23 de Julho, Sábado – A partir das 08:00

Onde?

Faculdade Farias Brito
Rua Castro Monte, 1364 Varjota – Fortaleza, CE

Serão realizados dois sorteios ao final do encontro:

1 camisa da Tux-CE;

1 livro: The Art of Community – O’Reilly

Nos vemos lá!

Lançada a primeira edição da Revista Segurança Digital

| Posted in cultura hacker, Impressões, Linux, Literatura, redes, segurança, Segurança Digital, software livre |

2

 

Saudações pessoal.

Para quem não sabe, hoje é o lançamento da primeira edição da Revista Segurança Digital.

Segurança Digital é o mais novo projeto no qual estou engajado e espero poder ajudar no que for possível para a constante melhoria do projeto.

É com grande satisfação que estamos fazendo o lançamento oficial de nosso projeto com a primeira edição da Revista Segurança Digital. Neste mês de Julho a revista aborda aspectos mais genéricos em relação à Segurança da Informação como um todo. Desde as técnicas de FootPrinting e Varredura para identificação de vulnerabilidades e possíveis brechas até estratégias e mecanismos de Enumeração para reconhecimento de ambientes.

Com a matéria sobre Enumeração explicamos a importância de se fazer um mapeamento completo do alvo, que consiste em descobrir o máximo de informações possíveis sobre o mesmo, desde sistema operacional até mesmo versões de anti-vírus, firewall, aplicativos instalados, etc.

Recentemente todos perceberam que vários ataques de DoS e DDoS foram realizados à sites do Governo, Petrobras, dentre outros. Um artigo com uma breve explicação sobre como funcionam estes ataques é apresentado como forma de ilustrar de forma básica o funcionamento de um DoS/DDoS.

Resolvemos fazer uma breve apresentação sobre o BackTrack, uma distribuição Linux voltada para testes de segurança. Nesta matéria apresentamos alguns de seus recursos e ferramentas que podem ser utilizadas no dia-a-dia de qualquer profissional de Segurança da Informação para facilitar suas tarefas e análises, bem como auxiliar em projetos de PenTesting.

Aproveitamos para informar sobre a mais nova parceria realizada entre o Projeto Segurança Digital e a empresa de consultoria e soluções livres 4Linux que é líder no mercado no que diz respeito à soluções de tecnologia com ferramentas livres bem como treinamentos especializados nos mais diversos segmentos da computação como redes, bancos de dados, segurança, programação, dentre outros.

Não deixe de fazer o download desta edição e conferir o resultado desta força tarefa inicial.

Esperamos que gostem.

Rootkit! Esse bicho morde? Proteja-se!

| Posted in Arch Linux, cultura hacker, Impressões, Linux, redes, segurança, software livre |

5

Você sabe o que é rootkit?

Nunca vi, nem comi, eu só ouço falar!

É um vírus? É um trojan? É um spyware? Não, é um rootkit mesmo.

A verdade é que ainda não existe um consenso em relação ao que o rootkit é de fato. Muitos dizem que é um tipo de vírus, alguns dizem que é um trojan, como você chamaria? Eu prefiro chamar de malware, que, ao pé da letra, seria um termo utilizado para algum aplicativo contendo código malicioso. o.O Acho que seria um meio termo aceitável para que possamos utilizar como base.

Mas esse bicho morde? É de comer?

Bom, em tese um Rootkit é um tipo de malware, como expliquei acima, cuja principal intenção é se camuflar, impedindo que seu código seja encontrado por qualquer antivírus.

Teoricamente, é exatamente isto que ele tenta fazer. Passar despercebido. De fato a grande maioria dos antivírus não são capazes de rastrear Rootkits justamente por conta do seu comportamento. É aí que surgiram ferramentas especializadas neste tipo de busca. Alguns antivírus, os mais caros, já agregam excelentes ferramentas para buscar rootkits. Mas, como eles conseguem se camuflar tão bem?

Estas aplicações, rootkits, têm a capacidade de interceptar as solicitações feitas ao sistema operacional, podendo alterar o seu resultado.

Imagine que você está utilizando sua máquina e seu sistema operacional solicita a leitura ou abertura de um determinado arquivo, podendo ser a seu mando ou mesmo do antivírus, por exemplo, o rootkit intercepta os dados que são requisitados e faz uma filtragem dessa informação, deixando passar apenas o que ele deseja, ou seja, código não infectado. E o que acontece? O antivírus ou qualquer outra ferramenta ficam impossibilitadas de encontrar o arquivo malicioso ou o código, dependendo do caso.

Não é incomum encontrar o Rootkit como não apenas uma aplicação, mas um conjunto de aplicações ou, como também chamamos, toolkit.

Resumidamente poderíamos dizer que é um programa com código malicioso que busca se esconder de softwares de segurança e do usuário utilizando diversas técnicas avançadas de programação para tal.

Geralmente escondem suas chaves nos registros do sistema operacional e escondem seus processos no gerenciador de tarefas, o que torna uma missão quase impossível para um usuário identificar por conta própria. Outra prática comum de quem escreve rootkits é fazer com que eles se escondam em drivers de hardware, que são arquivos de sistema fundamentais para que o sistema operacional funcione corretamente com seus dispositivos.

O nome RootKit é por conta da função para a qual o mesmo é desenvolvido. Primeiramente ele é um kit de funcionalidades e códigos maliciosos cujo objetivo é se infiltrar nos sistemas de forma silenciosa e despercebida, geralmente liberando um  *backdoor para que o invasor possa posteriormente acessar o sistema infectado com privilégios de super usuário ou usuário administrador (root).

Para quem nunca ouviu falar em backdoors, a explicação pode ter parecido um tanto quanto confusa, portanto aqui vai a nota de rodapé: Backdoor é, assim como na tradução ao pé da letra, uma porta dos fundos. Uma falha de segurança intencional que possibilita a invasão do seu sistema de forma que o invasor possa ter este acesso e controle com um mínimo de trabalho.

Sem mais papo furado, vamos conhecer algumas ferramentas que buscam rootkits em seu Linux.

RKHUNTER

A primeira ferramenta que vou apresentar se chama rkhunter, que é a minha favorita.

Se, assim como eu, você for usuário do Arch Linux, poderá encontrar o rkhunter no AUR através deste link.

A instalação é simples e segue o padrão de qualquer instalação a partir do AUR, conforme passos abaixo:

1- Descompacte o arquivo:

[kalib@tuxcaverna downloads]$ tar -xvzf rkhunter.tar.gz

2- Acesse o diretório criado:

[kalib@tuxcaverna downloads]$ cd rkhunter/

3- Execute o PKGBUILD para criação do pacote em si:

[kalib@tuxcaverna rkhunter]$ makepkg

4- Com o pacote criado, basta instalar:

[kalib@tuxcaverna rkhunter]$ sudo pacman -U rkhunter-1.3.8-1-any.pkg.tar.xz

Feito.

Seu rkhunter está pronto para ser utilizado, mas como toda e qualquer aplicação de varredura, como antivírus, por exemplo, é sempre recomendado atualizar sua base de dados antes de iniciar a busca, portanto digite o seguinte para atualizar a base com as propriedades dos arquivos existentes:

# rkhunter –propupd

Em seguida é a hora de atualizar a base de dados do rkhunter em si:

# rkhunter –update

Agora, vamos vasculhar o sistema:

# rkhunter -c

Você terá uma listagem das checagens parecida com esta:

Perceba que é tudo apresentado de forma simples e objetiva.

No final da checagem ele gera um arquivo onde ele armazena todas as informações que ele registrou bem como lhe aponta uma descrição dos resultados da busca.

 

TIGER

Esta será a nossa segunda ferramenta.

O Tiger é uma ferramenta de segurança que não pensa tanto na aparência, portanto não espere uma tela tão amigável e colorida quanto a do rkhunter. ;]

A instalação da mesma no Arch Linux também se dá através do pacote do AUR que pode ser encontra neste link.

A instalação segue o mesmo procedimento que utilizamos no rkhunter, conforme abaixo:

[kalib@tuxcaverna downloads]$ tar -xvzf tiger.tar.gz

[kalib@tuxcaverna downloads]$ cd tiger/

[kalib@tuxcaverna tiger]$ makepkg

[kalib@tuxcaverna tiger]$ sudo pacman -U tiger-3.2.3-2-x86_64.pkg.tar.xz

Finalizado. Para executar, basta rodar:

# tiger

Ele iniciará a busca e lhe trará uma interface como esta:

Assim como o rkhunter, no ato de finalização ele irá gerar um arquivo com o relatório da checagem. Ele lhe informará o caminho do arquivo, mas provavelmente será em /var/log/tiger/.

 

CHKROOTKIT

Agora vamos para a terceira e última ferramenta deste post.

Para usuário Arch, desta vez a instalação é ainda mais simples do que as duas anteriores, visto que o pacote já se encontra nos repositórios do pacman.

[kalib@tuxcaverna ~]$ sudo pacman -S chkrootkit

Instalado!

Assim como o Tiger, o chkroot também possui uma interface simples sem cores ou enfeites, conforme pode ser visto abaixo:

Apesar de não ser colorida e enfeitada, é uma interface bem simples e de fácil entendimento, concordam?

Claro, não existem apenas estas ferramentas para busca de rootkits e códigos maliciosos, mas levaria muito tempo para escrever sobre todos ou ao menos a maioria.

No mais, acho que já é um bom começo para um entendimento básico sobre o que é esse tal Rootkit e o que esse bicho faz.

Com estas ferramentas as chances de algum rootkit passar despercebido em seu ambiente Linux já são bem limitadas.

Abraços!