Técnicas de Investigação de Cibercrimes – Parte 1/3

Furto de Dados

Os crimes por computador são de grande alcance e podem afetar os registros pessoais de um indivíduo, uma vez que eles podem repercutir em muitas coisas, tais como os recursos financeiros de um banco, causando confusão e, potencialmente, afetar as contas dos clientes.
Também o crime cibernético pode resultar no comprometimento de informações confidenciais, afetando os preços praticados por uma instituição financeira em negociações entre as partes.
Pode ser um ataque a uma empresa, falsas informações de marketing espalhadas na internet que causam desinformação e acaba por alterar estratégias empregadas por equipes de venda, ou, simplesmente a ação de derrubar os servidores de um prestador de serviços de Internet com um ataque de negação de serviço.
Vamos explorar cada um destes aspectos, o furto de dados, a desinformação, a negação de serviço e procurar dar uma breve introdução aos conceitos por trás de uma investigação.
Ao longo deste artigo vamos começar a formar uma abordagem para a investigação de crimes de computador e outros crimes conexos, vendo algumas das formas pela qual o invasor cobre seus rastros.

Furto de Dados

De todos os tipos de atos maliciosos que podemos atribuir aos criminosos por computadores, talvez o mais inócuo seja o furto de dados, pois o ladrão cibernético pode invadir um sistema, furtar informações confidenciais, cobrir seus rastros, e deixar condições para que consiga voltar num outro dia.
Se o invasor é hábil e medidas de segurança não tiverem sido adotadas, você nunca vai saber que o furto ocorreu.
Ao contrário do furto de dinheiro ou documentos em papel, o furto de dados de computador não deixa um vazio onde o item furtado se encontrava.
Se eu furtar o dinheiro de um banco, o dinheiro desapareceu e caso um investigador veja a cena do crime verá que o que ali se encontrava foi removido, sendo o mesmo verdadeiro para documentos em papel.
Furto de dados, no entanto, não deixa esse vazio. Se as medidas para detectar a intrusão e posterior furto não forem adotadas, o furto vai passar despercebido na maioria dos casos.
Portanto, todo o esforço do investigador deve ser focado em duas tarefas importantes: determinar que um furto realmente ocorreu e identificar a natureza e origem do furto.
Dentre os vários tipos de crime, furto de dados é único, pois há como ele progredir sem ser detectado e quando isto ocorre pode ser difícil de se provar que realmente ocorreu.
Há uma variedade de razões para isso uma vez que em primeiro lugar as ações de “LER” (Read) não são, geralmente, registradas pelo computador ou servidor, o que implica que normalmente é necessário um método alternativo para que se possa determinar que um arquivo foi acessado.
Em segundo lugar, a consulta de um arquivo não é, por si só, prova de que foi comprometido, pois se um invasor realizar o “upload” de um arquivo sensível de nosso sistema, geralmente podemos assumir que ele será lido.
No entanto, existem outras maneiras de comprometer um arquivo sem que ele seja explicitamente carregado.
Por exemplo, um dos arquivos mais sensíveis em um computador com sistema operacional “Unix” é o arquivo de senha. Embora os sistemas operacionais atuais tenham um mecanismo para proteger os arquivos de senhas (passwords shadowed), há um grande número de máquinas antigas que não possuem tais refinamentos.
Comprometer uma senha, assim como um computador, implica apenas que o invasor tenha acesso a ela uma única vez, exigindo para isto apenas um “telnet” (terminal virtual) do programa com a capacidade de iniciar uma sessão.
A maioria dos aplicativos de telnet para “P.C.” existentes na atualidade têm esta capacidade.
O invasor entra pela primeira vez no computador da vítima, então, usando telnet, ele ou ela faz um “READ” do arquivo “/etc/passwd”, com um simples comando.
Durante a leitura do arquivo, o programa telnet no PC do invasor inicia uma sessão. No final da sessão, o invasor “limpa” os arquivos “log” do sistema, as saídas do computador da vítima, e edita o registro da sessão para deixar apenas o arquivo de senha. O último passo é rodar um “cracker” de senhas, depois de editar o arquivo e fazer uso de todas as senhas encontradas.
Dependendo do formato do arquivo, outros dados confidenciais podem ser colhidos de forma similar, uma vez que qualquer arquivo de texto puro está sujeito a este tipo de comprometimento.
Outro uso da função de registro de telnet é a gravação de sessões para a realização de um “data mining” de dados, uma vez que o invasor nunca terá tempo de ler muito do que foi encontrado no sistema invadido.

