Protipy / Python
Podgląd payloadu ICMP w Scapy
python3 -c 'from scapy.all import *; sniff(filter="icmp and icmp[0]=8", prn=(lambda x: print(x[1].src, x[ICMP].load) if hasattr(x[ICMP], "load") else None ))'
Wstęp
Scapy to nieoceniona biblioteka do wszelkich zabaw z pakietami sieciowymi. Nasz oneliner sniffuje pakiety ICMP Echo Request ( filter="icmp and icmp[0]=8") i jeśli taki pakiet wyłapie, przekazuje go do callbacka, który wyświetli adres IP nadawcy oraz payload pod warunkiem, że payload istnieje ( prn=(lambda x: print(x[1].src, x[ICMP].load) if hasattr(x[ICMP], "load") else None )).
Co można zobaczyć
Przykład otrzymania trzech standardowych pakietów ICMP Echo Request z Windows 10 oraz trzech z ustawionym payloadem na 64 bajty (ping -l 64 host):
root@aptexfil:~# python3 -c 'from scapy.all import *; sniff(filter="icmp and icmp[0]=8", prn=(lambda x: print(x[1].src, x[ICMP].load) if hasattr(x[ICMP], "load") else None ))'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghi'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghi'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghi'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwabcdefghijklmnopqr'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwabcdefghijklmnopqr'
172.253.195.4 b'abcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwabcdefghijklmnopqr'
Linki
- web · https://sekurak.pl/tag/scapy/ — trochę do poczytania o Scapy na Sekuraku
- web · https://scapy.readthedocs.io/en/latest/ — dokumentacja u źródła
- video · https://youtu.be/kh_rD-y63cE?t=879 — eksfiltracja (oraz kanał C2) po ICMP w akcji
- web · Scapy jako serwer C2 — źródła z jednej z konferencji z wykorzystaniem Scapy do C2