[luccalug-soci] ARP packet generator

Matteo Grandi grn.matteo@gmail.com
Mer 31 Gen 2018 16:31:05 CET


Fatto in python, oppure nping lavora bene se lo gli incapsuli il traffico
su un'interfaccia virtuale.
Lo script è questo (non ancora testato):

import socket
from struct import pack
from uuid import getnode as get_mac

def main():
    dest_ip = [10, 77, 2, 1]
    local_mac = ["e0:ca:94:5f:ae:ed"]
    local_ip = [ 10, 77, 2, 23]


    # sock = socket.socket(socket.AF_INET, socket.SOCK_RAW,
socket.SOCK_RAW)  # this line gives an attribute error
    s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    s.bind(("interface-name", 0))
    # sock.bind(('', 0))

    ARP_FRAME = [
        pack('!H', 0x0001), # HRD
        pack('!H', 0x0800), # PRO
        pack('!B', 0x06), # HLN
        pack('!B', 0x04), # PLN
        pack('!H', 0x0001), # OP
        pack('!6B', *local_mac), # SHA
        pack('!4B', *local_ip), # SPA
        pack('!6B', *(0x00,)*6), # THA
        pack('!4B', *dest_ip), # TPA
    ]
    print(ARP_FRAME)
    # soket.sendto(b''.join(ARP_FRAME), ('255.255.255.255', 0))
    s.send(packet)
    s.close()

if __name__ == "__main__":
    main()

Il giorno 31 gennaio 2018 16:10, Matteo Martinelli <matomoto32@gmail.com>
ha scritto:

> non saprei cos'altro consigliarti
> Forse ti conviene davvero farti uno scriptino tutto tuo, con scapy o
> direttamente con libpcap
>
> Il giorno 31 gennaio 2018 15:23, Matteo Grandi <grn.matteo@gmail.com> ha
> scritto:
>
>> Grazie Matteo, purtroppo ho veramente limitate possibilità e non posso
>> caricare uno xor da dare in pasto a packetforge-ng. Altrimenti anche
>> packETH è in grado di inviarmi l'ARP request se gli do una cattura
>> wireshark in un pcap file.
>>
>> La cosa che più si avvicina per ora è nping, ma se provo a specificare
>> l'interfaccia su cio inviare l'arp (nping -e <interface>) mi dice che non è
>> in grado di trovarla. la cosa strana è che accade solo all'utente root. Se
>> non agisco come root non ho errore, solo che non posso inviare traffico ARP
>> perchè necessito privilegi di root.
>>
>> Il giorno 31 gennaio 2018 14:10, Matteo Martinelli <matomoto32@gmail.com>
>> ha scritto:
>>
>>> Prova packetforge-ng
>>> <https://www.aircrack-ng.org/doku.php?id=packetforge-ng> forgia la
>>> richiesta ARP e inviala a tutti i client tranne quello nuovo che vuoi
>>> annunciare
>>>
>>> Il giorno 31 gennaio 2018 14:03, Matteo Grandi <grn.matteo@gmail.com>
>>> ha scritto:
>>>
>>>> Grazie ragazzi.
>>>>
>>>> Nping l'ho provato velocemente ieri e riesce a generare un pacchetto
>>>> ARP con custom IP e, a meno da comando, custom MAC, poi dalla cattura con
>>>> wireshark è emerso che il MAC address è quello della mia interfaccia di
>>>> rete. La cosa strana è che l'arp reply che ottengo è indirizzato non alla
>>>> mia interfaccia ma al MAC fasullo che ho inserito manualmente...mah...
>>>>
>>>> Di fare un'interfaccia ad-hoc non posso perchè purtroppo non è una
>>>> soluzione viabile dal momento che devo inviare il pacchetto da una
>>>> specifica interfaccia che ha il suo MAC apposito per identificare il
>>>> mesh-id a cui si connette e non posso cambiarlo.
>>>>
>>>> Ho fatto uno scriptino python che crafta il pacchetto sul momento, non
>>>> l'ho ancora provato ma tempo che sia l'unica maniera rapida.
>>>> Grazie per le risposte, sapevo che ci potevo contare!
>>>>
>>>> Ne approfitto per segnalarvi un paio di tools che ho usato per fare sta
>>>> cosa:
>>>> - Ettercap, penso non abbia bisogno di presentazioni
>>>> - packETH, è un mero packet generator, ma funziona bene solo via GUI,
>>>> cln la CLI è un po limitato
>>>> - scapy penso sia il più potente, tutto in python
>>>>
>>>> Il giorno 31 gennaio 2018 13:50, Manuel Mazzuola <origin.of@gmail.com>
>>>> ha scritto:
>>>>
>>>>> Non ti so dire se esiste un arping da cui puoi lanciare pacchetti con
>>>>> un mac address personalizzato, sicuramente ce ne sono da cui puoi mandare
>>>>> pacchetti con un ip sorgente diverso dal tuo, tipo
>>>>> https://github.com/iputils/iputils/blob/master/arping.c#L130
>>>>>
>>>>> Però puoi sempre creare una interfaccia di rete virtuale, darle un mac
>>>>> address farlocco e un ip e usare quella con arping.
>>>>>
>>>>> On Jan 31 2018, at 9:56 am, Matteo Grandi <grn.matteo@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Buongiorno lor signori,
>>>>>>
>>>>>> ho un problemino da sottoporvi.
>>>>>> Sto sviluppando una rete di accesso e trasporto SDN-based con gestion
>>>>>> della mobilità sia utente che della rete di servizio (pensate ad un
>>>>>> operatore che decide di fornire un determonato servizio inizilmente
>>>>>> attraverso un certo hub e poi mediante un altro hub perchè il primo non è
>>>>>> più operativo o dedicato ad altro). Quando l'hub cambia devo informare il
>>>>>> client con un ARP reply in modo da aggiorare le ARP table dei vari switch
>>>>>> che stanno nella rete di accesso e trasporto. Questo è fattibile facendo un
>>>>>> ARP spoofing dal controller SDN o da un nodo di rete che ha una certa
>>>>>> "intelligenza", ma dato che non posso conoscere a priori il nuovo MAC
>>>>>> dell'hub, devo generare una ARP request da parte del client che essendo
>>>>>> broadcast arriverà al server il quale genererà naturalmente la reply.
>>>>>>
>>>>>> Problema: esiste un tool funzionante mediante CLI che possa generare
>>>>>> una ARP request specificando un source IP e un source MAC a mia scelta?
>>>>>> Praticamente devo iniettare un ARP request nella rete fingendo che sia da
>>>>>> parte del client (sul quale non ho controllo).
>>>>>>
>>>>>> Ho visto che tools come packETH lo fanno, ma da GUI, se lo voglio
>>>>>> fare da CLI devo fornire un pcap contenente il pacchetto da inviare.
>>>>>> Ettercap è pure più macchinoso.
>>>>>> Altrimienti mi viene in mente di modificare il sorgente di arping per
>>>>>> inserire manualmente il soruce MAC address, ma è una cacca...
>>>>>>
>>>>>> Idee? Suggerimenti?
>>>>>>
>>>>>> --
>>>>>> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>>>>
>>>>
>>>
>>>
>>> --
>>> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>>>
>>>
>>
>>
>> --
>> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>>
>>
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/luccalug-soci
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/luccalug-soci/attachments/20180131/3cfa6f27/attachment.html>


Maggiori informazioni sulla lista Luccalug-soci