渗透测试零基础入门:搞懂IP源地址欺骗与DOS攻击,从原理到实战避坑

刚入门渗透测试时,我对 “IP 源地址欺骗” 和 “DOS 攻击” 的认知全是 “黑客电影既视感”—— 以为随便改个 IP 就能伪装成其他服务器,发几包就能打瘫目标网站。直到自己亲自实操,才发现这些技术远比想象中 “接地气”,也远比想象中 “有边界”。

那时我刚学完基础工具,拿着 Kali Linux 跃跃欲试。第一次尝试 IP 欺骗,用 Scapy 构造了一个 “源 IP 为 8.8.8.8(谷歌 DNS)、目的 IP 为靶机” 的 ICMP 包,结果数据包发出去后石沉大海。

查了半天才知道:IP 欺骗不是 “改个字段就行”,还得考虑路由、网关过滤,甚至回程包问题。而第一次试 DOS 攻击,用 Hping3 给靶机发 SYN 包,没两分钟自己的虚拟机先卡崩了 —— 原来零基础学这些技术,先避坑比学 “怎么攻” 更重要。

这篇文章,我会用零基础能看懂的语言,拆解 IP 源地址欺骗与 DOS 攻击的原理、实战步骤,更会把我踩过的坑、法律红线、防御思路讲透,帮你真正 “入门即正规”。

第一:IP 源地址欺骗:不是 “伪装任意 IP”,而是 “利用协议漏洞的精准操作”

很多零基础会把 IP 源地址欺骗理解成 “改个IP字段就能隐身”,但实际中,它更像 “在特定条件下,给数据包贴一张假邮票”—— 能骗收件人(目标服务器),但不一定能绕过所有关卡,更不一定能收到回信。

1. 先搞懂:IP 协议的 “先天缺陷”,是欺骗的根源

要理解 IP 源地址欺骗,得先明白一个基础:IP 协议本身不验证源地址的真实性

我们发送数据包时,IP 头里的 “源 IP 地址” 字段是由发送端(比如我们的电脑、路由器)自行填写的,目标服务器收到数据包后,默认会 “相信” 这个源 IP 是真实的,然后根据这个地址回传响应包(比如 ping 的回包)。

就像现实中寄信:邮局只看 “收件地址” 是否正确,不会验证 “寄件地址” 是不是真的 —— 你写 “北京天安门” 当寄件地址,邮局也会照寄,但对方回信时,信会寄到 “北京天安门”,你根本收不到。

IP 欺骗的核心,就是利用这个 “不验证” 的缺陷,手动修改 IP 头里的 “源 IP 地址”,让目标服务器误以为数据包来自其他地址。但它的局限性也源于此:多数情况下,你收不到目标的响应包(因为响应包会发给你伪造的源IP),这也是它和 “正常通信” 的本质区别。

2. 零基础必知:IP 欺骗的 3 个核心条件(没满足就别试)

不是所有场景都能做 IP 欺骗,零基础第一次实操前,必须先满足 3 个条件,否则只会像我当初一样 “发包石沉大海”:

条件 1:目标网络 “无反向验证机制”

很多企业的网关、防火墙会开启 “反向路由检查”(比如 uRPF,反向路径转发)—— 收到数据包后,会检查 “源 IP 对应的路由是否和数据包进来的接口一致”。比如你伪造的源 IP 是 “192.168.1.100”(属于内网段),但数据包是从外网接口进来的,防火墙会直接丢弃。

零基础建议:先在 “封闭靶场” 测试,比如用 VMware 搭建两台虚拟机(攻击机 Kali、靶机 Ubuntu),确保两者在同一网段(比如 192.168.200.0/24),且没有开启防火墙规则,避免被过滤。

条件 2:明确 “欺骗目的”,而非 “盲目伪装”

IP 欺骗不是 “为了伪装而伪装”,而是为了实现特定目标,常见场景有 3 个:

  • 绕过 “基于 IP 的访问控制”:比如目标服务器只允许 “192.168.200.5” 访问,你伪造源 IP 为这个地址,就能骗服务器接收数据包;
  • 隐藏真实攻击源:让目标无法通过数据包溯源到你的真实 IP(但会溯源到你伪造的 IP,可能误伤他人);
  • 发起 “反射攻击”:比如伪造目标 IP 向 DNS 服务器发送请求,DNS 服务器的响应包会涌向目标,形成 DOS(后面会讲)。
