多读书多实践,勤思考善领悟

Kali linux渗透测试之 三.信息收集

本文于1875天之前发表,文中内容可能已经过时。

前言

在做渗透时,信息的收集工作十分重要,是否可以挖掘到有价值的信息将会决定之后的测试是否可以高效、高质量的进行,单的介绍一下信息收集的模块。

一. 通过第三方收集信息

公司企业的官方网站

在我们做渗透测试时一般只会得到一个IP地址或者一个域名信息,之后在商议的渗透测试范围内进行对目标的渗透测试。而我们此时的首选目标就是查看一下官方网站以及该IP的地址的域名信息等等来获取更多的信息。

一般而言,许多的公司网站都会列举出他们管理的团队、公共人物以及来自招聘团队和HR联系人的成员。这些人都可以成为其他研究工作和社会工程攻击的对象。

通过查看其他信息,如合伙人、当前的招聘广告、业务信息以及安全策略等等,我们还能够获得更多有用的信息。对某个价值很高的合伙人的侦查可能会对主要目标的侦查一样重要,因为合伙人能够提供获取情报的新来源。这里举个例子,你可以对在目标总部管理客服团队的已经建立联系的资源下手。

有时候在这些网站上Robots.txt文件是可以公开访问的。这个文件通过网络爬虫排除协议(Robots.txt Exclusion Protocol)告诉Web机器人(也称为搜索引擎爬虫)那些信息是可见的,那些信息是不可见的。Disallow:/语句告诉机器人不要访问这个来源;不过,当研究者对目标不希望透露给公共访问的信息感兴趣时,DIsallow文件就可以被忽略了。

站长之家

站长之家提供的站长工具是每个站长都必须要用到的工具,利用此工具,站长随时可以了解自己优化网站的SEO数据变化。不仅如此,站长还可以利用此工具模拟蜘蛛访问对网站内部链接进行检测,此外还可以对网站速度进行测试,检查网站的友情链接,查询网站域名IP、PR、alexa、whois等等信息。
网址:http://tool.chinaz.com/

中国互联网信息中心

网址:http://www.cnnic.net.cn/

搜索引擎

1. Shodan

Shodan是一个搜素互联网链接设备的搜索引擎,不同于Google、Baidu这些搜素引擎。用户可以在Shodan上使用Shodan搜索语法查找链接到互联网的摄像头、路由器、服务器等设备信息。在渗透测试中是个非常非常不错的神器。
网址:https://www.shodan.io/

2. ZomEye

ZoomEye是一款针对网络空间的搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息。

ZoomEye 拥有两大探测引擎:Xmap 和 Wmap,分别针对网络空间中的设备及网站,通过 24 小时不间断的探测、识别,标识出互联网设备及网站所使用的服务及组件。研究人员可以通过 ZoomEye 方便的了解组件的普及率及漏洞的危害范围等信息。

虽然被称为 “黑客友好” 的搜索引擎,但ZoomEye 并不会主动对网络设备、网站发起攻击,收录的数据也仅用于安全研究。ZoomEye更像是互联网空间的一张航海图。
网址:https://www.zoomeye.org/

3. GoogleHacking

Google Hack是一种借助搜索引擎构造特殊的搜索语句查询来获取相关信息的一种方法,目前虽然Google已经退出中国市场,Google也无法正常使用(除非使用网络代理进行翻墙),但是它的一些语言对于Baidu等搜素引擎来也是同样的适用,本小节就为大家演示使用Google Hacking进行信息收集。
网址:http://www.google.com/

4. Key Rearching

网址:https://www.alexa.com/

网址:https://www.netcraft.com/

6. theharvester

theharvester能够收集电子邮件账户、用户名和主机名/子域名信息。他通过数个公共资源搜索所需的信息。
2.2版本的theharvester用到的公开资源如下所示:

  • 谷歌
  • 必应
  • PGP
  • Linkedin
  • Yandex
  • People123
  • Jigsaw
  • Shodan

如果需要在kali中使用theharvester,可以在终端使用如下命令:

1
theharvester

使用说明可以自行参照以上信息。下面做一个简单的测试:
从Baidu的前100项搜索结果中挖掘目标域名里的电子邮件地址和主机名,可以使用以下指令:

