Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furbbr Resumo. Este artigo apresenta a especificação e implementação de um software para monitoração de pacotes, executado em um computador conectado a rede internet. O software emite avisos em determinadas situações de monitoramento, servindo como ferramenta de auxílio à segurança da rede. Palavras-chave: redes de computadores, segurança, monitoração de pacotes, internet, protocolos, TCP/IP. 1 Introdução A área de segurança em redes de computadores é uma área que vem crescendo a cada dia, juntamente com o crescimento da Internet e com o aumento da necessidade de diversas empresas de abrirem suas redes para o mundo, oferecendo serviços e transmitindo dados através da Internet. Porém as técnicas e ferramentas existentes hoje para prover segurança em redes de computadores não eliminam totalmente as chances de um ataque aos serviços ou dados de uma empresa que utiliza a Internet para oferecer algum tipo de serviço ou transmitir seus dados. O software apresentado neste artigo é uma ferramenta de monitoração de datagramas IP, utilizada em um host conectado a uma rede que utilize o protocolo TCP/IP (a rede utilizada para o desenvolvimento foi a Internet). Todos os datagramas que trafegarem entre o host e a Internet passarão pelo monitor, que irá analisar os datagramas e informar o administrador da rede caso ocorram situações suspeitas de ataque, auxiliando assim o administrador de rede na segurança do host. 2 Desenvolvimento do Software Para a realização do processo de especificação, foram levantados alguns requisitos que devem estar presentes no software. Estes requisitos demonstram algumas características que o software precisa ter para que se alcance o resultado final desejado. Os requisitos principais são:
a) utiliza a interface NDIS do Windows 98 para capturar os pacotes; b) a rede física é uma rede Ethernet, portanto os pacotes capturados estão no formado de um quadro Ethernet; c) são capturados todos os pacotes que passarem pela camada de interface de rede do host em que o software está instalado; d) todos os pacotes capturados são adicionados em um log; e) existem três níveis de visualização dos logs: simples, parcial, completo; f) existem cinco formas de agrupamento dos dados do log: IP origem e porta origem, IP destino e porta destino, IP remoto e porta local, porta local e IP remoto, sem agrupamento; g) o usuário pode configurar situações de alerta; h) são consideradas duas variáveis na configuração de situações suspeitas: portas locais, endereços IP remotos; i) todos os pacotes capturados são submetidos às situações de suspeita configuradas pelo usuário; j) existe um log à parte contendo somente pacotes que geraram alertas; k) todos os tipos de log podem ser salvos em arquivos e recuperados posteriormente, caso haja necessidade. 2.1 Especificação do Software A especificação do software foi realizada visando a divisão do mesmo em dois módulos com funções bem distintas: a) módulo aplicação: responsável pelo tratamento dos pacotes recebidos e pela interface com o usuário; b) módulo driver: responsável por interagir com o sistema operacional, de forma a receber os pacotes de rede e passa-los para a aplicação. 2.1.1 Especificação do Módulo Aplicação A especificação do módulo aplicação foi dividida em onze processos e subprocessos que estão envolvidos nas funções principais de ativar o monitor, desativar o monitor e receber e tratar pacotes. Na Figura 1 é apresentada uma visualização geral da especificação do módulo aplicação. Nesta figura podemos observar a relação entre os processos especificados no módulo aplicação.
Figura 1: Visualização geral do módulo aplicação. Os processos A, B e C são ativados diretamente pelo usuário e dão origem as chamadas dos outros processos. De acordo com a Figura 1, o processo A, que trata da ativação do monitor, está relacionado principalmente com os processos D, F e J. O processo B, que trata da desativação do monitor, está relacionado com os processos E e K. E o processo C, que trata da leitura de pacotes, está relacionado principalmente como os processos G, H e I. Informações adicionais e a especificação detalhada de todos os processo do módulo aplicação podem ser encontradas em Silva (2001). 2.1.2 Especificação do Módulo Driver A especificação do módulo driver foi dividida em dezesseis processos e subprocessos que estão envolvidos nas funções principais de inicializar o funcionamento do módulo driver, tratar solicitações de conexão, desconexão, filtro e recebimento de pacotes, e finalizar o funcionamento do módulo driver. Na Figura 2 é apresentada uma visualização geral da especificação do módulo driver. Nesta figura podemos observar a relação entre os principais processos especificados para o módulo driver. Os processo B e P não estão descritos na visualização geral, pois o processo B é apenas ponte para a chamada dos processos C e D e o processo P é apenas a chamada de uma função para finalizar o protocolo.
Figura 2: Visualização geral do módulo driver. Os processos do módulo driver são ativados pela carga do driver por parte do módulo aplicação e por códigos enviados também do módulo aplicação para o módulo driver. Os processos A e C são chamados um após o outro quando a aplicação realiza a carga do módulo driver. O processo D é ativado quando o módulo aplicação envia um código de solicitação para o módulo driver, este processo é responsável por chamar os processo E, F, G e H. Os processos I, J, K, L e M são eventos do driver de protocolo definido pelo módulo driver, e são chamados quando o respectivo evento ocorrer. Finalmente, o processo N é chamado pelo driver do adaptador de rede quando um pacote chega ao adaptador. Este processo é responsável pela chamada do processo O. Informações adicionais e a especificação detalhada de todos os processo do módulo driver podem ser encontradas em Silva (2001).
2.2 Implementação do Software A implementação do módulo aplicação foi desenvolvida na linguagem ObjectPascal utilizando para tal implementação o ambiente de desenvolvimento Borland Delphi 5.0. O módulo aplicação utiliza funções da API do sistema operacional Windows 98 para realizar a comunicação com o módulo driver. A implementação do módulo driver obedece a um formato muito específico exigido pelo sistema operacional, para tanto, parte do código foi escrita na linguagem assembly e outra parte na linguagem C. O módulo driver implementa um driver de procotolo NDIS, o qual é responsável pela interceptação dos pacotes de rede. A NDIS é uma interface padrão para a comunicação dos drivers de placa de adaptador de rede com os drivers de protocolo e o sistema operacional. Na implementação do módulo driver foram utilizados recursos da ferramenta Microsoft DDK (Driver Development Kit) 98. Esta ferramenta provê recursos para o desenvolvimento de drivers para o sistema operacional Windows 98. Os principais recursos oferecidos pelo Microsoft DDK 98 são: a) exemplos dos tipos de driver e de funções disponíveis; b) código-fonte de programas que são utilizados no desenvolvimento dos drivers; c) documentações de como desenvolver os drivers e utilizar funções. Maiores informações sobre o Microsoft DDK 98 podem ser encontradas em Microsoft (1999b, 2000b). O código fonte completo da implementação do módulo aplicação e do módulo driver, com comentários e explicações adicionais, e informações complementares sobre a NDIS podem ser encontradas em Silva (2001). 2.2.1 Apresentação do Software O software é formado por três telas as quais são: a) tela principal: tem o objetivo de apresentar ao usuário os pacotes que estão trafegando entre o seu host local e a Internet. Nesta mesma tela são apresentados os pacotes que geraram alertas; b) configurações do log: tem o objetivo de permitir que o usuário escolha o nível de visualização do log e também a forma de agrupamento do log; c) configuração de alertas: tem o objetivo de permitir que o usuário defina que tipo de situação deve gerar um alerta no monitor de pacotes.
Figura 3: Tela principal do software. A Figura 3 apresenta a tela principal do software. As opções disponíveis no menu da tela principal são: a) funções / ativar monitor: ativa a monitoração de pacotes, também pode ser chamado através do primeiro botão abaixo do menu; b) funções / desativar monitor: suspende a monitoração de pacotes, também pode ser chamado através do segundo botão abaixo do menu; c) logs / configurações: abre a tela de configuração de logs, também pode ser chamado através do terceiro botão abaixo do menu; d) logs / salvar log atual: salva em um arquivo todo os dados que estão na página Logs ; e) logs / ler arquivo de log: carrega para a página Log os dados de um arquivo de log salvo anteriormente; f) alertas / configurações: abre a tela de configuração de alertas, também pode ser chamado através do quarto botão abaixo do menu; g) alertas / salvar alertas atuais: salva em um arquivo todo os dados que estão na página Alertas h) alertas / ler arquivo de alerta: carrega para a página Alertas os dados de um arquivo de alerta salvo anteriormente; i) sair: sai do monitor de pacotes.
Abaixo dos botões existem duas páginas, a página Logs mostra os pacotes que estão sendo interceptados pelo monitor e a página Alertas mostra os pacotes que geraram alertas de acordo com as configurações de alerta. No rodapé é apresentada a situação do monitor, a quantidade de pacotes recebido, a quantidade de alertas gerados e o endereço local que host que está executando o monitor de pacotes. Figura 4: Tela de configuração do log. A Figura 4 apresenta a tela de configurações de log, nesta tela o usuário pode selecionar a quantidade de dados que deseja visualizar nos pacotes que são mostrados pelo monitor, esta opção está dividida em simples, parcial ou completo. Nesta tela também é possível configurar a forma de agrupamento dos pacotes no log.
Figura 5: Tela de configuração de alertas IP Remoto. A Figura 5 apresenta a página IP Remoto da tela de configuração de alertas, nesta página o usuário monta uma lista de endereços IP remotos e informa ao monitor como devem ser tratados os endereços da lista. A página Porta Local da tela de configuração de alertas é muito semelhante a página apresentada na Figura 5, nesta página o usuário monta uma lista com números de portas locais e informa ao monitor como devem ser tratados os números da lista. O monitor de pacotes utiliza os dados da tela de configuração de alertas para decidir quando deve gerar um alerta para os pacotes que estão sendo monitorados. A geração do alerta consiste em adicionar o pacote, para o qual se deseja dar o alerta, na página Alertas da tela principal. 3 Conclusões O software se mostra uma ferramenta útil no auxílio à segurança de redes de computadores, à medida que permite identificar rapidamente a ocorrência de um ataque ao host em que está instalado. Analisando o log gerado pelo monitor de pacotes e os alertas emitidos pelo mesmo, o usuário pode identificar também qual o tamanho dos prejuízos causados pelo ataque e como o ataque foi feito, ou seja, que
ponto vulnerável da segurança da rede foi utilizado para realizar o ataque, com isto o usuário pode tomar providência para que novos ataques da mesma natureza não ocorram novamente. Durante o desenvolvimento do software percebeu-se a necessidade do desenvolvimento de um driver de dispositivo, pois esta foi a única forma encontrada para monitorar pacotes. Foi necessário um estudo sobre as funções oferecidas pela NDIS, uma interface para desenvolvimento de drivers de rede. A ferramenta Microsoft DDK foi de grande auxílio no desenvolvimento do driver, provendo exemplo e documentações sobre o mesmo. Referências bibligráficas COMER, Douglas E. Interligação de rede com TCP/IP: princípios, protocolos e arquitetura. Rio de Janeiro: Campus, 1998. COMER, Douglas E; STEVENS, David L. Interligação de rede com TCP/IP: projeto, implementação e detalhes internos. Rio de Janeiro: Campus, 1999. CHIOZZOTO, Mauro; SILVA, Luíz Antônio Pinto. TCP/IP tecnologia e implementação. São Paulo: Érica, 1999. MICROSOFT PRESS. Microsoft Windows 98 resource kit. Rio de Janeiro: Campus, 1999. MICROSOFT CORPORATION. Microsoft developer network, 2000. Disponível em <http://msdn.microsoft.com/default.asp>. Acesso em: 20 set. 2001. MICROSOFT CORPORATION. Microsoft Windows 2000 DDK, 2000. Disponível em <http://www.microsoft.com/ddk/w2kddk.asp>. Acesso em: 8 jun. 2001. MICROSOFT CORPORATION. Microsoft Windows 1998 DDK, 1999. Disponível em <http://www.microsoft.com/ddk/ddk98.asp>. Acesso em: 8 jun. 2001. SILVA, Paulo Fernando da. Protótipo de software de segurança em redes para a monitoração de pacotes em uma conexão TCP/IP. 2001, 112f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.