Ãâó´Â 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: °í ¿µ ÁØ , °í ¼º ÁØ , °í ÅÂ ÈÆ , Á¤µ¿¿í