主动扫描:通过网络流量探测受害者基础设施的扫描,向目标网段主动发送特定探测数据包然后根据响应结果获取目标资产的存活状态、资产信息。
主动扫描达到的目的:
一 发现阶段:1检测目标网段哪些主机存活(存活ip) 2检测存活主机哪些端口开放。
二 识别阶段:3检测开放端口运行哪些协议、服务。4检测服务运行在什么操作系统(OS)上。
三 爬取阶段:5目标服务信息抓取,可深入分析。
每一阶段都有相关的工具和方法,比如常见的高速网络扫描器Masscan和Zmap,它们通常用于快速扫描存活主机和端口开放探测。协议服务识别可以借助端口号进行简单匹配,也可以使用Nmap的协议服务指纹库进行精确识别,Nmap还提供产品、操作系统及其版本号的识别能力。在爬取阶段,curl可以实现对网页的抓取、openssl可以爬取证书,Zgrab2则不仅可以爬取目标协议的banner信息,也可以自定义爬取该协议的其他相关信息。而Nmap则是一个强大的扫描探测工具,不仅能实现从发现到爬取的全过程,而且拥有脚本引擎供用户进行扩展。
一:存活主机发现
1.ICMP Ping
优势:系统自带,内网终端一般会将该协议放行,并且安全设备的默认策略不对该协议进行安全分析。
icmp设计初衷:IP协议还缺少主机和管理查询所需要的机制。主机有时候需要判断某个路由器或者是对方主机是否活跃。有时网络管理员也需要来自其他主机或路由器的信息。
Ping使用ICMP(Internet Control Message Protocol)协议发送ICMP Echo Request报文,目标主机在接收到该报文后,会立即返回一个ICMP Echo Reply报文,表示网络连通性正常。Ping的原理是通过发送ICMP报文并等待接收回复,来测试两台计算机之间的网络延迟和丢包情况。
没有收到ICMP Echo reply报文并不能证明该主机是不存活的,因为管理员可能会将主机的ICMP回显功能关闭,防火墙也可能会对ICMP报文进行拦截。变种ICMP Ping还可以向目标主机发送ICMP其他请求(时间戳请求、信息请求和地址掩码请求)以等待相应的回复报文,这些变种通常在管理员只关闭了ICMP回显回复功能而忘记关闭其他回复的时候可以派上用场。
icmp(控制报文协议:网络层)为TCP/IP子族协议,是一种面向无连接的协议,用于在ip主机和路由 之间传递控制消息,传输出错报告控制信息。
主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1。ICMP不能纠正差错,它只是报告差错。
ICMP报文类型 ICMP差错控制 ICMP差错报告报文: 目的站不可达: 源站抑制 超时 参数问题 改变路由 目的站不可到达 网络不可到达(net unreachable) 主机不可到达(host unreachable) 协议不可到达(protocol unreachable) 端口不可到达(port unreachable) 源路由选择不能完成(source route failed) 目的网络不可知(unknown destination network) 目的主机不可知(unknown destination host)
2.ARP Ping
ARP协议(地址解析协议)是根据IP地址获取物理地址的TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,接受返回消息,以确定目标的物理(MAC)地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
探测器向本地局域网广播用于获取目标主机IP的MAC地址的ARP请求报文,当收到目标主机响应的ARP回复报文时,证明该主机存活。ARP是一个局域网协议,所以该技术只能用于探测同网段主机。
ARP欺骗:欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。一般情况下,ARP欺骗并不是使网络无法正常通信,而是通过冒充网关或其他主机使得到达网关或主机的流量通过攻击进行转发。通过转发流量可以对流量进行控制和查看,从而控制流量或得到机密信息。
举例:假设主机 A 192.168.1.2 B 192.168.1.3 C 192.168.1.4 网关 G 192.168.1.1
在同一局域网,主机A和B通过网关G相互通信,就好比A和B两个人写信,由邮递员G送信,C永远都不会知道A和B之间说了些什么话。
双向欺骗 :C假扮邮递员G,首先要告诉A说:“我就是邮递员” (C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C自己的MAC地址),愚蠢的A很轻易的相信了,直接把“C是邮递员”这个信息记在了脑子里;
C再假扮A,告诉邮递员:“我就是A” (C向网关G发送构造好的返回包,源IP为A 192.168.1.2,源MAC地址为自己的MAC地址),智商捉急的邮递员想都没想就相信了,以后就把B的来信送给了C,C当然就可以知道A和B之间聊了些什么
单向欺骗 :C只向A发送一个返回包,告诉A:G 192.168.1.1 的MAC地址为 5c-63-bf-79-1d-fa(一个错误的mac地址),A把这个信息记录在了缓存表中,而G的缓存表不变,也就是说,A把数据包给了C,而G的包还是给A,这样就是ARP单向欺骗了。 ARP欺骗防护:https://zhuanlan.zhihu.com/p/677260955
2.TCP SYN Ping
属于tcp三次握手中的前两次握手
第一次:客户端会随机初始化序号(client_isn),将此序号置于 TCP 首部的「序号」字段中,同时把 SYN 标志位置为 1 ,表示 SYN 报文。接着把第一个 SYN 报文发送给服务端,表示向服务端发起连接,该报文不包含应用层数据,之后客户端处于 SYN-SENT 状态。
第二次:服务端收到客户端的 SYN 报文后,首先服务端也随机初始化自己的序号(server_isn),将此序号填入 TCP 首部的「序号」字段中,其次把 TCP 首部的「确认应答号」字段填入 client_isn + 1, 接着把 SYN 和 ACK 标志位置为 1。最后把该报文发给客户端,该报文也不包含应用层数据,之后服务端处于 SYN-RCVD 状态。
第三次:客户端收到服务端报文后,还要向服务端回应最后一个应答报文,首先该应答报文 TCP 首部 ACK 标志位置为 1 ,其次「确认应答号」字段填入 server_isn + 1 ,最后把报文发送给服务端,这次报文可以携带客户到服务端的数据,之后客户端处于 ESTABLISHED 状态。服务端收到客户端的应答报文后,也进入 ESTABLISHED 状态。
探测器向目标IP发送一个带SYN标志的TCP空报文,这里需要同时指定一个目标端口号,一般指定为80。通常情况下,当主机存活且目标端口开放时,目标主机会返回一个ACK/SYN报文,当主机存活但目标端口不开放时,目标主机会返回RST报文。所以,只要探测器收到了响应报文(ACK/SYN报文或者RST报文)即说明目标主机是存活的。同样地,考虑到防火墙的影响,没有收到任何回复并不能说明主机不存活。
SYN攻击防御:
https://blog.csdn.net/XRY_XIAO/article/details/124649071
3.TCP ACK Ping
探测器直接向目标IP发送带ACK标志的TCP空报文,由于此前双方并没有进行三次握手建立TCP连接,所以当目标主机收到这样的报文时,认为出现了错误,会返回RST报文。同样的,当目标IP不响应时,并不能够说明该主机并不存活。同时使用TCP ACK Ping和TCP SYN ping进行探测可以提高穿越防火墙的能力。
4.UDP Ping
探测器向目标IP发送一个空的UDP数据报。同样的,这种Ping也需要指定目标端口,通常指定为40,125(这两个端口极少被使用)。通常情况下,当目标主机的目标端口关闭时,该主机会返回一个ICMP端口不可达的响应报文,而当目标端口开放时,可能会直接忽略不作任何响应(使用40和125端口可以尽量避免这种情况发生),所以没有收到响应报文并不能证明该主机是非存活的。这种Ping可以绕过仅对TCP进行访问控制的防火墙。
5.SCTP INIT Ping
SCTP(流控制传输协议):和TCP类似,SCTP是面向连接、端到端、全双工、带有流量和拥塞控制的可靠传输协议。SCTP的连接称为关联。SCTP的关联通过4次握手建立。相对于TCP的3次握手建立连接,SCTP的关联能够抵御拒绝服务(DoS)攻击,从而提高了安全性。数据只有在关联建立之后与关联关闭之前才可发送。SCTP的关联通过3次握手关闭,不支持类似TCP的半关闭连接。也就是在任何一方关闭关联后,对方即不再发送数据。SCTP不支持TCP所支持的“半关闭”状态。
CTP是一种面向消息的传输协议,从上层应用传递下来的数据以消息的形式传输。SCTP提供消息的定界功能。在接收端,数据以消息的形式递交。为便于传输,SCTP提供消息的拆分和组装,以及消息的捆绑传输功能。
SCTP通过四次握手来完成连接的建立:
1 :连接发起者(一般为客户端)SCTP发送一个INIT消息(初始化)。该消息包括了连接发起者的IP地址清单、初始序列号、用于标识本耦联中所有报文的起始标记、客户请求的外出流的数目以及客户能够支持的外来流的数目
2: 对端(服务器)发送一个INITACK消息确认连接发起者的INIT消息,其中含有服务器的IP地址清单、初始序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个状态cookie,状态cookie包含服务器用于确信本耦联有效所需的所有状态,cookie是经过数字签名的,因而可以确保其有效性
3 :客户以一个COOKIEECHO消息返回服务器的状态cookie,除COOKIEECHO外,该消息可能在同一个报文中捆绑一个用户数据
4 :服务器以一个COOKIEACK消息确认客户返回的cookie是正确的,到此时该耦联就建立成功了。该消息也可能在同一个报文中捆绑一个用户数据。
状态Cookie:
在一次SCTP四次握手中,INIT消息的接收端不必保存任何状态信息或者分配任何资源,这样就可防范SYNFlooding等DoS攻击。它在发送INIT-ACK消息时,采用了一种机制——“状态Cookie”,该Cookie具有发送端要建立自己状态所需的全部信息。
用于建立连接的INIT ACK只能在COOKIE WATI状态收到,在其它状态收到该报文时都会直接丢弃,类似的,COOKIE ACK只能在COOKIE ECHOED状态接收。
在常规的握手中,主动发起方的本地tag在发起握手时产生,主动发起方的对端tag在收到INIT ACK时产生。而连接的被动方的本地tag和对端tag都在收到INIT时产生,但是最终要到收到了COOKIE ECO后才确定并保存下来。
ping: 同TCP一样,其也是一个面向连接的协议,不过TCP是以字节为单位进行传输的,而SCTP是以数据块为单位进行传输的。SCTP INIT Ping技术会向目标IP的某个端口(通常为80)发送一个最小的SCTP INIT块,当目标主机端口关闭时,会返回一个ABORT块,当端口开放时,目标主机会进行SCTP四次握手的第二步,返回INIT-ACK块。所以类似于TCP SYN Ping,当探测器收到ABORT块响应或INIT-ACK响应时,均表明该主机存活。
IP Protocol Ping
这种技术向目标主机发送多个IP空报文,并在IP头部的协议字段设置对应的协议号,比如1(ICMP),2(IGMP),4(IP in IP)。Nmap的IP Protocol Ping 为ICMP、IGMP、TCP、UDP、STCP还会加上对应协议的头部。当收到相同协议进行响应或者直接返回ICMP协议不可达消息时,都表明主机存活。
利用DNS协议发现主机
企业内部均有dns服务器,用于解析内网域名地址、审计与转发内部主机的DNS请求、降低内网域名解析流量。得到DNS服务器地址(NS记录--一般会通过DHCP自动分配)。可以指定内网中的DNS服务器,然后以目标域名为规则逐个解析常见生产力系统的二级域名,这样就能发现大量内部业务以及IP段。
利用RPC协议发现主机程序
访问目标135端口获取目标的RPC map,解析 RPC map中的UUID判断目标主机可能存在的进程,还可以通过相关进程判断远程主机可能开放的端口。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)