¼ÇÒ»´ÎVMwareµÄ±ÀÀ£µ÷ÊÔ·ÖÎö¹ý³Ì

°ä²¼¹¦·ò 2020-08-11

1.×êÑв¼¾°


VMware WorkstationÊÇÒ»¿îÖ÷Á÷µÄÐé¹¹»úÈí¼þ£¬½üÆÚGA»Æ½ð¼×ADLab°²È«×êÑÐÔ±ÔÚʹÓÃVMwareÐé¹¹»úµÄ¹ý³ÌÖÐÓöµ½Ðé¹¹»úÒì³£±ÀÀ£µÄÎÊÌ⣬µ±´Ó7zipÖÐÖ±½Ó½«ÎļþÍÏ×§µ½VMwareÐé¹¹»úÖУ¬»áÔì³ÉÐé¹¹»úÒì³£¹Ø¹Ø¡£Ä¿Ç°ÒѲâÊÔ¹ýVMware 15.5.0¡¢15.5.2¡¢15.5.5 ÒÔ¼°7zip 19.0¡¢20.02µÈ°æ±¾¡£±¾ÎĽ«Í¨¹ý¶ÔVMwareºÍ7zip·¨Ê½½øÐиú×Ù·ÖÎö£¬×îÖÕ¶¨Î»Ðé¹¹»úÒì³£¹Ø¹ØÔ­Òò¡£

2.VMware¶Ëµ÷ÊÔ·ÖÎö

ʹÓÃWinDbg-IÖ¸ÁWinDbgÉèÖÃΪ¼´Ê±µ÷ÊÔÆ÷£¬VMware-vmx.exe·¨Ê½±ÀÀ£ºó×Ô¶¯µ¯³öWinDbg¡£²Ö¿âÐÅÏ¢ÈçÏ£º


640?wx_fmt=png


µ÷ÊÔÐÅÏ¢ÏÔʾstack buffer overrunÒì³££¬×î³õ´§¶È¿ÉÄÜÊÇ»º³åÇøÒç¶Âí½Å¡£


640?wx_fmt=png


ͨ¹ý²éÎÊ×ÊÁϺó·¢ÏÖ£¬´ÓWindows 8ÆðÍ·£¬WindowsÉè¼ÆÁËÒ»¸öеÄÖжÏINT 29H£¬ÓÃÒÔ¼±¾çÅ׳öʧ°Ü£¬ÔÚsdkÖб»ÉêÃ÷Ϊ__fastfail£¬ __fastfailÄÚ²¿º¯Êý²»»á·µ»Ø¡£


ϵͳ½á¹¹
Ö¸Áî
´úÂë²ÎÊýµÄµØÎ»
x86
int 0x29
ecx
x64
int 0x29
rcx
ARM
²Ù×÷Âë 0xDEFB
r0


ÔÚÉÏͼÖУ¬·¨Ê½ÖÕÖ¹ÓÚint 29h£¬¶øËüµÄ²ÎÊýΪ0xa£¬¶ÔÓ¦FAST_FAIL_GUARD_ICALL_CHECK_FAILURE£¬ÓÉ´Ë´§¶ÈÎÊÌâ¿ÉÄܳʴ˿ÌCFGµÄ²é³­¹ý³ÌÖС£


640?wx_fmt=png


´Óº¯ÊýŲÓÃÕ»ÖÐvmware_vmx+0x58b21µØÖ·ÏòÉÏ×·Ò䣬¶¯Ì¬µ÷ÊÔ·¨Ê½£¬±ÈÁ¦·¨Ê½Õý³£ÔËÐÐÓëÒì³£±ÀÀ£µÄº¯ÊýŲÓÃÇø±ð£¬¶¨Î»µ½Ó뷨ʽ±ÀÀ£Óйصĺ¯Êýsub_1400965A0¡£