1
root@kali:~# theharvester -d www.baidu.com -l 100 -b baidu

如果需要收集其他信息,例如用户名等信息,我们可以指定程序使用linkedin.com

1
root@kali:~# theharvester -d www.baidu.com -l 100 -b linkedin

7. Metagoofil

Metagoofil通过谷歌引擎搜索目标域的文件的元数据信息。目前,它支持的文件格式有:

  • Word文档(.docx 、.doc)
  • 表格格式(.xlsx、.xls、.ods)
  • 演示文档(.pptx、.ppt、.odp)
  • PDF文件(.pdf)

在获取元数据信息时,Metagoofil的内部操作工程大体如下:

  • 使用Google引擎在目标域内搜索指定的文件类型
  • 把搜索到的文档保存到本地磁盘
  • 从下载的文件中解析元数据信息
  • 吧元数据信息的分析结果保存为HTML文件

我们可以在元数据信息里找到的信息有:

  • 用户名
  • 软件版本
  • 服务器名或机器名

渗透测试后期阶段可能会用到这些信息。

要访问Metagoofil,在终端输入如下命令即可:

1
Metagoofil

具体的使用请自行参照其使用方法来使用即可!

上面的这些第三方查询工具都是比较好的选择,可以通过他们来获取非常多的信息!

二. DNS信息收集

1. DNS简介

​ DNS(Domain Name System:域名系统),是因特网的一项核心服务,它作为将域名和ip地址相互映射的一种分布式数据库,能够使人民更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。下面介绍几种DNS查询的方法:

2. Whois

​ Whois简单来说就是一个用来查询域名是否已经被注册,以及注册域名的纤细信息的数据库(如域名所有人、域名注册商、域名注册日期、过期日期等).

whois界面:

img

使用whois查询baidu的域名信息:

img

使用whois我们可以获取到DNS服务器的信息以及域名注册人的联系信息。这些信息在渗透测试的后续阶段发挥重要作用。

同时我们可以使用whois的“-H”参数查看法律信息、使用“-p”指定端口查询,同时我们可以使用其他参数进行相应的查询。具体的使用方法可以直接在终端来输入whois来查看使用方法。

3. Dig

dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具。它执行 DNS 搜索,显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断,因为它灵活性好、易用、输出清晰。

虽然通常情况下 dig 使用命令行参数,但它也可以按批处理模式从文件读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的所有服务器。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询。

dig的命令选项:

img

具体信息可以在终端输入“dig”来查看:

img

dig一下Baidu

img

4. Host

Host指令提供一个简单的DNS解析的功能。正常地使用名称到IP的解析,当指令没有任何参数和选项的时候,它将输出简单的带命令行参数和选项的概要。

名称是可以被解析的域名,也可以是点分十进制的IPV4的地址或冒号分隔的IPV6的地址,默认地,也可以行使一个反向解析的功能,DNS服务器既有名称又有IP地址,host查询可以替代它们,或者可以列在/etc/resolv.conf文件里。

img

至于具体的使用方法,可以参照上面的说明,附加相关参数即可使用,下面简单的host一下Baidu

img

5. Fierce

在一个安全的环境中,暴力破解DNS的方式是一种获取不连续IP地址空间主机的有效手段。fierce工具可以满足这样的需求,而且已经预装在Kali中。fierce是RSnake创立的快速有效地DNS暴力破解工具。fierce工具首先根据域名的IP地址,查询相关的域名服务器,然后利用字典进行攻击

img

fierce的使用请自行参照以上说明

使用fierce查看一下Baidu的dns信息:

img

6. dnsenum

dnsenum是一款非常强大的域名信息收集工具,它是由参与Backtack开发项目的程序员所设计,设计者叫Fillp(barbsie) Waeythens ,该名开发者是一个精通web渗透测试的安全人员,并对DNS信息收集有着非常丰富的经验

dnsenum的目的是尽一切可能收集一个域的信息,它能够通过Google或者字典文件猜测可能存在的域名,以及对一个网段进行反查询。

它可以查询网站主机的主机地址信息、域名服务器、MX record(函数交换记录),在域名服务器上执行axfr请求,并通过Google脚本得到扩展域名信息,提取子域名并且查询,计算C类地址并执行Whois查询,执行反向查询,把地址段写入文件。