O tempo é o pior inimigo do invasor.

Um invasor com conhecimento adequado irá evitar a qualquer custo realizar uma conexão muito longa na máquina da vítima. No entanto, mesmo para os mais qualificados invasores certa quantidade de navegação no sistema é necessária antes que ele ou ela realmente acha algo útil.
Quando um ladrão de dados localiza um banco de dados sensíveis, por exemplo, ele ou ela vai simplesmente realizar consultas e registrar os resultados. Os “logs” da sessão fornecem amplos recursos para análise posterior. Só nestas circunstâncias em que um arquivo não pode ser visualizado ou uma busca num banco de dados não pode ser feita é que um ladrão hábil irá transferir os dados para um arquivo.
No entanto, existem técnicas para transferências de arquivos que permitem ao invasor realizar uma sessão de transferência de arquivo sem ser necessário efetuar “log in”, devendo ser levado em consideração pelo investigador o uso de “TFTP”.
“Trivial File Transfer Protocol” ou simplesmente “TFTP”, onde “trivial” indica algo fácil, descomplicado, ilustrando bem a função do TFTP, é uma espécie de parente do “FTP” (file transfer protocol), mas que utiliza portas “UDP” para transferir arquivos, sem nenhum tipo de verificação de erros e sem muitos recursos de segurança. Os dados são simplesmente transmitidos da forma mais rápida e simples possível.
Um dos usos mais comuns para o TFTP é em terminais “diskless”, que dão boot através da rede. Por ser um protocolo extremamente simples, o software inicial necessário nos clientes é muito pequeno da ordem de poucos KB, que cabe comodamente na ROM da placa de rede ou num disquete.
Este processo não pode usar um “ID” e senha, pois o “TFTP” não requer. Obviamente, isso representa um benefício para qualquer hacker que quer roubar arquivos sem deixar vestígios. Felizmente, a maioria dos administradores de sistemas “Unix” estão aprendendo a usar “TFTP” somente se for expressamente necessário para inicializações. Mesmo assim, há precauções que os administradores devem tomar para garantir que não corra abusos no uso do “TFTP”.
No entanto, suponha que um atacante ganhou acesso “root” e quer deixar no sistema uma porta oculta para transferência de arquivos (“back door”). Uma vez que o invasor ganhou acesso “root” (tornando-se o “superuser”), ele ou ela pode modificar a configuração do arquivo “/etc/inetd.conf” para habilitar processos “TFTP” novamente.
Na seqüência desta ação e com uma rápida pesquisa nos sistemas de arquivos do computador poderá identificar os documentos que deseja, realizar uma limpeza para eliminar as entradas nos arquivos “log” e realizar a transferência de arquivos usando “TFTP” sem que jamais tenha a necessidade de efetuar “login” no computador novamente.
Enquanto o administrador não descobrir que o processo “TFTP” está em uso (que supunha estar desligado), esta situação de coleta de arquivos pode continuar indefinidamente.

Como evitar a detecção do furto de dados por ladrões durante um ataque

