远程检测客户机上的共享设置情况

本章接着讨论自我检测的问题,其实不是WannaCrypt 会利用共享漏洞,还有很隐患和早期的黑客攻击都会利用 $ICP 连接,而且Windows 在默认情况会把你所有的本地磁盘都创建隐藏的共享,以$ 为尾符的的隐藏共享,在内网你的弱密码情况下,轻易就能连上你的磁盘,尽管你没有专门设置过共享;
在没有封堵445 端口之外,也可以扫描一下自己的机器上的共享情况,微软Windows API 有提供一整套函数对共享进行操作,在知晓或已破解远程机器的用户名密码前提下,通过API 你可以直接在对方不知情下为之创建共享,这个不在今天的讨论范围内。


直接看代码,可以从MSDN 上抄段示例代码过来改装一下就能放在自己的程序中使用:


void testShare(CStringList*  shareList)
{
	PSHARE_INFO_502 BufPtr, p;
	NET_API_STATUS res;
	LPTSTR   lpszServer = NULL;
	DWORD er = 0, tr = 0, resume = 0, i;


	do 
	{
		res = NetShareEnum(lpszServer, 502, (LPBYTE *)&BufPtr, MAX_PREFERRED_LENGTH, &er, &tr, &resume);


		if (res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
		{
			p = BufPtr;


			for (i = 1; i <= er; i++)
			{
				//printf("%-20S%-30S%-8u", p->shi502_netname, p->shi502_path, p->shi502_current_uses);				
		
				CString shi502_netname = p->shi502_netname;
				CString shi502_path = p->shi502_path;
				DWORD shi502_current_uses = p->shi502_current_uses;
				bool ValidSecurity;


				if (IsValidSecurityDescriptor(p->shi502_security_descriptor))
				{
					//printf("Yes\n");
					ValidSecurity = true;
				}
				else
				{
					//printf("No\n");
					ValidSecurity = false;
				}


				
				CString outS;
				outS.Format(L"%s,%s,%d,%d", shi502_netname, shi502_path, shi502_current_uses, ValidSecurity);
				shareList->AddTail(outS);
				p++;
				
			}


			NetApiBufferFree(BufPtr);
		}
		else
		{
            //printf("Error: %ld\n", res);


		}
			
	}
	while (res == ERROR_MORE_DATA); 
	return;
}



/
调用方法:
CStringList*  shareList = new  CStringList();
	testShare(shareList);


	POSITION rPos;
	rPos = shareList->GetHeadPosition();


	int h = 0;
	while (rPos != NULL)
	{
		CString tmps = shareList->GetNext( rPos );


		m_ListBox1.AddString(tmps);
		h++;
	}


	if (  h != 0 )
	{
		CString hStr;
		hStr.Format( L"发现共享 %d 处",h  );


		m_ListBox1.AddString(  hStr );
	}
	else
	{
		m_ListBox1.AddString( L"未发现共享"  );
	}


我封装过的函数参数是个CStringList 指针,可以得到一个集合,如果需要的话可能转成自己想使用类型,这里是为了方便在小窗口打印出来,直接显示;


后期就可以通过网络通讯把读到共享列表发给管理端,管理端就知道下面的客户机谁开了共享,共享了些什么...


 【 本系列会持续更新 请关注公众号 】



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值