• Nenhum resultado encontrado

Levantamento de problemas de segurança nas redes sem fios

N/A
N/A
Protected

Academic year: 2021

Share "Levantamento de problemas de segurança nas redes sem fios"

Copied!
80
0
0

Texto

(1)

Levantamento de

problemas de

segurança Wireless

nas redes

Ricardo Daniel Carvalho Godinho

Mestrado Integrado em Engenharia de Redes e Sistemas Informáticos

Departamento de Ciências e Computadores 2015/2016

Orientador

Pedro Brandão, Professor Auxiliar, Faculdade Ciências da

Universidade do Porto

Coorientador

Manuel Correia, Professor Auxiliar, Faculdade Ciências da

Universidade do Porto

(2)

Todas as correções determinadas pelo júri, e só essas, foram efetuadas.

O Presidente do Júri,

(3)

Abstract

In recent decades we experience a continuous technological growth. With it the size of the technology decreased and processing power increased significantly. With the use of increasingly small devices came the need to take this portable power devices, and wireless technology emerged. It is a technology that daily accompany people today, and a large part is dependent on it. However, there are problems in terms of security that are unknown or at least not taken into account by the majority of the population. These failures when properly exploited allow attackers to control the devices to which they are associated, and in some cases others remaining in the same network. With this black hats companies try to escalate the attacks on larger companies that possess higher levels of security. The objective of this project involves creating a framework capable of analyzing the access points in a given area verifying the existence or not of known vulnerabilities. For the development of the framework we used the Python language and developed a template that works as API for the implementation of the vulnerabilities that will arise. To allow improvements we have taken into account the modulation of the framework. With this we intend that with further development, vulnerabilities can be detected in good time, in order to be resolved or at least avoided.

(4)
(5)

Resumo

Nas ultímas décadas experênciamos um contínuo crescimento tecnológico. Com ele o tamanho da tecnologia diminuiu e o poder de processamento aumentou significativamente. Com a utilização de equipamentos cada vez mais pequenos surgiu a necessidade de aproveitar esta capacidade portátil dos dispositivos e surgiu a tecnologia sem fios. É uma técnologia que acompanha, diariamente, as pessoas nos dias de hoje, sendo que uma grande parte está dependente dela. Contudo, existem problemas a nível de segurança que são desconhecidos, ou pelo menos não tomados em conta, pela maioria da população. Estas falhas quando devidamente exploradas permitem que os atacantes controlem os dispositivos a que a elas estão associados, e em alguns casos outros que permaneçam na mesma rede. Com isto companhias de black hats tentam escalar os ataques a empresas de maior dimensão e com níveis de segurança maiores. O objetivo deste projeto passa por criar uma framework capaz de analisar os pontos de acesso de uma determinada zona verificando a existência, ou não, de vulnerabilidades conhecidas. Para o desenvolvimento da framework utilizámos a linguagem Python e desenvolvemos um template que funciona como API para a implementação das vulnerabilidades que irão surgindo. Para permitir que ocorram melhoramentos foi tido em conta a modularidade da framework. Com isto pretendemos que, com desenvolvimentos futuros, as vulnerabilidades sejam detetadas atempadamente, de forma a serem resolvidas ou pelo menos evitadas.

(6)
(7)

Agradecimentos

Gostaria de agradecer, em primeiro lugar, aos meus orientadores, Prof. Pedro Brandão e Prof. Eduardo Correia, que me acompanharam durante o desenrolar na tese e auxiliaram nas várias fases do projeto com sugestões para ultrapassar certas barreiras que foram surgindo. Sem o seu contributo não teria sido possível atingir alguns dos pontos que estavam delineados no início e atingir o resultado final. Agradeço o facto de me terem aceite neste tema de tese que desde o início despertou especial interesse e permitiram que aprofunda-se mais um pouco os conhecimentos que detinha sobre esta área.

Gostaria também de agradecer à minha namorada que me acompanhou de igual forma ao longo deste processo, pela enorme paciência que teve para comigo, dando sempre força e incentivando para que conseguisse alcançar os meus objetivos de forma satisfatória. Não esquecendo também queria agradecer aos meus amigos que partilharam o seu conhecimento comigo e me guiaram também em algumas partes do projeto que me senti mais “preso“.

A todos eles a minha enorme gratidão.

(8)
(9)

Conteúdo

Abstract iii

Resumo v

Agradecimentos vii

Conteúdo xi

Lista de Tabelas xiii

Lista de Figuras xv

Lista de Blocos de Código xvii

1 Introdução 3

1.1 Motivação . . . 4

1.2 Objetivos . . . 5

1.2.1 Técnicas Passivas vs Técnicas Ativas . . . 5

1.3 Estrutura da Dissertação . . . 6

2 Estado de Arte 9 2.1 Wardriving . . . 9

2.1.1 Requisitos de Hardware . . . 10

2.2 A evolução dos dispositivos intrusivos . . . 11

2.3 Tipos de ataques nas redes sem fios . . . 12

(10)

2.4 Software existente para executar ataques . . . 14

2.5 Informação contida nas tramas 802.11 . . . 16

2.5.1 Identificação do modelo do ponto de acesso . . . 17

2.6 Sumário . . . 19 3 Design/Arquitetura 21 3.1 Módulos . . . 21 3.2 Módulo Main . . . 22 3.3 Módulo Sniffer . . . 23 3.4 Módulo GPS . . . 23

3.5 Módulo Base de Dados . . . 23

3.6 Módulo Vulnerabilidades . . . 23 3.6.1 Template . . . 24 3.7 Base de Dados . . . 26 4 Implementação 29 4.1 Linguagem . . . 29 4.2 Módulo Main . . . 30 4.3 Threads e Filas . . . 31 4.4 Módulo Sniffing . . . 32 4.4.1 RawSocket . . . 32 4.4.2 Scappy . . . 33 4.4.3 Iwlist . . . 33 4.5 Vulnerability . . . 35

4.5.1 Associação com Ponto de Acesso . . . 36

4.6 Database . . . 38

4.7 GPS . . . 38

4.8 Base de Dados . . . 38

4.9 Dependências . . . 40 viii

(11)

4.10 Pseudo Código Geral do Programa . . . 40

5 Análise de Resultados 43 5.1 Análise da Vulnerabilidade em Teste . . . 43

5.2 Associação ao Ponto de Acesso . . . 44

5.3 Cenário de Teste . . . 45

5.3.1 Trajeto 1 ("Stress Testing") . . . 45

5.3.2 Trajeto 2 . . . 48 5.4 Operadoras . . . 49 5.5 Conclusões . . . 50 6 Conclusões 51 6.1 Trabalho Futuro . . . 52 A Pseudo-Códigos 55 Bibliografia 59 ix

(12)
(13)

Lista de Tabelas

5.1 Tempos de execução da vulnerabilidade usada em testes . . . 44 5.2 Tempos de associação com o ponto de acesso . . . 44

(14)
(15)

Lista de Figuras

3.1 Esquema da Arquitetura . . . 22

3.2 Diagrama ER da Base de Dados . . . 27

4.1 Diagrama de execução dos módulos . . . 31

4.2 Diagrama de estados de ligação entre o ponto de acesso e a placa de rede . . . . 36

4.3 Esquema da Base de Dados implementada em Mongo . . . 39

5.1 Mapa do trajeto 1 . . . 45

5.2 Mapa do trajeto 2 . . . 45

5.3 Gráfico com número de pontos de acesso capturados no trajeto 1 utilizando a interface de rede WLAN0 (computador portátil) . . . 46

5.4 Gráfico com número de pontos de acesso capturados no trajeto 1 utilizando a interface de rede WLAN1 (antena externa) . . . 46

5.5 Gráfico com os tempos de processamento do passo 2 . . . 47

5.6 Gráfico com número de pontos de acesso capturados no trajeto 2 . . . 48

5.7 Gráfico com percentagem de pontos de acesso pertencentes a operadoras . . . 50

(16)
(17)

Lista de Blocos de Código

4.1 Exemplo de output do commando Iwlist . . . 33

(18)
(19)

Acrónimos

ACK Acknowledgment

AES Advanced Encryption Standard API Application Programming Interface ARM Advanced RISC Machines

ARP Address Resolution Protocol BSSID Basic Service Set Identifier CCMP Counter Mode with Cipher Block

Chaining Message Authentication Code Protocol

CTS Clear to Send

DDoS Distributed Denial of Service ER Entity-Relationship

GPS Geographical Position System HTTP Hypertext Transfer Protocol

HTTPS Hypertext Transfer Protocol Secure IAT Inter Arrival Time

ID Identifier

IP Internet Protocol

