levantamento de problemas de segurança wireless · levantamento de problemas de segurança...

80
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

Upload: vuque

Post on 10-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Levantamento de problemas de segurana Wireless nas redes Ricardo Daniel Carvalho GodinhoMestrado Integrado em Engenharia de Redes e Sistemas InformticosDepartamento de Cincias e Computadores

2015/2016

Orientador

Pedro Brando, Professor Auxiliar, Faculdade Cincias da

Universidade do Porto

Coorientador

Manuel Correia, Professor Auxiliar, Faculdade Cincias da

Universidade do Porto

Todas as correes determinadas

pelo jri, e s essas, foram efetuadas.

O Presidente do Jri,

Porto, ______/______/_________

Abstract

In recent decades we experience a continuous technological growth. With it the size of thetechnology decreased and processing power increased significantly. With the use of increasinglysmall 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 bythe majority of the population. These failures when properly exploited allow attackers to controlthe 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 higherlevels of security. The objective of this project involves creating a framework capable of analyzingthe access points in a given area verifying the existence or not of known vulnerabilities. Forthe development of the framework we used the Python language and developed a template thatworks as API for the implementation of the vulnerabilities that will arise. To allow improvementswe have taken into account the modulation of the framework. With this we intend that withfurther development, vulnerabilities can be detected in good time, in order to be resolved or atleast avoided.

i

Resumo

Nas ultmas dcadas expernciamos um contnuo crescimento tecnolgico. Com ele o tamanho datecnologia diminuiu e o poder de processamento aumentou significativamente. Com a utilizaode equipamentos cada vez mais pequenos surgiu a necessidade de aproveitar esta capacidadeporttil dos dispositivos e surgiu a tecnologia sem fios. uma tcnologia que acompanha,diariamente, as pessoas nos dias de hoje, sendo que uma grande parte est dependente dela.Contudo, existem problemas a nvel de segurana que so desconhecidos, ou pelo menos notomados em conta, pela maioria da populao. Estas falhas quando devidamente exploradaspermitem que os atacantes controlem os dispositivos a que a elas esto associados, e em algunscasos outros que permaneam na mesma rede. Com isto companhias de black hats tentam escalaros ataques a empresas de maior dimenso e com nveis de segurana maiores. O objetivo desteprojeto passa por criar uma framework capaz de analisar os pontos de acesso de uma determinadazona verificando a existncia, ou no, de vulnerabilidades conhecidas. Para o desenvolvimentoda framework utilizmos a linguagem Python e desenvolvemos um template que funciona comoAPI para a implementao das vulnerabilidades que iro surgindo. Para permitir que ocorrammelhoramentos foi tido em conta a modularidade da framework. Com isto pretendemos que, comdesenvolvimentos futuros, as vulnerabilidades sejam detetadas atempadamente, de forma a seremresolvidas ou pelo menos evitadas.

iii

Agradecimentos

Gostaria de agradecer, em primeiro lugar, aos meus orientadores, Prof. Pedro Brando e Prof.Eduardo Correia, que me acompanharam durante o desenrolar na tese e auxiliaram nas vriasfases do projeto com sugestes para ultrapassar certas barreiras que foram surgindo. Sem o seucontributo no teria sido possvel atingir alguns dos pontos que estavam delineados no incio eatingir o resultado final. Agradeo o facto de me terem aceite neste tema de tese que desde o inciodespertou especial interesse e permitiram que aprofunda-se mais um pouco os conhecimentos quedetinha sobre esta rea.

Gostaria tambm de agradecer minha namorada que me acompanhou de igual forma ao longodeste processo, pela enorme pacincia que teve para comigo, dando sempre fora e incentivandopara que conseguisse alcanar os meus objetivos de forma satisfatria. No esquecendo tambmqueria agradecer aos meus amigos que partilharam o seu conhecimento comigo e me guiaramtambm em algumas partes do projeto que me senti mais preso.

A todos eles a minha enorme gratido.

v

Contedo

Abstract iii

Resumo v

Agradecimentos vii

Contedo xi

Lista de Tabelas xiii

Lista de Figuras xv

Lista de Blocos de Cdigo xvii

1 Introduo 3

1.1 Motivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.1 Tcnicas Passivas vs Tcnicas Ativas . . . . . . . . . . . . . . . . . . . . . 5

1.3 Estrutura da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Estado de Arte 9

2.1 Wardriving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Requisitos de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 A evoluo dos dispositivos intrusivos . . . . . . . . . . . . . . . . . . . . . . . . 11

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

vii

2.4 Software existente para executar ataques . . . . . . . . . . . . . . . . . . . . . . . 14

2.5 Informao contida nas tramas 802.11 . . . . . . . . . . . . . . . . . . . . . . . . 16

2.5.1 Identificao do modelo do ponto de acesso . . . . . . . . . . . . . . . . . 17

2.6 Sumrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Design/Arquitetura 21

3.1 Mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Mdulo Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3 Mdulo Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4 Mdulo GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.5 Mdulo Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.6 Mdulo Vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.6.1 Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.7 Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4 Implementao 29

4.1 Linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.2 Mdulo Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.3 Threads e Filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.4 Mdulo Sniffing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.4.1 RawSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.4.2 Scappy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.4.3 Iwlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.5 Vulnerability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.5.1 Associao com Ponto de Acesso . . . . . . . . . . . . . . . . . . . . . . . 36

4.6 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.7 GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.8 Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.9 Dependncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

viii

4.10 Pseudo Cdigo Geral do Programa . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5 Anlise de Resultados 43

5.1 Anlise da Vulnerabilidade em Teste . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.2 Associao ao Ponto de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.3 Cenrio de Teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

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

5.3.2 Trajeto 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.4 Operadoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.5 Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6 Concluses 51

6.1 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

A Pseudo-Cdigos 55

Bibliografia 59

ix

Lista de Tabelas

5.1 Tempos de execuo da vulnerabilidade usada em testes . . . . . . . . . . . . . . 44

5.2 Tempos de associao com o ponto de acesso . . . . . . . . . . . . . . . . . . . . 44

xi

Lista de Figuras

3.1 Esquema da Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2 Diagrama ER da Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1 Diagrama de execuo dos mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2 Diagrama de estados de ligao 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 Grfico com nmero de pontos de acesso capturados no trajeto 1 utilizando ainterface de rede WLAN0 (computador porttil) . . . . . . . . . . . . . . . . . . 46

5.4 Grfico com nmero de pontos de acesso capturados no trajeto 1 utilizando ainterface de rede WLAN1 (antena externa) . . . . . . . . . . . . . . . . . . . . . 46

5.5 Grfico com os tempos de processamento do passo 2 . . . . . . . . . . . . . . . . 47

5.6 Grfico com nmero de pontos de acesso capturados no trajeto 2 . . . . . . . . . 48

5.7 Grfico com percentagem de pontos de acesso pertencentes a operadoras . . . . . 50

xiii

Lista de Blocos de Cdigo

4.1 Exemplo de output do commando Iwlist . . . . . . . . . . . . . . . . . . . . . 33

xv

Acrnimos

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 BlockChaining Message AuthenticationCode 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 ElectronicsAssociation

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 Informao

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

1

Captulo 1

Introduo

Nos ltimos anos os avanos tecnolgicos tm vindo a crescer exponencialmente [52]. Se comparar-mos o tamanho dos computadores dos anos 70 com aqueles que existem no presente, vemosque so 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 porttil [16] [25].

A tecnologia sem fios to importante quanto os dispositivos portteis pois permite-nos comunicarmais facilmente sem a necessidade de cabos. Em vez disso, utilizam rdio-frequncias quetransmitem os dados entre os dispositivos [19] [27]. A velocidade de transmisso de dados nestetipo de comunicao no to elevada quanto no caso das comunicaes cabeladas. Isto deve-seao facto da energia das rdio-frequncias se dissipar na propagao do sinal, pois propagadoem todas as direes. Embora isto acontea, a tecnologia sem fios ser sempre uma mais valianestes dispositivos pois permite que as pessoas usufruam da qualidade porttil dos mesmos [25].

Existem vrios 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 dissertao iremos focar-nosapenas nas redes WiFi, que utilizam o protocolo standard IEEE 802.11 de forma a estabelecer ascomunicaes entre os dispositivos e os pontos de acesso [11].

Podemos tambem ver o quo importante esta tecnologia sem fios se tornou para a vida daspessoas hoje em dia quando analisamos a quantidade de utilizadores que a utiliza e que dependedela. Esse nmero est constantemente a aumentar desde que aconteceu o fenmeno das redessociais na Internet, onde as pessoas publicam fotos delas prprias e dos locais onde vo. Emboraem imensos casos possam utilizar a tecnologia Long Term Evolution (LTE), por outras palavrasa rede de dados mveis fornecida pelas operadoras, na maioria do casos essas publicaes sofeitas atravs de redes WiFi com acesso grtis sem que as pessoas conheam os verdadeiros riscosque correm [19].

Muitos dos conselhos e avisos que so feitos por tcnicos e profissionais na rea de Tecnologias daInformao (TI) acabam por no ser levados a srio pelas pessoas, nomeadamente em questesde segurana. E, como as comunicaes so feitas atravs do meio e sem a necessidade de fios,qualquer um as pode interceptar. Mais ainda, estas podem ser lidas ou ouvidas caso no se

3

4 Captulo 1. Introduo

encontrem encriptadas [48].

Em alguns casos o ponto de entrada dos atacantes no atravs da tecnologia sem fios, masacedendo remotamente aos pontos de acesso atravs de falhas de configurao que podem mesmopermitir aceder-lhes de qualquer parte do globo. Este tipo de ataques razoavelmente fcil de seefetuar porque na maioria dos casos o acesso a esses dispositivos pode ser feito com as credenciaisque vm de fbrica. Isto acaba por se tornar um alvo muito apetecido pelas companhias de blackhats porque com a combinao de um elevado nmero de dispositivos de pequena dimenso, efceis de atacar, conseguem construir um exrcito capaz de derrubar atravs de por exemploataques de Distributed Denial of Service (DDoS) grandes empresas. Mesmo que a seguranadestas empresas seja grande, e difcil de atacar, o poder aglomerado destes dispositivos em massatorna-se elevado, quando se juntam em sintonia, permitindo essa invaso [30].

