admin 管理员组

文章数量: 887021

第4章 信息收集

4.1 枚举服务

枚举(Enumeration)是一种定义常量的数据类型,它将一组具有相同类型和含义的常量集合在一起,并为这些常量分配唯一的标识符。枚举在程序中用于表示一些离散的、有限的、具有特定含义的值,例如一周中的天数、一年中的月数、性别等。枚举类型中的常量是不可修改的,这使得程序更加稳定和可靠。在许多编程语言中,枚举可以通过名称或整数值进行访问。

枚举是我们自己定义的一个集合,比如说我们数学里面所学的集合A={1、2、3},当我们要使用A这个集合的时候,我们只能够使用集合A里面的1、2、3这三个元素,不是A里面的元素我们就不可以使用。

同样,枚举和这个集合是类似的,当我们定义了一个枚举类型的时候,我们声明它里面有几个元素,在我们使用这个枚举的时候,我们只能够使用它有的元素,没有的元素我们是无法使用,系统就会报错!

枚举还有一个特点,就是可以代表数值,比如说第一个定义的元素对应的值为0,每个枚举元素从0开始,逐一增加。此时,这个数值也代表他们本身,相当于每一个元素有两个名字。

4.1.1 DNS枚举工具DNSenum

DNSenum是一种用于执行DNS枚举的工具。它可以通过查询DNS服务器来获取有关域名的信息,如主机名、IP地址、MX记录等。它还可以扫描端口,并使用爆破技术查找常见的子域名和用户名。DNSenum可以帮助网络管理员评估网络安全和发现可能存在的漏洞。它可以在Linux、Windows和macOS操作系统上运行,并可以与其他扫描工具和渗透测试框架集成。

DNSenum是一款非常强大的域名信息收集工具。它能够通过谷歌或者字典文件猜测可能存在的域名,并对一个网段进行反向查询。它不仅可以查询网站的主机地址信息、域名服务器、邮件交换记录,还可以在域名服务器上执行axfr请求,然后通过谷歌脚本得到扩展域名信息,提取自域名并查询,最后计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。使用DNSenum工具检查DNS枚举。

在终端执行如下所示的命令:

root@kali:~# dnsenum --enum benet
118.193.46.232
dnsenum --enum http://yangeryu/

使用DNSenum工具检查DNS枚举时,可以使用dnsenum的一些附加选项。

如下所示:–threads [number]:设置用户同时运行多个进程数。

-r:允许用户启用递归查询。

-d:允许用户设置WHOIS请求之间时间延迟数(单位为秒)。

-o:允许用户指定输出位置。-w:允许用户启用WHOIS请求。

4.1.2 DNS枚举工具fierce

fierce和DNSenum性质差不多,是一款IP、域名互查的DNS工具,可进行域传送漏洞检测、字典爆破子域名、反查IP段、反查指定域名上下一段IP,属于一款半轻量级的多线程信息收集用具。Fierce可尝试建立HTTP连接以确定子域名是否存在,此功能为非轻量级功能,所以,定义为半轻量级。

Fierce是一种用于执行DNS枚举的工具,它可以在指定的域名上查找子域名,并找到与这些子域名相关的IP地址。与其他DNS枚举工具不同的是,Fierce可以使用字典爆破技术来查找域名。它还可以查找MX记录、NS记录、CNAME记录和SOA记录等信息。Fierce可以在Linux和macOS系统上运行,并提供命令行接口。它是一款快速、可靠的工具,可以帮助渗透测试人员识别网络攻击面,并找出潜在的漏洞。由于其快速的扫描速度和准确的结果,因此在网络安全评估和攻击测试中得到了广泛应用。

参数:

    -connect [header.txt]         对非RFC1918地址进行HTTP连接(耗时长、流量大),默认返回服务器的响应头部。可通过文件指定HTTP请求头的Host信息,如:fierce -dns example -connect headers.txt
    -delay <number>              指定两次查询之间的时间间隔
    -dns <domain>                 指定查询的域名
    -dnsfile <dnsfile.txt>         用文件指定反向查询的DNS服务器列表
    -dnsserver <dnsserver>   指定用来初始化SOA查询的DNS服务器。(仅用于出初始化,后续查询将使用目标的DNS服务器)
    -file <domain.txt>              将结果输出至文件
    -fulloutput                         与-connect结合,输出服务器返回的所有信息
    -help                                 打印帮助信息
    -nopattern                        不适用搜索模式查找主机。(此参数暂时没有用明白)
    -range <1.1.1.1/24>         对内部IP范围做IP反查(此参数尚未用明白)。必须与dnsserver参数配合,指定内部DNS服务器,如: fierce -range 111.222.333.0-255 -dnsserver ns1.example
    -search <Search list>       指定其他的域,在其他的域内进行查找(此参数没有用明白),如:   fierce -dns examplecompany -search corpcompany,blahcompany
    -tcptimeout <number>      指定查询的超时时间
    -threads [number]            指定扫描的线程数,默认单线程
    -traverse [number]           指定扫描的上下IP范围,默认扫描上下5各个。
    -version                           打印fierce版本
    -wide                               扫描入口IP地址的C段。产生大流量、会收集到更多信息.
    -wordlist <sub.txt>          使用指定的字典进行子域名爆破

执行命令如下所示:

root@kali:~# fierce -dns baidu
fierce -dns http://yangeryu

用户也可以通过提供一个单词列表执行相同的操作。执行命令如下所示:

root@kali:~# fierce -dns baidu -wordlist hosts.txt /tmp/output.txt
fierce -dns yangeryu -wordlist hosts.txt /tmp/output.txt
http://yangeryu

4.1.3 SNMP枚举工具Snmpwalk

Snmpwalk是一种SNMP(Simple Network Management Protocol)枚举工具,可以用于枚举SNMP代理的信息。它可以请求SNMP代理提供有关其所管理的设备、接口和性能的数据。

Snmpwalk使用命令行界面,基于SNMP协议版本1、2c和3。它可以逐级遍历SNMP MIB(Management Information Base),获取所有相关记录和信息。Snmpwalk还可以提供详细的错误消息,以帮助用户诊断问题。

使用Snmpwalk可以探测网络中运行的主机和设备的响应,并提取与系统性能、接口利用率、路由信息和端口状态相关的信息。Snmpwalk还可以用于监视网络中的设备,以便及时发现并解决问题。SNMP作为广泛应用于TCP/IP网络的网络管理标准协议,提供了统一的接口,从而实现了不同种类和厂商的网络设备之间的统一管理。

SNMP协议:SNMPv1、SNMPv2c、SNMPv3

Snmpwalk是一个SNMP应用程序,他使用SNMP的GETNEXT请求,查询指定的所有OID(SNMP协议中的对象标识)树信息,并显示给用户,它可以帮助管理员轻松地获取关于网络设备和主机的信息,以便更好地监视和管理网络。

参数介绍:

由于SNMP协议中,不同的协议版本存在不同的参数选项,以下参数按协议分开说明。

