±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË MobSFÊÇʲô¡¢ËüµÄ´úÂë½á¹¹£¬°üÀ¨£º¾²Ì¬·ÖÎöʵÏÖÔÀí¡¢¶¯Ì¬·ÖÎöʵÏÖÔÀí
¡¢API FuzzerµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ¾ò½ð£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
MobSF
MobSF£¬È«³Æ£¨Mobile-Security-Framework£©£¬ÊÇÒ»¿îÓÅÐãµÄ¿ªÔ´Òƶ¯Ó¦ÓÃ×Ô¶¯²âÊÔ¿ò¼Ü¡£¸Ãƽ̨¿É¶Ô°²×¿¡¢Æ»¹ûÓ¦ÓóÌÐò½øÐо²Ì¬¡¢¶¯Ì¬·ÖÎö£¬²¢ÔÚweb¶ËÊä³ö±¨¸æ¡£¾²Ì¬·ÖÎöÊÊÓÃÓÚ°²×¿¡¢Æ»¹ûÓ¦ÓóÌÐò£¬¶ø¶¯Ì¬·ÖÎöÔÝʱֻ֧³Ö°²×¿Ó¦ÓóÌÐò¡£

MobSFʹÓÃDjango¿ò¼Ü¿ª·¢£¬Ê¹ÓÃsqlite½øÐеĴ洢£¬Ö§³Ö¶Ôapk¡¢ipa¼°zipѹËõµÄÔ´´úÂë½øÐÐɨÃè·ÖÎö¡£
ͬʱ£¬MobSF Ò²Äܹ»Í¨¹ýÆäAPI Fuzzer¹¦ÄÜÄ£¿é£¬¶Ô Web API µÄ°²È«ÐÔ½øÐмì²â£¬ÈçÊÕ¼¯ÐÅÏ¢£¬·ÖÎö°²È«Í·²¿ÐÅÏ¢£¬Ê¶±ðÒÆ¶¯API
µÄ¾ßÌå©¶´£¬ÈçXXE¡¢SSRF¡¢Â·¾¶±éÀú£¬ÒÔ¼°ÆäËûµÄÓë»á»°ºÍAPIµ÷ÓÃÓйصÄÂß¼ÎÊÌâ¡£
´úÂë½á¹¹
MobSFÔ´´úÂë½á¹¹Ö÷Òª°üº¬¾²Ì¬·ÖÎö¡¢¶¯Ì¬·ÖÎö¡¢API FuzzerÈý¸ö²¿·Ö£¬±¾ÎIJ»¹Ø×¢Django¿ò¼Ü±¾Éí¼°Web´¦ÀíÏà¹ØµÄÄÚÈÝ¡£Èçͼ:

¾²Ì¬·ÖÎöʵÏÖÔÀí
¾²Ì¬·ÖÎöµÄ´¦ÀíÁ÷³Ì¼¯¹¦´úÂëÔÚĿ¼StaticAnalyzer\views\androidÏÂstatic_analyzer.py³ÌÐòÎļþÖС£·ÖÎö´úÂëÁ÷³Ì¿ÉÖª£¬ÔÚMobSF¿ò¼ÜÖо²Ì¬·ÖÎöÖ÷Òª°üº¬Èý¸ö²¿·Ö£¬·Ö±ðÊÇManifest
Analysis¡¢Cert Analysis¡¢Code Analysis¡£Á÷³ÌÈçÏÂ:

Manifest Analysis
ÔÚ½âѹapkºó£¬MobSFʹÓÃAXMLPrinter2.jar¹¤¾ßÌáÈ¡appÖеÄAndroidManifest.xmlÎļþÄÚÈÝ£¬²¢½øÐзÖÎö¡£


ManifestAnalysisÖ÷Òª¹¦ÄÜÊǶÔAndroidManifest.xml½øÐнâÎö£¬ÌáÈ¡ÆäÖÐpermission¡¢granturipermissions¡¢application¡¢activties¡¢services¡¢intents¡¢actionsµÈ£¬·ÖÎöËùÓÐȨÏÞ²¢¶ÔȨÏÞ½øÐзּ¶£¬°üº¬Õý³£¡¢Î£ÏÕ¡¢Ç©Ãû¡¢ÏµÍ³ËĸöÀà±ð¡£¶Ô¸÷ÊôÐÔÅäÖýøÐмì²é£¬¿´ÊÇ·ñ´æÔÚ²»°²È«µÄÅäÖã¬ÈçallowBackup¡¢debuggable¡¢exportedµÈÊôÐÔÉèÖá£Ïêϸ´úÂ빦Äܿɼûmanifest_analysis.py³ÌÐòÎļþ¡£

