Можно перехватывать на разных уровнях, разными методами. Вот почитай: http://www.vigilantminds.com/files/defeating_windows_personal_firewall s.pdf
Обычно нормальные фарики ставять, как сказал FreeManCPM, драйвер фильтр где-то между канальным уровнем и сетевым (ни разу не видел, когда фаервол работал бы напрямую с физическим уровнем). И все пакетики, хочешь-нехочешь проходят через него. А он уже решает что с ними делать.
На sourceforge поищи исходники фаерволов. Также посмотри исходники Open VPN. Ну и конечно же, читай DDK.
Начиная с Windows 2000 можно фильтровать на уровне приложения с помощью PfCreateInterface, PfAddFiltersToInterface и PfBindInterfaceToIPAddress. Подробная информация на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/ rras/packet_filtering_reference.asp