我大学时第一次“实战”,网络是安全帮室友修一台中了勒索病毒的电脑。屏幕弹着红色骷髅,实战所有文档变成.encrypted后缀。攻防我照着网上教程,入门用火绒剑结束进程,网络删启动项,安全结果重启后病毒又活了——因为根本没找到母体,实战它藏在计划任务里,攻防每分钟重新释放一次。入门那天我蹲到凌晨三点,网络最后用PE盘进系统,安全手动删了三个注册表键值才算完。实战那一刻我突然明白:书本上的攻防“威胁建模”远不如一次真实感染教得多。
真正的入门攻防入门,不是背CVE编号,也不是装个Kali就觉得自己是黑客。它分两步:先学会当“脚本小子”,再学会拆掉脚本。
第一步,你得有个靶场。别拿公司服务器练手,也别惹外网。自己搭个DVWA(Damn Vulnerable Web Application),或者用Vulhub拉几个漏洞环境。我推荐后者——docker-compose up -d,三分钟起来一个含Struts2漏洞的Tomcat。第一次用sqlmap跑通“sqlmap -u http://127.0.0.1:8080/sqli?id=1 --dbs”,看到数据库列表哗啦出来时,那种快感类似第一次拆开CPU散热器看见硅脂下的核心。但爽完必须追问:为什么这个参数能注入?它背后是字符拼接还是编码转换?去读payload源码,比看十篇分析文章都管用。
第二步,学防守,别光学进攻。攻防演练中,防守方最蠢的行为是只盯着防火墙日志。我见过一个真实案例:某公司内网被横向渗透,攻击者用PowerShell下载了Mimikatz,但他们的EDR只报了“可疑进程”,没报警——因为规则只匹配了“mimikatz.exe”文件名,而攻击者改成了“svchost.exe”。防守的入门,是理解攻击链的每个环节,然后针对性地埋“蜜罐”。比如在域控服务器上放个假账号,密码设成“P@ssw0rd2023”,登录后立即触发短信告警。这招比任何入侵检测系统都直接。
有个误区必须打破:攻防不是工具比赛。你拿Nessus扫出100个漏洞,不如手工验证1个能利用的。我见过最离谱的“攻击报告”是某乙方列了200页扫描结果,甲方问“哪个能打穿我们的OA系统?”,对方支支吾吾。真正的入门标准只有一条:你能不能用一个漏洞,从外网打到内网核心数据库?打不通,就老老实实回去补基础——SQL注入原理、XSS的DOM型与反射型区别、Windows令牌窃取机制。这些知识像砖头,单看无聊,但砌起来就是城墙。
最后说点私货:别迷信“零日漏洞”。红队比赛里,90%的突破用的是已知漏洞的变种。比如Log4j2爆出来后,很多团队只检查了Java应用,却忘了某些打印机和摄像头也内置了该库。实战攻防的本质,是比谁更熟悉“默认配置下的愚蠢”。管理员懒得改的弱口令、运维图方便开的3389端口、开发注释里留下的数据库密码——这些才是真正的突破口。
想入门,今晚就可以开始:下载一个Vulhub靶机,尝试用公开POC打穿它;再用Wireshark抓一次攻击流量,看看payload是怎么编码的。不用买课,不用报班,一台电脑,一根网线,足够你撞开第一扇门。撞开了,你就知道门后面不是黑魔法,而是一堆等待被理解的逻辑漏洞——就像我当年蹲在凌晨三点,终于看清那个勒索病毒不过是个用批处理写的循环。