img

查询一下Baidu

img

内容非常详细,推荐!

7. lbd

lbd(Load balancing detector,负载平衡检测器)检测给定的域是否使用DNS/HTTP负载均衡(通过Server和DateHTTP响应头字段和服务器应答之间的差异)

img

lbdy测试Baidu一下

img

三. 路由信息收集

路由信息

获取网络路由信息的工具各种各样,将介绍几种常见的工具。网络路由信息可以帮助测试人员料及自己的主机到目标主机之间的网络通信路径,进而理解目标主机的网络情况。保护目标主机的防火墙信息,往往也暗藏与路由信息里。

traceroute

通过traceroute我们可以知道信息从你的计算机到互联网另外一端的主机是走什么路径。当然每次数据包由某一同一的出发点(source)到达某一同一的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。Linux中,我们称之为traceroute,在MS Windows中我们称之为tracert。
Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长的时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如果有的话0)及其IP地址。
Traceroute命令让你追踪网络数据包的路由途径,预设数据包大小是40Byte,用户可以另行设置。。
具体参数格式为:
img

使用traceroute测试一下Baidu
img

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

跳数设置

格式: traceroute -m 跳数 域名

例如:

img

traceroute其余的参数还是非常多的,作用也较为强大,有兴趣可以自我进行测试学习!

tctrace

tctrace也是一个路由信息分析工具,这个程序通过向目标主机发送TCP/SYN数据包来获取相应的信息。

img

如需要使用tctrace程序,可以在终端使用下述命令:

tctrace -i device -d targethost

参数中的device指的是网络接口,targethost指的是被测试的目标主机。

例如测试一下Baidu

img

四. IDS/IPS信息收集

1. IDS/IPS简介

IDS(Intrusion Detection System)即入侵检测系统。是一种对网络传输进行及时监控,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于——IDS是一种积极主动的安全防护技术。

IPS(Intrusion Prevention System)即入侵防御系统。IPS位于防火墙和网络设备之间。这样,如过检测到攻击,IPS会在这种攻击扩散到网络的其他地方之前阻止这个恶意的通信。

2. IDS/IPS二者的区别

(1)IDS注重的是网络安全状况的监管。IPS注重的是对入侵行为的控制。

(2)IDS需要部署在网络内部的中心点,需要能够观察到所有网络数据。IPS需要部署在网络的边界。

(3)IDS的核心价值在于通过对全网信息的分析,了解信息系统的安全状况,进而指导信息系统安全建设目标以及安全策略的确立和调整,而IPS系统的核心价值在于安全策略的实施————————对黑客行为的阻击。

(4)IDS需要部署在网络内部,监控范围可以覆盖整个子网,包括来自外部的数据以及内部终端之间传输的数据,IPS则必须部署在网络边界,抵御来自外部的入侵,对内部攻击行为无能为力。

3. WAFwoof简介

WAFw00f是Python脚本,用于检测网络服务器是否处于网络应用的防火墙(WAF ,Web application firewall)保护状态。不仅可以发展测试战略,而且能够开发绕过应用网络防火墙的高级技术。

工作原理

WAFw00f其工作原理是首先通过发送一个正常的http请求,然后观察其返回有没有一些特征字符,若没有在通过发送一个恶意的请求触发WAF拦截来获取其返回的特征来判断所使用的WAF。

主界面

img

使用wafw00f探测一下Baidu的情况

img

五. SMTP信息收集

SMTP扫描最主要的作用是发现目标主机上的邮件账号。
通过主动对目标的SMTP(邮件服务器)发动扫描。
SMTP是安全测试中比较常见的服务类型,其不安全的配置(未禁用某些命令)会导致用户枚举的问题,这主要是通过SMTP命令进行的。介绍SMTP用户枚举原理以及相关工具。

1. SMTP

SMTP命令

若服务器未禁用某些特殊命令,则可以利用这些特殊命令枚举用户,主要是MAIL FROM、RCPT TO、ETRN、VRFY指令。

SMTP命令 命令功能
MAIL FROM 指定发件人地址
RCPT TO 指定单个的邮件接收人;可有多个 RCPT TO;常在 MAIL FROM命令之后
VRFY 用于验证指定的用户/邮箱是否存在;由于安全原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,也常被禁用