条件 3:选择 “无状态协议” 或 “不依赖响应的场景”

因为 IP 欺骗收不到响应包,所以更适合 “不需要回传数据” 的场景,比如:

  • ICMP 协议(ping 包):发送 ping 请求后,即使收不到回包,也能测试目标是否接收伪造 IP 的数据包;
  • UDP 协议(比如 DNS 请求):单向发送请求,不需要等待响应;
  • 避免 TCP 协议:TCP 需要三次握手,伪造源 IP 后,目标会向伪造 IP 发送 SYN+ACK 包,无法完成握手,欺骗基本无效。

3. 实战演示:用 Scapy 构造伪造 IP 的 ICMP 包

Scapy 是 Kali 自带的 Python 库,能手动构造数据包,非常适合零基础入门 IP 欺骗。下面以 “同一网段靶场” 为例,一步步演示:

步骤 1:准备环境
  • 攻击机:Kali Linux(IP:192.168.200.128);
  • 靶机:Ubuntu(IP:192.168.200.130,关闭防火墙,避免过滤数据包);
  • 目标:伪造源 IP 为 “192.168.200.100”(不存在的假 IP),向靶机发送 ICMP ping 包,验证靶机是否接收。
步骤 2:用 Scapy 构造并发送数据包
  1. 打开 Kali 终端,输入scapy进入交互模式;
  2. 构造 ICMP 数据包:
    • IP 层:ip = IP(src="192.168.200.100", dst="192.168.200.130")(src 是伪造的源 IP,dst 是靶机 IP);
    • ICMP 层:icmp = ICMP(type=8, code=0)(type=8 表示 ping 请求,code=0 是默认值);
    • 数据包组合:pkt = ip/icmp
  3. 发送数据包:send(pkt, count=5)(count=5 表示发送 5 个包)。
步骤 3:在靶机验证结果(证明欺骗生效)

在靶机终端输入tcpdump -i eth0 icmp(抓 ICMP 包),会看到类似输出:

12:34:56.789 IP 192.168.200.100 > ubuntu: ICMP echo request, id 1234, seq 0, length 8
12:34:56.790 IP 192.168.200.100 > ubuntu: ICMP echo request, id 1234, seq 1, length 8

这说明靶机确实收到了 “源 IP 为 192.168.200.100” 的数据包,且误以为是来自这个假 IP 的请求 ——IP 欺骗成功了!

步骤 4:我踩过的坑
  • 坑 1:靶机开了防火墙,数据包被过滤。解决:在靶机输入ufw disable关闭 Ubuntu 防火墙;
  • 坑 2:伪造的源 IP 不在同一网段,被网关丢弃。解决:先在同一网段测试,再尝试跨网段;
  • 坑 3:用 Scapy 发 TCP 包失败。解决:新手先从 ICMP/UDP 入手,TCP 需要更复杂的握手伪造,暂时不碰。

4. 零基础必知:IP 欺骗的 “3 个局限性”,别被电影骗了

实操后你会发现,IP 欺骗远没有 “伪装任意 IP 渗透” 那么神奇,它有 3 个致命局限:

  1. 多数场景收不到响应:比如你伪造 IP 发 ping 包,靶机的回包会发给伪造的 IP,你根本收不到,无法判断攻击效果;
  2. 依赖目标无防护:只要目标开启 uRPF、防火墙过滤,伪造的数据包会直接被丢弃;
  3. 难以用于复杂攻击:无法发起需要交互的攻击(比如登录、上传文件),只能用于 “单向发送数据” 的场景(如反射 DOS)。

第二:DOS 攻击:不是 “发包就行”,而是 “精准耗尽目标资源”

很多零基础把 DOS 攻击理解成 “发一堆数据包打瘫网站”,但实际中,它的核心是 “找到目标的资源瓶颈,用最少的数据包耗尽它”—— 比如服务器的 TCP 连接数有限,用 SYN Flood 占满连接;带宽有限,用大流量包占满带宽。

1. 先分清:DOS 和 DDOS 的区别

  • DOS(拒绝服务攻击):单台攻击机对目标发起攻击,比如用你的 Kali 打靶机,优点是操作简单,缺点是流量有限,难打瘫大服务器;
  • DDOS(分布式拒绝服务攻击):控制多台 “肉鸡”(被入侵的电脑 / 服务器)同时攻击目标,流量巨大,但需要控制肉鸡集群,零基础暂时不用碰(且违法风险极高)。

