обход UAC, KUSER_SHARED_DATA

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by sn0w, 28 Aug 2014.

  1. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    глянул кодес пресловутой RtlQueryElevationFlags,

    там дословно примерно так:

    Code:
    unsigned int NTAPI RtlQueryElevationFlags(DWORD *pdwElevationFlags)
    {
    	// if 0 then no UAC prompt
    	*pdwElevationFlags = 0;
    
    	
    	// _KUSER_SHARED_DATA *pSharedUserData = (_KUSER_SHARED_DATA *)0x00000000`7ffe0000;
    	// SharedDataFlags bitfield:
    	   //+0x2f0 DbgErrorPortPresent : 0y0
    	   //+0x2f0 DbgElevationEnabled : 0y1  
    	   //+0x2f0 DbgVirtEnabled   : 0y1	
    	   //+0x2f0 DbgInstallerDetectEnabled : 0y1 
    	   //+0x2f0 DbgLkgEnabled    : 0y0
    	   //+0x2f0 DbgDynProcessorEnabled : 0y0
    	   //+0x2f0 DbgConsoleBrokerEnabled : 0y0
    	   //+0x2f0 DbgSecureBootEnabled : 0y0
    
    	if(pSharedUserData->SharedDataFlags & 2) // DbgElevationEnabled set
    		*pdwElevationFlags = 1;
    	
    	if(pSharedUserData->SharedDataFlags & 4) // DbgVirtEnabled set
    		*pdwElevationFlags |= 2;
    
    	if(pSharedUserData->SharedDataFlags & 8) // DbgInstallerDetectEnabled set
    		*pdwElevationFlags |= 4;
    
    	return 0;
    }
    в статье на хабре чел зачемто сплайсил RtlQueryElevationFlags, чтобы не выставлялись флаги элевации, в то время как можно было просто захардкодить 2 версии под х64 и х86, типа чтобы просто переписывалось на *pdwElevationFlags = 0; return 0;

    тащемта вопрос один - существуют ли реализации с затиранием битфилда из KUSER_SHARED_DATA из юзермода?
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    а в чем соль то?
    хукнуть функцию это простой и эффективный метод.
    ну можно пропатчить ее в самой ntdll
     
  3. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    зачем тащить с собой либу детурса с дизасмом длин когда все решается обычным битхаком?
    втрое - да, она экспортируется нтдлл кэп
     
    #3 sn0w, 29 Aug 2014
    Last edited: 29 Aug 2014
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    так и патч себе ее в ntdll, и не надо ниче таскать.Я правда не понимаю что такого, ну возьми не детур, а маленький mhook в чем проблема собсно?
     
  5. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    в чем заключается мой вопрос указано в последней строке моего первого поста в этом треде