JSON JavaScript Object Notation LTE Long Term Evolution

MAC Media Access Control MITM Man In The Middle

NMEA National Marine Electronics Association

PDA Personal Digital Assistant PSK Pre Shared Key

RAM Random Access Memory RTS Request to Send

SET Social Engineering Toolkit SSH Secure Shell

SSID Service Set Identifier SSL Secure Socket Layer

TI Tecnologias da Informação

TIM Traffic Indication Map

TKIP Temporal Key Integrity Protocol WEP Wired Encryption Protocol WPA Wi-Fi Protected Access

WPA2 Wi-Fi Protected Access Version 2 WPS Wi-Fi Protected Setup

(20)
(21)

Capítulo 1

Introdução

Nos últimos anos os avanços tecnológicos têm vindo a crescer exponencialmente [52]. Se comparar-mos o tamanho dos computadores dos anos 70 com aqueles que existem no presente, vecomparar-mos que são bem mais pequenos e que o seu poder de processamento aumentou significativamente. Podemos com isto afirmar que a tecnologia tem vindo a evoluir tornando-se mais portátil [16] [25]. A tecnologia sem fios é tão importante quanto os dispositivos portáteis pois permite-nos comunicar mais facilmente sem a necessidade de cabos. Em vez disso, utilizam rádio-frequências que transmitem os dados entre os dispositivos [19] [27]. A velocidade de transmissão de dados neste tipo de comunicação não é tão elevada quanto no caso das comunicações cabeladas. Isto deve-se ao facto da energia das rádio-frequências se dissipar na propagação do sinal, pois é propagado em todas as direções. Embora isto aconteça, a tecnologia sem fios será sempre uma mais valia nestes dispositivos pois permite que as pessoas usufruam da qualidade portátil dos mesmos [25]. Existem vários tipos de tecnologia sem fios hoje em dia, umas mais conhecidas do que outras, tais como o 802.11, o Bluethooth, WiMax, entre outras. Nesta dissertação iremos focar-nos apenas nas redes WiFi, que utilizam o protocolo standard IEEE 802.11 de forma a estabelecer as comunicações entre os dispositivos e os pontos de acesso [11].

Podemos tambem ver o quão importante esta tecnologia sem fios se tornou para a vida das pessoas hoje em dia quando analisamos a quantidade de utilizadores que a utiliza e que depende dela. Esse número está constantemente a aumentar desde que aconteceu o fenómeno das redes sociais na Internet, onde as pessoas publicam fotos delas próprias e dos locais onde vão. Embora em imensos casos possam utilizar a tecnologia Long Term Evolution (LTE), por outras palavras a rede de dados móveis fornecida pelas operadoras, na maioria do casos essas publicações são feitas através de redes WiFi com acesso grátis sem que as pessoas conheçam os verdadeiros riscos que correm [19].

Muitos dos conselhos e avisos que são feitos por técnicos e profissionais na área de Tecnologias da Informação (TI) acabam por não ser levados a sério pelas pessoas, nomeadamente em questões de segurança. E, como as comunicações são feitas através do meio e sem a necessidade de fios, qualquer um as pode interceptar. Mais ainda, estas podem ser lidas ou ouvidas caso não se

(22)

4 Capítulo 1. Introdução

encontrem encriptadas [48].

Em alguns casos o ponto de entrada dos atacantes não é através da tecnologia sem fios, mas acedendo remotamente aos pontos de acesso através de falhas de configuração que podem mesmo permitir aceder-lhes de qualquer parte do globo. Este tipo de ataques é razoavelmente fácil de se efetuar porque na maioria dos casos o acesso a esses dispositivos pode ser feito com as credenciais que vêm de fábrica. Isto acaba por se tornar um alvo muito apetecido pelas companhias de black

hats porque com a combinação de um elevado número de dispositivos de pequena dimensão, e

fáceis de atacar, conseguem construir um “exército“ capaz de derrubar através de por exemplo ataques de Distributed Denial of Service (DDoS) grandes empresas. Mesmo que a segurança destas empresas seja grande, e difícil de atacar, o poder aglomerado destes dispositivos em massa torna-se elevado, quando se juntam em sintonia, permitindo essa invasão [30].

Na maiorias das vezes as pessoas pensam que se encontram seguras por terem uma palavra-passe associada com o equipamento, mas o que não sabem é que existem outras formas de se obter acesso sem a necessidade de provar ou mostrar que sabemos a palavra-passe. Isto deve-se a vulnerabilidades que são deixadas nos equipamentos pelos fabricantes que os produzem[8].

“Linux.Wifatch doesn’t use elaborate backdoors or 0day exploits to hack devices. It basically just uses telnet and a few other protocols and tries a few really dumb or default passwords (our favourite is "password"). These passwords are wellknown -anybody can do that, without having to steal any secret key.“ [8]

(Linux.Wifatch)

Dentro da rede podemos ainda partilhar dispositivos (ex: impressoras, computadores, smart-TVs,

smartphones, entre outros dispositivos) e mesmo ficheiros entre eles. Assim sendo quando alguém

consegue arranjar forma de entrar na rede está a comprometer as informações que nela passam e a deixar que possam ver e aceder a recursos privados [5].

1.1

Motivação

A falta de conhecimento quanto a questões de segurança são a principal motivação do trabalho desta dissertação. Muitos dos utilizadores não conhecem os riscos que estão a correr quando têm as suas redes sem fios disponíveis e desconhecem a quantidade de ataques que podem ser executados dentro da sua rede. As falhas de configuração de dispositivos permitem que os atacantes possam adquirir controlo dos dispositivos domésticos remotamente, algo que também motiva o tema.

Com tudo isto considerado, pretendemos identificar as falhas que existem nos pontos de acesso e nas redes domésticas de forma a poderem ser tomadas medidas para as corrigir ou evitar. Mais importante que isso, pretendemos alertar as operadoras móveis, que instalam a maioria destes

(23)

1.2. Objetivos 5 aparelhos nas casas, para estas vulnerabilidades existentes a fim de em alguns casos poderem ser evitadas.

1.2

Objetivos

Os principais objetivos da dissertação passam como o seu próprio nome indica, recolher problemas de segurança associados às redes sem fios. De forma a atingir esses objetivos definimos os seguintes pontos:

• Descobrir a cobertura das redes sem fios em determinada zona;

• Identificar que tipos de segurança os pontos de acesso têm instalado nos seus sistemas; • Obter o máximo de informação possível através dos anúncios feitos pelos pontos de acesso; • Utilizar mecanismos que permitam identificar e classificar os pontos de acesso;

• Verificar em bases de dados de vulnerabilidades conhecidas se o ponto de acesso está ou não vulnerável;

• Guardar a informação para análise posterior;

• Implementar uma ferramenta que agregue os pontos discutidos acima

A nossa intenção para realizar todas estas tarefas é uma com a qual não sejam infrigidas nenhuma lei. Para identificar e classificar os pontos de acesso poderemos fazê-lo recorrendo a técnicas passivas. Contudo de forma a testar se a vulnerabilidade se aplica ou não ao ponto de acesso é necessário interagir realmente com ele.

1.2.1 Técnicas Passivas vs Técnicas Ativas

De forma a poder identificar as redes sem fios que nos rodeiam precisamos de ouvir as informações que os pontos de acesso enviam. Essa actividade é definida como técnica de deteção passiva, pois não interfere com o ponto de acesso diretamente ou manipula qualquer pacote que é enviado de forma a obter mais informação[43] [7]. Para podermos escutar estas informações necessitamos de configurar a placa de rede, mais concretamente o modo em que opera. Existem vários modos que podemos utilizar:

• Modo Monitor (Monitor ) • Modo Promíscuo (Promicuous) • Modo Principal (Master )

(24)

6 Capítulo 1. Introdução

• Modo Gestor (Managed) • Modo Ad-hoc (Ad-hoc) • Modo Mesh (Mesh)

• Modo Repetidor (Repeater )

No nosso caso estamos particularmente interessados no modo Monitor porque é aquele que nos permite ver a informação que iremos necessitar antes de entrar em alguma rede. Este modo permite monitorizar a informação que é enviada pelos pontos de acesso e assim receber dados sobre eles, portanto apenas faz sentido ser utilizado para redes sem fios. Falando um pouco sobre os outros modos temos o modo Promíscuo que pode ser utilizado tanto em redes cabladas como redes sem fios e permite que um utilizador da rede receba tanto os pacotes que a ele são destinados como também aqueles que não o são. O modo Principal refere-se aos pontos de acesso, e é o modo utilizado quando queremos que o dispositivo se comporte como ponto de acesso. O modo Ad-hoc permite que vários dispositivos comuniquem entre si sem a necessidade de possuir qualquer tipo de organização na rede, em muitos casos este tipo de redes é denominada redes

