Kali信息收集
前言
渗透测试最重要的阶段之一就是信息收集,需要收集关于目标主机的基本细腻些。渗透测试人员得到的信息越多,渗透测试成功的概率也就越高。
一、枚举服务
1.1 DNS枚举工具DNSenum
DNSenum是一款非常强大的域名信息收集工具。它能够通过谷歌或者字典文件猜测可能存在的郁闷,并对一个网段进行反向查询。它不仅可以查询网站的主机地址信息、域名服务器和邮件交换记录,还可以在域名服务器上执行axfr请求,然后通过谷歌脚本得到扩展域名信息,提取子域名并查询,最后计算 C类地址并执行whois查询,执行反向查询,把地址段写入文件。
root@kali:~# dnsenum --enum baidu.com
输出信息显示了DNS服务的详细信息。其中,包括主机地址、域名服务地址和邮件服务地址。
使用DNSenum工具检查DNS枚举时,可以使用dnsenum的一个附加选项,如下所示:
--threads[number]: 设置用户同时运行多个进程数。
-r: 允许用户启用递归查询。
-d: 允许用户设置whois请求之间时间延迟数(单位秒)。
-o: 允许用户指定输出位置。
-w: 允许用户启用whois请求。
1.2 DNS枚举工具fierce
fierce工具和DNSenum工具性质差不多,其fierce主要是对子域名进行扫描和收集信息的。使用fierce工具获取一个目标主机上所有IP地址和主机信息。
执行命令如下所示:
root@kali:~# fierce -dns baidu.com
1.3 SNMP枚举工具snmpwalk
snmpwalk是一个SNMP应用程序。它使用SNMP的GETNEXT请求,查询指定的所有OID(SNMP协议中的对象标识)树信息,并显示给用户.
使用snmpwalk测试centos6 主机
centos主机启动snmp服务
yum -y install net-snmp net-snmp-devel net-snmp-utils
service iptables stop
service snmpd start
root@kali:~# snmpwalk -c public 192.168.244.132 -v 2c
1.4 SNMP枚举工具snmpcheck
snmpcheck工具允许用户枚举SNMP设置的同时将结果以可读的方式输出。
root@kali:~# snmpcheck -t 192.168.244.132
1.5 SMTP枚举工具smtp-user-enum
https://tools.kali.org/information-gathering/smtp-user-enum
smtp-user-enum是针对SMTP服务器的25端口,进行用户名枚举的工具,用以探测服务器已存在的邮箱账户。
smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.244.132
二、域名查询及路由跟踪
2.1 域名查询工具DMitry
DMitry工具是用来查询IP或域名whois信息的。whois是用来查询域名是否已经被注册及已经注册域名的详细信息的数据库(如域名所有人和域名注册商)。使用该工具可以查到域名的注册商和过期时间等。
root@kali:~# dmitry -wnpb rzchina.net
- netmask工具将域名xxx转换成标准的子网掩码格式
root@kali:~# netmask -s rzchina.net
2.2 路由跟踪工具scapy
https://scapy.readthedocs.io/en/latest/usage.html
scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等功能。
使用scapy实现多行并行跟踪路由功能。
(1)启动scapy工具。
root@kali:~# scapy
(2)使用sr()函数实现发送和接受数据包。执行命令如下所示:
>>> ans,unans=sr(IP(dst="www.rzchina.net/30",ttl=(1,6))/TCP())
执行以上命令后,会自动与www.rzchina.net建立连接。执行几分钟后,使用Ctrl+C终止接受数据包。从输出的信息中可以看到收到61个数据包,得到2个响应包及保留了22个包。
(3)以表的形式查看数据包发送情况。
>>> ans.make_table(lambda s,r: (s.dst, s.ttl, r.src)) 180.178.61.80 1 192.168.244.2 >>> ans.make_table(lambda s,r: (s.dst, s.dport, r.sprintf("{TCP:%TCP.flags%}{ICMP:%IP.src% - %ICMP.type%}"))) 180.178.61.80 80 192.168.244.2 - time-exceeded
三、识别网络中活跃的主机
3.1 网络映射器工具NAMP
Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(network Mapper)。该工具基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;三是可以推断主机所用的操作系统。通常,用户利用nmap来进行网络系统安全评估
3.2 使用NAMP识别活跃主机
root@kali:~# nmap -sP 192.168.244.132
从输出的信息可以看到主机的域名、主机在线和MAC地址等
也可以使用nping(nmap套具)查看,能够获取更多详细信息
root@kali:~# nping --echo-client "public" echo.nmap.org
输出的信息显示了与echo.nmap.org网站连接是数据的发送情况,如发送数据包的时间、接受时间、TTL值和往返时间等。
也可以发送一些十六进制数据到指定端口
root@kali:~# nping -tcp -p 445 -data AF56A43D 192.168.244.129
输出的信息显示了192.168.244.128与目标系统192.168.244.129之间TCP传输过程。通过发送数据包到指定端口模拟出一些常见的网络攻击,以验证目标系统对这些测试的防御情况。
四、 查看打开的端口
对一个大范围的网络或活跃的主机进行渗透测试,必须要了解这些主机上所打开的端口号。在Kali Linux中默认提供了nmap和zenmap两个端口工具。
4.1 nmap端口扫描
root@kali:~# nmap 192.168.244.132
- 指定扫描端口范围
root@kali:~# nmap -p 1-1000 192.168.244.132
- 扫描特定端口
nmap工具可以指定一个特定端口号扫描
root@kali:~# nmap -p 22 192.168.244.0/24
- 使用nmap工具还可以指定扫描端口结果的输出格式
root@kali:~# nmap -p 22 192.168.244.0/24 -oG /tmp/nmap22.txt
4.2 图形化TCP端口扫描工具Zenmap
五、系统指纹识别
5.1使用nmap工具识别系统指纹信息
使用nmap命令的-O选项启用操作系统测试功能
root@kali:~# nmap -O 192.168.244.132
5.2 指纹识别工具p0f
https://tools.kali.org/information-gathering/p0f
https://lcamtuf.coredump.cx/p0f3/
https://lcamtuf.coredump.cx/p0f3/README
p0f是一款百分之百的被动指纹识别工具。该工具通过分支目标主机发出的数据包,对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙也没有问题。p0f主要识别的信息如下:
- 操作系统类型
- 端口
- 是否允行防火墙之后
- 是否运行于NAT模式
- 是否运行于负载均衡模式
- 远程系统已启动时间
- 远程系统的DSL和ISP信息等。
kaili 中安装p0f
https://lcamtuf.coredump.cx/p0f3/releases/p0f-3.09b.tgz http://www.tcpdump.org/release/libpcap-1.9.1.tar.gz # configure: error: Neither flex nor lex was found. apt-get install flex bison # 解决如下报错 # .build-2160.c:1:10: fatal error: pcap.h: 没有那个文件或目录 tar xf libpcap-1.9.1.tar.gz cd libpcap-1.9.1 ./configure make echo $? make install cd p0f-3.09b /build.sh # 解决报错 # ./p0f: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory vim /etc/ld.so.conf #在此文件中添加一行/usr/local/lib /usr/local/lib ldconfig
启动p0f
cd p0f-3.09b root@kali:~/下载/p0f-3.09b# ./p0f -i eth0
使用p0f分析Wireshark捕获一个文件。执行命令如下所示:
p0f -r /tmp/targethost.pcap -p p0f -result.log
六、服务指纹识别
为了确保有一个成功的渗透测试,必须要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口、服务名和版本等。在kali中可以使用Nmap和Anmp工具识别指纹信息。
6.1 使用nmap工具识别服务指纹信息
nmap -sV 192.168.244.132
6.2 服务枚举工具Amap
Amap是一个服务枚举工具。使用该工具能识别正在运行在一个指定端口或一个范围端口上的应用程序。
https://www.kancloud.cn/haoyuanqiang/kali_linux_tools_documents/1060342
七、其他信息收集方式
7.1 Recon-NG框架
Recon-NG是由Python编写的一个开源的Web侦查(信息收集)框架。Recon-NG框架是一个强大的工具,使用它可以自动的收集信息和网络侦查。
7.2 ARP侦查工具Netdiscover
Netdicover是一个主动/被动的ARP侦查工具。该工具在不适用DHCP的无线网络上非常有用。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。
https://github.com/netdiscover-scanner/netdiscover
Netdiscover命令的语法格式如下所示:
netdiscover [-i device] [-r range | -l file | -p] [-m file] [-F filter] [-s time] [-c count] [-n node] [-dfPLNS]
参数含义如下所示:
-i device: 指定网络设备接口。 -r range: 指定扫描网络范围。 -l file: 指定扫描范围列表文件。 -p: 使用被动模式,不发送任何数据。 -s time: 每个ARP请求之间的睡眠时间。 -n node: 使用八字节的形式扫描。 -c count: 发送ARP请求的时间次数。 -f : 使用主动模式。 -d: 忽略配置文件 -S: 启用每个ARP情况之间抑制睡眠时间。 -P: 打印结果。 -L: 将捕捉信息输出,并继续进行扫描
使用Netdiscover工具扫描局域网指定主机
root@kali:~# netdiscover -r 192.168.244.0/24
7.3 搜索引擎工具Shodan
shodan网络搜索引擎偏向网络设备以及服务器的搜索,具体内容可上网查阅,这里给出它的高级搜索语法。
地址:https://www.shodan.io/
搜索语法 hostname: 搜索指定的主机或域名,例如 hostname:”google” port: 搜索指定的端口或服务,例如 port:”21” country: 搜索指定的国家,例如 country:”CN” city: 搜索指定的城市,例如 city:”Hefei” org: 搜索指定的组织或公司,例如 org:”google” isp: 搜索指定的ISP供应商,例如 isp:”China Telecom” product: 搜索指定的操作系统/软件/平台,例如 product:”Apache httpd” version: 搜索指定的软件版本,例如 version:”1.6.2” geo: 搜索指定的地理位置,例如 geo:”31.8639, 117.2808” before/after: 搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15” net: 搜索指定的IP地址或子网,例如 net:”210.45.240.0/24”
7.4 谷歌/百度 hacker
allintext: 搜索文本,但不包括网页标题和链接 allinlikns: 搜索链接、不包括文本和标题 related: URL 列出于目录URL地址有关的网页 link: URL 列出到链接到目录URL的网页清单 使用“-”排除结果,例如site:baidu.com –image.baidu.com intext: 查找网页中含有xx关键字的网站,示例:管理员登录 intitle: 查找某个标题, 示例: inititle: 后台登录 filetype: 查找某个文件类型的文件 示例:数据挖掘 filetype: doc inurl: 查找url中带有某字段的网站 示例:inurl: php?id= site: 在某域名中查找信息
7.5 censys搜索引擎
censys搜索引擎功能与shodan类似,以下几个文档信息。 地址:https://www.censys.io/ 搜索语法 默认情况下censys支持全文检索。 23.0.0.0/8 or 8.8.8.0/24 可以使用and or not 80.http.get.status_code: 200 指定状态 80.http.get.status_code:[200 TO 300] 200-300之间的状态码 location.country_code: DE 国家 protocols: (“23/telnet” or “21/ftp”) 协议 tags: scada 标签 80.http.get.headers.server:nginx 服务器类型版本 autonomous_system.description: University 系统描述 正则
7.6 fofa搜索引擎
FoFa搜索引擎偏向资产搜索。 地址:https://fofa.so 搜索语法 title=”abc” 从标题中搜索abc。例:标题中有北京的网站。 header=”abc” 从http头中搜索abc。例:jboss服务器。 body=”abc” 从html正文中搜索abc。例:正文包含Hacked by。 domain=”qq.com” 搜索根域名带有qq.com的网站。例: 根域名是qq.com的网站。 host=”.gov.cn” 从url中搜索.gov.cn,注意搜索要用host作为名称。 port=”443” 查找对应443端口的资产。例: 查找对应443端口的资产。 ip=”1.1.1.1” 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。 protocol=”https” 搜索制定协议类型(在开启端口扫描的情况下有效)。例: 查询https协议资产。 city=”Beijing” 搜索指定城市的资产。例: 搜索指定城市的资产。 region=”Zhejiang” 搜索指定行政区的资产。例: 搜索指定行政区的资产。 country=”CN” 搜索指定国家(编码)的资产。例: 搜索指定国家(编码)的资产。 cert=”google.com” 搜索证书(https或者imaps等)中带有google.com的资产。 高级搜索: title=”powered by” && title!=discuz title!=”powered by” && body=discuz ( body=”content=\”WordPress” || (header=”X-Pingback” && header=”/xmlrpc.php” && body=”/wp-includes/“) ) && host=”gov.cn”
7.7 钟馗之眼
钟馗之眼搜索引擎偏向web应用层面的搜索。 地址:https://www.zoomeye.org/ 搜索语法 app:nginx 组件名 ver:1.0 版本 os:windows 操作系统 country:”China” 国家 city:”hangzhou” 城市 port:80 端口 hostname:google 主机名 site:thief.one 网站域名 desc:nmask 描述 keywords:nmask’blog 关键词 service:ftp 服务类型 ip:8.8.8.8 ip地址 cidr:8.8.8.8/24 ip地址段
7.8 后台查找
intitle:<%eval request(