°³¶ËÀ̳׿¡¼ ÆÇ¸ÅµÈ "¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ¸®¹ö½º ¿£Áö´Ï¾î¸µ" Á¤°¡ 30,000¿ø Æò±ÕÇÒÀΰ¡
|
|
|
1Àå. ¾Èµå·ÎÀÌµå ±âº» °³³ä 1.1 ¾Èµå·ÎÀ̵å Çʼö ±¸¼º ¿ä¼Ò 1.1.1 ¾×ƼºñƼ onCreate( ) startActivity( ) startActivityForResult( ) setResult( ) ¾×ƼºñƼ »ý¸íÁÖ±â 1.1.2 ¼ºñ½º ¼ºñ½º »ý¸íÁÖ±â 1.1.3 ºê·Îµåij½ºÆ® ¼ö½ÅÀÚ 1.1.4 ÄÜÅÙÃ÷ Á¦°øÀÚ
2Àå. ¾Èµå·ÎÀÌµå ¸®¹ö½º ¿£Áö´Ï¾î¸µÀ» À§ÇÑ È¯°æ ±¸Ãà 2.1 µð¹ÙÀ̽º ¼³Á¤ 2.1.1 ADB Á¢¼ÓÀ» À§ÇÑ USB µð¹ö±ë È°¼ºÈ 2.1.2 ·çÆà 2.1.3 ´Ù¾çÇÑ ¸í·ÉÀ» »ç¿ëÇϱâ À§ÇÑ BusyBox ¼³Ä¡ 2.2 ¾Èµå·ÎÀ̵å SDK, NDK ¼³Ä¡ 2.2.1 À©µµ¿ì ȯ°æ¿¡¼ ¾Èµå·ÎÀ̵å SDK ¼³Ä¡ ÀÚ¹Ù ¹öÀü È®ÀÎ ÀÚ¹Ù ´Ù¿î·Îµå ÀÚ¹Ù ¼³Ä¡ 2.2.2 ¾Èµå·ÎÀÌµå ½ºÆ©µð¿À¸¦ ÀÌ¿ëÇÑ ¾Èµå·ÎÀ̵å SDK ¼³Ä¡ ¾Èµå·ÎÀÌµå ½ºÆ©µð¿À ´Ù¿î·Îµå ¾Èµå·ÎÀ̵å SDK ¼³Ä¡ ȯ°æ º¯¼ö µî·Ï 2.3 ¿ìºÐÅõ ȯ°æ¿¡¼ ¾Èµå·ÎÀ̵å SDK ¼³Ä¡ 2.3.1 ÀÚ¹Ù ¹öÀü È®ÀÎ ¹× ¼³Ä¡ ÀÚ¹Ù ¹öÀü È®ÀÎ ÀÚ¹Ù ¼³Ä¡ ÀÚ¹Ù ¹öÀü È®ÀÎ 2.3.2 ¾Èµå·ÎÀ̵å SDKÀÇ ´Ù¿î·Îµå¿Í ¼³Ä¡ 2.3.3 ¾Èµå·ÎÀ̵å SDK ȯ°æ º¯¼ö ¼³Á¤ 2.3.4 ¾Èµå·ÎÀ̵å NDK ´Ù¿î·Îµå ¹× ¼³Ä¡ ¾ÐÃà ÇØÁ¦ 2.3.5 ¾Èµå·ÎÀ̵å NDK ȯ°æ º¯¼ö µî·Ï
3Àå. ¾Èµå·ÎÀÌµå ¾Û ±¸¼º ¹× ÄÚµå ºÐ¼® 3.1 ¾Èµå·ÎÀ̵å APK ±¸¼º 3.2 APK Repackage 3.2.1 Apktool 3.3 ¹«·á µµ±¸¸¦ È°¿ëÇÑ ÄÚµå ºÐ¼® 3.3.1 JD - GUI ½ÇÇà ¹®Á¦ ÇØ°á 3.3.2 JADX 3.3.3 Androguard 3.3.4 ¹ÙÀÌÆ®ÄÚµå ºä¾î 3.4 »ó¿ëµµ±¸¸¦ È°¿ëÇÑ ÄÚµå ºÐ¼® 3.4.1 JEB1 ½¬¿î ÇØÅ·´ëȸ ¹®Á¦ Ç®¾îº¸±â 3.4.2 JEB2 UI ¹èÄ¡ ¾ÆƼÆÑÆ® Ãß°¡ ¾ÖÇø®ÄÉÀÌ¼Ç µ¿Àû µð¹ö±ë SETPROPEX¸¦ ÀÌ¿ëÇÑ ¼³Á¤°ª º¯°æ CVE-2016-5195 Ãë¾àÁ¡À» ÀÌ¿ëÇÑ ¼³Á¤°ª º¯°æ JEB2 µ¿Àû µð¹ö±ë ±â´É »ç¿ë °ü·Ã ¹®Á¦ ÇØ°á JEB2¸¦ ÀÌ¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç µð¹ö±ë
4Àå. ¾Èµå·ÎÀÌµå ¾Û Á¤Àû ºÐ¼® 4.1 ¾Èµå·ÎÀ̵å APK ÃßÃâ 4.1.1 ADB 4.1.2 ¾Æ½ºÆ®·Î ÆÄÀÏ°ü¸®ÀÚ 4.2 ºÐ¼®¹æÁö ¼Ö·ç¼Ç ¿ìȸ ¿¹Á¦ 1 ¿¹Á¦ 2 4.3 ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç Á¤Àû ºÐ¼® ¿¹Á¦ 1 ¿¹Á¦ 2 4.4 ³µ¶ÈµÈ ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼® ¿¹Á¦ 1. ¿¹Á¦ 2.
5Àå. ¾Èµå·ÎÀÌµå ¾Û µ¿Àû ºÐ¼® 5.1 ¾Èµå·ÎÀ̵å LKMÀ» È°¿ëÇÑ µ¿Àû ºÐ¼® 5.1.1 ¸ð¹ÙÀÏ ±â±â¿¡ ¸Â´Â Ä¿³Î ´Ù¿î·Îµå 5.1.2 ÅøüÀÎ ´Ù¿î·Îµå 5.2 Java API HookingÀ» È°¿ëÇÑ µ¿Àû ºÐ¼® 5.2.1 Cydia Substrate¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù API ÈÄÅ· ÁÖÀԱ⠼³Ä¡ ÀÚ¹Ù API ÈÄÅ· ¸ðµâ °³¹ß ºÐ¼® ¹× ÄÚµù ½ÃÀÛ Á÷Á¢ ¸¸µé¾îº¸ÀÚ 5.2.2 Xposed¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù API ÈÄÅ· °³¹ß ȯ°æ ±¸Ãà ¸ðµâ ¾÷µ¥ÀÌÆ® ÈÄÅ· ¸ðµâ °³¹ß 5.3 Frida È°¿ëÇÑ µ¿Àû ºÐ¼® 5.3.1 Frida ¼³Ä¡ 5.3.2 Frida-trace¸¦ ÀÌ¿ëÇÑ ½Ã½ºÅÛÄÝ ÈÄÅ· 5.3.3 Frida ¸ðµâÀ» ÀÌ¿ëÇÑ ½ºÅ©¸³Æ® ÀÛ¼º 5.3.4 Frida¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù ÈÄÅ·
6Àå. ¾Èµå·ÎÀÌµå ¾Û(APK) µð¹ö±ë 6.1 GDB¸¦ ÀÌ¿ëÇÑ Android Remote Debugging 6.1.1 ADB¸¦ ÀÌ¿ëÇÑ ¾Èµå·ÎÀÌµå ±â±â Á¢¼Ó 6.2 IDA Pro¸¦ ÀÌ¿ëÇÑ APK µð¹ö±ë 6.2.1 ȯ°æ º¯¼ö ¼³Á¤ 6.2.2 ¾Û ¼³Ä¡ 6.2.3 µð¹ö±ë ½ÃÀÛ 6.2.4 ¹®Á¦ ÇØ°á 6.3 IDA ÇÁ·Î¸¦ ÀÌ¿ëÇÑ classes.dex & °øÀ¯ ¶óÀ̺귯¸® µð¹ö±ë 6.3.1 ȯ°æ º¯¼ö µî·ÏÈ®ÀÎ 6.3.2 Android NDK ¼³Ä¡ 6.3.3 ȯ°æ º¯¼ö µî·Ï 6.3.4 ÄÄÆÄÀÏ 6.3.5 customrules.xml ¼öÁ¤ 6.3.6 µÎ °³ÀÇ IDA ÀνºÅϽº »ý¼º 6.4 IDA Pro¸¦ ÀÌ¿ëÇÑ JNI °øÀ¯ ¶óÀ̺귯¸® µð¹ö±ë ¹æ¹ý 1 6.4.1 ȯ°æ ±¸Ãà 6.4.2 Linker º¹»ç 6.4.3 °øÀ¯ ¶óÀ̺귯¸® º¹»ç 6.4.4 µµ±¸ °³¹ß 6.4.5 Android.mk ÆÄÀÏ ÀÛ¼º 6.4.6 Makefile ÀÛ¼º 6.4.7 ÄÄÆÄÀÏ 6.4.8 ¾Èµå·ÎÀÌµå ±â±â ÀÛ¾÷ 6.4.9 ADB Æ÷Æ® Æ÷¿öµù 6.4.10 IDA Pro ¼³Á¤ 6.4.11 ºê·¹ÀÌÅ© Æ÷ÀÎÆ® ¼³Á¤ 6.4.12 µð¹ö±× ¼³Á¤ 6.4.13 ¾Èµå·ÎÀÌµå ±â±â ÀÛ¾÷ 6.4.14 Æ÷Æ® Æ÷¿öµù 6.5 IDA Pro¸¦ ÀÌ¿ëÇÑ JNI °øÀ¯ ¶óÀ̺귯¸® µð¹ö±ë ¹æ¹ý 2 6.6 IDA Pro¸¦ ÀÌ¿ëÇÑ JNI °øÀ¯ ¶óÀ̺귯¸® µð¹ö±ë ¹æ¹ý 3 6.6.1 STEP 1 ´Þºò ·±Å¸ÀÓ ÈÄÅ· 6.6.2 STEP 2 SDK¿¡ Æ÷ÇÔµÈ ddms ½ÇÇà 6.6.3 STEP 3 ¾Èµå·ÎÀÌµå ¼¹ö Àü¼Û ¹× ½ÇÇà 6.6.4 STEP 4 adb forward 6.6.5 STEP 5 ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Ä¡ ¹× ½ÇÇà 6.6.6 STEP 6 IDA ½ÇÇà ¹× µð¹ö°Å ¿¬°á 6.7 ¸¶Ä¡¸ç
ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë
- ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼® ȯ°æ ¼³Á¤ - ¹«·á µµ±¸¸¦ ÀÌ¿ëÇÑ Á¤Àû ºÐ¼® ¹æ¹ý - »ó¿ë µµ±¸¸¦ ÀÌ¿ëÇÑ ³µ¶È ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼® ¹æ¹ý - ºÐ¼® ¹æÁö ¼Ö·ç¼ÇÀÌ Àû¿ëµÈ ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼® ¹æ¹ý - °øÀ¯ ¶óÀ̺귯¸® µ¿Àû µð¹ö±ë ¹æ¹ý - ÇØÅ· ´ëȸ ¹®Á¦¸¦ ÅëÇÑ ½ÇÀü ÀÀ¿ë - °³¹ßÀ» ÅëÇÑ APK ÈÄÅ· ¹æ¹ý
ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ
- ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾ÈÀ» óÀ½ Á¢Çϰųª ÀÌÁ¦ ¸· ½ÃÀÛÇÏ·Á´Â µ¶ÀÚ - °³¹ßÀÚ ¹× ½ÃÅ¥¸®Æ® ÆÄÆ®¿¡¼ º¸¾È Á¡°ËÀ» ´ã´çÇÏ´Â µ¶ÀÚ - ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç Ãë¾àÁ¡ Á¡°Ë ¸ðÀÇÇØÅ· ÄÁ¼³ÅÏÆ® - ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ¸®¹ö½º ¿£Áö´Ï¾î¸µ¿¡ °ü½ÉÀÌ ¸¹Àº µ¶ÀÚ
ÀÌ Ã¥ÀÇ ±¸¼º
1Àå, '¾Èµå·ÎÀÌµå ±âº» °³³ä'¿¡¼´Â ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼®¿¡ ¾Õ¼ ºÐ¼®À» ¾î´À ºÎºÐºÎÅÍ ÇØ¾ß ÇÏ´ÂÁö ¸ð¸£´Â µ¶Àڵ鿡°Ô ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ ³× °¡Áö ±¸¼º¿ä¼Ò¿¡ ´ëÇÑ °³³ä ¼³¸íÀ¸·Î ¾î´À ºÎºÐºÎÅÍ ºÐ¼®À» ½ÃÀÛÇØ¾ß ¸ð¸£´Â µ¶ÀÚµéÀÌ °³³äÀ» ¹ÙÅÁÀ¸·Î °ü·Ã Äڵ带 ½±°Ô ºÐ¼®ÇØ ³ª°¥ ¼ö ÀÖµµ·Ï ¾×ƼºñƼ(Activity), ¼ºñ½º(Service), ºê·ÎµåÄɽºÆ® ¼ö½ÅÀÚ(Broadcast Receiver), ÄÜÅÙÃ÷ Á¦°øÀÚ(Contents Provider)¿¡ °üÇØ ¼³¸íÇÑ´Ù. 2Àå, '¾Èµå·ÎÀÌµå ¸®¹ö½º ¿£Áö´Ï¾î¸µÀ» À§ÇÑ È¯°æ ±¸Ãà'¿¡¼´Â ºÐ¼®¿¡ ¾Õ¼ µð¹ÙÀ̽º¿¡ Á¢¼ÓÇϱâ À§ÇØ ADB Á¢¼ÓÀ» À§ÇÑ USBµð¹ö±ë È°¼ºÈÇÏ´Â ¹æ¹ý, ÇÊ¿äÇÑ ¸í·É¾î µîÀ» »ç¿ëÇϱâ À§ÇØ Busybox µîÀ» ¼³Ä¡ÇÏ´Â ¹æ¹ý ¹× À©µµ¿ì, ¿ìºÐÅõ ȯ°æ¿¡ ¸Â°Ô ÀÚ¹Ù ¹öÀü È®ÀÎ ¹× ¾Èµå·ÎÀÌµå ½ºÆ©µð¿À(Android Studio)¸¦ ÀÌ¿ëÇØ SDK¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ½ÃÀÛÇÏ´Â »ç¶÷µéÀ» ±âºÐÀ¸·Î ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. 3Àå, '¾Èµå·ÎÀÌµå ¾Û ±¸¼º ¹× ÄÚµå ºÐ¼®'¿¡¼´Â ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±¸¼º, ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç »ý¼º °úÁ¤°ú apktoolÀ» ÀÌ¿ëÇÑ ±âº»ÀûÀÎ APK Repackage °úÁ¤À» ¼³¸íÇÏ°í ¹«·á·Î ½±°Ô ±¸ÇÒ ¼ö ÀÖ´Â JD-GUI, JADX, Androguard, ByteCodeViewer¸¦ ÀÌ¿ëÇØ ºÐ¼®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ¶ÇÇÑ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¼® ¿ëµµ·Î ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Â JEB, JEB2¸¦ ÀÌ¿ëÇÑ ÀÚ¼¼ÇÑ ºÐ¼® ¹æ¹ý°ú JEB2¿¡¼ Á¦°øÇÏ´Â µ¿Àû µð¹ö±ëÀ» ÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇØ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. 4Àå, '¾Èµå·ÎÀÌµå ¾Û Á¤Àû ºÐ¼®'¿¡¼´Â ºÐ¼®À» À§ÇØ ¼³Ä¡µÈ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç ÃßÃâºÎÅÍ ºÐ¼®¹æÁö ¼Ö·ç¼ÇÀÌ Àû¿ëµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ½ÇÇàÄÚµå ÃßÃâ ¹æ¹ý ¹× À¯¿ëÇÑ ÆÁÀ» ¿¹Á¦¸¦ ¹ÙÅÁÀ¸·Î ¼³¸íÇÏ°í, ·¹º§ Å×½ºÆ® ¿ëµµ·Î Á¦ÀÛµÈ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ Á¤Àû ºÐ¼® ¹æ¹ý¿¡ ´ëÇØ ¾Èµå·ÎÀÌµå ±âº» °³³äºÎÅÍ, ÄÚµå È°¿ë±îÁö Â÷±ÙÂ÷±Ù ¼³¸íÇÑ´Ù. 5Àå, '¾Èµå·ÎÀÌµå ¾Û µ¿Àû ºÐ¼®'¿¡¼´Â ÀÌÀåÀÇ ³»¿ëÀº ´ëºÎºÐ °í±Þ°úÁ¤¿¡ ¼ÓÇÏ¸ç °³¹ß¿¡ ´ëÇÑ »çÀüÁö½ÄÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼ ¾ÛÀ» Á÷Á¢ ºÐ¼®ÇÏÁö ¾Ê°í µ¿Àû ȯ°æÀ» ±¸¼ºÇØ ¾î¶² À̺¥Æ®°¡ ¹ß»ýÇÏ´ÂÁö È®ÀÎÇϱâ À§ÇØ ¾Èµå·ÎÀ̵å LKM(Loadable Kernel Module), ´ëÇ¥ÀûÀÎ ÇÁ·¹ÀÓ¿öÅ©¸¦ È°¿ëÇÑ ÀÚ¹Ù API ÈÄÅ·À» ÅëÇØ ºÐ¼®Çسª°¡´Â ¹æ¹ý, API ÈÄÅ·À» ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. 6Àå, '¾Èµå·ÎÀÌµå ¾Û(APK) µð¹ö±ë'¿¡¼´Â GDB, IDA, JEB2¸¦ ÅëÇؼ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀÌ¼Ç Äڵ忡 ´ëÇÑ µ¿Àû µð¹ö±ë ȯ°æ ±¸Ãà ¹× µ¿Àû µð¹ö±ë ¹æ¹ý, JNI ¶óÀ̺귯¸® µð¹ö±ë ¹æ¹ý¿¡ ´ëÇؼ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù.
|
|
|
|
|