Cert Analysis
MobSFÖ¤Êé·ÖÎö¹¦Äܺ¯ÊýÔÚcert_analysis.pyÎļþÖУ¬MobSFÊ×Ïȳ¢ÊÔ»ñÈ¡Hardcoded
Certificates/Keystores£¬È»ºóͨ¹ýCertPrint.jar¹¤¾ß½âÎöapkÖÐÖ¤ÊéµÄÐÅÏ¢£¬²¢Íê³ÉÖ¤ÊéÏà¹ØÎÊÌâµÄ·ÖÎö¡£

Code Analysis
MobSF¾²Ì¬´úÂë·ÖÎö¹¦Äܺ¯ÊýÔÚcode_analysis.pyÎļþÖУ¬·´±àÒëµÄ´úÂëÔÚconverter.pyÖС£ÆäÖÐʹÓÃDex2Jar½«dexת±äΪjarÎļþ£¬Ê¹ÓÃDex2Smali½«dexת±äΪsmali´úÂ룬ʹÓÃjd-core.jar¡¢cfr_0_115.jar¡¢procyon-decompiler-0.5.30.jar½«jar°üתΪΪ¿É¶ÁµÄjava´úÂë¡£

Ô´´úÂë·ÖÎö²¿·ÖÖ÷ÒªÀûÓÃÕýÔò±í´ïʽ¶ÔjavaÔ´Âë½øÐÐÆ¥ÅäÀ´ÊµÏֵġ£Ö÷Ҫͨ¹ýÆ¥Åä³£¼û·½·¨ÖеĹؼü´ÊÀ´ÌáȡԴÂëÖÐÓõ½µÄ·½·¨¡£
ͨ¹ýÆ¥ÅäÃô¸Ð¹Ø¼ü´ÊÀ´ÌáÈ¡Õ˺ÅÃÜÂëµÈÐÅÏ¢:

³£¼ûAPI×Ö·û´®À´Åж¨ÊÇ·ñÓе÷ÓÃÕâЩAPI:

Òª¼ì²âµÄapiÁбí(²¿·Ö)¼°¶ÔÓ¦µÄ°²È«ÎÊÌâ:

ͨ¹ýÕýÔòÆ¥ÅäURLµÄ¸ñʽÀ´ÌáȡԴÂëÖеÄURL:

ͨ¹ýÕýÔòÆ¥ÅäEmailµÄ¸ñʽÀ´ÌáȡԴÂëÖеÄEmail:

¶¯Ì¬·ÖÎöʵÏÖÔÀí
MobSFͬʱ»¹Ö§³Ö¶Ô°²×¿³ÌÐòµÄ¶¯Ì¬·ÖÎö£¬Ê¹ÓÃvirtualboxÔËÐÐapp£¬²¢Ê¹ÓÃvirtualboxÌṩµÄ½Ó¿ÚÍê³É´úÀíÉèÖá¢ÐéÄâ»úµÄ²Ù×÷£¬ÀûÓÃadbÃüÁî°²×°ÔËÐÐapp£¬²¢»ñÈ¡appµÄÔËÐÐÏà¹ØÐÅÏ¢£¬½øÐзÖÎö¡£
Æä¶¯Ì¬·ÖÎöÖ÷ҪĿ¼½á¹¹ÈçÏÂͼ£º

Ö÷Òª¹¦ÄÜ´úÂëÔÚDynamicAnalyzer/viewsĿ¼ÏµÄandroid.py£¬¸ù¾ÝÆäǰ¶ËÕ¹Ê¾Ò³Ãæ¿ÉÖªÆäÖ÷Òª¹¦ÄÜÓУº
Environment Created
Start / Stop Screen
Install / Remove MobSF RootCA
Start Exported Activity Tester
Start Activity Tester
Take a Screenshot
Finish
ÐéÄâ»úÔËÐл·¾³²ÎÊý¡¢Web´úÀíÉèÖá¢Ä£ÄâÉ豸ÉèÖÃÔÚsettingsÎļþÖÐ

Environment Created
¸Ã¹¦ÄÜÖ÷ÒªÓÉGetEnvº¯ÊýʵÏÖWeb´úÀíÉèÖã¬adbÃüÁî½Ó¿ÚʵÏÖappµÄ°²×°¡¢ÔËÐС£MobSFÓëÐéÄâÔËÐл·¾³Á¬½Óºó£¬¼´¿ªÊ¼¶¯Ì¬·ÖÎöÁ÷³Ì¡£

