Computação & Tecnologia
Arquivo de abril 2009
Como cancelar realmente uma impressão
10/04/09
Acontece muito, sabe quando quer cancelar um documento e ele fica horas para desaparecer da fila de impressão? Depois de reiniciar ele continua lá, quando não sai imprimindo tudo em várias folhas, você fica doido com aquela situação, gastando tinta e papeis, da vontade jogar a impressora fora? Como gosto de dizer esta frase: Seus problemas acabaram! Pelo menos para quem usa o Windows XP.
Vá ao Iniciar / Executar, escreva cmd e tecle Enter, com este comando abrirá uma janela/Prompt do DOS. Agora escreva os comandos na sequência demonstrada abaixo:
1. net stop spooler
2. cd %systemroot%\system32\spool\PRINTERS
3. del /f /s *.shd
4. del /f /s *.spl
5. net start spooler
6. exit
Pronto, desta forma excluiu todos os documento que estão na fila de impressão (spool).
Para facilitar o trabalho e resolver em apenas um clique, faça o seguinte:
Abra o Bloco de Notas, copie o código acima e salve como .bat, dê um nome qualquer, por exemplo, ‘anti-spool.bat’, pode deixar na área de trabalho mesmo, quando o problema persistir, basta executar o pequeno arquivo para ter todas as impressões canceladas instantaneamente.
Convertendo vídeos para qualquer formato
10/04/09
Com o DiviXMachine fica muito fácil converter vídeos para qualquer formato.

