<!-- more -->
被动信息收集的原理
1. 被动信息收集的特点
1. 间接与指标零碎交互通信 2. 无奈防止留下拜访的痕迹 3. 应用受控的第三方电脑进行探测,应用代理或曾经被管制的机器 4. 扫描发送不同的探测,依据返回后果判断指标状态
2. 发现指标主机的过程
1. 辨认存活主机,发现潜在的被攻打指标2. 输入一个IP地址列表,比方IP地址段、IP地址范畴3. 应用二、三、四层进行探测发现
3. OSI七层模型和TCP/IP五层模型
七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制订的一个用于计算机或通信零碎间互联的规范体系,个别称为OSI参考模型或七层模型。
它是一个七层的、形象的模型体,不仅包含一系列形象的术语或概念,也包含具体的协定。
上三层属于应用层(即时用户应用层)
OSI七层模型及TCP/IP五层模型的对应网络设备关系:
OSI七层模型及TCP/IP五层模型的对应网络协议关系:
这个比拟重要,比方咱们常常用的ping
命令就是走的网络层,而代理软件代理是TCP等协定,走的是传输层,所以咱们的代理在CMD
下是无奈代理ping
命令的(然而在PowerShell
里能够)
二层发现
1. 二层主机发现
- 利用
OSI
的数据链路层
的协定进行发现,个别应用的是ARP
协定,能够绕开禁ping的服务器
。 - ARP协定概述:ARP协定是"Address Resolution Protocol"(地址解析协定)的缩写。计算机通过ARP协定将IP地址转换成MAC地址。
- ARP协定工作原理
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;当主机A要与主机B通信时,地址解析协定能够将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:第1步:依据主机A上的路由表内容,IP确定用于拜访主机B的转发IP地址是192.168.1.2。而后A主机在本人的本地ARP缓存中查看主机B的匹配MAC地址。第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP申请帧播送到本地网络上的所有主机。源主机A的IP地址和MAC地址都包含在ARP申请中。本地网络上的每台主机都接管到ARP申请并且查看是否与本人的IP地址匹配。如果主机发现申请的IP地址与本人的IP地址不匹配,它将抛弃ARP申请。第3步:主机B确定ARP申请中的IP地址与本人的IP地址匹配,则将主机A的IP地址和MAC地址映射增加到本地ARP缓存中。第4步:主机B将蕴含其MAC地址的ARP回复音讯间接发送回主机A。第5步:当主机A收到从主机B发来的ARP回复音讯时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期完结后,将再次反复下面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
2.命令详解
arping
协定层级:数据链路层
阐明:从源位址通过ping命令查看设施上的硬体位址。
语法:arping -D-A-w timeout[-s source] -I interface address
参数:
-D复制位址监测资讯;-U用ARP REQUEST包更新网路街坊上的ARP缓存;-A与-U参数作用一样,区别为-A采纳ARP REPLY包;-c count设置ping命令探测的次数;-w timeout通过timeout秒后进行ping命令;-q不显示任何资讯;-s source设置ping的源位址;-I interface设置ping应用的网路介面;address设置指标位址。
例如:
arping 192.168.10.1 -c 3
netdiscover
协定层级:数据链路层
阐明:被动查看查看是否能够与网路上的多台主机连通。
语法:netdiscover 指定网段 网卡 参数
参数:
-i 指定网卡 eth0-r 指定网段 例如 192.168.10.0/24-p 被动模式。默默的侦听指定的网卡以发现别的二层主机-t [ARP](https://so.csdn.net/so/search?q=ARP&spm=1001.2101.3001.7020)包发送距离。单位毫秒。这个能够用来躲避检测零碎的告警。-l file: 指定扫描范畴列表文件-p passive mode: 应用被动扫描的形式,不发送任何数据,只做嗅探-m file: 扫描已知 mac 地址和主机名的电脑列表-F filter: 指定 pcap 筛选器表达式(默认:“arp”)-s time: 每个 arp 申请之间的睡眠工夫(毫秒)-n node: 应用八字节的模式扫描(2 - 253)-c count: 发送 arp 申请的工夫次数-f: 应用被动模式的扫描-d: 疏忽配置文件-S: 启用每个 arp 申请之间克制的睡眠工夫-P: 打印后果-N: 不打印头。只有启用- p时无效。-L: 将捕捉的信息输入(-P),并持续进行扫描
例如:
netdiscover -i eth0 -r 192.168.10.0/24
三层发现
1. 三层主机发现
三层主机发现:利用OSI七层模型中的网络层
的协定进行主机发现,个别应用的是IP、ICMP协定。
三层扫描的优缺点:
长处:能够绕过路由的主机,速度绝对较快
毛病:速度比二层发现慢,常常会被防火墙过滤
2.命令详解
ping
协定层级:网络层
阐明:能够用来查看是否能够与网路上的一台主机连通。
语法:ping [-fn] [-c<连贯次数>] [-i<间隔时间>] [-I<网路设施>]
参数:
-f产生ping风暴,会对网路带来重大累赘,仅限root用户应用,可用来统计资料包的丢包、误码率;-n只输入数值,不尝试获取主机名;-i<间隔时间>设定2个Ping资讯包收回的间隔时间,单位为秒;-I<网路设施>当零碎有多个设施时,能够用该参数指定某一网路设施。
例如:
ping www.baidu.com
traceroute
协定层级:网络层
阐明:令利⽤ICMP 协定定位您的计算机和⽬标计算机之间的所有路由器
语法:Traceroute [options] [data size]
参数:
[-n]:显⽰的地址是⽤数字表⽰⽽不是符号[-v]:长输入[-p]:UDP端⼝设置(缺省为33434)[-q]:设置TTL测试数⽬(缺省为3)[-t]:设置测包的服务类型[data size]:每次测试包的数据字节长度(缺省为38)
例如:
traceroute www.baidu.com
hping3
协定层级:网络层
阐明:hping3是命令行下应用的TCP/IP数据包组装/剖析工具,通常web服务会用来做压力测试应用,也能够进行DOS(DDOS)攻打试验。通用hping3只能每次扫描一个指标
DOS
,又叫DDOS
,分布式拒绝服务攻打或洪水攻打
语法例子:
hping3 -c 100000 -d 120 -S -w 64 -p 80 --flood --rand-source www.sanguosha.com
参数:
-h --help 显示帮忙 -v --version 显示版本 -c --count 发送数据包的数目 -i --interval 发送数据包距离的工夫 (uX即X微秒, 例如: -i u1000) --fast 等同 -i u10000 (每秒10个包) --faster 等同 -i u1000 (每秒100个包) --flood 尽最快发送数据包,不显示回复。 -n --numeric 数字化输入,象征性输入主机地址。 -q --quiet 宁静模式 -I --interface 网卡接口 (默认路由接口) -V --verbose 具体模式 -D --debug 调试信息 -z --bind 绑定ctrl+z到ttl(默认为目标端口) -Z --unbind 勾销绑定ctrl+z键 --beep 对于接管到的每个匹配数据包蜂鸣声提醒 模式抉择 default mode TCP // 默认模式是 TCP -0 --rawip RAWIP模式,原始IP模式。在此模式下HPING会发送带数据的IP头。即裸IP形式。应用RAWSOCKET形式。 -1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你能够用--ICMPTYPE --ICMPCODE选项发送其余类型/模式的ICMP报文。 -2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你能够用--baseport --destport --keep选项指定其模式。 -8 --scan SCAN mode. //扫描模式 指定扫描对应的端口。 Example: hping --scan 1-30,70-90 -S www.target.host // 扫描 -9 --listen listen mode // 监听模式 IP 模式 -a --spoof spoof source address //源地址坑骗。伪造IP攻打,防火墙就不会记录你的实在IP了,当然回应的包你也接管不到了。 --rand-dest random destionation address mode. see the man. // 随机目标地址模式。具体应用 man 命令 --rand-source random source address mode. see the man. // 随机源地址模式。具体应用 man 命令 -t --ttl ttl (默认 64) //批改 ttl 值 -N --id id (默认 随机) // hping 中的 ID 值,缺省为随机值 -W --winid 应用win* id字节程序 //应用winid模式,针对不同的操作系统。UNIX ,WINDIWS的id回应不同的,这选项能够让你的ID回应和WINDOWS一样。 -r --rel 绝对id字段(预计主机流量) //更改ID的,能够让ID曾递加输入,详见HPING-HOWTO。 -f --frag 拆分数据包更多的frag. (may pass weak acl) //分段,能够测试对方或者交换机碎片解决能力,缺省16字节。 -x --morefrag 设置更多的分段标记 // 大量碎片,泪滴攻打。 -y --dontfrag 设置不分段标记 // 发送不可复原的IP碎片,这能够让你理解更多的MTU PATH DISCOVERY。 -g --fragoff set the fragment offset // 设置断偏移。 -m --mtu 设置虚构最大传输单元, implies --frag if packet size > mtu // 设置虚构MTU值,当大于mtu的时候分段。 -o --tos type of service (default 0x00), try --tos help // tos字段,缺省0x00,尽力而为? -G --rroute includes RECORD_ROUTE option and display the route buffer // 记录IP路由,并显示路由缓冲。 --lsrr 涣散源路由并记录路由 // 涣散源路由 --ssrr 严格源路由并记录路由 // 严格源路由 -H --ipproto 设置IP协定字段,仅在RAW IP模式下应用 //在RAW IP模式里抉择IP协定。设置ip协定域,仅在RAW ip模式应用。 ICMP 模式 -C --icmptype icmp类型(默认echo申请) // ICMP类型,缺省回显申请。 -K --icmpcode icmp代号(默认0) // ICMP代码。 --force-icmp 发送所有icmp类型(默认仅发送反对的类型) // 强制ICMP类型。 --icmp-gw 设置ICMP重定向网关地址(默认0.0.0.0) // ICMP重定向 --icmp-ts 等同 --icmp --icmptype 13 (ICMP 工夫戳) // icmp工夫戳 --icmp-addr 等同 --icmp --icmptype 17 (ICMP 地址子网掩码) // icmp子网地址 --icmp-help 显示其余icmp选项帮忙 // ICMP帮忙 UDP/TCP 模式 -s --baseport base source port (default random) // 缺省随机源端口 -p --destport [+][+]<port> destination port(default 0) ctrl+z inc/dec // 缺省随机源端口 -k --keep keep still source port // 放弃源端口 -w --win winsize (default 64) // win的滑动窗口。windows发送字节(默认64) -O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4) // 设置伪造tcp数据偏移量(取代tcp地址长度除4) -Q --seqnum shows only tcp sequence number // 仅显示tcp序列号 -b --badcksum (尝试)发送具备谬误IP校验和数据包。许多零碎将修复发送数据包的IP校验和。所以你会失去谬误UDP/TCP校验和。 -M --setseq 设置TCP序列号 -L --setack 设置TCP的ack ------------------------------------- (不是 TCP 的 ACK 标记位) -F --fin set FIN flag -S --syn set SYN flag 同步 -R --rst set RST flag -P --push set PUSH flag -A --ack set ACK flag ------------------------------------- (设置 TCP 的 ACK 标记 位) -U --urg set URG flag // 一大堆IP抱头的设置。 -X --xmas set X unused flag (0x40) -Y --ymas set Y unused flag (0x80) --tcpexitcode 应用last tcp-> th_flags作为退出码 --tcp-mss 启用具备给定值的TCP MSS选项 --tcp-timestamp 启用TCP工夫戳选项来猜想HZ/uptime Common //通用设置 -d --data 指定发送到主机的数据包大小,以字节为单位,缺省是0。 -E --file 文件数据 -e --sign 增加“签名” -j --dump 转储为十六进制数据包 -J --print 转储为可打印字符 -B --safe 启用“平安”协定 -u --end 通知你什么时候--file达到EOF并避免倒回 -T --traceroute traceroute模式(等同应用 --bind 且--ttl 1) --tr-stop 在traceroute模式下收到第一个不是ICMP时退出 --tr-keep-ttl 放弃源TTL固定,仅用于监督一跳 --tr-no-rtt 不要在跟踪路由模式下计算/显示RTT信息 ARS包形容(新增性能,不稳固)ARS packet description (new, unstable) --apd-send 发送APD形容数据包(参见docs / APD.txt)
例如:
traceroute www.baidu.com
fping
协定层级:网络层
阐明:fping是ping命令的加强版,它能够对一个IP段进行ping扫描,而ping命令自身是不能够对网段进行扫描的。fping6
是fping用来ping IPV6的命令
语法例子:
fping -a -g 192.168.10.0/24
参数:
仅ping ipv4地址,ipv6请应用fping6-a:只显示存活主机;-u:只显示不存活主机;-g:通过指定起始地址与终止地址产生指标列表-6,——ipv6只有ping ipv6地址-b,——size=要发送的ping数据量,以字节为单位(默认值:56)-B,——backoff=N设置指数backoff因子为N(默认值:1.5)计数模式:发送N个ping到每个指标-f,——file=从文件中读取指标的文件列表(-示意stdin)生成指标列表(仅当没有指定-f时)(在指标列表中给出开始和完结IP,或者一个CIDR地址)(例如:fping -g 192.168.1.0 192.168.1.255或fping -g 192.168.1.0/24)-H,——ttl=N设置IP ttl值(活跳工夫)-I,——iface= iface绑定到一个特定的接口-l,——loop loop模式:永远发送ping信号-m,——所有应用提供的主机名的所有ip(例如IPv4和IPv6),与-A一起应用-M,——不要设置“不要宰割”标记设置ICMP包上的服务类型(tos)标记-p,——period= ping包到一个指标之间的MSEC距离(单位:ms)(in loop and count mode,默认:1000 ms)-r,——重试=N次重试(默认:3次)-R,——随机分组数据(到箔链接数据压缩)-S,——src=IP设置源地址-t,——timeout=MSEC单个指标初始超时(默认:500 ms,除了-l/-c/ -c,其中-p周期为2000 ms)输入选项:显示有生命的指标-A, -addr显示指标地址-C,——vcount=N与-C雷同,以具体格局报告后果在每个输入行之前打印工夫戳-e,——elapsed显示返回数据包耗费的工夫-i,——interval=发送ping包之间的MSEC距离(默认值:10 ms)-n,——name按名称显示指标(-d等效)-N,——netdata输入兼容netdata (-l -Q是必须的)-o,——中断显示累计中断工夫(失落包*包距离)-q,——十分十分(不要显示每个指标/每个ping的后果)-Q,——squiet=秒数,与-Q雷同,但每n秒显示摘要-s,——stats打印最终的stats显示无奈达到的指标-v,——版本显示版本-x,——可达=N示意>=N个主机是否可达
四层发现
1.nmap
协定层级:传输层
阐明:nmap是一个网络探测和平安扫描程序,零碎管理者和集体能够应用这个软件扫描大型的网络,获取那台主机正在进行以及提供扫描服务等信息。nmap反对很多扫描技术,例如:UDP、TCPconnect()、TCP SYN(半开扫描,只发第一个包)、FTP代理(bounce攻打)、反向标记、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。还能够探测系统操作类型(-O 参数)。
语法例子:
nmap 192.168.10.1
参数:
-A :选项用于应用进攻性形式扫描-T4: 指定扫描过程应用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯情况较好的状况下举荐应用T4-oX test.xml: 将扫描后果生成 test.xml 文件-oG test.txt: 将扫描后果生成 test.txt 文件-sn : 只进行主机发现,不进行端口扫描-O : 指定Nmap进行零碎版本扫描-sV: 指定让Nmap进行服务版本扫描-p <port ranges>: 扫描指定的端口-sS/sT/sA/sW/sM:指定应用 TCP SYN/Connect()/ACK/Window/Maimon scans的形式来对指标主机进行扫描-sU: 指定应用UDP扫描形式确定指标主机的UDP端口情况-script <script name> : 指定扫描脚本-Pn : 不进行ping扫描-sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会持续扫描,个别最好不加,因为有的主机会禁止ping-PI : 设置这个选项,让nmap应用真正的ping(ICMP echo申请)来扫描指标主机是否正在运行。-iL 1.txt : 批量扫描1.txt中的指标地址-sL: List Scan 列表扫描,仅将指定的指标的IP列举进去,不进行主机发现-sY/sZ: 应用SCTP INIT/COOKIE-ECHO来扫描SCTP协定端口的凋谢的状况-sO: 应用IP protocol 扫描确定指标机反对的协定类型-PO : 应用IP协定包探测对方主机是否开启-PE/PP/PM : 应用ICMP echo、 ICMP timestamp、ICMP netmask 申请包发现主机-PS/PA/PU/PY : 应用TCP SYN/TCP ACK或SCTP INIT/ECHO形式进行发现-sN/sF/sX: 指定应用TCP Null, FIN, and Xmas scans机密扫描形式来帮助探测对方的TCP端口状态-e eth0:指定应用eth0网卡进行探测-f : --mtu <val>: 指定应用分片、指定数据包的 MTU.-b <FTP relay host>: 应用FTP bounce scan扫描形式-g: 指定发送的端口号-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机程序形式扫描,以让nmap的扫描不易被对方防火墙检测到)-v 示意显示冗余信息,在扫描过程中显示扫描的细节,从而让用户理解以后的扫描状态-n : 示意不进行DNS解析;-D <decoy1,decoy2[,ME],...>: 用一组 IP 地址覆盖实在地址,其中 ME 填入本人的 IP 地址-R :示意总是进行DNS解析。-F : 疾速模式,仅扫描TOP 100的端口-S <IP_Address>: 伪装成其余 IP 地址--ttl <val>: 设置 time-to-live 工夫--badsum: 应用谬误的 checksum 来发送数据包(失常状况下,该类数据包被摈弃,如果收到回复,阐明回复来自防火墙或 IDS/IPS)--dns-servers : 指定DNS服务器--system-dns : 指定应用零碎的DNS服务器--traceroute : 追踪每个路由节点--scanflags <flags>: 定制TCP包的flags--top-ports <number> :扫描凋谢概率最高的number个端口--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports相似,这里以概率作为参数--version-trace: 显示出具体的版本侦测过程信息--osscan-limit: 限度Nmap只对确定的主机的进行OS探测(至多需确知该主机别离有一个open和closed的端口)--osscan-guess: 大胆猜想对方的主机的零碎类型。由此准确性会降落不少,但会尽可能多为用户提供潜在的操作系统--data-length <num>: 填充随机数据让数据包长度达到 Num--ip-options <options>: 应用指定的 IP 选项来发送数据包--spoof-mac <mac address/prefix/vendor name> : 假装 MAC 地址--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越精确,然而运行工夫会比拟长。--version-light: 指定应用轻量侦测形式 (intensity 2)--version-all: 尝试应用所有的probes进行侦测 (intensity 9)
实战:应用scapy
定制数据包进行高级扫描
scapy工具简介
Scapy是一个能够让用户发送、侦听和解析并假装网络报文的Python程序。这些性能能够用于制作侦测、扫描和攻打网络的工具。
scapy定制ARP协定包
要发包,数据包的格局什么样?一个数据包有什么参数?
应用scapy命令进入控制台
scapy
ARP().display() 显示ARP协定包参数
>>> ARP().display()###[ ARP ]### hwtype= 0x1 ptype= IPv4 hwlen= None plen= None op= who-has hwsrc= 00:0c:29:a1:81:ef psrc= 192.168.10.252 hwdst= 00:00:00:00:00:00 pdst= 0.0.0.0
sr1() 设置参数并发送包
>>> sr1(ARP(pdst="192.168.10.18"))Begin emission:Finished sending 1 packets..*Received 2 packets, got 1 answers, remaining 0 packets<ARP hwtype=0x1 ptype=IPv4 hwlen=6 plen=4 op=is-at hwsrc=d8:bb:c1:2e:51:b8 psrc=192.168.10.18 hwdst=00:0c:29:a1:81:ef pdst=192.168.10.252 |<Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>
IP().display() 显示IP协定包参数
ICMP().display() 显示ICMP协定包参数
sr1() 设置参数并发送包,多个函数参数用/宰割,参数选项用,宰割
>>> sr1(IP(dst='192.168.10.18')/ICMP(), timeout=1)Begin emission:Finished sending 1 packets......*Received 6 packets, got 1 answers, remaining 0 packets<IP version=4 ihl=5 tos=0x0 len=28 id=33647 flags= frag=0 ttl=64 proto=icmp chksum=0x6113 src=192.168.10.18 dst=192.168.10.252 |<ICMP type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |<Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>>>>>
scapy定制TCP协定SYN申请包
tcp三次握手过程中flags的标记
<img src="https://s2.loli.net/2023/01/09/6OpQ8ELS2Zz5U7s.png" alt="image-20230109141337892" style="zoom:50%;" />
<img src="https://s2.loli.net/2023/01/09/8BHg9azowE46rvS.png" alt="image-20230109143536853" style="zoom: 80%;" />
TCP().display() 显示TCP协定包参数
>>> TCP().display()###[ TCP ]### sport= ftp_data dport= http seq= 0 ack= 0 dataofs= None reserved= 0 flags= S window= 8192 chksum= None urgptr= 0 options= []
发送TCP协定包
flags="S" 意思是SYN数据包 同步模式
dport=80 指标端口是80
>>> sr1(IP(dst='192.168.10.18')/TCP(flags="S",dport=80),timeout=1)Begin emission:Finished sending 1 packets.*Received 1 packets, got 1 answers, remaining 0 packets<IP version=4 ihl=5 tos=0x0 len=44 id=33650 flags=DF frag=0 ttl=64 proto=tcp chksum=0x20fb src=192.168.10.18 dst=192.168.10.252 |<TCP sport=http dport=ftp_data seq=3370734633 ack=1 dataofs=6 reserved=0 flags=SA window=65392 chksum=0xe4ce urgptr=0 options=[('MSS', 1460)] |<Padding load='\x00\x00' |>>>
从以上响应后果总失去一个flags=SA的数据包。SA标记即SYN+ACK。示意收到服务器tcp三次握手中的第二个包,能够收到响应包,示意端口凋谢。
注:这种基于tcp的半链接扫描,更隐密,更不容易被发现。
被动信息收集的原理
1. 信息收集分类
信息收集能够分为两类:被动和被动
被动信息收集:与指标主机进行间接交互,从而拿到指标信息,毛病是会记录本人的操作信息。比方:nmap 端口扫描,scapy 高级扫描等。
被动信息收集:不与指标主机进行间接交互,通过搜索引擎或者社会工程等形式间接的获取指标主机的信息。比方: google搜寻,Shodan搜寻,fofa搜寻,钟馗之眼等。
2.信息收集内容
社工层面:公司地址、邮件地址、域名信息、联系电话、公司职务人员
技术层面:IP地址、端口信息、操作系统类型、技术架构、服务版本信息、敏感信息