文章目录
- 信息收集
- DNS记录分析
- host
- dig
- dnsenum
- 路由信息
- tcptraceroute
- tctrace
- 搜索引擎
- 目标识别
- arping
- fping
- 识别操作系统
- p0f
- 服务枚举
- 端口扫描
- nmap
- 识别VPN服务器
- 漏洞映射
- exploitdb
- msfconsole
- 提权
- arpspoof
- Dsniff
信息收集
DNS记录分析
host
host www.example.com
host -a example.com
host指令查询域名信息的DNS服务器,就是文件/etc/resolv.conf指定的DNS服务器。如果想查询其他的DNS服务器,可在指令的尾部直接添加DNS服务器地址。
dig
dig example.com any
dig指令仅会返回该域的A记录。如需查询全部类型的DNS数据,我们可把type选项设定为any。
这条指令返回了该域名的SOA记录、NS记录、A记录和AAAA记录。
在使用dig指令进行域传输时,我们必须设置DNS服务器为权威DNS,并且设置传输类型为axfr。
dnsenum
另外,我们可利用dnsenum程序收集DNS数据。这个程序能够收集的DNS信息分为下述几类:
● 主机IP 地址;
● 该域的DNS 服务器;
● 该域的MX 记录。
在这一章里,您会发现不同程序的返回结果十分相似。这是因为我们就是在通过不同的程序验证相同的数据。返回同一信息的程序越多,我们对这一信息就越有信心。
除了获取DNS信息的功能之外,dnsenum还有下述几个特性。
● 它能够通过谷歌捜索其他的域名和子域名。
● 可使用字典文件对子域名进行暴力破解。Kali Linux 收录的dnsenum 自带有字典文件(dns.txt),该字典可测试1480个子域名。此外另有可测试266930个子域名的字典文件dns-big.txt。
● 可对C 类网段进行whois 査询并计算其网络范围。
● 可对网段进行反向査询。
● 采用多线程技术,可进行并发査询。
在不能进行域传输的情况下,我们可以使用字典文件对子域名进行暴力破解。例如,如果使用字典文件dns.txt暴力破解example.com的子域名,可使用下述指令。
dnsenum -f dns.txt example.com
该指令的返回结果如下。
dnsdict6
路由信息
tcptraceroute
tcptraceroute是traceroute程序的补充工具。传统的traceroute程序在其发送的UDP 或ICMP echo 数据包里,设置有特定的TTL(Time To Live)标志位。它把TTL的值从1开始递增,直到数据包到达目标主机为止。而tcptraceroute则是使用TCP数据包进行测试,它利用TCP SYN(握手请求)数据包进行路由信息探测。
相比其他程序,tcptraceroute 的优点在于其较高的通过率。如果在渗透测试人员和目标主机之间的防火墙禁止traceroute数据通过,那么traceroute指令就完全发挥不了作用。但是只要防火墙允许访问目标主机的特定TCP端口,就可以使用tcptraceroute程序穿过防火墙到测试目标主机。
在使用 tcptraceroute 时,如果相应的目标端口是开放的(open),程序将会收到SYN/ACK数据包;而如果目标端口是关闭的,那么它会收到一个RST数据包。
下面我们来使用tcptraceroute。假如我们事先知道目标主机为Web服务器开放了TCP协议的80端口,那么就可以使用下述指令。
tcptraceroute www.example.com
tctrace
我们同样可以选用 tctrace 程序分析路由信息。这个程序通过向目标主机发送 TCP SYN数据包来获取相应信息。
tctrace -i<device> -d<targethost>
参数中的指的是网卡接口,则是被测试的目标主机。
例如,我们可以使用下述指令获取本机和www.example.com之间的路由信息。
tctrace -i eth0 -d www.example.com
搜索引擎
目标识别
arping
我们使用arping程序判断某MAC地址的主机是否在线。
arping 192.168.56.102 -c 1
此时可以使用下述arping指令检测192.168.56.102是否被他人占用。
arping -d -i eth0 192.168.56.102 -c 2
fping
存活主机检测
fping -g 192.168.56.0/24
识别操作系统
p0f
p0f采用被动方式的方法探测目标主机的操作系统类型。这个工具可以识
别以下几种主机:
● 连接到您主机的机器(SYN 模式,即默认模式);
● 您主机可以访问的机器(SYN+ACK 模式);
● 您主机不能访问的机器(RST+模式);
● 您可以监控到其网络通信的机器。
nmap –O 192.168.56.102
服务枚举
端口扫描
nmap
TCP 连接扫描(-sT):指定这个选项后,程序将和目标主机的每个端
口都进行完整的三次握手。如果成功建立连接,则判定该端口是开放端口。
由于在检测每个端口时都需要进行三次握手,所以这种扫描方式比较慢,而
且扫描行为很可能被目标主机记录下来。如果启动Nmap的用户的权限不
足,那么默认情况下Nmap程序将以这种模式进行扫描。
● SYN 扫描(-sS):该选项也称为半开连接或者SYN stealth。采用该
选项后,Nmap将使用含有SYN标志位的数据包进行端口探测。如果目标主
机回复了SYN/ACK包,则说明该端口处于开放状态:如果回复的是RST/
ACK包,则说明这个端口处于关闭状态;如果没有任何响应或者发送了ICMP
unreachable信息,则可认为这个端口被屏蔽了。SYN模式的扫描速度非常
好。而且由于这种模式不会进行三次握手,所以是一种十分隐蔽的扫描方
式。如果启动Nmap的用户有高级别权限,那么在默认情况下Nmap程序将以
这种模式进行扫描。
● TCP NULL(-sN)、FIN(-sF)及XMAS(-sX)扫描:NULL 扫描不
设置任何控制位;FIN扫描仅设置FIN标志位:XMAS扫描设置FIN、PSH和
URG的标识位。如果目标主机返回了含有 RST 标识位的响应数据,则说明该
端口处于关闭状态;如果目标主机没有任何回应,则该端口处于打开|过滤
状态。
● TCP Maimon扫描(-sM):Uriel Maimon 首先发现了TCP Maimom
扫描方式。这种模式的探测数据包含有FIN/ACK标识。对于BSD衍生出来的
各种操作系统来说,如果被测端口处于开放状态,主机将会丢弃这种探测数
据包;如果被测端口处于关闭状态,那么主机将会回复RST。
● TCPACK 扫描(-sA):这种扫描模式可以检测目标系统是否采用了数
据包状态监测技术(stateful)防火墙,并能确定哪些端口被防火墙屏蔽。这
种类型的数据包只有一个ACK标识位。如果目标主机的回复中含有RST标
识,则说明目标主机没有被过滤。
● TCP 窗口扫描(-sW):这种扫描方式检测目标返回的RST数据包的
TCP窗口字段。如果目标端口处于开放状态,这个字段的值将是正值;否则
它的值应当是0。
● TCP Idle 扫描(-sI):采用这种技术后,您将通过指定的僵尸主机发
送扫描数据包。本机并不与目标主机直接通信。如果对方网络里有IDS,IDS
将认为发起扫描的主机是僵尸主机。
Nmap的scanflags选项可设定自定义的TCP扫描方式。这个选项的参数可
以用数字表示(例如,9代表PSH和FIN标识)。这个选项也支持标识位的符
号缩写。在使用符号缩写时,仅需要将URG、ACK、PSH、RST、SYN、
FIN、ECE、CWR、ALL和NONE以任意顺序进行组合。例如:–scanflags
URGACKPSH 将设置URG、ACK 和PSH 标识位。
UDP扫描仅有一种扫描方式(-sU)
默认情况下,Nmap将从每个协议的常用端口中随机选择1000个端口进
行扫描。其nmap-services文件对端口的命中率进行了排名。
如需更改端口配置,可使用Nmap的以下几个选项。
● -p端口范围:只扫描指定的端口。扫描1~1024号端口,可设定该选
项为–p 1-1024。扫描1~65535端口时,可使用-p-选项。
● -F(快速扫描):将仅扫描100 个常用端口。
● -r(顺序扫描):指定这个选项后,程序将从按照从小到大的顺序扫
描端口。
● --top-ports <1 or greater>:扫描nmap-services 里排名前N 的端
口。
Nmap支持以下几种输出形式。
●
交互(屏幕)输出:Nmap把扫描结果发送到标准输出设备上(通常
为终端/控制台),这是默认的输出方式。
● 正常输出(-oN):与交互输出类似,但是不显示runtime 信息和警告
信息。
● XML 文件(-oX):生成的 XML 格式文件可以转换成 HTML 格式文
件,还可被Nmap 的图形用户界面解析,也便于导入数据库。本文建议您尽
量将扫描结果输出为XML文件。
规避检测的选项
在渗透测试的工作中,目标主机通常处于防火墙或 IDS 系统的保护之
中。在这种环境中使用 Nmap 的默认选项进行扫描,不仅会被发现,而且往
往一无所获。此时,我们就要使用Nmap规避检测的有关选项。
●
-f(使用小数据包):这个选项可避免对方识别出我们探测的数据
包。指定这个选项之后,Nmap将使用8字节甚至更小数据体的数据包。
●
–mtu:这个选项用来调整数据包的包大小。MTU(Maximum
Transmission Unit,最大传输单元)必须是8的整数倍,否则Nmap将报错。
● -D(诱饵):这个选项应指定假 IP,即诱饵的 IP。启用这个选项之
后,Nmap 在发送侦测数据包的时候会掺杂一些源地址是假IP(诱饵)的数
据包。这种功能意在以藏木于林的方法掩盖本机的真实 IP。也就是说,对方
的log还会记录下本机的真实IP。您可使用RND生成随机的假IP地址,或者用
RND:number的参数生成个假IP地址。您所指定的诱饵主机应
当在线,否则很容易击溃目标主机。另外,使用了过多的诱饵可能造成网络
拥堵。尤其是在扫描客户的网络的时候,您应当极力避免上述情况。
● --source-port 或-g(模拟源端口):如果防火墙只允
许某些源端口的入站流量,这个选项就非常有用。
●
–data-length:这个选项用于改变Nmap
发送数据包的默认数据长
度,以避免被识别出来是Nmap的扫描数据。
● --max-parallelism:这个选项可限制Nmap 并发扫描的最大连接数。
●
–scan-delay
识别VPN服务器
ike-scan -M -A –Pike-hashkey 192.168.0.10
之后,我们使用psk-crack程序破解VPN连接的哈希值。有关指令如下。
psk-crack –d rockyou.txt ike-hashkey
此处,-d选项用于指定字典文件。
漏洞映射
exploitdb
cd /usr/share/exploitdb/
msfconsole
msfconsole
show auxiliary:列出全部的辅助工具模板。
● show exploits:列出框架下所有的漏洞利用程序。
● show payloads:列出所有平台下的有效载荷。如果已经选定了一个
漏洞利用程序,再使用该命令就只会显示相关的载荷。例如,Windows的载
荷将显示与 Windows相关的漏洞利用模板。
● show encoders:显示可用的编码工具模板。
● show nops:显示所有可用的NOP 生成程序。
● show options:显示指定模板的全部设置和选项信息。
● show targets:显示exploit 支持的操作系统类型。
● show advanced:列出所有高级配置选项,以便进行微调。
我们将最具价值的几个常用命令总结为下述表格。您可以在
提权
arpspoof
通过以下命令,对被测主机实施ARP欺骗。
arpspoof -t 192.168.65.129 192.168.65.1
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。
如需启动dsniff程序,可在终端中使用下述指令。
dsniff -h
上述指令将会在屏幕上显示程序的使用说明。我们将使用它捕获FTP 密
码。在本例的演示中,FTP客户端的IP是192.168.2.20,服务器IP则是
192.168.2.22,这两台主机通过集线器连接。攻击人员的主机IP为
192.168.2.21。
在攻击人员的测试主机上执行下述指令。
dsniff -i eth0 -m
其中,选项-i eth0 将使Dsniff 程序监听eth0 网卡。而选项-m 则用于启
用程序的自动协议检测功能。
然后,在装有FTP客户端程序的主机上,使用客户端程序登录FTP服务
器。
dsniff的运行结果如下。
dsniff: listening on eth0
----------------
20/08/13 18:54:53 tcp 192.168.2.20.36761 -> 192.168.2.22.21 (ftp)
USER user
PASS user01
从中可以看到,dsniff捕获了客户端登录FTP服务器时所用的用户名和密
码。