ʹÓÃWindbg Attach vmware-vmx.exe·¨Ê½£¬ÔÚsub_1400965A0º¯ÊýÉèÖöϵ㣬ÆðÍ·¶¯Ì¬µ÷ÊÔ¡£´Ó7z´ò¿ªµÄѹËõÎļþÖÐÍÏ×§cdp.pcapngµÄÎļþ£¬·¨Ê½Ôڶϵ㴦ͣÏ¡£Í¨¹ý¶¯Ì¬µ÷ÊÔ¿ÉÖª¸Ãº¯ÊýÖÐcalloc·ÖÅäÁËÈý¸ö¶Ñ¿Õ¼ä£¬±ðÀëÓÃÓÚ´æ·Å£ºÖ÷»úһʱÎļþõè¾¶temp_path¡¢Ö¸±êÎļþÃûfile_nameÒÔ¼°VMwareÖеĻº´æÄ¿Â¼Ãûvm_cache_dir_name¡£


640?wx_fmt=png


µ«ÊÇ´ò¿ªÖ÷»úTempĿ¼ÏÂȴûÓз¢ÏÖ¸ÃÎļþ£¬Òò¶ø³õ²½Åж¨ÕâÊÇ·¨Ê½±ÀÀ£Ô­Òò¡£³ÖÐøÍùÏ¿´£¬3¸öÎļþÓйزÎÊýÈ«¶¼´«ÈëÁËsub_140579b30º¯Êý¡£


640?wx_fmt=png


½øÈ뺯Êýsub_140579b30£¬¶¨Î»temp_path²ÎÊýµÄ´¦Öá£ÆäÖУ¬sub_14057FF90º¯Êý¶Ô´«ÈëµÄtemp_path½øÐÐÁËÖðÒ»±éÀú£¬sub_1405B2080º¯Êý¶Ô´«ÈëµÄtemp_path½øÐÐÁË·¸·¨ÐԲ鳭¡£ÏÂÃæ³Áµã·ÖÎösub_140576460º¯Êý¡£


640?wx_fmt=png


sub_140576460º¯Êý½«õè¾¶²ÎÊýtemp_path´«ÈëÁËsub_14049DA50¡£


640?wx_fmt=png


Ê×ÏÈ£¬º¯Êýsub_14049DA50ͨ¹ýsub_140477C70¶Ô×Ö·û´®½øÐÐÁË´¦Ö᣶øºó£¬Å²ÓÃwstat64»ñÈ¡ÏàÓ¦õè¾¶µÄÎļþ״̬£¬ÈôÊdzɹ¦»ñÈ¡Ôò±£Áôµ½Ò»¸ö½á¹¹ÌåÖУ¬²»È»·µ»Ø0xffffffff¡£ÓÉÓÚTempĿ¼Ï²¢Î´·¢ÏÖ±¸·ÝÎļþ£¬µ¼Ö»ñȡ״̬ʧ°Ü£¬´Ó¶ø·µ»Ø0xffffffff¡£


640?wx_fmt=png

640?wx_fmt=png


·µ»Ø0xffffffffºó£¬³Áлص½sub_140579b30º¯ÊýÖУ¬·¨Ê½Ìø³öwhileÑ­»·´ïµ½ÈçϵØÎ»£¬Êä³öÃýÎóÐÅÏ¢²¢Ìø×ªÖÁsub_140572A70¡£


640?wx_fmt=png


´Ósub_140572A70×îÖÕÖ´Ðе½sub_1400960C0£¬´ïµ½ÈçϵØÎ»½«vmware_vmx+0xb1ed90´¦µÄÖµ¸³¸øÁËrsi£¬¼´Îª0¡£


640?wx_fmt=png


³ÖÐøÍùÏÂÖ´ÐУ¬½«rsiÖÐ0Öµ¸³Öµµ½raxÖУ¬¶øºóŲÓÃ0x7ff8fab0c510´¦£¬¼´ntdll!LdrpDispatchUserCallTarget¡£


640?wx_fmt=png


´Ë´¦Ó뾲̬ϵĹý³ÌÓÐÒ»µã·ÖÆç£¬¾²Ì¬Ï¸ô¦Å²ÓÃÈçÏ£º