Na maiorias das vezes as pessoas pensam que se encontram seguras por terem uma palavra-passeassociada com o equipamento, mas o que no sabem que existem outras formas de se obteracesso sem a necessidade de provar ou mostrar que sabemos a palavra-passe. Isto deve-se avulnerabilidades que so deixadas nos equipamentos pelos fabricantes que os produzem[8].

Linux.Wifatch doesnt use elaborate backdoors or 0day exploits to hack devices. Itbasically just uses telnet and a few other protocols and tries a few really dumb ordefault passwords (our favourite is "password"). These passwords are well-known -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 algumconsegue arranjar forma de entrar na rede est a comprometer as informaes que nela passam ea deixar que possam ver e aceder a recursos privados [5].

1.1 Motivao

A falta de conhecimento quanto a questes de segurana so a principal motivao do trabalhodesta dissertao. Muitos dos utilizadores no conhecem os riscos que esto a correr quandotm as suas redes sem fios disponveis e desconhecem a quantidade de ataques que podem serexecutados dentro da sua rede. As falhas de configurao de dispositivos permitem que osatacantes possam adquirir controlo dos dispositivos domsticos remotamente, algo que tambmmotiva o tema.

Com tudo isto considerado, pretendemos identificar as falhas que existem nos pontos de acesso enas redes domsticas de forma a poderem ser tomadas medidas para as corrigir ou evitar. Maisimportante que isso, pretendemos alertar as operadoras mveis, que instalam a maioria destes

1.2. Objetivos 5

aparelhos nas casas, para estas vulnerabilidades existentes a fim de em alguns casos poderem serevitadas.

1.2 Objetivos

Os principais objetivos da dissertao passam como o seu prprio nome indica, recolher problemasde segurana associados s redes sem fios. De forma a atingir esses objetivos definimos os seguintespontos:

Descobrir a cobertura das redes sem fios em determinada zona;

Identificar que tipos de segurana os pontos de acesso tm instalado nos seus sistemas;

Obter o mximo de informao possvel atravs dos anncios 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 ouno vulnervel;

Guardar a informao para anlise posterior;

Implementar uma ferramenta que agregue os pontos discutidos acima

A nossa inteno para realizar todas estas tarefas uma com a qual no sejam infrigidas nenhumalei. Para identificar e classificar os pontos de acesso poderemos faz-lo recorrendo a tcnicaspassivas. Contudo de forma a testar se a vulnerabilidade se aplica ou no ao ponto de acesso necessrio interagir realmente com ele.

1.2.1 Tcnicas Passivas vs Tcnicas Ativas

De forma a poder identificar as redes sem fios que nos rodeiam precisamos de ouvir as informaesque os pontos de acesso enviam. Essa actividade definida como tcnica de deteo passiva, poisno interfere com o ponto de acesso diretamente ou manipula qualquer pacote que enviado deforma a obter mais informao[43] [7]. Para podermos escutar estas informaes necessitamos deconfigurar a placa de rede, mais concretamente o modo em que opera. Existem vrios modos quepodemos utilizar:

Modo Monitor (Monitor)

Modo Promscuo (Promicuous)

Modo Principal (Master)

6 Captulo 1. Introduo

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 nospermite ver a informao que iremos necessitar antes de entrar em alguma rede. Este modopermite monitorizar a informao que enviada pelos pontos de acesso e assim receber dadossobre eles, portanto apenas faz sentido ser utilizado para redes sem fios. Falando um poucosobre os outros modos temos o modo Promscuo que pode ser utilizado tanto em redes cabladascomo redes sem fios e permite que um utilizador da rede receba tanto os pacotes que a ele sodestinados como tambm aqueles que no o so. O modo Principal refere-se aos pontos de acesso,e o modo utilizado quando queremos que o dispositivo se comporte como ponto de acesso. Omodo Ad-hoc permite que vrios dispositivos comuniquem entre si sem a necessidade de possuirqualquer tipo de organizao na rede, em muitos casos este tipo de redes denominada redespeer-to-peer. Um pouco similar s redes Ad-hoc temos as redes Mesh, a diferena entre elas que as redes Mesh definem iter-comunicao entre ns usando outros como encaminhadores epermitem a ligao a redes infraestruturadas nativamente, portanto faz com que haja um poucomais de organizao na rede. Finalmente o modo Repetidor refere-se ao modo que tem comoprincipal objetivo estender o sinal que recebe e apenas faz a placa de rede transmitir esse mesmosinal [28].

O outro tipo de tcnica que pode ser utilizado para recolher informao dos pontos de acesso a tcnica ativa. A tcnica ativa consiste em enviar pacotes especialmente concebidos para oponto de acesso de forma a obter informao mais precisa e que no seria possvel utilizandouma forma passiva. uma tcnica que pode ser utilizada para assumir controlo do dispositivo,que acaba por ser o seu propsito mais comum na maioria das vezes. Os pacotes especialmenteconcebidos so feitos de tal forma a criarem buffer overflows, que permite o intruso executarcomandos remotamente apartir desses mesmo pacotes [43] [7].

1.3 Estrutura da Dissertao

O documento encontra-se estruturado da seguinte forma, neste captulo foram introduzidas astemticas que iremos abordar e descrito o problema em causa. Tambm falmos sobre o quenos motivou a fazer este trabalho e o que pretendemos atingir com ele. No captulo dois serapresentado o estado de arte onde iremos discutir alguns termos sobre a actividade que iremosdesenvolver, que tipos de software j se encontram disponveis e o que podemos obter com asinformaes enviadas pelos pontos de acesso. Seguidamente no captulo trs iremos definir aestrutura do nosso projeto e falar sobre algumas decises tomadas, para depois no captulo quatroabordar as questes de carter mais tcnico sobre a implementao do mesmo. No captulo

1.3. Estrutura da Dissertao 7

cinco iremos apresentar os resultados que obtivmos durante a execuo do projeto e analisar osdados que foram recolhidos. Finalmente, no captulo seis iremos concluir o nosso trabalho comuma breve sntese do que conseguimos fazer e de que forma os objetivos foram ou no atingidos.Iremos nessa seco falar sobre as dificuldades que ultrapassmos e de que forma poder estetrabalho ser continuado no futuro.

Captulo 2

Estado de Arte

Neste captulo vamos abordar as tecnologias envolvidas nesta dissertao e explicar determinadostermos relacionados com o trabalho desenvolvido. Iremos comear por falar sobre uma prticamuito associada ao tipo de atividade que iremos desenvolver. Seguidamente vamos entrar poraspetos cada vez mais tcnicos associados a este tipo de tcnologia. Desta forma podemos irevoluindo na temtica 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, fazendouso de um software e harware especfico para o efeito. Geralmente esta atividade feita circulandopelos locais com uma viatura de forma a cobrir uma rea maior num menor espao de tempo. utilizado um computador devido ao seu alto poder de processamento, no entanto, tambm possvel usar outros pequenos aparelhos, como iremos ver na seco 2.2, que possuem menor poderde processamento [48]. Estes aparelhos, quando colocados no lugar do passageiro, comeam deimediato a obter toda a informao que o atacante pretende, inclusiv a localizao geogrfica,incorporando toda essa informao num ficheiro, que ser posteriormente utilizado para anlise erepresentao num mapa [12].

De maneira a obter melhores resultados, executar uma pesquisa sobre as reas que so maispovoadas pode ser uma ajuda caso o objetivo seja recolher a maior quantidade de amostraspossvel. A velocidade qual se desloca tambm um fator importante, uma vez que o softwarenecessita de tempo para percorrer todos os canais que a banda da rede sem fios tem, podendoeste ser de alguns segundos. No hardware, tambm temos de considerar que o GeographicalPosition System (GPS) precisa de algum tempo para obter a correta posio no mapa e as suascoordenadas [12].

Por ltimo, quando a informao se encontra armazenada e a viagem concluda, necessrioformatar a informao para algo mais fcil de ler, analisar e visualizar num mapa [12].

9

10 Captulo 2. Estado de Arte

2.1.1 Requisitos de Hardware

Como j mencionado, o Wardriving precisa de harware especializado de forma a obter melhoresresultados. Antes de mais, o participante da actividade necessita de um aparelho que lhe ofereaalguma portabilidade, uma vez que este ter de se deslocar por stios onde ser impossvelfornecer energia ao aparelho por via de carregamento. Os aparelhos mais comuns neste tipo deatividade so um computador ou um Personal Digital Assistant (PDA). De denotar que softwareque o PDA apresenta mais limitado [12]. Com os avanos tecnolgicos, tm vindo a aparecermicro computadores, com um tamanho to pequeno capaz de caber na palma da mo, que somais econmicos e continuam a operar de forma satisfatria, como o caso do Arduino ou doRaspberry PI [15] [16].

Aps este processo precisamos de um adaptador de rede sem fios que torne possvel a comunicaocom o ponto de acesso no protocolo que ele opera. Existem inmeros modelos e fabricantesdestes aparelhos, no entanto, o que usualmente mais utilizado e mais comum o que permiteadicionar uma antena externa [12].

A antena externa uma das partes fundamentais da captura de pontos de acesso pois podepossuir um valor de ganho superior, quando comparado com um adaptador normal. Isso tornapossvel alcanar as redes que esto distantes e assim aumentar os resultados. Existem diferentestipos de antenas: direcionaias, semi-direcionaias, omnidirecionaias e isotrpicos.

Mesmo que as antenas direccionais tenham o maior ganho de recepo e transmisso, a suautilizao mais comum para a comunicao ponto-a-ponto. As antenas semi-direcionais so osegundo tipo de antenas que tm o maior ganho e o tipo preferido de antena para os participantesnesta actividade. A razo prende-se com o ganho que elas possuem se traduzir num plano emlinha reta, o que timo para cobrir uma rea ampla e assim capturar um maior nmero depontos de acesso. A antena omni-direcional tem um baixo ganho, no entanto podem cobriruma maior rea que a semi-direcional. A antena isotrpica transmite e recebe dados em todasas direes com a mesma potncia de sinal. Isto implica que com a mesma potncia de sinalfornecida o alcance da comunicao seja inferior, pois aumentando a distncia o alcance dasfrequncias rdio duas vezes a dimenso da antena dividida pelo comprimento de onda. Estetipo de antena geralmente usado para comparar o ganho que as outras antenas possuem eassim sendo consideramos que elas tm um ganho de zero [12].