本文只讲 “DOS 攻击”,聚焦零基础能在靶场实操的场景,核心是理解 “资源耗尽” 的原理,而非 “搞破坏”。

2. 最适合零基础的 2 种 DOS 攻击:原理 + 实战(用 Hping3 实现)

Hping3 是 Kali 自带的工具,能构造 TCP/UDP/ICMP 包,非常适合入门 DOS 攻击。下面讲两种最经典的 DOS 攻击方式,均在封闭靶场测试(禁止对真实目标使用)。

方式 1:SYN Flood(占满服务器 TCP 连接)
原理:利用 TCP 三次握手的 “漏洞”

TCP 三次握手是 “客户端发 SYN→服务器回 SYN+ACK→客户端回 ACK”,服务器收到 SYN 后,会开辟一个 “半连接队列” 保存连接信息,等待客户端的 ACK。

SYN Flood 的核心是:只发 SYN 包,不回 ACK 包—— 服务器的半连接队列会被大量无效连接占满,无法处理正常用户的 SYN 请求,最终拒绝服务。

实战步骤(靶场:Kali→Ubuntu)
  1. 先测试靶机正常状态:在 Kali 用telnet 192.168.200.130 80(连接靶机 80 端口),能正常建立连接,说明靶机 80 端口可用;

  2. 用 Hping3 发起 SYN Flood:

    在 Kali 终端输入命令:

    hping3 -S -p 80 --flood --spoof 192.168.200.100 192.168.200.130
    

    命令解释:

    • -S:发送 SYN 包(三次握手第一步);
    • -p 80:目标端口为 80(HTTP 端口);
    • --flood:以最快速度发包;
    • --spoof 192.168.200.100:伪造源 IP(可选,增加溯源难度);
    • 最后是靶机 IP:192.168.200.130。
  3. 验证攻击效果:

    • 在靶机输入netstat -an | grep :80 | grep SYN_RECV(查看 80 端口的半连接数),会看到大量 “SYN_RECV” 状态的连接,数量持续增加;
    • 再次在 Kali 用telnet 192.168.200.130 80,会提示 “连接超时”—— 靶机已无法处理正常连接,DOS 攻击生效。
我踩过的坑:攻击机先卡崩了

第一次用--flood参数时,Kali 的 CPU 瞬间飙到 100%,鼠标都动不了。后来才知道:--flood会让 Hping3 以最大速度发包,单台攻击机的性能有限,建议加-i u100(每 100 微秒发一个包),降低攻击机负载:

hping3 -S -p 80 -i u100 --spoof 192.168.200.100 192.168.200.130
方式 2:ICMP Flood(占满目标带宽 / CPU)
原理:用大量 ICMP 包耗尽资源

ICMP 包(比如 ping 包)虽然体积小,但如果每秒发送几万、几十万包,会占满目标的带宽;同时,目标需要处理每一个 ICMP 包,会导致 CPU 占用率飙升,无法处理其他请求。

实战步骤(靶场:Kali→Ubuntu)
  1. 测试靶机正常状态:在 Kali 用ping 192.168.200.130,延迟正常(比如 1-2ms);

  2. 用 Hping3 发起 ICMP Flood:

    在 Kali 终端输入命令:

    hping3 --icmp --flood --spoof 192.168.200.100 192.168.200.130
    

    命令解释:

    • --icmp:发送 ICMP 包;
    • 其他参数和 SYN Flood 一致。
  3. 验证攻击效果:

    • 在靶机输入top,会看到ping进程的 CPU 占用率飙升到 80% 以上;
    • 在 Kali 再次ping 192.168.200.130,延迟变成几百 ms 甚至超时 —— 靶机资源被耗尽。

3. 零容忍:DOS 攻击的法律红线(碰了就可能坐牢)

这是最关键的部分!我必须强调:未经授权的 DOS 攻击,无论是否造成损失,都涉嫌违法犯罪

根据《中华人民共和国刑法》第二百八十六条:“违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。”

即使是 “小打小闹”,比如攻击学校官网、小区路由器,也可能面临:

  • 行政处罚:罚款(几千到几万)、行政拘留(5-15 天);
  • 民事赔偿:赔偿目标的经济损失(比如服务器宕机导致的营收损失);
  • 刑事责任:造成严重后果的,追究刑责(坐牢)。

零基础唯一合法的练习方式:在自己搭建的封闭靶场测试(比如 VMware 虚拟机集群),绝对禁止对任何真实 IP、网站、服务器发起攻击。

