信息收集
一、存活主机识别
1.arping
a. arping命令是什么:
- arping命令是一个发送ARP请求数据包或重复检测IP地址的命令。
- arping可以查看本LAN内IP对应的主机MAC地址,以及MAC的占用情况。
b. arping的版本:
- Thomas Habets 版:Debian-Linux使用的版本
- Linuxiputils suite版:Centos-Linux使用的版本
版本的不同,arping命令的参数也有差别。
c. 命令选项:
root@kali:~# arping --help
ARPing 2.20, by Thomas Habets <thomas@habets.se>
usage: arping [ -0aAbdDeFpPqrRuUv ] [ -w <sec> ] [ -W <sec> ] [ -S <host/ip> ]
[ -T <host/ip ] [ -s <MAC> ] [ -t <MAC> ] [ -c <count> ]
[ -C <count> ] [ -i <interface> ] [ -m <type> ] [ -g <group> ]
[ -V <vlan> ] [ -Q <priority> ] <host/ip/MAC | -B>
Options:
-0 指定源地址为0.0.0.0,一般是刚安装好系统,PC没有配置IP的时候使用该选项,可能收到MAC-ping的响应;这是-s 0.0.0.0选项的另一种使用方法。
-a 使用该选项时,当收到reply时,PC有喇叭的话,会有“滴滴”的声音。
-A 仅统计与请求地址匹配的地址 (这会破坏你做的大多数事情。只有当你同时对许多主机进行arpinging时 才有用。请参阅arping scan net sh的示例)
-b 与- 0类似,但是源广播源地址是255.255.255.255。(请注意,这可能无法回答【arping】,因为这不是主机的正常行为。)
-B 指定这个就相当于 arping 255.255.255.255。
-c count
发送指定的数量的ARP请求包后停止。如果指定了-w参数,则会等待相同数量的ARP 响应包,直到超时为止。
-C count
只需要等到大量的回复,无论使用-c 和-w的参数是多少。
-d 重复地址探测模式。用来检测LAN内有没有IP地址冲突,如果没有IP冲突则返回0;如果收到两个不同MAC地址响应报文,arping会退出,并返回1。
-D 检测是否丢包。当丢包的时候打印点,正常的时候打印-感叹号。
-e 和-a相反,当没有reply时,会有“滴滴”的声音。
-F Don't try to be smart about the interface name. (even if this switch is not given, -i overrides smartness)
不要试图在网卡名称上小题大做。(即使未提供此参数,-i也会覆盖Smarness)
-g group
setgid() to this group instead of the nobody group.
setgid()到该组而不是nobody组。
-h 显示帮助消息并退出。
-i interface
指定发送arp报文的接口。默认是系统的第一块网卡。
-m type
用于传入数据包的时间戳类型。ping时使用-vv列出可用的类型。
-q 除错误消息外,不显示任何消息。
-Q pri 设置802.1p优先级,应与802.1Q(-V)一起使用。默认为0。
-r 原始输出: 每个reply只显示MAC地址。
-R 原始输出: 与-r类似,但只显示IP地址,可以和-r组合使用。
-s MAC 指定源MAC地址。您可能需要与-p一起使用。
-S IP 类似于-b和-o但是指定源IP地址。请注意如果目标主机没有到源IP的route,则有可能收不到响应报文。如果您的PC没有指定源IP地址的权限,则需要打开网卡的混杂模式(使用-p)。使用此选项,您无需获取指定源IP地址的权限即可使用该IP地址【【【【这里翻译可能有问题】】】】】
If you don't own the IP you are using, you may need to
turn on promiscious mode on the interface (with -p). With this
switch you can find out what IP-address a host has without tak-
ing an IP-address yourself.
-t MAC 指定目标MAC地址。(设置要ping 目标IP地址的MAC地址。)
-T IP 当ping的时候不会响应广播ping,但可能响应定向广播的MAC时。使用-T指定目标地址。
例:
为了检查A的MAC地址,使用B的MAC和IP地址。
$ arping -S <IP-B> -s <MAC-B> -p <MAC-A>
-p 打开网卡的混杂模式,如果您没有正在使用的MAC地址的权限,请使用此模式。
-P 发送arp响应报文,与-U一起使用。
-u ping MAC时,显示index = received/sent,而不只是index = received。
-U 发送未经请求的ARP报文。
(无理由的(强制的)ARP模式去更新别的主机上的ARP CACHE列表中的本机的信息,不需要响应。)
-v 打印详细输出。使用两次获取更多信息。
-V num 添加802.1Q标签,默认为无LAN标签。
-w sec 指定两个ping之间的超时时间,单位为毫秒,默认为1秒
d. 参数用法:
- 查看node1的MAC,向指定IP发送arp请求报文
- 参数-c,查看node1的MAC地址,并指定arp请求包的数量
- 参数-i,查看node1的MAC地址,并指定网卡来发送请求包
- 参数-d,查看node1的IP是否被不同的MAC占用
这里的-d参数的作用和官方参数说明中有不同,我们可以从返回的MAC地址中看到响应192.168.83.28的MAC地址有两个,最后打印看出:有3个报文发出,但是收到6个响应报文;没有被占用的情况下,发出三个请求报文,收到三个响应报文。
- 参数-T,确认MAC和IP是否对应,确认node2上指定的IP绑定在指定的MAC地址上
- 参数-p,-S,-s,有时候,本地查不到某个主机,可以通过网关或者其他PC查以下三种模式均可实现。
master通过网关的IP和MAC地址,查询node2的MAC地址
master通过网关的IP地址,来查询node1的MAC地址
master通过网关的MAC地址,来查询node2的MAC地址
- 当本地断网,或者没有IP地址时,使用-0(数字0)来查询LAN中主机IP的MAC<!--无法获取网关MAC-->
实验前提:Kali-Linux断网 ,已知node1和node2的IP地址。
问题:求node1和node2的MAC地址。
- 参数-D,当有响应的时候,回复!,没有响应(可能该IP地址不存在)回复.
- 参数-h,显示帮助消息。包括ARPing的版本,用法
- 参数-q,出错误信息外,不显示任何信息。在脚本中可以使用此参数
- 参数-r,每个响应报文只打印MAC地址
- 参数-R,每个响应报文只打印IP地址。-r和-R可以组合使用
e. ARP request/reply报文抓取和分析:
- 虚拟机采用桥接模式,使kali和宿主机在同一LAN内。
- 在kali上使用ARPing命令向宿主机发送ARP request报文。
- 在宿主机上打开wireshark,抓取ARP报文。
二、路由分析
1.netdiscover
- 选项
-p 被动模式。默默的侦听指定的网卡以发现别的二层主机
-t ARP包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。
-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),并继续进行扫描
三、情报分析
1.spiderfoot
- 什么是spiderfoot?
SpiderFoot 是一种侦察工具,可自动查询 100 多个公共数据源 (OSINT),以收集有关 IP 地址、域名、电子邮件地址、名称等的情报。您只需指定要调查的目标,选择要启用的模块,然后 SpiderFoot 将收集数据以建立对所有实体及其相互关系的理解。
- 什么是开源情报?
OSINT(开源情报)是公共领域中可用的数据,可能会揭示有关您的目标的有趣信息。这包括 DNS、Whois、网页、被动 DNS、垃圾邮件黑名单、文件元数据、威胁情报列表以及 SHODAN、HaveIBeenPwned 等服务。
- 运行:https://www.spiderfoot.net/documentation/
pip install lxml netaddr M2Crypto cherrypy mako
tar zxvf spiderfoot-X.X.X-src.tar.gz
cd spiderfoot-X.X.X
python ./sf
在地址栏输入自动生成的地址。
http://127.0.0.1:5001/
四、网络扫描
1.nmap
- www.nmap.com.cn/doc/manual.shtm
- 端口扫描
nmap 10.0.1.161 -p1-65535
- 扫描一个IP的多个端口:
nmap 10.0.1.161 -p20-200,7777,8888
https://www.cnblogs.com/nmap/p/6232207.html
2. masscan
- dnsenum是什么?
dnsenum的目的是尽可能收集一个域的信息,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mx record(函件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(google hacking),提取自域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。
- 作用?
通过 dns 信息,我们可以获取到 ip 地址,根据 IP 地址可以获取同网段其他 ip 地址,而这些 ip 地址后面就能获取到开放的端口号,然后通过开发的端口号可以获取到背后跑的是什么服务。通过 dns 信息还能获取到一些子域名信息,获取到 dns 域名注册信息,甚至可能对 dns 服务器做区域传输,把整个目标后面的信息全部获取到。
- 运行
IN:INTERNET:表示资源都在Internet上。
A记录:把主机名指定为IP地址,完整的主机名后应有一个点.每个主机至少应有一个A记录。A记录代表"主机名称"与"IP"地址的对应关系, 作用是把名称转换成IP地址,意思是说该主机的IP对应之意!DNS使用A记录来回答"某主机名称所对应的IP地址是什么?"主机名必须使用A记录转译成IP地址,网络层才知道如何选择路由,并将数据包送到目的地.你要知道的是A就代表了将域名转换成ip,现在好多的工具都有这个功能。
NS:就是name server的缩写,即域名。
MX记录MX:就是Mail eXchanger(MX)的简写,格式[hostname] IN MX [顺序] [主机名]。
PTR:PTR记录代表"IP地址"与"主机名"的对应关系,作用刚好与A记录相反。
CNAME:用于将DNS域名的别名映射到另一个主要的或规范的名称 。意思就是通过CNAME将你访问的没有IP地址的域名间接的变成访问另外一个主机。