peer-to-peer. Um pouco similar às redes Ad-hoc temos as redes Mesh, a diferença entre elas é

que as redes Mesh definem iter-comunicação entre nós usando outros como encaminhadores e permitem a ligação a redes infraestruturadas nativamente, portanto faz com que haja um pouco mais de organização na rede. Finalmente o modo Repetidor refere-se ao modo que tem como principal objetivo estender o sinal que recebe e apenas faz a placa de rede transmitir esse mesmo sinal [28].

O outro tipo de técnica que pode ser utilizado para recolher informação dos pontos de acesso é a técnica ativa. A técnica ativa consiste em enviar pacotes especialmente concebidos para o ponto de acesso de forma a obter informação mais precisa e que não seria possível utilizando uma forma passiva. É uma técnica que pode ser utilizada para assumir controlo do dispositivo, que acaba por ser o seu propósito mais comum na maioria das vezes. Os pacotes especialmente concebidos são feitos de tal forma a criarem buffer overflows, que permite o intruso executar comandos remotamente apartir desses mesmo pacotes [43] [7].

1.3

Estrutura da Dissertação

O documento encontra-se estruturado da seguinte forma, neste capítulo foram introduzidas as temáticas que iremos abordar e descrito o problema em causa. Também falámos sobre o que nos motivou a fazer este trabalho e o que pretendemos atingir com ele. No capítulo dois será apresentado o estado de arte onde iremos discutir alguns termos sobre a actividade que iremos desenvolver, que tipos de software já se encontram disponíveis e o que podemos obter com as informações enviadas pelos pontos de acesso. Seguidamente no capítulo três iremos definir a estrutura do nosso projeto e falar sobre algumas decisões tomadas, para depois no capítulo quatro abordar as questões de caráter mais técnico sobre a implementação do mesmo. No capítulo

(25)

1.3. Estrutura da Dissertação 7 cinco iremos apresentar os resultados que obtivémos durante a execução do projeto e analisar os dados que foram recolhidos. Finalmente, no capítulo seis iremos concluir o nosso trabalho com uma breve síntese do que conseguimos fazer e de que forma os objetivos foram ou não atingidos. Iremos nessa secção falar sobre as dificuldades que ultrapassámos e de que forma poderá este trabalho ser continuado no futuro.

(26)
(27)

Capítulo 2

Estado de Arte

Neste capítulo vamos abordar as tecnologias envolvidas nesta dissertação e explicar determinados termos relacionados com o trabalho desenvolvido. Iremos começar por falar sobre uma prática muito associada ao tipo de atividade que iremos desenvolver. Seguidamente vamos entrar por aspetos cada vez mais técnicos associados a este tipo de técnologia. Desta forma podemos ir evoluindo na temática e entrar cada vez mais em aspetos mais detalhados.

2.1

Wardriving

O termo Wardriving é utilizado para descrever a atividade de procurar pontos de acesso, fazendo uso de um software e harware específico para o efeito. Geralmente esta atividade é feita circulando pelos locais com uma viatura de forma a cobrir uma área maior num menor espaço de tempo. É utilizado um computador devido ao seu alto poder de processamento, no entanto, também é possível usar outros pequenos aparelhos, como iremos ver na secção 2.2, que possuem menor poder de processamento [48]. Estes aparelhos, quando colocados no lugar do passageiro, começam de imediato a obter toda a informação que o “atacante“ pretende, inclusivé a localização geográfica, incorporando toda essa informação num ficheiro, que será posteriormente utilizado para análise e representação num mapa [12].

De maneira a obter melhores resultados, executar uma pesquisa sobre as áreas que são mais povoadas pode ser uma ajuda caso o objetivo seja recolher a maior quantidade de amostras possível. A velocidade à qual se desloca é também um fator importante, uma vez que o software necessita de tempo para percorrer todos os canais que a banda da rede sem fios tem, podendo este ser de alguns segundos. No hardware, também temos de considerar que o Geographical

Position System (GPS) precisa de algum tempo para obter a correta posição no mapa e as suas

coordenadas [12].

Por último, quando a informação se encontra armazenada e a viagem é concluída, é necessário formatar a informação para algo mais fácil de ler, analisar e visualizar num mapa [12].

(28)

10 Capítulo 2. Estado de Arte 2.1.1 Requisitos de Hardware

Como já mencionado, o Wardriving precisa de harware especializado de forma a obter melhores resultados. Antes de mais, o participante da actividade necessita de um aparelho que lhe ofereça alguma portabilidade, uma vez que este terá de se deslocar por sítios onde será impossível fornecer energia ao aparelho por via de carregamento. Os aparelhos mais comuns neste tipo de atividade são um computador ou um Personal Digital Assistant (PDA). De denotar que software que o PDA apresenta é mais limitado [12]. Com os avanços tecnológicos, têm vindo a aparecer micro computadores, com um tamanho tão pequeno capaz de caber na palma da mão, que são mais económicos e continuam a operar de forma satisfatória, como é o caso do Arduino ou do Raspberry PI [15] [16].

Após este processo precisamos de um adaptador de rede sem fios que torne possível a comunicação com o ponto de acesso no protocolo que ele opera. Existem inúmeros modelos e fabricantes destes aparelhos, no entanto, o que é usualmente mais utilizado e mais comum é o que permite adicionar uma antena externa [12].

A antena externa é uma das partes fundamentais da captura de pontos de acesso pois pode possuir um valor de ganho superior, quando comparado com um adaptador normal. Isso torna possível alcançar as redes que estão distantes e assim aumentar os resultados. Existem diferentes tipos de antenas: direcionaias, semi-direcionaias, omnidirecionaias e isotrópicos.

Mesmo que as antenas direccionais tenham o maior ganho de recepção e transmissão, a sua utilização é mais comum para a comunicação ponto-a-ponto. As antenas semi-direcionais são o segundo tipo de antenas que têm o maior ganho e o tipo preferido de antena para os participantes nesta actividade. A razão prende-se com o ganho que elas possuem se traduzir num plano em linha reta, o que é ótimo para cobrir uma área ampla e assim capturar um maior número de pontos de acesso. A antena omni-direcional tem um baixo ganho, no entanto podem cobrir uma maior área que a semi-direcional. A antena isotrópica transmite e recebe dados em todas as direções com a mesma potência de sinal. Isto implica que com a mesma potência de sinal fornecida o alcance da comunicação seja inferior, pois aumentando a distância o alcance das frequências rádio é duas vezes a dimensão da antena dividida pelo comprimento de onda. Este tipo de antena é geralmente usado para comparar o ganho que as outras antenas possuem e assim sendo consideramos que elas têm um ganho de zero [12].

Além dos requisitos de hardware, há também alguns sensores especiais e dispositivos capazes de fazer testes de penetração e que são deixados no local à procura de possíveis pontos de entrada na rede. Estes vêm com software já implementado capaz de monitorizar a rede e aceder remotamente por conexões Secure Shell (SSH) através de telemóveis 4G / 3G. Há também smartphones que correm distribuições especiais que permitem o atacante fazer um ataque apenas com um clique, sem a necessidade de saber muito sobre eles. Estes podem funcionar com uma placa de rede sem fios externa e uma antena ligado a eles, a fim de obterem um maior ganho e consequentemente um maior número de potênciais alvos. Alguns exemplos desses produtos são os vendidos pela Pwnie Express: Pwn Pro, Pwn Plug R3, Pwn Plug R2 Academic Edition, Pwn Phone 2014 e

(29)

2.2. A evolução dos dispositivos intrusivos 11

Pwn Pad 3 [14]

2.2

A evolução dos dispositivos intrusivos

Os avanços tecnológicos têm tido grande efeitos no que se refere ao tamanho dos dispositivos. Estes são cada vez menores e, mantêm mesmo assim o seu poder computacional e de processamento. Isso pode ser benéfico ou não, dependendo das intenções da pessoa que gerir o dispositivo [16]. Para a generalidade das pessoas isto é sinónimo de conforto e tecnologia mais portátil, que pode ser transportada para qualquer lugar com facilidade. No entanto para outros, pode ser sinónimo de mais oportunidades e camuflagem. Devido à sua pequena dimensão, é possível ocultar estes dispositivos em qualquer sítio sem ninguém se aperceber. Outro aspecto que é apreciado pelos black hats é o seu custo. Os computadores de Advanced RISC Machines (ARM)

single board que se tornaram mais pequenos baratos, vieram reforçar a ideologia de deixar o

