CreateProcessA²ÎÊýÐÍShellcodeµÄ±àÂëÎÊÌâ×êÑÐ
°ä²¼¹¦·ò 2021-12-22µ¥Ò»À´½²£¬¸Ã½ÚÔìϵͳµÄ·ì϶ÓÉÁ½¸ö·¨Ê½×é³É£ºÖ÷ÌⷨʽCoreProcessºÍ¸¨Öú·¨Ê½HelpProcess£¬Ö÷ÌⷨʽCoreProcessͨ¹ýϵͳº¯ÊýCreateProcessAÀ´Æô¶¯HelpProcess£¨Í¬Ê±´«µÝÁËÓйزÎÊý£©¡£ÆäÖУ¬CoreProcessµÄ¼ò»¯´úÂëÈçÏ£º

ÏÔÈ»£¬HelpProcessµÄWinMainº¯Êý´æÔÚÒ»¸ö¾µäµÄÕ»Òç¶Âí½Å¡£µ±lpCmdLineµÄÊý¾Ý³¤¶È³¬¹ý400×Ö½Úʱ£¬¶ÔbuffµÄstrcpy²Ù×÷¾Í»á²úÉúÒç³ö£»µ±³¤¶È³¬¹ý404×Ö½Úʱ£¬¾Í»á¸²¸Çµ½eipCallerNext£¬´Ó¶ø½Ù³ÖHelpProcessµÄ·¨Ê½½ÚÔìÁ÷¡£
»ØËÝ´úÂë¿ÉÖª£¬lpCmdLineµÄÊý¾ÝÆðÔ´ÊÇCoreProcessµÄCreateProcessAŲÓã¬ÇÒÊÇÓû§¿É¿ØµÄ¡£Òò¶ø£¬¸Ã·ì϶µÄÀûÓÿ´ÆðÀ´Êǵ¥Ò»µÄ£¬Ö»±ØÒªÍÆËãºÃeipCallerNextµÄÆ«ÒÆÁ¿²¢ÀûÓÃshellcodeÌî³äbuff¼´¿É¡£¸Ã·ì϶µÄÀûÓÃÁ´ºÍ²Ö¿â²¼¾ÖÈçÏÂËùʾ£º

