1186
Sítě / Re:Jsem připojená k síti (wifi), ale intertnet nejde
« kdy: 06. 03. 2018, 11:23:56 »
Ještě jeden krajně neužitečný přípodotek:
Pro výrobce 3rd-party firewallů a jiných síťových vychytávek (např. libPCAP, MS virtual WiFi) pod Windows existuje doporučený zdvořilý způsob, jak si do systému zavěsit "fitrující mezivrstvu" do síťového stacku. Našel jsem pro to názvy "NDIS filter driver" nebo "NDIS intermediate driver" - netuším, zda se jedná o synonyma, nebo dvě různé evoluční varianty, nebo úplně jiné věci. (V případě Windows Vista se bavíme o ovladačích dle standardu NDIS 6.)
I pídil jsem se po možnosti, jak vypsat nainstalované takové drivery. Našel jsem zmínky o "fltmc" (standardní součást Win7+, nevím jak Vista) ale ten zřejmě vypisuje jenom filter drivery ve storage subsystému (v oblasti souborových systémů). Nějaké síťové filter drivery jsou vidět ve "vlastnostech adaptéru" (GUI) - netuším zda striktně všechny, nebo třeba jenom moderní a slušně vychované... analogicky podle situace v oblasti driverů obecně, kde staré "NTDM" drivery často nemají ikonku v device manageru, a modernější slušně vychované WDM/WDK drivery obvykle ano.
Taky jsem zkoušel hledat v regeditu, a našel jsem u konkrétního síťového adaptéru větev Linkage a v ní položku FilterList, což je textový seznam odkazů na jakési GUIDy... které jsem dohledal někam do podvětví HKLM\SYSTEM\CurrentControlSet\Control\Network\{4d36e974-e325-11ce-bfc1-08002be10318}. Všude samé GUIDy. Nemám rád GUIDy. Zkoušel jsem brouzdat nápovědou netsh a netcfg, jestli by nebyl lidský seznam, ale kde nic tu nic.
Ze širšího nadhledu: filter drivery nejsou příliš odlišné od standardních driverů pro fyzický hardware. Všechny žijí v kernelu, a zdvořile se zavěšují do NDIS API. Všimněte si, že Microsoftí vlastní firewall v seznamu "filter driverů" nenajdete. Někdo tady káže vodu a pije víno :-) Bodejť ne, když si především sami napsali celý NDIS framework - zdvořile se zavádět a standardně se představit musí všichni *ostatní* :-) Tj. všichni ostatní zdvořilí.
Zdvořilý malware je hloupý a trapný. Skutečný malware bydlí v kernelu a háčkuje kernel API. Klasika jsou kejkle s tabulkou procesů, ale i pro nás by se určitě našla nějaká tabulka symbolů v síťovém stacku nebo nějaká příhodná tabulka NDIS callbacků apod. Čili trochu šikovný malware je na úrovni MS firewallu, může se snažit ho vyšachovat apod. V seznamu zdvořilých NDIS driverů potažmo šikovný malware není vidět. Jakmile jednou dostanete svůj driver do kernelu, můžete téměř všecko.
Další možný "vektor útoku" je tradičně v user space - tradičně výměnou/zaháčkováním winsock2.dll (nebo jak se ta knihovna dneska jmenuje). Jakákoli user-space aplikace, která jede přes sockety (včetně raw socketů? včetně ICMP utilit?) musí skrz winsock.dll. Pokud hijacknete winsock.dll, držíte v hrsti prakticky všechny síťoviny v user space, a nemusel jste ani prosadit svůj driver do kernelu. V cestě Vám stálo "jenom" user-space UAC. Existují legitimní softwarové balíky, které tohle dělají - tradičně socks proxy. Obecně háčkovat DLL (prakticky celé WinAPI) umí třeba APImonitor. Logicky malware útočící na winsock.dll toto nebude nikde roztrubovat. Navíc v případě háčkování winsock.dll ani nevím o možnosti, jak toto udělat "zdvořile" = podle mého admin ani nemá kam se podívat po nějakém seznamu zavěšených procesů/knihoven třetích stran.
Další věc je, že jak malware, tak antiviráky (a zejm. jejich uninstalátory) oplývají bugy. Takže pokud je "rootnutý firewall", obecně není vyloučen efekt "když vypnu firewall, umře síť úplně".
A pak mám několik zkušeností, kdy jsem hledal "copak nám to zase žere procesor" nebo "copak nám to štrachá na disku" a zjistil jsem "jo aha, ona je to jakási inovativní USB-over-IP serviska, součást podpory WiDI, standardní součást Windows" nebo "aha, Microsoft malware protection engine" . Což je ještě dobrá varianta, protože se jedná v rámci možností o slušně vychovaný software, který svoji "spotřebu" nemaskuje v resmonu apod.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-intermediate-drivers
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-filter-drivers
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/_netvista/
https://serverfault.com/questions/336630/is-there-a-quick-way-to-see-what-filesystem-filter-drivers-are-loaded-on-windows
https://support.kaspersky.com/us/5922
http://www.rohitab.com/apimonitor
Pro výrobce 3rd-party firewallů a jiných síťových vychytávek (např. libPCAP, MS virtual WiFi) pod Windows existuje doporučený zdvořilý způsob, jak si do systému zavěsit "fitrující mezivrstvu" do síťového stacku. Našel jsem pro to názvy "NDIS filter driver" nebo "NDIS intermediate driver" - netuším, zda se jedná o synonyma, nebo dvě různé evoluční varianty, nebo úplně jiné věci. (V případě Windows Vista se bavíme o ovladačích dle standardu NDIS 6.)
I pídil jsem se po možnosti, jak vypsat nainstalované takové drivery. Našel jsem zmínky o "fltmc" (standardní součást Win7+, nevím jak Vista) ale ten zřejmě vypisuje jenom filter drivery ve storage subsystému (v oblasti souborových systémů). Nějaké síťové filter drivery jsou vidět ve "vlastnostech adaptéru" (GUI) - netuším zda striktně všechny, nebo třeba jenom moderní a slušně vychované... analogicky podle situace v oblasti driverů obecně, kde staré "NTDM" drivery často nemají ikonku v device manageru, a modernější slušně vychované WDM/WDK drivery obvykle ano.
Taky jsem zkoušel hledat v regeditu, a našel jsem u konkrétního síťového adaptéru větev Linkage a v ní položku FilterList, což je textový seznam odkazů na jakési GUIDy... které jsem dohledal někam do podvětví HKLM\SYSTEM\CurrentControlSet\Control\Network\{4d36e974-e325-11ce-bfc1-08002be10318}. Všude samé GUIDy. Nemám rád GUIDy. Zkoušel jsem brouzdat nápovědou netsh a netcfg, jestli by nebyl lidský seznam, ale kde nic tu nic.
Ze širšího nadhledu: filter drivery nejsou příliš odlišné od standardních driverů pro fyzický hardware. Všechny žijí v kernelu, a zdvořile se zavěšují do NDIS API. Všimněte si, že Microsoftí vlastní firewall v seznamu "filter driverů" nenajdete. Někdo tady káže vodu a pije víno :-) Bodejť ne, když si především sami napsali celý NDIS framework - zdvořile se zavádět a standardně se představit musí všichni *ostatní* :-) Tj. všichni ostatní zdvořilí.
Zdvořilý malware je hloupý a trapný. Skutečný malware bydlí v kernelu a háčkuje kernel API. Klasika jsou kejkle s tabulkou procesů, ale i pro nás by se určitě našla nějaká tabulka symbolů v síťovém stacku nebo nějaká příhodná tabulka NDIS callbacků apod. Čili trochu šikovný malware je na úrovni MS firewallu, může se snažit ho vyšachovat apod. V seznamu zdvořilých NDIS driverů potažmo šikovný malware není vidět. Jakmile jednou dostanete svůj driver do kernelu, můžete téměř všecko.
Další možný "vektor útoku" je tradičně v user space - tradičně výměnou/zaháčkováním winsock2.dll (nebo jak se ta knihovna dneska jmenuje). Jakákoli user-space aplikace, která jede přes sockety (včetně raw socketů? včetně ICMP utilit?) musí skrz winsock.dll. Pokud hijacknete winsock.dll, držíte v hrsti prakticky všechny síťoviny v user space, a nemusel jste ani prosadit svůj driver do kernelu. V cestě Vám stálo "jenom" user-space UAC. Existují legitimní softwarové balíky, které tohle dělají - tradičně socks proxy. Obecně háčkovat DLL (prakticky celé WinAPI) umí třeba APImonitor. Logicky malware útočící na winsock.dll toto nebude nikde roztrubovat. Navíc v případě háčkování winsock.dll ani nevím o možnosti, jak toto udělat "zdvořile" = podle mého admin ani nemá kam se podívat po nějakém seznamu zavěšených procesů/knihoven třetích stran.
Další věc je, že jak malware, tak antiviráky (a zejm. jejich uninstalátory) oplývají bugy. Takže pokud je "rootnutý firewall", obecně není vyloučen efekt "když vypnu firewall, umře síť úplně".
A pak mám několik zkušeností, kdy jsem hledal "copak nám to zase žere procesor" nebo "copak nám to štrachá na disku" a zjistil jsem "jo aha, ona je to jakási inovativní USB-over-IP serviska, součást podpory WiDI, standardní součást Windows" nebo "aha, Microsoft malware protection engine" . Což je ještě dobrá varianta, protože se jedná v rámci možností o slušně vychovaný software, který svoji "spotřebu" nemaskuje v resmonu apod.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-intermediate-drivers
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-filter-drivers
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/_netvista/
https://serverfault.com/questions/336630/is-there-a-quick-way-to-see-what-filesystem-filter-drivers-are-loaded-on-windows
https://support.kaspersky.com/us/5922
http://www.rohitab.com/apimonitor