dispositivo em qualquer lugar sem a preocupação de se perder ou de ser roubado. Mais ainda, com o aparecimento de impressoras 3D podemos também imprimir caixas do tamanho e forma que pretendermos e colori-los de forma a passarem despercebidos [16].

Mas estes dispositivos não foram desenvolvidos para este propósito. A ideia inicial era serem utilizados para questões educacionais, mas era necessário conhecimentos mais elevados para os configurar. Hoje em dia isso não é tão difícil, visto que algumas distribuições já desenvolvidas simplificam a sua configuração. Além disso, existem muitos tutoriais disponíveis on-line para o público interessado em aprender mais acerca do assunto [15].

Alguns exemplos destes dispositivos são o Raspberry Pi e Arduino. Um Arduino é um antecessor do Raspberry Pi e pode ser estendido usando vários módulos, dependendo da tarefa que se quer que seja executada. É facilmente programável e, com os módulos Ethernet e Wi-Fi, pode-se transformar numa ferramenta de auditoria que pode correr durante semanas se alimentada por baterias. Através do Social Engineering Toolkit (SET), um software desenvolvido para ataques de engenharia social, podemos facilmente escrever payloads, pequenos bocados de código, para que sejam executados nestes micro controladores, e fazê-los comportar-se de várias formas, como por exemplo um teclado, quando conectados à máquina da vítima [16].

O Raspberry Pi em comparação com outros dispositivos do mesmo tamanho é mais poderoso e já está incorporado com algumas entradas, como um computador normal. As limitações dele relativamente a um computador normal são o não possuir uma placa de rede sem fios incorporada nem mesmo uma bateria, que num dispositivo portátil é uma mais valia. Foi lançada uma nova versão deste dispositivo em 2015, com as mesmas especificações, no entanto com mais memória, o que lhe permite executar o novo sistema operativo, o Windows 10. Pode executar algumas tarefas relacionadas com a segurança que não necessitem de um elevado poder de processamento, tais como varrimento de portas, escuta de pacotes ou ataques Man In The Middle (MITM). Para isso podemos encontrar algumas distribuições disponíveis on-line para auditoria e segurança [15]:

(30)

12 Capítulo 2. Estado de Arte

• PwnPi • PwnBerryPi • RaspBerry Pwn

2.3

Tipos de ataques nas redes sem fios

As redes sem fios não são tão seguras quanto as com fios. A principal razão é que podemos realizar os mesmos, ou até mais, ataques do que aqueles que já são possíveis nas redes com fio. Isso é causado pelo fato de que qualquer um poder ler os pacotes, enquanto estes andam dispersos pelo meio através das frequências rádio [48]. Para isso apenas temos de ser capazes de capturar os pacotes e configurar a nossa placa de rede como pudemos ver na secção 1.2.1. De modo a dar início ao tópico desta secção, iremos fazer referência ao ataque de sniffing de pacotes, já que é possivelmente o mais comum. Este consiste em ouvir pacotes que não sejam dirigidos apenas para o nosso nó/dispositivo. Através deste ataque é possível que um atacante reconstrua arquivos e imagens que passam pela rede se as comunicações não estiverem encriptadas. Também podemos usar isso para encontrar mais informações sobre o ponto de acesso e procurar vulnerabilidades conhecidas para esse modelo específico com que estamos a lidar. Podemos ainda tentar fazer login no ponto de acesso com dados de utilizador e palavra passe por omissão e em caso de sucesso, aceder e gerir o dispositivo com privilégios acrescidos [24].

O hijacking de sessão é utilizado para roubar a identidade de um utilizador. Normalmente, os

cookies tendem a guardar alguns dados que necessitam para fazerem algum tipo de validação

com o servidor do site para que o utilizador não tenha que digitá-lo sempre que faz um pedido. Por vezes, a informação armazenada pode ser uma palavra-passe, ou um Identifier (ID). Então, se se enviar esse ID para o servidor do site de volta, consegue-se obter acesso ao ambiente que o utilizador tem acesso, sem se ter informações sobre ele [24].

A maior parte das vezes, os pontos de acesso têm regras que permitem apenas certos clientes se ligarem às suas redes, utilizando listas brancas (white lists). Um possível ataque que podemos executar, nestas situações, é o ataque de representação. Isto é, podemos modificar o nosso endereço Media Access Control (MAC) para um que seja aceite pelo ponto de acesso, ou por outras palavras mascararmo-nos com o endereço MAC de algum cliente que sabemos que está ligado à rede [33].

Um outro tipo de ataque muito idêntico ao do hijacking de sessão é o spoofing. Spoofing é o termo utilizado quando um atacante inunda a cache da tabela Address Resolution Protocol (ARP) da vítima com falsas informações. Estas informações fazem com que a associação entre o endereço MAC e o endereço de Internet Protocol (IP) na rede local esteja errada. O ARP é um protocolo da camada de rede da familia TCP/IP [17] e consiste em traduzir os endereços de IP locais da rede em endereços MAC para que as máquinas possam comunicar entre si. Portanto se

(31)

2.3. Tipos de ataques nas redes sem fios 13 confundir-mos a vítima para esta assumir que somos a gateway da rede podemos intercetar todo o tráfico que sai e chega dela, que nos permite o próximo tipo de ataque [24].

O ataque MITM é o ataque em que, tal como o próprio nome indica, o atacante mantém-se entre as comunicações de duas ou mais máquinas. Com este cenário montado todos os pedidos realizados pela vítima são primeiramente analisados pelo atacante que, normalmente, tenta procurar possiveis credenciais de acesso em websites. Este é considerado talvez um dos ataques mais perigosos porque a vítima pensa que a sua comunicação se encontra totalmente normal. Existem os certificados, que foram uma forma de prevenir este tipo de ataques, contudo existem também formas de combater e contornar estes certificados [24]. Contornar o uso de certificados é um tipo de ataque que é utilizado com ataques MITM. Funciona da seguinte forma, quando um utilizador faz um pedido a uma webpage que utiliza certificados, ou seja utiliza o protocolo

Hypertext Transfer Protocol Secure (HTTPS), de forma a estabelecer uma conexão segura com

o servidor o pedido não é feito ao servidor por ele. Quando este pedido passa pelo atacante, este muda o tipo de protocolo que está a ser utilizado de HTTPS para Hypertext Transfer

Protocol (HTTP), tornando a conexão não segura. Com isto, o atacante poderá ler o conteúdo

contido nos pacotes, e procurar por palavras-passe ou outros campos que tenham interesse [36]. Outro tipo de ataque que podemos executar é o cracking de palavras passe de forma a obter conexão com o ponto de acesso. Este tipo de ataque é baseado em quebrar as cifras utilizadas na cifragem das mensagens que passam na rede. Existem vários tipos de encriptação:

• Wired Encryption Protocol (WEP) • Wi-Fi Protected Access (WPA)

• Wi-Fi Protected Access Version 2 (WPA2)

O tipo de encriptação WEP é, hoje em dia, considerado fraco entre as comunicações sem fios. As primeiras versões apenas possuiam encriptação de 64 bits. Como não era suficiente, e havia forma de quebrar a cifra esta foi alargada para 128 bits. Mas o aumento da chave não se tornou a solução ideal para o problema pois com o avanço computacional e o aumento do poder de processamento foi possível explorar algumas vulnerabilidades existentes no protocolo [13]. Posto isto, a Wi-Fi Alliance instroduziu a encriptação WPA de forma a combater as fraquezas que o protocolo WEP continha. Esta encriptação utiliza uma chave de 256 bits, que é muito maior do que aquelas utilizadas pelo WEP. Apesar disso houve a preocupação em fazer com que os dispositivos suportassem ambas as encriptações WEP e WPA, o que levou a que a encriptação WPA recicla-se algumas carateristicas do WEP que resultaram em exploração das fraquezas dessas mesmas caraterísticas. Embora sejam conhecidas algumas vulnerabilidades e algumas delas tenham sido demonstradas publicamente o processo usual de quebrá-las é através de um mecanismo que foi implementado de forma a facilitar a ligação entre os dispositivos e os pontos de acesso, denominada Wi-Fi Protected Setup (WPS) e extremamente fácil de usar [13]. Finalmente temos a encriptação WPA2. A principal diferença entre o WPA e o WPA2 é a

(32)

14 Capítulo 2. Estado de Arte

obrigatoriedade de utilizar o algoritmo Advanced Encryption Standard (AES) e Counter Mode

with Cipher Block Chaining Message Authentication Code Protocol (CCMP) em substituição do Temporal Key Integrity Protocol (TKIP) utilizado pelo WPA. Contudo ainda existem alguns

