Ãâó´Â http://www.realattack.com/shellcode.html ÀÔ´Ï´Ù. RealAttack's Security Alert -------------------------------------------------------------------------------- ÀÌ ¹®¼­´Â IDS ( ħÀÔŽÁö ½Ã½ºÅÛ)µéÀÌ stack overflow °ø°ÝµîÀ» °¨ÁöÇϴµ¥ À־ ÁÖµÈ ¹æ¹ýÀÌ ¾ó¸¶³ª ½±°Ô ÇÇÇØÁú¼ö Àִ°¡¸¦ º¸¿©ÁÖ´Â °ÍÀÌ´Ù. ÀÌ ¹®¼­´Â x86 ½Ã½ºÅÛÀ» ¿¹·Î º¸¿©ÁذÍÀÌ´Ù. (´©°¡ sparc °°Àº°Å ³²´Â°Å ÀÖÀ¸¸é ¿¬¶ô¹Ù¶õ´Ù.) À̰ÍÀº ¾Æ¸¶µµ ÃÖ±ÙÀÇ º¸¾È °ü·Ã ÄÁÆÛ·±½ºÀÇ k2 ¶ó´Â°Í°ú ÀÏ¸Æ »óÅëÇÒ °ÍÀÌ´Ù. À̰Ϳ¡ °üÇÑ Á¤º¸´Â ¿©±â ¸¦ Âü°í Çϱ⠹ٶõ´Ù. ÀÌ ¹®¼­ÀÇ ÀúÀÛ±ÇÀº RealAttack¿¡ ÀÖÀ½À» ¾Ë·Áµå¸®¸ç µ¿ÀǾøÀÌ À¯Æ÷, º¹»ç, Àοë ÇÒ¼ö ¾øÀ½À» ¾Ë·Áµå¸³´Ï´Ù. -------------------------------------------------------------------------------- 1. ¹è °æ ÇØÅ· ¹æ¹ýÀÇ ¸¹Àº À¯ÇüÁß¿¡¼­ stack overflow, format string attack µîÀÇ ±Ã±ØÀûÀÎ ¸ñÀûÀº °ø°ÝÀÚ°¡ ¿øÇÏ´Â ±â°è¾î Äڵ带 Áý¾î³Ö´Â °ÍÀÌ´Ù. ±× Áß¿¡¼­µµ ƯÈ÷ °¡Àå ¸¹ÀÌ ¾Ö¿ëµÇ´Â °ÍÀÌ shell À» ¶Ù¿ì´Â °ÍÀÏ °ÍÀÌ´Ù. ±×·¸±â ¶§¹®¿¡ IDS µé ƯÈ÷ NIDS µéÀº Áö³ª°¡´Â ÆÐŶÀ» º¸¸é¼­ ƯÁ¤ÇÑ µ¥ÀÌÅ͸¦ º¸¸é À̰ÍÀº ¾î¶°ÇÑ Æ¯¼ö ¸ñÀûÀ» ¼öÇàÇϱâ À§ÇÑ code ÀÇ ÀϺηΠº¸°ÔµÈ´Ù. 2. Shell CodeÀÇ ´ë·«ÀûÀÎ ±¸¼º ( x86 ) x86 ½© ÄÚµåÀÇ ´ë·«ÀûÀÎ ±¸¼ºÀº ÃÖÃÊ·Î À̰ÍÀ» °øÇ¥ÇÑ Aleph One ÀÇ Phrack 49 Smasing The Stack For Fun And Profit À» ±âÁØÀ¸·Î ÇÑ´Ù°í ÇØµµ ¹«¹æÇÏ´Ù. À̰Ϳ¡ ´ëÇØ Àß ¸ð¸£´Â ºÐÀº ÀÏ´Ü ¿©±â¸¦ Âü°íÇϱ⠹ٶõ´Ù. À̰÷À» Ŭ¸¯ ÀÎÅͳݿ¡¼­ °Ë»ö¿£ÁøÀ» ÀÌ¿ëÇØ¼­ Çѱ۷Π¹ø¿ªÇسõÀº °ÍÀ» ãÀº°Í ÀÔ´Ï´Ù. ½© ÄÚµåÀÇ ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù. NOP JMP exec ÄÚµå call /bin/sh ( ¶Ù¿ì·Á´Â ½©ÀÇ ÆÐ½º(path) ) À̶§ ÁÖ·Î IDS µéÀÌ Å½ÁöÇÏ´Â °ÍÀº NOP , call µîÀÌ´Ù. 3. NOP ÀÇ ÀÌÇØ NOP À̶ó´Â °Í¿¡ ´ëÇØ¼­ °£´ÜÈ÷ ¾Ë¾Æº¸ÀÚ. NOP ÀÇ ¿ªÇÒÀº ÇѸ¶µð·Î ºñ¾îÀÖ´Â stack À» ä¿ö¼­ ³ÑÄ¡°Ô ÇÏ´Â ¿ªÇÒÀ» ÇÏ´Â ÀÏÀ» ¸ÃÀº ±â°è¾î ÄÚµå ÀÌ´Ù. ±×·±µ¥ NOP ¿¡¼­ Áß¿äÇÑÁ¡ Çϳª¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÏ´Ü Return Address ¿¡ ÀÇÇØ µ¹¾Æ¿Ã¶§ ¸Å¿ì Á¤È®È÷ Return Address ¸¦ Á¤ÇÑ´Ù¸é ¸ð¸¦±î NOP À¸·Î ä¿öÁø ¹öÆÛ ÇѰ¡¿îµ¥ ¾îµò°¡·Î µ¹¾Æ°¡°Ô µÉ È®·üÀÌ ³ô´Ù. ±×·±µ¥ ¸¸¾à 3byte Å©±â¸¦ °¡Áø ¸í·É¾îÀÇ 2¹øÂ° ¹ÙÀÌÆ®·Î ¸®ÅÏ ¾îµå·¹½º°¡ Á¤ÇØÁø´Ù¸é ¾î¶»°Ô µÉ±î? ´ç¿¬È÷ ¿¡·¯¸¦ ³»¸é¼­ ³¡³ª ¹ö¸°´Ù. ±×·¸±â ¶§¹®¿¡ 1 byte Å©±â¸¦ °¡Áø ¸í·É¾î°¡ ÇÊ¿äÇÏ´Ù. ±×·±µ¥ À̸í·É¾î´Â º° ´Ù¸¥ ÀÏÀ» ¾ÈÇÏ´Â ´Ü¼øÈ÷ ¾µµ¥ ¾ø´Â ¸í·É¾î À̾î¾ß ÇÑ´Ù. ±×ÁßÀÇ Çϳª°¡ 0x90 ÀÌ´Ù. ¾Æ¸¶ ¿©·¯ºÐÀÌ ÇØÅ· ÇÁ·Î±×·¥À» º¸¸é °ÅÀÇ´Ù 0x90 À» NOP ÄÚµå·Î ¾²°í ÀÖ´Ù. ±×·¡¼­ snort ÀÇ ¿¹¸¦ º¸¸é ÀÏÁ¤¼ö ÀÌ»óÀÇ 0x90 À» ÆÐŶ¿¡¼­ º¸¸é À̰ÍÀ» overflow °ø°ÝÀÇ ½ÅÈ£·Î º»´Ù. 4. NOP À» ÇÇÇØº¸ÀÚ. ÀÏ´Ü ¿ì¸®´Â µÎ°¡Áö¿¡ Æ÷ÀÎÆ®¸¦ ÀâÀÚ. ¸ÕÀú NOP Àº 1byte ±æÀÌÀÇ ¸í·É¾î°¡ ÁÁ°í(²À 1byteÀÏ ÇÊ¿ä´Â ¾ø´Ù.) ¶ÇÇÑ º°ÀÏ ¾ÈÇÏ´Â ±×·± ¾µµ¥ ¾ø´Â°ÍÀ» ã¾Æ¾ß ÇÑ´Ù. ÀÏ´Ü x86 ¸í·É¾î ¼¼Æ®°¡ ³ª¿Â ÀڷḦ ±¸ÇÏÀÚ. °Å±â¼­ ±æÀ̰¡ 1byteÀÎ ¸í·É¾î¸¦ ã¾Æº¸ÀÚ. ¸î°³ ³ª¿Â´Ù. ±×Áß¿¡¼­ Å×½ºÆ®ÇØ º¸¾Æ¼­ °¡Àå ¾ÈÁ¤ÀûÀΰÍÀº 0x2f ¿´´Ù. À̰ÍÀº Phrack 49¿¡¼­ ³ª¿Â°ÍÀÇ Äڵ带 ¹Ù²Ù¾î¼­ ·ÎÄÿ¡¼­ Å×½ºÆ® ÇØº¸¾Ò´Ù. ÀÌÁ¦ ¿ì¸®´Â ÇØÅ· ÇÁ·Î±×·¥ÀÇ #define NOP 0x90 À» #define NOP 0x2f ·Î º¯°æÇÔÀ¸·Î¼­ ÀÏ´Ü NOP À» ŽÁöÇÏ´Â ºÎºÐÀ» ÇÇÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù. ²À 1byteÀÏ ÇÊ¿ä´Â ¾ø´Ù. stack ÀÇ ±¸Á¶¸¦ Á¤È®È÷ ¿¹ÃøÇϰí Àû¿ëÇÒ¼ö ÀÖ´Ù¸é ±×¿ÜÀÇ ´Ù¸¥ ¸í·É¾îµµ °¡´ÉÇÏ´Ù. 5. Call À» ÇÇÇÏÀÚ. x86 ÀÇ ½© Äڵ忡¼­ ¸¶Áö¸·À» º¸¸é "\xe8\xdc\xff\xff\xff/bin/sh" À̶ó´Â ºÎºÐÀ» º¼¼ö ÀÖÀ» °ÍÀÌ´Ù. Àú±â¼­ e8 ºÎºÐÀÌ call À» ÀǹÌÇÏ¸ç µÚÀÇ 4byte dc ff ff ff ´Â ÇöÀç À§Ä¡¿¡¼­ÀÇ »ó´ëÀûÀÎ ¿ÀÇÁ¼ÂÀ» ÀǹÌÇÑ´Ù. ¾ÕÀÇ °æ¿ì´Â Phrack 49ÀÇ °æ¿ìÀ̰í ÀÎÅͳݿ¡¼­ ãÀº qpopper °ø°Ý ÇÁ·Î±×·¥ÀÇ °æ¿ì´Â e8 d9 ff ff ff /bin/sh À̾ú´Ù. ¿©±â¼­ Áß¿äÇÑ °ÍÀº e8 µÚÀÇ ¼ýÀÚ´Â »ó´ëÀûÀÎ ½©ÄÚµåÀÇ Å©±â¿¡ ÀÇÁ¸ÇÑ °ÍÀÌ´Ù. snort ÀÇ qpopper °ü·Ã ·êÀº ±×·¡¼­ e8 d9 ff ff ff /bin/sh À» ±× °ø°Ý signature ·Î º¸°í ÀÖ´Ù. ÈÄ À̰ͶÇÇÑ °£´ÜÈ÷ ÇÇÇÒ¼ö ÀÖ´Ù. ½©ÄÚµåÀÇ Áß°£¿¡ ¹°·Ð ¸í·É¾î¸¦ ÀÌ·ç´Â ¹ÙÀÌÆ® Áß°£ÀÌ ¾Æ´Ñ ÇÑ´ÜÀ§ ¸í·É¾î°¡ ³¡³­ »çÀÌ¿¡ 0x90 À» Çϳª ³Ö°í d9 ¶ó´Â offset À» Á¶Á¤ÇØÁÖ¸é µÈ´Ù. Phrack 49 ÀÇ ¿¹Á¦¿¡¼­ ³ª¿Â ½©ÄÚµå Áß°£¿¡ NOP À» ³Ö°í e8 db ff ff ff /bin/sh ·Î Å×½ºÆ®Çؼ­ ¼º°øÇß´Ù. ¸®¸ðÆ®ÀÇ °æ¿ì¿¡µµ ¸¶Âù°¡Áö ÀϰÍÀ̶ó°í »ý°¢ÇÑ´Ù. ¹°·Ð ²À Çϳª¸¸ ³ÖÀ» Çʿ䵵 ¾ø´Ù. ¿©·¯°³ ³Ö°í ±×¿¡ ¸ÂÃß¾î offset Àº Á¶Àý¸¸ ÇØÁÖ¸é µÈ´Ù. 6. Æò°¡ ±âŸ ºÎºÐÀÇ °æ¿ì¿¡µµ ¸¶Âù°¡Áö ÀÌ´Ù. ¿¹¸¦ µé¾î exec ºÎºÐÀ» ŽÁöÇÏ´Â ¹æ¹ýÀ» »ý°¢Çغ¸¾Ò´Ù°í ÇØº¸ÀÚ. exec ¸¦ ½ÇÇàÇϱâ À§Çؼ­´Â eax ·¹Áö½ºÅÍ¿¡ 11 ÀÌ µé¾î°¡¾ß Çϰí ebx ¿Í ecx , edx ¿¡´Â ¹®ÀÚ¿­ÀÇ ÁÖ¼Ò³ª ³Î Æ÷ÀÎÅ͸¦ °¡¸£ÄÑ¾ß ÇÑ´Ù. ±×¸®°í int 0x80 ¸í·É¾î°¡ ½ÇÇàµÇ¾î¾ß¸¸ ÇÑ´Ù. ±×·¡¼­ ¾î·´ø ÀÌµé »çÀÌÀÇ nop Äڵ带 °ñ¶ó³»°í ÇØ¼­ ŽÁöÇÒ¼ö ÀÖ´Ù°í ÇØµµ eax ¿¡ 10 À» ³Ö°í ´Ù½Ã 1À» ³Ö´Â´Ù´ÂÁö ¾Æ´Ï¸é ¸ÕÀú 12¸¦ ³Ö°í 1À» »«´Ù´øÁö ¸í·É¾î°¡ 00 À» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é ¾î¶°ÇÑ °Íµµ °¡´ÉÇÏ´Ù. call ¹Ù·Î ´ÙÀ½¿¡ /bin/sh ÀÌ ÀÖ´Ù°í ÀÌ°É signature ·Î ¸¸µå´Â°Íµµ °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ À̰͵µ xxx/bin/sh µîÀ¸·Î Çϰí offset À» Á¶ÀýÇØÁÖ¸é µÈ´Ù. ¾Æ¸¶µµ IDS °¡ ¾î¼Àºí·¯¸¦ žÀçÇØ¾ß µÉÁöµµ ¸ð¸£°Ú´Ù. 7. °á·Ð À̰ÍÀº ¸Å¿ì ÇÑÁ¤µÈ ¿¹ÀÏ »ÓÀÌ´Ù. Script Kid °¡ °ø°ÝÇÏ´Â °ÍÀº ´Ü¼øÇÑ signature ·Îµµ ÃæºÐÈ÷ ŽÁöÇÒ¼ö Àִ°ÍÀÌ °¡´ÉÇÏ´Ù°í »ý°¢µÈ´Ù. ´ëºÎºÐ ÀÎÅͳݿ¡ ÀÖ´Â ÅøÀ» ÀÌ¿ëÇϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ½©Äڵ带 Á÷Á¢ ¸¸µé°í ÀÀ¿ëÇÏ´Â Çâ»óµÈ °ø°ÝÀÚ´Â ´õ¿í ŽÁöÇϱ⠾î·Á¿ï °ÍÀÌ´Ù. °³ÀÎÀûÀ¸·Î´Â IDS°¡ Á» Çã¼úÇÑ ¸éÀÌ ¸¹´Ù°í »ý°¢µÈ´Ù.( °í¿µÁؿР) Written By: °í ¿µ ÁØ , °í ¼º ÁØ , °í ÅÂ ÈÆ , Á¤µ¿¿í