首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用ICMP协议来进行主机探测(2)

使用ICMP协议来进行主机探测(2)

下面是关于利用Non-ECHOICMP查询信息的两个用法

--TimeStamp(RequestandReply)和AddressMask(RequestandReply).--ICMPTimeStampRequest(Type13)和Reply(Type14)
  ICMPTimeStampRequest和Reply允许一个节点查询另一个节点的当前时间,返回值是自午夜开始计算的豪秒数。发送者可以初始化标识符和序列号,请求端还填写发起时间戳,然后发送报文给应答系统。应答系统接受请求后,填写接受和传送的时间戳,把信息类型改变为REPLY--应答并送回给发送者。返回值是自午夜开始计算的豪秒数。
  (上面这些术语在ICMP报文图上会体现。)
0481631
____________________________________________________________
|8位类型|代码=0|校验和|
|_____________|______________|_____________________________|
|表示符|序列号|
|____________________________|_____________________________|
|Originatetimestamp发起时间戳|
|__________________________________________________________|
|Receivetimestamp接受时间戳|
|__________________________________________________________|
|Transmittimestamp传送时间戳|
|__________________________________________________________|

  ICMP时间戳请求和应答报文

  根据RFC1122的描述:一个主机可以执行Timestamp和TimestampReply.但必须遵循如下原则:
--在处理时间戳请求时应该最小化可变性延迟(Minimumvariabilitydelay)。
--接受主机必须"回答"每个它接受到的时间戳请求。
--请求是一个IP广播地址或者IP多播地址的ICMP时间戳请求可以丢弃。--在ICMP时间戳回应里的IP源地址必须与响应的时间戳请求信息的源地址相同。
--如果在时间戳请求中接受到源路由器选项,返回路由必须为保留并为时间戳返回选项TimestampReplyoption设置源路由选项。接受一个ICMP时间戳回应(ICMPTimestampReply)会揭露一个存活主机或者网络设备的信息。

  在下面的例子中,使用了发送ICMPTimeStampRequest,我使用了icmpush--http://hispahack.ccc.de/.
  下面是对REDHAT6.1,内核为2.2.12机器的测试:[root@stan/root]#icmpush-tstamp192.168.0.2linux->13:48:07//当然你那里测试可能会显示这个域名。
Snort的分析:
01/26-13:51:29.342647192.168.0.3-$#@62;192.168.0.2
ICMPTTL:254TOS:0x0ID:13170
TIMESTAMPREQUEST
8816D8D9028B633D0000000000000000......c=........
01/26-13:51:29.342885192.168.0.2-$#@62;192.168.0.3
ICMPTTL:255TOS:0x0ID:6096
TIMESTAMPREPLY
8816D8D9028B633D0288501802885018......c=..P...P.
2ADE1C00A0F9*.....

  但根据作者发送这个ICMP时间戳请求的时候WINDOWSNTWRKS4.0SP4机器上,NT是没有反应的,因为我没有NTWRKS4.0SP4机器,所以没有办法进行测试,所以作者是认为这个是可以判断有些系统,因为系统对ICMP时间戳的反应是不同的。

  关于ICMPAddressMaskRequest(Type17)和Reply(Type18)[ICMP地址掩码请求和应答]:
  CMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码,这个过程于无盘系统在引导过程中用RARP获取IP地址是类似的。地址掩码请求也用于当一个节点想知道接口的地址掩码地址时使用。其中应答的信息中包含接口地址的掩码。

0481631
____________________________________________________________
|8位类型|代码=0|校验和|
|_____________|______________|_____________________________|
|表示符|序列号|
|____________________________|_____________________________|
|32位子网掩码|
|__________________________________________________________|
  ICMP地址掩码请求和应答报文

  RFC1122描述一个系统不能不发送地址掩码的应答,除非它是一个授权地址掩码代理。作为授权代理,它必须进行特殊配置,以发送这些应答。
 通常一个地址掩码的请求是由网关了应答的。如果从一系统接受到一个地址掩码应答,就表明这个存活主机是一个授权代理系统,它可以被攻击者用来获得你的网络配置情况,这些信息包括你的内部网络结构路由表。下面是对LINUX机器和WINDOWS机器的地址掩码请求,两个系统都没有ICMP地址掩码的应答。发送一个ICMP地址掩码请求到广播地址192.168.0.255,并伪造了源IP为192.168.0.58。

[root@linuxicmpush-2.2]#icmpush-vv-mask-sp192.168.0.58192.168.0.255
-$#@62;ICMPtotalsize=12bytes
-$#@62;Outgoinginterface=192.168.0.2
-$#@62;MTU=1500bytes
-$#@62;Totalpacketsize(ICMP+IP)=32bytes
ICMPAddressMaskRequestpacketsentto192.168.0.255(192.168.0.255)
ReceivingICMPreplies...
-----------------------------------------------------
192.168.0.58...
Type=AddressMaskRequest(0x11)
Code=0x0Checksum=0x7730
Id=0x1BESeq#=0x8700
-----------------------------------------------------
icmpushrogramfinishedOK
-*$#@62;Snort!$#@60;*-Version1.5
ByMartinRoesch(roesch@clark.net,www.clark.net/~roesch)
Kernelfilter,protocolALL,rawpacketsocket
DecodingEthernetoninterfaceeth0
02/15-13:47:37.179276192.168.5.3-$#@62;192.168.5.255
ICMPTTL:254TOS:0x0ID:13170
ADDRESSREQUEST
B9038E4900000000...I....
  都没有接受到LINUX机器和NT机器上的应答。
  通过发送ICMP地址掩码请求到本地网络路由器的时候,我们接受到一个应答:
-*$#@62;Snort!$#@60;*-
Version1.5
ByMartinRoesch(roesch@clark.net,www.clark.net/~roesch)
DecodingEthernetoninterfaceeth0
01/30-09:33:00.711595Host13-$#@62;Destination_Router
ICMPTTL:254TOS:0x0ID:13170
ADDRESSREQUEST
9002041700000000........

01/30-09:33:00.717388Destination_Router-$#@62;Host
ICMPTTL:63TOS:0x0ID:367
ADDRESSREPLY
90020417FFFFFFF80000000000000000................
000000000000......
继承事业,薪火相传
返回列表