terça-feira, 29 de novembro de 2011

Descobrindo senhas de contas no sistema Windows

O Ophcrack (http://ophcrack.sourceforge.net/) é um descobridor de senhas de Windows, gratuito e de código livre, baseado nas "rainbow tables". Utiliza uma técnica onde consome-se mais memória, para armazenar as "rainbow tables", entretanto ganha-se tempo usando menos a CPU (time-memory trade-off).

Uma "rainbow table" é uma tabela de consulta contendo hashes pré-calculados de combinações de senhas, para um procedimento reverso. O custo desta técnica está na necessidade de um grande espaço de armazenamento para as "rainbow tables", pois algumas chegam a mais de 130 GB.

Esta ferramenta é capaz de descobrir 99% das senhas alfanuméricas em segundos. Suporta os hashes LM and NTLM, do Windows XP e Vista respectivamente.

O Ophcrack possui uma interface gráfica e tem versões para os principais sistemas operacionais. O pacote disponível para instalação no Linux não traz junto as tabelas de consulta. As "rainbow tables" devem ser baixadas à parte em http://ophcrack.sourceforge.net/tables.php e apenas as menores são gratuitas. As tabelas para Windows XP não servem para o Windows Vista e vice-versa.

Uma alternativa é a versão em LiveCD, que inclui a tabela gratuita. Existe um LiveCD para o XP e outro para o Vista.

Segundo a documentação do Ophcrack, estes são os passos do processo para descobrir a senha:

(opcional) Inicie o Ophcrack e configure o número de threads para, o número de núcleos que o processador possuir, mais um.

(obrigatório) Carregue o arquivo SAM do Windows. (/Windows/System32/config/)

(opcional) Remova as contas de usuários que não tem interesse em descobrir.

(obrigatório) Instale, ative e ordene as "rainbow tables" que deseja usar. Se for descobrir os hashs LM, do Windows XP, instale as tabelas para XP. Se for descobrir os hashs NT, do Windows Vista, instale as tabelas para Vista. Ordene-as com as menores tabelas primeiro.

(obrigatório) Inicie o processo para descobrir a senha (botão Crack). Quando a senha for descoberta, será vista no campo 'NT Pwd'.

Para senhas simples, com poucos caracteres, o Ophcrack pode usar a força bruta, combinando os caracteres durante a execução. Descobrir uma senha pequena não consome muito processamento.

As diferentes tabelas fornecidas são para diferentes combinações de caracteres, incluindo palavras do dicionário (gratuita), somente números, letras e números, caracteres especiais etc. Quanto maior a variedade de caracteres possíveis e o tamanho máximo da senha, maior será a tabela de consulta. Por isso estes tamanhos gigantescos das "rainbow tables".

terça-feira, 22 de novembro de 2011

Livros fascinantes sobre física, cosmologia e astronomia

O hábito da leitura é fundamental para a formação do ser humano. Mesmo que se busque apenas uma simples informação, o conteúdo absorvido durante a leitura, deixa a pessoa, a partir daquele momento, diferente do que era.

Para quem gosta de ler a respeito e procura saber mais sobre física teórica, cosmologia e astronomia, eu recomendo estes excelentes livros. São autores de reconhecimento mundial e obras incríveis para a divulgação científica.

Não são livros técnicos ou artigos científicos, são apenas leituras agradáveis para o leitor comum, com linguagem simples e acessível para pessoas de qualquer área.

Título: O universo numa casca de noz
Autor: Stephen Hawking
Editora: Arx
Edição: 5ª
Ano: 2002
Idioma: Português

Uma extraordinária viagem através do espaço-tempo, repleto de ilustrações e explicações claras sobre os temas mais atraentes da física teórica. Mostrando os segredos do universo, da supergravidade à supersimetria, da teoria quântica à teoria M. Onde a semente cósmica do universo era uma pequena noz.

Título: Uma nova história do tempo
Autor: Stephen Hawking & Leonard Mlodinow
Editora: Ediouro
Edição: 1ª
Ano: 2005
Idioma: Português

Trata-se de uma nova versão do livro "Uma breve história do tempo" a qual atualiza as questões mais difíceis da física moderna. A natureza do espaço e do tempo, e a história e o futuro do universo, desde a teoria das cordas até a teoria unificada.

Título: O tecido do cosmo
Subtítulo: O espaço, o tempo e a textura da realidade
Autor: Brian Greene
Editora: Companhia das Letras
Edição: 1ª
Ano: 2005
Idioma: Português

Neste livro o autor discorre sobre os grandes temas da cosmologia. Um extenso conteúdo que explica da origem do universo ao futuro mais remoto, em uma viagem pelo espaço-tempo, mostrando as principais teorias da cosmologia quântica, numa linguagem para o leitor comum.

Título: Mundos paralelos
Subtítulo: Uma jornada através da criação, das dimensões superiores e do futuro do cosmo
Autor: Michio Kaku
Editora: Rocco
Edição: 1ª
Ano: 2007
Idioma: Português

Mundos paralelos é uma jornada por buracos negros, máquinas do tempo e universos alternativos. Apresentando a teoria M, capaz de explicar a ideia de universos paralelos. Traz de forma simples e acessível as descobertas que estão mudando o modo de compreender o universo.

Título: Illustrated Encyclopedia of the Universe
Autor: Martin Rees (general editor)
Editora: Dorling Kindersley
Ano: 2009
Idioma: Inglês

Um fabuloso guia visual do universo, explorando cada aspecto do espaço desde o Big Bang aos planetas do Sistema Solar. Com um compreensivo atlas do céu noturno, descrições detalhadas, textos explicativos e ilustrações de inúmeros objetos estelares.

Título: As grandes equações
Subtítulo: A história das fórmulas matemáticas mais importantes e os cientistas que as criaram
Autor: Robert P. Crease
Editora: Zahar
Edição: 1ª
Ano: 2011
Idioma: Português

No livro o autor conta como surgiram as fórmulas matemáticas mais famosas, desde Pitágoras até Heisenberg. Como foi a vida destes cientistas que criaram as equações mais importantes para a história da humanidade.

Título: O grande projeto
Subtítulo: Novas respostas para as questões definitivas da vida
Autor: Stephen Hawking & Leonard Mlodinow
Editora: Nova Fronteira
Edição: 1ª
Ano: 2011
Idioma: Português

O livro trata sucintamente das questões do surgimento e história do universo e da existência de seres como nós. Apresentando as teorias científicas mais recentes sobre o "grande projeto" do nosso universo e da teoria de tudo, em uma linguagem simples porém brilhante.

sexta-feira, 18 de novembro de 2011

Problema de Lógica: Figuras geométricas no quadriculado

Veja esta imagem que ilustra o problema. Na parte superior há um triângulo formado por quatro figuras geométricas e na parte inferior as mesmas figuras formam um outro triângulo, com as mesmas dimensões porém aparece um vazio em sua área:





RESPOSTA





A explicação para isto está na ilusão de óptica que a imagem apresenta. Os triângulos azul e vermelho não possuem as respectivas hipotenusas com o mesmo ângulo de inclinação, assim a hipotenusa do triângulo, formado pelas quatro figuras, não é exatamente uma reta. Na parte superior há uma ligeira concavidade na hipotenusa e na parte inferior há uma ligeira convexidade. Tão ligeira que nos dá a ilusão de óptica de parecer uma reta em ambas as partes. Esta sutil diferença proporciona uma adaptação na área total equivalente ao pequeno quadradinho vazio que aparece.

Usando um dispositivo USB como fonte de instalação do Linux

A instalação de um sistema Linux pode ser realizada de diversas formas. A mais comum é fazer o download da imagem ISO do DVD/CD de instalação e gravar a imagem em uma mídia óptica.

Como alternativa, ao invés de criar um DVD de instalação a partir da imagem ISO, pode-se preparar um USB flash drive, com a mesma imagem ISO, e usá-lo como fonte de instalação completa da distribuição Linux.

Na documentação oficial da distribuição Fedora (http://docs.fedoraproject.org/en-US/Fedora/16/html/Installation_Guide/index.html), no Guia de Instalação capítulo 3.2 e subcapítulos, são demonstradas três formas de preparar um dispositivo de armazenamento USB para este propósito.

A primeira é com a utilização de uma ferramenta gráfica denominada "LiveUSB Creator". Esta ferramenta tem versões para MS Windows e Linux (pacote liveusb-creator). Seu uso é simples, basta navegar até o local onde se encontra a imagem, selecioná-la, e criar o dispositivo "Live USB". Este método não remove os dados existentes na mídia USB.

A segunda, somente em ambiente Linux, utiliza a ferramenta livecd-tools (pacote de mesmo nome) em linha de comando no prompt do Shell. Esta ferramenta possui uma interface interativa em modo texto e com poucas etapas ela transfere a imagem ISO para a mídia USB, preparando o dispositivo para suportar o boot da máquina. Este método também não remove os dados existentes na mídia USB. Veja um exemplo de linha de comando, usa-se o comando 'livecd-iso-to-disk' contido no pacote livecd-tools:

# livecd-iso-to-disk imagem.iso /dev/sdX1

No caminho para a mídia USB, informe até a partição (1). Neste método pode ocorrer da ferramenta reclamar que a partição do dispositivo USB não está marcada como bootável. Ela recomendará o uso da ferramenta 'parted', como exemplificada a seguir:

# /sbin/parted /dev/sdX
(parted) toggle 1 boot
(parted) quit

A maioria das mídias USB contém apenas uma partição, uma situação diferente pode depender de outros procedimentos não demonstrados aqui.

A terceira utiliza a ferramenta dd do Linux (pacote coreutils) em linha de comando no prompt do Shell. Esta ferramenta transfere bit a bit todo o conteúdo da imagem para o dispositivo USB. No comando informe a imagem como entrada e o caminho para o dispositivo como saída, por exemplo:

# dd if=imagem.iso of=/dev/sdX

Este método destrói qualquer informação armazenada na mídia USB, portanto tenha cuidado ao especificar o caminho para o dispositivo.

Importante salientar que, em todos os métodos, a capacidade da mídia USB deve ser compatível com o tamanho da imagem ISO, senão não caberá. E a mídia USB não deve estar montada durante o processo de criação da fonte de instalação.

O uso de um USB flash drive como fonte de instalação é necessário quando a máquina não dispõe de uma unidade de leitura óptica, como ocorre nos netbooks.

quinta-feira, 17 de novembro de 2011

Computação forense em Linux: arquivos e diretórios importantes

Muitos arquivos armazenados pelo sistema Linux podem fornecer informações valiosas sobre o perfil, propósito e uso do computador. Tais como arquivos de configuração de ambiente, configuração dos programas, arquivos gerados pelo sistema etc.

Também alguns locais específicos podem conter arquivos de interesse forense, como diretórios de arquivos temporários, de log, de uso da rede etc.

Configuração do sistema:

/etc/

O diretório '/etc/' contém todos os arquivos de configuração do sistema operacional. Também existe o subdiretório '/etc/skel/' que contém os arquivos que irão popular inicialmente o '/home/usuario' de um usuário recém criado. O diretório '/etc/' é um diretório importante pois contém todas as configurações realizadas pelo administrador do sistema.

Contas de usuários e grupos:

/etc/passwd

O arquivo '/etc/passwd' contém as contas dos usuários configurados no sistema. Cada definição de conta fica em uma linha e o conteúdo das linhas estão separados em campos.

/etc/shadow

O arquivo '/etc/shadow' armazena as senhas em um formato criptografado, com algumas informações adicionais relacionadas as senhas dos usuários. Contém uma entrada por linha, separada em campos, para cada usuário definido no '/etc/passwd'.

/etc/group

O arquivo '/etc/group' define os grupos os quais os usuários pertencem. Cada grupo é definido em uma linha separada por campos.

/etc/gshadow

O arquivo '/etc/gshadow' armazena as senhas dos grupos em um formato criptografado. Contém uma entrada por linha, separada em campos, para cada grupo definido no '/etc/group'.

Ambiente dos usuários:

/etc/bashrc

O arquivo '/etc/bashrc' é um arquivo de inicialização do shell de alcance em todo o sistema. É executado por todos os usuários quando um novo shell é aberto. É usado para definir funções e apelidos.

/etc/profile

O arquivo '/etc/profile' contém configurações de ambiente e chamadas de inicialização de programas de alcance em todo o sistema. É usado por todos os usuários. Este arquivo somente é executado durante o login do usuário. Configurações complexas devem ser definidas no diretório '/etc/profile.d/'.

/etc/profile.d/

Todas as configurações complexas de ambiente são colocadas em arquivos neste diretório. Os scripts deste diretório são acionados por um laço "for" no arquivo '/etc/profile'.

Os arquivos '/etc/bashrc' e '/etc/profile' possuem arquivos equivalentes para o diretório pessoal do usuário. São os arquivos '~/.bashrc' e '~/.bash_profile'. Existe também o arquivo '~/.bash_logout' que é lido e executado toda vez que o usuário sai de um shell. Estes arquivos funcionam apenas para a sessão do próprio usuário.

Serviços em execução:

Os serviços são programas (daemons) que são iniciados e mantidos em execução em segundo plano, ficam monitorando o computador e respondem às mudanças.

Para organizar o controle dos serviços, muitas variantes do Unix System V, e isto inclui diversas distribuições do Linux, usam scripts nos diretórios '/etc/rcN.d/' para controlar quais serviços serão iniciados dentre os níveis de execução.

Se um serviço deve ser iniciado no nível de execução 5 então é colocado o seu script em '/etc/rc5.d/'.

Existe também o script '/etc/rc.d/rc.local', que é executado após os outros scripts de inicialização de serviço.

Para evitar múltiplas cópias do mesmo script, foi adotado o padrão de colocar todos os scripts de controle dos serviços no diretório '/etc/init.d/' e usar links simbólicos para estes scripts nos diretórios '/etc/rcN.d/'.

Na distribuição Fedora os links e os scripts estão nos diretórios '/etc/rc.d/rcN.d/' e '/etc/rc.d/init.d/', porém é mantido no diretório '/etc/' os links simbólicos para estes diretórios.

Outras distros adotam uma estrutura distinta: No Slackware os scripts ficam em '/etc/rc.d/' e são executados se estiverem com permissão de execução. No Debian os scripts ficam em '/etc/init.d/' e são executados se tiverem links em '/etc/rcN.d/'. E no openSUSE os scripts ficam em '/etc/init.d/' e são executados se tiverem links em '/etc/init.d/rcN.d/'.

Configuração de rede:

Alguns arquivos, localizados a partir do diretório '/etc/', são para armazenar as configurações de rede. (estrutura Red Hat/Fedora)

/etc/hosts                       Lista de endereços IP e os nomes do host
/etc/host.conf                   Especifica como o sistema determina os nomes do host
/etc/resolv.conf                 Especifica o servidor do serviço de DNS
/etc/networks                    Lista de endereços IP e os nomes das redes
/etc/sysconfig/network           Ativa a rede, especifica nomes do host e do gateway
/etc/sysconfig/network-scripts/  Configurações e scripts do serviço "network"
/etc/sysconfig/networking/       Configurações geradas pela ferramenta gráfica de rede
/etc/sysconfig/iptables          Regras do firewall

Servidores de rede:

Uma máquina com sistema Linux pode estar preparada para prestar diversos serviços de rede. Cada servidor possui diretórios específicos para configuração do serviço:

/etc/samba/                      Software para operar com máquinas Windows pela rede
/etc/httpd/                      Servidor HTTP Apache
/etc/vsftpd/                     Servidor FTP vsftpd
/etc/squid/                      Servidor proxy Squid
/etc/ssh/                        Servidor SSH
/etc/dhcp/                       Servidor DHCP
/etc/ltsp/                       Servidor LTSP (Linux Terminal Server)

Os servidores possuem também diretórios para armazenamento dos arquivos compartilhados:

/var/www/                        Páginas servidas pelo Apache
/var/ftp/                        Arquivos servidos por FTP
/var/spool/squid/                Cache do Squid
/var/lib/dhcpd/dhcpd.leases      IPs atribuídos por DHCP
/var/lib/tftpboot/ltsp/          Configuração dos terminais LTSP
/opt/ltsp/                       Imagens de sistema para LTSP

Arquivos temporários e log:

Um sistema ativo, com diversos processos em execução, armazena automaticamente muitas informações e dados dos processos. Arquivos de log registram o uso do sistema, de uma forma geral ou especificamente para determinada aplicação. Diversas aplicações armazenam cópias dos arquivos processados em cache ou geram arquivos temporários.

/var/log/                        Arquivos de log diversos
/var/log/messages                Arquivo de log geral do sistema
/var/spool/                      Dados que esperam por processamento
/var/run/                        Dados que descrevem o sistema desde sua inicialização
/var/cache/                      Cache de dados de aplicativos
/var/tmp/                        Arquivos temporários preservados entre reinicializações
/tmp/                            Arquivos temporários gerais

Aplicações para Internet:

Todos os aplicativos de Internet para acesso à web, e-mail, mensagens instantâneas, possuem diretórios e arquivos para armazenar o conteúdo gerenciado. Os navegadores podem armazenar o histórico das páginas visitadas e os respectivos arquivos baixados em cache. Os mensageiros instantâneos podem armazenar a lista de contatos e as mensagens trocadas. Os clientes de e-mail podem armazenar o catálogo de endereços e os e-mails enviados e recebidos. Até alguns plugins podem armazenar o conteúdo multimídia acessado. Cada usuário terá o seu conjunto de diretórios para estes aplicativos.

Navegador Firefox

~/.mozilla/firefox/xxxxxxxx.default/Cache/
~/.mozilla/firefox/xxxxxxxx.default/

Navegador Opera

~/.opera/cache/
~/.opera/

Navegador Google Chrome

~/.cache/google-chrome/Cache/
~/.config/google-chrome/Default/

Comunicador aMSN

~/.amsn/

Comunicador Kopete

~/.kde/share/apps/kopete
~/.kde/share/config/kopeterc

Comunicador Pidgin

~/.purple/

Cliente de e-mail Thunderbird

~/.thunderbird/xxxxxxxx.default/
~/.thunderbird/xxxxxxxx.default/Mail/
~/.thunderbird/xxxxxxxx.default/Cache/

Plugin Adobe Flash Player

~/.macromedia/Flash_Player/#SharedObjects/

Plugin Java

~/.java/deployment/cache/6.0/

Conhecer os locais das configurações e demais dados das diversas aplicações é muito importante para o examinador forense. O sistema é capaz de armazenar informações valiosas, muitas de forma automática e transparente para o administrador e usuário.

quinta-feira, 10 de novembro de 2011

Obtendo ajuda no Linux

No ambiente em modo texto do sistema operacional Linux, há dois comandos que exibem a ajuda dos diversos programas instalados no sistema. Estes documentos são as Páginas de Manual (Man Pages) e os Documentos de Informação (Info Documents).

Os comandos 'man' e 'info' exibem em um terminal em modo texto o conteúdo dos arquivos localizados em '/usr/share/man/' e '/usr/share/info/', respectivamente, em uma formatação de texto particular. Estes arquivos de ajuda são comumente fornecidos pelos próprios pacotes dos programas ou por "pacotões" como o man-pages, que contém uma larga coleção de documentos da Linux Documentation Project.


Páginas de Manual:

As páginas de manual vem originalmente do Unix e a maioria dos programas contém a ajuda neste formato. Possuem uma navegação simples pelas páginas, semelhante a ferramenta 'less', e geralmente tem o mesmo nome do respectivo programa.

O manual é dividido em seções numeradas de 1 a 9, de acordo com o tipo da página, e armazenadas em arquivos distintos (na maioria das vezes, as seções que mais interessam são 1, 5 e 8):

Seção   Tipo
1       Programas executáveis ou comandos do shell
2       Chamadas do sistema (funções do kernel)
3       Chamadas da biblioteca (funções de bibliotecas)
4       Arquivos especiais
5       Formatos de arquivo e convenções
6       Jogos
7       Miscelânea
8       Comandos do administrador do sistema
9       Rotinas do kernel

Cada página contém convencionalmente as seções NOME, SINOPSE, CONFIGURAÇÃO, DESCRIÇÃO, OPÇÕES, AMBIENTE, ARQUIVOS, NOTAS, AUTORES etc., e uma formatação nos caracteres (negrito, itálico, sublinhado etc.) para o significado das palavras (contudo limitada na capacidade de renderização do terminal).

Para executar o comando 'man' com determinada página de manual digita-se a linha de comando com a seguinte sintaxe:

man [seção] página

Por exemplo, para consultar a página de manual de um programa, usa-se:

# man ls          Exibe a página de manual do comando ls.
# man 8 chmod     Exibe a seção 8 da página de manual do comando chmod.

É possível procurar por uma determinada palavra, em todas as páginas manuais existentes no sistema, utilizando o parâmetro -K na linha de comando. Por exemplo:

# man -K palavra

As setas e as teclas PgUp e PgDn percorrem a página e para sair da página de manual pressiona-se a tecla Q.


Documentos de Informação:

Um outro meio de obter informações sobre os comandos, além das páginas de manual, é a documentação em formato Info, produzida pela ferramenta Texinfo e visualizada pelo comando 'info'.

Esta documentação utiliza recursos de hipertexto para navegação entre os textos, tornando mais confortável a leitura dos documentos, e da mesma forma, o arquivo Info tem o mesmo nome do respectivo programa.

Para consultar esta documentação, utiliza-se o comando 'info' seguindo a sintaxe:

info [documento]

Se não for especificado o documento, será exibido o diretório principal como menu, com uma lista de todos os documentos disponíveis.

Exemplo:

# info ls

Para navegar dentro de um documento, usa-se a tecla TAB para mover o cursor para uma ligação e pressionando ENTER para abrir. A tecla P retorna para a página anterior, N vai para a próxima página e U sobe um nível. As setas e as teclas PgUp e PgDn percorrem a página e também avançam ou retrocedem entre elas. A qualquer momento pode-se pressionar a tecla H para entrar no texto de ajuda do Info. Para sair, pressiona-se Q.

Não são todos os programas que trazem a ajuda neste formato, este formato é mais aproveitado pelos utilitários Gnu.


Estes são os dois comandos que trazem ajuda para o usuário de Linux no ambiente texto. Experimente executar "man man", "info info", "man info" e "info man" para conhecer mais!