ÔÚÀûÓùý³ÌÖУ¬Ñ¡È¡²âÊÔÌî³ä×Ö·û½øÐÐÒç³öʱ£¬eipCallerNextµÄ¸²¸Ç×ÜÊÇÕýÈ·µÄ£»µ«Ñ¡È¡metasploitµÄshellcodeÀ´Òç³öʱ£¬eipCallerNextµÄ¸²¸Ç¾Í±äµÃ²»ÕýÈ·¡£¶ÔÊý¾Ý½øÐбÈÁ¦ºó·¢ÏÖ£¬shellcodeÔÚCoreProcessºÍHelpProcessÊDz»Ò»ÑùµÄ£¬¼´shellcode´«µÝµ½HelpProcessºó²úÉúÁËŤת¡£´Ë±í£¬Í¨¹ý³¢ÊÔmetasploitµÄ·ÖÆçshellcode£¬·¢ÏÖÕâÖÖŤתûÓÐÏÔÖøµÄ·¨¹æ¿ÉÑ¡£
Õë¶ÔÕâ¸öÎÊÌ⣬ADLabµÄ°²È«×êÑÐÔ±½øÐÐÁËÉî¿ÌµÄ·ÖÎö£¬ÅªÇåÁËCreateProcessA²ÎÊý´«µÝµÄshellcodeµÄ±àÂëÎÊÌ⣬²¢¿ª·¢ÁË×Ô¶¯»¯´¦Öò½Ö裬´Ó¶ø¼æÈÝËÁÒâshellcode¡£
CreateProcessAµÄ²ÎÊý´¦ÖÃ
Windows²Ù×÷ϵͳµÄÄÚºËÊÇÖ§³ÖÈ«Çò¸÷Àà˵»°µÄ£¬ÆäÌṩͳһµÄUnicode±àÂëÐÍÄÚºË̬API£»Õë¶Ô¾ßÌåµÄ¹ú¶È»òµØÓò£¬Windowsͨ¹ýÇøÓò±àÂëÀ´ÊµÏÖ±¾µØËµ»°Ö§³Ö£¬¼´Ansi×Ö·û´®Ð͵ÄÓû§Ì¬API¡£ÕâЩÓû§Ì¬APIÔÚÄÚ²¿ÏȰÑAnsi×Ö·û´®×ª»»ÎªUnicode×Ö·û´®£¬¶øºóÔÙŲÓÃÄÚºË̬API£»Õâ¸öת»»¹ý³ÌÊÇͨÃ÷µÄ£¬Óû§±àдµÄ·¨Ê½¶Ô´ËÎÞ¸ÐÖª¡£
ÔÚWindow²Ù×÷ϵͳÉÏ£¬1¸öUnicode×Ö·ûÓÉ2¸ö×Ö½Ú×é³É£¬1¸öAnsi×Ö·ûÓÉ1¸ö×Ö½Ú»ò2¸ö×Ö½Ú×é³É¡£µ±Ê××Ö½ÚµÄÖµÊÇ0µ½127ʱ£¬ËüÊÇ1¸öASCII×Ö·û£¬¶ÔÓ¦Unicode×Ö·ûµÄ2×Ö½ÚµÄÄÚÈݾÍÊǸÃASCII×Ö·û¼Ó1¸öÌî³ä×Ö·û0£»ÀýÈ磬Ansi×Ö·û¡±A¡±£¬Æä¶ÔÓ¦µÄUnicode×Ö·ûÊÇ¡±A\x00¡±¡£µ±Ê××Ö½ÚµÄÖµ´óÓÚ127ʱ£¬Ôòµ±Ç°×Ö½ÚºÍϸö×Ö½Ú×éºÏÆðÀ´ÊÇÒ»¸öÇøÓò˵»°µÄ×Ö·û£¬ÇøÓò˵»°×Ö·û´æÔÚ¶ÔÓ¦µÄUnicode×Ö·ûÓ³Éä±í£»ÀýÈ磬¡±\xce\xd2¡±µÄ¡°\xce¡±²»ÊÇ1¸öºÏ·¨µÄASCII×Ö·û£¬ËüÖ»Äܺ͡°\xd2¡±½áºÏ×÷Ϊ1¸öÖÐÎÄ×Ö·û¡°ÎÒ¡±£¬¶ÔÓ¦µÄUnicode×Ö·ûÊÇ¡±\x11\x62¡±¡£
ÈçÏÂËùʾ£¬CreateProcessA¾ÍÊÇÒ»¸öAnsi±àÂëÐ͵ÄÓû§Ì¬API£¬×Ö·û´®¡±AAAA¡±»á±»×Ô¶¯×ª»»ÎªUnicode×Ö·û´®²¢´«µÝ¸øHelpProcess£¬¶øºóÔÚŲÓÃWinMain֮ǰÓÖ±»×Ô¶¯»¹ÔΪAnsi×Ö·û´®¡£Òò¶ø£¬¶ÔÓÚAnsi×Ö·û´®¡±AAAA¡±£¬CoreProcessºÍHelpProcessÔÚ·¨Ê½¿ª·¢É϶¼ÎÞÐè×öÈκζî±íµÄ´¦Öá£

