avatar

Catalog
网络安全基础04(下):文件共享服务器

概述

文件共享服务器,就是通过网络提供文件共享服务,提供文件下载和上传服务(类似于FTP服务器)。通常来说一个公司对外部公网会使用基于FTP协议的文件传输服务,对研发内网会使用基于CIFS协议的文件共享服务。

CIFS是由微软开发的一款SMB协议的衍生品,时至今日,CIFS实现的协议已经很少被使用,更多的则是经过升级的SMB2或SMB3。

创建共享

探讨协议不是本篇的核心,重要的是了解共享文件的实现方式,下面直接开始实验,演示如何创建共享:

(环境:Windows2003(服务器端),Windows XP(客户端))

  1. 第一步先将两台虚拟机放到同一个网络中,这里将XP与2003的网络适配器一项均设置为VMnet1。然后配置两个虚拟机的IP地址,让它们位于同一网段中。关掉防火墙,保证可以ping通。

  2. 接下来进入C盘新建一个文件夹,右键属性->共享,选择共享此文件夹,并设置共享名。点击确定,这样该文件夹就变成了一个共享文件夹。

  3. 设置完后,会发现该文件夹图标下面多了一个小手,就是共享文件夹的标志,接下来可以在文件夹中创建文件,图片等资源。便可让其它用户访问。

访问共享

在了解了如何创建共享,接下来就是如何访问共享。

(环境:Windows2003(服务器端),Windows XP(客户端))

  1. 老规矩,第一步,在Windows 2003上创建一个用户账号

  2. Win+R进入运行窗口,输入服务器的地址,格式如下:

    Code
    1
    2
    \\10.1.1.2
    这里服务器的地址为10.1.1.2,加上"\\"用来说明访问的是CIFS服务

    接着会尝试链接到服务器,再输入方才创建的用户,并确认。

  3. 接下来会进入到服务器上的共享文件夹,可以看到,用户访问共享文件夹看到的是文件夹的共享名,并不是真实的文件夹名,同时可以进入共享文件夹中查看共享的文件。

    需要说明的是,在登入共享服务器后,短期内再登录是会自动登录共享服务器的,不需要再次输入账号密码,因此如果试图换一个用户访问共享服务器,需要注销当前用户再登入,不过大多数情况下不需要考虑这点。

共享权限

在了解了创建共享与访问共享后,下面介绍一下共享文件的权限。例如,当我们试图删除共享文件夹上的文件时,就会出现如下错误。

有意思的是,出现了写拷贝错误,写拷贝我们在学习内核时遇到过,防止进程修改文件,从而将物理页属性为写拷贝的文件复制到一个新的物理页上,让进程指向新的物理页,这样就不会导致原本的文件被修改了。扯多了~~

回到共享权限上来,回到Windows 2003上,共享文件夹右键->属性->权限,这就是共享文件夹的权限列表了,可以看到有一个Everyone组,它这里一共就只有3个权限

那么是如何计算用户访问共享文件夹时的权限呢?这里给出结论:

  • 当用户由远程登录时(本例:通过Windows XP登录):将共享文件夹的权限与NTFS权限取交集,为用户最终的权限。
  • 当用户由本地登录时(本例:通过Windows 2003登录):仅受到文件NTFS权限的影响。

在共享文件夹中,由于文件的ACL的User组里没有给修改权限,因此用户删除不了图片。

如果想要用户能够删除,添加共享文件夹中的文件,只需要修改NTFS权限就可以(取消继承,单独给用户或者用户所在组设置权限),一般情况下,共享权限都会给完全控制,这样看的就也是文件本身的NTFS权限了。另一个要说明的是,若用户单独被拿出来设置NTFS权限,这个权限给的不是用户,而是用户的SID,通过指令

Code
1
whoami /user

查看当前用户的SID。

隐藏共享

什么是隐藏共享?在命令行键入指令

Code
1
net share

便可以查看该系统中所有共享文件夹。其中后面带$符号的就属于隐藏共享

可以看到,我们唯一的分区C盘,以及C盘下的目录均被设置为了共享,这其实是非常可怕的,这意味着它人在知道了域管理员账号密码的情况下,可以远程访问服务器内所有的文件内容。微软当初设计时,是为了方便用户能够远程控制自己的电脑,但实际上,没有多少人用这些功能,反倒是方便了黑客。

关于工作环境

方才提到了域管理员,这里简单说明一下。计算机中有一个工作组的概念,平时我们的工作组为WORKGROUP,如下图所示。

WORKGROUP是一种人人平等的工作组,但还有一种工作组,叫做域工作组,这种工作组里面有一个拥有至高无上权力的域管理员,可以不经过许可不知道密码的情况下登录域中任何的成员计算机。

访问隐藏共享

访问隐藏共享与常规访问区别不大,仅需要添加一个$符号。然后输入账号密码登录即可。

设置隐藏共享

设置隐藏共享也比较简单,类似赋值语句PHP的赋值语句,只是把$符号放到后面。如下图所示,重新给C盘设置隐藏共享:

关闭共享

这隐藏共享开着显然不安全,大部分情况下是用不到的,而且还会给黑客可趁之机,下面就介绍几种关闭共享的办法。

临时关闭

可以通过指令

Code
1
net share 共享名 /del

临时关掉共享。如下图所示:

但是这种关闭属于临时关闭,重启后,这些共享又会再次开启。

注册表关闭

为了屏蔽系统隐藏共享自动开启的功能,需要使用注册表编辑器。Win+R,并输入regedit进入注册表编辑器。跟依次进入如下路径:

Code
1
我的电脑\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

进入后,右键新建一个DWORD类型的值,并命名为AutoShareServer,将其值设置为0。

这样重启之后,就可以关闭之前临时关闭的共享文件夹了

关闭445端口

经过先前的操作,共享文件夹都关闭了,但是还有一个隐藏共享的IPC未被关闭,这个比隐藏共享文件夹更加危险,所以我们得将其关掉。与之相关的,则是445端口,该端口就是与共享服务相关的端口,只需将其关闭,就可以防止因共享服务而受到攻击。

方法如下,Win+R,并输入services.msc,找到名称为Server,将其禁用。这样445端口的共享服务就给关了。

除了在服务中禁用掉Server,还有一种方法,仅能在Windows7或者Windows10这样高版本的系统管用,就是设置入站规则在控制面板中,找到Windows Defender防火墙,选择高级设置,然后新建规则,类型选择端口,在特定本地端口填写445,选择阻止连接。由于TCP和UDP是分开应用的,因此要设置两遍。下面以TCP为例演示一遍如何设置:

端口小结

至此,我们已经学习了3个端口的知识,这里稍作总结:

Code
1
2
3
3389:	远程桌面
23: telnet
445: 共享服务

参考资料

参考教程:

参考链接:

Author: cataLoc
Link: http://cataloc.gitee.io/blog/2020/09/23/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%9F%BA%E7%A1%8004-%E4%B8%8B-%E6%96%87%E4%BB%B6%E5%85%B1%E4%BA%AB%E6%9C%8D%E5%8A%A1%E5%99%A8/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