SMTP返回码

执行上面的SMTP命令,通过其返回码可以判断用户是否存在。主要是250和550状态。

返回码 含义
250 要求的邮件操作完成
550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

(后面附所有返回码)

手动枚举用户名

通过上面的介绍,我们可以通过Telnet连接,在未禁用上述SMTP命令的服务器上,使用上述命令手动枚举用户名。通过shodan等可以找到开放SMTP的服务器。

VRFY命令

1
2
3
4
5
6
7
8
9
10
11
$ telnet 202.38.xxx.xxx 25
Trying 202.38.xxx.xxx...
Connected to 202.38.xxx.xxx.
Escape character is '^]'.
220 mxt.xxx.xxx.cn ESMTP Postfix
VRFY root
252 2.0.0 root
VRFY bin
252 2.0.0 bin
VRFY admin
550 5.1.1 <admin>: Recipient address rejected: User unknown in local recipient table

MAIL FROM+RCPT TO命令

1
2
3
4
5
6
7
8
9
10
11
12
13
$ telnet 202.38.xxx.xxx 25
Trying 202.38.xxx.xxx...
Connected to 202.38.xxx.xxx.
Escape character is '^]'.
220 mxt.xxx.xxx.cn ESMTP Postfix
MAIL FROM:root
250 2.1.0 Ok
RCPT TO:root
250 2.1.5 Ok
RCPT TO:bin
250 2.1.5 Ok
RCPT TO:admin
550 5.1.1 <admin>: Recipient address rejected: User unknown in local recipient table

可以看到两种方式均返回root、bin用户是存在的,admin用户不存在。

2. smtp-user-enum工具

smtp-user-enum是kali自带的,使用Perl编写的工具,其原理就是通过上述的三种命令枚举用户账户。

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usage: smtp-user-enum.pl [options] ( -u username | -U file-of-usernames ) ( -t host | -T file-of-targets ) 
options:
-m <number> 最大线程数(默认: 5)
-M <mode> 使用方法方式 EXPN, VRFY or RCPT (默认: VRFY)
-u <user> 指定用户
-f <addr> 邮箱地址,只能用在 "RCPT TO" mode (默认: user@example.com)
-D <domaim> 使用电子邮件地址添加到用户列表在域 (默认: none)使用邮箱代替用户名,比如:"-D example.com"域来使用代替testA@example.com, testB@example.com
-U <file> 通过smtp服务指定文件里的用户名检查
-t <host> 指定主机来运行smtp服务器主机服务
-T <file> 指定文件来运行smtp服务器主机服务
-p <port> 设置TCP端口号 (默认: 25)
-d 调试
-t <time> 最大返回时间 (default: 5)
-v 版本
-h 帮助

文档:http://pentestmonkey.net/tools/user-enumeration/smtp-user-enum

示例

VRFY方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ smtp-user-enum -M VRFY -u root -t 202.38.xxx.xxx
Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum )

----------------------------------------------------------
| Scan Information |
----------------------------------------------------------

Mode ..................... VRFY
Worker Processes ......... 5
Target count ............. 1
Username count ........... 1
Target TCP port .......... 25
Query timeout ............ 5 secs
Target domain ............

######## Scan started at Fri Aug 24 09:37:15 2018 #########
202.38.xxx.xxx: root exists
######## Scan completed at Fri Aug 24 09:37:15 2018 #########
1 results.

1 queries in 1 seconds (1.0 queries / sec)

RCPT方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ smtp-user-enum -M RCPT -u bin -t 202.38.xxx.xxx
Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum )

----------------------------------------------------------
| Scan Information |
----------------------------------------------------------

Mode ..................... RCPT
Worker Processes ......... 5
Target count ............. 1
Username count ........... 1
Target TCP port .......... 25
Query timeout ............ 5 secs
Target domain ............

######## Scan started at Fri Aug 24 09:37:44 2018 #########
202.38.xxx.xxx: bin exists
######## Scan completed at Fri Aug 24 09:37:44 2018 #########
1 results.

1 queries in 1 seconds (1.0 queries / sec)