Alm dos requisitos de hardware, h tambm alguns sensores especiais e dispositivos capazes defazer testes de penetrao e que so deixados no local procura de possveis pontos de entrada narede. Estes vm com software j implementado capaz de monitorizar a rede e aceder remotamentepor conexes Secure Shell (SSH) atravs de telemveis 4G / 3G. H tambm smartphones quecorrem distribuies 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 semfios externa e uma antena ligado a eles, a fim de obterem um maior ganho e consequentementeum maior nmero de potnciais alvos. Alguns exemplos desses produtos so os vendidos pelaPwnie Express: Pwn Pro, Pwn Plug R3, Pwn Plug R2 Academic Edition, Pwn Phone 2014 e

2.2. A evoluo dos dispositivos intrusivos 11

Pwn Pad 3 [14]

2.2 A evoluo dos dispositivos intrusivos

Os avanos tecnolgicos tm tido grande efeitos no que se refere ao tamanho dos dispositivos. Estesso cada vez menores e, mantm mesmo assim o seu poder computacional e de processamento.Isso pode ser benfico ou no, dependendo das intenes da pessoa que gerir o dispositivo [16].

Para a generalidade das pessoas isto sinnimo de conforto e tecnologia mais porttil, quepode ser transportada para qualquer lugar com facilidade. No entanto para outros, pode sersinnimo de mais oportunidades e camuflagem. Devido sua pequena dimenso, possvelocultar estes dispositivos em qualquer stio sem ningum 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 reforar a ideologia de deixar odispositivo em qualquer lugar sem a preocupao de se perder ou de ser roubado. Mais ainda,com o aparecimento de impressoras 3D podemos tambm imprimir caixas do tamanho e formaque pretendermos e colori-los de forma a passarem despercebidos [16].

Mas estes dispositivos no foram desenvolvidos para este propsito. A ideia inicial era seremutilizados para questes educacionais, mas era necessrio conhecimentos mais elevados para osconfigurar. Hoje em dia isso no to difcil, visto que algumas distribuies j desenvolvidassimplificam a sua configurao. Alm disso, existem muitos tutoriais disponveis on-line para opblico interessado em aprender mais acerca do assunto [15].

Alguns exemplos destes dispositivos so o Raspberry Pi e Arduino. Um Arduino um antecessordo Raspberry Pi e pode ser estendido usando vrios mdulos, dependendo da tarefa que se querque seja executada. facilmente programvel e, com os mdulos Ethernet e Wi-Fi, pode-setransformar numa ferramenta de auditoria que pode correr durante semanas se alimentada porbaterias. Atravs do Social Engineering Toolkit (SET), um software desenvolvido para ataquesde engenharia social, podemos facilmente escrever payloads, pequenos bocados de cdigo, paraque sejam executados nestes micro controladores, e faz-los comportar-se de vrias formas, comopor exemplo um teclado, quando conectados mquina da vtima [16].

O Raspberry Pi em comparao com outros dispositivos do mesmo tamanho mais poderoso ej est incorporado com algumas entradas, como um computador normal. As limitaes delerelativamente a um computador normal so o no possuir uma placa de rede sem fios incorporadanem mesmo uma bateria, que num dispositivo porttil uma mais valia. Foi lanada uma novaverso deste dispositivo em 2015, com as mesmas especificaes, no entanto com mais memria,o que lhe permite executar o novo sistema operativo, o Windows 10. Pode executar algumastarefas relacionadas com a segurana que no necessitem de um elevado poder de processamento,tais como varrimento de portas, escuta de pacotes ou ataques Man In The Middle (MITM). Paraisso podemos encontrar algumas distribuies disponveis on-line para auditoria e segurana [15]:

12 Captulo 2. Estado de Arte

PwnPi

PwnBerryPi

RaspBerry Pwn

2.3 Tipos de ataques nas redes sem fios

As redes sem fios no so to seguras quanto as com fios. A principal razo que podemosrealizar os mesmos, ou at mais, ataques do que aqueles que j so possveis nas redes comfio. Isso causado pelo fato de que qualquer um poder ler os pacotes, enquanto estes andamdispersos pelo meio atravs das frequncias rdio [48]. Para isso apenas temos de ser capazes decapturar os pacotes e configurar a nossa placa de rede como pudemos ver na seco 1.2.1.

De modo a dar incio ao tpico desta seco, iremos fazer referncia ao ataque de sniffing depacotes, j que possivelmente o mais comum. Este consiste em ouvir pacotes que no sejamdirigidos apenas para o nosso n/dispositivo. Atravs deste ataque possvel que um atacantereconstrua arquivos e imagens que passam pela rede se as comunicaes no estiverem encriptadas.Tambm podemos usar isso para encontrar mais informaes sobre o ponto de acesso e procurarvulnerabilidades conhecidas para esse modelo especfico com que estamos a lidar. Podemos aindatentar fazer login no ponto de acesso com dados de utilizador e palavra passe por omisso e emcaso de sucesso, aceder e gerir o dispositivo com privilgios acrescidos [24].

O hijacking de sesso utilizado para roubar a identidade de um utilizador. Normalmente, oscookies tendem a guardar alguns dados que necessitam para fazerem algum tipo de validaocom o servidor do site para que o utilizador no tenha que digit-lo sempre que faz um pedido.Por vezes, a informao armazenada pode ser uma palavra-passe, ou um Identifier (ID). Ento,se se enviar esse ID para o servidor do site de volta, consegue-se obter acesso ao ambiente que outilizador tem acesso, sem se ter informaes sobre ele [24].

A maior parte das vezes, os pontos de acesso tm regras que permitem apenas certos clientes seligarem s suas redes, utilizando listas brancas (white lists). Um possvel ataque que podemosexecutar, nestas situaes, o ataque de representao. Isto , podemos modificar o nossoendereo Media Access Control (MAC) para um que seja aceite pelo ponto de acesso, ou poroutras palavras mascararmo-nos com o endereo MAC de algum cliente que sabemos que estligado rede [33].

Um outro tipo de ataque muito idntico ao do hijacking de sesso o spoofing. Spoofing o termoutilizado quando um atacante inunda a cache da tabela Address Resolution Protocol (ARP) davtima com falsas informaes. Estas informaes fazem com que a associao entre o endereoMAC e o endereo de Internet Protocol (IP) na rede local esteja errada. O ARP um protocoloda camada de rede da familia TCP/IP [17] e consiste em traduzir os endereos de IP locaisda rede em endereos MAC para que as mquinas possam comunicar entre si. Portanto se

2.3. Tipos de ataques nas redes sem fios 13

confundir-mos a vtima para esta assumir que somos a gateway da rede podemos intercetar todoo trfico que sai e chega dela, que nos permite o prximo tipo de ataque [24].

O ataque MITM o ataque em que, tal como o prprio nome indica, o atacante mantm-seentre as comunicaes de duas ou mais mquinas. Com este cenrio montado todos os pedidosrealizados pela vtima so primeiramente analisados pelo atacante que, normalmente, tentaprocurar possiveis credenciais de acesso em websites. Este considerado talvez um dos ataquesmais perigosos porque a vtima pensa que a sua comunicao se encontra totalmente normal.Existem os certificados, que foram uma forma de prevenir este tipo de ataques, contudo existemtambm 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, quandoum utilizador faz um pedido a uma webpage que utiliza certificados, ou seja utiliza o protocoloHypertext Transfer Protocol Secure (HTTPS), de forma a estabelecer uma conexo segura como servidor o pedido no 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 TransferProtocol (HTTP), tornando a conexo no segura. Com isto, o atacante poder ler o contedocontido 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 obterconexo com o ponto de acesso. Este tipo de ataque baseado em quebrar as cifras utilizadas nacifragem das mensagens que passam na rede. Existem vrios tipos de encriptao:

Wired Encryption Protocol (WEP)

Wi-Fi Protected Access (WPA)

Wi-Fi Protected Access Version 2 (WPA2)

O tipo de encriptao WEP , hoje em dia, considerado fraco entre as comunicaes sem fios.As primeiras verses apenas possuiam encriptao de 64 bits. Como no era suficiente, e haviaforma de quebrar a cifra esta foi alargada para 128 bits. Mas o aumento da chave no se tornoua soluo ideal para o problema pois com o avano computacional e o aumento do poder deprocessamento foi possvel explorar algumas vulnerabilidades existentes no protocolo [13].

Posto isto, a Wi-Fi Alliance instroduziu a encriptao WPA de forma a combater as fraquezasque o protocolo WEP continha. Esta encriptao utiliza uma chave de 256 bits, que muitomaior do que aquelas utilizadas pelo WEP. Apesar disso houve a preocupao em fazer com queos dispositivos suportassem ambas as encriptaes WEP e WPA, o que levou a que a encriptaoWPA recicla-se algumas carateristicas do WEP que resultaram em explorao das fraquezasdessas mesmas caratersticas. Embora sejam conhecidas algumas vulnerabilidades e algumasdelas tenham sido demonstradas publicamente o processo usual de quebr-las atravs de ummecanismo que foi implementado de forma a facilitar a ligao entre os dispositivos e os pontosde acesso, denominada Wi-Fi Protected Setup (WPS) e extremamente fcil de usar [13].

Finalmente temos a encriptao WPA2. A principal diferena entre o WPA e o WPA2 a

14 Captulo 2. Estado de Arte

obrigatoriedade de utilizar o algoritmo Advanced Encryption Standard (AES) e Counter Modewith Cipher Block Chaining Message Authentication Code Protocol (CCMP) em substituio doTemporal Key Integrity Protocol (TKIP) utilizado pelo WPA. Contudo ainda existem algunssistemas WPA2 que utilizam TKIP para interoperar com o WPA. Nos dispositivos que utilizamWPA2 ainda existe o mecanismo de WPS implementado e portanto esta a nica vulnerabilidadeconhecida para este tipo de encriptao. Este tipo de ataque requer uma janela temporal quevaria entre as 2 e as 14 horas de forma a poder-se quebrar o pin do WPS. Para isso ser possvel,e durante o tempo em que o ataque decorre, necessrio que o atacante permanea ao alcance doponto de acesso do alvo [13]. Alm disto a nica possibilidade de ataque o ataque de dicionriode forma a obter a palavra passe, mas com um comprimento de chave que pode atingir os 25carateres este ataque torna-se impraticvel.