Com forme detalhamos acima uma das maneiras para derrotar um criminoso está no registro de uma transferência de arquivo e seu posterior rastreamento até o atacante.
Agora vamos dar um passo além e investigar algumas outras maneiras que os invasores usam para mascarar suas ações.
A maioria destas informações vem diretamente de recursos de “hacking” obtidos na Internet e está disponível para qualquer pessoa com vontade e paciência de encontrá-lo. Nem todos esses métodos de trabalho funcionam o tempo todo em todas as máquinas.
No entanto, um bom número deles funciona freqüentemente para que possam oferecer um desafio considerável para os investigadores. Além disso, essas técnicas se aplicam apenas a computadores com sistemas operacionais Unix.

Mascarando um “login”

Há um registro no Unix chamado “lastlog”. Este registo mostra “logins” individuais, sem muitos detalhes. No entanto, o “lastlog” e os “logs” que ele alimenta podem conter o nome da máquina invasora, não registrando o nome de usuário.
Embora a maioria dos invasores com qualificação técnica geralmente usem máquinas que não as suas próprias para atacar suas vítimas, os nomes dos computadores que usaram ao longo do caminho pode ser útil na detecção de uma intrusão e sua origem.
No entanto, se o criminoso mascarou sua identidade para a vítima, o investigador não pode acessar o computador examinar o registro de ataque mais recente para iniciar o rastreamento para trás, identificando assim a fonte.
O invasor pode usar um método simples para mascarar sua identidade ou sua máquina para a vítima: se, no início de sessão para o computador da vítima, o mesmo vê uma notificação de que o último login foi bem sucedido pelo titular da conta cuja identidade foi furtada, o invasor simplesmente executa um “rlogin” e fornece a senha da conta furtada novamente.
O programa “rlogin”, destinado ao acesso remoto de outros computadores (“rlogin” significa “Acesso remoto”), também funciona perfeitamente no mesmo computador.
Desde o momento do “login” numa máquina, o “lastlog” vai indicar que o login foi em “localhost” (o nome que os computadores Unix usam para se referirem a si mesmos) ou realizado com o nome do computador.
Isto pode ser óbvio para um administrador hábil ou investigador, mas mostra apenas que alguma trapaça ocorreu, não revelando a sua natureza ou sua fonte real.
Um segundo truque utilizado por invasores com conhecimento técnico mais avançado é a mudança de escudo. Máquinas Unix, muitas vezes têm um arquivo que guarda um histórico dos comandos do usuário. Um investigador pode rever o histórico, se houver, e descobrir o que ocorreu. Assim, o criminoso precisa desativar a capacidade de coleta de histórico do computador.
Todos os computadores Unix usam um escudo para permitir ao usuário se comunicar com o sistema operacional chamado “kernel”. Existem vários “shells” diferentes disponíveis para máquinas Unix. Normalmente alguns desses reservatórios diferentes estão disponíveis no mesmo computador. O “Shell” que um usuário usa por padrão é determinado pelo seu perfil.
O primeiro comando que um hacker especializado executará ao fazer login em uma conta furtada é, portanto, uma mudança de escudo.
Isso desativa o processo de coleta de histórico, funcionando com o “cshell” (CSH) e “shell” (SH) “shells”. Assim irá agir um invasor que queira mudar de um para o outro ou para algum “Shell” diferente.
Outro método de detecção de um invasor quando ele ou ela ainda está “on-line” é do tipo que fornece uma lista de usuários conectados naquele momento.
O display irá normalmente apresentar não só o usuário, mas o endereço que efetuou “login”. Um “script Shell” simples (um programa semelhante a um arquivo de lote do “DOS”), pode ser realizado periodicamente e registrar os resultados num arquivo para referência futura, sendo uma maneira fácil de ver se os usuários que eram desconhecidos ou aqueles que não poderiam estar conectados no momento em que realizaram sua conexão.
Se puder ser constatado que um usuário estava conectado a partir de um computador que não seria normal o mesmo utilizar, existe uma grande probabilidade de que sua conta foi invadida por um invasor.
Um invasor hábil pode iniciar uma sessão com uma conta furtada e então se “logar” novamente com o mesmo ”ID” e senha, sem antes fazer um “logoff”.
Isso abre uma segunda sessão para a conta e mostra a origem apenas pela porta com a qual o invasor está conectado como a fonte de login. Se realizada durante o período quando o dono da conta furtada estava conectado, é improvável que levante suspeita.
Cada uma dessas técnicas oferece ao invasor um método de esconder a sua presença. Embora a informação esteja debaixo do nariz do investigador, acabará ofuscada o suficiente para impedir uma detecção fácil.
As contramedidas para estas técnicas de dissimulação exigem uma abordagem diferente das formas tradicionais de “login”, muitas vezes somente disponíveis através da utilização de ferramentas de terceiros.
Ferramentas de “Logging” que coletam endereços IP, por exemplo, podem ser muito mais eficazes do que a capacidade normal de registro de máquinas sem este tipo de implementação.
O investigador normalmente vai ser incapaz de tirar partido das ferramentas de terceiros após ter ocorrido uma situação como a descrita anteriormente, porém, a possibilidade de instalação de ferramentas como as indicadas logo depois do primeiro ataque, à espera de uma possível segunda incursão pelo invasor, deve ser considerada.