Start / Stop Screen
MobSFÖÐÌṩʵʱ²Ù×÷¹¦ÄÜ£¬ÆäʵÏÖÖ÷ÒªÀûÓÃÆÁÄ»Â¼ÖÆÈí¼þscreencastÌṩµÄ·þÎñ£¬ÆäʵÏÖ´úÂëÈçÏ£º

Install / Remove MobSF RootCA

Start /Stop Exported Activity Tester
Õⲿ·ÖÖ÷ÒªÊÇÏ뾡Á¿¶àµÄ´¥·¢Ñù±¾ÖÐËùÓÐÐÐΪ£¬MobSFµÄ×ö·¨ÊÇ£º±éÀúAndroidManifest.xmlÖеÄËùÓÐExported
Activity£¬²¢ÀûÓÃam startÀ´ÒÀ´ÎÆô¶¯£¬ÒÔ·½±ãxposedÄÜ»ñÈ¡µ½¸ü¶àµÄÈÕÖ¾¡£

ÆäÖ÷ÒªÁ÷³ÌÊÇ:
1)»ñÈ¡¾²Ì¬·ÖÎöµÃµ½µÄexported activityÁбí
2)±éÀúactivity£¬²¢ÓÃadb -s IP:PORT shell am start -n PACKAGE/ACTIVITY
Æô¶¯ÏàÓ¦µÄactivity
3)»ñÈ¡µ±Ç°activityÔËÐÐʱµÄÆÁÄ»½ØÍ¼ adb -s IP:PORT shell screencap
-p /data/local/screen.png
4)±£´æ¸Ã½ØÆÁ
5)Ç¿ÖÆ¹Ø±Õ¸ÃÓ¦Óà adb -s IP:PORT shell am force-stop PACKAGE
Start / Stop Activity Tester
ÓëExported Activity²»Í¬µÄÊÇ£¬Õâ¸ö²âÊÔ½«»á±éÀúAndroidManifest.xmlÖÐËùÓÐActivity£¬¶ø²»µ¥µ¥ÊÇExported¡£ÆäÁ÷³ÌÓë´¦ÀíExported
Activity»ù±¾Ïàͬ¡£
Take a Screenshot
½ØÈ¡ÆÁÄ»²¢½«Í¼Æ¬±£´æÔÚ±¾µØ£¬´úÂëÈçÏÂ:

Finish
ÔÚFinalTestº¯ÊýÖÐMobSF»á½«³ÌÐòÔËÐйý³ÌÖеÄËùÓÐdalvikvmµÄWarningºÍActivityManagerµÄInformationÊÕ¼¯ÆðÀ´¡£

MobSF¶ÔÈÕÖ¾µÄ·ÖÎö¹¦ÄÜÖ÷ÒªÔÚAPIAnalysisºÍRunAnalysisÁ½¸öº¯ÊýÖУ¬ºÍ¾²Ì¬ÈÕÖ¾·ÖÎöÒ»Ñù£¬¶¯Ì¬ÈÕÖ¾·ÖÎöÒ²ÊÇÒÔÕýÔòÆ¥ÅäΪÖ÷£¬APIAnalysisÖ÷Òª¶Ôx_logcat.txtÖÐDroidmon.apk²úÉúµÄÈÕÖ¾½øÐд¦Àí£¬Ö÷Òª½øÐÐAPIµ÷Ó÷ÖÎö£¬°üÀ¨APIµÄclass¡¢²ÎÊý¡¢·µ»ØÖµµÈ£¬¶ÔÐèÒª¼à¿ØµÄapiº¯ÊýÔÚDynamicAnalyzer\tools\onDeviceĿ¼ÏµÄhooks.jsonÎļþÖС£°üº¬¼à¿Øº¯ÊýÏêϸµÄÀàÃû¡¢·½·¨Ãû³ÆµÈ¡£

RunAnalysisº¯ÊýÖ÷Òª´¦ÀíÑù±¾ÔËÐкóÁôϵÄWebTraffic.txt¡¢logcat.txt¡¢x_logcat.txtÈÕÖ¾Îļþ¡£