Sendo assim ordenando os tipos de encriptao do mais seguro e eficiente para o menos seguro eeficiente temos: [13]

1. WPA2 + AES

2. WPA + AES

3. WPA + TKIP/AES

4. WPA + TKIP

5. WEP

6. Sem encriptao

2.4 Software existente para executar ataques

Existem inmeras aplicaes desenvolvidas para diversas plataformas de forma a executar algunsdos possveis ataques descritos na seco 2.3. Comeando com a ferramenta Wireshark, esta talvez a ferramenta mais til de todas as que iremos analisar nesta seco. um analisador depacotes e um analisador de protocolos, e com isso podemos inspecionar o contedo dos pacotessem que haja interferncia nas comunicaes. utilizado por administradores de redes paradiagnosticarem problemas nas suas redes e tambm a nvel de segurana informtica [6]. Seutilizado com a placa de rede configurada em modo Monitor conseguimos visualizar os annciosfeitos pelos pontos de acesso. Outra ferramenta utilizada pelos administradores de redes onmap [34] que basicamente executa um varrimento na rede em busca de todos os hosts ligados aela, informando ainda sobre o estado de portas e servios que esto abertos e fechados. Tudo istopode ser feito de vrias formas, dependendo do intuito do atacante, isto se for pretendida umvarrimento mais rpido ou algo que evite suspeitas na rede. Tambm fornece alguma informaoextra como por exemplo o sistema operativo que o host est a utilizar.

O Airodump [9] um programa que vem da famlia do Aircrack. um programa que corre sobrea linha de comandos e utilizado para capturar pacotes das tramas 802.11. Com um receptor de

2.4. Software existente para executar ataques 15

GPS conetado ao dispositivo pode tambm recolher as coordenadas dos pontos de acesso que vaiencontrando. Como resultado surgem vrios ficheiros com a informao recolhida das diversascapturas. Para correr o programa temos de possuir a interface de rede em modo monitor, poiss assim ser possivel capturar as tramas. Tambm a correr a partir da linha de comandos temoso Kismet [26], que um pouco mais poderoso que o Airodump pois alm dos pontos de acessonormais consegue ainda detectar pontos de acesso que operem sob modo escondido. Similar aeste tipo de software, mas com uma interface grfica que torna mais simples a sua utilizaotemos o MacStumbler [29], o MiniStumbler [37] e o NetStumbler [38]. As funcionalidades destesltimos so basicamente todas idnticas a nica diferena remete para o sistema operativo em queoperam. De salientar que os desenvolvimentos no projeto MacStumbler cessaram e entretanto foidesenvolvido um outro projeto para os sistemas operativos MacOs denominado IStumbler [49].

Passando para o Aircrack-ng [10] e o Cowpatty [50], estes dois softwares so crackers. O seuobjetivo passa por tentar descobrir qual a chave trocada no processo de four-way handshake dacomunicao entre o ponto de acesso e o cliente. Utilizando o Aircrack-ng, em combinao como Airodump para captura de trfego, possvel quebrar uma encriptao WEP em questo depoucos segundos ou minutos bastando para isso possuir uma quantidade de trfego significativa.Para o caso do WPA e WPA2 como j foi discutido anteriormente apenas poderemos utilizarum ataque de dicionrio, que nos obriga a cifrar a palavra passe com a encriptao utilizadae comparar com a que obtivemos a partir do four-way handshake. Este processo como envolvecifragem e algum processamento para a fazer algo mais demorado e que em muitos casos setorna pouco vivel.

Com o aumento da utilizao de dispositivos Android nos dias de hoje [45], existem tambm jdesenvolvidas aplicaes capazes de desempenhar o papel de ferramentas que j foram discutidasnesta seco. Podemos encontr-las sem qualquer tipo de custo atravs da prpria loja Android,a PlayStore. Alguns exemplos de aplicaes que analisam os pontos de acesso que se encontramnas redondezas so o Wifi-analyzer [18] e o Fing [41]. Por outro lado temos tambm o IP Tools [2]que analisa a rede a que o utilizador j se encontra ligado de forma a encontrar hosts e revelarque portas e servios que se encontram abertos, um pouco a semelhana do que faz o nmap.

Avanando para a categoria das intercees das comunicaes dentro de uma rede temos oexemplo do ettercap[40] que normalmente utilizado em conjunto com o sslstrip[35]. Juntas,estas ferramentas so uma forte ameaa para os utilizadores das redes porque alm de permitireminterceptar o trfego tambm mudam o tipo de pedidos a serem feitos aos websites, contornandoos certificados, e com isso possibilitam a busca de palavras passe ou outros campos que susciteminteresse para o atacante. O ettercap neste aspecto j possui alguma capacidade para a anlisedos campos e deteta quando se trata de um campo que contenha algum tipo de credencial. OKARMA[51] um outro projeto desenvolvido. A principal diferena entre as restantes ferramentas que esta procura pacotes que circulem no meio que correspondam a pedidos de ligao dosclientes, os pacotes probe request que falaremos na seco seguinte. Aps esta deteo eleprograma uma interface de rede virtual que anuncia a mesma rede que estava a ser requeridapelo cliente fazendo com que este se ligue a ela por meio de deautenticao do cliente na rede

16 Captulo 2. Estado de Arte

onde ele se encontrava.

2.5 Informao contida nas tramas 802.11

O protocolo utilizado para comunicar entre as redes sem fios, que estamos a analisar, o IEEE802.11. Neste protocolo existem vrias tramas que so transmitidas pelos dispositivos paradiversos propsitos. O gerenciador de tramas um tipo utilizado para estabelecer e manter ascomunicaes entre as estaes e tem vrios subtipos:[22]

trama de autenticao

trama de deautenticao

trama de resposta de associao

trama de resposta de reassociao

trama de resposta de disassociao

trama beacon

trama de solicitao de averiguao do ponto

trama de resposta de averiguao do ponto

Por outro lado as tramas de controlo so o tipo utilizado para auxiliar a entrega das tramas dedados entre as estaes e tambm contm alguns subtipos:

Request to Send (RTS)

Clear to Send (CTS)

Acknowledgment (ACK)

Finalmente as trama de dados so utilizadas para transportar dados entre as estaes. Estastramas encapsulam os pacotes de camadas mais altas, como os TCP/IP e os UDP. possivel verqual o contedo transportado na trama utilizando um analisador de pacotes como o Wireshark [22].

As tramas beacon so aquelas que neste caso nos iro suscitar particular interesse de analisar.Isto, porque so enviadas pelo ponto de acesso de forma perodica de forma a este anunciar a suapresena no meio bem como alguns parmetros de configurao necessrios para a ligao rede.Dentro da informao que estas tramas transportam destacamos o Service Set Identifier (SSID),o endereo MAC, o canal, e algumas configuraes de segurana (tipo de encriptao, chavesde grupo, etc). A placa de rede faz uma busca contnua entre todos os canais, em que operao protocolo 802.11, e fica escuta de beacons enviados pelos pontos de acesso para que possa

2.5. Informao contida nas tramas 802.11 17

ento escolher a qual deles se ligar. Estas tramas possuem um tamanho de aproximadamente 50bytes e o campo de destinatrio ser sempre preenchido como broadcast, isto para todos que seencontrem nas redondezas e sejam capaz de o escutar [23]. A informao que pode ser obtidapor estas tramas :

Intervalo de beacon, tempo entre o qual so transmitidas estas tramas;

Timestamp, de forma a poderem sincronizar o relgio local entre todas as estaes;

SSID, o nome que identifica a rede;

Taxas de dbito de dados suportadas, qual quantidade de trafego por unidade de tempoque o ponto de acesso opera;

Conjunto de parmetros que informam sobre o esquema de modulao que utilizado paratransmitir as ondas rdio, entre outras informaes;

Informao de capacidade, quais os requisistos que as estaes necessitam possuir paraparticipar e entrar na rede;

Mapa de indicao de trfego, que contm informaes teis para as estaes em modo depoupana de energia

O protocolo 802.11 opera em 14 canais diferentes sendo que cada canal corresponde a uma partedo espetro que utilizado nas comunicaes sem fios. Apenas o Japo utiliza todos os canaisdo protocolo e no caso da Amrica do Norte so utilizados 11, ao passo que no resto do mundoso utilizados 13 canais [1]. A placa de rede tem de percorrer todos os canais e classificar asredes que encontra pela sua potncia de sinal e com a restante informao que necessria parase ligar rede. Mesmo aps a placa de rede j se encontrar conectada a uma rede, esta irpermanecer escuta no meio de forma a actualizar as informaes que possui respeitante sredes, nomeadamente a fora de sinal e a qualidade do mesmo. Alm disso a placa de rede recebeperiodicamente as tramas beacon de forma a poder sincronizar o seu relgio com o do ponto deacesso e as restantes estaes. tambm necessrio fazer algumas mudanas conforme a redeassim o exija, tais como a taxa de dbito de dados [23].

2.5.1 Identificao do modelo do ponto de acesso

Um dos principais objetivos dos atacantes identificar ao mximo o alvo que pretendem atacar,isto porque quanto mais informao obtiverem mais so as hipteses de conseguir encontrar algumtipo de falha. Por exemplo uma informao bastante pertinente neste campo ser identificarqual o modelo e o fabricante do ponto de acesso de forma a explorar possives falhas conhecidassobre eles[21]. Este tipo de tarefa nem sempre assim to simples. No caso de identificar o tipode fabricante, dado que cada ponto de acesso possui um endereo MAC que nico em cadaplaca de rede, possvel deduzi-lo pois atribudo um intervalo de endereos a cada um dos

18 Captulo 2. Estado de Arte

fabricantes. Esse intervalo corresponde ao prefixo do endereo MAC que cada placa de rede eponto de acesso possui, sendo representado pelos 3 primeiros bytes [46].