ͨ³£Çé¿öÏ£¬CreateProcessA²ÎÊýlpCmdlineµÄÆðÔ´ÊÇ¿¿µÃסµÄ£¬ºÃ±È±àÒëʱԤԼÒåµÄ×Ö·û´®ºÍAPIµÄ·µ»ØÖµ£¬´ËʱlpCmdline¶¼ÊÇÕýÈ·µÄAnsi×Ö·û´®¡£Òò¶ø£¬CreateProcessÏÕЩ×ÜÄÜÔÚUnicodeºÍAnsiÖ®¼ä×ÔÓɵØÕýȷת»»¡£
ÏÖʵÉÏ£¬¶ÔÓÚÈκÎÒ»ÃÅÇøÓò˵»°£¬ÆäAnsi×Ö·ûºÍUnicode×Ö·ûµÄÓ³Éä¶¼²»ÊÇÖðÒ»Ó³Éä¹ØÏµ£»¼´ÔÚ2×Ö½ÚµÄÈ«Êýȡֵ¿Õ¼äÖУ¬Ansi×Ö·û±íµÄÓÐЧÏîÊý×ÜÊÇÓ×ÓÚUnicode×Ö·û±íµÄÓÐЧÏîÊý¡£ÕâÒâζ×Å£¬Õë¶ÔÎÞ·¨È·ÈÏÊÇÇøÓò˵»°µÄ2¸ö×Ö½Ú£¬ÈôÊÇÇ¿ÔìÊÓ×÷Ansi×Ö·ûÔòת»»³ÉUnicode×Ö·ûºó²»Ô¸¶¨ÄÜ»¹ÔΪ³õʼµÄAnsi×Ö·û¡£ÀýÈ磺¡±\xeb\x2a¡±ÊÇÒ»ÌõͨÀýµÄjmp offsetÖ¸ÁËü²»ÊÇ1¸öºÏ·¨µÄÖÐÎÄ×Ö·û£»ÈôÊÇÊÓ×÷Ansi×Ö·ûÇ¿Ôìת»»ÎªUnicode×Ö·ûÔòÊÇ¡±\x3f\x00¡±£¬ÔÙ´Îת»»ÎªAnsi×Ö·û¼´ÊÇ¡±?¡±£¬ÃÔʧÁËjmp offsetÖ¸ÁîµÄÓïÒå¡£
Òò¶ø£¬Í¨¹ýCreateProcessAµÄcmdline²ÎÊý½øÐÐshellcode´«µÝ£¬±Ø±ØÒªË¼¿¼ÇøÓò˵»°µÄAnsi×Ö·ûºÍUnicode×Ö·ûÏ໥ת»»µÄÎÊÌâ¡£
ÔÚ±¾Îĵķì϶ÀûÓð¸ÀýÖУ¬±¾µØÓòÓòµÄ˵»°ÊÇÖÐÎļòÌ壬¶ÔÓ¦Ansi±àÂë±íÊÇGBK¡£Òò¶ø£¬±Ø±ØÒª¶ÔmetasploitµÄshellcode½øÐÐGBK±àÂ룬ȷ±£ÆäÊÇÕýÈ·µÄAnsi×Ö·û´®¡£
GBK±íµÄ±àÂëÔÚ2×Ö½Úȡֵ¿Õ¼äµÄÁìÓòÊÇ8140£FEFE£¬¼´µÚ1×Ö½ÚµÄȡֵÁìÓòÊÇ0x81µ½0xFE£¬µÚ2×Ö½ÚµÄȡֵÊÇ0x40µ½0xFE£¬ÈçÏÂËùʾ£º

´Ë±í£¬µÚ2×Ö½ÚµÄÏÖʵÓÐЧȡֵ»¹Óиü¶àÔ¼Êø¡£ºÃ±È£¬µÚ2×Ö½Ú²»ÄÜΪ0X7F¡£Õë¶ÔijЩȡֵµÄ×Ö½Ú£¬µÚ2×Ö½ÚµÄȡֵ±È[0x40, 0xFE]µÄ¿Õ¼ä¸üÓס£ÈçÏÂͼËùʾ£¬ÓеÄÖ»ÄÜÈ¡¸Ã¿Õ¼äµÄºó°ë²¿ÃÅ£¬ÓеÄÔòÖ»ÄÜȡǰ°ë²¿ÃÅ¡£
¶ÔÓÚshellcodeÀ´½²£¬Æäÿ¸ö×Ö½ÚµÄȡֵÔÚ0µ½255Ö®¼ä¶¼ÊÇÆëÈ«ºÏ·¨µÄ¡£Òò¶ø£¬±¾Îĵķì϶ÀûÓÃҪʵÏÖshellcodeµÄÇáÒ×´úÌæ£¬±Ø±ØÒªÓÐÒ»ÖÖ²½ÖèÀ´¶ÔshellcodeÖÐÎ¥±³GBK±àÂëµÄ×Ö½Ú½øÐд¦Ö㬴ӶøÔ¤·ÀAnsi×Ö·ûºÍUnicode×Ö·û¼äת»»µ¼ÖµÄshellcode×Ö·û±»Å¤×ªµÄÎÊÌâ¡£Ò»¸ö¸ù»ùµÄ²½ÖèÊÇÒÀÕÕÈçϵÄÁ÷³Ì¶Ôshellcode½øÐд¦Öã¬Æä¹Ø¼üÊǶÔGBK±í½øÐвé±í²¢½¨¸Ä»ã±àÖ¸Áî¡£

