了解***的初级阶段---网络信息探测技巧
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1、快速建立TCP扫描的方法
    我们都有一个经验,就是要网卡工作到高速率上不容易,<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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的行为一向非常重视。

转载于:https://blog.51cto.com/zhaisj/60946

了解***的初级阶段---网络信息探测技巧相关推荐

  1. 路由表+常用网络命令+SSL的WEB安全访问+常用网络命令使用技巧

    路由表+常用网络命令+SSL的WEB安全访问+常用网络命令使用技巧 一.如何看路由表 ========================================================= ...

  2. 网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧

    相信许多站长有所耳闻,在当下的谷歌浏览器搜索中,要求PC端网站具备移动端网站才能更好的促进网站优化运营,这也标志着当下网络市场中移动端网站建设的必要性.移动端网站与PC端网站设计不同,有很多开发细节需 ...

  3. 在vb中使用Iphlpapi.dll获取网络信息(下)

    (转上版)http://miaozk2006.blog.163.com/blog/static/382470582011111391326440/ 5.运行时截图: 第十四节 返回本机网络接口数量 1 ...

  4. 在vb中使用Iphlpapi.dll获取网络信息(上)

    ※================================================================== ※本连载文章说明: ※1.连载首发于<软件报>(ht ...

  5. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版(上)--IT man

    Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...

  6. 《GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)》

    全书分为网页.高级网页.图像.新闻组和论坛.附加功能.Gmail.广告.Web管理和Google编程9章,不仅阐述了用Google搜索的方方面面,而且能帮你最大程度地挖掘Google的潜能,即挖掘出每 ...

  7. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版

    全书分为网页.高级网页.图像.新闻组和论坛.附加功能.Gmail.广告.Web管理和Google编程9章,不仅阐述了用Google搜索的方方面面,而且能帮你最大程度地挖掘Google的潜能,即挖掘出每 ...

  8. Windows提权基础:信息收集技巧及可用漏洞搜索

    本文收集整理一些跟提权紧密相关的信息收集技巧和方法,以及如何在kali中搜索可用的漏洞,最后整理了目前可供使用的一些漏洞对应msf下的模块以及操作系统可提权的版本. 0X00 Windows提权信息收 ...

  9. 网络信息安全管理之资产、脆弱性、威胁、风险

    网络信息安全管理是指对网络资产采取合适的安全措施,以确保网络资产的可用性.完整性.可控制性和抗抵赖性,不致因网络设备.网络通信协议.网络服务.网络管理受到人为和自然因素的危害,而导致网络中断.信息泄露 ...

最新文章

  1. 内容推荐 | 最新科研资讯与小技巧
  2. 学习笔记 ACCESS 延迟注入
  3. MFC EDIT控件的使用记录
  4. To-do List
  5. mysql 事务关联_MySQL 关联、联合查询,事务ACID见解
  6. MySQL复习资料(六)——MySQL-多表联合查询
  7. 源码注释性容器的创建及初始化
  8. 如何使用Eclipse调试Maven构建
  9. hive取mysql数据oracle数据,Hive安装过程(mysql/oracle存储元数据)详解
  10. [翻译]CryEngine3中光照的美术提示
  11. Pytorch 学习笔记:
  12. 递归算法的基本理解以及基本算法,多行注释详解,适合编程小白,刚接触递归的编程新手
  13. java excel图表_Java 创建Excel图表
  14. python 对正整数分解质因数
  15. 阿里云服务器或聚石塔的容器无法访问外网问题
  16. 原生代码开发小米官网首页
  17. oracle10g迁移到11g配置,Windows下Oracle10g32位迁移到11g64位
  18. Google Chrome Helper CPU占用过高的解决办法
  19. 2016年最受注目的网络技术关键词预测
  20. 短信接口抓包_[实战] 实现抢票小工具amp;短信通知提醒

热门文章

  1. VTK:Matlab之MatlabEngineFilter
  2. OpenCV使用形态学转换提取水平和垂直线的实例(附完整代码)
  3. OpenCV Laplace point/edge detection拉普拉斯点/边缘检测的实例(附完整代码)
  4. C++如何选择智能指针
  5. QT的QIcon类的使用
  6. java string 异或_Java源码——String
  7. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
  8. java中mq组建是什么_Java教程之RabbitMQ介绍
  9. quartz-misfire 错失、补偿执行
  10. Excel双样本T检验之成对检验