Apesar dos avanos efectuados na descoberta do fabricante do ponto de acesso, no se tornasuficiente saber apenas essa informao quando pretendemos explorar vulnerabilidades queacabam por ser mais especficas. Para isso necessitamos de mais detalhes sobre o equipamentode forma a ver se para aquele dispositivo em especfico houve alguma falha de segurana jdetetada e que possa ser investigada. Mas, no apenas quem est direcionado para o malque tem interesse nesta situao de encontrar o mximo de informao sobre os dispositivos.Tambm existem, do lado das empresas e de pessoas que agem para o bem, interesse em detetarpontos de acesso falsos, denominados de evil-twin. Isto porque se existir algo semelhante nas suasredes, compromete a segurana das comunicaes, pois nesse caso esto perante uma intercepode trfego [3]. Este tipo de tarefa no se torna de todo to fcil quanto a primeira, pois noexiste um parmetro especfico que permita classificar unicamente os dispositivos. Contudotm-se vindo a implementar vrias tcnicas na tentativa de identificar o modelo em especficodos dispositivos.

Os autores em [3] mencionam que era relativamente fcil configurar um ponto de acesso de formaa este imitar outro, porque os campos do SSID, Basic Service Set Identifier (BSSID) e endereoMAC podem facilmente ser alterados para os valores que o atacante pretenda. tambm possvelpersuadir os clientes a juntarem-se a um ponto de acesso falso bastando oferecer um sinal comuma potncia maior do verdadeiro. Portanto a proposta deles foi um modelo que utiliza clockskews para identificar se um ponto de acesso ou no autntico. Basicamente o termo significadesfasamento de relgio, e este tende, nos dispositivos sem fios, a permanecer consistente duranteo tempo e a fatores externos, como a temperatura. Os clculos para esta anlise baseiam-seno tempo de chegada das tramas beacon em relao ao timestamp que estas continham. Aparticularidade deste clculo advm deste ser feito na primeira vez que nos conectamos ao pontode acesso e logo a seguir existe uma desconexo do ponto de acesso. Tal pode tambm ser feitodo lado do cliente removendo e recarregando os mdulos da placa de rede. No estudo delesverificaram que 100 medies eram suficientes para detetar se se tratava de um ponto de acessofalso.

Por outro lado os autores em [21] fizeram outra abordagem para identificar pontos de acessonicos. Nesta experincia eles recolhiam e analisavam uma enorme quantidade de trfego normalda rede, em particular aquele que vinha do ponto de acesso. Apartir dessa informao mediam otempo de espera entre pacotes sucessivos (Inter Arrival Time (IAT)) tentando achar um padro ecom isso associar ao ponto de acesso devido. Basicamente este processo media com mais exatidoa taxa de fluxo de trfego.

2.6. Sumrio 19

2.6 Sumrio

Retendo aquilo que foi discutido neste captulo, vimos que o Wardriving a atividade associada prtica de explorao de pontos de acesso. Para que esta possua melhores resultados necessitamosalm de software e hardware especificos de executar uma pequena anlise na zona (zonashabitacionais tendem a ter um maior nmero de pontos de acesso). Em termos de dispositivosque podem ser utilizados, o computador acaba por ser o mais comum. Contudo, existem tambmaparelhos de menor dimenso com um poder de processamento capaz de executar determinadastarefas. Estes aparelhos conseguem inclusiv executar ataques a redes que no necessitem de umelevado poder de processamento.

Em termos de ataques dentro da rede, desde a anlise de pacotes na rede que no esto destinadosa ns at impersonalizao de forma a enganar outros hosts da rede, a variedade imensadependendo do propsito do ataque. Para executar estes ataques temos nossa disposio vriossoftwares desenvolvidos, permitindo inclusiv que mesmo sem grande conhecimento se possamexecutar ataques.

Entrando numa vertente mais tcnica analismos o contedo das tramas que os pontos de acessoenviam para anunciar a sua presena no redor. No nosso caso aprofundmos mais as tramasbeacon pois so elas que nos incutem mais interesse por conterem os valores necessrios parao cliente se poder posteriormente ligar a ela atravs do envio de outras tramas (associao,pedido de conexo). Terminando o captulo analismos vrios modelos desenvolvidos para tentardeterminar com exatido o modelo dos pontos de acesso, que sempre uma mais valia tanto paraquem ataca os sistemas, como tambm para quem os preserva e gere. Numa das abordagensvimos que utilizavam as diferenas de tempos entre a chegada do pacote e o valor que continhamno timestamp. Por sua vez numa outra abordagem era utilizada uma enorme base de dados deinformao que foi gerada de forma a encontrar um padro que fosse possvel associar ao pontode acesso respetivo.

Captulo 3

Design/Arquitetura

Neste captulo vamos abordar a estrutura da framework desenvolvida ao longo do trabalhoe explicar, em alguns casos, o motivo pelo qual optmos por escolher o tipo de organizaoapresentado. Vamos tambm discutir a forma como isso melhora o desenvolvimento futuro bemcomo a compreenso desta estrutura.

Como a framework se encontra dividida em mdulos, como iremos apresentar na seco 3.1,vamos falar sobre como eles se relacionam entre si e qual o tipo de informao que transmitidaentre eles. Iremos apresentar os mdulos do sistema e expicificar qual o seu papel e contribuiona framework.

Outro fator discutido neste captulo ser a forma como os dados iro estar organizados, e ondese encontraro armazenados para um acesso posterior.

3.1 Mdulos

A arquitetura da framework foi dividida em vrios mdulos de forma a tornar o cdigo maisflexvel e de melhor compreenso para desenvolvimento futuro. Desta forma, cada mduloenvolve uma parte especfica, ficando definidos quatro mdulos importantes que sero descritosmais frente (Mdulo Sniffer 3.3, Mdulo GPS 3.4, Mdulo Base de Dados 3.5 e MduloVulnerabilidades 3.6).

Cada mdulo est inserido numa pasta que o identifica mediante a categoria em que est inserido(ex: o mdulo de gps est contido numa pasta GPS, o mdulo Vulnerabilidades est inseridonuma pasta Vulnerabilidades, juntamente com a restante parte respeitante s vulnerabilidades, eassim sucessivamente). A existncia do mdulo Main serve para tornar possvel o arranque dosdiversos mdulos e a sua interao, uma vez que todos so chamados a partir deste e comunicamentre eles atravs do mesmo.

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

21

22 Captulo 3. Design/Arquitetura

reconhecidas pelo mdulo principal das vulnerabilidades (mdulo vulnerabilidades 3.6).

Na figura 3.1 podemos ver melhor como ser a estrutura da framework.

Mdulo

MainM

Mdulo

SnifferM

Mdulo

VulnerabilidadesM

Sub-Mdulos

VulnerabilidadesM

Mdulo

Base de DadosM

Base de Dados

Pontos de Acessoe

Vulnerabilidades

BD

Figura 3.1: Esquema da Arquitetura

3.2 Mdulo Main

Este mdulo interliga todos os outros de forma a poderem comunicar entre si. tambmresponsvel por fazer o parsing dos comandos que iniciam o script atravs da linha de comandos,assim como detetar qual o nome a dar aos ficheiros gerados por ele e bases de dados criadas. Asua funo passa tambm por informar que interfaces de rede se vai usar para o sniffing e parao teste de vulnerabilidades. Assim, teremos ainda de especificar qual a ronda que estaremos afazer, de modo a saber quais os passos que o script necessita realizar nessa volta.

Um outro parmetro necessrio ser o tipo de escuta das redes que pretendemos utilizar. Os tiposde escuta disponveis sero discutidos mais a frente na seco 3.3 e 4.4. Aps este parsing soiniciados os servios necessrios para correr o script, sendo os mdulos iniciados por ordem. Entreestes, so trocadas vrias informaes que iro ser centralizadas inicialmente neste mdulo e depoisencaminhadas para o mdulo das vulnerabilidades (ver seco 3.6).Estas informaes estaroorganizadas mediante uma estrutura de dados baseadas em , respeitantes aos

3.3. Mdulo Sniffer 23

atributos do ponto de acesso.

3.3 Mdulo Sniffer

Este o mdulo responsvel por capturar todas as redes WiFi que a placa de rede sem fios,instalada na mquina, consiga detetar.

Apesar de terem sido elaboradas trs formas diferentes de implementao deste mdulo, ficouapenas uma no projeto final totalmente funcional, algo que ser descrito na seco 4.4. Istodeveu-se melhoria da performance, isto , tentativa de capturar o mximo de redes possveisnum mesmo cenrio, e a quantidade de informao que era possvel obter a partir de cada umadelas. Obviamente, dependendo da placa de rede sem fios utilizada poderemos capturar mais oumenos redes (ver seco 2.1.1).

3.4 Mdulo GPS

O mdulo GPS responsvel pela captao dos dados provenientes do adaptador de GeographicalPosition System (GPS) inserido no dispositivo. O objetivo deste mdulo ser permitir que alocalizao do ponto de acesso seja guardada para referncias futuras e tambm em casos ondepretendamos explorar vulnerabilidades onde necessitemos de uma maior dedicao de tempo. Irutilizar-se um dispositivo GPS para poder fornecer os dados para o mdulo que permita o enviodos dados pela porta srie.

3.5 Mdulo Base de Dados

Este mdulo faz com que todos os outros possam interagir com a base de dados de uma formaconsistente com todo o programa, isto , mantendo a base de dados com as colunas e tabelas querespeitam a estrutura desta, para que os dados permaneam ordenados e de fcil acesso.

O objetivo do mdulo manter o acesso base de dados de forma abstrata, no sendo esseprocesso executado e manipulado inteiramente pelo utilizador. Apesar de ser um mdulo quese ir encontrar disponvel para o utilizador reduz-se algum risco da base de dados se tornarcorrompida ou de haverem erros na insero que possam ocorrer. Na seco 3.7 ser explicadade que forma a base de dados est estruturada.

3.6 Mdulo Vulnerabilidades

Neste mdulo foi elaborado um principal que ir comunicar com os sub-mdulos das vulne-rabilidades e que iro ser expandidos posteriormente, medida que forem aparecendo novas

24 Captulo 3. Design/Arquitetura

vulnerabilidades capazes de ser testadas pelo script. Estes sub-mdulos esto estruturados deacordo com vrias categorias, de forma a ser mais fcil a introduo de alguma vulnerabilidadepara faz-la correr no script.

De forma a evitar problemas devido a nomes de ficheiros, visto que podemos ter uma marca depontos de acesso com mais que uma vulnerabilidade em categorias diferentes, fizmos dentro dossub-mdulos, uma disposio por pastas eliminando assim a questo dos nomes de ficheiros e,tornando mais fcil a correo de um determinado mdulo ou a sua introduo no futuro.