Depois de instalado é só clicar no arquivo de vídeo com o botão direito do mouse e escolher as opções desejadas. Simples, fácil e gratuito.
Fonte: LifeHacker
Ataques brute force utilizando o Hydra
10/04/09
Autor: Pedro Augusto de O. Pereira / http://augusto.pedro.googlepages.com/
Introdução
Senhas são o ponto mais fraco em qualquer sistema de segurança. Isso acontece porque geralmente as senhas são definidas por seus usuários: pessoas que não tem idéia de como é fácil adivinhá-las e escolhem como senhas o nome da esposa/marido, o nome do cachorro, a data de casamento/nascimento, entre outros. Senhas que não usem caracteres especiais, números, letras maiúsculas e minúsculas, tenham uma quantidade grande de caracteres (com no mínimo 8 caracteres, por exemplo), correm o risco de serem quebradas por ataques de dicionário, também conhecidos como brute force.
Em ataques brute force, o atacante tenta adivinhar a senha por tentativa e erro testando várias combinações de usuários e senhas (disponíveis em listas que podem ser encontradas na Internet ou baseando suas tentativas em dados que conseguiu utilizando engenharia social ou por conhecer a vítima do ataque) para tentar logar em um determinado serviço no qual ele não tem autorização, obtendo um shell em um servidor por exemplo.
Efetuar este tipo de ataque é bem demorado e pode ser facilmente impedido por administradores que utilizem técnicas como limitar o número de tentativas erradas utilizando um determinado nome de usuário. Porém, existem várias ferramentas que fazem com que estes ataques sejam efetuados de modo mais eficiente.
THC Hydra
A que eu mais gosto, é o THC Hydra, desenvolvido pelo Van Hauser do THC.
O Hydra tem um desempenho muito bom (utiliza threads paralelas, dividindo as senhas e nomes de usuários entre estas threads diminuindo o tempo levado para ele conseguir adivinhar a senha) e consegue efetuar com sucesso ataques brute force nos protocolos TELNET, FTP, HTTP, HTTPS, HTTP-PROXY, SMB, SMBNT, MS-SQL, MYSQL, REXEC, RSH, RLOGIN, CVS, SNMP, SMTP-AUTH, SOCKS5, VNC, POP3, IMAP, NNTP, PCNFS, ICQ, SAP/R3, LDAP2, LDAP3, Postgres, Teamspeak, Cisco auth, Cisco enable, LDAP2, Cisco AAA. Além disso, está em constante desenvolvimento e é completamente gratuito com o código-fonte 100% disponível. Ele ainda possui uma interface gráfica, o HydraGTK. Ela é completamente independente do software e não precisa ser compilada para que você consiga utilizá-lo. Porém, sem ela você só poderá utilizá-lo através da linha de comando.
Você pode utilizar o Hydra em qualquer Unix como Linux, *BSD, Solaris, etc; Mac Os/X; no Windows utilizando o Cygwin; em dispositivos móveis que utilizem processadores ARM e Linux e em dispositivos que utilizem o PalmOS.
Seguem os links para que você possa fazer o download:
- Para Unix: hydra-5.4-src.tar.gz
- Para Windows/Cygwin: hydra-5.4-win.zip
- Binário para o ARM: hydra-5.0-arm.tar.gz. Esta versão está um pouco desatualizada, mas em breve será disponibilizada uma nova versão.
- Binário para o Palm: hydra-4.6-palm.zip. A versão para o Palm é desenvolvida de forma independente das outras, portanto nem todos os protocolos são suportados e os updates não são muito frequentes.
Compilando e instalando
Dependendo do pacote que você escolher, será necessário que você compile o software. Algumas releases como a disponível para Windows/Cygwin e ARM já contém tudo compilado e pronto para o uso, com todos os módulos (no port para o ARM você não poderá usar o módulo para SAP R/3).
Se você escolheu o pacote para Unix, você precisará instalar todas as bibliotecas necessárias para compilar os módulos corretamente. O serviço não é tão difícil, já que ao executar o ./configure, já será mostrado um resumo dizendo as bibliotecas que faltam e onde encontrá-las. Seguem os passos necessários para compilar com sucesso o Hydra em qualquer *nix.
Faça o download do pacote hydra-5.4-src.tar.gz e descompacte:
tar xzvf hydra-5.4-src.tar.gz
Acesse o diretório que acabou de ser criado e:
cd hydra-5.4-src
./configure
Quando você executa o configure, algumas bibliotecas que são necessárias para alguns módulos como SSHv2 e PostgreSQL (libssh e libpq, respectivamente) são checadas e se não estiverem instaladas no sistema você deverá instalá-las na mão. A boa notícia é que o script já informa o site de onde você pode fazer o download e a maioria dessas bibliotecas já vem com instruções de como compilar. Vale a pena lembrar que, se você não quiser utilizar os módulos que precisam das bibliotecas, pode continuar a compilação normalmente: os outros protocolos irão funcionar sem problemas.
Depois que o ./configure terminar, só resta executar como root:
make && make install
Pronto! O Hydra já está instalado e pronto para ser usado!
Wordlists
Wordlists são, como o nome diz, listas gigantescas de palavras ou nomes de usuários que são utilizadas em ataques bruteforce. O Hydra não vem com nenhuma wordlist e não funciona sem uma, então você precisa dar um jeito nisso. Vou colocar alguns links com wordlists para você começar a brincar com o Hydra:
- http://www.outpost9.com/files/WordLists.html
- http://wordlist.sourceforge.net/
- http://www1.harenet.ne.jp/~waring/vocab/wordlists/vocfreq.html
Depois que você baixar as listas, junte todas em um único arquivo. No Hydra, você só pode especificar um único arquivo de wordlists para ser utilizado. Você pode usar o cat. Por exemplo:
cat substitua isso por todos os arquivos de wordlists que você tem >> wordlist2.txt
É útil também remover entradas duplicadas da sua wordlist, para não perder tempo tentando mais de uma vez uma senha que já não deu certo:
cat wordlist2.txt | sort | uniq > wordlistfinal.txt
Pronto, agora é só fazer o Hydra utilizar o arquivo wordlistfinal.txt como wordlist.
Utilizando o Hydra
O Hydra é bem fácil de ser utilizado. Você só precisa especificar o login (ou um arquivo com vários logins), a wordlist com senhas, o host e o protocolo. Se desejar pode fazer com que a saída do comando seja escrita em algum arquivo. Na linha a seguir, mostro o uso básico do Hydra:
hydra -l root -P ~/wordlistfinal.txt -o bruteforce.txt ftp.foo.bar ftp
A linha acima é bem simples. A opção -l diz que você quer fazer brute force em um usuário específico que você já sabe que existe (você poderia usar a opção -L para utilizar um arquivo com vários logins); a opção -P específica qual wordlist será usada para ler as senhas (você poderia usar -p se soubesse uma senha, mas não soubesse de qual usuário é); -o escreve a saída do comando no arquivo bruteforce.txt; ftp.foo.bar é o nome do host que iremos atacar e ftp é o protocolo que o Hydra deve usar.
Se você por algum motivo precisar interromper a sessão do Hydra, pode começar de onde parou utilizando a opção -R no mesmo diretório em que você interrompeu a execução anterior.
Outras opções úteis são:
- -s: Se o serviço estiver sendo executado em uma porta diferente, use esta opção para especificar a porta.
- -t: Indica a quantidade de conexões paralelas no servidor
- -M: Define uma lista de servidores a serem atacados
Como se proteger
Se proteger de ataques brute force não é tão difícil assim:
- Forçar utilização de senhas seguras nos seus servidores. Senhas com caracteres especiais, letras maiúsculas e minúsculas, números e um comprimento de pelo menos 8 caracteres.
- Determinar um número máximo de erros na tentativa de login.
- Sempre monitore os log’s procurando por tentativas de login que falharam muitas vezes.
- Onde puder, mude a porta padrão dos serviços sendo executados na sua máquina (por exemplo, se só você utilizar o SSH você pode mudar a porta dele de 22 para 45600, por exemplo. Isso diminui a incidência de ataques)
- Onde possível, especifique o IP de origem que pode estabelecer a conexão com determinados serviços
Como se vê, é bem simples melhorar a segurança de seus serviços. Isso é o mínimo necessário para não ter muita dor de cabeça com qualquer pessoa que saia usando o Hydra e seus similares por aí. Porém estas não são as únicas técnicas e também não excluem a necessidade de verificação contínua nos log’s e conexões estabelecidas no servidor procurando por atividades suspeitas.
Conclusão
O Hydra é talvez a melhor ferramenta para ataques de brute force: tem um ótimo desempenho, é multiplataforma e várias opções úteis, além disso está em desenvolvimento constante e novas versões são lançadas frequentemente (não há um ciclo de release definido).
Vale a pena aprender a utilizar a ferramenta (o que não é difícil) e utilizá-la em seus servidores para identificar pontos-fracos antes que alguém faça isso por você
Quebrando senhas do Windows e do Linux com John The Ripper
10/04/09
Autor: Pedro Augusto de O. Pereira / http://augusto.pedro.googlepages.com/
Introdução
Senhas, como já sabemos, são o ponto mais fraco de qualquer sistema de segurança pois geralmente são definidas por pessoas que não são devidamente instruídas e não imaginam que senhas fracas podem ser quebradas em, dependendo de quão fraca, menos de 10 minutos.
Por isso deve-se definir regras básicas sempre que se trabalha com senhas:
- Definir um tamanho mínimo de senhas de 8 ou 10 caracteres
- Utilizar letras maiúsculas e minúsculas
- Utilizar caracteres especiais como * / = ! @, etc.
- Utilizar números
- Fazer com que estas senhas sejam trocadas em intervalos de tempo curtos (o intervalo é definido por você, mas no máximo a cada 20 dias é uma boa média para senhas fortes)
- Definir a quantidade de senhas já utilizadas que não poderão ser reaproveitadas. Por exemplo, o usuário não poderá trocar a senha atual por uma que ele já tenha utilizado há 5 trocas atrás.
- Educar os usuários para que eles não contem as senhas para ninguém
- Educar os usuários para que não anotem as senhas em lugar nenhum
Tomando estas providências extremamente simples pode-se impedir que algum atacante consiga quebrar a senha utilizando força bruta (com programas como Hydra ou o John The Ripper, o qual será abordado mais adiante) ou engenharia social. Mesmo que a senha consiga ser quebrada, é provável que esta já não seja mais válida, pois de acordo com sua política o usuário já a trocou, ou seja, o atacante precisará iniciar todo o processo novamente.
Quando o atacante tem acesso diretamente ao arquivo que contém as senhas (como o arquivo shadow do Linux, onde ficam as senhas de todos os usuários do sistema) ele pode utilizar um software que consiga quebrar a criptografia e descobrir a senha. Um destes softwares e talvez o mais popular é o John The Ripper.
O John The Ripper
O John The Ripper é um software livre que consegue identificar automaticamente qual é o algoritmo de criptografia que foi utilizado para cifrar as senhas presentes no arquivo que você indicou para ele. Ele também possui uma versão paga, porém a versão livre não deixa nada a desejar. Neste artigo focaremos na sua versão livre.
Ele é multiplataforma, podendo ser executado em vários sistemas Unix-like, Windows, DOS, BeOS e OpenVMS. É desenvolvido pelo pessoal do projeto OpenWall, que além do JtR possuem vários outros ótimos softwares e até uma distribuição Linux, a OpenWall GNU/Linux (ou Owl). O site do projeto é este.
Possui vários módulos que aumentam sua funcionalidade, o que eu gostei mais foi um módulo que se integra ao PAM e faz uma monitoração pró-ativa das senhas do sistema, impedindo que usuários utilizem senhas fracas o que facilita a vida do atacante. Este módulo também oferece suporte a passphrases (que são frases ao invés de palavras sendo utilizadas como senha) e também pode gerar senhas, se integrando totalmente com o passwd. Além deste módulo, também foi desenvolvido um patch para o JtR para que ele se utilize de vários processadores em uma mesma máquina ou consiga utilizar um cluster de máquinas para coseguir quebrar as senhas. O nome do patch é MPI pode ser encontrado em http://www.bindshell.net/tools/johntheripper.
Baixando e instalando
A instalação do JtR é extremamente fácil. Primeiro acesse o site e faça o download da versão mais nova (1.7.0.2 no momento em que escrevo o texto). Após o download, descompacte o arquivo e acesse o diretório recém criado:
tar xzvf john-1.7.0.2.tar.gz
cd john-1.7.0.2
Neste diretório você irá encontrar o sub-diretório “src”, é nele que estão os fontes do software e é lá que você precisa ir para compilar o programa:
cd src/
A compilação do JtR é feita baseada no processador que você usa na sua máquina para que ele seja mais bem otimizado e tenha um desempenho melhor enquanto tenta quebrar as senhas. Digite make e uma lista com todas as possibilidades será exibida para você. Escolha a mais adequada e:
make clean linux-x86-mmx
Lembre-se de substituir o “linux-x86-mmx” pelo valor que mais se adequar ao seu hardware. Após digitar este comando terá início o processo de compilação, que deve levar menos de 5 minutos ![]()
Todos os binários resultantes da compilação serão colocados no diretório run, vá para lá:
cd ../run
Para testar o binário que foi gerado e verificar se está tudo correto com ele, digite o comando:
./john –test
Isso irá efetuar um teste de benchmarking com todos os algoritmos de criptografia que o JtR suporta. Se você quiser executar o benchmarking com um algoritmo em específico, faça o seguinte:
./john –test –format=[formato que você quer testar]
O parâmetro format pode ser utilizado também quando você estiver tentando quebrar uma senha e souber qual é o formato dela. As opções são DES, BSDI, MD5, BF, AFS e LM.
Uma característica interessante do software é que você não precisa instalá-lo em outros diretórios do sistema: pode utilizar todas as opções e funcionalidades dele diretamente do diretório “run” que é criado quando você compila o programa. Isso não quer dizer que você não possa instalar o software no diretório que quiser: não há restrição nenhuma quanto a isso. Porém, de acordo com a documentação oficial do software instalar ele system-wide (instalar ele em diretórios como /usr/local/bin, por exemplo) é apenas para pessoas que desenvolvem pacotes do John para o ports de sistemas *BSD ou distribuições do Linux. Fica à seu critério instalar system-wide ou simplesmente executar a partir do diretório “run”.
Se você observou direitinho o diretório run do pacote, você irá ver que vários arquivos além do binário do JtR estão presentes lá. São eles:
- Mailer: é um shellscript desenvolvido para enviar emails para os usuários cujas senhas são fracas e foram quebradas. Seu uso é opcional.
- john.conf: é o arquivo de configuração do JtR. Será explicado mais adiante.
- john: é o executável do software.
- password.lst: um arquivo com algumas senhas para serem utilizadas quando se está quebrando uma senha.
- *.chr: são arquivos binários utilizados diretamente pelo JtR para quebrar as senhas.
- unsahdow: Quando você já tem acesso aos arquivos shadow e passwd, este script irá combinar ambos para o uso com o John. Recomenda-se utilizar esta opção com –show (explicado mais adiante).
- unafs: Pega hashes binário com banco de dados AFS e o coloca em um arquivo no estilo do arquivo /etc/passwd de sistemas Unix-like. Sua saída deve ser redirecionada para um arquivo.
- unique: Remove entradas duplicadas de uma wordlist sem modificar a ordem.
É isso, agora que o John já está instalado, vamos configurá-lo!
Configurando o JtR
Toda a configuração do John é feita em um arquivo texto chamado john.conf em sistemas Unix ou john.ini no Windows, por exemplo. Neste arquivo você consegue definir regras para a descoberta de senhas, wordlists, parâmetros para os modos e até definir um novo modo de descoberta de senhas.
Este arquivo é dividido em várias seções. Todas as seções começam com uma linha com seu nome entre colchetes ( [] ). As opções destas seções são definidas em variáveis de modo bem simples, como em:
variável = valor
Os nomes de seções e variáveis são case-insensitive, ou seja, SECAO1 e secao1 são a mesma seção e VAR1 e var1 são a mesma variável. Os caracteres # e ; são completamente ignorados, assim como linhas em branco.
Abaixo estão as explicações das opções dividas por seção:
Options:
- Wordlist: A wordlist a ser utilizada pelo JtR. O arquivo pode estar em qualquer lugar, basta especificar o caminho correto nessa variável.
- Idle: Configura o John para usar seu CPU quando este estiver inativo. Diminui o desempenho da quebra da senha porém não impacta tanto no desempenho de outros programas. O padrão desta opção é N (desabilitado).
- Save: Intervalo no qual o software irá gravar seu progresso para no caso de uma interrupção ele possa recomeçar novamente de onde havia parado.
- Beep: Emite um bip quando uma senha é quebrada.
List.Rules:Single
Nesta seção ficam as regras default do software para a quebra das senhas. São regras como substituição de strings, escrita 1337 e outras ![]()
List.Rules:Wordlist
Nesta seção ficam as regras de substituição de caracteres, modificações de palavras, etc quando se está usando uma wordlist para tentar quebrar as senhas do arquivo.
List.Rules:NT
Nesta seção ficam as regras utilizadas quando se está quebrando senhas cifradas utilizando o algoritmo NTLM (Windows).
Incremental*
Aqui ficam as regras para o tipo de quebra de senhas chamado Incremental (todos os “tipos” de tentativas de quebra de senha que o John utiliza serão explicados mais adiante neste documento).
List.External:*
São alguns filtros pré-definidos para substituição de palavras, eliminação de caracteres indesejados, etc.
Quando você tiver mais experiência com o JtR será bastante útil dar uma lida nessas seções para entender como ele funciona e ter um conhecimento melhor dos algoritmos.
Modos
O JtR utiliza alguns modos para que consiga otimizar a quebra da senha. Estes modos são explicados a seguir:
Modo Wordlist
Para utilizar esse método você vai precisar de uma wordlist. Existem vários lugares na Internet que possuem milhares de wordlists disponíveis gratuitamente, é só dar uma olhada no Google que você irá encontrar várias. Para te ajudar, aqui no item “Wordlists” você encontra vários links para wordlists disponíveis na Internet. Lá você também encontra algumas dicas de como organizar a sua lista. Mas vale lembrar que não é bom que você tenha entradas duplicadas na sua lista, o JtR não vai fazer absolutamente nada com a sua wordlist antes de começar a testar as palavras que tem nela.
Este é o modo mais simples suportado pelo John. Para utilizá-lo você só especifica uma wordlist e algumas regras para ele fazer combinações das palavras que ele encontrar na lista que você especificou. Quando utilizando determinados algoritmos, o JtR se beneficiará se você colocar senhas com tamanhos mais ou menos parecidos perto umas das outras. Por exemplo, seria interessante você colocar as senhas com 8, 6 ou 9 caracteres perto umas das outras na sua wordlist. A wordlist padrão a ser utilizada pelo John é definida no arquivo john.conf.
Modo Single Crack
É neste modo que você deveria começar a tentar quebrar uma senha. Aqui, além de várias regras de mangling serem aplicadas, o JtR vai utilizar mais informações como o nome completo do usuário e seu diretório home para tentar descobrir qual é a senha. Este modo é muito mais rápido que o modo “Wordlist”.
Se você utilizar vários arquivos com senha, provavelmente você irá conseguir quebrar mais senhas do que com apenas 1 arquivo sendo utilizado separadamente.
Modo Incremental
Este é o modo mais poderoso do JtR. Nele serão tentadas todas as combinações possíveis de caracteres para tentar quebrar a senha cifrada. Dada a grande quantidade de combinações possíveis, é recomendável que se defina alguns parâmetros (como tamanho da senha ou conjunto de caracteres a serem utilizados) para que você não fique esperando pela senha ser quebrada por muito tempo. Todos os parâmetros para este modo são definidos no arquivo john.conf, nas seções começadas com Incremental no nome.
Modo External
Esse modo é bastante complexo. Nele você pode definir regras próprias para o John seguir ao tentar quebrar uma senha. Tais regras são definidas em uma linguagem parecida com a C no arquivo de configuração do programa. Ao ser especificado este modo ao tentar quebrar uma senha na linha de comando, o JtR vai pré-processar as funções que você escreveu para este modo e utilizá-las. Repito: este modo é bastante complexo e leva um tempo até você conseguir aprendê-lo e fazer coisas úteis com ele. Se você está só começando, sugiro que utilize algum dos outros modos que foram mostrados anteriormente, mas se você quer se aventurar e tentar utilizar este modo a documentação oficial do software é um bom ponto de partida: www.openwall.com/john/doc/EXTERNAL.shtml.
Agora que você já tem um conhecimento geral de quais são os modos disponíveis, podemos passar às opções de linha de comando.
Linha de comando
O John suporta várias opções de linha de comando, geralmente usadas para ativar determinados modos de uso do software. Preste bastante atenção no case das opções, o JtR é case-sensitive! Uma característica muito legal dele é que é possível abreviar as opções da linha de comando desde que não haja ambiguidade (mais ou menos da maneira como ocorre no shell de roteadores Cisco, por exemplo). Abaixo vou dar uma explicação básica das opções que o John suporta. Se você se esquecer de alguma opção quando estiver utilizando o JtR, é só digitar “john” no terminal e todas as opções serão impressas para você. As opções podem ser definidas utilizando — ou – e seus parâmetros são definidos utilizando = ou :.
- –single: Define o modo “single” para quebrar as senhas.
- –wordlist=ARQUIVO: Define o modo “wordlist” para quebrar as senhas e define o arquivo ARQUIVO como sendo de onde as senhas serão lidas. Aqui você pode utilizar também a opção –stdin para dizer que as palavras virão da entrada padrão.
- –incremental: Define que será utilizado o modo “incremental” para quebrar a senhas. Opcionalmente você pode definir que tipo de modo incremental será utilizado fazendo –incremental[=MODO].
- –external=MODO: Define que será utilizado o modo external.
- –rules: Habilita as regras para wordlist definidas em john.conf quando se utiliza o modo wordlist.
- –stdout[=LENGTH]: Quando utilizado, faz com que o JtR imprima as possíveis senhas direto na saída padrão ao invés de tentá-las contra um hash. Se você definir o parâmetro LENGTH só serão impressas senhas com caracteres até a quantidade especificada em LENGTH.
- –restore[=NOME]: Faz com que uma sessão que foi interrompida anteriormente continue de onde parou. Se você definir um nome diferente para a sessão, especifique o nome dela na linha de comando junto com esta opção. A sessão fica gravada na home do John, em um arquivo chamado john.rec.
- –session=NOME: Define o nome da sessão que pode ser utilizado com a opção restore. A esse nome será automaticamente adicionado a extensão .rec.
- –status[=NOME]: Mostra o status da última sessão ou, se definido o nome da sessão, da sessão especificada.
- –make-charset=ARQ: Gera um arquivo charset para ser utilizado no modo “incremental”.
- –show: Mostra as senhas do arquivo que você especificou para o JtR que já foram quebradas. Esta opção é especialmente útil quando você tem outra instância do JtR rodando.
- –test: Esta opção faz um benchmark de todos os algoritmos compilados no software e os testa para saber se estão funcionando corretamente. Esta opção já foi explicada anteriormente.
- –users=[-]Nome do usuário ou UID: Com esta opção você pode especificar para o JtR quais usuário você quer tentar quebrar a senha. Você pode utilizar o nome de usuário ou o UID dele e pode separar vários usuários utilizando uma vírgula. Utilizando o “-” antes do nome do usuário, você faz com que o John ignore aquele usuário ou UID.
- –groups=[-]GID: Faz com que o John tente quebrar apenas as senhas dos usuários participantes de um grupo especificado (ou ignorá-los, se você utilizar o “-”).
- –shells=[-]SHELL: Apenas tenta quebrar as senhas dos usuários cujas shells sejam iguais à que foi especificada por você na linha de comando. Utilizando o “-” você ignora as shells especificadas.
- –salts=[-]NUMERO: Deixa você especificar o tamanho das senhas que serão (ou não) testadas. Aumenta um pouco a performance para quebrar algumas senhas, porém o tempo total utilizando esta opção acaba sendo o mesmo.
- –format=FORMATO: Permite a você definir o algoritmo a ser usado para quebrar a senha, ignorando a detecção automática do software. Os formatos suportados atualmente são DES, BSDI, MD5, AFS e LM. Você também pode utilizar esta opção quando estiver utilizando o comando –test, como já foi explicado anteriormente neste texto.
- –save-memory=1, 2 ou 3: Esta opção define alguns níveis para dizer ao John com qual nível de otimização ele irá utilizar a memória. Os níveis variam de 1 a 3, sendo 1 a mínima otimização. Esta opção faz com que o JtR não afete muito os outros programas utilizando muita memória.
Exemplos de uso do John
Aqui vou mostrar apenas o uso básico do John. Explorar todas as opções e otimizar o desempenho da descoberta de senhas é a parte mais legal, por isso vou deixar para você mesmo fazer isso.
Nos exemplos que vou mostrar abaixo, vou considerar que você está utilizando o /etc/passwd e o /etc/shadow da sua máquina. Junte estes arquivos utilizando o script unshadow. Também vale lembrar que, se você vai quebrar senhas Windows (LM ou NTLM), você vai precisar de uma ferramenta que faça dumps de hashes destes tipos de senhas. O JtR utiliza o dumper desenvolvido por Jeremy Allison, que pode ser encontrado aqui.
Ok, agora você já tem o arquivo com as senhas e usuários que você fez utilizando o unshadow vamos começar a brincar de cracker ![]()
O modo mais simples de se usar o John é especificar o arquivo que tem as senhas e usuário e deixar ele fazer tudo automaticamente. Ele irá começar com o modo single crack, depois irá passar para o modo wordlist e finalmente irá passar para o modo incremental. A linha de comando fica assim:
./john senhas.txt
Se você, ao analisar o arquivo, achar que alguns usuários possuem shell inválidas como o /bin/false, você pode fazer com que o John não perca tempo tentando quebrar a senha de tais contas assim:
./john –show –shells=-/bin/false senhas.txt
Assim, todo usuário que o John encontrar e que possuir a(s) shell(s) listada será ignorado e ele passará para o próximo.
Se você quiser quebrar a senha de vários arquivos ao mesmo tempo no modo single crack, por exemplo, utilize a seguinte linha de comando:
./john –single senhas.txt senhas2.txt
Na linha acima, de acordo com as opções explicadas anteriormente, –single poderia ser abreviado para –si pois assim não haveria nenhuma ambiguidade em relação a este comando.
Se você quiser especificar o algoritmo a ser usado para quebrar as senhas:
./john –show –format=DES –single senhas.txt
Substitua o DES pelo formato correto das senhas presentes no arquivo.
Conclusão
Manter uma política de senhas fortes pode lhe poupar muita dor de cabeça com ataques brute force. Uma auditoria nas senhas de todos os seus usuários deve ser feita para garantir que você continua seguro e não corre muitos riscos utilizando senhas simples demais.
Tentei abranger o máximo possível das opções do John para que você tenha um bom entendimento do software e consiga utilizá-lo eficientemente para garantir a segurança de sua rede ou para melhorar o seu penetration testing. O que você vai fazer com o software é responsabilidade sua.
Caso você precise de mais informações sobre algum tópico que não foi coberto neste texto, consulte a documentação on-line do John. Ela é excelente, porém está disponível apenas em inglês. Acesse este site e dê uma lida nela!
10 coisas que você deve fazer antes de conectar seu Linux à Internet
10/04/09
Este texto é uma tradução. O texto original está disponível no site http://www.builderau.com.au/program/linux/soa/10_things_you_should_do_to…?feed=rss
Não coloquei algumas partes do texto nas quais o autor focava muito no Mandriva. Tentei deixar o texto um pouco generalizado, podendo ser usado para qualquer distribuição que você queira.
Finalidade
O Linux, assim como o Windows, é apenas um sistema operacional. Quando falo com colegas que estão usando o Linux pela primeira vez, esta é a primeira coisa que deixo clara. O Linux não é uma varinha de condão que pode ser utilizada para resolver todos os problemas da informática. O Linux tem vários problemas, assim como o Windows. Não há um sistema operacional perfeito ou completamente seguro. Essa máquina vai ser um servidor ou uma estação de trabalho? Pensando nisso, vários problemas são evitados.
Instalação
Diferente do Windows, o Linux não tem uma versão específica para servidores, outra para estações de trabalho, etc. Durante uma instalação típica, a escolha sobre quais softwares serão instalados é sua. Portanto, de acordo com os softwares que você instala, você define o papel da máquina: servidor ou estação de trabalho. Por isso, você deve saber muito bem quais são os pacotes que o instalador da sua distribuição está instalando para você. Por exemplo, algumas distribuições irão instalar e configurar um servidor Samba ou um servidor de email como parte da instalação básica. Dependendo da finalidade do seu computador e do nível de segurança que você quer, esses serviços podem ser desnecessários ou indesejados. Tirando um tempinho para se familiarizar com o instalador da sua distribuição pode evitar muitas dores de cabeça e reinstalações.
Instalar e configurar um firewall
Um firewall provê uma camada a mais de segurança em qualquer rede. Estes softwares permitem que você filtre o tráfego que chega no seu PC, evitando problemas. O software Shorewall (que utiliza o IPTables/Netfilter como backend) simplifica a configuração de um firewall pessoal (um outro pacote bastante interessante é o KMyFirewall, que utiliza o Qt). Instalando e configurando firewalls para sua estação o quanto antes, você pode restringir ou bloquear determinados tipos de tráfego, tanto entrando quanto saindo do seu PC.
Bloquear ou permitir determinados tipos de tráfego da rede é apenas uma camada de segurança, mas como você pode adicionar mais segurança (além das regras do firewall) para um serviço que você realmente precisa que usuários da internet ou intranet utilizem no seu computador? Segurança baseada em hosts é mais uma camada de segurança.
Configurando os arquivos /etc/hosts.deny e /etc/hosts.allow
Na seção anterior, vimos como configurar um firewall para permitir conexões de outros hosts aos serviços que a nossa máquina está provendo utilizando um firewall. Para aumentar a segurança contra tráfego indesejado ou atacantes, podemos limitar os hosts que se conectam a determinados serviços. Os arquivos /etc/hosts.deny e /etc/hosts.allow nos permitem fazer isso.
Quando um computador tenta acessar um serviço como o SSH, por exemplo, os arquivos /etc/hosts.deny e /etc/hosts.allow são processados e o acesso será permitido ou negado de acordo com as regras destes arquivos. Geralmente, se você esta instalando uma estação de trabalho, é útil se colocar a seguinte linha no /etc/hosts.deny:
ALL:ALL
Isso vai negar o acesso de qualquer host a qualquer serviço. Parece muito restritivo à primeira vista, mas depois disso você pode adicionar hosts no arquivo /etc/hosts.allow para permitir o acesso aos serviços. Abaixo você encontra um exemplo que permite a alguns hosts conectar ao SSH:
sshd: 192.168.0.1 #permite o host 192.168.0.1 acessar o SSH
sshd: foo.bar.com #permite o acesso do host foo.bar.com ao SSH
Estes dois arquivos oferecem uma filtragem muito boa baseada em hosts.
Desabilite ou remova serviços não utilizados
Assim como no Windows, no seu Linux podem haver serviços rodando em background que você não tem conhecimento ou que não queria que estivesse lá. Utilizando o comando chkconfig (em distribuições baseadas em Red Hat) ou entrando no diretório /etc/rc.d (no Slackware), você pode verificar quais serviços são inicializados e que você não quer e desabilitá-los. Serviços que não estão rodando não oferecem riscos à segurança e não consomem recursos da máquina.
Aumente a segurança de serviços necessários
Se a sua máquina tem alguns serviços que devem receber conexões da Internet, tenha certeza de que você conhece muito bem todas as opções de configuração destes serviços. Por exemplo, se você precisa utilizar o SSH, tenha certeza de que você verificou todos os detalhes do arquivo /etc/ssh/sshd_config antes de habilitar o serviço. O mínimo que você deve fazer é desabilitar o login do root. Toda máquina Linux tem um usuário root que pode logar via SSH, quando você desabilita este usuário, você inibe ataque de brute force pois o atacante ainda não sabe qual usuário é valido nessa máquina. Se você deixar o login remoto do root habilitado, o atacante só vai precisar descobrir a senha.
Configure as opções de rede do kernel
O prórpio kernel Linux pode oferecer algumas opções de segurança para a rede. Se familiarize com as opções disponíveis no arquivo /etc/sysctl.conf e as configure conforme necessário. As opções deste arquivo controlam, por exemplo, que tipo de informações sobre a rede são logadas nos logs do sistema.
Conecte o PC a um roteador
Um roteador (mesmo que doméstico) é um hardware bem comum hoje em dia. Ele é a primeira camada de segurança para qualquer rede, seja ela doméstica ou corporativa e permite que vários computadores utilizem o mesmo endereço IP para o acesso à Internet. Isso geralmente dificulta a ação de um atacante ou programa malicioso pois ele bloqueia qualquer tráfego que você não permitiu. Roteadores domésticos são apenas versões mais enxutas de roteadores corporativos que empresas utilizam para separar sua rede da Internet.
Atualize
Sempre mantenha o software do seu computador atualizado com os últimos patches de segurança seja qual for o sistema operacional que você está utilizando. A sua distribuição irá sempre lançar patches de segurança regularmente e estes devem sempre ser aplicados. Como no Windows, esta deve ser a sua primeira tarefa do dia
.
Outros softwares
Você também deve instalar outros softwares que aumentem a segurança do seu sistema.
Bastille-Linux (http://www.bastille-linux.org/) é um programa que pode ser usado para aumentar a segurança de certos aspectos do Linux. Ele desenvolve uma política de segurança que é aplicada ao sistema e produz relatórios sobre potenciais problemas de segurança. Além disso, é uma ótima ferramenta para se aprender sobre detalhes da segurança do seu Linux.
O Tripwire (http://sourceforge.net/projects/tripwire) é um software que monitora os binários do seu sistema procurando por modificações não autorizadas. Frequentemente um hacker modifica os binários do seu sistema para dificultar a detecção de uma intrusão. Os programas modificados lhe fornecem informações falsas permitindo que o hacker mantenha o controle sobre seu sistema sem que você perceba.
