Atenção

Blog em construção... Se tiver sugestões, serão bem vindas !!!

segunda-feira, 22 de agosto de 2011

Hackear senhas do Windows

 

Introdução

O Windows XP é relativamente robusto e estável, além de oferecer muitas opções de configuração. Deveria ser seguro nas mesmas proporções, mas, infelizmente, não é isso o que acontece. Uma vez precisei da senha de administrador de uma instalação do meu Windows 2000, pois instalei às pressas e não anotei a senha. Para meu uso diário, fiz uma conta limitada, mas, um belo dia precisei me logar como administrador para instalar os drivers da webcam. Aí começou a dor de cabeça: e agora, que senha eu usei na instalação?
Percorrendo a Internet, não demorou muito para encontrar a solução. No Windows NT/2000, para contas locais, basta apagar os arquivos SAM e SAM.log, da pasta C:\WINDOWS\system32\config. Comentei isso na época em meu site.
Aproveitando a solução, testando no Windows XP, não funcionava: o sistema ficava inacessível após a remoção destes arquivos, e nem iniciava mais. Ou seja, isso foi detectado e corrigido no Windows XP, mas não no 2000, pelo menos, não até o Service Pack 4.

Qualquer um pode ser administrador!

Recentemente, recebi pela área de envio de dicas de um dos meus sites, uma dica bem rápida, aproveitando-se de um recurso do Windows XP para obter acesso como administrador. Deixo então o agradecimento pela colaboração do Rhadsclei, que me passou a ideia e o nome do arquivo envolvido, e decidi comentá-la neste texto, detalhadamente.
O Windows XP usa uma conta especial do sistema, chamada "SYSTEM". Essa conta é usada enquanto nenhum usuário está logado, pois para os programas funcionarem no Windows NT, eles precisam de uma conta de usuário, e usarão as configurações de personalizações e segurança do perfil desse usuário. Mesmo após o logon, se você abrir a guia "Processos" do Gerenciador de tarefas, verá que alguns programas são executados por essa conta, "SYSTEM". Possivelmente são serviços essenciais inicializados antes do ponto de logon, onde há interação com o usuário. Muito provavelmente esta conta especial é usada durante a instalação do Windows também, após o início da parte gráfica. A "brecha" é que ela possui privilégios administrativos. Qualquer programa rodado com ela, tem direitos de administrador, e pode fazer o que bem quiser no sistema. Eis o segredo: rodar um programa sem fazer logon, usando essa conta. Você me perguntaria: mas como, se antes de fazer logon não tenho acesso a nenhum menu ou meio de chamar programas?
Por vias normais, não. Mas...
O Windows possui ferramentas de acessibilidade, para auxiliar de forma mínima usuários com deficiências motoras e/ou audiovisuais. Ele possui um gerenciador de utilitários, chamado pelo atalho Win+U. Independentemente deste, pode-se ficar segurando a tecla SHIFT por 8 segundos, e então as opções de acessibilidade são abertas. Elas permitem configurar o alto-contraste, o movimento do cursor do mouse via teclado, a emissão de sons em determinadas situações, a piscagem da tela durante a reprodução de um som de sistema (como um "beep", por exemplo), etc. Para permitir que os usuários com necessidades especiais tenham esse auxílio durante o logon, o atalho de ficar segurando SHIFT por 8 segundos funciona também na tela de logon.
Eis o truque, facilmente aplicado: substituir o arquivo que é chamado pelo atalho das opções de acessibilidade por outro executável qualquer. O mais prático é o "cmd.exe", o interpretador de comandos. Basta acessar a pasta system32, renomear (ou apagar) o arquivo "sethc.exe", e então copiar o "cmd.exe" para essa mesma pasta, renomeando a cópia com o nome "sethc.exe". Só isso. Agora, ao segurar SHIFT por 8 segundos, o prompt de comando será aberto. Na tela de logon, como os direitos da conta usada ali são de administrador, o prompt de comando será executado como administrador.
Nota: na tela de logon que lista os usuários, o prompt de comando (ou o arquivo "sethc.exe", mais precisamente) poderá ficar oculto, por trás dela. Para não se atrapalhar e exibi-lo corretamente, alterne para o logon clássico, teclando duas vezes CTRL + ALT + DEL. (No Windows NT, teclar duas vezes CTRL + ALT + DEL não faz com que o sistema seja reiniciado; se você não acompanhou o Windows 2000/XP e só conhece o 9x/Me, é bom saber disso :)
O arquivo pode ser substituído facilmente se o usuário possuir uma conta local, mesmo que restrita, e se o HD estiver formatado em FAT/FAT32. Usando o próprio Explorer pode-se trocar o arquivo, já que ele não fica aberto o tempo todo. Se o HD estiver formatado em NTFS, onde os usuários limitados não têm permissão de escrita nas pastas de sistema do Windows, e/ou se o usuário for um intruso que não possui sequer conta local, basta usar um sistema alternativo, que rode do CD. O mais comum é o Linux, diversas distros, como o Kurumin :) Isso considerando que o sistema possa ler e escrever em NTFS, o que é o caso do Kurumin 7.