Mascaramento de “telnet”

Sessões de “telnet” podem ser realizadas de duas maneiras: primeiro você pode usar o comando “telnet victim.com”. Este comando oferece ao invasor a desvantagem de apresentar informações indicadas como um parâmetro na lista de processos de um computador Unix. Se o invasor usou um servidor Unix com o propósito de atacar outro computador, o administrador pode notar esta entrada e tentar parar o invasor.
Da mesma forma, a conexão pode aparecer nos “logs” se o anfitrião estiver “logado” naquele momento, especialmente pelo uso de ferramentas de auditoria.
No entanto, se o invasor simplesmente digitar “telnet” e logo após digitar esses comandos no “prompt” Telnet: “telnet> open victim.com” há muito menos possibilidade de ser rastreado.
Uma vez que um invasor especializado se mova pelo sistema de um computador encobrindo seus rastros durante um ataque, é importante que ele ou ela evite a detecção a cada passo que de no seu caminho.
Existe outra técnica que um invasor pode usar para mascarar uma sessão “telnet, a qual envolve uma mudança de identidade, ou pelo menos parte de uma mudança de identidade.
Quando um usuário “telnet” vai de um hospedeiro para outro, algumas das variáveis de ambiente ao longo de seu curso, em alguns sistemas, são exportadas.
Variável de ambiente é um dado de um sistema operacional que geralmente contém informações sobre o sistema, caminhos de diretórios específicos no sistema de arquivos e as preferências do utilizador. Ela pode afetar a forma como um processo se comporta sendo que cada processo pode ler e escrever variáveis de ambiente.
Em todos os sistemas “Unix” e “Unix-like”, cada processo possui seu conjunto privado de variáveis de ambiente. Por padrão, quando um processo é criado ele herda uma cópia das variáveis de ambiente do processo pai, exceto por mudanças explícitas feitas pelo pai quando o novo processo é criado (entre as chamadas “fork” e “exec”).
Todos os tipos de Unix assim como o DOS e o Microsoft Windows possuem variáveis de ambiente; entretanto, variáveis para funções parecidas entre os sistemas possuem nomes distintos. Programas podem acessar os valores das variáveis de ambiente para efeitos de configuração.
“Shell scripts” e arquivos de lote usam variáveis de ambiente para armazenar dados temporários e também para comunicar dados e preferências a processos filhos.
No Unix, as variáveis de ambiente são normalmente inicializadas durante a inicialização do sistema, e portanto são herdadas por todos os outros processos do sistema. No Microsoft Windows, os valores padrão das variáveis de ambiente são armazenados no registro do sistema e configurados através do “autoexec.bat”.
Invasores normalmente mudam as variáveis de ambiente em uma máquina usada como um intermediário antes de atacar o próximo alvo. Isso irá tornar mais difícil para o investigador ir retornando através de cada conta furtada em máquinas intermediárias, encontrando assim a origem real do ataque.