ÒÔÈçϵÄshellcodeΪÀý£¬ÔÚɨÃèµ½×Ö½Ú0xEBʱ£¬·¢ÏÖ³¤¶ÌASCII×Ö·ûÇÒ²é±íGBKÁ˾ÖÊDz»´æÔÚ£¬±ØÒª½øÐÐת»»£»²éÎÊGBK±íºó·¢ÏÖ£¬ÔÚ0xEB֮ǰ²åÈë0x90Äܹ»Ê¹µÃ90 EBÊÇÒ»¸öºÏ·¨µÄGBK×Ö·û£¬Í¬Ê±90EB 38ÓÖ²»Å¤×ªÔÀ´µÄ»ã±àÓïÒ壬ת»»³É¹¦¡£Í¬Àí£¬³ÖÐøÉ¨Ãèµ½ÏÂÒ»¸ö×Ö½Ú0XEBʱ£¬ÔÙ×öͬÑùµÄת»»¾ÍÄܹ»¡£µ«ÊÇ£¬µÚ2´ÎµÄת»»²åÈëÁËеÄ×Ö½Ú0x90£¬µ¼ÖÂÁËÔʼlab1¶ÔÓ¦µÄÆ«ÒÆÁ¿²úÉúÁËŤת£»ÔʼlabµÄÖ¸ÁîÏÖʵλÓÚתºóµÄlab+1µØÎ»£¬Ê¹µÃµÚÒ»¸ö0XEBµÄÓïÒå·¸·¨ÁË¡£Òò¶ø£¬×ª»»¹ý³Ì»¹ÒªÇó¸ú×ÙÖ¸ÁîÇø¿éµÄ³¤¶È±ä¶¯¡£