sistemas WPA2 que utilizam TKIP para interoperar com o WPA. Nos dispositivos que utilizam WPA2 ainda existe o mecanismo de WPS implementado e é portanto esta a única vulnerabilidade conhecida para este tipo de encriptação. Este tipo de ataque requer uma janela temporal que varia entre as 2 e as 14 horas de forma a poder-se quebrar o pin do WPS. Para isso ser possível, e durante o tempo em que o ataque decorre, é necessário que o atacante permaneça ao alcance do ponto de acesso do alvo [13]. Além disto a única possibilidade de ataque é o ataque de dicionário de forma a obter a palavra passe, mas com um comprimento de chave que pode atingir os 25 carateres este ataque torna-se impraticável.

Sendo assim ordenando os tipos de encriptação do mais seguro e eficiente para o menos seguro e eficiente temos: [13] 1. WPA2 + AES 2. WPA + AES 3. WPA + TKIP/AES 4. WPA + TKIP 5. WEP 6. Sem encriptação

2.4

Software existente para executar ataques

Existem inúmeras aplicações desenvolvidas para diversas plataformas de forma a executar alguns dos possíveis ataques descritos na secção 2.3. Começando com a ferramenta Wireshark, esta é talvez a ferramenta mais útil de todas as que iremos analisar nesta secção. É um analisador de pacotes e um analisador de protocolos, e com isso podemos inspecionar o conteúdo dos pacotes sem que haja interferência nas comunicações. É utilizado por administradores de redes para diagnosticarem problemas nas suas redes e também a nível de segurança informática [6]. Se utilizado com a placa de rede configurada em modo Monitor conseguimos visualizar os anúncios feitos pelos pontos de acesso. Outra ferramenta utilizada pelos administradores de redes é o nmap [34] que basicamente executa um varrimento na rede em busca de todos os hosts ligados a ela, informando ainda sobre o estado de portas e serviços que estão abertos e fechados. Tudo isto pode ser feito de várias formas, dependendo do intuito do atacante, isto é se for pretendida um varrimento mais rápido ou algo que evite suspeitas na rede. Também fornece alguma informação extra como por exemplo o sistema operativo que o host está a utilizar.

O Airodump [9] é um programa que vem da família do Aircrack. É um programa que corre sobre a linha de comandos e é utilizado para capturar pacotes das tramas 802.11. Com um receptor de

(33)

2.4. Software existente para executar ataques 15 GPS conetado ao dispositivo pode também recolher as coordenadas dos pontos de acesso que vai encontrando. Como resultado surgem vários ficheiros com a informação recolhida das diversas capturas. Para correr o programa temos de possuir a interface de rede em modo monitor, pois só assim será possivel capturar as tramas. Também a correr a partir da linha de comandos temos o Kismet [26], que é um pouco mais poderoso que o Airodump pois além dos pontos de acesso normais consegue ainda detectar pontos de acesso que operem sob modo escondido. Similar a este tipo de software, mas com uma interface gráfica que torna mais simples a sua utilização temos o MacStumbler [29], o MiniStumbler [37] e o NetStumbler [38]. As funcionalidades destes últimos são basicamente todas idênticas a única diferença remete para o sistema operativo em que operam. De salientar que os desenvolvimentos no projeto MacStumbler cessaram e entretanto foi desenvolvido um outro projeto para os sistemas operativos MacOs denominado IStumbler [49]. Passando para o Aircrack-ng [10] e o Cowpatty [50], estes dois softwares são crackers. O seu objetivo passa por tentar descobrir qual a chave trocada no processo de four-way handshake da comunicação entre o ponto de acesso e o cliente. Utilizando o Aircrack-ng, em combinação com o Airodump para captura de tráfego, é possível quebrar uma encriptação WEP em questão de poucos segundos ou minutos bastando para isso possuir uma quantidade de tráfego significativa. Para o caso do WPA e WPA2 como já foi discutido anteriormente apenas poderemos utilizar um ataque de dicionário, que nos obriga a cifrar a palavra passe com a encriptação utilizada e comparar com a que obtivemos a partir do four-way handshake. Este processo como envolve cifragem e algum processamento para a fazer é algo mais demorado e que em muitos casos se torna pouco viável.

Com o aumento da utilização de dispositivos Android nos dias de hoje [45], existem também já desenvolvidas aplicações capazes de desempenhar o papel de ferramentas que já foram discutidas nesta secção. Podemos encontrá-las sem qualquer tipo de custo através da própria loja Android, a PlayStore. Alguns exemplos de aplicações que analisam os pontos de acesso que se encontram nas redondezas são o Wifi-analyzer [18] e o Fing [41]. Por outro lado temos também o IP Tools [2] que analisa a rede a que o utilizador já se encontra ligado de forma a encontrar hosts e revelar que portas e serviços que se encontram abertos, um pouco a semelhança do que faz o nmap. Avançando para a categoria das interceções das comunicações dentro de uma rede temos o exemplo do ettercap[40] que normalmente é utilizado em conjunto com o sslstrip[35]. Juntas, estas ferramentas são uma forte ameaça para os utilizadores das redes porque além de permitirem interceptar o tráfego também mudam o tipo de pedidos a serem feitos aos websites, contornando os certificados, e com isso possibilitam a busca de palavras passe ou outros campos que suscitem interesse para o atacante. O ettercap neste aspecto já possui alguma capacidade para a análise dos campos e deteta quando se trata de um campo que contenha algum tipo de credencial. O KARMA[51] é um outro projeto desenvolvido. A principal diferença entre as restantes ferramentas é que esta procura pacotes que circulem no meio que correspondam a pedidos de ligação dos clientes, os pacotes probe request que falaremos na secção seguinte. Após esta deteção ele programa uma interface de rede virtual que anuncia a mesma rede que estava a ser requerida pelo cliente fazendo com que este se ligue a ela por meio de deautenticação do cliente na rede

(34)

16 Capítulo 2. Estado de Arte

onde ele se encontrava.

2.5

Informação contida nas tramas 802.11

O protocolo utilizado para comunicar entre as redes sem fios, que estamos a analisar, é o IEEE 802.11. Neste protocolo existem várias tramas que são transmitidas pelos dispositivos para diversos propósitos. O gerenciador de tramas é um tipo utilizado para estabelecer e manter as comunicações entre as estações e tem vários subtipos:[22]

• trama de autenticação • trama de deautenticação

• trama de resposta de associação • trama de resposta de reassociação • trama de resposta de disassociação • trama beacon

• trama de solicitação de averiguação do ponto • trama de resposta de averiguação do ponto

Por outro lado as tramas de controlo são o tipo utilizado para auxiliar a entrega das tramas de dados entre as estações e também contém alguns subtipos:

• Request to Send (RTS) • Clear to Send (CTS) • Acknowledgment (ACK)

Finalmente as trama de dados são utilizadas para transportar dados entre as estações. Estas tramas encapsulam os pacotes de camadas mais altas, como os TCP/IP e os UDP. É possivel ver qual o conteúdo transportado na trama utilizando um analisador de pacotes como o Wireshark [22]. As tramas beacon são aquelas que neste caso nos irão suscitar particular interesse de analisar. Isto, porque são enviadas pelo ponto de acesso de forma períodica de forma a este anunciar a sua presença no meio bem como alguns parâmetros de configuração necessários para a ligação à rede. Dentro da informação que estas tramas transportam destacamos o Service Set Identifier (SSID), o endereço MAC, o canal, e algumas configurações de segurança (tipo de encriptação, chaves de grupo, etc). A placa de rede faz uma busca contínua entre todos os canais, em que opera o protocolo 802.11, e fica à escuta de beacons enviados pelos pontos de acesso para que possa

(35)

2.5. Informação contida nas tramas 802.11 17 então escolher a qual deles se ligar. Estas tramas possuem um tamanho de aproximadamente 50 bytes e o campo de destinatário será sempre preenchido como broadcast, isto é para todos que se encontrem nas redondezas e sejam capaz de o escutar [23]. A informação que pode ser obtida por estas tramas é:

• Intervalo de beacon, tempo entre o qual são transmitidas estas tramas;

• Timestamp, de forma a poderem sincronizar o relógio local entre todas as estações; • SSID, o nome que identifica a rede;

• Taxas de débito de dados suportadas, qual é quantidade de trafego por unidade de tempo que o ponto de acesso opera;

• Conjunto de parâmetros que informam sobre o esquema de modulação que é utilizado para transmitir as ondas rádio, entre outras informações;

• Informação de capacidade, quais os requisistos que as estações necessitam possuir para participar e entrar na rede;