Numa primeira fase foram idealizadas algumas categorias que podero ser depois alargadas emtrabalho futuro, ou mesmo adaptadas consoante o caso.

De notar que no teremos vulnerabilidades para todas as categorias ainda nesta fase, uma vezque o foco centrou-se mais em definir e desenvolver uma framework que lidasse com elas formasemi-automtica, necessitando sempre de interveno do utilizador na fase de iniciao. Assimsendo, neste momento existem as seguintes categorias idealizadas:

Gerador de Palavras-Passe: ser uma categoria que lida com vulnerabilidades associadas ageradores de palavras-passe que permitem o acesso a um ponto de acesso. Estes geradorespermitem reduzir o nmero de tentativas necessrias para se obter sucesso caso as definiesde fbrica se mantenham.

Cracker de Palavras-Passe: ser uma categoria que contm uma lista de vulnerabilidadesque permitem deduzir qual a palavra-passe associada.

BufferOverflow: ser uma categoria que contm vulnerabilidades que permitem que executarum determinado cdigo no ponto de acesso. A ideia por detrs desta categoria assenta napossibilidade de o ponto de acesso fornecer informaes adicionais que no esto acessiveisde outra forma e at mesmo mudar alguns parmetros da rede.

Servios: nesta categoria esto aglomerados todos as vulnerabilidades que permitem aexplorao de falhas em servios que correm dentro do ponto de acesso ou mesmo dentrode um dispositivo que se encontre dentro da rede.

Alm de estarem organizados por categorias, cada sub-mdulo ir necessitar de respeitar umtemplate. Este template serve para o programa principal ser capaz de conhecer as capacidadesde cada sub-mdulo e assim filtrar aqueles que podero ser candidatos a ser chamados a testarcontra um determinado ponto de acesso encontrado. claro que alm dos mtodos necessriospodero existir mtodos auxiliares de acordo com a escolha do programador que em nada afetama sua chamada pelo mdulo principal.

3.6.1 Template

Tal como foi referido anteriormente, foi elaborado um template de forma a ser possvel definir aApplication Programming Interface (API) para os sub-mdulos das vulnerabilidades.

3.6. Mdulo Vulnerabilidades 25

O template contm trs mtodos essenciais que so o capabilities, o run e o test:

Capabilities: retorna os campos que identificam a vulnerabilidade. Estes dizem respeito informao respeitante categoria em que esto inseridos. Em conjunto com isso agregamum valor que contm qual(is) o(s) campo(s) de informao do ponto de acesso para averiguarse a vulnerabilidade possui os requesitos para ser testada.

Run: mtodo principal do mdulo que explora a vulnerabilidade propriamente dita. Serimplementado totalmente pelo desenvolvedor que pretender explorar a vulnerabilidade.

Test: testa se o ponto de acesso est ou no sujeito vulnerabilidade em causa. Oteste realizado em cada sub-mdulo das vulnerabilidades, uma vez que permite umamaior flexibilidade para o programador do mdulo na forma de comparar os campos.Mesmo que para j os testes idealizados sejam de fcil verificao num caso futuro,podero existir casos onde a complexidade seja maior, pelo que assim evitamos umagrande complexidade/sobrecarga no mdulo principal. Para alm disso, podemos adicionarmais do que um campo para comparao e poderamos chegar a um ponto que tornavapouco vivel fazer esta verificao no mdulo principal.

Funo Capabilities()1 /* O campo requisitos corresponde ao campo de informao do ponto

de acesso (ex: essid, endereo MAC, fabricante,...) */

Retornar (categoria,requisitos,valor_requisistos, requer_autenticao)Funo Run(interface, informao_ponto_acesso, campos_extra)

Carregar informao contida nos campos extra;Para cada Entrada nos campos extra fazer

Utilizar valor e interface de rede para testar as vulnerabilidades;Retornar Verdadeiro/Falso

fimFuno Test(informao_ponto_acesso)

Arranjar valor da informao pertinente sobre o ponto de acesso;Utilizar expresses regulares para verificar existncia de padro no campo pretendido;Se Padro foi encontrado ento

Se Existir script adicional para arranjar informao extra entoCorrer script;Guardar valores gerados pelo script e enviar para o mdulo que o chamou;

fimRetornar Verdadeiro

fimseno

Retornar Falsofim

Algoritmo 1: Pseudo cdigo para a API do template

26 Captulo 3. Design/Arquitetura

3.7 Base de Dados

Outra parte essencial da framework ser a base de dados, onde estar concentrada toda ainformao recolhida ao longo das vrias fases, de forma organizada e de fcil e rpido acesso.Na fase de escuta das redes haver a organizao da informao na base de dados para que nasfases posteriores, o acesso a ela seja feito de forma rpida, fcil e eficaz. A forma como estarorganizada a base de dados pode ser vista no diagrama Entity-Relationship (ER) da figura 3.2.Pela figura vemos que necessitamos de armazenar informao sobre o ponto de acesso de formaa podermos mais tarde identific-lo, mas tambm de forma a saber qual a sua localizao ealguns aspetos mais especificos que permitam selecionar quais as vulnerabilidades que iro poderser testadas. Essas vulnerabilidades sero ento guardadas sendo que existir um campo queaverigua se esta j foi ou no testada, de forma a evitar repeties de testes e caso esta tenhatido sucesso tambm guardado o valor utilizado. Alm disso so guardados os campos quepermitem identificar a vulnerabilidade, como o nome, a categoria onde se insere e se necessitaou no de possuir autenticao no ponto de acesso. Por fim, aps executar os testes podemoster uma alterao de estado(s) para com a ligao ao ponto de acesso, sendo ento guardado(s)esse(s) valore(s).

De salientar que na base de dados optmos por definir que esta apenas guarda as vulnerabilidadesrespeitantes ao ponto de acesso que estamos a testar. Isto porque achamos que ser mais fcilfuturamente relacionar estes dados, pois no necessitamos de relaes extra entre as entidades. Atotalidade das vulnerabilidades ao invs disso sero apenas guardadas nas pastas que constituemas categorias no havendo nenhuma informao sobre isso na base de dados.

3.7. Base de Dados 27

Essid: VARCHAR(20)

Endereo MAC: VARCHAR(17)

Canal: INTEGER

Tipo de Chave: VARCHAR(0)

Gerenciamento de Chave : VARCHAR(0)

Conjunto de Autenticao: VARCHAR(0)

Chave de Grupo: VARCHAR(0)

Fabricante: VARCHAR(0)

Fabricante detalhado: VARCHAR(0)

Informao do AP

Nome da Vulnerabilidade: VARCHAR(20)

Categoria: VARCHAR(0)

Atenticao no AP: BOOLEAN

Valor utilizado: VARCHAR(0)

Testado: BOOLEAN

Vulnerabilidade

Nome do Estado : VARCHAR(0)

Estado

11

1

N

Figura 3.2: Diagrama ER da Base de Dados

Captulo 4

Implementao

Neste captulo vamos abordar os aspetos de implementao do projeto. Nele iro ser abordadosalguns tpicos, nomeadamente o tipo de linguagem utilizada, de que forma foi executada a escutada informao dos pontos de acesso, como foi utilizado o mecanismo de threads de forma a tornarpossvel a execuo de vrias tarefas em simultneo e, como esto divididas as vrias fases daanlise de vulnerabilidades. Para tal iremos novamente percorrer os diversos mdulos que foramabordados no captulo anterior focando-nos desta vez nas suas implementaes.

No final, na seco 4.10, iremos tambm abordar de uma forma mais explcita, em pseudo-cdigo,como que se comportam os vrios mdulos, de forma a percebermos melhor tudo o que foiabordado ao longo das seces.

4.1 Linguagem

A linguagem escolhida para o desenvolvimento do projeto foi o Python. A escolha desta linguagemrecaiu no fato de esta ser no s uma linguagem bastante utilizada em questes de scripting,mas tambm pela sua facilidadede utilizao uma vez que com ela possvel realizar tarefasbastante complexas com um baixo nmero de linhas de cdigo, sendo tambm fcil a incorporaode alguns payloads j existentes em algumas frameworks de vulnerabilidades, como o caso dometasploit[44]. Tal como outras linguagens, dispe de uma vasta Application ProgrammingInterface (API) que simplifica bastante a realizao de tarefas, apesar de na questo de redes esockets a API do Python mais trivial de trabalhar e muito mais poderosa [47].

Alm disso, existem certos aspetos da linguagem que numa etapa posterior acabaram por serevelar bastante teis e fceis de incorporar nas restantes fases do projeto, como o caso dosobjetos JSON que funcionam como dicionrios nesta linguagem e que mais tarde seriam teispara a sua incorporao na base de dados.

Apesar de esta linguagem no possuir uma fama de desempenho excelente[47][32], para o problemaem questo, em termos de tempos de execuo de algoritmos para grandes quantidades de dados

29

30 Captulo 4. Implementao

pareceu-nos fivel. Alm disso, em testes iniciais, medida que fomos melhorando a forma derealizar a escuta, o nmero de pontos de acesso encontrados foi bastante satisfatrio quandocomparado com outra ferramenta de sniffing j existente, nomeadamente o Airodump.[9]

4.2 Mdulo Main

O mdulo Main o mdulo que interliga todos os outros e apesar de no obter nenhumainformao, por si s, o ponto principal do projeto. Isto acontece uma vez que consegueinterligar e tornar possvel a comunicao entre todos os outros mdulos, tornando a compreensodo script e sua expanso mais fceis.

Este mdulo para alm do descrito, tem como outras funes carregar/fechar servios que so, ouno, indispensveis para o script funcionar. No caso do projeto existem servios que necessitamde ser parados, como o NetworkManager de forma a evitar que este se sobreponha a outrosque necessitem de configurar as ligaes e placas de rede, neste caso o wpaSupplicant. Paraesta tarefa foi utilizada a chamada da biblioteca os.system do Python que permite executarum comando na Shell do sistema.

Deste modo, foram executadas as chamadas dos seguintes comandos:

service stop

ou

service start

Alm disso, necessrio preparar a interface de escuta das redes, dada inicialmente comoparmetro de iniciao do script, executando para isso trs comandos de forma sequencial:

ifconfig down

Iwconfig mode monitor

Ifconfig up

O primeiro comando serve para desativar a interface tornando possvel configur-la, pois apenaso podemos fazer quando esta no est a ser utilizada.