普通选项

 –h 显示帮助
 –v 1|2c|3 指定SNMP协议版本
 –V 显示当前SNMPWALK命令行版本
 –r RETRIES 指定重试次数,默认为0次。
 –t TIMEOUT 指定每次请求的等待超时时间,单为秒,默认为3秒。
 –Cc 指定当在WALK时,如果发现OID负增长将是否继续WALK。
2. V1、V2C选项
 –c COMMUNITY 指定共同体字符串
3. V3选项
 –l LEVEL 指定安全级别:noAuthNoPriv|authNoPriv|authPriv
 –u USER-NAME 安全名字
 –a PROTOCOL 验证协议:MD5|SHA。如果-l指定为authNoPriv或authPriv时才需要。
 –A PASSPHRASE 验证字符串。如果-l指定为authNoPriv或authPriv时才需要。
 –x PROTOCOL 加密协议:DES。如果-l指定为authPriv时才需要。
 –X PASSPHRASE 加密字符串:如果-l指定为authPriv时才需要。
–h:显示帮助。
 
–v:指定snmp的版本, 1或者2c或者3。
 
–c:指定连接设备SNMP密码。
 
–V:显示当前snmpwalk命令行版本。
 
–r:指定重试次数,默认为0次。
 
–t:指定每次请求的等待超时时间,单为秒,默认为3秒。
 
–l:指定安全级别:noAuthNoPriv|authNoPriv|authPriv。
 
–a:验证协议:MD5|SHA。只有-l指定为authNoPriv或authPriv时才需要。
 
–A:验证字符串。只有-l指定为authNoPriv或authPriv时才需要。
 
–x:加密协议:DES。只有-l指定为authPriv时才需要。
 
–X:加密字符串。只有-l指定为authPriv时才需要。
1、snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.25.1    得到取得windows端的系统进程用户数等

其中-v是指版本,-c 是指密钥,也就是客户端snmp.conf里面所设置的,下面类同.

2、snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.25.2.2  取得系统总内存
3、snmpwalk -v 2c -c public 10.1.1.1 hrSystemNumUsers  取得系统用户数(注意:hrSystemNumUsers与.1.3.6.1.2.1.25.1.5是等效的)
4、snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.4.20    取得IP信息
5、snmpwalk -v 2c -c public 10.1.1.1 system   查看系统信息
6、snmpwalk -v 2c -c public 10.1.1.1 ifDescr 获取网卡信息

snmpwalk使用方法很简单,如下:

snmpwalk -v 1或2c(代表SNMP版本) -c SNMP密码 IP地址 OID(对象标示符)
–v:指定snmp的版本, 1或者2,该参数必须有。
–c:指定连接设备SNMP读密码,该参数必须有。
IP:指定要walk的设备的IP地址,该参数必须有。
OID:代表要获取设备的指标oid,该参数不是必须的。

【实例4-1】使用snmpwalk命令测试Windows主机。

先在Windows主机上添加功能,步骤如下:(非常重要)

==步骤1.==右键点击左下角的开始,选择“设置”。

找到并点击“应用”。

左侧栏选择“应用和功能”,右侧栏点击“可选功能”。

点击可选功能下的“添加功能”。

搜索框输入“snmp”,然后勾选“简单网络管理协议 (SNMP)”,最后点击“安装”即可。

步骤2

左下角搜索“服务”,打开

往下滑,找到SNMP服务

单击SNMP,右键,选择属性

在属性中打开:安全 ,并添加社区public 下方选择 接受来自任何而主机的SNMP数据包,之后点确定便可。

OK,Windows主机的设置到此结束

打开kalil inux

使用 Snmpwalk 命令测试 Windows 主机

执行命令如下所示:

IP地址是你自己宿主机的ip地址(win+r,输入cmd,输入命令:ipconfig)

root@kali:~# snmpwalk -c public 169.254.218.205 -v 2c
snmpwalk -c public 169.254.218.205 -v 2c
snmpwalk -c public 10.4.176.124  -v 2c
snmpwalk -v 2c -c public 169.254.218.205
snmpwalk -v 2c -c public 10.4.176.124
snmpwalk -v 2c -c public 118.193.46.232

用户也可以使用snmpwalk命令枚举安装的软件。(反正我的输了没反应)

执行命令如下所示:

root@kali:~# snmpwalk -c public 169.254.218.205 -v 1 | grep ftp
 snmpwalk -c public 10.4.176.124 -v 1 | grep ftp
  snmpwalk -c public  118.193.46.232 -v 1 | grep ftp
 118.193.46.232

使用snmpwalk工具也可以枚举目标主机上打开的TCP端口。(我的没反应)

执行命令如下所示:

root@kali:~# snmpwalk -c public 169.254.218.205 -v 1 | grep tcpConnState | cut -d "." -f6 | sort -nu
snmpwalk -c public 10.4.176.124 -v 1 | grep tcpConnState | cut -d "." -f6 | sort -nu

4.1.4 SNMP枚举工具snmpcheck

snmpcheck工具允许用户枚举SNMP设备的同时将结果以可读的方式输出。

下面将演示该工具的使用。使用snmpcheck工具通过SNMP协议获取192.168.41.138主机信息。

执行命令如下所示:

root@kali:~# snmp-check -t 169.254.218.205
snmp-check -t 192.168.41.138
snmp-check 169.254.218.205 -c public -v 2c
snmp-check  118.193.46.232 -c public -v 2c
(因扫描出来内容较多此处截取一部分)

该命令输出信息较多,下面依次讲解每个部分。

首先输出的枚举运行信息。

snmp-check v1.9 - SNMP enumerator
Copyright (c) 2005-2015 by Matteo Cantoni (www.nothink)
[+] Try to connect to 169.254.218.205:161 using SNMPv2c and community 'public'

(1)获取系统信息,如主机名、操作系统类型及架构。结果如下所示:

 [*] System information
 -----------------------------------------------------------------------------------------------

 Hostname            	: WIN-RKPKQFBLG6C					#主机名
 Description          	: Hardware: x86 Family 6 Model 42 Stepping 7 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)				#描述信息
 Uptime system         	: 6 hours, 29:56.09						#目前系统开机运行时间
 Uptime SNMP daemon  : 25 minutes, 56.65						#SNMP进程运行时间
 Motd                  : -
 Domain (NT)           : WORKGROUP						#计算机隶属于

(2)获取设备信息,如设备ID号、类型、状态等。结果如下所示:

 [*] Devices information
 -----------------------------------------------------------------------------------------------
    Id                 Type   	  Status  	Description
     1         	Printer  		Running  TP Output Gateway
    10          	Network  	Unknown  WAN Miniport (L2TP)
    11         	Network  	Unknown  WAN Miniport (PPTP)
    12         	Network  	Unknown  WAN Miniport (PPPOE)
......
     6          	Printer  		Running  Microsoft Shared Fax Driver
     7          	Processor  	Running  Intel
     8           	Network  	Unknown  Software Loopback Interface 1
     9           	Network  	Unknown  WAN Miniport (SSTP)

(3)获取存储信息,如设备id、设备类型、文件系统类型等。

 [*] Storage information
 -----------------------------------------------------------------------------------------------