EXPN方式(目标服务器禁用了该方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ smtp-user-enum -M EXPN -u bin -t 202.38.xxx.xxx
Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum )

----------------------------------------------------------
| Scan Information |
----------------------------------------------------------

Mode ..................... EXPN
Worker Processes ......... 5
Target count ............. 1
Username count ........... 1
Target TCP port .......... 25
Query timeout ............ 5 secs
Target domain ............

######## Scan started at Fri Aug 24 09:37:53 2018 #########
######## Scan completed at Fri Aug 24 09:37:53 2018 #########
0 results.

1 queries in 1 seconds (1.0 queries / sec)

与手工测试的相同,root与bin用户是存在的。由最后的EXPN方式的结果可以看到,该工具不返回结果,不一定是由于不存在测试的账户,还可能是由于服务器禁用了该方式对应的命令,这时可以考虑使用手工方式通过返回的状态码进一步确定原因(文末附所有返回码)。

3. metasploit辅助模块:smtp_enum

metasploit有辅助模块smtp_enum,可以基于字典枚举smtp用户名。设置比较简单,主要是常规的远程主机地址、端口号、用户名字典、线程数等。其中的UNIXONLY是用于设置是否跳过对微软系的测试,这是由于Windows的SMTP服务命令稍有不同(请见:https://technet.microsoft.com/zh-cn/library/aa996114(v=exchg.65).aspx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
msf > use auxiliary/scanner/smtp/smtp_enum 
msf auxiliary(scanner/smtp/smtp_enum) > show options

Module options (auxiliary/scanner/smtp/smtp_enum):

Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 25 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads
UNIXONLY true yes Skip Microsoft bannered servers when testing unix users
USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt yes The file that contains a list of probable users accounts.

msf auxiliary(scanner/smtp/smtp_enum) > set rhosts 202.38.xxx.xxx
rhosts => 202.38.xxx.xxx
msf auxiliary(scanner/smtp/smtp_enum) > run

[*] 202.38.xxx.xxx:25 - 202.38.xxx.xxx:25 Banner: 220 mxt.xxx.xxx.cn ESMTP Postfix
[+] 202.38.xxx.xxx:25 - 202.38.xxx.xxx:25 Users found: adm, avahi, avahi-autoipd, bin, daemon, fax, ftp, games, gdm, gopher, haldaemon, halt, lp, mail, news, nobody, operator, postgres, postmaster, root, sshd, sync, uucp, webmaster, www
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

可以看到枚举出了许多的用户名,通过其中的ftp、gopher、www等,可以猜测到服务器运行着相关的服务,这对后续的测试有很大的价值。

4. nmap脚本:smtp-enum-users

nmap也有名为smtp-enum-users的扫描脚本可供使用。这是nmap对同一服务器枚举出的用户名。可以通过–script-args smtp-enum-users.methods={EXPN,RCPT,VRFY}设置扫描方式。如果未指定,按照RCPT、VRFY、EXPN的顺序进行测试。通过 –script-args userdb=user_path,passdb=pass_path指定字典。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ nmap -p 25 --script smtp-enum-users.nse 202.38.193.203
Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-24 10:23 CST
Nmap scan report for news.scut.edu.cn (202.38.193.203)
Host is up (0.054s latency).

PORT STATE SERVICE
25/tcp open smtp
| smtp-enum-users:
| root
| admin
| administrator
| webadmin
| sysadmin
| netadmin
| guest
| user
| web
|_ test

Nmap done: 1 IP address (1 host up) scanned in 1.27 seconds

5. 小结

通过上面的简介,可以看出若服务器未对SMTP服务做安全的配置,则容易通过SMTP用户枚举获取用户名,并结合一些典型服务的默认用户名,为后续的测试提供系统的相关信息。

附:SMTP返回码

返回码 含义
500 格式错误,命令不可识别(此错误也包括命令行过长)
501 参数格式错误
502 命令不可实现
503 错误的命令序列
504 命令参数不可实现
211 系统状态或系统帮助响应
214 帮助信息
220 服务就绪
221 服务关闭传输信道
421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)
250 要求的邮件操作完成
251 用户非本地,将转发向
450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)
550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)
451 放弃要求的操作;处理过程中出错
551 用户非本地,请尝试
452 系统存储不足,要求的操作未执行
552 过量的存储分配,要求的操作未执行
553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)
354 开始邮件输入,以.结束
554 操作失败
535 用户验证失败
235 用户验证成功
334 等待用户输入验证信息