640?wx_fmt=png


ÈôÊÇÒÀÕÕ¾²Ì¬¹ý³ÌÖ´ÐУ¬¸Ãµ±´ïµ½sub_1407C7650,¼´ÈçϵØÎ»£º


640?wx_fmt=png

ÔÚntdll.dll±»¼ÓÔØÖ®Ç°£¬¸Ã´¦Êý¾ÝÈÔ¾ÉΪÉÏͼËùʾµØÖ·£º


640?wx_fmt=png


ºóÀ´ÔÚntdll.dllÖÐÖ´ÐÐCFG£¨ControlFlowGuard£©± £»¤»úÔ죬½«vmware_vmx+0x7c9668µØÖ·´¦Êý¾Ý½øÐÐÁ˸Äд£¬´Ó¶øÖ´Ðе½ntdll!LdrpDispatchUserCallTargetÖС£


640?wx_fmt=png


ÔÚntdll!LdrpDispatchUserCallTargetº¯ÊýÖУ¬È¡r11+r10*8´¦µÄÖµ¸³Öµ¸ør11ʱ³öÏÖÁËÎÊÌ⣬¸ÃµØÖ·Îª¿Õ£¬¾ÍÔì³ÉÁË¿ÕÖ¸ÕëÒýÓ㬴ӶøÖ´ÐÐÁËint 29h£¬Ôì³ÉÒì³£¡£È»¶ø£¬¼´±ãûÓÐCFG»úÔ죬·¨Ê½Ò²»áÔÚÖ´ÐÓ×°jmp rax¡±´¦±ÀÀ££¬Í¨¹ýÏÂͼÄܹ»¿´³ö£¬CFG»úÔì½ö½öÊÇÔÚÕý±¾·¨Ê½Ìø×ªÖ¸ÁîǰÔö³¤ÁËһЩ²é³­¡£


640?wx_fmt=png

640?wx_fmt=png


ÖÁ´Ë£¬VMware±ÀÀ£µÄÔ­Òò¸ù±¾·ÖÎö·ÖÁËÈ»¡£ÁíÒ»¸öÒÉÄÑÊÇ£¬ÎªÊ²Ã´7zipÒѾ­ÔÚϵͳTempÏÂÌìÉúÁËÎļþ£¬²¢ÇÒVMwareÒ²ÒѾ­»ñÈ¡µ½ÁËõè¾¶²ÎÊý£¬È´ÔÚÒÆ¶¯Ç°×Ô¶¯É¾³ýÁËÎļþÄØ¡£Õâ¾Í±ØÒª´Ó7zipÖÐѰÕҴ𰸡£


3.7zip¶Ëµ÷ÊÔ·ÖÎö

ÓÉÉÏÒ»½Ú·ÖÎö¿ÉÖª£¬Vmware crashÔ­ÒòÊÇTempĿ¼ÏÂÎļþ±»É¾³ý¡£ÔĶÁ7zipÔ´Âë£¬Ëø¶¨ÁËCPP/Windows/FileDir.cppÖеÄÎļþɾ³ýº¯Êý¡£


640?wx_fmt=png


ʹÓÃWinDbg¼ÓÔØ7zip£¬¶øºóÔÚRemoveº¯ÊýµØÎ»½øÐÐ϶Ï£¬·¨Ê½ÔËÐкó½øÐÐÍÏ×§²Ù×÷£¬ÔÚRemoveº¯ÊýÖжϺó¶ÔÓ¦µÄŲÓòֿâÈçÏÂËùʾ¡£


640?wx_fmt=png


²Ö¿âÖÐ7zFM+0x5b212µØÖ·Î»ÓÚº¯ÊýCPanel::OnDragÖУ¬¸Ãº¯ÊýΪÊó±êÍÏ×§²Ù×÷º¯Êý¡£µ±¼ì²âµ½¶Ô7zip´ò¿ªµÄĿ¼½øÐвÙ×÷ʱ£¬±ã»áÔÚTempĿ¼ÏÂÌìÉúÒ»¸öÒÔ7zE¿ªÍ·µÄËæ»ú¶¨ÃûÎļþ¼Ð¡£