A:\
Device id       	: 1								#设备ID
Device type     	: Removable Disk					#设备类型
Filesystem type 	: Unknown						#文件系统类型
C:\ Label:  Serial Number 3814cb70
Device id       	: 2
Device type     	: Fixed Disk
Filesystem type 	: NTFS

(4)获取用户账户信息。结果如下所示:

 [*] User accounts
 -----------------------------------------------------------------------------------------------
Administrator
 Guest

(5)获取进程信息,如进程ID、进程名、进程类型等。结果如下所示:

 [*] Processes
 -----------------------------------------------------------------------------------------------
Total processes 	: 44
Process type    	: 1 unknown, 2 operating system, 3 device driver, 4 application
 Process status  	: 1 running, 2 runnable, 3 not runnable, 4 invalid
Process id              Process name         Process type  Process status  Process path
          1       System Idle Process             2               1  
       1112               svchost.exe            4               1  
       1276               spoolsv.exe            4               1  
       1324               svchost.exe            4               1  
       1416              taskhost.exe             4               1  
......

(6)获取网络信息,如TTL值、TCP段、数据元。结果如下所示:

 [*] Network information
 -----------------------------------------------------------------------------------------------
IP forwarding enabled  	  : no		#是否启用IP转发
 Default TTL           	  : 128		#默认TTL值
 TCP segments received   : 19092		#收到TCP段
 TCP segments sent       : 5964		#发送TCP段
 TCP segments retrans.    : 0		#重发TCP段
 Input datagrams          : 37878		#输入数据元
 Delivered datagrams      : 38486		#传输的数据元
 Output datagrams        : 16505		#输出数据元

(7)获取网络接口信息,如接口状态、速率、IP地址、子网掩码等。结果如下所示:

 [*] Network interfaces
 -----------------------------------------------------------------------------------------------、
Interface         : [ up ] Software Loopback Interface 1
Interface Speed  : 1073.741824 Mbps		#接口速率
IP Address       : 127.0.0.1			#IP地址
Netmask          : 255.0.0.0			#子网掩码
MTU              : 1500				#最大传输单元

(8)获取路由信息,如目标地址、下一跳地址、子网掩码和路径长度值。

 [*] Routing information
 -----------------------------------------------------------------------------------------------
      Destination	  Next Hop	       Mask	Metric
          0.0.0.0     192.168.41.2          0.0.0.0       10
        127.0.0.0        127.0.0.1        255.0.0.0      306
        127.0.0.1        127.0.0.1  255.255.255.255      306
  127.255.255.255        127.0.0.1  255.255.255.255      306
     192.168.41.0   192.168.41.138    255.255.255.0      266
   192.168.41.138   192.168.41.138  255.255.255.255      266
   192.168.41.255   192.168.41.138  255.255.255.255      266
        224.0.0.0        127.0.0.1        240.0.0.0      306

(9)获取网络服务信息,如分布式组件对象模型服务、DHCP客户端、DNS客户端等。

 [*] Network services
 -----------------------------------------------------------------------------------------------
Application Experience
 Background Intelligent Transfer Service
 Base Filtering Engine
 COM+ Event System
 COM+ System Application
 Computer Browser
 Cryptographic Services
 DCOM Server Process Launcher
 DHCP Client
 DNS Client
 ......

(10)获取监听的TCP端口,如监听的TCP端口号有135、495149513、139等。

 [*] Listening TCP ports and connections
 -----------------------------------------------------------------------------------------------

   Local Address   Port      Remote Address   Port       State

         0.0.0.0    135             0.0.0.0      -       Listening
         0.0.0.0  49152             0.0.0.0      -       Listening
         0.0.0.0  49153             0.0.0.0      -       Listening
         0.0.0.0  49154             0.0.0.0      -       Listening
         0.0.0.0  49155             0.0.0.0      -       Listening
         0.0.0.0  49156             0.0.0.0      -       Listening
         0.0.0.0  49159             0.0.0.0      -       Listening
  192.168.41.138    139             0.0.0.0      -       Listening
  192.168.41.138  49241        192.168.41.1    139       Time wait

(11)获取监听UDP端口信息,如监听的UDP端口有123、161、4500、500、5355等。

 [*] Listening UDP ports
 -----------------------------------------------------------------------------------------------
   Local Address   Port
         0.0.0.0    123
         0.0.0.0    161
         0.0.0.0   4500
         0.0.0.0    500
         0.0.0.0   5355
       127.0.0.1   1900
       127.0.0.1  51030
  192.168.41.138    137
  192.168.41.138    138
  192.168.41.138   1900

(12)获取软件组件信息,如Visual C++2008。显示结果如下所示:

 [*] Software components
 -----------------------------------------------------------------------------------------------
1. Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148

(13)获取Web服务信息,如发送的字节数、文件数、当前匿名用户等。结果如下所示:

 [*] Web server information
 -----------------------------------------------------------------------------------------------
Total bytes sent low word     : -
 Total bytes received low word : -
 Total files sent              : -
 Current anonymous users       : -
 Current non anonymous users   : -
 Total anonymous users         : -
 Total non anonymous users     : -
......
[*] Enumerated 192.168.41.138 in 0.64 seconds
Signal USR1 received in thread 1, but no signal handler set. at /usr/bin/snmpcheck line 230.

4.1.5 SMTP枚举工具smtp-user-enum

SMTP (Simple Mail Transfer Protocol)是一种用于电子邮件传输的标准协议。它定义了电子邮件客户端和邮件服务器之间的通信方式,用于将邮件从发送方的邮件服务器传送到接收方的邮件服务器,然后再由接收方的邮件客户端下载邮件。SMTP协议通常使用TCP端口25来进行通信。

smtp-user-enum是针对SMTP服务器的25端口,进行用户名枚举的工具,用以探测服务器已存在的邮箱账户。

在SMTP服务上启动用户的SMTP枚举。

  • 安装smtp-user-enum (需在root模式下)

    命令如下:

     sudo apt install smtp-user-enum
    

  • 测试:

    smtp-user-enum -M VRFY -U /tmp/users.txt -t 169.254.218.205(不行)
    

smtp-user-enum -M VRFY -u root -t 192.168.1.25
smtp-user-enum -M VRFY -u root -t 169.254.218.205

4.2 测试网络范围

4.2.1 域名查询工具DMitry

DMitry工具是用来查询IP或域名WHOIS信息的。WHOIS是用来查询域名是否已经被注册,已经注册域名的详细信息的数据库(如域名所有人、域名注册商)。使用该工具可以查到域名的注册商、过期时间等。

DMitry是一个命令行工具,用于执行网络情报收集和漏洞评估任务。它可以在多个域名、IP地址和服务上执行快速的资产发现和扫描,以收集信息和评估安全风险。

对于域名查询,DMitry可以使用以下选项:

-d:指定要查询的域名或域名列表。
-w:指定要写入的输出文件路径。
-j:将输出格式化为JSON格式。
-t:指定线程数。
-p:指定要扫描的端口范围。
-m:指定要使用的扫描模块。