六. 存活主机识别

1. ping

在检测主机是否在线的工具中,ping可能是最著名的程序了。该工具向目标主机发送ICMP协议的echo request数据包。如果目标主机在线且允许受理ping请求,那么目标主机间回复ICMP echo reply数据包。

kali linux中没有列出ping的程序,但是我们可以在终端输入ping命令并匹配好其设置,之后进行查询:

img

测试Baidu

img

2. arping

arping是在局域网中使用ARP(Address Resolution Protocol)请求判断目标主机是否在线的工具。您可以用IP地址或MAC地址作为它的测试目标。

因为arping程序工作于OSI模型中的第二层,ARP协议的数据包无法通过路由器和网关,所以它只能检测本地局域网中的主机。

如需要启动arping程序,可以在终端输入arping命令即可。

img

3. fping

与ping程序相比,fping可以同时向多个主机发送ping(ICMP echo)请求。您可以在命令行中指定多个目标主机,也可以在某个文件里指定需要被测试的主机。

默认模式下,fping程序通过目标主机的回复来判断该主机是否在线。如果目标主机发送了回应,该主机将会被标记为alive(在线);如果主机在一段时间内(超时或者超过尝试次数)没有进行响应,该主机则会被标记为UNreachable(不可访问)。默认情况下,fping将尝试向每个目标发送三次ICMP echo数据包。

如需要使用fping程序,可以在终端执行下述命令:

img

fping一下192.168.11.1/24

img

4. hping3

hping是用于生成和解析TCP/IP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

hping3的主要用途:

  • 测试防火墙规则
  • 测试入侵检测系统IDS
  • 测试TCP/IP模式的安全漏洞

如需要启动hping3则在终端输入hping3命令即可。你可以以交互式、命令式、脚本的方式执行hping3.

img

使用hping3测试192.168.11.145

img

5. nping

nping允许用户发送多种协议(TCP、UDP、ICMP和ARP协议)的数据包。您可以调整协议头中的字段,例如可以设置TCP和UDP的源端口和目的端口。nping和其他类似工具的区别,如nping程序和ping程序之间的区别相似,nping可以探测多个主机的多个端口。

此外,他可以像ping程序一样发送ICMP echo请求。nping还可以用于对网络进行压力测试,ARP中毒、Dos攻击等。

在Kali linux中,nping程序是Nmap程序包的一部分。nping支持多种模式,使用方法可以参考如下:

img

向多个目标发送ICMP echo请求:

img

6. nbtscan

如果是在内网渗透测试中审计Windows 系统,你需要首先获取主机的NetBIOS信息。最常用的工具就是nbtscan.

这个工具可以将相应的主机IP地址、NetBIOS计算机名、可用服务、登录用户名和MAC地址整理为报告。如需要采用NetBIOS协议访问目标主机NetBIOS服务(例如网络共享),就需要掌握目标主机的NetBIOS名称。这个工具将会产生大量的网络流量,而且很可能被目标主机记录在日志里。

你可以在终端输入nbtscan来查看其用法

img

例如搜索局域网192.168.11.1/24内各个主机的NetBIOS信息,可以使用下述指令:

img

如需要查看运行了哪些服务可以使用以下命令:

img

七. 操作系统识别

1. 识别操作系统

在确定目标主机在线之后,应当识别他们使用的操作系统。这阶段工作通常称为识别操作系统(也称为操作系统指纹识别)。识别操作系统的方式有三种:主动式和被动式。

主动式识别工具向目标主机发送数据包,并根据目标的响应来确定其使用的操作系统。这种方式的优点在于探测速度快,缺点是目标主机可能会发现我们探测操作系统的行为。

被动式识别方法克服了主动式识别的缺点。Michal Zalewsky是这种探测方式的先驱,他设计的p0f工具率先实现了被动式识别方法。被动式识别方法的缺点是,他比主动式是被方法的识别速度慢。

2. p0f

