[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Settembre 2004 ml@sikurezza.org
Soggetto: Re: [ml] Novità del simpatico XP SP2
Mittente: KJK::Hyperion
Data: Tue, 14 Sep 2004 21:11:44 +0200 (CEST)
At 16.43 13/09/2004, you wrote:
<quote>
If applications are broken by SP2, stop using them. Great solution, Microsoft! Fortunately for Nmap users, Microsoft implemented the new restrictions in their typical half-assed fashion. Instead of sending raw IP packets, we move one layer down and send our raw IP packets in raw ethernet frames.
</quote>


Ok, funziona solo su interfacce ethernet, [...]

Mi pare che qui si brancoli nel buio e si speri di capirne per tentativi. Permettete? lo stack dei componenti attraversati da una chiamata a, chesso', send, in Windows, è questo:


 +------------------------------------------------+
 |                                                |
 |  Front-end protocol-independent (Winsock)      |
 |                                                |
 +------------------------------------------------+
 |  Service provider per TCP/IP                   |
 +------------------------------------------------+
                         |
user mode                | I/O (IOCTL)
-------------------------|--------------------------
kernel mode              V
              +--------------------+
              |  \Device\Afd       |
 +------------+--------------------+--------------+
 |                                                |
 |  Filesystem delle socket (AFD)                 |
 |                                                |
 +------------------------------------------------+
                         |
                         | I/O
                         V
              +--------------------+
              |  \Device\Tcp,      |
              |  \Device\Udp,      |
              |  \Device\RawIp,    |
              |  ecc.              |
 +------------+--------------------+--------------+
 |  TDI (Transport Device Interface)              |
 +------------------------------------------------+
 |                                                |
 |  Driver TCP/IP                                 |
 |                                                |
 +------------------------------------------------+
                         |
                         | Chiamate dirette
                         V
 +------------------------------------------------+
 |                                                |
 |  NDIS ("port")                                 |
 |                                                |
 +------------------------------------------------+
 |  Driver interfaccia  di rete ("miniport")      |
 +------------------------------------------------+

Più in giù di così c'è, ovviamente, solo l'hardware. Il kernel non figura perchè fa solo da tramite in qualità di I/O manager

In generale: uno stack del genere è obbligatorio (in particolare, NDIS è inaccessibile tramite I/O - anche per inviare frame nudi serve un driver protocollo). Solo un driver TDI può spedire _frame_ via NDIS (non necessariamente, ma vogliamo strettamente rimanere nell'ambito dello stack di rete), solo un client TDI (come AFD) può spedire _pacchetti_ via TDI e un client TDI viene normalmente acceduto tramite un'interfaccia ad IOCTL, che per comodità sarà normalmente un service provider per Winsock. Perchè ho parlato di frame e pacchetti e non di dati? perchè, ovviamente, non dobbiamo conoscere il formato nè degli uni, nè degli altri: TDI e NDIS sono due interfacce protocol-independent, e si occupano di fare tutto l'incapsulamento necessario

A che punto dello stack si trova la limitazione imposta da Windows XP? non ne sono sicuro, ma immagino interamente dentro al driver TCP/IP. Metterla dentro AFD significherebbe che è una limitazione solo per l'user mode, che avrebbe anche senso. Ma non ho Windows XP, quindi non posso nemmeno provare

Come spedire e ricevere frame IP raw senza limitazioni? scrivendo un apposito driver TDI (che non dovrebbe essere difficile, perchè un driver raw IP non deve fare granchè), un client TDI (chè non penso AFD possa essere "convinto" a supportare altro driver che quello TCP/IP di Microsoft) e un provider Winsock per la famiglia di indirizzi AF_INET e il tipo di socket SOCK_RAW. Poi, con sporder, basta spostarla sopra al TCP/IP di Microsoft e verrà scelta al suo posto

E' una rogna, ma se è necessario è possibile





[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005