O segundo comando permite mudar a forma de comportamento da placa de rede, que nestecaso ficar em modo Monitor tendo j sido abordado na seco 1.2.1. Estando os servioscorretamente iniciados, iniciamos os restantes mdulos que iro operar e processar a informaoem simultneo.

4.3. Threads e Filas 31

4.3 Threads e Filas

Para correr os mdulos e sub-mdulos, recorremos ao mecanismo de threads que permite corrervrios processos em simultneo no processador.

Para as threads recorremos biblioteca do Python threading. Existe contudo uma outrabiblioteca thread mas que trabalha a uma camada mais baixa ao nvel do sistema operativo,algo que no pretendemos, e alm do mais no nos oferece tanta utilidades. [4] [20]

Apesar de estarem a correr em simultneo, os mdulos necessitam de comunicar entre si, algo quese resolveu utilizando filas para cada uma das threads que foram lanadas, tendo sido enviadocomo argumento no mtodo chamado pela thread.

Tratamento do input

Iniciao e Paragem de Servios

Iniciao da Base de Dados

Invocao da Thread Sniffer

Invocao da Thread GPS

Invocao da Thread Vulnerbility

Queue GPS

Queue Sniffer

Queue Vulnerability

Figura 4.1: Diagrama de execuo dos mdulos

J a fila permite alm da comunicao entre as threads e/ou processos, ser possvel que hajaconcorrncia sem haver acessos ilcitos a um dado recurso em simultneo, isto , possvel escreveralgo na fila sem haver o receio de do outro lado, o outro processo querer ler em simultneo omesmo objeto.

32 Captulo 4. Implementao

4.4 Mdulo Sniffing

Tal como foi explicado no captulo anterior, foram elaboradas ao longo do projeto, algumasformas de sniffing que foram sendo aperfeioadas de forma a melhorar a performance do script.Isto deveu-se ao facto de inicialmente a ideia ter sido uma implementao do cdigo que acedessediretamente aos pacotes beacon que eram enviados pelos pontos de acesso.

Durante o processo de implementao, os nmeros de pontos de acesso no eram os desejados aotipo de trabalho que era pretendido. Assim sendo, este mdulo foi sendo melhorado atravs denovas tcnicas e/ou bibliotecas. De seguida apresentamos os trs tipos de sniffing que foramimplementados, pela ordem que foram sendo melhorados. Para o nosso script ficou apenasoperacional a forma que ofereceu melhor performance, neste caso o iwlist.

Caso no futuro seja implementada uma forma diferente, mais eficiente ou que devolva outro tipode valores, poder ser facilmente introduzida no script. Para tal apenas ser necessrio a inserodo mdulo novo no mdulo Main e adicionar ao tratamento do input inicial mais um caso parapermitir o arranque do mdulo.

4.4.1 RawSocket

O rawSocket uma forma de implementar o mdulo de escuta das redes sem que este possuadependncias de bibliotecas existentes na biblioteca do Python. Realiza-se a captura de pacotesna rede e seguidamente filtramos os pacotes beacon, que foram discutidos na seco 2.5. O objetocom que trabalhamos uma string e possvel deduzir os indices que contm a posio inicial efinal dos campos que pretendemos obter a informao, fazendo alguma anlise de pacotes com oWireshark. Com este processo possvel obter os campos todos que o ponto de acesso forneceaos seus clientes para que estes se liguem rede. Contudo, para este processo, a placa de redeno consegue automaticamente mudar o canal de forma a percorrer todas as frequncias. Esseprocesso feito manualmente com uma chamada a um comando pela linha de comandos, quetornava o cdigo bastante lento e por sua vez diminua a performance do nmero de pontos deacesso capturados, sendo esse o inconveniente do processo.

Outro aspeto negativo desta abordagem foi o facto de ser necessrio que a placa de rede capturasseum pacote deste tipo. Apesar de serem enviados com alguma frequncia, o facto de haver umafiltragem pelo tipo de pacotes e a anlise posterior do contedo neles fez com que ao testar onmero de pontos de acesso fosse muito reduzido.

Alm do mais, apesar de se conseguir obter os campos todos pelas posies da string serianecessrio o desenvolvimento de um parser que conseguisse obter corretamente todos os campos.Isto iria trazer alguma complexidade para o mdulo, algo que apesar de essencial, no seria oobjetivo do projeto e ocuparia grande parte do tempo destinado realizao do mesmo.

4.4. Mdulo Sniffing 33

4.4.2 Scappy

Nesta abordagem foi utilizada a biblioteca j implementada em Python, o scappy1, de forma aobter os campos com as informaes necessrias sobre as redes.

O intuito deste mdulo era retirar a necessidade de fazer o parsing das informaes obtidas pelospacotes, tal como acontecia com a abordagem do RawSocket. O objetivo passava tambm porconseguir obter um maior nmero de pontos de acesso, por ser partida algo optimizado.

Apesar disso o mdulo no era capaz de fazer um scan automtico, tal como a abordagem doRawSocket, por todos os canais do protocolo IEEE 802.11 e era tambm necessrio mudar ocanal manualmente. Alm disso, apesar dos campos principais (essid e MAC Address) seremfceis de obter, quando tentvamos alcanar campos mais especficos como o canal ou o tipo deautenticao da rede, havia uma complexidade na obteno dos dados.

No caso do canal houve uma tentativa de aproveitar o valor do ciclo quando se efetuava achamada pela linha de comandos, diminuindo a complexidade da obteno deste campo. Mas,constatmos que o valor no era o mesmo analisando as mesmas redes com o Airodump.

4.4.3 Iwlist

Esta foi a abordagem escolhida para o projeto, uma vez que se demonstrou ser a mais optimizadaa nvel de performance.

Consiste em realizar uma chamada na linha de comandos do comando iwlist seguido dainterface e da opo scan (ex: iwlist wlan0 scan), que devolve todas as redes que a placade rede detectou e que esto contidas num ficheiro (/proc/net/wireless)2.

Seguidamente, ao resultado obtido pelo comando, realizmos um parser onde decompusemosos valores obtidos e separmo-los por cada ponto de acesso tendo utilizado para essa tarefa afuno split fornecendo uma expresso regular como argumento.

Aps isto tnhamos um array, que continha em cada entrada uma string de tamanho varivel.Percorrendo o array de forma iterativa foram utilizadas novamente as expresses regulares paraencontrar padres, desta vez utilizando uma biblioteca re (regex) do Python.

wlan1 Scan completed :

Cell 01 - Address: C4:12:F5:00:BE:18

Channel:5

Frequency:2.432 GHz (Channel 5)

Quality=70/70 Signal level=-35 dBm

Encryption key:on

ESSID:"BerlinWIFI"

Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s

1http://www.secdev.org/projects/scapy/2linux.die.net/man/8/iwlist

34 Captulo 4. Implementao

9 Mb/s; 12 Mb/s; 18 Mb/s

Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s

Mode:Master

Extra:tsf=0000049d9c8e5b5c

Extra: Last beacon: 168ms ago

IE: Unknown: 000A4265726C696E57494649

IE: Unknown: 010882848B960C121824

IE: Unknown: 030105

IE: Unknown: 2A0100

IE: Unknown: 32043048606C

IE: Unknown:

2D1A6E181FFFFF000000000000000000000000000000000000000000

IE: Unknown:

3D1605000000000000000000000000000000000000000000

IE: Unknown: 4A0E14000A00B400C800140005001900

IE: Unknown: 7F0101

IE: IEEE 802.11i/WPA2 Version 1

Group Cipher : CCMP

Pairwise Ciphers (1) : CCMP

Authentication Suites (1) : PSK Bloco de Cdigo 4.1: Exemplo de output do commando Iwlist

Foram retirados os valores de todos os campos que era possvel retirar com a chamada destecomando e que se so relevantes para as etapas futuras. Apresentamos de seguida os valoresobtidos, colocando entre parntesis o parmetro respetivo do bloco de cdigo:

Essid (ESSID)

Mac Address (Address)

Qualidade do Sinal (Quality)

Fora do Sinal (Signal level)

Canal (Channel)

Encryption (Encryption key)

Tipo de autenticao (IE: IEEE 802.11i/)

Chave de Grupo (Group Cipher)

Conjunto de Autenticao (Authentication Suites)

Chave de Pares (Pairwise Ciphers)

Estas informaes so ento guardadas por um objeto JSON que constitui assim a nossa formade organizao da informao recolhida. O objeto JSON possui campos de chave:valorsendo a chave sempre a denominao do campo que pretendemos (ex: o endereo Media Access

4.5. Vulnerability 35

Control (MAC) e guardado no objeto por uma chave MAC Address, o canal por uma chavechannel e assim sucessivamente).

Contudo, existem campos do nosso interesse que no se obtm diretamente, como o caso dasinformaes do fabricante e alguns tipos de autenticao.

Para o tipo de autenticao foi utilizada a seguinte lgica: se o valor contido no campo deencryption fosse off, esta seria um tipo de rede Aberta que no possua nenhum mecanismode autenticao nela. Caso o valor fosse on, olharamos para o campo que informava qual o tipode autenticao que a rede possua. Se o valor contive-se WPA nele ento estvamos peranteuma rede do tipo Wi-Fi Protected Access (WPA) ou Wi-Fi Protected Access Version 2 (WPA2),caso contrrio ento seria do tipo Wired Encryption Protocol (WEP). 3

Para saber o fabricante utilizmos as tabelas [31] disponveis online e que so utilizadas pelaferramenta Wireshark [6]. As tabelas contm trs colunas: o endereo MAC, o nome do fabricantecom limite de 8 carateres e um comentrio que extende o nome do fabricante fornecido na colunaanterior sem limitao de tamanho. Estas duas colunas so ento adicionadas, por associao doprefixo do endereo MAC, restante informao j recolhida nos passos anteriores deste mdulo.Desta forma e com a informao toda recolhida enviado o objeto todo pela fila correspondentepara o mdulo Main.

4.5 Vulnerability

Este mdulo recebe como argumento uma fila de forma a comunicar com o processo Main, umachave primria necessria para iniciar a busca na Base de Dados e, um valor entre 1 e 2 queindicar qual a volta que estamos a fazer. A volta um dado importante pois ficaram idealizadasduas etapas para a anlise das vulnerabilidades:

1. Primeira volta serve para capturar todas as redes WiFi disponveis nesse trajeto. Depois deforma offline faz-se a filtragem dentro das vulnerabilidades disponveis para teste, aquelasque podero ser candidatas para um determinado ponto de acesso.

2. Segunda volta serve para dentro do mesmo trajeto realizado na volta anterior e dasvulnerabilidades filtradas, correr todas elas de forma a visualizar se os pontos de acesso soou no realmente vulnerveis (s) vulnerabilidade(s) em causa. De notar que todas estasvulnerabilidades so apenas aquelas que permitem o acesso rede.

Iremos ter em conta alguns estados importantes associados comunicao entre a placa de redee o ponto de acesso de forma a podermos indicar se obtivemos ou no sucesso na anlise dasvulnerabilidades. A figura 4.2 representa os diversos estados e como e que estes se relacionam

3A ideia foi retirada do cdigo disponvel em https://bbs.archlinux.org/viewtopic.php?id=88967 no post queiniciou a discuo

36 Captulo 4. Implementao

entre si. At possuir uma ligao ao ponto de acesso, o estado que nos encontramos perante omesmo poder diferir entre ligado ou no ao ponto de acesso. Caso o valor do estado seja ligadopoder numa fase inicial no possuir endereo de IP, sendo portanto esse um estado vlido nonosso esquema. Alm disso, apesar de ainda no estarem implementados, temos a possibilidadedentro da rede de atingir outros estados que esto representados na figura com um tamanho deletra mais pequeno.

No Ligado

Ligado ao Ponto de Acesso mas sem IP

Ligado ao Ponto de Acesso e com IP

Explorao de ns na Rede

Identificao dos Dispositivos na Rede (ex: Router, Impressora, Porttil, Tablet, ...)

Explorao de Servios a correr no n

Controlo do n

Figura 4.2: Diagrama de estados de ligao entre o ponto de acesso e a placa de rede

4.5.1 Associao com Ponto de Acesso

De forma a ser possvel em algumas vulnerabilidades saber se possumos uma ligao com o pontode acesso, foram elaborados mdulos que permitissem a ligao com este. Os mecanismos paraestabelecer esta ligao foram o wpaSupplicant e o nmcli. Dos dois mecanismos apenas umdeles ficou interligado com o restante script. O nmcli apesar de implementado gerava excepesque ainda no foram possveis de contornar quando era chamado pelas threads do programa, porconter signal handlers que apenas so possveis de utilizar com o processo principal 4.

O wpaSupplicant permite atravs de um ficheiro de configurao, que dado como argumentodo comando, fazer a placa de rede interagir com o ponto de acesso. Neste ficheiro temos de

4https://docs.python.org/2/library/signal.html

4.5. Vulnerability 37

incluir alguma informao recolhida anteriormente, sendo aqui a fase da escutas das redesalgo crucial, pois convm obter-se o mximo de detalhe do ponto de acesso possvel. Paraeste servio poder correr sem conflitos, e aps testes iniciais, no era possvel o servio doNetworkManager estar a correr na mquina. Isto devia-se ao facto de quando se tentava alterarmanualmente atravs do wpaSupplicant o NetworkManager, como executa as suas tarefasautomaticamente, sobrepunha as suas definies ao outro servio. De forma a sabermos se aplaca de rede conseguiu estabelecer a ligao com as informaes todas corretas, resolvemosexecutar o comando iwconfig para verificar se a interface conseguia manter aligao durante algum tempo, tempo esse que ficou delineado por trs segundos. Caso duranteesse tempo a placa de rede no conseguisse ter o valor do essid do ponto de acesso, significavaque a palavra chave estaria errada e seria necessrio testar outra, caso assim existisse. Por fim,em caso do resultado da ligao ser positivo, corremos o servico do dhclient de maneira a seratribudo um acIP na rede caso ainda no o tivssemos.

Apesar de no estar ainda opervel com o resto do projeto, o outro mecanismo utilizado foi oservio cliente do NetworkManager. Desta forma evitamos que na iniciao do script tenhamosde fazer a paragem do servio que gere a placa de rede. Para proceder com a ligao a umarede fazemo-lo atravs de um bloco de cdigo try-except-finally sendo, para um primeiropasso, apenas necessrio a chamada de um comando:

nmcli device wifi connect password

ifname

Ou caso se trate de uma rede aberta:

nmcli device wifi connect ifname

No final devemos sempre desassociar a placa de rede com o ponto de acesso de forma a podermostestar outro e para isso recorremos instruo finally com o comando:

nmcli device disconnect

Podemos ver que neste mecanismo de associao com o ponto de acesso existem muito menoslinhas de cdigo associado a ele, que torna o cdigo mais limpo e fcil de compreender. Parafazer a verificao apenas necessita de verificar a string created and activated num intervalode tempo definido no incio do mdulo, que para j est com valor de 10 segundos pois era ointervalo que oferecia mais segurana de fornecer os dados corretos. Aqui utilizamos o que emPython se denomina decoradores. Um decorador uma funo que denominaremos d e querecebe como argumento uma funo a, daqui resulta uma nova funo b que ser a funoa decorada com d. Nessa decorao utilizamos signal handlers que disparam um sinal que captado pela instruo except caso no tenha havido ligao com sucesso antes.

38 Captulo 4. Implementao

4.6 Database

Neste mdulo utilizmos uma biblioteca do Python para ser possvel a interao com o serviodo Mongo. Atravs de chamadas de comandos que j existiam nesta biblioteca foi possvelinserir informao e alter-la posteriormente com um esforo muito menor, ficando o processogeneralizado.

Nesta fase da implementao houve uma necessidade de se guardar o nome do submdulo davulnerabilidade que queriamos testar contra o ponto de acesso, uma vez que o ficheiro binrioque estvamos a utilizar antes gerava conflitos com o tipo de varivel que era suportado peloMongo, que neste caso apenas suporta tipos primitivos.

4.7 GPS

Neste mdulo aproveitmos um cdigo aberto disponvel num repositrio [42] quer permite aobteno dos campos mais relevantes para o projeto. Nessa implementao utiliza-se um parserdo protocolo National Marine Electronics Association (NMEA), que o protocolo utilizadonos dispositivos Geographical Position System (GPS) para mostrar as informaes. Para issoimportmos a biblioteca pynmea para descodificar os campos que nos criavam particular interessee que eram obtidos atravs da comunicao com o GPS pela porta srie.

sempre enviado com uma certa frequncia uma linha que pode conter informao sobre alocalizao, ou a velocidade ou outro tipo de informao. Para o nosso caso estamos interessadosnos campos GPGGA que so aqueles que informam sobre a localizaao. Deles iremos aproveitar alongitude e a latitude que vm num formato diferente daquele que nos permite uma representaono mapa. Procedemos ento a uma converso dos valores recolhidos para graus de forma a maistarde podermos represent-los num mapa. Dado que se trata de um dispositivo que se encontraa enviar informao pela porta de srie foi necessrio ajustar o dbito da comunicao.

4.8 Base de Dados

Para o motor da base de dados foi utilizado o MongoDB [39] como base de dados por ser bastantefcil de adaptar neste projeto, uma vez que os dados so organizados em formato JSON. Destaforma, adicionar informao no requer praticamente nenhum tratamento na estrutura de dadosutilizada. No caso do Mongo no existe propriamente um conceito de tabela. Ao invs existemCollections e Documents.

Uma Collection permite agrupar vrios Documents e, cada Document ser um objeto emformato JSON 5.

5https://docs.mongodb.com/manual/reference/glossary/

4.8. Base de Dados 39

Surgiram duas ideias diferentes para mapear o modelo relacional da figura 3.2. Uma ideia passavapor utilizarmos as Collections para identificar a entidade em causa. A outra ideia seriautilizar a prpria estrutura do JSON para criar os Documents. Optmos antes por utilizar asegunda abordagem, por acharmos que seria a que mais facilmente relacionaria as entidades eiria criar um acesso mais fcil e rpido aos dados durante toda a operao. Alm do mais, noiremos ter problemas com o facto de esta se tornar corrompida por m atualizao dos dados,isto , no atualizar corretamente todas as tabelas. A figura 4.3 ilustra de que forma a figura 3.2do captulo anterior, do diagrama relacional, estar representado na prtica neste projeto.

DATA

Essid : STRING

MAC Address : STRING

GPS: STRING

Channel : INTEGER

Key Type : STRING

Key Management : STRING

Authentication Suites : STRING

Pairwise Key : STRING

Manufacturer : STRING

Manufacturer Detail : STRING

ap-info

Essid : STRING

MAC Address : STRING

key

Vulnerability Name : STRING

Category : STRING

Field to check: STRING

Extra : STRING

Tested : BOOLEAN

AP authentication : BOOLEAN

test

Vulnerability Name : STRING

Category : STRING

Field to check : STRING

AP Authentication : BOOLEAN

Value used : ANY

vulnerability

state : STRING

state

1

1

1 N

1 N

Figura 4.3: Esquema da Base de Dados implementada em Mongo

O motivo pelo qual denomin-mos de data a Collection que ir aglomerar os diversosDocuments deveu-se a tornar o nome algo genrico. Neste caso o campo ap-info do Documentir conter toda a informao respeitante ao ponto de acesso que o carateriza e qualifica.

Dado que o Mongo requer que o objecto JavaScript Object Notation (JSON) se identifique natotalidade com outro de forma a obtermos um resultado, foi necessrio recorrer criao de umcampo extra no Document, o qual denominmos key. Necessitamos apenas de dois atributospara referenciar uma entrada, que so aqueles que no iro ser alterados (pelo menos num curtoespao de tempo), que so o Essid e o MAC Address. Dado que um ponto de acesso poderter mais do que uma vulnerabilidade, tanto o campo test como o vulnerability iro poderter mais do que um valor, sendo por isso implementadas com uma lista.

40 Captulo 4. Implementao

A razo para a existncia de dois campos que guardam informao respeitante a vulnerabilidades,serve apenas para simplificao e melhor organizao dos dados para anlise futura. Enquantoque no campo test existiro todas as vulnerabilidades que so possveis testar no ponto deacesso, apenas aquelas que apresentarem um resultado positivo, iro ser copiadas para o campovulnerability juntamente com o valor que permitiu que a vulnerabilidade tivesse o seusucesso caso se verifique.

Juntamen