Kapittel 5: STALINGRAD – BYEN SOM IKKE KUNNE FALLE
5.2 Aftenposten – høsten 1942 – vinteren 1943
Com a an´alise do tr´afego conseguiu-se perceber os protocolos mais relevantes, no entanto ´e necess´ario mais informa¸c˜ao sobre as esta¸c˜oes que originaram o tr´afego capturado. Para isso foi desenvolvida uma nova aplica¸c˜ao que usa o tr´afego capturado para extrair a seguinte informa¸c˜ao:
• Lista total com os endere¸cos MAC de todas a esta¸c˜oes. • Lista de endere¸cos MAC detectados por intervalo de tempo. • Lista de endere¸cos IP associados a cada endere¸co MAC.
O endere¸co MAC ´e o endere¸co f´ısico de 48 bits ´unico e est´atico de cada interface de rede portanto cada esta¸c˜ao ´e identificada pelo mesmo. Consegue-se extrair os endere¸cos MAC dos pacotes Ethernet capturados na camada de liga¸c˜ao, que ´e o n´ıvel mais baixo em que foi poss´ıvel efectuar a captura de tr´afego.
Cada pacote Ethernet ´e constitu´ıdo por um endere¸co MAC de origem e outro de destino. O endere¸co que tem interesse neste caso ´e o de origem, que pertence `
as esta¸c˜oes que geram o tr´afego, as quais se pretende detectar. O endere¸co MAC de destino ´e mais prov´avel ser um endere¸co broadcast ou multicast, uma vez que recebemos o tr´afego da mesma forma que uma qualquer outra esta¸c˜ao na rede.
Em cada pacote capturado durante uma captura de tr´afego, o Wireshark acres- centa Meta informa¸c˜ao que aparece antes do n´ıvel da camada de liga¸c˜ao Ethernet. Nesta informa¸c˜ao existe o timestamp em que chegou o pacote, que ´e usado para a informa¸c˜ao temporal de cada endere¸co MAC e permite tamb´em separar a detec¸c˜ao dos endere¸cos MAC por intervalos de tempo.
Para cada endere¸co MAC, que representa uma esta¸c˜ao detectada, foi tamb´em associada uma lista de endere¸cos IP. Um interface de rede pode ter associados um ou mais endere¸cos IP, por exemplo um endere¸co IPv4 e outro endere¸co IPv6. Um interface de rede com IPv6 activado ´e normal ter v´arios endere¸cos IPv6 associados. O endere¸co IP atribu´ıdo a um interface de rede tamb´em pode mudar ao longo do tempo, por exemplo, quando uma esta¸c˜ao perde liga¸c˜ao de rede e se volta a ligar ou quando o tempo do aluguer de um endere¸co IP expira.
Adicionalmente, foi decidido incluir mais informa¸c˜ao que estava presente no tr´afe- go capturado e que podia vir a ser ´util, complementando desta forma a informa¸c˜ao essencial necess´aria para identificar cada esta¸c˜ao.
• Protocolos detectados para cada endere¸co MAC em cada intervalo. • N´umero de pacotes associado a cada protocolo em cada intervalo. • Identifica¸c˜ao do fabricante da placa associado a cada endere¸co MAC. • N´umero de endere¸cos MAC em cada intervalo.
• N´umero de pacotes capturados em cada intervalo. • N´umero m´edio de endere¸cos MAC por intervalo. • N´umero m´edio de endere¸cos IP por intervalo.
• Marca¸c˜ao se o IP detectado pertence `a mesma subrede que a esta¸c˜ao que fez a captura.
O n´umero de esta¸c˜oes que s˜ao detectadas por intervalo de tempo e a m´edia de esta¸c˜oes detectadas no conjuntos dos intervalos tˆem um relativa importˆancia pois permite determinar o tempo de dura¸c˜ao que a procura por esta¸c˜oes na rede dever´a durar. Quando integrado no Epi, o m´odulo ser´a chamado para realizar recolhas peri´odicas das esta¸c˜oes detectadas na vizinhan¸ca. Cada recolha ser´a uma captura de tr´afego com uma dura¸c˜ao limitada de apenas alguns segundos.
Para implementar a aplica¸c˜ao com as funcionalidades necess´arias para detectar as esta¸c˜oes foi necess´ario recorrer a uma API. Das APIs estudadas na sec¸c˜ao 3.1, foi determinado que a mais indicada para desenvolver a aplica¸c˜ao seria o conjunto de APIs Winpcap e Sharppcap porque:
• Winpcap ´e de instala¸c˜ao f´acil e n˜ao ´e dependente do controlador da placa de rede sem fios.
• Winpcap permite a captura de pacotes Ethernet ao n´ıvel da camada de liga¸c˜ao e permite a filtragem de pacotes.
• ´E o controlador usado noutras solu¸c˜oes como o Wireshark, com desempenho e eficiˆencia comprovada.
• A API original do Winpcap ´e para C++, no entanto o Sharppcap ´e um conjunto de bibliotecas para C#.net baseado nesta API.
• O Packet.Net permite o parsing de pacotes e est´a inclu´ıdo junto com o Sharpp- cap.
Procedeu-se depois ao desenvolvimento da aplica¸c˜ao. Durante o seu desenvolvi- mento foram tomadas algumas decis˜oes relativamente a algumas caracter´ısticas que a aplica¸c˜ao deveria incluir.
Inicialmente a aplica¸c˜ao tinha o objectivo de ajudar na an´alise do tr´afego captu- rado anteriormente, no entanto foi decidido acrescentar a captura e an´alise de tr´afego em tempo real em qualquer placa de rede presente no computador. A escolha da placa de rede para efectuar a captura de tr´afego seria feita pelo utilizador. A funci- onalidade de abrir o tr´afego que foi previamente capturado e realizar uma an´alise a partir de um ficheiro de tr´afego do tipo pcap tamb´em est´a dispon´ıvel.
Depois da an´alise do tr´afego, quer a captura tenha sido efectuada em tempo real ou a partir do ficheiro, s˜ao gerados um conjunto de resultados. Estes s˜ao guardados em ficheiros HTML (HyperText Markup Language) para que possam ser facilmente consultados em qualquer navegador. Adicionalmente tamb´em ´e guardada alguma informa¸c˜ao dos resultados em ficheiro de texto para permitir exportar facilmente para uma folha de c´alculo. Os ficheiros de resultados que se obt´em depois de uma an´alise s˜ao ent˜ao os seguintes:
result.html cont´em a lista de esta¸c˜oes detectadas por intervalo de tempo. No fim de cada intervalo ´e registado tamb´em o n´umero de endere¸cos MAC, endere¸cos IP, pacotes e protocolos. A informa¸c˜ao registada para cada esta¸c˜ao em cada intervalo ´e a seguinte:
• Timestamp, quando foi detectada pela primeira vez no intervalo. • Endere¸co MAC e fabricante da placa de rede.
• Lista de IPs associados ao endere¸co MAC, com marca¸c˜ao a negrito dos IPs que perten¸cam `a mesma sub rede da m´aquina onde foi efectuada a captura.
• Lista de protocolos associados ao endere¸co MAC com contagem do n´umero de pacotes usados por cada protocolo.
Os intervalos s˜ao numerados por ordem crescente, cada intervalo ´e identifi- cado pelo seu n´umero e o timestamp da primeira esta¸c˜ao detectada dentro desse intervalo. No ficheiro de resultados cada intervalo aparece na forma Ex- pand /Collapse para permitir f´acil consulta, devido ao tamanho extenso que este poder´a tomar. O ficheiro ´e escrito a cada intervalo permitindo a consulta durante uma captura. As estat´ısticas finais cont´em as m´edias de endere¸cos MAC e IP, o n´umero total de pacotes e o intervalo de captura e s˜ao escritas no ficheiro no final da captura. Nas Figuras 3.1 pode-se observar um exemplo de um ficheiro de resultados obtido no final de uma captura.
maclist.html apresenta a lista com todas a esta¸c˜oes que foram encontradas na cap- tura, para cada esta¸c˜ao ´e apresentado o endere¸co MAC e o fabricante da placa de rede. O ficheiro s´o ´e escrito quando a captura termina.
export.txt apresenta um conjunto de linhas de texto em que cada linha representa um intervalo, para cada intervalo ´e apresentado o n´umero de esta¸c˜oes, n´umero
(a) Intervalos.
(b) Intervalo expandido.
(c) Dados estat´ısticos de um intervalo.
(d) Dados estat´ısticos finais.
Figura 3.1: Exemplo do ficheiro de resultados obtidos na captura efectuada na UM.
de IPs encontrados, o timestamp do in´ıcio do intervalo e o n´umero que identifica o intervalo. O formato deste ficheiro ´e em CSV (Comma-Separated Values)1.
Toda a informa¸c˜ao que ´e apresentada nos resultados ´e extra´ıda processando pacote a pacote. Assim, ao receber um pacote ´e invocada uma fun¸c˜ao e o pacote ´e passado para dentro da mesma.
Dentro da fun¸c˜ao s˜ao retiradas as tramas pertencentes `as respectivas camadas que se encontram encapsuladas no pacote. Retira-se primeiro a informa¸c˜ao do timestamp dos meta dados. Depois na camada de liga¸c˜ao, encontra-se encapsulado a trama Ethernet onde se retira o respectivo endere¸co MAC de origem do cabe¸calho. Na
1Cada valor separado por v´ırgula representa um valor de uma coluna numa tabela e as linhas,
pr´oxima camada encontra-se encapsulado a trama IP que pertence `a camada de rede IP, onde ´e retirado do cabe¸calho os campos com o endere¸co IP de origem, que pode ser um endere¸co IPv4 de 4 bytes ou IPv6 de 16 bytes. Depois, encontra-se a camada de transporte onde s˜ao encapsuladas as tramas do tipo TCP ou UDP e ´e retirado do cabe¸calho a porta de destino. Por fim segue-se a camada de aplica¸c˜ao onde s˜ao encapsulados os dados que s˜ao entregues `as aplica¸c˜oes, no entanto nesta camada n˜ao ´
e extra´ıda informa¸c˜ao.
Na Figura 3.2 est´a ilustrado como ´e feito o encapsulamento das tramas nas ca- madas de liga¸c˜ao, rede e transporte.
Figura 3.2: Encapsulamento do pacote Ethernet.
Com a aplica¸c˜ao pronta, o pr´oximo passo foi o processamento dos ficheiros com o tr´afego capturado que foram analisados nas sec¸c˜oes 3.2.1 e 3.2.2 para diferentes tempos de intervalo.