p0f采用被动式的方法探测目标主机的操作系统类型。这个工具可以识别一下几种主机:

  • 连接到您主机的机器(SYN模式、即默认模式)
  • 您主机可以访问的机器(SYN+ACK模式)
  • 您主机不能访问的机器(RST+模式)
  • 您可以监控到期网络通信的机器

这个程序通过自身发出的TCP数据包分析操作系统的类型。然后,它会统计在默认情况下不会产生的非标准数据包。例如,Linux内核操作系统默认使用64字节的ping数据包,而Windows操作系统则使用32字节的ping数据包。这两个操作系统在TTL值上同样存在差异。Windows发出的数据包,其TTL值是128;而不同版本的Linux操作系统,其数据包的TTL值各有所不同。p0f程序正是根据这些细微的差别识别远程主机的操作系统。

可以在终端输入p0f -h查看它的使用方法:

img

使用p0f程序识别远程主机的操作系统,可以使用以下命令:

img

img

之后你需要使用浏览器来对远程主机进行一个简单的访问,或者你也可以让远程主机来访问你,只有有流量产生即可。

如果p0f成功的是被出远程主机的操作系统,这个程序将会在日志文件p0f.log和屏幕上显示出相关的记录信息。

通过对上面的信息的查看你可以发现相关的操作系统的类型以及版本。

3. Nmap

Nmap是一款非常受欢迎的功能强大的端口扫描程序。它还能够识别操作系统的操作系统,能够进行主动式的操作系统指纹识别。如需使用操作系统识别功能,只需要在Namp选项中加入“-O”即可!

img

4. banner抓取

Banner抓取是最基础,最简单的指纹识别,不需要专门的工具就可以做,操作简单,通常获取的信息也相对准确,banner抓取是应用程序指纹识别而不是操作系统指纹识别。

img

但是很多网站会修改Banner或者禁止输出Banner。除了web服务器程序,很多FTP、SMTP服务也会返回banner信息。可以用Telnet命令链接端口进行测试。如:
Telnet 《target—IP》《target-Port》

八. 端口扫描

1. 端口扫描

简单来说端口扫描就是一种用来确定目标主机的TCP端口和UDP端口状态的方法。主机开发了某个端口,就意味着他在中国端口提供某种网络服务。如果某个端口处于关闭状态,这说明主机在这个端口上并没有提供网络服务。

在确定某端口开发状态之后,攻击人员就会检查在该端口提供相应的服务的程序版本,以判断这个版本的程序是否存在漏洞,例如说,主机A使用的是数年前的1.0版本的web服务端程序,而且官方发布过这个版本的安全公告。公告内容声明了1.0版本程序存在某种漏洞。如果攻击人员能够检测到服务器A开放了Web服务器,而且能够确定这个程序的版本号,他们就能利用有关信息攻击服务器。可见,主机上服务软件的信息十分重要。

2. 常用到的协议对应的端口号汇总

  • CP 21端口:FTP 文件传输服务
  • TCP 23端口:TELNET 终端仿真服务
  • TCP 25端口:SMTP 简单邮件传输服务
  • UDP 53端口:DNS 域名解析服务
  • TCP 80端口:HTTP 超文本传输服务
  • TCP 110端口:POP3 “邮局协议版本3”使用的端口
  • TCP 443端口:HTTPS 加密的超文本传输服务
  • TCP 1521端口:Oracle数据库服务
  • TCP 1863端口:MSN Messenger的文件传输功能所使用的端口
  • TCP 3306端口:Mysql数据库
  • TCP 3389端口:Microsoft RDP 微软远程桌面使用的端口
  • TCP 5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口
  • UDP 5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口
  • TCP 5000端口:MS SQL Server使用的端口
  • UDP 8000端口:腾讯QQ

3. Nmap端口扫描

Nmap是被专业人员广泛使用的一款功能全面的端口扫描工具。它由Fyodor编写并维护。由于Nmap品质卓越,使用灵活,它已经成为渗透测试人员必备的工具。

处理端口扫描外,Nmap还具备以下功能:

  • 主机探测
  • 服务/版本识别
  • 操作系统检测
  • 网络路由跟踪
  • Nmap脚本引擎

Nmap的使用说明

img

这里的参数以及各个涉及到的测试范围较为广泛,有兴趣的可以多做尝试

