3.1 外围信息搜集
我们可以通过whois 查询来查询域名注册信息,一般的域名注册信息包括所有者的一些信息,使用方法可以在msf终端中 直接输入 eg. whois testfire.net,或者是直接在浏览器中进行查询。在这里书中提醒 在进行whois 查询的时候一定要删去前缀(www,ftp 等),因为机构在注册域名时一般都会注册一个上层域名,而www这样的子域名由机构自己的域名服务器进行管理,所以有可能会查找不到子域名的部分。
还可以利用Google hacking来进行搜集信息
3.2 主机探测与端口扫描
从外围信息搜集到主机探测端口扫描后,我们从利用互联网的公开信息转到了与目标主机进行直接的交互,在这一步我们进行对主机的扫描也好探测也好很可能会被对方记录下来。
3.2.1 活跃主机扫描
1.ICMP ping
首先书中提到了一种最为简单的办法就是ping ,在学校里学习的时候老师就已经教过了通过ping命令可以测试两台主机是否连通,原理好像是发送了一个ICMP echo请求,如果得到回应则该主机是活跃的。
ping命令无论是在win还是linux系统中都可以使用,首先ping命令会把输进去的域名进行解析,然后向目标主机发送数据包。例如
2.arp_sweep
在书中提到我们还可以利用msfconsole来进行对目标主机的探测,arp_sweep则是对于局域网络中所有活跃主机的枚举,就像命令中提到的使用的是arp请求。
原理的是这样的:在TCP/IP的网络环境中,一台主机在发送数据之前需要了解对方主机的MAC地址,所以需要使用ARP将其的IP地址转换为MAC地址,而这个转换过程是通过ARP请求完成的。所以大概原理就是这个模块不断向这个网段的所有IP地址发送ARP请求,如果对方返回了回应,则这个主机就是活跃的。
使用的方法大致如下
msf > use auxiliary/scanner/discovery/arp_sweep
msf auxiliary(arp_sweep) > show options
Module options (auxiliary/scanner/discovery/arp_sweep):
Name Current Setting Required Description
---- --------------- -------- -----------
INTERFACE no The name of the interface
RHOSTS yes The target address range or CIDR identifier
SHOST no Source IP Address
SMAC no Source MAC Address
THREADS 1 yes The number of concurrent threads
TIMEOUT 5 yes The number of seconds to wait for new data
msf auxiliary(arp_sweep) > set RHOSTS 10.10.10.0/24
RHOSTS => 10.10.10.0/24
msf auxiliary(arp_sweep) > set THREADS 50
THREADS => 50
msf auxiliary(arp_sweep) > run
这个arp_sweep的位置也是挺好找的auxiliary(辅助模块)/scanner(扫描器)/discovery(发现),然后设置目标,设置线程,然后run就好了。
可是在这里我总是出现一个error:invalid bpf filter 也搞不太明白是什么原因,也比较喜欢用nmap,平时用不着,就先搁下了。。。
3. nmap
nmap是现在最流行的扫描工具了,之前上课的时候老师也是多次使用nmap进行演示,操作简单,同时也可以获取很多信息,就是参数有点多,但是其实也用不着那么多。。。
对于nmap来说 nmap的命令格式很直观 nmap 扫描选项 目标地址
也可以不加任何的扫描选项,不加的话就默认跟ping是一样的操作,向目标主机发送一个ICMP的echo请求,查看对方主机是不是存活。
书中提到了一个参数 -sn 如果使用这个参数,那么nmap仅仅只会用ICMP的ping去扫描主机而不去探查主机情况,作用仅仅是探查内部网络的存活主机。书中还提到对于在Internet环境下的主机ICMP很难穿过网络边界(例如防火墙一类),所以可以利用参数 -PU 来进行UDP端口的扫描。对于使用这个参数与上面使用udp_sweep差别其实就不大了。如果使用这个参数的话会默认列出开放的TCP接口,比如说这样。如果想要仅仅显示主机存货情况 也可加上-sn选项。
3.2.2 操作系统的辨别
在对于存活主机进行探查之后,我们就需要查看这些主机安装了哪些操作系统,不同的操作系统可以利用的漏洞不同,记得之前有次课程作业上老师就要求了我们复现了利用永恒之蓝漏洞获取控制权的操作,而永恒之蓝是window系统上的,并且要求还得是比较老的系统,假如安放了补丁那么就不能操作,所以我们在了解了操作系统后,也可以利用操作系统本身的漏洞进行攻击。其实还有一点蛮重要的就是在msf后来进行攻击的时候,需要选择payload,而这个攻击载荷是针对于不同的操作系统进行设计的,不通用,不知道操作系统类型很难进行选择和攻击。
书中还提到了蛮有意思的一点就是,识别的结果可以利用进行社会工程学的攻击,比如说假装成设备的售后人员,通过电子邮件或者是其他社工进行攻击。
这里书中给了两种选项 一种是-O ,这里书中有图就不上了,显示的是开放的端口和端口开放的服务,但是比较精简。所以书中又提到了-sV这个参数,假如使用这个参数,就可以对端口上的运行的服务参数进行进一步的说明,更有利进行分辨目标主机的操作系统。
常见的nmap参数为:
-sT:TCP connect 扫描,使用一次完整的TCP链接来判断端口是否开放,这种方式最准确,也最慢,同时因为进行了一次完整的三次握手,所以容易被防火墙和防入侵系统记录。
-sS:使用发送TCP SYN标志的方式来判断探测开放的端口,因为没有进行完整的三次握手,所以不容易被记录
-sF(FIN) -sX(XMAS) -sN(NULL)
可以使用这样的参数来扫描,来避免被记录
nmap -e echo (目标)-s (伪装) - Pn
3.3 服务扫描与查点
在上节中说到可以利用nmap获取端口运行的服务的名称以及版本号,这一节讲了更多的关于服务版本获取或者是服务的简单测试
3.3.1 常见的网络服务扫描
1.telnet 扫描
telnet 是一个很老的一个网络服务,可以说是又老又不安全同时还有很多大型交换机设备使用,可以利用来进行telnet服务查点。他的使用途径跟之前的arp_sweep差不多,是auxiliary/scanner/telnet/telnet_version
2.ssh 扫描
对于类UNIX操作系统来说,这个SSH是最常见的远程管理服务,与telnet不同,它使用的是安全的加密信息传输。通常管理员通过SSH对服务器进行一个远程的管理,如果获得了SSH的登录口令,就可以使用SSH客户端登陆服务器,就相当于获得了相应用户的操作权限。也是这么使用
msf auxiliary(telnet_version) > use auxiliary/scanner/ssh/ssh_version
msf auxiliary(ssh_version) > set RHOSTS 10.10.10.0/24
RHOSTS => 10.10.10.0/24
msf auxiliary(ssh_version) > set THREADS 100
THREADS => 100
msf auxiliary(ssh_version) > run
3.数据库服务查点
各种网络数据库的网络服务接口经常会出现漏洞。
例如Microsoft SQL server--1433--mssql_ping
Oracle SQL监视器--1521--tnslsnr_version
msf auxiliary(ssh_version) > use auxiliary/scanner/oracle/tnslsnr_version
msf auxiliary(tnslsnr_version) > set RHOSTS 10.10.10.0/24
RHOSTS => 10.10.10.0/24
msf auxiliary(tnslsnr_version) > set THREADS 50
THREADS => 50
msf auxiliary(tnslsnr_version) > run
[*] Scanned 051 of 256 hosts (019% complete)
[*] Scanned 084 of 256 hosts (032% complete)
[*] Scanned 099 of 256 hosts (038% complete)
[+] 10.10.10.130:1521 Oracle - Version: 32-bit Windows: Version 10.2.0.1.0 - Production
4.开放代理探测与利用
为了避免被对方反向检测追踪,需要隐藏自己的身份。隐藏身份的技术很多比如说使用代理服务器或者是使用 VPN等。MSF提供了open_proxy模块,可以更加方便的使用开放免费的HTTP代理服务器,使得进行渗透测试时隐藏自己真实的IP地址。
3.3.2 口令猜测与嗅探
上文中说到查看telnet、SSH等服务,假如猜测密码成功则可直接获得目标网络主机的控制权
1. SSH口令猜测
MSF中提供了一个模块ssh_login模块来进行攻击,并且内置了一个字典。对于口令猜测其实就是对于密码口令的一个爆破的过程。
这样就可以看到10.10.10.129的账号密码分别为root 和owaspbwa
2.psnuffle 口令嗅探
这是msf中唯一用于口令嗅探的工具,但是在使用过程中只有在能够接入对方网络的初始访问点之后才能够方便的使用psnuffle进行口令嗅探。这个工具能够截获常见的身份认证过程,并将用户名和口令信息记录下来。关于如何使用的话其实就是在msf中使用 use auxiliary/sniffer/psnuffle
3.4网络漏洞扫描
3.4.1 扫描原理与扫描器
网络扫描其实就是利用一些自动化的工具来对网络上的主机来进行漏洞的不断筛查的过程,这些自动化的工具就被称为扫描器。
一般我们分为黑盒扫描和白盒扫描
扫描器虽然比较方便但是在识别漏洞的过程中,他会发送大量的数据包给对方,所以不可避免的会被对方的入侵检测系统所检测到,而且由于在很短的时间内发送大量数据包,很容易就会阻塞信道,而造成拒绝服务。而且扫描器的结果通常会有许多误报,需要在自动获取完之后在进行人工检测。