Rodando o prompt de comando como administrador, você pode chamar programas, que serão executados com privilégios de administrador. Rode "control userpasswords2" para criar novos usuários ou redefinir a senha de qualquer conta de usuário, incluindo, é claro, do administrador.
Se preferir, use o console de gerenciamento do computador (compmgmt.msc), e clique em "Usuários e grupos locais". Eu me surpreendi, pois foi possível rodar até o Explorer! Veja alguns screenshots. Para decepção dos usuários que confiam tanto na segurança do Windows, saiba que estas imagens não foram montadas num programa gráfico, foram todas obtidas com o famoso "Print Screen", salvas originariamente no Paint, também rodando sem fazer logon:
Área de trabalho aberta sem logon, no Windows XP.
Ao dar o comando "explorer.exe" no prompt, o Explorer foi aberto. Na primeira vez, definiu o papel de parede "Alegria", que é padrão, e ainda ofereceu o "Tour do Windows". Observe a tela de logon arrastada para o topo. Nenhuma senha foi necessária.
Criação de uma nova conta de usuário, com o comando 'control userpasswords2', no Windows XP.
Criação de uma nova conta de usuário, com o comando control userpasswords2.
Gerenciador de tarefas aberto, sem uso de logon, no Windows XP.
Ao dar CTRL+ALT+DEL, abriu-se o Gerenciador deTarefas. Pelo visto, ele ficou instável :( Isso ocorreu com alguns outros programas também. No entanto, após criar uma conta e se logar com ela, o acesso ao sistema ficava "normal".
Tela de logon personalizada, também sem a necessidade de logar no sistema, no Windows XP.
Clicando com o direito na área de trabalho e em "Propriedades", pode-se alterar os temas. Veja, deixei o prateado para a tela de logon! Até que esta dica pode ser útil para mera personalização, você altera as opções visuais da tela de logon sem precisar tocar no registro.
Percebi alguns problemas de estabilidade ao rodar programas deste modo, como no gerenciador de tarefas, o copiar/colar arquivos pelo Explorer não funcionava, etc. Depois de uns 5 minutos o Explorer era fechado sozinho, não sei se isso foi programado ou se é devido algum erro não esperado. Afinal não é esperado "fazer logon sem fazer logon", com a conta de usuário SYSTEM. Mas ele podia ser aberto a qualquer momento, digitando-se "explorer" no prompt de comando novamente.
Talvez isso possa ser usado também no Windows Server 2003, visto que possui muita coisa herdada do XP. Eu não testei, mas me deu uma vontade danada de instalá-lo só para testar. Se funcionar, a Microsoft pisou na bola legal com os usuários dos servidores, afinal isso num servidor é inaceitável. Como não testei, não posso dizer muito, além de meras "premonições". Eu estava usando o Windows XP SP1, e coloquei o SP2 só para ver se o problema permanecia nele. Afinal, se tivesse sido corrigido, eu nem me atreveria a escrever este texto. "Pode ser" que alguma das atualizações automáticas tenha corrigido isso, eu não sei porque não uso o computador principal com Internet, portanto, nada de atualizações automáticas. Mas acredito que não, senão esta falha já teria vazado muito mais amplamente.

E como se proteger?

Uma dica para proteção, caso você tenha computadores com Windows XP na empresa (ou em qualquer lugar que seja), e queira se prevenir, é usar o "syskey". Ele é um programinha que vem com o Windows mas quase ninguém conhece, que permite alterar a forma de criptografia das contas de usuários locais. Você pode configurar o Windows para solicitar uma senha especial, independentemente de qualquer conta de usuário, a toda inicialização. Se quiser mais proteção, pode requerer um disquete obrigatório. Sem ele, não se usa o Windows. Para isso basta abrir o SysKey, digitando syskey no "Executar".
SysKey rodando no Windows XP
Tela do SysKey. Clique em "Atualizar" para alterar a proteção do sistema das contas de usuários. Não perca a senha nem o disquete, se for o caso, senão, adeus contas de usuários (mas os arquivos permanecem em C:Documents and settings). Você poderá instalar o Windows do zero em outra pasta, mas perderá acesso a qualquer arquivo criptografado em partições NTFS (se você possuir arquivos protegidos desta forma, é claro).
Pelo menos em teoria, ao ativar a criptografia do banco de dados de contas de usuários dessa forma, o Windows não tem como permitir o logon de ninguém, simplesmente porque não tem as informações das contas, que estariam codificadas na senha especial ou no arquivo do disquete. Pelo que testei, o atalho de segurar SHIFT por 8 segundos não funcionou na tela que pede a senha especial (do syskey). Uma outra ideia, complementar a esta e que não deve ser usada sozinha, é remover ou trocar o arquivo "logon.scr", na pasta system32, a proteção de tela padrão. Os efeitos poderiam ser parecidos se o usuário substituisse esse arquivo pelo prompt de comando, e esperasse ansiosamente por 10 minutos na tela de logon. Para quem não sabe, uma proteção de tela é um arquivo executável, com a extensão ".scr" (eles possuem diferenças técnicas sim, com relação aos ".exe"; mas se você renomear um ".exe" para ".scr", verá que funciona da mesma forma).

 

 

A responsabilidade é de cada um

Algumas pessoas particularmente me criticam por escrever "dicas" com este teor. Em meio a tantos agradecimentos e comentários, recebi algumas críticas de revoltados com um texto que escrevi há um tempo sobre criação de vírus. Não nego que tive um gostinho de atrair lammers, me divirto com as pessoas que acham que sabem de tudo só por seguirem uma receita que mal entendem como funciona. Lá na frente, um dia, elas têm que encarar uma situação e se ferram. Mas muita gente reconheceu o lado importante da matéria (como os vírus são criados, como agem, como se defender, o que fazer, etc). Provavelmente receberei críticas quanto a este texto, mas os que criticam negativamente são usuários que vão contra o bem comum, ao compartilhamento da informação.
Matei a cobra e mostrei o pau, "travei o PC mas mostrei no gerenciador de processos quem foi o culpado". Quanto mais esta informação for divulgada, mais gente se cuidará e, de certa forma, pressionará a empresa produtora do Windows a rever algumas coisas nos seus sistemas antes de soltá-los. Vai dizer que o Tio Bill não sabia que durante a tela de logon a conta usada possui privilégios administrativos? Tudo bem, errar é humano. Antes divulgar esta informação de forma clara e técnica e permitir que mais técnicos e profissionais de TI se mexam para proteger os sistemas dos seus clientes, do que não divulgá-la, ocultá-la. Ela não ficará oculta, um passa para o outro, e se nada for feito para tentar proteger os sistemas, muitos espertinhos se aproveitarão desse mole que o Windows dá. Alunos em escolas e bibliotecas, clientes em lan houses, funcionários em empresas, e até mesmo - porque não? - o seu filho, no seu computador.
Além dessa questão, é uma mão na roda para quem precisa recuperar a senha pessoal, ou criar uma nova conta de usuário, se perder acesso por qualquer motivo às configurações do computador. Uma dica que deve fazer parte da mala de ferramentas de qualquer técnico Windows que se preze. Engraçado que um bom técnico Windows deve ter um live-CD do Linux, não é?

 

 

Concluindo

Isso mostra que a senha de administrador no Windows XP e nada é a mesma coisa. Como o software é fechado, a comunidade não pode fazer nada, devendo esperar por um patch da Microsoft. Isso "se sair". Enquanto isso, o Windows em casa ou no escritório, não está seguro. A ideia é de que a conta de administrador é segura, potente, de que realmente o sistema está protegido. Mas não é isso que ocorre. O acesso local, quando possível, é uma das formas mais fáceis de invadir um computador alheio. Portanto, pense em soluções físicas de proteção. Gabinetes com cadeado, câmeras de segurança onde tiver computadores importantes... Só para não falar da segurança paranóica aplicada em data centers (paranoica, mas essencial!). Enfim, cuide-se.




NO LINUX:

E como se proteger no XP/Server 2003?

Uma dica para proteção, caso você tenha computadores com Windows XP na empresa (ou em qualquer lugar que seja), e queira se prevenir, é usar o "syskey". Ele é um programinha não documentado que vem com o Windows, e permite alterar a forma de criptografia das contas de usuários locais. Você pode configurar o Windows para solicitar uma senha especial, independentemente de qualquer conta de usuário, a toda inicialização. Se quiser mais proteção, pode requerer um disquete obrigatório. Sem ele, não se usa o Windows. Para isso basta abrir o SysKey, digitando syskey no "Executar".

index_html_m4f6ef1b2
Tela do SysKey. Clique em "Atualizar" para alterar a proteção do sistema das contas de usuários. Não perca a senha nem o disquete, se for o caso, senão, adeus contas de usuários (mas os arquivos permanecem em C:Documents and settings). Você poderá instalar o Windows do zero em outra pasta, mas perderá acesso a qualquer arquivo criptografado em partições NTFS (se você possuir arquivos protegidos desta forma, é claro).
Pelo menos em teoria, ao ativar a criptografia do banco de dados de contas de usuários dessa forma, o Windows não tem como permitir o logon de ninguém, simplesmente porque não tem as informações das contas, que estariam codificadas com base na senha especial ou no arquivo do disquete. Pelo que testei, o atalho de segurar SHIFT por 8 segundos não funcionou na tela que pede a senha especial (do syskey).

No Linux

Muitos usuários fãs do Linux podem até me criticar por escrever este texto... Mas falei de como fazer isso no Windows, e se dá, porque não também no pingüim?! Segurança zero! Isso é bom para incentivar as empresas e o pessoal de TI (ou até mesmo em casa) a aplicarem medidas físicas de segurança, pois não basta via software.

O Linux tem uma ferramenta que pode ser um perigo nas mãos erradas: chroot. Incluso em praticamente todas as distribuições (pelo menos, em todas as distribuições sérias e que visem uma boa administração), ele permite obter acesso como root em um sistema Linux, desde que o usuário já possua acesso como root em outro sistema Linux. Em outras palavras, ele monta a pasta raíz "/" numa partição onde outro Linux esteja instalado, e dá poder de root ao operador. Isso pode ser utilizado em manutenção, para editar e/ou recuperar arquivos, e inclusive alterar qualquer senha, configurar permissões de arquivos, etc. Como o Carlos E. Morimoto citou no seu livro "Redes e Servidores Linux", em outras palavras: "Se um usuário der boot com um live-CD no seu servidor, o servidor não será mais seu; será dele". Pois bem...

Basta dar boot com um liveCD do Linux, como o Kurumin e uma infinidade de outros. A única exigência base é que o sistema reconheça o sistema de arquivos onde o Linux a ser "invadido" esteja instalado; em se tratando de Linux, este sistema não será NTFS e a preocupação com isso (acesso em NTFS) não existe. Dado o boot, você deve obter acesso de root no "seu" sistema, enquanto ele está rodando do CD. Em boa parte das distribuições liveCD, não dá para trocar a senha padrão, e ninguém normalmente sabe qual é ela :P Com o Kurumin Linux, dá e é fácil. Ele possui um script "Definir senhas", localizado na área de trabalho. Basta abri-lo para trocar a senha, tanto do usuário "Kurumin" que é usado no live-CD, como o do root. Há também no menu "Configurações do sistema", um item para alterar a senha de root. Isso é muito útil para instalar programas rodando do CD, ou alterar algumas configurações que exijam o reinício do X (onde para se logar depois, será preciso digitar a senha). Se você não estiver usando o Kurumin, pode tentar isso: algumas distros deixam outros consoles logados como root, tecle CTRL + ALT + F1 a F6, e veja se em algum aparece o prompt #. Se tiver, estará logado já como root, aí fica bem fácil e nem precisará usar a interface gráfica (podendo também trocar a senha do liveCD digitando passwd).

Tendo acesso como root rodando do CD, você é praticamente dono do computador :)

