Á¦ ¸ñ: Windows RPC Interface¿¡¼­ LSD ¹öÆÛ ¿À¹ö·± Ãë¾àÁ¡ ºÐ¼® ¹ßÇ¥ÀÏ: 2003-07-25 Àú ÀÚ: flashsky (flashsky1_at_sina.com) ¹ø ¿ª: vangelis@wowhacker.org ** ¿Í¿ìÇØÄ¿¿¡¼­´Â Çѱۿë Windows 2000°ú XP¿ë exploitÀ» °¢°¢ Á¦ÀÛ ¹× Å×½ºÆ®¸¦ ¿Ï·áÇßÀ¸¸ç, ÀÌ exploitÀº ÀûÀýÇÑ ÆÐÄ¡°¡ ³¡³­ ÈÄ °ø°³ÇÒ ¿¹Á¤ÀÔ´Ï´Ù. Windows 2003 server¿¡ ´ëÇÑ exploitÀº ÀÌ ±ÛÀ» ¿Ã¸®´Â ÇöÀç Å×½ºÆ® ÁßÀÔ´Ï´Ù. ** ¿µ¹®À¸·Î ¹ø¿ªÇÑ »ç¶÷ÀÌ Áß±¹ »ç¶÷ÀÎ °Í °°Àºµ¥, ÀϺκп¡¼­ ÀÌ»óÇÑ °ÍÀÌ À־ ±×³É ¹ø¿ªÇß½À´Ï´Ù. ÀÌ»óÇÑ ºÎºÐÀº ¿ø¹®À» Âü°íÇϽñ⠹ٶø´Ï´Ù. ---------------------------------------------------------------------- ¼­¹® ÀÌ ±ÛÀº flashsky¶ó´Â Áß±¹ º¸¾È±×·ìÀÇ ¸â¹ö°¡ ÀÛ¼ºÇÑ "Windows RPC Interface¿¡¼­ LSD ¹öÆÛ ¿À¹ö·± Ãë¾àÁ¡ ºÐ¼®"À̶ó´Â ±ÛÀ» ÆíÁý ¹× ¹ø¿ªÇß´Ù. 2003³â 7¿ù 16ÀÏ LSD´Â Microsoft ¿î¿µ ü°èÀÇ ¸ðµç ÃÖ±Ù ¹öÀü¿¡¼­ Áß¿äÇÑ º¸¾È Ãë¾àÁ¡À» ¹ß°ßÇß´Ù°í ¹ßÇ¥Çß´Ù. ±× Ãë¾àÁ¡Àº Windows NT 4.0, Windows 2000, Windows XP ¹× Windows 2003 Server¸¦ µðÆúÆ®·Î ¼³Ä¡ÇßÀ» °æ¿ì ¹ß»ýÇÑ´Ù. ÇÏÁö¸¸, LSD Ãø¿¡¼­´Â exploit Äڵ峪 ±â¼úÀû ¼¼ºÎ »çÇ׿¡ ´ëÇؼ­´Â ¹ßÇ¥ÇÏÁö ¾Ê¾Ò´Ù. Áß±¹ÀÇ º¸¾È ±×·ìÀÎ Xfocus´Â LSD°¡ ¹ßÇ¥ÇÑ °Í¿¡ ´ëÇØ ¿¬±¸ÇÏ´Ù°¡ "Microsoft Windows 2000 RPC DCOM Interface DOS ¹× ±ÇÇÑ »ó½Â Ãë¾àÁ¡"À» ¹ß°ßÇß°í, LSD°¡ ¹ßÇ¥ÇÑ Ãë¾àÁ¡ÀÇ ÀÌÀ¯¸¦ ¾Ë°Ô µÇ¾ú´Ù. ºÐ¼® »ç½Ç MS03-026´Â µÎ °¡Áö Ãë¾àÁ¡À» ÇØ°áÇߴµ¥, Çϳª´Â ·ÎÄà ½ºÅà ¿À¹öÇ÷ο쿴°í, ´Ù¸¥ Çϳª´Â ¿ø°Ý ½ºÅà ¿À¹öÇ÷οìÀÌ´Ù. ÀÌ µÎ Ãë¾àÁ¡Àº °°Àº ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ ¹ß»ýÇϸç, ºÎÀûÀýÇÑ API´Â ´ÙÀ½°ú °°´Ù. HRESULT CoGetInstanceFromFile( COSERVERINFO * pServerInfo, CLSID * pclsid, IUnknown * punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR * szName, ULONG cmq, MULTI_QI * rgmqResults ); ¿©¼¸¹ø° ÆĶó¹ÌÅÍ´Â szNameÀε¥, MSDN¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¸»ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½À» ÀÌ¿ëÇØ ¿ÀºêÁ§Æ®¸¦ ÃʱâÈ­Çϱâ À§ÇÑ ÆÄÀÏÀÌ´Ù. IPersistFile::Load. ÀÌ°ÍÀº NULLÀÌ ¾Æ´Ò ¼ö ÀÖ´Ù. ÀÌ ÆĶó¹ÌÅÍ´Â ¹öÆÛ ¿À¹öÇÃ·Î¿ì °á°ú°¡ ³ª¿Â´Ù. hr = CoGetInstanceFromFile(pServerInfo,NULL,0,CLSCTX_REMOTE_SERVER,STGM_READWRITE,L" C:\\1234561111111111111111111111111.doc",1,&qi); ÆÄÀϸíÀÌ ³Ê¹« ±æ ¶§ Windows´Â ·ÎÄà ¹öÆÛ ¿À¹öÇ÷ο츦 ¸¸µå´Âµ¥, RPCSSÀÇ GetPathForServer ÇÔ¼ö°¡ ´ÜÁö 0x220ÀÇ °ø°£¸¸ÀÌ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ API°¡ ·ÎÄû󿡼­ ¸ÕÀú ±× ÆÄÀÏÀ» üũÇÏ°í, ±×¸®°í ÆÄÀϸíÀÌ 0x220º¸´Ù ´õ ±ä ÆÄÀÏÀ» ¸¸µé ¼ö´Â ¾ø´Ù. ±×·¡¼­ exploitÇϱâ À§ÇØ ÀÌ API¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. ÇÏÁö¸¸ ¿ì¸®´Â ÆÐŶÀ» ¸¸µé¾î LPCÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ ±Û¿¡¼­´Â ´ÜÁö ¿ø°Ý ½ºÅà ¿À¹öÇ÷ο쿡 ÃÊÁ¡À» ¸ÂÃá´Ù. Ŭ¶óÀ̾ðÆ®°¡ ¼­¹ö¿¡ ÆĶó¹ÌÅ͸¦ Àü¼ÛÇÑ ÈÄ ¼­¹ö´Â ±×°ÍÀ» ´ÙÀ½°ú °°ÀÌ Æ÷¸ËÇϱâ À§ÇØ ±×°ÍÀ» ´ÙÀ½°ú °°ÀÌ ¿Å±ä´Ù. L¡°\\servername\c$\1234561111111111111111111111111.doc" ±×·± ´ÙÀ½ ¼­¹ö´Â ¸ÕÀú servernameÀ» ±¸ÇÑ´Ù. ÇÏÁö¸¸ ¿©±â¼­ ¹®Á¦°¡ Àִµ¥, Windows´Â ±× ÆĶó¹ÌÅ͸¦ Á¡°ËÇÏÁö ¾Ê°í, ´ÜÁö 0x20ÀÇ ½ºÅÃÀ» ÇÒ´çÇÑ´Ù. 0x20Àº NETBIOS ¸íÀÇ ÃÖ´ë ±æÀÌÀÌ´Ù. ±×·¡¼­ ¹öÆÛ ¿À¹öÇ÷ο찡 ¹ß»ýÇÑ´Ù. ÁÖ ÄÚµå´Â ´ÙÀ½°ú °°´Ù. GetPathForServer£º .text:761543DA push ebp .text:761543DB mov ebp, esp .text:761543DD sub esp, 20h <-----±æÀÌ°¡ ´ÜÁö 0x20ÀÓ .text:761543E0 mov eax, [ebp+arg_4] .text:761543E3 push ebx .text:761543E4 push esi .text:761543E5 mov esi, [ebp+hMem] .text:761543E8 push edi .text:761543E9 push 5Ch .text:761543EB pop ebx .text:761543EC mov [eax], esi .text:761543EE cmp [esi], bx .text:761543F1 mov edi, esi .text:761543F3 jnz loc_761544BF .text:761543F9 cmp [esi+2], bx .text:761543FD jnz loc_761544BF .text:76154403 lea eax, [ebp+String1] <-----------servername £¬À» À§Ä¡½ÃÅ°±â À§ÇÑ addr; ´ÜÁö 0x20ÀÇ ±æÀ̸¦ °¡Áü .text:76154406 push 0 .text:76154408 push eax .text:76154409 push esi ¡´---------ÆÄÀϸíÀÇ ÆĶó¹ÌÅÍ .text:7615440A call GetMachineName ¡£¡£¡£¡£¡£¡£¡£¡£¡£ 2290;¡£¡£¡£¡£¡£¡£¡£¡£¡£ ;¡£¡£¡£¡£¡£¡£¡£ ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§ ¹öÆÛ ¿À¹öÇ÷ο찡 ¹ß»ýÇÑ´Ù. GetMachineName: .text:7614DB6F mov eax, [ebp+arg_0] .text:7614DB72 mov ecx, [ebp+arg_4] .text:7614DB75 lea edx, [eax+4] .text:7614DB78 mov ax, [eax+4] .text:7614DB7C cmp ax, 5Ch ¡´-------- 0X5CÀÎÁö üũÇÏ°í, ¸¸¾à ±×·¸´Ù¸é servernameÀº ¿À¹öµÇ°í .text:7614DB80 jz short loc_7614DB93 .text:7614DB82 sub edx, ecx .text:7614DB84 .text:7614DB84 loc_7614DB84: ; CODE XREF: sub_7614DA19+178_j .text:7614DB84 mov [ecx], ax ¡´------addr¿¡ servernameÀ» ¾²°í, ¸¸¾à 0x20º¸´Ù ´õ ±æ¸é ¹öÆÛ ¿À¹öÇ÷ο찡 ¹ß»ý .text:7614DB87 inc ecx .text:7614DB88 inc ecx .text:7614DB89 mov ax, [ecx+edx] .text:7614DB8D cmp ax, 5Ch .text:7614DB91 jnz short loc_7614DB84 .text:7614DB93 ÀÌÁ¦ ¿ì¸®´Â ¹®Á¦¸¦ ã¾Ò°í, ±× ¹®Á¦¸¦ exploitÇÒ ¼ö ÀÖ´Ù. À¯ÀÏÇÑ ¹®Á¦´Â "\\servername"ÀÌ ½Ã½ºÅÛ¿¡ ÀÇÇØ À̸§ÀÌ ºÙ´Â´Ù´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ¿ì¸®´Â Á¶ÀÛµÈ ¸Þ¼¼Áö¸¦ º¸³»¹Ç·Î½á ±×°ÍÀ» Á¶ÀÛÇÒ ¼ö ÀÖ´Ù. ÇÔ¼ö GetMachineNameÀÌ ½©Äڵ忡 ÀÖ´Â "0x5c"¸¦ üũÇϱ⠶§¹®¿¡ "0x5c"¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. Exploit 1¡¢ ´ÙÀ½ exploit´Â jump(FF E4)Çϱâ À§ÇØ JMP ESP¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ±×·¡¼­ ¿ì¸®´Â ´Ù¸¥ Windows ¹öÀüÀÇ ÁÖ¼Ò¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. 2¡¢½©ÄÚµå´Â reverseµÈ £¬¸¦ ¿¬°áÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ¿ì¸®´Â ¸ÕÀú "nc -l -p XXX"¸¦ ½ÇÇàÇÑ´Ù. 3¡¢½©ÄÚµåÀÇ ±æÀÌ´Â sizeof(shellcode)%16=12À̾î¾ß ÇÑ´Ù. ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é 0x90À¸·Î ä¿ì°í ¶Ç´Â RPCÀÇ ÆÐŶ Æ÷¸ËÀº ¹®Á¦°¡ ÀÖÀ» °ÍÀÌ´Ù. 4¡¢ ¹öÆÛ ¿À¹öÇ÷ο츮ÅÏÇϱâ Àü¿¡ ¸®ÅÏ ¾îµå·¹½º ´ÙÀ½¿¡ ÀÖ´Â 2 °³ÀÇ ÆĶó¹ÌÅÍ°¡ »ç¿ëµÉ ÇÊ¿ä°¡ ÀÖ´Ù. ±×·¡¼­ ¿ì¸®´Â ÀÌ ¾îµå·¹½º°¡ ¾²¿©Áöµµ·Ï ÇؾßÇÑ´Ù. 5¡¢ exploit´Â JMP ESP¸¦ »ç¿ëÇϴµ¥, ¿ì¸®´Â SEH¸¦ ¿À¹ö·¹ÀÌ(overlay)ÇÔÀ¸·Î½á exploitÇÒ ¼ö ÀÖ´Ù. ---------------------------------------------------------------------- °ø°Ý ÄÚµå ÀÓÀÇ »èÁ¦ ====================================================================== About XFOCUS.ORG