Home > Àüü±â»ç

¡®¹ÙÀ̳ʸ® µðÇΡ¯ ½ºÅ¸ÀÏ·Î Á¦·Îµ¥ÀÌ Ãë¾àÁ¡ ã±â!

ÀÔ·Â : 2012-10-04 14:34
ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â
2°³ ÀÌ»óÀÇ ¼­·Î ´Ù¸¥ ¹ÙÀ̳ʸ® ºÐ¼®ÇØ Ãë¾àÁ¡ Áø´Ü °¡´É  

ÀÌ ¹æ¹ýÀ¸·Î ¿£¾¾¼ÒÇÁÆ®¿¡¼­ »ç¿ëÇϴ ī¹ÂÁî ÇÁ·Î±×·¥ Ãë¾àÁ¡ ¹ß°ß 


[º¸¾È´º½º=À̽ÂÁø 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/) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>

  •  
  • 1
  • ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â

  • ¡°
  •  SNS¿¡¼­µµ º¸¾È´º½º¸¦ ¹Þ¾Æº¸¼¼¿ä!! 
  • ¡±
¾Æ½ºÆ®·Ð½ÃÅ¥¸®Æ¼ ÆÄ¿öºñÁî 2023³â2¿ù23ÀÏ ½ÃÀÛ ³Ý¾Øµå ÆÄ¿öºñÁî ÁøÇà 2020³â1¿ù8ÀÏ ½ÃÀÛ~2021³â 1¿ù8ÀϱîÁö À§Áîµð¿£¿¡½º 2018
¼³¹®Á¶»ç
³»³â ȸ»ç¿¡ ²À µµÀÔÇÏ°í ½ÍÀº º¸¾È ¼Ö·ç¼Ç ¶Ç´Â Ç÷§ÆûÀº ¹«¾ùÀΰ¡¿ä?
XDR
EDR
AI º¸¾È
Á¦·ÎÆ®·¯½ºÆ®
°ø±Þ¸Á º¸¾È ü°è(SBOM)
Ŭ¶ó¿ìµå º¸¾È ¼Ö·ç¼Ç
±âŸ(´ñ±Û·Î)