LEIA-ME
Este aplicativo resolve o problema de ataques de LAN e detecção de dados. Ele pode realizar ataques ponto a ponto em qualquer terminal alvo na LAN para detectar os dados upstream e downstream da Internet do terminal alvo. Visando a heterogeneidade de múltiplas fontes e a natureza em tempo real dos dados de rede, um mecanismo de detecção e monitoramento direcionado foi projetado em combinação com as características naturais do NoSQL do MongoDB.
1. Server: The core technology used in the backend is SpringBoot. The core technologies used for network attacks include winpcap, jpcap, ARP Spoofing (ARP deception), MITM (Man-in-the-Middle Attack), and network packet grouping/degrouping, decompression, and restoration.
2. Client: The core technologies used in the frontend include Angular6, ECharts, etc.
3. Packaging and Deployment: The front-end and back-end are packaged into the same jar file using Maven.
1. Configuração do ambiente
1) macOS
Downloads e instalações de software necessários
- Java (não selecione 64 bits): Download de Java
- MongoDB (deve escolher 3.4.24): Download do MongoDB
- WinPcap mais recente: Baixar WinPcap
- Wireshark: Baixar Wireshark
- Maven, NodeJS
Configurações necessárias
- Habilite o encaminhamento de IP:
sudo sysctl -w net.inet.ip.forwarding=1
. Verifique se o encaminhamento de IP está habilitado (deve ser 1): sudo sysctl -a | grep net.inet.ip.forwarding
. Após a reinicialização do sistema, o encaminhamento de IP será revertido para o estado desativado padrão, portanto deve ser reativado; caso contrário, o alvo atacado não conseguirá acessar a internet normalmente. - Adicione o caminho absoluto do diretório bin no diretório de instalação do MongoDB ao caminho da variável de ambiente para iniciar o serviço MongoDB a partir da linha de comando.
- Copie
libjpcap.jnilib
para /Library/Java/Extensions/
. - Certifique-se de que o servidor que executa este programa e o celular alvo estejam conectados ao mesmo roteador via Wi-Fi.
- Navegue até o diretório raiz do código na linha de comando, compile e empacote usando Maven:
mvn package -Dmaven.test.skip=true
, copie jpcap-mitm.jar
para qualquer diretório como diretório de trabalho e crie um data/db
pasta neste diretório de trabalho como a pasta de dados do MongoDB. - Abra o pacote Wireshark dmg baixado, você verá um pacote
Install ChmodBPF.pkg
, clique duas vezes para instalar este pacote de software.
Etapas de inicialização
- Abra o Terminal, navegue até o diretório de trabalho especificado e execute
mongod --dbpath=data/db
. Após alguns segundos, aguarde a execução bem-sucedida do serviço MongoDB e imprima um log semelhante a: *** aguardando conexões na porta 27017. - Clique no botão Iniciar do Windows no canto inferior esquerdo, digite
cmd
e clique com o botão direito para executar a linha de comando como administrador. Navegue até D:mitm
na linha de comando e execute java -jar jpcap-mitm.jar
. Aguarde a execução bem-sucedida do serviço e imprima um log semelhante a: *** Aplicativo iniciado em ** segundos. - Abra o navegador Chrome e navegue até
http://localhost:8888
ou acesse o programa remotamente de outro dispositivo via http://<local IP>:8888
. - Após abrir com sucesso o site de gerenciamento deste programa, selecione a placa de rede correta em
Select interface
, defina o IP e MAC local, IP e MAC móvel de destino, IP e MAC do gateway (roteador). Observe que todos esses são IPs de rede internos e devem estar na mesma sub-rede. - O IP e o MAC do celular alvo podem ser visualizados nas informações de conexão Wi-Fi do telefone. Se você não souber o IP e MAC local ou o IP e MAC do roteador, digite
ifconfig
no Terminal para encontrar o endereço IPv4, o endereço físico e o gateway padrão. Execute arp -a
para encontrar o MAC do gateway. - Após definir as informações acima, clique no botão de configuração e o aplicativo estabelecerá a conexão correspondente. Cada vez que o programa é iniciado, você pode redefinir a conexão, mas uma vez definida, ela não pode ser modificada. Para redefinir, feche o processo
jpcap-mitm.jar
na janela da linha de comando pressionando control+c
e reinicie o programa. - Antes de iniciar o ataque, tente usar o celular alvo para acessar sites ou aplicativos. Certifique-se de que o telefone possa acessar a Internet normalmente sem iniciar o ataque.
- Após clicar em iniciar ataque, aguarde alguns segundos para que o ataque tenha efeito e exiba a barra dinâmica. Verifique os dados no painel de estatísticas em tempo real abaixo e use o celular alvo para acessar sites ou aplicativos para ver as atualizações do painel de dados.
- Após concluir as funções do site ou aplicativo, clique em parar ataque. O ataque irá parar imediatamente, mas o servidor capturou um grande número de pacotes que precisam ser armazenados sequencialmente, de modo que os dados do painel de estatísticas em tempo real podem continuar a aumentar lentamente por alguns minutos antes de parar.
- Após interromper o ataque, aguarde alguns segundos pela mensagem de que a análise do pacote foi concluída. Você pode então selecionar o ID do lote (ID mais recente) deste ataque nas páginas de análise, estatísticas e dump para visualizar conteúdo e gráficos detalhados.
Notas
- Se um prompt de erro da web aparecer, verifique se o pacote jar da linha de comando foi encerrado de forma anormal. O programa pode ter travado. Tente reiniciar o jar. Preste atenção ao log da linha de comando do programa. Se erros forem lançados continuamente, o programa poderá não conseguir detectar pacotes normalmente. Tente reiniciar o jar.
- Se o roteador tiver ligação IP/MAC estática habilitada, DHCP desabilitado ou módulos de defesa contra ataques ARP, isso poderá fazer com que o programa intercepte apenas pacotes upstream e não pacotes downstream. Se as configurações do roteador não puderem ser definidas, mude para um equipamento diferente e ataque novamente. Se o dispositivo de gateway for muito poderoso, o ataque poderá não ser totalmente bem-sucedido.
- Após iniciar o ataque, se o alvo consegue acessar a internet normalmente mas nenhum pacote é detectado na página de gerenciamento do programa, ou o alvo não consegue acessar a internet, verifique se o encaminhamento de IP está habilitado no sistema, verifique cuidadosamente o IP e MAC de todos dispositivos configurados na web, verifique se a interface da placa de rede selecionada está correta, verifique se o servidor e o celular alvo estão conectados ao mesmo roteador, verifique se o IP do celular alvo mudou (pode ser IP fixo), verifique se a janela da linha de comando que executa o jar é executada como administrador, tente reiniciar o computador e aguarde alguns minutos antes de tentar novamente.
- O ataque não deve durar muito, algumas dezenas de segundos é o ideal. Após o teste, interrompa o ataque para evitar ataques contínuos ao alvo e ao gateway, causando uma tempestade de dados na LAN, o que pode sobrecarregar o gateway e causar falha em toda a LAN.
2) Janelas
Downloads e instalações de software necessários
- Java (não selecione 64 bits): Download de Java
- MongoDB (deve escolher 3.4.24): Download do MongoDB
- WinPcap mais recente: Baixar WinPcap
- Maven, NodeJS
Configurações necessárias
- Habilitar encaminhamento de IP: Clique no botão Iniciar do Windows no canto inferior esquerdo, digite
regedit
e selecione o editor de registro. Clique com o botão direito para executar o editor de registro como administrador. Navegue até a chave de registro HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
, selecione o item IPEnableRouter
e altere o valor para 1. - Adicione o caminho absoluto do diretório bin no diretório de instalação do MongoDB ao caminho da variável de ambiente para iniciar o serviço MongoDB a partir da linha de comando.
- Crie um diretório de trabalho para este programa. Por exemplo, crie a pasta
D:mitm
como diretório de trabalho. No mesmo diretório raiz do diretório de trabalho, crie a pasta de dados do MongoDB data/db
. Por exemplo, se o diretório raiz for D
, crie a pasta D:datadb
. - Certifique-se de que o servidor que executa este programa e o celular alvo estejam conectados ao mesmo roteador via Wi-Fi.
- Navegue até o diretório raiz do código na linha de comando, compile e empacote usando Maven:
mvn package -Dmaven.test.skip=true
, copie jpcap-mitm.jar
e Jpcap.dll
para o diretório de trabalho e crie um data/db
neste diretório de trabalho como a pasta de dados do MongoDB.
Etapas de inicialização
- Clique no botão Iniciar do Windows no canto inferior esquerdo, digite
cmd
e clique com o botão direito para executar a linha de comando como administrador. Navegue até D:
e execute mongod
. Após alguns segundos, aguarde a execução bem-sucedida do serviço MongoDB e imprima um log semelhante a: *** aguardando conexões na porta 27017. Não use o botão esquerdo do mouse para selecionar qualquer conteúdo na janela da linha de comando. O estado selecionado fará com que o serviço seja suspenso. - Clique no botão Iniciar do Windows no canto inferior esquerdo, digite
cmd
e clique com o botão direito para executar a linha de comando como administrador. Navegue até D:mitm
na linha de comando e execute java -jar jpcap-mitm.jar
. Aguarde a execução bem-sucedida do serviço e imprima um log semelhante a: *** Aplicativo iniciado em ** segundos. - Abra o navegador Chrome e navegue até
http://localhost:8888
ou acesse o programa remotamente de outro dispositivo via http://<local IP>:8888
. - Após abrir com sucesso o site de gerenciamento deste programa, selecione a placa de rede correta em
Select interface
, defina o IP e MAC local, IP e MAC móvel de destino, IP e MAC do gateway (roteador). Observe que todos esses são IPs de rede interna e devem estar na mesma sub-rede. - O IP e o MAC do celular alvo podem ser visualizados nas informações de conexão Wi-Fi do telefone. Se você não souber o IP e MAC local ou o IP e MAC do roteador, clique no botão Iniciar do Windows no canto inferior esquerdo, digite
cmd
e clique com o botão direito para executar a linha de comando como administrador. Digite ipconfig /all
na linha de comando para encontrar a seção Wi-Fi do adaptador de LAN sem fio, encontre o endereço IPv4, o endereço físico e o gateway padrão. Execute arp -a
para encontrar o MAC do gateway. - Após definir as informações acima, clique no botão de configuração e o aplicativo estabelecerá a conexão correspondente. Cada vez que o programa é iniciado, você pode redefinir a conexão, mas uma vez definida, ela não pode ser modificada. Para redefinir, feche o processo
jpcap-mitm.jar
na janela da linha de comando pressionando control+c
e reinicie o programa. - Antes de iniciar o ataque, tente usar o celular alvo para acessar sites ou aplicativos. Certifique-se de que o telefone possa acessar a Internet normalmente sem iniciar o ataque.
- Após clicar em iniciar ataque, aguarde alguns segundos para que o ataque tenha efeito e exiba a barra dinâmica. Verifique os dados no painel de estatísticas em tempo real abaixo e use o celular alvo para acessar sites ou aplicativos para ver as atualizações do painel de dados.
- Após concluir as funções do site ou aplicativo, clique em parar ataque. O ataque irá parar imediatamente, mas o servidor capturou um grande número de pacotes que precisam ser armazenados sequencialmente, de modo que os dados do painel de estatísticas em tempo real podem continuar a aumentar lentamente por alguns minutos antes de parar.
- Após interromper o ataque, aguarde alguns segundos pela mensagem de que a análise do pacote foi concluída. Você pode então selecionar o ID do lote (ID mais recente) deste ataque nas páginas de análise, estatísticas e dump para visualizar conteúdo e gráficos detalhados.
Notas
- Se um prompt de erro da web aparecer, verifique se o pacote jar da linha de comando foi encerrado de forma anormal. O programa pode ter travado. Tente reiniciar o jar. Preste atenção ao log da linha de comando do programa. Se erros forem lançados continuamente, o programa poderá não conseguir detectar pacotes normalmente. Tente reiniciar o jar.
- Se o roteador tiver ligação IP/MAC estática habilitada, DHCP desabilitado ou módulos de defesa contra ataques ARP, isso poderá fazer com que o programa intercepte apenas pacotes upstream e não pacotes downstream. Se as configurações do roteador não puderem ser definidas, mude para um equipamento diferente e ataque novamente. Se o dispositivo de gateway for muito poderoso, o ataque poderá não ser totalmente bem-sucedido.
- Após iniciar o ataque, se o alvo consegue acessar a internet normalmente mas nenhum pacote é detectado na página de gerenciamento do programa, ou o alvo não consegue acessar a internet, verifique se o encaminhamento de IP está habilitado no sistema, verifique cuidadosamente o IP e MAC de todos dispositivos configurados na web, verifique se a interface da placa de rede selecionada está correta, verifique se o servidor e o celular alvo estão conectados ao mesmo roteador, verifique se o IP do celular alvo mudou (pode ser IP fixo), verifique se a janela da linha de comando que executa o jar é executada como administrador, tente reiniciar o computador e aguarde alguns minutos antes de tentar novamente.
- Se a nomenclatura na lista de interfaces da placa de rede não puder determinar qual selecionar, abra o editor de registro e verifique a chave de registro
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfaces{*}
. Esta lista corresponde à lista de interfaces. Verifique cada item da interface e veja qual configuração corresponde ao IP do servidor atual, indicando a interface que precisamos selecionar. - O ataque não deve durar muito, algumas dezenas de segundos é o ideal. Após o teste, interrompa o ataque para evitar ataques contínuos ao alvo e ao gateway, causando uma tempestade de dados na LAN, o que pode sobrecarregar o gateway e causar falha em toda a LAN.
2. Descrição do Programa
A interface front-end deste projeto é a seguinte
Página de ataque LAN
- Nesta interface, defina a placa de rede e o IP e MAC da máquina/destino/gateway local, defina a lista de domínios monitorados (um domínio ou vários domínios separados por vírgulas) e, em seguida, controle o início ou parada do ataque.
- O primeiro passo é fazer as configurações necessárias. Essas configurações só podem ser feitas depois que o programa for iniciado novamente. As informações serão salvas no banco de dados e o programa as lerá automaticamente na próxima vez que for iniciado. Quando o programa for iniciado pela primeira vez, ele lerá automaticamente o IP e o MAC locais. Isso precisa ser cuidadosamente confirmado para estar correto. A placa de rede precisa selecionar o dispositivo da placa de rede usado para acesso normal à Internet. O alvo refere-se ao celular ou outros dispositivos que precisamos monitorar. O gateway geralmente se refere ao roteador ou outros dispositivos de gateway aos quais estamos conectados via Wi-Fi. Todas as informações acima devem ser configuradas estritamente e corretamente, caso contrário o programa não poderá funcionar normalmente. A interface de configuração é mostrada na figura abaixo:
- O IP e MAC do gateway podem ser visualizados no dispositivo gateway, ou também podem ser visualizados na tabela de roteamento local, conforme mostrado na figura abaixo:
- Quando terminarmos a configuração e salvarmos ou iniciarmos o ataque, a lista de endereços de nomes de domínio a serem monitorados será resolvida pelo DNS e a lista de IP correspondente será atualizada para MongoDB, e então o ataque LAN e a detecção de dados serão iniciados oficialmente. A interface mostrará o status do ataque, conforme mostrado na figura abaixo:
- Neste momento, você pode arrastar a página para a parte inferior para visualizar as estatísticas de detecção de pacotes. A parte estatística é dividida principalmente em dois tipos: upstream e downstream, que são divididos em quatro tipos TCP/UDP/ICMP/ARP. Upstream significa os pacotes enviados do destino e downstream significa os pacotes recebidos pelo destino. Se o alvo não estiver navegando na lista de domínios especificada neste momento, todas as estatísticas serão sempre 0. Se ele começar a navegar na lista de domínios especificada, você poderá ver que as estatísticas passam a ter dados, conforme mostrado na figura abaixo:
- Quando interrompermos o ataque, uma análise detalhada dos pacotes deste ataque será iniciada automaticamente. Após a conclusão do ataque, também aparecerá um prompt pop-up, conforme mostrado na figura abaixo:
Página de análise de pacotes
- Nesta interface, primeiro será mostrado se o processo de análise de pacotes está em andamento. Se ainda estiver em análise, será necessário aguardar a conclusão da análise antes de visualizar os resultados. Após a conclusão da análise, o status mudará automaticamente para concluída e você poderá visualizar os resultados da análise.
- Primeiro, podemos escolher um filtro de pacotes: ID do lote de ataque/upstream ou downstream/protocolo/conteúdo. Cada item de filtro pode ser multisselecionado ou deixado em branco, o que significa que todos os tipos são correspondidos. Após clicar em filtrar, a primeira tabela abaixo mostrará todos os pacotes correspondentes após análise. Observe que os pacotes aqui são diferentes daqueles da interface de ataque. Os pacotes aqui são todos pacotes combinados, enquanto os da interface de ataque são quadros originais. Portanto, o número de pacotes aqui é muito menor do que antes. Na primeira tabela, podemos ver todos os campos importantes dos pacotes, incluindo alguns campos após análise (como cabeçalho HTTP/corpo HTTP/MÉTODO, etc.), conforme mostrado na figura abaixo:
- Após clicar em qualquer linha da primeira tabela, verifique a segunda tabela abaixo para ver quais quadros de dados originais correspondem a este pacote. Podemos ver aqui alguns campos de quadro básicos desses pacotes, conforme mostrado na figura abaixo:
Página de estatísticas de pacotes
- Da mesma forma, nesta interface, primeiro será mostrado se o processo de análise de pacotes está em andamento. Se ainda estiver em análise, será necessário aguardar a conclusão da análise antes de visualizar os resultados. Após a conclusão da análise, o status mudará automaticamente para concluída e você poderá visualizar os resultados da análise.
- Primeiro, podemos filtrar com base no lote de ataque, que pode ser multisselecionado ou deixado em branco, o que significa que todos os lotes de ataque são correspondidos, conforme mostrado na figura abaixo:
- Depois de clicar no filtro, você pode primeiro ver as estatísticas de pacotes de vários tipos de protocolo detalhados, divididos principalmente em duas categorias: upstream e downstream, cada uma delas dividida em tipos de protocolo HTTP/HTTPS/TCP/UDP/ICMP/ARP. Observe que TCP aqui se refere a outros tipos de protocolo TCP, exceto HTTP e HTTPS, enquanto HTTP e HTTPS são especialmente e comumente analisados e contados separadamente. A interface de estatísticas é mostrada na figura abaixo:
- Continuando a olhar para baixo, você também pode ver gráficos de pizza de cada tipo de protocolo, divididos em duas categorias: upstream e downstream, conforme mostrado na figura abaixo:
- Da mesma forma, você também pode ver gráficos de pizza de cada tipo de conteúdo, divididos em duas categorias: upstream e downstream, onde
other
se refere a outros pacotes TCP, exceto HTTP/HTTPS e pacotes de outros protocolos que não podem ser analisados. Como o conteúdo real de tais pacotes não pode ser analisado, eles são classificados uniformemente como other
, conforme mostrado na figura abaixo: - Também podemos ver a distribuição de diferentes conteúdos de pacotes com base na linha do tempo. O gráfico multilinha na parte inferior mostra as mudanças de tendência de vários conteúdos de pacotes, enquanto o gráfico de pizza na parte superior interage com o mouse. Quando o mouse se move no eixo x do gráfico multilinha, o gráfico de pizza mostrará as estatísticas e proporções de vários conteúdos de pacotes no momento atual no eixo x em tempo real, conforme mostrado na figura abaixo:
- Da mesma forma, o gráfico da linha do tempo também é dividido em upstream e downstream, conforme mostrado na figura abaixo, que mostra os dados downstream:
Página do armazém de pacotes
- Nesta página, podemos ver os dados básicos de cada ataque, como ID do ataque/tempo de ataque/número de frames de dados upstream/número de frames de dados downstream, etc. Também podemos operar em cada processo de ataque, reanalisar ou excluir todos pacotes relacionados e resultados de análise, conforme mostrado na figura abaixo:
Contribuição