下面将使用 DMitry 工具收集rzchina 和baidu域名的信息

执行命令如下所示:

root@kali:~# dmitry -wnpb rzchina
dmitry -wnpb baidu

输出的信息显示了 rzchina 和百度域名的IP 地址、WHOIS 信息及开放的端口号等。执行以上命令后输出的信息很多,但是由于篇幅的原因,部分内容使用省略号 (…)代替。虽然使用 DMitry 工具可以查看到 IP 或域名信息,但还是不能判断出这个网络范围。因为一般的路由器和防火墙等并不支持 IP 地址范围的方式,所以工作中经常要把 P 地址转换成子网掩码的格式、CIDR 格式和思科反向子网掩码格式等。在 Linux 中,netmask工具可以在IP 范围、子网掩码、CIDR 和 Cisco 等格式中互相转换,并且提供了P 地址的点分十进制、十六进制、八进制和二进制之间的互相转换。使用 netmask 工具将域名rzchina转换成标准的子网掩码格式.

执行命令如下所示:

netmask -s rzchina
netmask -s baidu

输出的信息显示了rzchina、baidu 域名的I 地址和子网掩码值。

4.2.2 跟踪路由工具Scapy

Scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。它提供多种类别的交互式生成数据包或数据包集合、对数据包进行操作、发送数据包、包嗅探、应答和反馈匹配等功能。

Scapy是一款Python程序,可以用来对网络数据包进行一系列的操作,包括发送、捕获、构造和解析。它可以用作网络跟踪工具,通过发送ICMP跟踪路由请求和解析ICMP响应来确定数据包的路由路径。

使用Scapy进行路由跟踪的示例代码:

from scapy.all import ICMP, IP, sr1, traceroute

# 定义目标IP地址
target = "www.google"

# 发送ICMP跟踪路由请求,获取ICMP响应
ans, unans = traceroute(target, maxttl=20)

# 显示路由跟踪结果
ans.summary()

此代码将向目标IP地址发送ICMP跟踪路由请求,并等待ICMP响应。然后,它将显示每个路由器的IP地址和响应时间。这个过程将重复多次,每次增加跃点数,直到到达目标主机或达到指定的最大跃点数(在此示例中为20)。

此外,Scapy还提供了许多其他功能,例如发送自定义数据包、捕获网络流量并进行分析、模拟TCP/IP连接等。这些功能可以用于网络安全测试、网络协议分析、网络性能优化等领域。

(1)启动scapy工具。

执行命令如下所示:

root@kali:~# scapy 

(2)使用sr()函数实现发送和接收数据包。

非教材步骤:

SR()函数是Scapy模块中的一个函数,用于在Python中发送和接收数据包。其中,SR代表“Send Receive”。

以下是使用SR()函数实现发送和接收数据包的步骤:

1.导入必要的模块:

from scapy.all import *

2.定义要发送的数据包(例如,ICMP数据包):

pkt = IP(dst="www.google")/ICMP()

3.使用SR()函数发送并接收数据包:

ans, unans = sr(pkt)

其中,ans变量包含成功收到响应的数据包,而unans变量则包含未收到响应的数据包。

4.对收到的数据包进行处理(例如,输出到控制台):

ans.summary(lambda(s, r): r.sprintf("%IP.src% is alive"))

以上步骤将发送一个ICMP数据包到www.google,并在控制台上输出响应的IP地址。

需要注意的是,SR()函数可能需要管理员权限才能运行,因为它可能会涉及到底层网络接口的操作。在Linux系统中,可以使用sudo命令来获取管理员权限。在Windows系统中,需要以管理员身份运行Python解释器。

教材步骤:

执行命令如下所示:

>>> ans,unans=sr(IP(dst="www.rzchina/30",ttl=(1,6))/TCP())
Begin emission:
.****Finished to send 24 packets.
.........***************.........................................^C					#Ctrl+C终止
Received 70 packets, got 19 answers, remaining 5 packets

(3)以表的形式查看数据包发送情况。

执行命令如下所示:

>>> ans.make_table(lambda(s,r):(s.dst,s.ttl,r.src))

执行以上命令后,输出如下所示的信息:

180.178.61.80 180.178.61.81 180.178.61.82 180.178.61.83 
1 192.168.18.2  192.168.18.2  192.168.18.2  192.168.18.2  

(4)使用scapy查看TCP路由跟踪信息。

执行命令如下所示:

>>> res,unans=traceroute(["www.google","www.kali","www.rzchina"],dport[80,443],maxttl=20,retry=-2)

(5)使用res.graph()函数以图的形式显示路由跟踪结果。

>>> res.graph()

(6)退出scapy程序,执行命令如下所示:

>>> exit() 或 Ctrl+D

4.3 识别活跃的主机

4.3.1 网络映射器工具Nmap

Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper)。Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型,能够扫描网络中的主机和服务,获取它们的详细信息,从而识别潜在的漏洞和攻击面。Nmap支持多种操作系统,包括Linux、WindowsMacOS等。

以下是Nmap的主要功能和用途:

  1. **主机扫描:**Nmap可以扫描指定的IP地址段或域名,识别活动主机和关闭的主机,获取每个主机的操作系统信息和端口状态等。

  2. **端口扫描:**Nmap可以扫描指定主机或IP地址范围内的所有端口,识别开放的端口和关闭的端口,获取每个端口的服务类型和版本号等。

  3. **服务识别:**Nmap可以识别每个端口上运行的服务类型和版本信息,从而帮助用户了解网络中的服务和应用程序。

  4. **操作系统识别:**Nmap可以识别每个主机的操作系统类型和版本信息,从而帮助用户确定目标主机的弱点和漏洞。

  5. **脚本扫描:**Nmap可以使用自定义脚本扫描网络中的主机和服务,从而检测安全漏洞和潜在威胁。

  6. **安全审计:**Nmap可以用于安全审计和漏洞评估,发现网络中可能存在的弱点和漏洞,并提供解决方案和建议。

总之,Nmap是一款强大的网络映射器工具,可用于识别主机、端口和服务,并发现网络中的安全漏洞和潜在威胁。但是,需要注意的是,使用Nmap进行网络扫描时需要遵守法律和道德规范,避免对他人的网络造成伤害和损失。

测试描述
T1发送TCP数据包(Flag=SYN)到开放的TCP端口上
T2发送一个空的TCP数据包到开放的TCP端口上
T3发送TCP数据包(Flag=SYN,URG,PSH,FIN)到开放的TCP端口上
T4发送TCP数据包(Fliag=ACK)到开放的TCP端口上
T5发送TCP数据包(Fliag=SYN)到关闭的TCP端口上
T6发送TCP数据包(Fliag=ACK)到开放的TCP端口上
T7发送TCP数据包(Fliag=URG,PSH,FIN)到关闭的TCP端口上

使用Nmap查看一个主机是否在线。

执行命令如下所示:

root@kali:~# nmap -sP 192.168.41.136
 nmap -sP 169.254.218.205

从输出的信息中可以看到 192.168.41.136 主机的域名、主机在线和 MAC 地址等。

