ÀÌ ¹æ¹ýÀ¸·Î ¿£¾¾¼ÒÇÁÆ®¿¡¼ »ç¿ëÇÏ´Â Ä«¹ÂÁî ÇÁ·Î±×·¥ Ãë¾àÁ¡ ¹ß°ß
[º¸¾È´º½º=À̽ÂÁø GrayHash ¼ö¼®] ÃÖ±Ù PC »ç¿ëÀÚµéÀÌ ´ëºÎºÐ »ç¿ëÇÏ´Â °¢Á¾ ¼ÒÇÁÆ®¿þ¾îÀÇ Á¦·Îµ¥ÀÌ Ãë¾àÁ¡À» ¾Ç¿ëÇÑ º¸¾ÈÀ§ÇùÀÌ ²÷ÀÓ¾øÀÌ ¹ß»ýÇÏ°í ÀÖ´Ù. ÀÌ¿¡ ¿©±â¿¡¼´Â ¡®¹ÙÀ̳ʸ® µðÇÎ(Binary Diffing)¡¯À̶ó´Â ±â¼úÀ» È°¿ëÇØ Á¦·Îµ¥ÀÌ Ãë¾àÁ¡À» ãÀ» ¼ö ÀÖ´Â ±â¹ý¿¡ ´ëÇØ »ìÆ캸µµ·Ï ÇÑ´Ù.
Á¤º¸º¸¾È ºÐ¾ß¿¡¼´Â 2°³ ÀÌ»óÀÇ ¼·Î ´Ù¸¥ Binary¸¦ ºñ±³ÇÏ¿© ºÐ¼®ÇÏ´Â ±â¼úÀ» Binary DiffingÀ̶ó°í ºÎ¸¥´Ù. Binary Diffing ±â¼úÀÌ ½ÇÁ¦ ¾ð´õ±×¶ó¿îµå ÇØÄ¿µé »çÀÌ¿¡ ¾Ë·ÁÁø °ÍÀº ´ë·« 10³â ÀüºÎÅÍ·Î Áö±Ý±îÁö ²ÙÁØÈ÷ ¿¬±¸µÇ°í ÀÖ´Â ºÐ¾ß¶ó°í ÇÒ ¼ö ÀÖ´Ù. ÀÌ ±â¼úÀº Á¤º¸º¸¾È ºÐ¾ßÀÇ ´Ù¾çÇÑ À̽´¸¦ ÇØ°áÇϱâ À§ÇØ »ç¿ëµÇ°í Àִµ¥, Àß ¾Ë·ÁÁø Binary Diffing ±â¼úÀÇ È°¿ëºÐ¾ß´Â ´ÙÀ½°ú °°´Ù.
1. Patch Analysis
Binary DiffingÀº º¸¾È ÆÐÄ¡°¡ Àû¿ëµÇÁö ¾ÊÀº Binary¿Í Àû¿ëµÈ Binary¿ÍÀÇ Â÷ÀÌÁ¡À» ºñ±³(Diffing)ÇØ ÀÌÀü ¹öÀü°ú ºñ±³ÇßÀ» ¶§ ¾î¶² Á¡ÀÌ ´Þ¶óÁ³´ÂÁö ¾Ë¾Æ³»´Â ¸ñÀû¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. °¡·É, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®(MS)´Â ÁÖ±âÀûÀ¸·Î º¸¾È ÆÐÄ¡¸¦ ½Ç½ÃÇϴµ¥ ÆÐÄ¡µÈ Binary¿Í ±×·¸Áö ¾ÊÀº Binary¸¦ ºñ±³ÇÔÀ¸·Î½á, º¸¾È ¹®Á¦Á¡ÀÇ ¿øÀÎÀÌ ¹«¾ùÀÎÁö ºü¸£°í Á¤È®ÇÏ°Ô ¾Ë ¼ö ÀÖ´Ù. ÀÌ·¸µí ÀÌ ¹æ¹ýÀº ÆÐÄ¡ ºÐ¼®À» À§ÇØ º¸¾ÈÀü¹®°¡µé¿¡°Ô ¸¹ÀÌ È°¿ëµÈ´Ù°í º¼ ¼ö ÀÖ´Ù.
2. Identifying Symbols, Platform-independent Difference Analysis
¸®¹ö½º ¿£Áö´Ï¾î(Reverse Engineer)µé¿¡°Ô ¸¹ÀÌ È°¿ëµÇ´Â ºÐ¾ß·Î, Binary Diffing ±â¼úÀ» ÀÌ¿ëÇÏ¸é ½ºÆ®¸³(Strip)µÈ BinaryÀÇ ÇÔ¼ö Á¤º¸¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. ¶ÇÇÑ, ¼·Î ´Ù¸¥ ¾ÆÅ°ÅØó¿¡¼ ÄÄÆÄÀÏµÈ Binary¸¦ ºñ±³ ºÐ¼®ÇØ À¯¿ëÇÑ Á¤º¸¸¦ µµÃâÇس»´Â °Íµµ °¡´ÉÇѵ¥ ´ëÇ¥ÀûÀ¸·Î ARM¿ëÀ¸·Î ÄÄÆÄÀÏµÈ Binary¿Í x86¿ëÀ¸·Î ÄÄÆÄÀÏµÈ Binary¸¦ ºñ±³Çغ¼ ¼ö ÀÖ´Ù. Áï, ¸¹Àº ½Ã°£À» µéÀÌÁö ¾Ê¾Æµµ µðÇÎ(Diffing)À» ÅëÇØ À¯¿ëÇÑ Á¤º¸¸¦ ºñ±³Àû ¼Õ½±°Ô ¾Ë¾Æ³¾ ¼ö Àִµ¥ ÀÌ °æ¿ì ¸®¹ö½Ì(Reversing) ÀÛ¾÷½Ã°£À» ȹ±âÀûÀ¸·Î ´ÜÃà½Ãų ¼ö ÀÖ´Ù.
3. Automatic Malware Detection
´Ù¾çÇÑ º¯Á¾µé·Î ÀÎÇØ ¾Ç¼ºÄÚµå´Â ÇÏ·ç¿¡µµ ¼ö½Ê ¸¸°³ ÀÌ»óÀÌ ½ñ¾ÆÁ® ³ª¿À°í ÀÖ´Ù. ±×·¯³ª »ç½Ç ÀÌ º¯Á¾µéÀº ºñ½ÁÇÑ ¾Ë°í¸®ÁòÀ» ¾²´Â °æ¿ì°¡ ¸¹´Ù. °¡·É, »ùÇÃÀÇ °³¼ö°¡ ¼ö¹é ¸¸°³¿©µµ ÇÙ½É ¾Ë°í¸®ÁòÀº °°À» ¼ö ÀÖ´Ù´Â ¾ê±â´Ù. ¿©±â¼ Binary Diffing ±â¼úÀ» È°¿ëÇÒ °æ¿ì, ¾Ë°í¸®Áò ºñ±³¸¦ ÅëÇØ ¹ÙÀÌ·¯½ºµéÀ» ºÐ·ùÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ±â´ÉÀ» ¼öÇàÇÏ´Â Á¦Ç°Àº ÇöÀç´Â ±¸±Û¿¡ ÀμöµÈ Zynamics »çÀÇ VxClass°¡ ÀÖ´Ù.
4. License Check
¿ÀǼҽº ¶óÀ̼±½º À§¹ÝÀº ´ë±â¾÷µé¿¡°Ôµµ °ñÄ¡°¡ ¾ÆÇ ¹®Á¦´Ù. ÀǵµÀûÀ¸·Î ¶óÀ̼±½º¸¦ À§¹ÝÇÏ·Á´Â °ÍÀÌ ¾Æ´Ï¶ó, °³¹ß½Ã »ç¿ëÇÑ ¶óÀ̼±½º¿¡ ´ëÇÑ Ç¥±â¸¦ ´©¶ôÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ÀϺΠ±â¾÷ÀÇ °æ¿ì ¶óÀ̼±½º À§¹ÝÀ» °Ë»çÇÏ´Â ÇÁ·Î±×·¥ °³¹ßÀ» Áغñ ÁßÀε¥, ÀϹÝÀûÀ¸·Î ÀÌ·± °æ¿ì °³¹ßÆÀ ¼Ò¼ÓÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ¼Ò½ºÄڵ忡 Á¢±ÙÇÒ ¼ö ¾ø´Ù. Áï, Binary ·¹º§¿¡¼ ¸ñÀûÀ» ´Þ¼ºÇØ¾ß Çϴµ¥ Diffing ±â¼úÀ» ÀÌ¿ëÇϸé Binary ·¹º§¿¡¼ ¿ÀǼҽº ¶óÀ̼±½º Äڵ带 °ËÃâÇس¾ ¼ö ÀÖ´Ù.
¾Õ¼ ¼³¸íÇÑ °ÍÀº Binary Diffing ±â¼úÀÌ ±âÁ¸¿¡ È°¿ëµÈ ÄÉÀ̽ºÀ̸ç, ´ÙÀ½¿¡´Â Diffing ±â¼úÀ» È°¿ëÇØ ¼ÒÇÁÆ®¿þ¾î Ãë¾àÁ¡À» ¹ß°ßÇس»´Â ¹æ¹ý¿¡ °üÇÑ °ÍÀÌ´Ù. ±âº» ¿ø¸®´Â ´ÙÀ½°ú °°ÀÌ ´Ü¼øÇÏ´Ù.
¡°Ãë¾àÇÑ ÇÔ¼öÀÇ ÆÐÅÏÀ» ´ë»ó Binary¿¡ ºñ±³ÇÏ¿© À¯»çµµ¸¦ Æò°¡ÇÑ ÈÄ Ãë¾à¼º Á¸Àç¿©ºÎ¸¦ ÆÇ´Ü¡±
Áï, Ãë¾àÁ¡ÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Â À¯ÇüÀÇ ÆÐÅÏÀ̳ª Ãë¾àÁ¡ÀÌ Á¸ÀçÇÑ´Ù°í Áõ¸íµÈ ÇÔ¼ö¸¦, Ãë¾àÁ¡À» ãÀ» Binary¿Í ºñ±³ÇÏ´Â ¹æ½ÄÀ» ÅëÇØ Ãë¾àÁ¡À» ã¾Æ³»ÀÚ´Â °ÍÀÌ´Ù. ±âº»ÀûÀÎ ¾ÆÀ̵ð¾î´Â ´Ü¼øÇÏÁö¸¸ ½ÇÁ¦ Á¦´ë·Î ÀÛµ¿Çϱâ À§Çؼ´Â ÇØ°áÇØ¾ß ÇÏ´Â ¸¹Àº ¹®Á¦Á¡ÀÌ Á¸ÀçÇÑ´Ù. ¸ÕÀú, ÀÌÇظ¦ µ½±â À§ÇØ Binary°¡ ¾Æ´Ñ ¼Ò½ºÄÚµå ·¹º§¿¡¼ºÎÅÍ ¿¹¸¦ µé¾îº¸°Ú´Ù. ´ÙÀ½ 2°³ÀÇ ¼Ò½º¸¦ ºñ±³Çغ¸µµ·Ï ÇÑ´Ù.
- func_1
1: void vuln_sample1(char *str) {
2: char buf[256];
3: strcpy(buf, str);
4: printf(¡°%s¡±, buf);
5: }
- func_2
1: void vuln_sample3(char *str) {
2: char buf[256];
3: printf("test"); // <-- added
4: strcpy(buf, str);
5: printf("%s", buf);
6: }
À§ 2°³ÀÇ ÇÔ¼öµé¿¡´Â strcpy() ÇÔ¼öÀÇ ¿À¿ëÀ¸·Î ÀÎÇØ ÀüÇüÀûÀÎ ½ºÅà ¿À¹öÇ÷οì(Stack Overflow) Ãë¾àÁ¡ÀÌ Á¸ÀçÇÑ´Ù. func_2ÀÇ 3¹ø° ¶óÀο¡´Â func_1¿¡´Â ¾ø´Â printf ÇÔ¼ö°¡ Ãß°¡µÇ¾î ÀÖ´Ù. ÇÔ¼ö Çϳª¸¸ Ãß°¡µÆ±â ¶§¹®¿¡ µÎ ÇÔ¼ö¸¦ ÄÄÆÄÀÏÇÏ¿© ºñ±³Çغ¸¸é Å©°Ô ´Ù¸£Áö ¾Ê´Ù.
½ÇÁ¦·Î Binary Diffing ÇÁ·Î±×·¥ Áß º¸¾È¾÷°è¿¡¼ °¡Àå ¸¹ÀÌ ¾²ÀÌ´Â Zynamics »çÀÇ BinDiff¸¦ ÀÌ¿ëÇÏ¿© ½ÇÇàÇϸé À¯»çµµ Æò°¡ °á°ú°ªÀÌ ³ô´Ù. Áï, ¸¸¾à ¿ì¸®°¡ func_1¿¡ ´ëÇÑ ÆÐÅÏÀ» È®º¸ÇÏ°í ÀÖ´Ù¸é, ¼Ò½ºÄڵ尡 Á¶±ÝÀº ´Ù¸¥ ÇüÅÂÁö¸¸ Ãë¾àÁ¡ÀÌ ¹ß»ýÇÏ´Â ºÎºÐÀº °°´Ù°í ÇÒ ¼ö ÀÖ´Â func_2¸¦ Ãë¾àÇÏ´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ±×·¯³ª ¾Æ½±°Ôµµ ´ÙÀ½ ¿¹Á¦ ¼Ò½º¿Í °°Àº °æ¿ì¿¡´Â Á¶±Ý ´Ù¸¥ °á°ú°¡ ³ª¿Â´Ù.
- func_3
1: void vuln_sample2(char *str) {
2: char buf[256];
3: char *p; // // <-- added
4: printf("this is func_3"); // <-- added
5: strcpy(buf, str);
6: p=strstr(buf, "beist"); // <-- added
7: if(p) // <-- added
8: printf("beer"); // <-- added
9: else // <-- added
10: printf("crying"); // <-- added
11:}
func_3´Â func_1°ú ºñ±³ÇßÀ» ¶§ 5¶óÀÎÀÌ ´õ Ãß°¡µÆÁö¸¸ ¹ö±× ÇåÅÍÀÇ °üÁ¡¿¡¼ ºÃÀ» ¶©, ¡®ÀǹÌÀûÀ¸·Î´Â¡¯ ¿©ÀüÈ÷ func_1°ú µ¿ÀÏÇÑ Ãë¾àÁ¡ÀÌ Á¸ÀçÇÑ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö¸¸ BinDiff¸¦ ÀÌ¿ëÇÏ¿© func_1°ú func_3¸¦ Diffing Çغ¸¸é À¯»çµµ Æò°¡¿¡¼ °á°ú°ªÀÌ ±²ÀåÈ÷ ³·´Ù. Áï, BinDiff´Â ÀÌ µÎ °³ÀÇ ÇÔ¼ö¿¡ ´ëÇؼ ¡®Â÷ÀÌ°¡ ¸¹ÀÌ ³´Ù¡¯°í ¸»ÇÏ°í ÀÖ´Â ¼ÀÀÌ´Ù.
¿Ö ÀÌ·¯ÇÑ °á°ú°ªÀÌ ³ª¿À´ÂÁö ¾Ë±â À§Çؼ Binary Diffing¿¡ »ç¿ëµÇ´Â ¾Ë°í¸®ÁòÀ» °£·«È÷ ¾Ë¾Æº¸ÀÚ. Binary Diffing ÇÁ·Î±×·¥µéÀÇ ¾Ë°í¸®ÁòÀº Á¶±Ý¾¿ ´Ù¸£Áö¸¸ ÀüüÀûÀÎ °³³äÀº °°´Ù°í ÇÒ ¼ö ÀÖ´Ù. ¿©±â¿¡¼´Â ´ëÇ¥ÀûÀÎ ÅøÀÎ BinDiffÀÇ ¾Ë°í¸®Áò¿¡ ´ëÇØ ´Ù·ç¾îº»´Ù.
BinDiff´Â ¼·Î ´Ù¸¥ 2°³ÀÇ ÇÔ¼ö¿¡ ´ëÇؼ Â÷ÀÌÁ¡À» ã±â À§ÇÑ ¾Ë°í¸®ÁòÀ» ¼öÇàÇÑ´Ù. °¢ ÇÔ¼öÀÇ CFG(Control Flow Graphs)¸¦ ±â¹ÝÀ¸·Î Â÷ÀÌÁ¡À» Æò°¡Çϴµ¥, CFG´Â CG(Call Graphs)¿¡ ºñÇÏ¿© ¼¼ºÎÀûÀ¸·Î Ç¥ÇöÇÑ´Ù°í ÀÌÇØÇÒ ¼ö ÀÖ´Ù. Call Graphs´Â ÇÔ¼ö¿Í ÇÔ¼ö°£ÀÇ ¿¬°á °ü°è¸¦ Ç¥ÇöÇÑ´Ù¸é CFG´Â ÇϳªÀÇ ÇÔ¼ö ¾È¿¡ ÀÖ´Â ±âº» ºí·Ï(Basic Block) °£ÀÇ ¿¬°á °ü°è±îÁö Ç¥ÇöÇϱ⠶§¹®ÀÌ´Ù.
Áï, BinDiff´Â µÎ ÇÔ¼ö¿¡¼ »ç¿ëµÈ ¾î¼Àºí¸® ¸í·É(Assembly Instruction)ÀÇ Â÷ÀÌ ±× ÀÚü¿¡ ´ëÇؼ´Â Å©°Ô Àǹ̸¦ µÎÁö ¾Ê°í, ±¸Á¶Àû ¸ÅĪ(Structural Matching)À» ½ÃµµÇÏ°í ÀÖ´Ù. BinDiff´Â ¸ÕÀú ÇÔ¼öµé °£¿¡ ºñ±³ÇÑ ÈÄ ±âº» ºí·Ï(Basic block)µé °£ÀÇ ºñ±³¸¦ ¼öÇàÇÑ´Ù. Â÷ÀÌÁ¡ ÆľÇÀ» À§ÇØ ¿©·¯ ¾Ë°í¸®ÁòÀÌ »ç¿ëµÇ°í ÀÖÁö¸¸ ÀÌÇØÇϱ⠽¬¿î ¾Ë°í¸®Áò 3°³¸¸ °£·«È÷ ¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.
1. Hash Matching
¸» ±×´ë·Î ÇÔ¼öÀÇ raw ¹ÙÀÌÆ®¸¦ ºñ±³ÇÔÀ¸·Î½á µÎ ÇÔ¼öÀÇ ¸ÅĪÀ» ½ÃµµÇÏ´Â °ÍÀÌ´Ù. raw ¹ÙÀÌÆ®°¡ °°´Ù¸é, ´ç¿¬È÷ ³»¿ëµµ °°´Ù°í º¼ ¼ö Àֱ⠶§¹®¿¡ µÎ ÇÔ¼öÀÇ À¯»çµµ Æò°¡°ªÀº ³ô°Ô ³ªÅ¸³´Ù.
2. Prime Signature Matching
ÄÄÆÄÀÏ·¯¿¡ µû¸¥ ¸í·É Àç¹èÄ¡(Instruction re-ordering)ÀÇ Â÷ÀÌ·Î ÀÎÇÑ ¸ÅĪ ½ÇÆи¦ ¹æÁöÇÏÁö À§ÇØ »ç¿ëµÇ´Â ¾Ë°í¸®ÁòÀÌ´Ù. Small Prime Product¶ó°í ºÒ¸®¸ç ¸í·É(Instruction)¸¶´Ù °íÀ¯ÀÇ °ªÀ» ºÎ¿©ÇÏ°í, ÇØ´ç ¸í·É(Instruction)ÀÌ ³ª¿Ã ¶§¸¶´Ù °ªÀ» ´õÇÏ´Â ¹æ½ÄÀ̱⠶§¹®¿¡ ¸í·É(Instruction)ÀÌ Àç¹èÄ¡µÇ´õ¶óµµ ¸ÅĪ ½Ãų ¼ö ÀÖ´Ù.
3. String References
ÇÔ¼ö³ª ±âº» ºí·Ï(Basic Block) ¾È¿¡¼ »ç¿ëµÇ´Â ¹®ÀÚ¿À» ºñ±³ÇÏ¿© °°´Ù¸é ±àÁ¤ÀûÀÎ Á¡¼ö¸¦ ÁÖ´Â ¹æ¹ýÀÌ´Ù.
Ãß°¡ÀûÀ¸·Î, BinDiff´Â ÀÌ¿Ü¿¡µµ ¾à 10¿©°³ ÀÌ»óÀÇ ÈÞ¸®½ºÆ½ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ°í ÀÖ´Ù. °¡·É ±âº» ºí·Ï(Basic Block)ÀÇ °³¼ö³ª È£ÃâÇÏ°í ÀÖ´Â ÇÔ¼öÀÇ °³¼ö ¶ÇÇÑ ¸ÅĪ Æò°¡¿¡ ¿µÇâÀ» Áִµ¥, ÀÚ¼¼ÇÑ ³»¿ëÀº BinDiffÀÇ ¸Å´º¾ó¿¡ ±â¼úµÇ¾î ÀÖ´Ù. °¢ ¾Ë°í¸®Áò¸¶´Ù Æò°¡Á¡¼ö°¡ ´Ù¸¥µ¥, ¿¹¸¦ µé¾î Hash MatchingÀÏ °æ¿ì ¹ÙÀÌÆ® °ªÀ» ÀÌ¿ëÇØ ºñ±³¸¦ Çϱ⠶§¹®¿¡ Æò°¡ Á¡¼ö°¡ ¸Å¿ì ³ô´Ù.
func_1°ú func_3ÀÇ °¡Àå Å« Â÷ÀÌÁ¡ µÎ °¡Áö¸¦ ²ÅÀÚ¸é, func_3¿¡´Â func_1¿¡´Â ¾ø´Â ºÐ±â¹®ÀÌ Á¸ÀçÇÏ°í, ÇÔ¼ö°¡ ´õ ¸¹ÀÌ È£ÃâµÆ´Ù´Â Á¡ÀÌ´Ù. ±×·¡¼ ÀÌ ÇÔ¼öÀÇ À¯»çµµ Æò°¡°¡ ³·°Ô Æò°¡µÈ °ÍÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.
Á¤¸®¸¦ Çغ¸¸é, ÀϹÝÀûÀÎ Binary DiffingÀº Ãë¾àÁ¡À» ã´Âµ¥ »ç¿ëÇϱⰡ ½±Áö ¾Ê´Ù. Ãë¾àÁ¡À» ¹ß°ßÇϱâ À§ÇÑ Binary Diffing ÈÞ¸®½ºÆ½ ¾Ë°í¸®ÁòÀ» »õ·Î °³¹ßÇØ¾ß ¿ì¸®°¡ ¿øÇÏ´Â ¸ñÀûÀ» ´Þ¼ºÇÒ ¼ö ÀÖ´Ù´Â ¾ê±â´Ù.
À̸¦ ÇØ°áÇϱâ À§ÇØ ¸î °¡Áö ¾Ë°í¸®ÁòÀ» ÀÛ¼ºÇÏ°í ½ÃµµÇغôÙ. °¡·É Àǹ̷ÐÀûÀ¸·Î ¼·Î °°Àº Äڵ带 ¸¸µé±â À§ÇÑ ¾Ë°í¸®ÁòÀ» ÀÛ¼ºÇß´Ù. ¿¹¸¦ µé¾î, func_3 Äڵ忡¼´Â ºÐ±â¹®ÀÌ(if-else) ¹ö±× ÇåÆà ½Ã¿¡´Â Àǹ̰¡ ¾ø±â ¶§¹®¿¡ ¹«½ÃÇß°í, printf ÇÔ¼ö ¿ª½Ã ÇÁ·Î±×·¥ ½ÇÇà¿¡ Àǹ̸¦ °®Áö ¾Ê±â ¶§¹®¿¡ printfµµ ¹«½ÃÇß´Ù. ÀÌ·² °æ¿ì À¯»çµµ Æò°¡°ªÀÌ È¹±âÀûÀ¸·Î ¿Ã¶ó°¡°Ô µÈ´Ù.
ÀÌ¿Ü¿¡µµ ¿©·¯ ¾Ë°í¸®ÁòÀ» °í¾ÈÇØ Àû¿ëÇÑ °á°ú, ½ÇÁ¦ Kamuse º¥´õÀÇ ÇÁ·Î±×·¥¿¡¼ Á¦·Îµ¥ÀÌ Ãë¾àÁ¡À» ã¾Æ³¾ ¼ö ÀÖ¾ú´Ù(ÇØ´ç Ãë¾àÁ¡¿¡ ´ëÇؼ´Â Kamuse º¥´õ¿¡°Ô ÀÌ¹Ì ¸®Æ÷Æ® Çß´Ù). Kamuse ÇÁ·Î±×·¥Àº ¿£¾¾¼ÒÇÁÆ®ÀÇ ¿Â¶óÀÎ °ÔÀӵ鿡 »ç¿ëµÇ´Â ¸ðµâ·Î½á, »ç¿ëÀÚ°¡ °ÔÀÓ Å¬¶óÀ̾ðÆ®¸¦ ´Ù¿î·ÎµåÇÒ ¶§ ½ÇÇàµÈ´Ù.
ÇØ´ç ¸ðµâÀº P2P ±â´ÉÀ» ¼öÇàÇϱâ À§ÇØ ³×Æ®¿öÅ© Æ÷Æ®¸¦ ¿±â ¶§¹®¿¡, ¸¸¾à Kamuse ¸ðµâÀÌ ½ÇÇàµÇ°í ÀÖ´Â PC¶ó¸é ÇØÄ¿¿¡°Ô ¿ø°Ý¿¡¼ ÇØÅ· ´çÇÒ ¼ö ÀÖ´Â Ãë¾àÁ¡À̶ó°í ÇÒ ¼ö ÀÖ´Ù. À̹ø Ãë¾àÁ¡Àº »ç¿ëÀÚ µ¥ÀÌÅ͸¦ ºÎÀûÀýÇÏ°Ô Ã³¸®ÇØ ¹ß»ýÇÏ´Â ¹öÆÛ ¿À¹öÇÃ·Î¿ì ¹ö±×·Î Áö³ ISEC 2012 ¹ßÇ¥¿¡¼ ÃÖÃÊ·Î ¼Ò°³µÈ ¹Ù ÀÖ´Ù.
À̹ø ¿¬±¸´Â ¾ÆÀ̵ð¾îÀÇ ½ÇÇö °¡´É¼ºÀ» ºÃ´Ù´Â Á¡¿¡¼ Àǹ̸¦ ãÀ» ¼ö ÀÖÁö¸¸, ¾ÆÁ÷ ÇØ°áÇÏÁö ¸øÇÑ ¹®Á¦Á¡µéÀÌ ¸¹ÀÌ Á¸ÀçÇÑ´Ù. ´ëÇ¥ÀûÀ¸·Î ÄÄÆÄÀÏ·¯ÀÇ Á¾·ù¿¡ µû¸¥ ÄÚµå Á¦³Ê·¹À̼Ç, ÃÖÀûÈ °µµ¿¡ µû¸¥ ÄÚµå º¯È µîÀ» À§ÇØ ÇØ°áÇØ¾ß ÇÒ ºÎºÐÀÌ ¸¹´Ù. ¶ÇÇÑ, ¹ö±× ÇåÅÍÀÇ ÀÔÀå¿¡¼ ºÃÀ» ¶§ Àǹ̷ÐÀûÀ¸·Î °°Àº ÇÔ¼ö ÁýÇÕ(¿¹¸¦ µé¾î strcpy, memcpy, sprintf µî)À» ±×·ìÈÇØ Ã³¸®ÇÏ´Â µîÀÇ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù.
¹«¾ùº¸´Ù ÀÌ ¿¬±¸°¡ Áö±Ýº¸´Ù ¸¹Àº ¹ßÀüÀ» °ÅµÎ±â À§Çؼ´Â ·Î¿ì·¹º§¿¡¼ ÁøÇàµÇ¾î¾ß ÇÏ´Â ¸®¹ö½Ì ¿ÀÅä¸ÞÀÌ¼Ç ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù. À̸¦ ÀÌ·ç¾î³»±â À§Çؼ´Â ´ë´ÜÈ÷ ¸¹Àº ÀÛ¾÷½Ã°£ÀÌ ÇÊ¿äÇÒ °ÍÀ¸·Î º¸ÀδÙ. ¾ÆÁ÷ ¸¹Àº ¿¬±¸°¡ ÇÊ¿äÇÑ ºÐ¾ßÀÌÁö¸¸, ÀÌ¿Í °ü·ÃÇؼ´Â ÇÊÀÚ°¡ ¼ÓÇØ ÀÖ´Â °í·Á´ëÇб³ IAS lab¿¡¼ Áö¼ÓÀûÀÎ ¿¬±¸¸¦ ÁøÇàÇÒ °èȹÀÌ´Ù.
Âü°í·Î À̹ø ±â°í´Â Áö³ 9¿ù ISEC 2012¿¡¼ÀÇ ¹ßÇ¥³»¿ëÀ» Á¤¸®ÇÑ °ÍÀ¸·Î, ISEC ¹ßÇ¥ ÀÌÈÄ ÇØ¿ÜÀÇ ÇØÄ¿µé¿¡°Ô ÁÁÀº Çǵå¹éµéÀ» ¸¹ÀÌ ¹Þ¾Ò´Ù. ±× °¡¿îµ¥ ÇÑ ¼Ò½Ä¿¡ ÀÇÇϸé, ÇØ¿ÜÀÇ ¸î¸î º¸¾ÈÀü¹®°¡µé¿¡ ÀÇÇؼ 10³â ÀüÂë Binary ·¹º§¿¡¼ ÆÐÅÏÀ» °Ë»çÇÏ¿© Ãë¾àÁ¡ÀÌ Á¸ÀçÇÏ´ÂÁö ¾Ë¾Æº¸´Â ½Ãµµ¸¦ Çß´ø °ÍÀ¸·Î ÀüÇØÁ³´Ù. ±×·¯³ª ´ç½Ã´Â Áö±Ýó·³ ¸®¹ö½º ¿£Áö´Ï¾î¸µ (Reverse Engineering) ÇÁ·Î±×·¥ÀÌ ´Ù¾çÇÏÁö ¾Ê¾Ò°í, ±â¼ú¼öÁصµ Áö±Ýº¸´Ù´Â ³·¾Ò±â ¶§¹®¿¡ º°´Ù¸¥ ¼º°ú¸¦ °ÅµÎÁö ¸øÇÑ °ÍÀ¸·Î ¾Ë·ÁÁ³´Ù.
[±Û_ÀÌ ½Â Áø °í·Á´ëÇб³ Á¤º¸º¸È£´ëÇпø IAS ·¦ ¼®¡¤¹Ú»ç°úÁ¤/BoB ¸àÅä/GrayHash ¼ö¼®(beist@grayhash.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(http://www.boannews.com/) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>