• Mapa de indicação de tráfego, que contém informações úteis para as estações em modo de poupança de energia

O protocolo 802.11 opera em 14 canais diferentes sendo que cada canal corresponde a uma parte do espetro que é utilizado nas comunicações sem fios. Apenas o Japão utiliza todos os canais do protocolo e no caso da América do Norte são utilizados 11, ao passo que no resto do mundo são utilizados 13 canais [1]. A placa de rede tem de percorrer todos os canais e classificar as redes que encontra pela sua potência de sinal e com a restante informação que é necessária para se ligar à rede. Mesmo após a placa de rede já se encontrar conectada a uma rede, esta irá permanecer à escuta no meio de forma a actualizar as informações que possui respeitante às redes, nomeadamente a força de sinal e a qualidade do mesmo. Além disso a placa de rede recebe periodicamente as tramas beacon de forma a poder sincronizar o seu relógio com o do ponto de acesso e as restantes estações. É também necessário fazer algumas mudanças conforme a rede assim o exija, tais como a taxa de débito de dados [23].

2.5.1 Identificação do modelo do ponto de acesso

Um dos principais objetivos dos atacantes é identificar ao máximo o alvo que pretendem atacar, isto porque quanto mais informação obtiverem mais são as hipóteses de conseguir encontrar algum tipo de falha. Por exemplo uma informação bastante pertinente neste campo será identificar qual o modelo e o fabricante do ponto de acesso de forma a explorar possiveís falhas conhecidas sobre eles[21]. Este tipo de tarefa nem sempre é assim tão simples. No caso de identificar o tipo de fabricante, dado que cada ponto de acesso possui um endereço MAC que é único em cada placa de rede, é possível deduzi-lo pois é atribuído um intervalo de endereços a cada um dos

(36)

18 Capítulo 2. Estado de Arte

fabricantes. Esse intervalo corresponde ao prefixo do endereço MAC que cada placa de rede e ponto de acesso possui, sendo representado pelos 3 primeiros bytes [46].

Apesar dos avanços efectuados na descoberta do fabricante do ponto de acesso, não se torna suficiente saber apenas essa informação quando pretendemos explorar vulnerabilidades que acabam por ser mais específicas. Para isso necessitamos de mais detalhes sobre o equipamento de forma a ver se para aquele dispositivo em específico houve alguma falha de segurança já detetada e que possa ser investigada. Mas, não é apenas quem está “direcionado para o mal“ que tem interesse nesta situação de encontrar o máximo de informação sobre os dispositivos. Também existem, do lado das empresas e de “pessoas que agem para o bem“, interesse em detetar pontos de acesso falsos, denominados de evil-twin. Isto porque se existir algo semelhante nas suas redes, compromete a segurança das comunicações, pois nesse caso estão perante uma intercepção de tráfego [3]. Este tipo de tarefa não se torna de todo tão fácil quanto a primeira, pois não existe um parâmetro específico que permita classificar unicamente os dispositivos. Contudo têm-se vindo a implementar várias técnicas na tentativa de identificar o modelo em específico dos dispositivos.

Os autores em [3] mencionam que era relativamente fácil configurar um ponto de acesso de forma a este imitar outro, porque os campos do SSID, Basic Service Set Identifier (BSSID) e endereço MAC podem facilmente ser alterados para os valores que o atacante pretenda. É também possível persuadir os clientes a juntarem-se a um ponto de acesso falso bastando oferecer um sinal com uma potência maior à do verdadeiro. Portanto a proposta deles foi um modelo que utiliza clock

skews para identificar se um ponto de acesso é ou não autêntico. Basicamente o termo significa

desfasamento de relógio, e este tende, nos dispositivos sem fios, a permanecer consistente durante o tempo e a fatores externos, como a temperatura. Os cálculos para esta análise baseiam-se no tempo de chegada das tramas beacon em relação ao timestamp que estas continham. A particularidade deste cálculo advém deste ser feito na primeira vez que nos conectamos ao ponto de acesso e logo a seguir existe uma desconexão do ponto de acesso. Tal pode também ser feito do lado do cliente removendo e recarregando os módulos da placa de rede. No estudo deles verificaram que 100 medições eram suficientes para detetar se se tratava de um ponto de acesso falso.

Por outro lado os autores em [21] fizeram outra abordagem para identificar pontos de acesso únicos. Nesta experiência eles recolhiam e analisavam uma enorme quantidade de tráfego normal da rede, em particular aquele que vinha do ponto de acesso. Apartir dessa informação mediam o tempo de espera entre pacotes sucessivos (Inter Arrival Time (IAT)) tentando achar um padrão e com isso associar ao ponto de acesso devido. Basicamente este processo media com mais exatidão a taxa de fluxo de tráfego.

(37)

2.6. Sumário 19

2.6

Sumário

Retendo aquilo que foi discutido neste capítulo, vimos que o Wardriving é a atividade associada à prática de exploração de pontos de acesso. Para que esta possua melhores resultados necessitamos além de software e hardware especificos de executar uma pequena análise na zona (zonas habitacionais tendem a ter um maior número de pontos de acesso). Em termos de dispositivos que podem ser utilizados, o computador acaba por ser o mais comum. Contudo, existem também aparelhos de menor dimensão com um poder de processamento capaz de executar determinadas tarefas. Estes aparelhos conseguem inclusivé executar ataques a redes que não necessitem de um elevado poder de processamento.

Em termos de ataques dentro da rede, desde a análise de pacotes na rede que não estão destinados a nós até à impersonalização de forma a enganar outros hosts da rede, a variedade é imensa dependendo do propósito do ataque. Para executar estes ataques temos à nossa disposição vários

softwares desenvolvidos, permitindo inclusivé que mesmo sem grande conhecimento se possam

executar ataques.

Entrando numa vertente mais técnica analisámos o conteúdo das tramas que os pontos de acesso enviam para anunciar a sua presença no redor. No nosso caso aprofundámos mais as tramas

beacon pois são elas que nos incutem mais interesse por conterem os valores necessários para

o cliente se poder posteriormente ligar a ela através do envio de outras tramas (associação, pedido de conexão). Terminando o capítulo analisámos vários modelos desenvolvidos para tentar determinar com exatidão o modelo dos pontos de acesso, que é sempre uma mais valia tanto para quem ataca os sistemas, como também para quem os preserva e gere. Numa das abordagens vimos que utilizavam as diferenças de tempos entre a chegada do pacote e o valor que continham no timestamp. Por sua vez numa outra abordagem era utilizada uma enorme base de dados de informação que foi gerada de forma a encontrar um padrão que fosse possível associar ao ponto de acesso respetivo.

(38)
(39)

Capítulo 3

Design/Arquitetura

Neste capítulo vamos abordar a estrutura da framework desenvolvida ao longo do trabalho e explicar, em alguns casos, o motivo pelo qual optámos por escolher o tipo de organização apresentado. Vamos também discutir a forma como isso melhora o desenvolvimento futuro bem como a compreensão desta estrutura.

Como a framework se encontra dividida em módulos, como iremos apresentar na secção 3.1, vamos falar sobre como eles se relacionam entre si e qual o tipo de informação que é transmitida entre eles. Iremos apresentar os módulos do sistema e expicificar qual o seu papel e contribuição na framework.

Outro fator discutido neste capítulo será a forma como os dados irão estar organizados, e onde se encontrarão armazenados para um acesso posterior.

3.1

Módulos

A arquitetura da framework foi dividida em vários módulos de forma a tornar o código mais flexível e de melhor compreensão para desenvolvimento futuro. Desta forma, cada módulo envolve uma parte específica, ficando definidos quatro módulos importantes que serão descritos mais à frente (Módulo Sniffer 3.3, Módulo GPS 3.4, Módulo Base de Dados 3.5 e Módulo Vulnerabilidades 3.6).

Cada módulo está inserido numa pasta que o identifica mediante a categoria em que está inserido (ex: o módulo de gps está contido numa pasta GPS, o módulo Vulnerabilidades está inserido numa pasta Vulnerabilidades, juntamente com a restante parte respeitante às vulnerabilidades, e assim sucessivamente). A existência do módulo Main serve para tornar possível o arranque dos diversos módulos e a sua interação, uma vez que todos são chamados a partir deste e comunicam entre eles através do mesmo.

No caso das vulnerabilidades, estas serão implementadas e organizadas segundo categorias, de forma a serem facilmente expandidas para o script em causa, uma vez que depois serão

(40)

22 Capítulo 3. Design/Arquitetura

reconhecidas pelo módulo principal das vulnerabilidades (módulo vulnerabilidades 3.6). Na figura 3.1 podemos ver melhor como será a estrutura da framework.