Agora você precisa abrir um terminal, montar a partição que contém o sistema a ser "atacado", e mandar ver. A montagem da partição deve incluir o tipo do sistema de arquivos utilizado, montá-la manualmente não será algo tão simples para quem não é usuário do Linux. Para facilitar, você pode abrir o "Meu computador" do Linux (estou dando como exemplo, o Kurumin), e montar a partição a partir dali, clicando nela com o direito e escolhendo "Ação > Montar".

Com a partição montada, abra um terminal (pode ser o Konsole, XTerm ou qualquer outro que você queira). Como o usuário padrão do liveCD provavelmente estará logado, e não o root, você precisa alternar para o root. Use o comando su. Digite su, tecle [enter], e ele pedirá a senha de root. Use a senha que você definiu para o sistema rodando do CD. Ao acessar como root, o símbolo do prompt mudará de $ para #, indicando que os comandos são executados com poder de superusuário (equivale ao "Administrador", no Windows). No Ubuntu ou em outras onde o root vem desativado, você pode usar o sudo.
Dica: em algumas distros com o sudo ativado, você pode digitar sudo passwd com o login de usuário, para definir a senha de root do sistema rodando do CD. Com ela, você acessa um terminal como root e então usa o chroot, comentado a seguir.
Agora digite o comando chroot, passando como primeiro parâmetro o ponto de montagem da partição do sistema no HD que será atacado. Como falei, a partição já deverá estar montada. Por exemplo, chroot /mnt/hda3.
Se tudo estiver ok, o sistema dentro do prompt não será mais o seu do CD, mas sim o que estiver na partição montada :) Aí é só sair fazendo a festa.
Para alterar a senha de root, digite passwd e tecle [enter]. Ele exibirá um prompt "Enter new UNIX Password:", então digite a senha desejada e tecle [enter]. Ele pede para confirmar a senha, afinal é uma medida importante para evitar erros de digitação.
Para alterar a senha de um usuário do sistema no HD, digite passwd seguido pelo nome do usuário. Por exemplo, passwd mah.