用户也可以使用Nping查看,能够获取更多详细信息。

执行命令如下所示:

root@kali:~# nping --echo-client "public" echo.nmap

用户也可以发送一些十六进制数据到指定的端口,

如下所示:

root@kali:~# nping -tcp -p 445 -data AF56A43D 169.254.218.205

4.4 查看打开的端口

4.4.1 TCP端口扫描工具Nmap

使用Nmap工具查看目标主机169.254.218.205上开放的端口号。(用你自己Windows主机电脑的IP地址)

执行命令如下所示:

root@kali:~# nmap 169.254.218.205

1.指定扫描端口范围

如果目标主机上打开的端口较多时,用户查看起来可能有点困难。这时候用户可以使用Nmap指定扫描的端口范围,如指定扫描端口号在1-1000之间的端口号,

执行命令如下所示:

root@kali:~# nmap -p 1-1000 169.254.218.205

2.扫描特定端口

Nmap工具还可以指定一个特定端口号来扫描。

**【实例4-2】**使用Nmap工具指定扫描在169.254.218.*网段内所有开启TCP端口22的主机。

执行命令如下所示:

root@kali:~# nmap -p 22 169.254.218.*

输出的结果显示了 169.254.218.*网段内所有开启 22 端口的主机信息。(部分截图)

从输出的信息中可以看到,总共有X台主机上打开了 22 号端口。(太多了,懒得数)

使用NMAP工具还可以指定扫描端口22结果的输出格式。

执行命令如下所示:

root@kali:~# nmap -p 22 169.254.218.* -oG /tmp/nmap-targethost-tcp445.txt

执行以上命令后输出的信息与第三步中输出的结果类似,这里就不再列举。但是执行该命令后,Nmap 会将输出的信息保存到/tmp/nmap-targethost-tcp445.txt 文件中

4.4.2 图形化TCP端口扫描工具Zenmap

Zenmap是Nmap发现GUI版本,Zenmap是一个图形化的网络扫描工具,它是Nmap的一个前端界面,可以帮助用户更方便地使用Nmap进行端口扫描和主机发现等操作。

Zenmap提供了多种扫描选项和过滤器,可以根据用户的需求进行定制化配置,同时还支持多种输出格式,包括文本、XML和HTML等。Zenmap还提供了一些常用的扫描配置模板,例如快速扫描、操作系统检测、漏洞扫描等,方便用户快速进行常规的安全检测。

总之,Zenmap是一个功能强大、易于使用的网络扫描工具,适用于安全测试、网络管理和系统维护等领域。

教材:Zenmap是NMAP官方推出的一款基于NMAP的安全扫描图形用户界面。它的设计目标是快速地扫描大型网络,当然也可以使用它扫描单个主机。

新版的kali linux 已不自带zenmap,2018版的也没有,需要自己安装

1.使用需要安装zenmap的kali Linux的浏览器访问nmap的官网https://nmap

选择Linux (RPM)

往下滑,点击Optional Zenmap GUI (all platforms): zenmap-7.94-1.noarch.rpm进行下载

2. 安装rpm格式转化工具fakeroot

因为Kali2020 不支持 rpm 命令,我们要将rpm包转换为deb格式的包,fakeroot工具就有这样的功能。

终端输入(建议在root下)

apt-get install alien fakeroot

sudo apt-get install alien fakeroot

3. 将rpm包转换为deb格式

终端输入

fakeroot alien (rpm包名)
即:fakeroot alien zenmap-7.94-1.noarch.rpm

此时会多出一个转换后的deb包。(可以用ls命令查看是否在当前路径下,不在的话一般放在/root/目录下,我的是在当前目录下的)

4.安装deb包格式的Zenmap

dpkg -i (deb包名)
即:dpkg -i zenmap_7.94-2_all.deb

图示为安装正常。

5. 安装完成,打开Zenmap。

选择kali linux,

搜索Zenmap,打开

当然,也可以在终端使用zenmap命令打开==(注意:命令是小写)==

打开如下:

6.Zenmap软件图形化介绍

首页介绍,Zenamp生成的命令可以在命令行中直接运行,前提要安装Nmap命令包,不然Zenmap也无法使用。

端口/主机,这个模块可以看出扫描出的端口、协议、状态、服务、以及版本信息。

拓扑,这个模块可以实现路由跟踪

本地主机到目标主机经过多少个设备叫做路由跟踪

主机明细,这个模块可以清晰的看到目标主机的操作系统版本、使用的端口。

==注意:==有的主机可能扫出的操作系统不准确,可能被防火墙某种规则拦截或本地安全软件拦截导致扫出的操作系统精确度低。

扫描,这个模块不常用,在这个模块可以导入扫描文件或删除扫描命令

7.Nmap所识别的6个端口状态

7.1、open(开放的)
如果扫描该端口显示open证明该应用端口属于开放的。安全意识强的人 们知道每个开放的端口都是攻击的入口。

7.2、closed(关闭的)
如果扫描该端口显示closed证明该应用端口是关闭的,但是关闭的端口对于Nmap也是可访问的。

7.3、filtered(被过滤的)
如果扫描该端口显示filtered证明该应用端口可能被过滤,大概意思就是可能被专业的防火墙设备,路由器规则或者主机上的软件防火墙拦截下来了。

7.4、unfiltered(未被过滤的)
如果扫描该端口显示unfiltered证明可以访问的,但是Nmap不确定它是开放还是关闭。只有映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其他类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮忙确定该端口是否开放。

7.5、open|filtered(开放或者被过滤的)
如果扫描该端口显示open|filtered表示Nmap无法确定该端口是开放还是被过滤的。

7.6、closed|filterd(关闭或者被过滤的)
如果扫描该端口显示closed|filterd表示Nmap也不能确定该端口是否是关闭还是过滤的。

8.Intense scan (强扫描)(命令可以再终端运行,部分必须是root)

nmap -T4 -A -v 169.254.218.205    //强扫描,可以满足一般要求的扫描
-T4(0-5)  加快执行速度(速度越快越容易被发现)。
-A  操作系统与版本号进行探测。
-v  显示详细信息。

结果:

9. Intense scan plus UDP (UDP扫描)

nmap -sS -sU -T4 -A -v 169.254.218.*     //UDP扫描  扫描速度慢
-sS  半连接扫描
-Su  UDP扫描

10.Intense scan, all TCP ports (扫描所有TCP端口)

nmap -p 1-65535 -T4 -A -v 192.168.2.1   //扫描所有TCP端口,范围在1-65535之间
-p 指定端口扫描范围
nmap -p 1-65535 -T4 -A -v 169.254.218.205

11.Intense scan, no ping (非Ping扫描)

nmap -T4 -A -v -Pn 169.254.218.205    //非Ping扫描
-Pn   非Ping扫描

12.Ping scan (Ping扫描)

nmap -sn 169.254.218.205   //Ping扫描,速度快,容易被防火墙屏蔽,导致无扫描结果
-sn  Ping扫描(关闭端口扫描)

13.Quick scan (快速扫描模式)

nmap -T4 -F 169.254.218.205   //快速扫描,容易被防火墙拦截 	
-F  快速模式