第三:零基础必学:IP 欺骗与 DOS 攻击的防御方法

渗透测试的核心是 “发现漏洞并帮助修复”,所以学会攻击后,必须懂防御。下面讲企业常用的防御手段,零基础能理解、能配置(靶场演示)。

1. IP 源地址欺骗的防御:3 个关键措施

措施 1:开启 uRPF(反向路径转发)

uRPF 是路由器 / 防火墙的功能,能检查 “数据包的源 IP 是否与进来的接口路由一致”。比如伪造的源 IP 是内网段,但数据包从外网接口进来,uRPF 会直接丢弃。

靶场演示(在 Ubuntu 防火墙开启 uRPF)

# 加载uRPF模块
sudo modprobe rp_filter
# 开启所有接口的uRPF严格模式
sudo sysctl -w net.ipv4.conf.all.rp_filter=1
sudo sysctl -w net.ipv4.conf.default.rp_filter=1

开启后,再用 Scapy 发送伪造 IP 的数据包,靶机不会再接收(tcpdump 抓不到包)。

措施 2:配置防火墙,过滤异常源 IP

比如企业只允许特定 IP 段访问服务器,可在防火墙配置 “白名单”,拒绝其他 IP 的数据包。

靶场演示(Ubuntu 防火墙配置白名单)

# 允许192.168.200.0/24网段访问80端口,拒绝其他IP
sudo ufw allow from 192.168.200.0/24 to any port 80
sudo ufw deny from any to any port 80

这样,伪造非 192.168.200.0/24 网段的 IP,无法访问靶机 80 端口。

措施 3:使用有状态协议(如 TCP),依赖交互验证

因为 IP 欺骗难以完成 TCP 三次握手,所以重要服务(如登录、支付)尽量用 TCP 协议,并增加身份验证(如账号密码、Token),即使源 IP 被伪造,也无法通过验证。

2. DOS 攻击的防御:从 “拦截” 到 “优化”

措施 1:防御 SYN Flood:开启 SYN Cookie

SYN Cookie 是 Linux 内核的功能,能在半连接队列满时,用 Cookie 代替半连接信息,避免队列被占满。

靶场演示(Ubuntu 开启 SYN Cookie)

sudo sysctl -w net.ipv4.tcp_syncookies=1

开启后,再发起 SYN Flood,靶机仍能处理正常用户的连接(telnet 能成功)。

措施 2:限制单 IP 的连接数和流量

用防火墙限制单个 IP 的最大连接数和每秒数据包数,避免被单台攻击机耗尽资源。

靶场演示(Ubuntu 限制单 IP 每秒 ICMP 包数)

# 限制单IP每秒最多接收10个ICMP包
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/s -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

这样,ICMP Flood 攻击的效果会大幅减弱。

措施 3:企业级防御:流量清洗与 CDN

对于大公司,会用专业的 DDoS 高防服务(如阿里云高防、腾讯云高防),通过 “流量清洗” 识别并丢弃攻击流量,再用 CDN 分散正常流量,确保服务器稳定。

结语:技术是 “工具”,不是 “武器”—— 零基础的底线与初心

回想我刚学这些技术时,也曾有过 “试试攻击真实网站” 的冲动,但看到新闻里 “小伙因 DOS 攻击被判刑” 的案例,再想到自己作为渗透测试工程师的职责 —— 我们的目标不是 “搞破坏”,而是 “发现漏洞,保护系统”。

IP 源地址欺骗和 DOS 攻击,是渗透测试中 “攻击原理” 的基础知识点,学会它们,能帮你更理解网络协议的缺陷、服务器的脆弱点,进而更好地设计防御方案。但请永远记住:技术的价值,在于用它保护他人,而非伤害他人

最后,给零基础 3 个建议:

  1. 先学基础再实操:没懂 TCP/IP 就发包,只会像我当初一样 “发错包还不知道为什么”;
  2. 永远在合法场景练习:封闭靶场足够你掌握技术,真实目标碰都别碰;
  3. 攻防结合:学攻击的同时一定要学防御,这才是渗透测试的核心能力。

当你能在靶场用 IP 欺骗绕过简单 IP 限制,用 DOS 攻击耗尽靶机资源,又能通过配置防火墙、开启 SYN Cookie 防御这些攻击时,你才算真正 “入门” 了 —— 而这份 “入门”,不仅是技术的开始,更是责任的开始。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值