Módulo Main M Módulo Sniffer M Módulo Vulnerabilidades M Sub-Módulos Vulnerabilidades M Módulo Base de Dados M Base de Dados Pontos de Acesso e Vulnerabilidades BD

Figura 3.1: Esquema da Arquitetura

3.2

Módulo Main

Este módulo interliga todos os outros de forma a poderem comunicar entre si. É também responsável por fazer o parsing dos comandos que iniciam o script através da linha de comandos, assim como detetar qual o nome a dar aos ficheiros gerados por ele e bases de dados criadas. A sua função passa também por informar que interfaces de rede se vai usar para o sniffing e para o teste de vulnerabilidades. Assim, teremos ainda de especificar qual a ronda que estaremos a fazer, de modo a saber quais os passos que o script necessita realizar nessa volta.

Um outro parâmetro necessário será o tipo de escuta das redes que pretendemos utilizar. Os tipos de escuta disponíveis serão discutidos mais a frente na secção 3.3 e 4.4. Após este parsing são iniciados os serviços necessários para correr o script, sendo os módulos iniciados por ordem. Entre estes, são trocadas várias informações que irão ser centralizadas inicialmente neste módulo e depois encaminhadas para o módulo das vulnerabilidades (ver secção 3.6).Estas informações estarão organizadas mediante uma estrutura de dados baseadas em <chave:valor>, respeitantes aos

(41)

3.3. Módulo Sniffer 23 atributos do ponto de acesso.

3.3

Módulo Sniffer

Este é o módulo responsável por capturar todas as redes WiFi que a placa de rede sem fios, instalada na máquina, consiga detetar.

Apesar de terem sido elaboradas três formas diferentes de implementação deste módulo, ficou apenas uma no projeto final totalmente funcional, algo que será descrito na secção 4.4. Isto deveu-se à melhoria da performance, isto é, à tentativa de capturar o máximo de redes possíveis num mesmo cenário, e a quantidade de informação que era possível obter a partir de cada uma delas. Obviamente, dependendo da placa de rede sem fios utilizada poderemos capturar mais ou menos redes (ver secção 2.1.1).

3.4

Módulo GPS

O módulo GPS é responsável pela captação dos dados provenientes do adaptador de Geographical

Position System (GPS) inserido no dispositivo. O objetivo deste módulo será permitir que a

localização do ponto de acesso seja guardada para referências futuras e também em casos onde pretendamos explorar vulnerabilidades onde necessitemos de uma maior dedicação de tempo. Irá utilizar-se um dispositivo GPS para poder fornecer os dados para o módulo que permita o envio dos dados pela porta série.

3.5

Módulo Base de Dados

Este módulo faz com que todos os outros possam interagir com a base de dados de uma forma consistente com todo o programa, isto é, mantendo a base de dados com as colunas e tabelas que respeitam a estrutura desta, para que os dados permaneçam ordenados e de fácil acesso. O objetivo do módulo é manter o acesso à base de dados de forma abstrata, não sendo esse processo executado e manipulado inteiramente pelo utilizador. Apesar de ser um módulo que se irá encontrar disponível para o utilizador reduz-se algum risco da base de dados se tornar corrompida ou de haverem erros na inserção que possam ocorrer. Na secção 3.7 será explicada de que forma a base de dados está estruturada.

3.6

Módulo Vulnerabilidades

Neste módulo foi elaborado um principal que irá comunicar com os sub-módulos das vulne-rabilidades e que irão ser expandidos posteriormente, à medida que forem aparecendo novas

(42)

24 Capítulo 3. Design/Arquitetura

vulnerabilidades capazes de ser testadas pelo script. Estes sub-módulos estão estruturados de acordo com várias categorias, de forma a ser mais fácil a introdução de alguma vulnerabilidade para fazê-la correr no script.

De forma a evitar problemas devido a nomes de ficheiros, visto que podemos ter uma marca de pontos de acesso com mais que uma vulnerabilidade em categorias diferentes, fizémos dentro dos sub-módulos, uma disposição por pastas eliminando assim a questão dos nomes de ficheiros e, tornando mais fácil a correção de um determinado módulo ou a sua introdução no futuro. Numa primeira fase foram idealizadas algumas categorias que poderão ser depois alargadas em trabalho futuro, ou mesmo adaptadas consoante o caso.

De notar que não teremos vulnerabilidades para todas as categorias ainda nesta fase, uma vez que o foco centrou-se mais em definir e desenvolver uma framework que lidasse com elas forma semi-automática, necessitando sempre de intervenção do utilizador na fase de iniciação. Assim sendo, neste momento existem as seguintes categorias idealizadas:

• Gerador de Palavras-Passe: será uma categoria que lida com vulnerabilidades associadas a geradores de palavras-passe que permitem o acesso a um ponto de acesso. Estes geradores permitem reduzir o número de tentativas necessárias para se obter sucesso caso as definições de fábrica se mantenham.

• Cracker de Palavras-Passe: será uma categoria que contém uma lista de vulnerabilidades que permitem deduzir qual a palavra-passe associada.

• BufferOverflow: será uma categoria que contém vulnerabilidades que permitem que executar um determinado código no ponto de acesso. A ideia por detrás desta categoria assenta na possibilidade de o ponto de acesso fornecer informações adicionais que não estão acessiveis de outra forma e até mesmo mudar alguns parâmetros da rede.

• Serviços: nesta categoria estão aglomerados todos as vulnerabilidades que permitem a exploração de falhas em serviços que correm dentro do ponto de acesso ou mesmo dentro de um dispositivo que se encontre dentro da rede.

Além de estarem organizados por categorias, cada sub-módulo irá necessitar de respeitar um

template. Este template serve para o programa principal ser capaz de conhecer as capacidades

de cada sub-módulo e assim filtrar aqueles que poderão ser candidatos a ser chamados a testar contra um determinado ponto de acesso encontrado. É claro que além dos métodos necessários poderão existir métodos auxiliares de acordo com a escolha do programador que em nada afetam a sua chamada pelo módulo principal.

3.6.1 Template

Tal como foi referido anteriormente, foi elaborado um template de forma a ser possível definir a

(43)

3.6. Módulo Vulnerabilidades 25 O template contém três métodos essenciais que são o capabilities, o run e o test:

• Capabilities: retorna os campos que identificam a vulnerabilidade. Estes dizem respeito à informação respeitante à categoria em que estão inseridos. Em conjunto com isso agregam um valor que contém qual(is) o(s) campo(s) de informação do ponto de acesso para averiguar se a vulnerabilidade possui os requesitos para ser testada.

• Run: método principal do módulo que explora a vulnerabilidade propriamente dita. Será implementado totalmente pelo desenvolvedor que pretender explorar a vulnerabilidade. • Test: testa se o ponto de acesso está ou não sujeito à vulnerabilidade em causa. O

teste é realizado em cada sub-módulo das vulnerabilidades, uma vez que permite uma maior flexibilidade para o programador do módulo na forma de comparar os campos. Mesmo que para já os testes idealizados sejam de fácil verificação num caso futuro, poderão existir casos onde a complexidade seja maior, pelo que assim evitamos uma grande complexidade/sobrecarga no módulo principal. Para além disso, podemos adicionar mais do que um campo para comparação e poderíamos chegar a um ponto que tornava pouco viável fazer esta verificação no módulo principal.

Função Capabilities()

1 /* O campo requisitos corresponde ao campo de informação do ponto

de acesso (ex: essid, endereço MAC, fabricante,...) */

Retornar (categoria,requisitos,valor_requisistos, requer_autenticação) Função Run(interface, informação_ponto_acesso, campos_extra)

Carregar informação contida nos campos extra;

Para cada Entrada nos campos extra fazer

Utilizar valor e interface de rede para testar as vulnerabilidades;

Retornar Verdadeiro/Falso fim

Função Test(informação_ponto_acesso)

Arranjar valor da informação pertinente sobre o ponto de acesso;

Utilizar expressões regulares para verificar existência de padrão no campo pretendido;

Se Padrão foi encontrado então

Se Existir script adicional para arranjar informação extra então

Correr script;

Guardar valores gerados pelo script e enviar para o módulo que o chamou;

fim Retornar Verdadeiro fim senão Retornar Falso fim

(44)

26 Capítulo 3. Design/Arquitetura

3.7

Base de Dados

