Mac spoofing

Jeg tok like så gjerne og prøvde ut problemstillingen Andreas Rosland gjorde klassen oppmerksom på idag. Dersom en pc spoofer mac-addressen til en annen, altså at en switch har samme mac addresse på to forskjellige porter; hva skjer da?

Her er topologien:

Oppsett

PC ip MAC port
laptop 192.168.1.10 00:15:c5:af:02:2d 4
server 192.168.1.1 00:04:e2:33:1c:74 1
stasjonær 192.168.1.11 00:1c:c0:7a:32:8b 2

Switchen har forøvrig ip-address 192.168.1.89, på vlan1. Jeg pinget switchen fra de tre pcene. Da så arp-tabellen og mac-address-tabellen i switchen slik ut:

tonet-switch1#show mac-address-table
Destination Address  Address Type  VLAN  Destination Port	IP
-------------------  ------------  ----  --------------------
0004.e233.1c74       Dynamic          1  FastEthernet0/1
0015.c5af.022d       Dynamic          1  FastEthernet0/4
001c.c07a.328b       Dynamic          1  FastEthernet0/2
 
tonet-switch1#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.89            -   0004.9a18.d740  ARPA   VLAN1
Internet  192.168.1.11            0   001c.c07a.328b  ARPA   VLAN1
Internet  192.168.1.10            3   0015.c5af.022d  ARPA   VLAN1
Internet  192.168.1.1             0   0004.e233.1c74  ARPA   VLAN1

Mac spoofing -- å duplisere en mac addresse

Nå kommer magien. Laptopen kjører ubuntu. Siden linux er et veldig greit verktøy for å jobbe med nettverk (og mye annet) bestemte jeg meg for å bruke laptopen til å klone (spoofe) mac addressen til den stasjonære pcen. Ville det skje noe?

Et søk på google gav meg et tips om et lite program som heter macchanger.

sudo apt-get install macchanger

Så byttet jeg mac addresse til den samme som den stasjonære pcen hadde. Men først måtte jeg stoppe nettverkstjenestene.

technocake@technocake-laptop:~$ sudo /etc/init.d/networking stop
 * Deconfiguring network interfaces...                                          
                                                                          [ OK ]
technocake@technocake-laptop:~$ sudo macchanger --mac=00:1c:c0:7a:32:8b eth0
Current MAC: 00:15:c5:af:02:2d (unknown)
Faked MAC:   00:1c:c0:7a:32:8b (unknown)
technocake@technocake-laptop:~$ sudo /etc/init.d/networking start

les mer om macchanger her:
Da har jeg på dette tidspunktet to maskiner med samme mac addresse tilkoblet samme switch.

Skjer det noe?

For å se hva som hendte, slo jeg på debugging for arp og mac-address-table på switchen:

 tonet-switch1#debug arp
 ARP packet debugging is on
 
 tonet-switch1#debug mat dynamic
 MAT dynamic addresses debugging is on

mat står her for Mac Address Table. Og det er de dynamiske oppføringen til switchen vi er innteresert i.

Da, pinget jeg switchen (192.168.1.89) fra laptopen, og observerte.
show mac-address-table:

 Destination Address  Address Type  VLAN  Destination Port
 -------------------  ------------  ----  --------------------
 0004.e233.1c74       Dynamic          1  FastEthernet0/1
 001c.c07a.328b       Dynamic          1  FastEthernet0/4

Nå gikk tabellen over fra 3 entries til 2. Legg merke til at port 2 ikke er å se. Dette er den porten som den stasjonære pcen er koblet til.

Men arp tabellen har en oversikt over ip addresser:

tonet-switch1#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.89            -   0004.9a18.d740  ARPA   VLAN1
Internet  192.168.1.11            0   001c.c07a.328b  ARPA   VLAN1
Internet  192.168.1.10            3   001c.c07a.328b  ARPA   VLAN1
Internet  192.168.1.1             0   0004.e233.1c74  ARPA   VLAN1

Pingingen fra laptopen fikk svar. Det merkelige var at den stasjonære fikk også svar på ping til switchen. Også når de pinget samtidig!

Hvorfor?

Jeg observerte, at om jeg pinget fra den stasjonære, ble mac-addresse-tabellen oppdatert, slik at denne macen pekte til port 2. Pinget jeg fra laptopen, ble den byttet til port 4. Og slik gikk det frem og tilbake.

Jo fordi switchen baserer seg på data fra både arp tabellen og mac-address-table for å velge hvilken port den skal sende ut på. Siden laptopen og den stasjonære har ulik IP-ADDRESSE, men lik MAC addresse, så et den hvilken port den skal sende ut svaret på.

Thats it for this time.

Technocake a.k.a kakemann a.k.a Robin out!

Leave a comment

7 Comments

  1. Jeg likte spesielt godt at du kom frem til samme svar som meg ;) (der hadde jeg flaks! ;) )

  2. Jan Egil

     /  January 12, 2010

    Så kommer spørsmålet. Inneholder arp tabellen noen informasjon om hvilket interface mac-adressen er koblet til, og på den måten kan finne ut hvilke port den skal sende den ut på? Eller er arp tabellen enkelt og greit bare en kobling mellom ip-adresse og mac-adresse som switchen selv bruker når den skal ha tak i en IP-adresse.

    Hva om du ikke hadde pinget switchen, hadde hatt en switch som kun støttet L2, eller hadde tømt arp-tabellen før du prøvde?

  3. En «dum», ikke-manageable switch har ikke ARP-tabell engang. Men det kan godt være resultatet hadde blitt annerledes på en slik en.

  4. Når jeg pinget fra begge samtidig, med uendelig antall ping kom det opp noen warnings på switchen:

    Warning, relearning 60 arp-entries per minute.

    Så mine antagelser er at switchen driver frenetisk og oppdaterer mac-address-table fortløpende frem og tilbake for å kunne vite hvilken port den skal svare på.

    Angående dumme svitsjer: jeg har jo en del, gonna try it out.

  5. Jan Egil

     /  January 14, 2010

    MAC-tabellen oppdateres nok når den merker at det kommer en frame med en MAC-addresse som ikke allerede ligger på den porten. Hvis MAC-tabellen i switchen kun inneholder 1 oppføring pr mac-adresse, vil da denne oppdateres fortløpende frem og tilbake dersom det er to porter som har en enhet med samme MAC-adresse tilkoblet. Når du kjører ditt evt neste eksperiment og pinger på likt. Kan du se hva som skjer dersom den ene hosten som pinges blir pinget “hurtigere” enn den andre. Eksempelvis med ping -f. Noe tall på pakketap hadde også vært gøyt å sett…

  6. Skal fikses Jan Egil :)

    Btw, er det noe forskjell på show arp og show ip arp?

    robin

  7. Ingen forskjell på «show arp» og «show ip arp» nei. Jeg får hvertfall samme output fra begge.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">