³ýÁËÖ¸ÁîÇø¿éµÄ³¤¶ÈŤת±í£¬»¹ÓÐÆäËü¼æÈÝÐÔÎÊÌâ¡£ºÃ±È£¬shellcodeÖÐÌØÊâȡֵ£¨µäÐÍÓÐ0£©µÄ×Ö½Ú´¦ÖÃÎÊÌ⣬¶ÔshellcodeµÄÄÚǶ²ÎÊýÅú¸ÄÎÊÌâµÈ¡£Òò¶ø£¬Ö»¹Ü²é±íת»»ÊÇ×îµ××ӵķ¨×Ó£¬µ«È«±í²éÎʵĿռä´ó£¬ÏÞ¶ÈÁËshellcodeµÄ½Ã½ÝÐÔ¡£ÎªÏàʶ¾ö¸ÃÎÊÌ⣬ADLabµÄ°²È«×êÑÐÔ±Ìá³öÁËÒ»ÖÖ»ùÓÚÍÆËãµÄshellcode±àÂë²½Öè¡£
ShellcodeÍÆËãת»»
Ê×ÏÈ£¬ÎÒÃǰÑshellcode·ÖΪÁ½²¿ÃÅ£ºÍ·²¿µÄ¹Ì¶¨decoderºÍβ²¿µÄ¶à±äpayload¡£¶øºó£¬Ñ¡È¡²é±í·½Ê½½øÐÐÊÖ¹¤±àдÇкÏGBK±àÂëµÄ»ã±à´úÂë¡£ÆäÖУ¬decoderµÄ³¤¶ÈºÜÓÐÏÞ£¬¾ö¶¨ÁËÕâ¸ö±àдµÄ¼ÛÖµ²»´ó£»Í¬Ê±£¬¶à±äpayloadÊÇûÓжî±íÏ޶ȵģ¬Í¨¹ý±àд¶ÔÓ¦µÄencoderÀ´±àÂëpayloadʹÆä²»Î¥·´GBK±àÂ룬ÓÖÄܹ»±»decoder»¹Ô¡£Í¨¹ýÕâÖÖ·½Ê½£¬¶ÔÔʼshellcodeµÄÑ¡ÔñºÍŤת¾ÍÆëÈ«²»ÓùØÇÐGBK±àÂëÎÊÌ⣬ʹµÃ¸Ã·ì϶µÄÀûÓÃÔ½·¢·á˶¡£
ΪÁËÏ÷¼õdecoderµÄÌå»ý£¬ÎÒÃÇÉè¼ÆÁËÒ»ÖÖÍÆËã²½ÖèÀ´±àÂëºÍ½âÂ룬ÕâÑù¾Í²»±ØÒª´æ´¢GBK×Ö·û±í»òÕ߸´ÔӵĹ涨¡£Ôʼshellcode±àÂëʱµÄÍÆËã¹æ¶¨ÈçÏ£º
Óöµ½×Ö½ÚÊÇASCII¡¢0x80ºÍ0xff£¬Ö±½Ó±£Áô¡£
Óöµ½×Ö½ÚÊÇ\x00£¬×ª»»³É¼Ó·¨ÔËËã·û\x90ºÍ2¸öÍÆËãÊý·û\x80ºÍ\x80¡£
Óöµ½×Ö½ÚÊÇ\x90£¬×ª»»³É¼Ó·¨ÔËËã·û\x90ºÍ2¸öÍÆËãÊý·û\x48ºÍ\x48¡£
Óöµ½2¸ö×Ö½ÚÄܹ»×ª»»Îªunicode×Ö·û£¬Ö±½Ó±£ÁôÕâ2¸ö×Ö½Ú¡£
Óöµ½Ç°Ãæ¶¼²»ÄÜ´¦ÖõÄ×Ö½Ú£¬Ö±½Óת»»³É¼Ó·¨ÔËËã·û\x90ºÍ2¸öÍÆËãÊý·û£¬µÚ1¸öÊÇ\x80£¬µÚ2¸öÊDzîÖµ¡£
ѡȡÉÏÊöµÄ±àÂë²½Öèºó£¬ÈκÎshellcode¶¼Äܹ»±»×ª»»ÎªºÏ·¨GBK×Ö·û´®£¬²¢ÇÒdecoder¶ÔpayloadµÄ½âÂëÍÆËãÒ²¼«¶Èµ¥Ò»£¬Ö»±ØÒªÈçϵÄ1ÌõÎÄÔò£º
Óöµ½×Ö·ûÊÇ\x90£¬Ö±½Ó¶Ôºó2¸ö×Ö·û½øÐмӷ¨ÍÆË㣬²¢ÓÃÁ˾ִúÌæ×Ö·û\x90¡£
ÖÁ´Ë£¬CreateProcessA²ÎÊý´«µÝµÄshellcodeµÄ±àÂëÎÊÌâ¾ÍÈ«Êý±»Ô¼ÊøÔÚÁËÖ»ÓÐÒ»ÌõÎÄÔòµÄdecoder´úÂëÖУ¬ºÜÏÔÈ»ÕâÊÇÒ»¸öÌìǵ¼«¶ÈÃ÷È·µÄ²¿ÃÅÎÊÌ⣬Òò¶øºÜÈÝÒ׾ͽâ¾öÁË¡£Ñ¡È¡ÕâÖÖ²½Ö裬±¾Îĵķì϶ÀûÓÃÄܹ»ÇáÒ×ŲÓÃmetasploitÖеÄshellcode£¬ÎÞÐèÔÙ²»°²ËüÃǵÄÖ¸ÁîÄÚ²¿Ï¸½Ú¡£
ÔÚ¶à˵»°»·¾³Ï£¬shellcodeÈôÊDz»ÊÇÖ±½ÓµÄÄÚ´æ´«µÝ£¬Ôò¿ÉÄܻᱻϵͳAPIº¯ÊýËùת»»£¬´Ó¶øµ¼ÖÂÆäÒòÔÚ»ñµÃÖ´ÐÐȨ֮ǰ²úÉúÄÚÈÝŤת¶øÎÞЧ¡£Òò¶ø£¬ÔÚ·ì϶ÀûÓùý³ÌÖУ¬±ØÒª°ÑÎÈshellcodeÊÇ·ñÊܵ½¶à˵»°°æ±¾µÄAPIÓ°Ïì¡£


¾©¹«Íø°²±¸11010802024551ºÅ