Usando o Kismet
Colaboração: Carlos E. Morimoto
Data de Publicação: 09 de Maio de 2006
O Kismet é uma ferramenta poderosa, que pode ser usado tanto para checar
a segurança de sua própria rede wireless, quanto para checar a presença de
outras redes próximas e assim descobrir os canais que estão mais congestionados
(configurando sua rede para usar um que esteja livre) ou até mesmo invadir
redes. O Kismet em sí não impõe restrições ao que você pode fazer. Assim
como qualquer outra ferramenta, ele pode ser usado de forma produtiva ou
destrutiva, de acordo com a índole de quem usa.
A página do projeto é a: http://www.kismetwireless.net/.
A principal característica do Kismet é que ele é uma ferramenta passiva. Ao
ser ativado, ele coloca a placa wireless em modo de monitoramento (rfmon)
e passa a escutar todos os sinais que cheguem até sua antena. Mesmo pontos
de acesso configurados para não divulgar o ESSID ou com a encriptação ativa
são detectados.
Como ele não transmite pacotes, apenas escuta as transmissões, todo o
processo é feito sem prejudicar as redes vizinhas e de forma praticamente
indetectável. A principal limitação é que, enquanto está em modo de
monitoramento, a placa não pode ser usada para outros fins. Para conectar-se
a uma rede, você precisa primeiro parar a varredura.
Esta questão da detecção dos pontos de acesso com o ESSID desativado é
interessante. Não é possível detectá-los diretamente, pois eles não respondem
a pacotes de broadcast (por isso eles não são detectados por programas como o
Netstumbler), mas o Kismet é capaz de detectá-los quando um cliente qualquer
se associa a eles, pois o ESSID da rede é transmitido de forma não encriptada
durante o processo de associação do cliente.
A partir daí, o Kismet passa a capturar todos os pacotes transmitidos. Caso
a rede esteja encriptada, é possível descobrir a chave de encriptação usando
o aircrack (que veremos a seguir), permitindo tanto escutar as conexões,
quanto ingressar na rede.
Como o Kismet é uma das ferramentas mais usadas pelos crackers, é sempre
interessante usá-lo para verificar a segurança da sua própria rede. Tente
agir como algum vizinho obstinado agiria, capturando os pacotes ao longo
de alguns dias. Verifique a distância de onde consegue pegar o sinal de
sua rede e quais informações consegue descobrir. Depois, procure meios de
reforçar a segurança da rede e anular o ataque.
Por ser uma ferramenta popular, ele está disponível na maioria as
distribuições. Algumas, como o Knoppix (a partir da versão 3.7), já o trazem
instalado por padrão.
Nas distribuições derivadas do Debian, você pode instalá-lo via apt-get:
# apt-get install kismet
Antes de ser usar, é preciso configurar o arquivo "/etc/kismet/kismet.conf",
especificando a placa wireless e o driver usado por ela, substituindo a linha:
source=none,none,addme
Por algo como:
source=madwifi_ag,ath0,atheros
... onde o "madwifi_ag" é o driver usado pela placa (que você pode verificar
usando o comando lspci). Na documentação do Kismet o driver é chamado de
"capture source", pois é a partir dele que o Kismet obtém os pacotes recebidos.
o "ath0" é a interface (que você vê através do comando ifconfig) e o "atheros"
é um apelido para a placa (que você escolhe), com o qual ela será identificada
dentro da tela de varredura.
Isto é necessário, pois o Kismet precisa de acesso de baixo nível
ao hardware. Isto faz com que a compatibilidade esteja longe de ser
perfeita. Diversas placas não funcionam em conjunto com o Kismet, com destaque
para as placas que não possuem drivers nativos e precisam ser configurados
através do ndiswrapper. Se você pretende usar o Kismet, o ideal é pesquisar
antes de comprar a placa. Naturalmente, para que possa ser usada no Kismet,
a placa precisa ter sido detectada pelo sistema, com a ativação dos módulos de
Kernel necessários. Por isso, prefira sempre usar uma distribuição recente,
que traga um conjunto atualizado de drivers. O Kurumin e o Kanotix estão
entre os melhores neste caso, pois trazem muitos drivers que não vem pré
instalados em muitas distribuições.
Você pode ver uma lista detalhada dos drivers de placas wireless disponíveis
e como instalar manualmente cada um deles no meu livro Linux Ferramentas
Técnicas.
Veja uma pequena lista dos drivers e placas suportados no Kismet 2006-04-R1:
- acx100: O chipset ACX100 foi utilizado em placas de diversos fabricantes,
entre eles a DLink, sendo depois substituído pelo ACX111. O ACX100 original
é bem suportado pelo Kismet, o problema é que ele trabalha a 11 megabits,
de forma que não é possível testar redes 802.11g.
- admtek: O ADM8211 é um chipset de baixo custo, encontrado em muitas placas
baratas. Ele é suportado no Kismet, mas possui alguns problemas. O principal
é que ele envia pacotes de broadcast quando em modo monitor, fazendo com que
sua varredura seja detectável em toda a área de alcance do sinal. Qualquer
administrador esperto vai perceber que você está capturando pacotes.
- bcm43xx: As placas com chipset Broadcom podiam até recentemente ser
usadas apenas no ndiswrapper. Recentemente, surgiu um driver nativo
(http://bcm43xx.berlios.de) que passou a ser suportado no Kismet. O driver
vem incluído por padrão a partir do Kernel 2.6.17, mas a compatibilidade no
Kismet ainda está em estágio experimental.
- ipw2100, ipw2200, ipw2915 e ipw3945: Estes são os drivers para as placas
Intel, encontrados nos notebooks Intel Centrino. O Kismet suporta toda a turma,
mas você precisa indicar o driver correto para a sua placa entre os quatro.
O ipw2000 é o chipset mais antigo, que opera a 11 megabits; o ipw2200 é a
segunda versão, que suporta tanto o 8011.b, quanto o 802.11g; o ipw2915 é
quase idêntico ao ipw2200, mas suporta também o 802.11a, enquanto o ipw3945
é uma versão atualizada, que é encontrada nos notebooks com processadores
Core Solo e Core Duo.
madwifi_a, madwifi_b, madwifi_g, madwifi_ab e madwifi_ag: Estes drivers
representam diferentes modos de operação suportados pelo driver madwifi
(http://sourceforge.net/projects/madwifi/), usado nas placas com chipset
Atheros. Suportam tanto o driver madwifi antigo, quanto o madwifi-ng.
Usando os drivers madwifi_a, madwifi_b ou madwifi_g, a placa captura pacotes
apenas dentro do padrão selecionado (o madwifi_a captura apenas pacotes
de redes 802.11a, e assim por diante). O madwifi_g é o mais usado, pois
captura simultaneamente os pacotes de redes 802.11b e 802.11g. O madwifi_ag,
por sua vez, chaveia entre os modos "a" e "g", permitido capturar pacotes de
redes que operam em qualquer um dos três padrões, mas num ritmo mais lento,
devido ao chaveamento.
rt2400 e rt2500: Estes dois drivers dão suporte às placas com chipset
Ralink, outro exemplo de chipset de baixo custo que está se tornando bastante
comum. Apesar de não serem exatamente "placas de alta qualidade", as Ralink
possuem um bom suporte no Linux, graças em parte aos esforços do próprio
fabricante, que abriu as especificações e fornece placas de teste para os
desenvolvedores. Isto contrasta com a atitude hostil de alguns fabricantes,
como a Broadcom e a Texas (que fabrica os chipsets ACX).
rt8180: Este é o driver que oferece suporte às placas Realtek 8180. Muita gente
usa estas placas em conjunto com o ndiswrapper, mas elas possuem um driver
nativo, disponível no http://rtl8180-sa2400.sourceforge.net/. Naturalmente,
o Kismet só funciona caso seja usado o driver nativo.
prism54g: Este driver dá suporte às placas com o chipset Prism54, encontradas
tanto em versão PCI ou PCMCIA, quanto em versão USB. Estas placas são caras
e por isso relativamente incomuns no Brasil, mas são muito procuradas entre
os grupos que fazem wardriving, pois as placas PCMCIA são geralmente de
boa qualidade e quase sempre possuem conectores para antenas externas, um
pré-requisito para usar uma antena de alto ganho e assim conseguir detectar
redes distantes.
orinoco: Os drivers para as placas com chipset Orinoco (como as antigas
Orinoco Gold e Orinoco Silver) precisam de um conjunto de patches para
funcionar em conjunto com o Kismet, por isso acabam não sendo placas
recomendáveis. Você pode ver detalhes sobre a instalação dos patches no
http://www.kismetwireless.net/HOWTO-26_Orinoco_Rfmon.txt.
Depois de definir o driver, a interface e o nome no "/etc/kismet/kismet.conf",
você pode abrir o Kismet chamando-o como root:
# kismet
Inicialmente, o Kismet mostra as redes sem uma ordem definida, atualizando a
lista conforma vai descobrindo novas informações. Pressione a tecla "s" para
abrir o menu de organização, onde você pode definir a forma como a lista é
organizada, de acordo com a qualidade do canal, volume de dados capturados,
nome, etc. Uma opção comum (dentro do menu sort) é a "c", que organiza a
lista baseado no canal usado por cada rede.
Por padrão, o Kismet chaveia entre todos os canais, tentando detectar todas
as redes disponíveis. Neste modo, ele captura apenas uma pequena parte do
tráfego de cada rede, assim como você só assiste parte de cada programa ao
ficar zapiando entre vários canais da TV.
Selecione a rede que quer testar usando as setas e pressione "shift + L"
(L maiúsculo) para travá-lo no canal da rede especificada. A partir daí ele
passa a concentrar a atenção numa única rede, capturando todos os pacotes
transmitidos:
Você pode também ver informações detalhadas sobre cada rede selecionando-a
na lista e pressionando enter. Pressione "q" para sair do menu de detalhes
e voltar à tela principal.
Outro recurso interessante é que o Kismet avisa sobre "clientes suspeitos",
micros que enviam pacotes de conexão para os pontos de acesso, mas nunca se
conectam a nenhuma rede, indício de que provavelmente são pessoas fazendo
wardriving ou tentando invadir redes. Este é o comportamento de programas
como o Netstumbler (do Windows). Micros rodando o Kismet não disparam este
alerta, pois fazem o scan de forma passiva:
ALERT: Suspicious client 00:12:F0:99:71:D1 - probing networks but never participating.
O Kismet gera um dump contendo todos os pacotes capturados, que vai por
padrão para a pasta "/var/log/kismet/". A idéia é que você possa examinar
o tráfego capturado posteriormente usando o Ethereal. O problema é que,
ao sniffar uma rede movimentada, o dump pode se transformar rapidamente num
arquivo com vários GB, exibindo que você reserve bastante espaço no HD.
Um dos maiores perigos numa rede wireless é que qualquer pessoa pode capturar
o tráfego da sua rede e depois examiná-lo calmamente em busca de senhas
e outros dados confidenciais transmitidos de forma não encriptada. O uso
do WEP ou outro sistema de encriptação minimiza este risco, pois antes de
chegar aos dados, é necessário quebrar a encriptação.
Evite usar chaves WEP de 64 bits, pois ele pode ser quebrado via força bruta
caso seja possível capturar uma quantidade razoável de pacotes da rede. As
chaves de 128 bits são um pouco mais seguras, embora também estejam longe
de ser inquebráveis. Em termos se segurança, o WPA está à frente, mas usá-lo
traz problemas de compatibilidade com algumas placas e drivers.
Sempre que possível, use o SSH, SSL ou outro sistema de encriptação na hora
de acessar outras máquinas da rede ou baixar seus e-mails.
No Guia "Acesso Remoto: SSH, FreeNX e VNC", vemos como é é possível criar
um túnel seguro entre seu micro e o gateway da rede, usando o SSH, permitindo
assim encriptar todo o tráfego. Ele está disponível no:
Gostou da dica? Venha fazer um curso com o autor:
Curso: Redes e servidores Linux
Com Carlos E. Morimoto
Em São Paulo, de 29/05 a 03/06 (intensivo, com aulas à tarde)
Este é um curso sobre a configuração de servidores Linux. Nele você aprende
a configurar cada serviço diretamente nos arquivos de configuração ou
utilizando ferramentas genéricas, sem se prender a uma única distribuição. Os
exemplos dados durante o curso usam como base o Debian e Fedora, com dicas
de peculiaridades do Mandriva, Slackware, Kurumin e Ubuntu.
Este é um curso intensivo, onde você passa menos tempo vendo teoria e opções
pouco usadas e mais tempo aprendendo a resolver problemas do dia a dia. O
formato das aulas permite que sejam abordados uma grande quantidade de temas
numa única semana, oferecendo uma visão global dos recursos disponíveis e
onde eles podem ser aplicados. Ao invés de fazer um curso sobre o Squid,
outro sobre o Samba, outro sobre o Apache, etc., você aprende muitas coisas
de uma única vez, economizando tempo e dinheiro.
Nesta turma do dia 29/05, combinou do curso de redes e o curso para iniciantes
serem ministrados na mesma semana: o curso para iniciantes de segunda a sexta,
das 8:00 às 11:00, e o curso de redes das 12:30 às 18:00. Fazendo o curso
de redes, você tem acesso também às aulas para iniciantes e pode fazer os
dois cursos simultaneamente (pagando apenas um), e assim aproveitar para
tirar todas as dúvidas.
Veja mais detalhes sobre a programação de cursos, temas abordados, preços
e formas de pagamento no:
http://guiadohardware.net/cursos/
Todas as aulas do curso de redes são ministradas pelo próprio Carlos Morimoto,
o que garante o nível do curso. Nada de aulas inaugurais e mutretas do
gênero :)