Um pouco de SysAdmin

linux, Telefonia IP, *BSD's, Segurança

linux! você está seguro?

with 14 comments

Muitas vezes escutamos pessoas dizendo que estão 100% seguras com Linux (entende-se com uma instalação padrão, sem nenhuma preocupação com alguns conceitos básicos de segurança).

Bom vou tentar contar um pequeno caso (engraçado) para provar que nem sempre essa ideologia de segurança é verdadeira, só porque se está utilizando Linux.

A aposta:

Um amigo que vou chamar de “Zé”, resolveu lançar uma aposta desafiando o acesso de seu desktop através da rede (ssh).

Dizendo que seria impossível pois seu desktop estava rodando Linux (Ubuntu  9.10) e sua senha era segura e também o acesso de root só era possível através do comando sudo para o seu usuário.

O acesso:

A primeiro momento resolvi testar algumas senha padrões para o seu usuário do “Zé” porem sem sucesso.

A segunda coisa que me passou pela cabeça seria um bruteforce, porem antes de usar algo tão deselegante, me passou pela cabeça de ter algum usuário padrão com uma senha que já conhecia no sistema Linux do “Zé”.

Sim, consegui acesso com um usuário padrão, mais ainda tinha a questão senha do usuário do “Zé”, pois só é permitido subir para root no sistema dele com sudo através do usuário do “Zé”.

Antes de mais nada resolvi dar uma olhada no Linux do “Zé”, vamos ver o resultado:

usuario@maquinadoze:~$ uname -a
Linux maquinadoze 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux
usuario@maquinadoze:~$

usuario@maquinadoze:~$ netstat -ntlpa
(Nem todos os processos puderam ser identificados, informações sobre processos
de outrem não serão mostrados, você deve ser root para vê-los todos.)
Conexões Internet Ativas (servidores e estabelecidas)
Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado       PID/Program name
tcp        0      0 0.0.0.0:47336           0.0.0.0:*               OUÇA       –
tcp        0      0 0.0.0.0:41740           0.0.0.0:*               OUÇA       –
tcp        0      0 0.0.0.0:111             0.0.0.0:*               OUÇA       –
tcp        0      0 0.0.0.0:22              0.0.0.0:*               OUÇA       –
tcp        0      0 127.0.0.1:631           0.0.0.0:*               OUÇA       –
tcp        0      0 127.0.0.1:25            0.0.0.0:*               OUÇA       –
tcp        0      0 10.192.250.206:22       10.192.250.194:44984    ESTABELECIDA –
tcp       15      0 10.192.250.206:41740    10.192.250.194:47957    ESPERANDO_FECHAR –
tcp       19      0 10.192.250.206:41740    10.192.250.194:47962    ESPERANDO_FECHAR –
tcp       19      0 10.192.250.206:41740    10.192.250.194:47963    ESPERANDO_FECHAR –
tcp        1      0 10.192.250.206:41740    10.192.250.194:47955    ESPERANDO_FECHAR –
tcp        0      0 10.192.250.206:831      10.192.250.138:2049     ESTABELECIDA –
tcp6       0      0 :::80                   :::*                    OUÇA       –
tcp6       0      0 :::22                   :::*                    OUÇA       –
tcp6       0      0 ::1:631                 :::*                    OUÇA       –
usuario@maquinadoze:~$

usuario@maquinadoze:~$ gcc
gcc: no input files
usuario@maquinadoze:~$

usuario@maquinadoze:~$ wget
wget: URL faltando
Uso: wget [OPÇÃO]… [URL]…

