一、米特尼克的圣诞攻击
1、攻击背景
在Unix世界中,可以很容易地给予信任。 假设用户在机器A和机器B上都有一个帐户,为了使两者之间的麻烦最小,就可以在它们之间建立全双工的信任关系。 在A的主目录中,创建一个 .rhosts 文件:
echo "hostB 用户名" > .rhosts
,在B的主目录中做同样的操作,现在,用户可以使用任何 r* 命令来操作另一台服务器,这些命令将只验证地址。
1994年圣诞节,Kevin Mitnick 攻击了下村勉的机器,主要用到了两种技术:IP源地址欺骗和TCP序列号预测
-
IP源地址欺骗:ip协议并不安全,其源地址可被随意修改,再配合另外一些操作就可以冒充其他主机与目的主机通信
-
TCP序列号预测:每个TCP报文都会带一个序列号,在数据传输过程中用于对报文段的确认,而在三次握手时需要序号来完成连接。TCP序列号是由网络协议栈生成,通过多次发送SYN包,从收到的SYN+ACK包中的序列号可以预测出对方序列号生成的规律(已被修复,现在初始序列号生成是随机的),这个操作必须在对方主机不活跃时进行,否则其他的TCP连接会扰乱这种规律,这也是为什么选在圣诞节攻击的原因。
2、攻击过程
这次攻击主要涉及四个对象:
- apollo:攻击者先入侵了这台主机,以隐藏自己的行踪
- target:目标下村勉的机器,最终目的是要访问这台机器上的文件
- x-terminal:已经与 target 建立了受信任的连接(不能再伪装成它与 target 连接)
- server:与 x-terminal 通过 .rhosts 互相信任
首先来捋一遍攻击思路:
apollo 需要获得对 target 的访问,此时 x-terminal 已有对 target 的受信任连接,攻击者的目的是劫持这个连接。劫持这个连接,需要先控制 x-terminal,如何控制x-terminal呢?需要被它信任,如何被它信任?需要修改 .rhosts 文件,如何远程修改.rhosts文件呢?需要以它信任的机器的身份,建立一个TCP连接,在TCP连接中传递命令,所以最终是要冒充 server 与 x-terminal 建立连接
开始攻击:
- apollo 利用 SYN 洪泛填充 server 上端口513的“半开”连接队列达到阻塞的目的,使得它不会再响应任何新的连接要求
- apollo 向 x-terminal 发送一串 SYN 请求来预测 x-terminal 生成初始序列号的规律
- apollo 冒充 server 向 x-terminal 发起连接,虽然收不到 SYN-ACK(发到 server 了,但 server 由于阻塞不会响应也不会发送拒绝包),但是预测了序列号,就可以继续回复 ACK 来建立连接
- 以 server 身份向 x-terminal 发命令,修改 rhosts 文件,让它信任任何来源
- apollo 连接 x-terminal,植入内核模块,劫持与 target 的连接
- 成功访问 target,随后发送 RST 到 server 释放阻塞的连接
3.、问题思考
1、为什么说ip传输协议是不可靠的?
- ip协议是无连接的,尽最大努力交付的,并且只对头部进行校验
- 其源地址等信息可由发送方任意设置
2、详细描述一下TCP三次握手
- A --> SYN(seq) --> B
- B --> SYN + ACK(ack=seq+1,seq) --> A
- A --> ACK(ack=seq+1) --> B
3、port的作用是什么?
- 复用 / 分用
4、SYN/ACK/RST分别在什么时候使用?
- SYN:请求建立连接
- ACK:确认连接
- RST:复位因某种原因出现的错误连接,也可以用来拒绝非法数据和请求
5、进行 SYN flooding 以实现 DoS 的可信server的端口号是多少?为什么要选择这个端口?能不能换用一个其他端口?
- 513,因为要冒充这个端口与 x-terminal 建立连接发送远程指令,换其他 <1024 的特权端口也可以
6、在成功添加后门后,攻击者为何要发送RST释放可信Server中的TCP连接?
- 打扫作案现场
二、网络命令
1、route(可加 -n 不解析名字而直接显示ip)
- default 默认路由,当一个数据包的目的网段不在路由记录中,该数据包就会发送到默认路由
- link-local 为链路本地地址,是设备在本地网络中通讯时使用的地址,主要作用于DHCP服务器故障时,或DHCP超时,用于和网段内或广播域中的设备通信,不通过路由器转发,故 Gateway 为 0.0.0.0
- 直连网段的路由记录,当数据包发到直连网段时,数据包不经路由转发,故网关为 0.0.0.0
- Flag标志解释
- U:有效
- G:连接路由,无该标志表示直连目的地址
- H:具体主机,而非网段
2、ping:发送 icmp 包来测试可达性
3、traceroute(路由跟踪)
- 首先它发送一份TT