Nmap扫描一个主机

img

Nmap扫描一个网段

img

Nmap扫描目标端口号

img

由于本次是针对端口扫描做以介绍,那么我们就不对Nmap在操作系统、服务版本枚举等多方面进行说明了!

九. 网络扫描

1. 网络扫描

网络扫描主要通过使用网络扫描工具来对目标主机中开放的端口、服务、操作系统等等信息进行收集的一个过程。下面我们将进行简单的介绍。

由于上一节介绍了Nmap,我们这里就不再多余的介绍Nmap了,有兴趣的可以自己去看看Nmap中的目标主机存活状态探测、主机指纹识别、端口扫描(TCP/UDP/SYN/ACK等方式)、服务扫描、Nmap图形化界面使用等等。

2. Amap

Amap程序可以监测在指定端口上运行的应用程序信息。Amap向目标端口发送检测数据,在收到目标响应之后,将响应信息与数据库中结果进行匹配,并显示出匹配的应用程序。

在Kali linux中,Amap检测数据包的配置文件为/usr/etc/appdefs.trig,而响应信息的文件是、/usr/etc/appdefs.resp

如需要启动Amap程序,可以在终端输入amap名令即可:

img

至于具体的使用上面已经给出了使用方法以及参数,下面我们来使用相关参数进行一个简单的测试:

img

其中的参数“-b”用于获取banner信息,“-q”选项用于禁止程序报告关闭(或者不可识别的)端口。

对多个端口操作(使用方法和上面一样)

img

Amap可以识别在3306端口上运行的是MySQL服务,但在识别22端口上运行的服务时,却找到了过个匹配。

在快速是被应用服务程序方面,Amap程序可以说是一枝独秀。

十. SMB信息枚举

1. SMB枚举

如果你所测试的目标主机是Windows主机,那么使用nbtscan之类的SMB枚举工具就可以简单的获取到当地的SMB系统信息。

nbtscan工具可以扫描IP地址,并获取NetBIOS名称信息。它所生成的扫描报告含有相应主机的IP地址、NetBIOS计算机名、服务名称、已登录的用户名和MAC地址信息。

这些信息在渗透测试的后续阶段将会发挥作用。Kali的nbtscan程序和Windows自带的nbtscan不同,它可以对一个网段内的所有IP地址进行草席。

启动nbtscan:

img

使用nbtscan扫描一个网段:

img

查看主机的网络服务

img

十一. SNMP信息枚举

1. SNMP

SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上的众多厂家生产的软硬件平台,因此SNMP受到Interne标准网络管理框架的影响也是很大的。

2. snmpcheck

snmpcheck是一款SNMP信息收集工具,在kali中自带,可以在终端输入snmpcheck打开其图形化界面:

img

笔者更加喜欢命令行的方式,命令行可以通过“信息收集——SNMP——snmpcheck”来打开:

img

使用snmpcheck进行SNMP信息收集:

img

3. onesixtyone

onesixtyone程序是SNMP扫描程序,它可以扫描指定的设备,确定他们是否支持某些特定的SNMP字符串。它与其他SNMP扫描程序不同,可以以最快的速度(间隔10毫秒)发送所有的SNMP请求,然后等待目标响应并将之记录。如果某台设备支持SNMP协议,这个设备就会包含SNMP字符串的信息进行响应。

img

img

SNMP详细信息查询

img

十二. VPN信息枚举

VPN信息枚举可以使用下面的几种工具来实现:

1. ike-scan

ike-scan是探测、识别并测试IPSec VPN系统的安全工具。IPSec是特别常见的Lan-to-Lan链接技术,同时也是多数VPN方案所采用的远程访问技术。

IPSec采用了下面三种主要协议:

Authentication Headers(AH):提供了数据的完整性。

Encapsulating Security Payloads(ESP):保障数据的完整性和保密性

Internet Key Exchange(IKE):通信终端之间进行参数协商的通信协议。他用于安全广联(Security Association)的建立、维持和终止。

如需要在终端中启动ike-scan程序,可以使用下述命令:

img

img

该命令将会在屏幕上显示出该工具的具体使用方法。使用方法请自行参照以上说明即可!本次再不做说明。