Podgląd payloadu ICMP w Scapy
tty1 · python
$ 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 ))'
#Unix#RedTeam#BlueTeam#ICMP#Exfil#Python#Scapy
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'
Przydatne linki
▸
https://sekurak.pl/tag/scapy/
trochę do poczytania o Scapy na Sekuraku
web ↗
▸
https://scapy.readthedocs.io/en/latest/
dokumentacja u źródła
web ↗
▶
https://youtu.be/kh_rD-y63cE?t=879
eksfiltracja (oraz kanał C2) po ICMP w akcji
video ↗
▸
Scapy jako serwer C2
źródła z jednej z konferencji z wykorzystaniem Scapy do C2
web ↗