ÔÚRunAnalysisº¯ÊýÖУ¬MobSFÊ×ÏÈÓÃÕýÔòÆ¥Åä³öËùÓпÉÄܵÄurl£¬È»ºóÔÙÒ»Ò»¶Ôurl½øÐÐÏàÓ¦·ÖÎö¡£
API Fuzzer
MobSF¿ò¼ÜÖÐAPI FuzzerÄ£¿éÖ÷Òª¶Ô Web API µÄ°²È«ÐÔ½øÐмì²â£¬ÈçÊÕ¼¯ÐÅÏ¢£¬·ÖÎö°²È«Í·²¿ÐÅÏ¢£¬Ê¶±ðAPI
µÄ¾ßÌå©¶´£¬Ä¿Ç°Ö§³ÖSSRF¡¢XXE¡¢Path TraversalµÈ©¶´µÄɨÃ裬XXE¼°Path Traversal²âÊÔPayloadsÔÚAPITester\payloads\·¾¶Ï£º

ͨ¹ýÔÚsettingÎļþÖÐÔ¤¶¨ÒåÉèÖõÄÌØÕ÷À´Æ¥Åä¼ì²â½á¹û£¬Í¬Ê±MobSFÒ²Ö§³ÖÓëÔÆ¶ËµÄÁ¬½Ó,´Ó¶ø½øÒ»²½×¼È·ºÍÈ«ÃæµÄ¼ì²â°²È«Â©¶´¡£

×ܽá
ͨ¹ý¶ÔMobSFÔ´´úÂëµÄ·ÖÎö¿ÉÒÔÁ˽âMobSFµÄ»ù±¾¹¤×÷ÔÀíÒÔ¼°Á÷³Ì¡£
¾²Ì¬·ÖÎö
¾²Ì¬·ÖÎöʱ£¬MobSFÖ÷ҪʹÓÃÁËÏÖÓеÄdex2jar¡¢dex2smali¡¢jar2java¡¢AXMLPrinter¡¢CertPrintµÈ¹¤¾ß¡£ÆäÖ÷ÒªÍê³ÉÁËÁ½Ï×÷£º½âÎöAndroidManifest.xmlµÃµ½ÁËÓ¦ÓóÌÐòµÄ¸÷ÀàÏà¹ØÐÅÏ¢¡¢¶Ôapk½øÐз´±àÒëµÃµ½java´úÂ룬¶øºóÀûÓÃÕýÔòÆ¥ÅäÕÒ³ö¸Ãapp°üº¬µÄAPIº¯Êý¡¢URL¡¢ÓÊÏ伯ÕʺÅÃÜÂëµÈÃô¸ÐÐÅÏ¢¡£
¶¯Ì¬·ÖÎö
¶ø¶¯Ì¬·ÖÎö²¿·Ö£¬MobSFÖ÷ÒªÀûÓõ½ÁËXposed¿ò¼Ü¡¢DroidmonʵÏÖ¶ÔÓ¦ÓóÌÐòµ÷ÓÃAPIµÄÇé¿ö½øÐÐ¼à¿Ø£¬²¢ÇÒÏêϸÁгöÁËÐèÒª·ÖÎöµÄAPIÁÐ±í¡£Í¬Ê±£¬MobSF»¹Ê¹ÓÃÁËScreenCast½áºÏadb
shell input Íê³É¶ÔÊÖ»úµÄÔ¶³Ì¿ØÖƹ¦ÄÜ¡£¶¯Ì¬·ÖÎöÖ÷Òª²Ù×÷ÓУº
ÀûÓÃwebproxyʵÏÖ´úÀí½ø¶øÀ¹½ØÑù±¾Á÷Á¿¡£
°²×°Ö¤ÊéÒÔ±ãÀ¹½ØhttpsÁ÷Á¿¡£
±éÀúËùÓÐactivity£¬¾¡Á¿¶àµÄ»ñÈ¡¸÷activityÔËÐеõ½µÄÈÕÖ¾¡£
ÀûÓÃÕýÔòÆ¥Åä³öAPI¼°²ÎÊýºÍ·µ»ØÖµ¡£
¾¡¿ÉÄܶàµÄÆ¥Åä³öURLÐÅÏ¢£¬¶ÔURL½øÐкóÐø·ÖÎö¼°¶ñÒâURL²éɱ¡£
API Fuzzer
API FuzzerÄ£¿éÕë¶Ô Web API µÄ°²È«ÐÔ½øÐмì²â£¬ÈçÊÕ¼¯ÐÅÏ¢£¬·ÖÎö°²È«Í·²¿ÐÅÏ¢£¬Ê¶±ðAPI
µÄ¾ßÌå©¶´£¬Ä¿Ç°Ö§³ÖSSRF¡¢XXE¡¢Path TraversalµÈ©¶´µÄ¼ì²â¡£ |