了解黑客的初级阶段
---
网络信息探测技巧
1
、快速建立TCP
扫描的方法
我们都有一个经验,就是要网卡工作到高速率上不容易,
100M
的网卡流量到
60M
时就差不多了。但是很多做测试仪器的,如
Smartbit
在测试时可以到物理带宽,看了下面的小工具你也能做到了:
先了解一些
TCP
的基础,
TCP
的会话过程
(
三次握手
)
:
n
A
发送
SYN
到
B
,生成
ISN-A(A
收到包编号基数
)
,
ISN
为防止连接中数据接收顺序差错的编号,初始值在建立连接时随机生成,以后开始递增。
ISN
为通讯的双向
ISN-A
与
ISN-B
,各自记录自己的包顺序
n
B
回送
SYN/ACK
到
A
,生成
ISN-B(B
收到包编号基数
)
,
AN=ISN-A+1
n
A
发送
SYN
到
B
,
ISN-A+1
,
AN=ISN-B+1
在
TCP
包头序列号
SN
字段,存放在对话初协商随机的
32
位编号
ISN
主机在发送
SYN
时,要在会话内存中保留
ISN
与预期的
AN
,等待回送的
SYN/ACK
,并与收到的包中的作对比,一致的才认可,防止其他“冒充”的数据包,若等待时间超出,则重发几次
SYN
,直到有回应,或返回一个超时的错误。一般在扫描过程中,多数连接是没有回应的,但都要等待到超时才结束,因为同时建立的会话多,计算机消耗资源多,尤其是内存,所以多数的扫描工具速度较慢。
逆向
SYN cookie
技术:在发送
SYN
时,使用非随机的
ISN
,利用源与目的
IP
、源与目的端口,与一个作为“密钥”的种子
(
共
160
位
)(
该种子是扫描工具设置的
)
,通过单向散列函数计算出一个
32
位的
ISN
,
Scanrand
工具采用的是
SHA-1
,
160
位输出截取到
32
位。这样发送
SYN
时,就不记录
ISN
等信息,发送进程只管尽快发送。当目标回应时,监听进程把接收数据包的
AN
减
1
,然后利用数据包的
IP
与端口信息,与“种子”一起进行同样的散列算法处理,的出发送时的
ISN
,如果与收到的数据相匹配,监听进程就可以判定是自己发送的,并且可以知道目的的
IP
与端口。
由于发送无需等待回应,也不用内存占用,所以扫描发送的速度只受网卡的物理限制。
Scanrand
的
TCP
扫描的返回值:
²
UP
:打开
SYN/ACK
²
DOWN
:关闭
RST/ACK
²
un**
:
ICMP type 3
目的不可达
(RFC792)
:
un01
主机不可达,
un03
端口不可达
²
***
:
ICMP type 11
服务超时
另外,逆向
SYN cookie
技术把发送与接收过程的联系分开,因为之间的联系“没有”了,这样扫描工具可以分别起两个进程,一个只管发,另一个只管收,大大提供扫描的效率。
2、
躲避IDS
监测的探测扫描技巧
入侵的第一步是收集信息阶段,也就是收集目标是漏洞点,俗称“踩点”。踩点的主要是工作为几个方面:
Ø
确定目标系统的操作系统类型与版本
Ø
开启服务的端口
Ø
开启服务的版本信息
原理:探测扫描的真正风险在于向目标发送太多的数据包暴露攻击者的存在,这些通讯中常包含一些构成可识别签名的数据,其中一些被有意构建为畸形的数据包,以便得到可辨识的错误信息回复。很多入侵检测系统
(IDS)
把这些签名作为“特征”进行查找,从而识别攻击的扫描行为。尤其是纯粹的
TCP
方式。
Xprobe2
工具混合了
ICMP
、
TCP
与
UDP
多中方式,并且不发送畸形数据包,探测行为不给网络带来“噪音”,所以能躲避很多
IDS
的检测。同时利用
IDS
一般喜欢有产生大量日志或假报警的习惯,用一些表面上看是偶尔可疑的事件,尤其是在大数量事件的背景下,很容易逃脱安全管理人员的眼睛。
探测操作系统类型:
例子
1
:
ICMP
的
PING
是网络中常见的连接查询方式,但很多“指纹”细节可以带来探测中需要的重要信息。正常情况下发送
ICMP Echo Request
,目标机器一般回复为
Echo Reply
。工具
Xprobe2
在发送
Request
时,把
ICMP
包的
Code
字段设为
123(
自己定义的
)
,而不是
0
。有意思的是不同操作系统的目标机器回复是不同的,
Microsoft Windows
会用
Code 0
回复,其他
OS
一般采用与请求相同的
Code
值回复。
探测服务端口是否带开:
例子
2
:正常情况下,探测服务端口会对常见的端口或全部端口直接发送连接建立请求包,密度大,排列整齐,很容易被
IDS
发现。为了在探测目标端口是否打开时躲避
IDS
的监控,工具
Xprobe2
采用了一个“第三方模拟”的技术。
Xprobe2
先自己给本地
DNS
发个某地址
DNS
请求,得到正确的返回包。然后
Xpeobe2
把这个返回包改造为自己是
DNS
服务器,给目标机器的返回包,发送
DNS
端口
(53)
,查询端口就是目标中要探测的端口,如
UDP65500
。目标机器收到这个包很意外,因为自己没有发过请求,所以就给了一个正常的回复,如端口不可达,而这正式
Xprobe2
所需要的,回复中表明该端口关闭。因为
DNS
包不会引起
IDS
的注意,从而掩盖了探测的行为。
探测服务端口上的服务类型信息:
该需求对常见服务是不必要的,但对于网络管理人员采用了很多“安全”措施后,也就变得很需要了。“不公开,即安全”是一种传统的安全理念,所以网管人员采用一些非标准端口运行通常的网络服务,让探测者失去“目标”,保证安全。
作为扫描者需要探知端口上的服务详细信息,作为网络管理员需要探知网络内用户安装了那些公司不允许的“服务”。
Amap([url]www.thc.org[/url])
是探测端口服务的工具。主要的原理是通过开启多个连接,抓取该端口服务的“特征”,从而判断服务的类型。如
Telnet
到到端口,即可提示服务类型与版本信息等。但是服务“特征”不明显或被修改时,这种方式就难以奏效。
Amap
通过模拟一些查询或会话建立的初始请求,尝试与目标建立连接,从而探测服务的类型与版本。如
SSL
服务需要握手的三个步骤:
1
、
Client_hello
。
2
、
Server_hello
。
3
、
Server-to-client certificate transfer
当然,该工具积累了一个庞大的常见应用模拟通讯数据库。
Amap
也是网管人员的好工具,可用来发现用户安装的、未经授权的服务,尤其是对经常变化端口号,隐藏公司不允许的服务的情况,如
P2P
、
VNC
远程桌面等。
3、
不可小看的ARP
协议
ARP
是通讯中匹配
IP
地址与
MAC
地址的协议,是
TCP/IP
通讯的基础,当主机要给目标发送数据时,首先通过
DNS
协议把
www
地址
(
应用层地址
)
翻译成目标
IP
地址
(
网络层地址
)
,再通过
ARP
协议把
IP
地址影射为目标的
MAC
地址
(
数据链路层地址
)(
可能是网关而非真正的目标计算机
)
,数据才可以发送。在
Hub
时代,大家通讯都是可监听到的,
MAC
地址的广播与更新相对简单,但到了
Switch
时代,冲突域“没有了”,其他两人的通讯也不再是你能随意获得的,所以
ARP
也有了新的发展。
Ø
代理
ARP(proxy ARP)
:在很早的时候,目标主机与源主机不在一个网段时,
ARP
的广播会网关设备截止而抛弃,目标主机就听不到,当然就无法回答。所以网络中有一个“管理者”负责把不是本网段的
ARP
请求统一管理,代理这些请求,让源主机先发送给自己,再由自己发送给目标机器,这就是
ARP
代理。后来主机内都设置了默认网关地址,当主机发现目标主机不在本网段时,直接发送给设备的网关。所以直接请求网关的
MAC
地址就可以了。虽然
ARP
代理已经很少使用,但想侦听别人通讯的人也可以冒充网关,从而代理你的业务。
Ø
查询
ARP(Unsolicited ARP
,也称未经同意的
ARP)
:在主机开机时,初始化
TCP/IP
栈,并向准备使用的
IP
地址发送一个
ARP
请求,查看网络中是否有地址冲突。当请求没有收到答复时,可以放心使用该
IP
地址。当然
TCP/IP
规定在发送方不知道目标的
MAC
时,都要先发送查询
ARP
,等待目标者答复,没有目标
MAC
是没有办法组织发送包的。
Ø
免费
ARP(Unicast ARP
,
Gratuitous ARP
,也称无故
ARP)
:因为网络设备
(
交换机
)
中的
FDB
转发表
(MAC
地址对应端口
)
和主机
ARP
缓存表
(IP
地址对应
MAC
地址
)
都是动态学习刷新的,一段时间没有数据包就会“老化”而删除,所以为了刷新这些会“学习”的表格,直接发送
ARP
应答,由于是自己主动发送的,并且此
ARP
应答不是针对某个地址,而是针对本网段的广播,所以称免费
ARP
。一种情况是主机在开机时会发送免费
ARP
,目的是告诉网络“我来了”,同时通知交换机在对应的端口上记录自己的
MAC
。另一种情况是有些主机与网络设备为了保持自己在别人缓存中不被老化,定期发送的刷新提示,这样当有人给自己发数据时,就不用因为地址老化而发送
ARP
请求再重新查找了。
Cisco
的网络设备就有定期发免费
ARP
的习惯。
ARP
是
MAC
地址学习的工具,所以免费
ARP
一般很常见,安全设备会忽视他是存在,从而成为攻击者监听的工具。
ARP
下毒攻击原理:攻击方的目标是成为通讯双方的
ARP
代理,也称作中间人攻击,具体是通过免费
ARP
,快速刷新通讯双方的主机
ARP
缓存,让双方都认为对方的
IP
地址对应的
MAC
地址就是中间人的,从而在他们双方通讯时把数据“误送”给了中间人,再由中间人代理给对方。
中间人攻击若模拟自己是网关,则可以代理网段上所有主机对外的通讯,所以网关设备对网络上的冒充自己
IP
的行为一向非常重视。