Slides de suporte da aula de Redes de Computadores - Continuar pesquisas nas bibliografias:
TANENBAUM, Andrew S. Redes de Computadores. Editora Campus, 4 Edição. 2003.
COMER, Douglas E. Interligação de Redes com TCP/IP, volume 1. Editora Campus, 5 Edição. 2006.
TORRES, Gabriel. Redes de Computadores Curso Completo. 1 ed. Editora Axcel Books. 2001.
Apresentação de treinamento de especialista em TI, com enfase em protocolos de redes, Windows, camadas, ferramentas de análise e melhores práticas ITIL, COBIT, ISO.
Apresentação em slides feita para seminário final de "Transmissão II", ministrada pelo professor José Marcos Monteiro.
Rafael Requião é aluno do 4o. ano de Eletrônica (Integrado) do IFBA Campus Salvador.
Material compilado para servir de estudo a nível CCENT (640-822 ICND1) e CCNA (640-816 ICND2 e 640-802). Trata-se de um compêndio sobre os modelos teóricos TCP/IP e OSI, ambos exigidos pela Cisco para quem pretende iniciar no seu programa de Career Certifications and Paths.
1. Ethernet Sniffer in
Visual Studio C#
BARRAMENTOS E PROGRAMAÇÃO DE ENTRADA E SAÍDA
PROFESSOR: IVAN MULLER
MAX JEISON PRASS
2. OSI – Camada de Enlace de
Dados
Controle de Enlace Lógico (LLC)
Networking Interface:
Filtros de Drivers: NDIS (Network Driver Interface
Specification);
Programação de aplicação de interface (API);
Constitui a subcamada LLC (Controle de Acesso
Lógico);
Representa a sub-camada superior da camada de
Ligação de Dados OSI (camada 2);
Atua entre a sub-camada MAC (Media Access
Control), que é a sub-camada inferior da camada de
Ligação de Dados, e a camada de rede (camada 3);
Aplicação
Transporte
Protocolos Internet (TCP/IP)
Rede
Enlace
Física
HTTP, SMTP, FTP, POP3 ...
TCP, UDP, RTP ...
IP (IPv4, IPv6), ARP, RARP ...
Ethernet, WiFi, VLAN ...
Modem, USB, Bluetooth ...
Enlace
• Subcamada LLC
• Subcamada MAC
Apresentação TLS, XDR ...
Sessão NetBIOS ...
3. WDK – Windows Drivers Kit
Para construção de drivers no windows é necessário o kit de desenvolvimento de
drivers da microsoft;
Windows Development Drivers Kit (WDK ou DDK);
Permite desenvolver, construir, implantar, testar e depurar drivers;
USB, impressão, networking, filtros do sistema de arquivos (TODOS);
Todos os arquivos (C e C++) necessários para geração dos drivers;
Arquivos de exemplos;
Utilitário para compilar;
Utilitário para testar e depurar.
4. WDK – Versão atual 8.1
Facilidade na compilação usando Visual Studio 2012 ou superior;
Total integração com o ambiente de desenvolvimento Visual Studio (MSBuild.exe);
Ou seja, arquivos Makefile.inc, Makefile.new e outros arquivos de compilação não
são mais usados;
Nesta atualização:
Microsoft Windows Assessment and Deployment Kit;
Microsoft Windows Driver Kit
Microsoft Windows Hardware Certification Kit
Microsoft Windows Software Development Kit for Windows 8
5. WDF – Windows Driver Frameworks and
Visual Studio Projects
Applications:
Empty Desktop Application for Drivers
Empty DLL for Drivers
Empty Static Library for Drivers
Package : Driver Install Package
Applications : Desktop, DLL, Library
Print : Driver V4, XPS Render Filter
Storage : Filter Driver : Filesystem Mini-filter
Tests : WDTF Simple I/O Action Plug-in, Windows Driver Test in C++
USB : KMDF, UMDF, Win USB Application
WDF : KMDF and UMDF Templates
6. WDF – Windows Driver Frameworks and
Visual Studio Projects
Networking : NDIS – Network Driver Interface Specification
É uma biblioteca de funções que oculta a complexidade de hardware da Placa de rede
(NICs);
Serve como interface padrão para drivers de protocolo de rede, nível 3, e controladores
de nível MAC.
Outra LLC é a Open Data-Link Interface (ODI).
7. WDK – Windows Driver Kit Samples
Audio Processing Objects Driver Sample
Bluetooth Serial HCI Bus Driver
CDROM Storage Class Driver
Driver Install Frameworks API (DIFxAPI) Sample
Generic Text-Only Driver
HID client sample driver
Keyboard Input WDF Filter Driver (Kbfiltr)
KMDF filter driver for a HID device
NDIS 6.0 Filter Driver (ESTE PODERIA TER USADO)
RAMDisk Storage Driver
E vários outros....
8. C# - System.Net.Sockets;
Surpresa!!! Socket é um API;
Ser um socket puro, da família de endereços do tipo “redes” e protocolo “IP”;
Como usar essa classe para sniffer:
Estanciar ela com os parâmetros acima (Raw, InterNetWork, IP);
Chamar o método Bind;
Configurações através do método “SetSocketOption” :
SocketOptionLevel : IP, IPV6, Socket, Tcp, Udp;
SocketOptionName : HeaderIncluded, MulticastInterface, e outros vários;
True ou False.
IOControl :
ReceiveAll, ReceiveAllMulticast, entre outros;
BeginReceive :
Passado a variável byte[4096];
Método de recebimento Assincrono;
9. TCP/IP - Packets
Pacote IP:
VERSION (4 bits) - Informa a versão do protocolo IP sendo carregado. Atualmente a versão de IP é 4;
HEADER LENGTH (4 Bytes) - Informa o tamanho do header IP em grupos de 4 bytes;
TYPE OF SERVICE (1 Byte)- Informa como o pacote deve ser tratado, de acordo com sua prioridade e o tipo de serviço desejado como Baixo
Retardo, Alta Capacidade de Banda ou Alta Confiablilidade. Normalmente este campo não é utilizado na Internet;
TOTAL LENGTH (2 Bytes) – Informa o tamanho total do pacote IP;
IDENTIFICATION (2 Bytes) - Identifica o pacote IP unicamente entre os outros transmitidos pela máquina. Este campo é usado para identificar o
pacote IP no caso de haver fragmentação em múltiplos datagramas;
FLAGS (3 bits) - um bit (MF - More Fragments) identifica se este datagrama é o último fragmento de um pacote IP ou se existem mais. Outro bit (DNF
- Do Not Fragment) informa aos roteadores no caminho se a aplicação exige que os pacotes não sejam fragmentados;
FRAGMENT OFFSET (13 bits) - Informa o posicionamento do fragmento em relação ao pacote IP do qual faz parte;
TIME-TO-LIVE (1 Byte) - Este valor é decrementado a cada 1 segundo que o pacote passa na rede e a cada roteador pelo qual ele passa. Serve
para limitar a duração do pacote IP e evitar que um pacote seja roteador eternamente na Internet como resultado de um loop de roteamento;
PROTOCOL (1 Byte) - Informa que protocolo de mais alto-nível está sendo carregado no campo de dados. O IP pode carregar mensagens UDP,
TCP, ICMP, e várias outras;
HEADER CHECKSUM (2 Bytes) - Valor que ajuda a garantir a integridade do cabeçalho do pacote IP;
SOURCE ADDRESS (4 Bytes) - Endereço IP da máquina origem do pacote IP;
DESTINATION ADDRESS (4 Bytes) - Endereço IP da máquina destino do pacote IP; (Alcança mais de 4 BILHÕES de endereços);
OPTIONS (N Bytes)- Opções com informações adicionais para o protocolo IP. Consiste de um byte com a identificação da opção e uma
quantidade de bytes variável com as informações específicas. Um pacote IP pode transportar várias opções simultaneamente.
10. O que aprendi?
Que para Sniffer nível Enlace é necessário driver para conseguir fazer;
Que Socket é uma API nível de rede (IP);
Que desenvolver driver é difícil paaaaakkkkkkass!!!!
Mas legal!
2 livros pra ler:
Windows Internals;
Programming the Microsoft Windows Driver Model.
Que é assim que se faz Engenharia reversa (KMDK e UMDK);
Que para depurar drivers no windows... (Cataclash!!!!)
Obs.: Me barraram!
Mas... com a classe Socket, tudo pronto, Socket Raw uma beleza!!!
Pude filtrar os pacotes recebidos e enviados na rede local, inclusive WiFi;
Mas, não sei se poderia retransmitir os pacotes!!! (TESTAR)
11. Fontes de pesquisa:
C/C++ : http://www.codeproject.com/Articles/17031/A-Network-Sniffer-in-C
C# : http://www.codeproject.com/Articles/5292/Raw-Ethernet-Packet-
Sending
http://www.codeproject.com/Articles/17031/A-Network-Sniffer-in-C
Link do projeto : https://bitbucket.org/jeisonmp/packet_sniffer
Blog dev microsoft : http://www.1bit.com.br
WDK Microsoft : https://msdn.microsoft.com/en-
us/library/windows/hardware/ff557573(v=vs.85).aspx
Protocolos Visão Geral : https://pt.wikipedia.org/wiki/Modelo_OSI
Camada de Enlace : https://pt.wikipedia.org/wiki/Camada_de_enlace_de_dados
Camada de transporte : http://optclean.com.br/como-funciona-uma-rede-parte-4-ethernet-e-
pacotes/
Protocolos Especificações : http://www.abusar.org.br/tcp-ip2.html