Como criminosos apagam dados depois de um ataque

Investigando cibercrimes

Há uma grande quantidade de coisas que um invasor qualificado vai fazer antes de deixar a cena do crime.
O primeiro é remover quaisquer arquivos que ele ou ela tenha utilizado tais como ferramentas de ataque ao hospedeiro.
A segunda é modificar os registros de seu alvo para apagar qualquer sinal de entrada.
Muitos invasores vão usar o diretório “/tmp” da vítima como um repositório temporário para ferramentas. Eles fazem isto porque este diretório está ali, fácil de acessar rapidamente (com algumas teclas), e não será notado porque pertence aquele local. Outra razão disto é porque ele é freqüentemente usado pelo sistema ou aplicações para armazenar informações necessárias apenas por alguns instantes.
Ocasionalmente, um intruso vai deixar ferramentas ou outros arquivos no diretório “/tmp” devido a uma saída apressada ou, simplesmente por descuido, o que implica que os investigadores devem examinar todos os diretórios temporários para coleta de prova, independentemente do tipo de computador envolvido.
Modificar os “logs” exige acesso “root” ou, em máquinas Unix, alguma forma de acesso “superuser”, como administrador ou supervisor. Pode também requerer ferramentas especiais porque nem todos os arquivos de “log” são simples arquivos texto. No entanto, se o intruso modifica arquivos “log”, você pode descobrir por outras indicações deixadas por ele ou ela em seu sistema, tais como inconstâncias em vários outros registros.
Existem vários “logs” importantes que os invasores vão tentar alterar em sistemas Unix.
O “wtmp” e o “utmp” mantêm informações de ”login” e “logout”. Esta informação é usada pelo comando “finger” do Unix, o processo (PS) de comando, e o comando “Who”, sendo também a fonte para o “lastlog”. Alterar esses “logs” requer ferramentas especiais, que são facilmente localizáveis ocultas no computador.
Outro registro importante é o registro do sistema, ou “syslog”. No entanto, se o “syslog” não estiver configurado corretamente, suas informações de “log” não serão realmente de muito interesse. Além disso, os computadores devem, sempre que possível, escreverem seus registros em outros locais como um servidor de “logs” centralizado (outro computador que recolhe os “logs” e que esteja bem protegido contra acesso não autorizado).
Um importante método de registro, mas que pode gerar arquivos de “log” muito grandes em um curto espaço de tempo, é a função de contabilidade do Unix.
Na verdade, a contabilidade do Unix é destinada para outros fins, como controle de usuários pelo tempo de uso do sistema, uso de CPU, etc. Mas, porque ela registra todos os comandos do usuário e o tempo de execução, ela também faz um “log” de intrusão podendo ser muito eficaz se for configurada corretamente.
O invasor vai atentar para isso, embora a maioria dos administradores de sistemas não programem a contabilidade de forma rotineira.
Se você optar por utilizar as funções de contabilidade, certifique-se de dar permissão de “leitura”, “escrita” e “execução” apenas por “root”. De qualquer forma, se o intruso se “logar” como “root” no seu sistema, os registros serão pelo menos sua preocupação. A única maneira de lidar com isso é usar um servidor de “logs” externo para todos os seus registros.
Outros sistemas “não-Unix”, usam recursos semelhantes de registro. No entanto, o problema número um que os investigadores acabam tendo, diz respeito ao local onde o acesso é realizado e o pouco tempo de armazenamento dos dados.
No mínimo, você deve registrar “logins”, “logouts”, mudanças de privilégio, criação de contas e apagamento de arquivos. Mantenha seus registros por pelo menos seis meses.

Deixe uma resposta