Outra parte essencial da framework será a base de dados, onde estará concentrada toda a informação recolhida ao longo das várias fases, de forma organizada e de fácil e rápido acesso. Na fase de escuta das redes haverá a organização da informação na base de dados para que nas fases posteriores, o acesso a ela seja feito de forma rápida, fácil e eficaz. A forma como estará organizada a base de dados pode ser vista no diagrama Entity-Relationship (ER) da figura 3.2. Pela figura vemos que necessitamos de armazenar informação sobre o ponto de acesso de forma a podermos mais tarde identificá-lo, mas também de forma a saber qual a sua localização e alguns aspetos mais especificos que permitam selecionar quais as vulnerabilidades que irão poder ser testadas. Essas vulnerabilidades serão então guardadas sendo que existirá um campo que averigua se esta já foi ou não testada, de forma a evitar repetições de testes e caso esta tenha tido sucesso é também guardado o valor utilizado. Além disso são guardados os campos que permitem identificar a vulnerabilidade, como o nome, a categoria onde se insere e se necessita ou não de possuir autenticação no ponto de acesso. Por fim, após executar os testes podemos ter uma alteração de estado(s) para com a ligação ao ponto de acesso, sendo então guardado(s) esse(s) valore(s).

De salientar que na base de dados optámos por definir que esta apenas guarda as vulnerabilidades respeitantes ao ponto de acesso que estamos a testar. Isto porque achamos que será mais fácil futuramente relacionar estes dados, pois não necessitamos de relações extra entre as entidades. A totalidade das vulnerabilidades ao invés disso serão apenas guardadas nas pastas que constituem as categorias não havendo nenhuma informação sobre isso na base de dados.

(45)

3.7. Base de Dados 27

Essid: VARCHAR(20) Endereço MAC: VARCHAR(17)

⃞ Canal: INTEGER

⃞ Tipo de Chave: VARCHAR(0)

⃞ Gerenciamento de Chave : VARCHAR(0)

⃞ Conjunto de Autenticação: VARCHAR(0)

⃞ Chave de Grupo: VARCHAR(0)

⃞ Fabricante: VARCHAR(0)

⃞ Fabricante detalhado: VARCHAR(0)

Informação do AP

Nome da Vulnerabilidade: VARCHAR(20)

⃞ Categoria: VARCHAR(0)

⃞ Atenticação no AP: BOOLEAN

⃞ Valor utilizado: VARCHAR(0)

⃞ Testado: BOOLEAN

Vulnerabilidade

Nome do Estado : VARCHAR(0)

Estado

1 1

1

N

(46)
(47)

Capítulo 4

Implementação

Neste capítulo vamos abordar os aspetos de implementação do projeto. Nele irão ser abordados alguns tópicos, nomeadamente o tipo de linguagem utilizada, de que forma foi executada a escuta da informação dos pontos de acesso, como foi utilizado o mecanismo de threads de forma a tornar possível a execução de várias tarefas em simultâneo e, como estão divididas as várias fases da análise de vulnerabilidades. Para tal iremos novamente percorrer os diversos módulos que foram abordados no capítulo anterior focando-nos desta vez nas suas implementações.

No final, na secção 4.10, iremos também abordar de uma forma mais explícita, em pseudo-código, como é que se comportam os vários módulos, de forma a percebermos melhor tudo o que foi abordado ao longo das secções.

4.1

Linguagem

A linguagem escolhida para o desenvolvimento do projeto foi o Python. A escolha desta linguagem recaiu no fato de esta ser não só uma linguagem bastante utilizada em questões de scripting, mas também pela sua facilidadede utilização uma vez que com ela é possível realizar tarefas bastante complexas com um baixo número de linhas de código, sendo também fácil a incorporação de alguns payloads já existentes em algumas frameworks de vulnerabilidades, como o caso do metasploit[44]. Tal como outras linguagens, dispõe de uma vasta Application Programming

Interface (API) que simplifica bastante a realização de tarefas, apesar de na questão de redes e sockets a API do Python é mais trivial de trabalhar e muito mais poderosa [47].

Além disso, existem certos aspetos da linguagem que numa etapa posterior acabaram por se revelar bastante úteis e fáceis de incorporar nas restantes fases do projeto, como é o caso dos objetos JSON que funcionam como dicionários nesta linguagem e que mais tarde seriam úteis para a sua incorporação na base de dados.

Apesar de esta linguagem não possuir uma fama de desempenho excelente[47][32], para o problema em questão, em termos de tempos de execução de algoritmos para grandes quantidades de dados

(48)

30 Capítulo 4. Implementação

pareceu-nos fiável. Além disso, em testes iniciais, à medida que fomos melhorando a forma de realizar a escuta, o número de pontos de acesso encontrados foi bastante satisfatório quando comparado com outra ferramenta de sniffing já existente, nomeadamente o Airodump.[9]

4.2

Módulo Main

O módulo Main é o módulo que interliga todos os outros e apesar de não obter nenhuma informação, por si só, é o ponto principal do projeto. Isto acontece uma vez que consegue interligar e tornar possível a comunicação entre todos os outros módulos, tornando a compreensão do script e sua expansão mais fáceis.

Este módulo para além do descrito, tem como outras funções carregar/fechar serviços que são, ou não, indispensáveis para o script funcionar. No caso do projeto existem serviços que necessitam de ser parados, como o NetworkManager de forma a evitar que este se sobreponha a outros que necessitem de configurar as ligações e placas de rede, neste caso o wpaSupplicant. Para esta tarefa foi utilizada a chamada da biblioteca os.system do Python que permite executar um comando na Shell do sistema.

Deste modo, foram executadas as chamadas dos seguintes comandos: service <serviço a ser parado> stop

ou

service <serviço a ser iniciado> start

Além disso, é necessário preparar a interface de escuta das redes, dada inicialmente como parâmetro de iniciação do script, executando para isso três comandos de forma sequencial:

ifconfig <interface> down

Iwconfig <interface> mode monitor Ifconfig <interface> up

O primeiro comando serve para desativar a interface tornando possível configurá-la, pois apenas o podemos fazer quando esta não está a ser utilizada.

O segundo comando permite mudar a forma de comportamento da placa de rede, que neste caso ficará em modo Monitor tendo já sido abordado na secção 1.2.1. Estando os serviços corretamente iniciados, iniciamos os restantes módulos que irão operar e processar a informação em simultâneo.

(49)

4.3. Threads e Filas 31

4.3

Threads e Filas

Para correr os módulos e sub-módulos, recorremos ao mecanismo de threads que permite correr vários processos em simultâneo no processador.

Para as threads recorremos à biblioteca do Python threading. Existe contudo uma outra biblioteca thread mas que trabalha a uma camada mais baixa ao nível do sistema operativo, algo que não pretendemos, e além do mais não nos oferece tanta utilidades. [4] [20]

Apesar de estarem a correr em simultâneo, os módulos necessitam de comunicar entre si, algo que se resolveu utilizando filas para cada uma das threads que foram lançadas, tendo sido enviado como argumento no método chamado pela thread.

Tratamento do input

Iniciação e Paragem de Serviços

Iniciação da Base de Dados

Invocação da Thread Sniffer

Invocação da Thread GPS

Invocação da Thread Vulnerbility Queue GPS

Queue Sniffer

Queue Vulnerability

Figura 4.1: Diagrama de execução dos módulos

Já a fila permite além da comunicação entre as threads e/ou processos, ser possível que haja concorrência sem haver acessos ilícitos a um dado recurso em simultâneo, isto é, é possível escrever algo na fila sem haver o receio de do outro lado, o outro processo querer ler em simultâneo o mesmo objeto.

Referências

Documentos relacionados

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

Entre os objetivos da pesquisa encontram-se: a análise da representação do autismo na série ​Atypical a partir dos conceitos de identidade e diferença, estereótipos e estigmas,

Combinados, o rádio portátil APX 8000XE habilitado para todas bandas e o microfone falante remoto XE500 criam uma solução de missão crítica incomparável, projetada para o pessoal

Conclui-se que o teor de prolina varia entre as cultivares de mandioca, sendo maior nas cultivares Platina’ e ‘Caravela’, seguidas por ‘BRS Kiriris’, ‘BRS Verdinha’,

Cargas pontuais (F ou M): Matematicamente, a aplicação pontual de cargas não existe (é preciso uma área para aplicar, ainda que pequena) e sua ocorrência provocará uma

A partir de programas escritos nessa linguagem, específicos para este trabalho, foram realizados os cruzamen- tos dos diferentes planos de informações considerados neste

costumam ser as mais valorizadas. B) Uma soma de fatores, como fácil acesso à água, possibilidade de utilizar os rios como meio de transporte e o baixo custo imobiliário devido

Esse conhecimento superior, da consciência, é sabedoria pura e não pode ser patrimônio de nenhuma civilização ou doutrina específica, é de todos e de ninguém