13.Quick traceroute (路由跟踪)

nmap -sn --traceroute 169.254.218.205   //路由跟踪
--traceroute 显示本机到目标跃点

14.Regular scan (常规扫描)

nmap 169.254.218.205   //常规扫描,不加任何参数

15.Quick scan plus (快速扫描加强模式)

nmap -sV -T4 -O -F --version-light 169.254.218.205 //快速扫描加强模式
-sV 探测端口及版本服务信息
-O  扫描操作系统类型
--version-light 设定侦测等级为2

16.Slow comprehensive scan (全面扫描)

nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)" 169.254.218.205    //全面扫描
--script 脚本名   //使用脚本扫描
-PE;-PP    // ICMP Ping Types扫描
-PS80,443   //对于80,443端口采用SYN包对目标进行扫描
-PA3389   //对于3389端口采用ACK包对目标进行扫描
-PU40125  //对于40125端口采用UDP开放端口

17.使用脚本扫描

选择"配置">“新的配置或命令”

弹出"配置编辑器"后-选择"脚本"

![](https://img-blog.csdnimg/bf0176687aef49ae84d7009f62e6472f.png)

左面选项框里全是现成的脚本,你也可以自己往里写一个脚本或者添加脚本。

例如:

4.5 系统指纹识别

系统指纹识别是指在计算机系统中使用指纹识别技术进行身份验证和访问控制。它可以通过扫描用户的指纹来验证其身份并允许其访问系统或应用程序。系统指纹识别具有高度的准确性和安全性,因为每个人的指纹都是唯一的,难以伪造或复制。它还可以提高工作效率和用户体验,因为它可以消除复杂的密码输入过程,并且可以在短时间内快速完成身份验证。系统指纹识别技术已经应用于智能手机、平板电脑、笔记本电脑、门禁系统和银行系统等领域。

4.5.1 使用NMAP工具识别系统指纹信息

Nmap是一款常用的网络扫描工具,可以用来识别系统指纹信息。

以下是使用Nmap识别系统指纹信息的步骤:

(图形化TCP端口扫描工具Zenmap时已安装Nmap)

  1. 安装Nmap工具。可以在官网下载安装包,也可以使用系统自带的包管理工具进行安装。

  2. 使用Nmap命令的-O选项启用操作系统测试功能

    打开终端或命令行窗口,输入以下命令:

    nmap -O 目标IP地址
    root@kali:~# nmap -O 169.254.218.205
    nmap -O 192.168.2.3
    nmap -O 192.168.140.22
    

    其中,“-O”参数表示进行操作系统识别。

  3. 等待扫描结果。Nmap会扫描目标主机的开放端口和服务,并尝试识别操作系统类型。

  4. 查看扫描结果。Nmap会输出扫描结果,包括目标主机的IP地址、开放端口、服务和操作系统类型等信息。

**需要注意的是,**Nmap的操作系统识别功能并不是100%准确,有时会出现误判或无法识别的情况。因此,在进行系统指纹识别时,建议结合其他工具和手段进行验证。同时,使用Nmap进行扫描时,应遵守相关法律法规和道德规范,不得用于非法用途。

结果:

输出的信息显示了主机 192.168.41.136 的指纹信息,包括目标主机打开的端口、MAC地址、操作系统类型和内核版本等。

4.5.2 指纹识别工具p0f

  • p0f是一款百分之百的被动指纹识别工具。该工具通过分析目标主机发出的数据包,对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙也没有问题。

p0f主要识别的信息如下:

操作系统类型。

端口。

是否运行于防火墙之后。

是否运行于NAT模式。

是否运行于负载均衡模式。

远程系统已启动时间。

远程系统的DSL和ISP信息等。

p0f是一款开源的指纹识别工具,它可以通过分析网络流量中的数据包,识别出远程主机的操作系统、应用程序、网络设备等信息。

p0f的识别准确率较高,可以识别出许多常见的操作系统和应用程序,例如Windows、Linux、Apache、Nginx等。p0f还可以进行流量指纹识别,即通过分析网络流量的特征,识别出网络应用程序的类型和版本号。

p0f是一款非常实用的网络安全工具,可以帮助安全人员快速了解网络环境中的设备和应用程序,从而更好地进行安全防护。

  • p0f是一款 passively fingerprinting 工具,它可以通过监听网络流量,分析网络连接的各种参数,来识别远程主机的操作系统、应用程序、网络设备等信息。p0f主要识别的信息包括:

1.操作系统类型和版本号

2.应用程序类型和版本号

3.网络设备类型和厂商

4.连接的协议类型和版本号

5.连接的方向和状态

6.连接的时间和持续时间

7.连接的带宽和延迟

8.连接的地理位置(通过IP地址)

p0f可以通过这些信息来判断远程主机的真实身份和用途,从而帮助网络管理员识别和防御各种网络攻击。

  • p0f主要识别的信息包括:
  1. 操作系统类型:p0f可以识别20多种操作系统类型,包括Windows、Linux、Mac OS X、FreeBSD、Solaris、Android等。
  2. 应用程序类型:p0f可以识别一些常见的应用程序类型,如Web服务器(Apache、IIS、nginx等)、FTP服务器(ProFTPD、vsftpd等)、Mail服务器(Sendmail、Postfix等)等。
  3. TCP/IP协议参数:p0f可以识别TCP/IP协议中的一些参数,如TTL值、窗口大小、选项、TCP标志等,用于确定远程主机的操作系统和应用程序类型。
  4. 流量模式:p0f可以识别网络流量的模式,如HTTP流量、SMTP流量、FTP流量等,用于确定远程主机所使用的应用程序类型。

要在Kali Linux上安装p0f,可以按照以下步骤进行:

  1. 打开终端并更新软件包列表:sudo apt update

  2. 安装p0f:sudo apt install p0f

  3. 安装完成后,可以使用以下命令来运行p0f:sudo p0f -i eth0

其中,eth0是你要监视的网络接口。你可以将其替换为你想要监视的接口名称。

使用p0f分析Wireshark捕获的一个文件。

kali 安装Wireshark(我的是已经安好了的)

sudo apt-get install wireshark

终端打开wireshark(root模式)

wireshark

那么首先检查网卡信息:

开始抓取

在我们点击抓取之后,我们需要在此网卡上产生一些数据流。

执行ping命令,测试网络是否连通;或者我们可以在浏览器上访问网站产生一些数据流。

现在已经在eth0网卡上抓取到了数据

在抓取到了数据之后,我们可以对它进行保存。

文件–保存

执行命令如下所示:

root@kali:~# p0f -r /tmp/targethost.pcap -o p0f-result.log

嗯,自学的,老师没教

4.6 服务的指纹识别

服务指纹是一种用于识别和跟踪网络服务的技术。它通过收集和分析服务的元数据,如端口号、协议类型、服务版本等信息,生成一个唯一的服务指纹。

这个指纹可以用于识别网络中运行的服务,帮助安全人员进行漏洞扫描、入侵检测和网络监控等工作。服务指纹技术可以帮助组织更好地了解其网络中运行的服务,从而更好地保护其网络安全。

4.6.1 使用Nmap工具识别服务指纹信息

使用Nmap工具查看169.254.218.205服务上正在运行的端口。

执行命令如下所示:

root@kali:~# nmap -sV 192.168.41.136
nmap -sV 169.254.218.205

其中,-sV参数表示使用服务指纹识别功能,<目标IP地址>为你要扫描的目标IP地址。

执行命令后,Nmap会扫描目标主机的开放端口,并尝试识别每个端口上运行的服务及其版本信息。

输出结果中,会显示每个端口的状态、服务名称、版本信息等详细信息。

4.6.2 服务枚举工具Amap

Amap是一个服务器枚举工具,使用这个工具可以识别正运行在一个指定端口或一个范围端口上的应用程序 ,Amap 是一个检特定端口上运行的应用程序的工具。Amap 工作原理是向端口发送触发报文,然后将收到的回应与数据 库中结果进行匹配,并打印匹配的应用程序。

Amap是一个服务枚举工具。使用该工具能识别正运行在一个指定端口或一个范围端口上的应用程序。

kali linux安装服务枚举工具Ampa

1.打开终端,输入以下命令以安装amap:

apt install amap

2.验证Ampa是否已安装:

 ampa --version


安装成功。
先将选项放在前面 ,后面有常用选项的实例

-A发送触发器并分析响应(默认)

  -B 扫banner信息

  -P没有横幅或应用程序的东西 - 是一个(全连接)端口扫描仪

选项:

  -1只发送触发到一个端口,直到第一次识别。 !

  -6使用IPv6而不是IPv4

  -b打印响应的ascii横幅

  -i FILE Nmap机器可读输出文件从中读取端口

  -u在命令行上指定的端口是UDP(默认是TCP)

  -R / -S不要识别RPC / SSL服务

  -H不要发送标记为可能有害的应用程序触发器

  -U不要转储无法识别的响应(更适合脚本)

  -d转储所有响应

  -v详细模式,使用两次(或更多!)进行调试(不推荐:-)

  -q更友好的显示,屏蔽未定义的一些信息

  -c CONS并行连接数量(默认32,最大256)

  -C RETRIES连接超时时重新连接的数量(请参阅-T)(默认值3)

  -T SEC连接尝试的连接超时(以秒为单位)(默认值为5)

  -t SEC响应等待超时(秒)(默认5)

  -p PROTO只发送此协议的触发器(例如ftp)

  目标端口要扫描的目标地址和端口(除了-i)

  amap是识别目标端口上的应用程序协议的工具。

大范围扫描本机开启了什么端口
命令如下:

amap IP 1-100 
如:amap 169.254.218.205 1-100 


扫描端口的时候减去不必要信息  
命令如下:

amap IP 端口范围 -q      (只显示可用的端口)
如:amap 169.254.218.205 1-1000 -q


用来查看目标机器的banner  banner的意思是标志 比如访问ftp服务器时候返还的标题

命令如下:

amap -u IP 指定端口
如:amap -u 169.254.218.205 445


查看开放的UDP端口
命令如下:

amap -u IP 端口 -q        (端口可指定也可以范围)
amap -u 169.254.218.205 8080 -q
amap -u 169.254.218.205 1-1000 -q

下面使用 Amap 工具在指定的 50~100 端口范围内,测试目标主机169.254.218.205 上正在运行的应用程序。

执行命令如下所示:

root@kali:~# amap -bq 192.168.41.136 50-100
amap -bq 169.254.218.205 50-100

使用 Amap 工具在指定的 50~1000 端口范围内,测试目标主机169.254.218.205上正在运行的应用程序。

执行命令如下所示:

amap -bq 169.254.218.205 50-1000

4.7 其它信息收集手段

4.7.1 Recon-NG框架

Recon-NG是由python编写的一个开源的Web侦查(信息收集)框架。Recon-ng框架是一个强大的工具,使用它可以自动的收集信息和网络侦查。

下面将介绍使用Recon-NG侦查工具。

启动Recon-NG框架。

执行命令如下所示:

root@kali:~# recon-ng

首次使用Recon-NG框架之前,可以使用help命令查看所有可执行的命令。

如下所示:

[recon-ng][default] > help 或 recon-ng -h

recon-ng参数介绍

back                   返回上一级
dashboard          显示活动的总结
db                       工作区的数据库页面
exit                     退出recon-ng
help                    帮助信息
index                  创造一个模块
keys                   管理第三方的api接口
marketplace       应用市场
modules             已经安装的模块
option                 管理当前文本的选项
pdb                     打开python进行调试
script                  记录并执行命令脚本
shell                   执行操作系统命令
show                  显示各种框架的条目
snapshots          管理一个快照
spool                  将结果输出到一个文件里
modules     介绍
modules             命令介绍
modules load      加载某个模块
modules reload    退出某个模块
modules search    搜索某个模块

可以使用show modules命令查看所有有效的模块列表。

执行命令如下所示:

[recon-ng][default] > show modules

【实例4-3】使用recon/domains-hosts/baidu_site模块,枚举baidu网站的子域。

具体操作步骤如下所示:

(1)使用recon/domains-hosts/baidu_site模块。

[recon-ng][default] > use recon/domains-hosts/baidu_site

(2)查看该模块下可配置选项参数。

[recon-ng][default][baidu_site] > show options

(3)配置SOURCE选项参数。

执行命令如下所示:

[recon-ng][default][baidu_site] > set SOURCE baiduSOURCE => baidu

(4)启动信息收集。执行命令如下所示:

[recon-ng][default][baidu_site] > run

【实例4-4】查看获取的数据。

具体操作步骤如下所示:

(1)选择reporting/csv模块,执行命令如下所示:

[recon-ng][default] > use reporting/csv

(2)生成报告。执行命令如下所示:

[recon-ng][default][csv] > run

(3)从该界面可以看到,枚举到的所有子域。

用户也可以使用Dmitry命令,查询关于网站的信息。

下面将介绍Dmitry命令的使用。查看Dmitry命令的帮助信息。

执行命令如下所示:

root@kali:~# dmitry -h

使用dmitry命令的-s选项,查询合理的子域。执行命令如下所示:

root@kali:~# dmitry -s google

4.7.2 ARP侦查工具Netdiscover

Netdiscover是一个主动/被动的ARP侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。

netdiscover [-i device] [-r range | -l file | -p] [-s time] [-n node] [-c count] [-f] [-d] [-S] [-P] [-C]

以上语法中,各选项参数含义如下所示:

-i device:指定网络设备接口。
-r range:指定扫描网络范围。
-l file:指定扫描范围列表文件。
-p:使用被动模式,不发送任何数据。
-s time:每个ARP请求之间的睡眠时间。
-n node:使用八字节的形式扫描。
-c count:发送ARP请求的时间次数。
-f:使用主动模式。
-d:忽略配置文件。
-S:启用每个ARP请求之间抑制的睡眠时间。
-P:打印结果。
-L:将捕获信息输出,并继续进行扫描。

【实例4-5】使用Netdiscover工具攻击扫描局域网中所有的主机。

执行命令如下所示:

root@kali:~# netdiscover

执行以上命令后,将显示如下所示的信息:

4.7.3 搜索引擎工具Shodan

Shodan是互联网上最强大的一个搜索引擎工具。该工具不是在网上搜索网址,而是直接搜索服务器。

Shodan的官网网址是www.shodanhq。

1.CITY和COUNTRY命令

使用City和Country命令可以缩小搜索的地理位置。

例如:

country:US表示从美国进行搜索。

city:Memphis表示从孟斐斯城市搜索。

City和Country命令也可以结合使用。             例如:country:US city:Memphis

2.HOSTNAME命令

HOSTNAME命令通过指定主机名来扫描整个域名。

hostname:google表示搜索google主机。

3.NET命令

使用NET命令扫描单个IP或一个网络范围。

如下所示:

net:192.168.1.10:扫描主机192.168.1.10。
net:192.168.1.0/24:扫描192.168.1.0/24网络内所有主机。

4.TITLE命令

使用Title命令可以搜索项目。如下所示:

title:“Server Room”  表示搜索服务器机房信息。

5.关键字搜索

Shodan使用一个关键字搜索是最受欢迎的方式。如果知道目标系统使用的服务器类型或嵌入式服务器名,来搜索

一个Web页面是很容易的。

如下所示:

apache/2.2.8 200 ok:表示搜索所有Apache服务正在运行的2.2.8版本,并且仅搜索打开的站点。
apache/2.2.8 -401 -302:表示跳过显示401的非法页或302删除页。

6.组合搜索

IIS/7.0 hostname:YourCompany city:Boston表示搜索在波士顿所有正在运行IIS/7.0的Microsoft服务器。
IIS/5.0 hostname:YourCompany country:FR表示搜索在法国所有运行IIS/5.0的系统。
Title:camera hostname:YourCompany表示在某台主机中标题为camera的信息。
geo:33.5,36.3 os:Linux表示使用坐标轴(经度33.5,纬度36.3)的形式搜索Linux操作系统。

7.其它搜索术语

Port:通过端口号搜索。
OS:通过操作系统搜索。
After或Before:使用时间搜索服务。

【实例4-6】使用Metasploit实现Shodan搜索。具体操作步骤如下所示:

(1)在Shodanhq网站注册一个免费的账户。
(2)从http://www.shodanhq/api_doc网站获取API key,获取界面如图4.8所示。获取API key,为了在后面使用。
(3)启动PostgreSQL服务。
root@kali:~# service postgresql start
(4)启动Metasploit服务。
root@kali:~# service metasploit start
(5)启动MSF终端。
root@kali:~# msfconsole
msf >
(6)选择auxiliary/gather/shodan_search模块。
msf > use auxiliary/gather/shodan_search 
msf auxiliary(shodan_search) > show options
(7)配置QUERY和SHODAN_APIKEY选项参数。执行命令如下所示:
msf auxiliary(shodan_search) > set SHODAN_APIKEY duV9vwgCmo0oDfWqfWafax8sj0ZUa5BU
SHODAN_APIKEY => duV9vwgCmo0oDfWqfWafax8sj0ZUa5BU
msf auxiliary(shodan_search) > set QUERY iomega
QUERY => iomega
(8)启动搜索引擎。执行命令如下所示:
msf auxiliary(shodan_search) > run

4.8 使用Maltego收集信息

4.8.1 准备工作

在使用Maltego工具之前,需要到https://www.paterva/web6/community/maltego/网站注册一个账号。

4.8.2 使用Maltego工具

使用Maltego工具收集信息

4.9 绘制网络结构图

CaseFile工具用来绘制网络结构图。使用该工具能快速添加、连接,并能以图形界面形式灵活的构建网络结构图。

本节将介绍Maltego CaseFile的使用。使用update-alternatives命令修改java命令版本。

执行命令如下所示:

root@kali:~# update-alternatives --config java

使用update-alternatives命令修改javac命令版本。执行命令如下所示:

root@kali:~# update-alternatives --config javac
有 2 个候选项可用于替换 javac (提供 /usr/bin/javac)。

  选择       路径                                      优先级  状态
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/bin/javac   1061      自动模式
  1            /usr/lib/jvm/java-6-openjdk-i386/bin/javac   1061      手动模式
  2            /usr/lib/jvm/java-7-openjdk-i386/bin/javac   1051      手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:2	#输入JDK7版本编号
update-alternatives: using /usr/lib/jvm/java-7-openjdk-i386/bin/javac to provide /usr/bin/javac (javac) in 手动模式

【实例4-7】使用CaseFile工具绘制一个网络结构图。

ey,为了在后面使用。
(3)启动PostgreSQL服务。
root@kali:~# service postgresql start
(4)启动Metasploit服务。
root@kali:~# service metasploit start
(5)启动MSF终端。
root@kali:~# msfconsole
msf >
(6)选择auxiliary/gather/shodan_search模块。
msf > use auxiliary/gather/shodan_search
msf auxiliary(shodan_search) > show options
(7)配置QUERY和SHODAN_APIKEY选项参数。执行命令如下所示:
msf auxiliary(shodan_search) > set SHODAN_APIKEY duV9vwgCmo0oDfWqfWafax8sj0ZUa5BU
SHODAN_APIKEY => duV9vwgCmo0oDfWqfWafax8sj0ZUa5BU
msf auxiliary(shodan_search) > set QUERY iomega
QUERY => iomega
(8)启动搜索引擎。执行命令如下所示:
msf auxiliary(shodan_search) > run


## 4.8  使用Maltego收集信息

### 4.8.1  准备工作

在使用Maltego工具之前,需要到https://www.paterva/web6/community/maltego/网站注册一个账号。

### 4.8.2  使用Maltego工具

使用Maltego工具收集信息

## 4.9  绘制网络结构图

CaseFile工具用来绘制网络结构图。使用该工具能快速添加、连接,并能以图形界面形式灵活的构建网络结构图。

本节将介绍Maltego CaseFile的使用。使用update-alternatives命令修改java命令版本。

执行命令如下所示:

root@kali:~# update-alternatives --config java


使用update-alternatives命令修改javac命令版本。执行命令如下所示:

root@kali:~# update-alternatives --config javac
有 2 个候选项可用于替换 javac (提供 /usr/bin/javac)。

选择 路径 优先级 状态

  • 0 /usr/lib/jvm/java-6-openjdk-i386/bin/javac 1061 自动模式
    1 /usr/lib/jvm/java-6-openjdk-i386/bin/javac 1061 手动模式
    2 /usr/lib/jvm/java-7-openjdk-i386/bin/javac 1051 手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:2 #输入JDK7版本编号
update-alternatives: using /usr/lib/jvm/java-7-openjdk-i386/bin/javac to provide /usr/bin/javac (javac) in 手动模式


【实例4-7】使用CaseFile工具绘制一个网络结构图。


**OK,本人小白一枚,如果文章对你有帮助的话帮忙点个赞**


本文标签: 笔记 kalilinux