Veja um prompt onde troquei a senha do usuário kurumin e de root, de uma instalação do Kurumin no HD, usando um liveCD do Kubuntu:
index_html_6b16ad0f
Nesse caso precisei apenas usar o sudo para realizar ações como root, visto que no Ubuntu a conta de root vem desativada.
O chroot é uma ferramenta muito poderosa usada em recuperação e administração, use com responsabilidade. Ele foi projetado para rodar apenas comandos em modo texto. Mas, com certos artifícios, é até possível rodar programas gráficos do outro sistema; mas isso foge aos objetivos desse texto.

Algumas distribuições talvez implementem outros sistemas para segurança das senhas, inviabilizando este método. Mas pode crer, funciona na grande esmagadora maioria.

A responsabilidade é de cada um

Algumas pessoas particularmente me criticam por escrever "dicas" com este teor. Não é bem por aí. Quanto mais esta informação for divulgada, mais gente se cuidará e, de certa forma, pressionará a empresa produtora do Windows a rever algumas coisas nos seus sistemas antes de soltá-los. Vai dizer que o Tio Bill não sabia que durante a tela de logon a conta usada possui privilégios administrativos? Tudo bem, errar é humano. Antes divulgar esta informação de forma clara e técnica e permitir que mais técnicos e profissionais de TI se mexam para proteger os sistemas dos seus clientes, do que não divulgá-la, ocultá-la. Ela não ficará oculta, um passa para o outro, e se nada for feio para tentar proteger os sistemas, muitos espertinhos se aproveitarão desse mole que o Windows dá. Alunos em escolas e bibliotecas, clientes em lan houses, funcionários em empresas, e até mesmo - porque não? - o seu filho, no seu computador.

Além dessa questão, é uma mão na roda para quem precisa recuperar a senha pessoal, ou criar uma nova conta de usuário, se perder acesso por qualquer motivo às configurações do computador. Uma dica que deve fazer parte da mala de ferramentas de qualquer técnico Windows que se preze. Engraçado que um bom técnico Windows deve ter um live-CD do Linux, não é?

Concluindo

Isso mostra que a senha de administrador no Windows e a de root no Linux podem não valer nada. A idéia é de que a conta de administrador/root é segura, potente, de que realmente o sistema está protegido. Mas não é isso que ocorre. O acesso local, quando possível, é uma das formas mais fáceis de invadir um computador alheio. Portanto, pense em soluções físicas de proteção. Gabinetes com cadeado, câmeras de segurança onde tiver computadores importantes, boot via CD/DVD e USB desativado... Só para não falar da segurança paranóica aplicada em data-centers (paranóica, mas essencial!). Enfim, cuide-se.

Nenhum comentário:

Postar um comentário