Tente `wget –help’ para mais opções.
usuario@maquinadoze:~$

É e por minha felicidade a distribuição do Zé já instalou o GCC (compilador) e seu uso está disponível para meu usuário, valeu Zé  \o/

Perceberam a versão do Kernel do Zé ?

usuario@maquinadoze:~$ uname -a
Linux maquinadoze 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux
usuario@maquinadoze:~$

Mais um vez o Zé dormiu no ponto e ta usando um Kernel que já tem um histórico de problemas de segurança.

Uma pequena consulta no Google por “linux kernel 2.6.31 escalation privileges” prova o que estou dizendo.

O Zé perdendo a aposta:

Apesar de detestar usar Exploit o Zé merecia para entender a lição que um sistema seguro não é nada sem controle 🙂

Download do Exploit que explora uma falha de segurança no fs/pipe.c para sistemas x86 e scp para a máquina do Zé.

usuario@maquinadoze:~$ mkdir .tmp

usuario@maquinadoze:~/.tmp$ ls
exploit.c
usuario@maquinadoze:~/.tmp$ gcc -o exploit exploit.c

usuario@maquinadoze:~/.tmp$ whoami
usuario
usuario@maquinadoze:~/.tmp$

usuario@maquinadoze:~/.tmp$ ./exploit
buf: (nil)
Parent: 3181
Child: 3182
# whoami
root
#
# echo “Perdeu a aposta Zé” > /home/Ze/Desktop/VcEstaSeguro.txt
#

O erro do Zé?

Confiar cegamente na falsa impressão de segurança oferecida  pelo Linux.

Segurança não é nada sem controle! 🙂

Apesar do post informal, o problema é verdadeiro, o exploit foi executado na ultima versão do Ubuntu 9.10 com seu kernel e instalação padrão.

Written by lucianoborguetti

dezembro 5, 2009 às 1:58 pm

14 Respostas

Subscribe to comments with RSS.

  1. Interessante seu post até para mostrar aos demais “zé’s” que aparecem no dia-a-dia, que a administração de um sistema é importante mesmo em um desktop. As vulnerabilidades existem em todos os sistemas, e sempre existirão, isso é um fato. A questão é o administrador tomar medidas que visem “cobrir” estas vulnerabilidades com outras soluções. Obviamente seu amigo zé não tinha esse conhecimento, pois pelo que vi no netstat que vc deu, até um MTA ele tem rodando no próprio desktop, e pela facilidade com que você acessou via SSH, nem firewall ativo ele tem.

    De qualquer forma, foi merecida a lição, para ele deixar de ser zé …rs.

    Grande post, um abraço.

    Tiago

    dezembro 20, 2009 at 10:10 am

  2. sim, seu post é importante para mostrar que esse mito de que o linux é mais seguro não é verdadeiro. Manter um sistema perfeitamente configurado e atualizado não é tarefa das mais fáceis, e basta um bug no kernel ou outro subsistema previlegiado pode por tudo a perder.

    Vide o caso do screensaver waterfall para Ubuntu que na verdade se tratava de um malware: http://linux.slashdot.org/story/09/12/09/2215253/Malware-Found-Hidden-In-Screensaver-On-Gnome-Look?from=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+slashdot/eqWf+(Slashdot:+Slashdot)&utm_content=Google+Reader

    e ainda:
    http://www.keepgeek.com.br/2009/12/08/desenvolvedor-cria-malwares-para-gnulinux/

    Miguel

    dezembro 12, 2009 at 4:05 pm

  3. Uso ubuntu 9.10 e sou newbie.

    Que faço para melhorar a minha segurança além da firewall?

    isabelgobbo

    dezembro 12, 2009 at 9:33 am

    • Isabel,

      Para segurança básica em desktop aconselho você em primeiro lugar sempre manter o sistema atualizado e também não deixar nenhum serviço desnecessário em execução.

      É muito importante conhecer o que está sendo executado no seu sistema, e remover/desativar serviços não necessários.

      Nunca instalar softwares de fontes não conhecidas é uma das regras que nunca devem ser quebradas.

      Vejo bastante softwares para a maioria das distribuições GNU/Linux que são disponibilizado pela Comunidade e não pelos canais oficiais de software do projetos.
      Onde para a instalações desses softwares é necessário a adição de um repositório extra por exemplo, isso é um risco muito grande.

      lucianoborguetti

      dezembro 12, 2009 at 6:45 pm

  4. Achei esse link, a quem interessar possa. Mostra como se proteger disso. http://www.gnax.net/forum/showthread.php?p=14449

    Ricardo

    dezembro 9, 2009 at 2:11 pm

  5. Qualquer forma de acesso remoto é uma brecha de segurança, a dica para o ssh é sempre restringir seu acesso com:

    nano /etc/ssh/sshd_config

    E adicionando ao final

    AllowUsers zé

    ou

    AllowGroups zé

    Imaginando que por grupo eu poderia ter um controle melhor concedendo acesso apenas aos usuários contidos nele

    Outra ferramenta interessante seria o uso de DenyHosts

    apt-get install denyhosts

    Para uma consulta melhor sobre o DenyHosts em pt_BR:
    http://www.madeira.eng.br/wiki/index.php?page=DenyHosts

    Anderson Gama

    dezembro 9, 2009 at 1:57 pm

  6. Cara, vc tem acesso físico na máquina, certo? digo, está sentado na frente dela, né?

    Então reboota a maquina do zé, pressiona a tecla que dá acesso ao grub menu, pede pra editar a linha do kernel com a tecla “e”, vai até a string “init=???” e substitui o “???” por “/bin/bash”. Pronto, manda bootar usando o novo init… o sistema vai bootar em single-mode e cair direto no prompt do bash sem pedir senha. É só chamar passwd e setar a nova senha do root, rebootar e pronto: acesso autorizado ehehehe

    Moral da história: Não existe atualização de segurança se o hacker tem acesso físico à máquina 😀

    p.s.: ouvi dizer que kernel com SELinux não deixa isso acontecer, mas nunca testei!
    p.s.2: a culpa é do grub? não, outros bootloaders tb permitem isso… o kernel que deveria checar se o init é “confiável” 😉

    [ ]s

    Carlos Costa

    dezembro 9, 2009 at 1:19 pm

    • Ola Carlos,

      Como postei a aposta era para conexão pela rede.

      Acesso físico ai fica fácil 🙂

      Abraço,

      lucianoborguetti

      dezembro 9, 2009 at 1:27 pm

  7. Vale ressaltar que umas distros, fizeram o Backport do patch, tendo o Kernel 2.6.29, e não sofrendo deste bug histórico(como o Fedora 11 por exemplo)…
    Mas poderia sofrer do mal do script “easy life” do Fedora, onde um “sudo su” bastaria =)

    Não, eu não to querendo fazer um flame entre distros, antes que alguém tenha dor de cotovelo.

    Nícolas[Ironmaniaco]

    dezembro 9, 2009 at 1:06 pm

  8. Muito bom!

    Acho importantíssimo a conscientização do usuário. O problema é a mentalidade «final user» da evangelização Microsoft, onde o usuário confia cegamente em seu sistema, sendo transferida para o universo GNU/Linux.

    É preciso sempre estar consciente do quão seguro se está e de que não existe sistema 100% seguro (ou pelo menos não um que seja ao mesmo tempo usável).

    []’s
    Cacilhas, La Batalema

    Rodrigo Cacilhas

    dezembro 9, 2009 at 12:48 pm

  9. Mas este Zé é um Zé Mané heim ! haehaehae
    Tah ai um lado bom do archlinux de manter-se sempre atualizadinho…
    Um abraço

    Sérgio

    dezembro 9, 2009 at 12:36 pm

  10. […] No post que segue vou tentar contar um pequeno caso para provar que nem sempre essa ideologia de segurança é verdadeira, só porque se está utilizando GNU/Linux.” [referência: lucianoborguetti.wordpress.com] […]

  11. Muito massa meu amigo!
    Se eu usasse ubuntu até poderia achar que esse cara era eu… 😀

    José Guilherme

    dezembro 7, 2009 at 10:03 pm


Deixar mensagem para Relembrando a importância de manter o sistema atualizado Cancelar resposta