640?wx_fmt=png


¶øºó£¬½«¸ÃÎļþ¼ÐÉèÖÃΪָ±êĿ¼£¬²¢ÇÒÉèÖÃÁËһЩÊý¾Ý¼°IpDropSourse½á¹¹Ìå¡£


640?wx_fmt=png


³ÖÐøÍùÏÂÄܹ»¿´µ½Ò»¸öDoDragDropº¯Êý£¬¸Ãº¯ÊýÖ°ÄÜÊǽøÐÐOLEÍÏ·ÅÓйزÙ×÷£¬Í¨¹ý¼ì²â¹â±êµÄÐÐΪ±ðÀëŲÓÃһЩ²½Öè²¢·µ»Ø¶ÔÓ¦µÄÊýÖµ¡£


640?wx_fmt=png


¶øºó£¬Æ¾¾ÝDoDragDropº¯ÊýµÄ·µ»ØÖ·´ÅжϹâ±êµÄÍÏ×§ÊÇ·ñÓÐЧ£¬´Ó¶øÖ´ÐжÔÓ¦µÄ²Ù×÷¡£


640?wx_fmt=png


´Ó7zipÖÐÍÏ×§Îļþµ½Ðé¹¹»ú£¬ÓÉÓÚÎÞ·¨»ñÖªÎļþÍÏ×§µÄÖ¸±êõè¾¶£¬Òò¶øDoDragDrop»á·µ»ØDRAGDROP_S_CANCEL(0x40101)£¬²»»áÖ´Ðп½±´²Ù×÷µÄ·ÖÖ§£¬¶øÊÇÖ±½Ó½«TempĿ¼ÏÂÌìÉúµÄһʱĿ¼ɾ³ý¡£


640?wx_fmt=png


4.Ó× ½á


7zipѹËõ°üÖÐÎļþÍÏ×§²Ù×÷»á´¥·¢DoDragDropº¯ÊýŲÓ㬸ú¯Êý»á»ñÈ¡ÎļþÊý¾Ý¼°¹â±êÖÕ³¡µÄµØÎ»¡£µ«Êǽ«ÎļþÍÏ×§µ½VMware´°¿Úʱ£¬DoDragDropº¯Êý²»ÄÜ»ñÈ¡ÕýÈ·µÄÖ¸±êõè¾¶£¬Òò¶øÎÞ·¨½«Îļþ¿½±´µ½Ö¸±êµØÎ»£¬´Ó¶øÖ±½Óɾ³ýһʱÎļþ£¬×îÖÕµ¼ÖÂVMwareÎÞ·¨»ñÈ¡Îļþ״̬Ôì³É±ÀÀ£¡£


²Î¿¼Á´½Ó£º

[1]https://0cch.com/2016/12/13/int29h/

[2]https://docs.microsoft.com/en-us/windows/win32/api/ole2/nf-ole2-dodragdrop

[3]https://github.com/kornelski/7z/tree/20e38032e62bd6bb3a176d51bce0558b16dd51e2



GA»Æ½ð¼×»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©


ADLab³ÉÁ¢ÓÚ1999Ä꣬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¸ÅÏëÊ×ÍÆÕß¡£½ØÖ¹Ä¿Ç°£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶½ü1100¸ö£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶900Óà¸ö£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£³¢ÊÔÊÒ×êÑз½Ïòº­¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑÓ×¢ÒÆ¶¯ÖÇÄÜÖն˰²È«×êÑÓ×¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑÓ×¢Web°²È«×êÑÓ×¢¹¤¿ØÏµÍ³°²È«×êÑÓ×¢ÔÆ°²È«×êÑС£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑÓ×¢¹ú¶È³Áµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨Òµ°²È«·þÎñµÈ¡£


lab.jpg