Einführung in IceSword - SPI

Beschreibung
SPI (Service Provider Interface) ist eine Erweiterungsschnittstelle des Winsock 2 Netzwerk-Stacks von Windows.
Was ist der Netzwerk-Stack?
TCP/IP oder einfach nur IP ist die umgangssprachliche Bezeichnung für das "Internet Protokoll". Über diese Protokollfamilie - zu der auch noch UDP, ICMP und verschiedene Hilfsprotokolle gehören - kommunizieren die Rechner im Internet.
NetBIOS oder SMB ist das "Windows Netzwerk" (Dateifreigaben).
Im Betriebssystem sind die Protokolle als "Stack" (IP-Stack, SMB-Stack) implementiert. Die Bezeichnung Stack (Stapel) kommt daher, dass in der Theorie/ Fachliteratur die Netzwerkprotokolle immer als imaginärer Stapel dargestellt werden.
Unter Windows benutzen die Programme eine Betriebssystemfunktion namens "Socket" (auch Winsock genannt) um auf den Stack zuzugreifen.
Der Netzwerk-Stack hat nichts mit dem berüchtigten "Stack Overflow" zu tun. Das ist eine andere Art von Stack.
Um den Netzwerk-Stack von Windows mit eigenen Funktionen zu erweitern - zum Beispiel durch neue Protokolle - gibt es SPI.
SPI-Service Provider können den ein- und ausgehenden Netzwerkverkehr belebig kontrollieren und verändern.
Auf was man achten sollte
Die Protokollnamen sind genauso nichtssagend wie die Namen der DLLs. Windows selbst benutzt SPI, unter anderem für QOS (Quality of Service) und diverse andere Sachen (siehe Bild).
Einige Personal Firewalls (McAfee) benutzen SPI. Schadprogramme benutzen SPI nur selten (die Programmierung ist nicht ganz einfach, und die meisten Malware-Programmierer sind Idioten).
Um Schadprogramme zu finden, muss man jede einzelne DLL überprüfen. Auch hier sind wieder die Digitalen Signaturen der Systemdateien hilfreich. Mit dem Kommandozeilenprogramm Sysinternals Sigcheck kann man den von IceSword angezeigten DLL Path aus dem Beispiel (Bild) einfach abtippen (wenn das Programm sigcheck.exe im Path ist):
C:\>sigcheck %SystemRoot%\system32\msafd.dll
Sigcheck v1.3
Copyright (C) 2004-2006 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\winnt\system32\msafd.dll:
Verified: Signed
Signing date: 13:59 12.05.2005
Publisher: Microsoft Corporation
Description: Microsoft Windows Sockets 2.0 Service Provider
Product: Microsoft(R) Windows (R) 2000 Operating System
Version: 5.00.2195.6602
File version: 5.00.2195.6602
Wenn die DLL keine Digitale Signatur hat, kann man nur versuchen sie über den Namen, Datum oder Dateieigenschaften einem installiertem Programm zuzuordnen. Wobei Schadprogramme immer gerne gefälschte Herstellerangaben führen. Ohne Digitale Signatur kann man die Dateieigenschaften bestenfalls als "Behauptung" nehmen.
Was IceSword nicht findet
Neben der offiziellen SPI-Schnittstelle gibt es noch die Möglichkeit in guter alter Rootkit-Art mit Inline Function Hooks den Stack bzw. Netzwerktreiber zu manipulieren. So funktionieren viele Personal Firewalls. Inline Hooks werden von IceSword nicht angezeigt (außer SSDT Hooks).
Andere Werkzeuge
Sysinternals Sigcheck. Überprüft die in allen Systemdateien eingebetteten digitalen Signaturen.
Sysinternals Autoruns. SPI heißt dort "Winsock Providers". Kann im Gegensatz zu IceSword Digitale Signaturen überprüfen.
Gegen Inline Hooks gibt es diverse Mittelchen. SVV, VICE, ApiHookCheck. Sind aber alle nicht besonders zuverlässig.
Informationen
Unraveling the Mysteries of Writing a Winsock 2 Layered Service Provider. Microsoft




