一、Kali视频学习总结
(一)信息搜集之主机探测
主机探测是指识别目标机器是否可用。这个探测过程中,一方面需要得到目标是否Online等信息;另一方面由于IDS(Intrusion Detection System,入侵检测系统)和IPS(Intrusion Prevention System,入侵保护系统)的存在,还需要考虑对各种保护措施的探测,如WAF等。
1.netenum
(1)是IP段生成的工具,可以很方便地生成一个列表然后重映射到一个文件中。
$ netenum 192.168.0.0/24 /* 生成一个IP列表 */
$ netenum 192.168.0.0/24 > test /* 将生成的IP列表重映射到文件test里 */
$ cat test /* 可以在test里查看生成的IP列表,此时test可以作为另一个扫描器的文件 */
(2)测试目标主机是否在线(不考虑防火墙的情况下可以用来进行初步判断)
$ ping 163.com
$ netenum 123.58.180.0/24 3 /* 测试某个网段可以看到开放哪些主机在线,数字3表示延时3秒,会显示此段时间在线的主机 */
由于是使用ping来测试,且无法绕过防火墙,所以并不是很靠谱。
2.fping
经常用来测试某个网段哪些主机在线。
$ ping 163.com
$ fping -g 123.58.180.0/24 /* -g表示生成一个网段 */
其中,alive表示该主机在线,unreachable表示该主机不在线。
对比可以看出,netenum显示的在线主机并不是全部在线的主机,所以说它不是很靠谱。
3.nbtscan
内网扫描的工具,借助NetBIOS服务获取一定信息。
$ ifconfig /* 查看自己所在的网段 */
$ nbtscan -r 123.58.180.0/24 /* 对该网段进行内网扫描 */
4.ARPing
探测目标MAC地址的工具,依赖ARP协议。
$ arping 192.168.107.1 /* ping与本机同网段的其他地址可以得到MAC地址 */
5.Netdiscover
探测内网信息,被动截获IP地址、MAC地址和MAC厂商等信息,也依赖ARP协议。
$ netdiscover
6.dmitry
用来获取目标详细信息。可以收集关于主机的很多信息,包括whois、tcp port等,作为前期的信息收集非常有用也很简单。
$ dimtry 163.com
7.WAF
对防护措施的探测,waf可以过滤一些参数。
$ wafw00f http://www.baidu.com/
8.LBD
对目标是否存在负载均衡检测。其检测机制基于DNS解析、HTTP头(服务器和日期),从中找到服务器应答之间的差异。可以帮助发现多个IP地址映射到单个域名,并由此确定针对性的测试(如DDOS)范围。
$ lbd 163.com
(二)信息搜集之主机扫描
通过主机探测,确定测试目标地址后,往往需要对主机信息进行更完整的扫描。这个过程需要获取目标主机开放的端口、服务以及主机名、主机操作系统等信息,称为主机扫描。
Kali为测试者准备了充分的工具:知名的Nmap以及它的图形化界面Zenmap与分布式框架Dnmap。其中,Dnmap使用客户端/服务器端
架构,服务器接受命令并发送至客户端进行Nmap安全扫描,扫描完毕后,客户端返回扫描结果。
1.知识点
(1)作为一个强大的扫描器,Nmap可以完成以下任务
:
①主机探测:探测网络上的主机。
②端口扫描:探测目标主机所开放的端口。
③版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
④系统检测:探测目标主机的操作系统及网络设备的硬件特性。
⑤支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言。
注:端口扫描是指借助工具,了解所扫描IP提供的计算机网络服务类型(网络服务均与端口号相关),从而发现攻击弱点。
(2)Nmap在实际中的应用场合
主要有:
①通过对设备或防火墙的探测来审计它的安全性。
②探测目标主机所开放的端口。
③通过识别新的服务器审计网络的安全性。
④探测网络上的主机。
2.课程步骤
(1)打开测试主机Linux metasploitable(这里用已安装的Linux靶机:metasploitable_ubuntu),输入用户名和密码(均为msfadmin),通过ifconfig
命令得到测试目标的IP地址为192.168.43.72,如下图所示。
(2)普通简单扫描:Nmap会默认发送一个arp的ping数据包,探测目标主机在1-10000范围内
所开放的端口。
$ nmap
$ nmap -vv
(4)自定义端口扫描。nmap默认扫描目标1-10000范围内的端口号,可以通过参数-p
来设置要扫描的端口号。
①扫描某个范围内的端口
$ nmap -p(range)
$ nmap -p(port1,port2,port3,...)
$ nmap -sP
$ nmap --traceroute
$ nmap -sP
$ nmap -O
(9)万能开关扫描:包含1-10000的端口扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测。
$ nmap -A
(10)扫描前不进行Ping扫描测试
$ nmap -Pn
(三)信息搜集之指纹识别
识别目标主机的操作系统版本与应用版本,可以帮助我们进一步探测操作系统与应用级别的漏洞,从这些级别进行渗透测试。
1.Banner抓取
Banner抓取是最基础、最简单的指纹识别,不需要专门的工具。操作简单,通常获取的信息也相对准确。它是应用程序指纹识别而不是操作系统指纹识别。
除了web服务器程序,很多ftp、smtp服务也会返回banner信息,可以使用telent
命令连接端口进行探测。
$ telent
2.常规主动指纹识别工具
Nmap自身提供了很丰富的指纹探测功能。例如,-sV
参数可以主动探测开放端口的服务版本信息。
类似的,Xprobe2也是一种系统指纹主动探测的工具,但是对现在更新的系统的探测准确率不是很好。
3.被动指纹识别工具:通过分析流量来探测目标的指纹信息。
p0f是一款系统指纹识别工具,其不会向目标发送具体探测数据,只是被动地接收数据分析,一般无法被侦察发现。它在网络分析方面功能强大,可以用它来分析NAT、负载均衡、应用代理等。
4.WEB指纹识别工具
常规识别工具如whatweb,可以探测常见的web服务,以及应用版本,CMS版本等信息。
而针对具体的WEB CMS如Wordpress,可以使用WPScan等工具进行CMS的指纹枚举,探知可能存在的插件、主题模板等信息。例如,使用wpscan检测由Wordpress搭建的http://www.wpdaxue.com/可探知以下信息:
(四)信息搜集之协议分析
在完成主机探测与扫描,并对主机指纹进行探测分析后,可能还要对具体服务进行具体分析。kali中的协议分析工具包括:
1.SMB针对利用工具:acccheck、nbtscan、nmap、zenmap。
acccheck
:可使用用户名密码字典枚举尝试与目标IP/IP列表进行IPC$与Admin$的连接尝试。
2.SMPT分析工具:nmap、smtp-user-enum、swaks、zenmap。
smtp-user-enum
:通过请求目标主机,用来枚举一些用户名,创建一个字典,判断服务器有哪些邮箱。
swaks
:可发测试邮件。
3.SNMP(简单网络管理协议)分析工具:nmap、braa、snmpcheck、zenmap等。
4.SSL协议分析工具
sslscan
:可以扫描服务器SSL接受的加密方式,公钥等其他信息。例如尝试连接支付宝,查看其证书:
5.Wireshark:数据包分析必备工具。
Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。它不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。它本身也不会送出封包至网络上。
(五)漏洞分析之OpenVAS安装
OpenVAS为Kali自带的一款综合漏洞扫描器,是一款免费的开放式风险评估工具,可以检测远程系统和应用程序中的安全问题。它包括一个中央服务器和一个图形化的前端。这个服务器准许用户运行几种不同的网络漏洞测试,而且OpenVAS可以经常对其进行更新。OpenVAS所有的代码都符合GPL规范。
安装OpenVAS主要有如下几个步骤:
1.检查安装状况,执行openvas-check-setup
。
2.出现错误并提示没有证书,须安装证书。执行openvas-mkcert
,可保持默认选项,生成证书。
3.更新NVT(漏洞信息),执行openvas-nvt-sync
更新插件库等资源。
4.执行openvas-mkcert-client -n om -i
,为客户端创建证书。
5.以openvasad为例添加用户,执行openvasad -c add_user -n admin -r Admin
。也可使用openvas-adduser
添加用户,添加规则时如果对所有主机扫描均允许则可设置为default accept,其他规则可参考man openvas-adduser。
6.执行openvassd
打开服务,开始加载插件的过程。
7.加载插件完成后,执行openvasmd --rebuild
。
8.继续执行openvas-scapdata-sync
和openvas-certdata-sync
更新漏洞信息库内容。
9.结束openvassd进程,重新启动服务,使用openvas-check-setup检查无误。重新启动服务执行openvas-start
。
10.默认已经打开服务,或手工转发端口。
11.访问本地http://localhost:9392/登录。
二、教材学习总结
(一)网络踩点(footprinting)
网络踩点是指攻击者通过对目标组织或个人进行有计划、有步骤的信息收集,从而了解攻击目标的网络环境和信息安全状况,得到攻击目标完整剖析图的过程。网络扫描常用的技术手段有:Web信息搜索与挖掘、DNS与IP查询和网络拓扑侦察。
1.Web信息搜索与挖掘
基于搜索引擎进行Web信息搜索与挖掘是目前最为流行的网络信息收集技术,也被赋予了一个专门的术语——“Google Hacking”。
(1)基本搜索
使用Google基本搜索功能优化查询结果的技巧有:
①保持简单。
②考虑要查找的网页将以什么方式编写,使用最可能出现在要查找的网页上的字词。
③尽量简明扼要地描述要查找的内容。
④选择独特性的描述字词。
⑤善于利用Google提供的搜索词智能提示功能。
(2)高级搜索
使用Google搜索词“filetype:文件类型 搜索关键词”
对特定格式的文件搜索特定关键词,并返回特定格式的文件。如“filetype:xls 身份证号 site:edu.cn”可以用来找出学生的身份证号信息。
(3)编程实现Google搜索
(4)元搜索引擎
又称为集合型搜索引擎,将多个单一搜索引擎集成在一起,提供统一的检索接口,将用户的检索提问同时提交给多个独立的搜索引擎,并根据多个独立搜索引擎的检索结果进行去重、排序等二次加工,并将综合后的结果输出给用户。集成多个搜索引擎进行信息收集,其效果要比单独使用一个搜索引擎会更好一些。
(5)安全防范措施
①注意组织安全敏感信息以及个人隐私信息不要在互联网上随意发布。
②个人上网时尽量保持匿名。
③必须提供个人隐私信息时,应选择具有良好信誉并可信任的网站。
④定期对自身单位及个人在Web上的信息足迹进行搜索,发现存在非预期泄露的敏感信息后,应采取行动进行清除。
2.DNS与IP查询
(1)DNS注册信息WHOIS查询
目前的WHOIS客户端程序实现了通过顶级域名管理机构寻找注册信息所在数据库,然后查询获取信息的功能。例如对baidu.com的查询,只需要执行命令whois baidu.com
,即可获取到具体的注册信息。
(2)从DNS到IP的映射
在用户端,使用nslookup
(Windows)或dig
(Linux)命令即可向DNS查询特定的域名映射IP地址,进行域名解析。
(3)IP WHOIS查询
WHOIS程序会连接某一个RIR的WHOIS服务(默认情况下一般是ARIN),查询特定IP的注册信息,如果是由其他RIR管辖,WHOIS程序也会自动根据返回提示向这个RIR重新发起查询,从而获得详细的注册信息。
(4)安全防范措施:主要在于公共数据库中提供信息的安全问题。
3.网络拓扑侦察
对于攻击者而言,在通过Web信息搜索与挖掘、DNS与IP查询技术掌握目标组织的网络位置之后,要想尽可能地掌握目标网络的拓扑结构,需要进行网络拓扑侦察。
(1)主要技术手段:路由跟踪
(2)执行路由跟踪的工具:traceroute(Linux)和tracert(Windows)。
(3)安全防范措施
①部署网络入侵检测系统或入侵防御系统对这类网络侦察行为进行探测与防护。
②使用RotoRouter等软件可对traceroute路由跟踪提供虚假响应信息。
③根据站点安全策略,将网络边界路由器配置成只允许特定类型的系统响应ICMP和UDP数据包,以降低网络的暴露面。
(二)网络扫描(scanning)
网络扫描常用的技术手段有:主机扫描、端口扫描、系统类型探查和漏洞扫描。
1.主机扫描
又称Ping扫描。是指通过对目标网络IP地址范围进行自动化的扫描,确定这个网络中都存在哪些活跃的设备与系统。它包括:使用ICMP协议的Ping扫描,使用TCP协议的主机扫描和使用UDP协议的主机扫描。
使用namp -sP
命令对目标主机进行存活性探测,以对抗网络中可能采取的过滤机制,从而获得最精确的结果。该命令也可以用于对一个网段进行活跃主机的扫描。
2.端口扫描
是在主机扫描确定活跃主机之后,用于探查活跃主机上开放了(即处于网络服务监听状态)哪些TCP/UDP端口的技术方法。
(1)TCP端口扫描
①TCP Connect()扫描
TCP Connect()扫描是最基本的TCP扫描方式。其借助操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,既没有提供服务。
优点:(i)不需要任何权限。系统中任何用户都有权使用这个调用。(ii)多线程速度较快。
缺点:易被发觉,并被过滤。
使用namp -sT
命令对目标主机进行TCP Connect()扫描。
②TCP SYN 扫描
TCP SYN 扫描即“半开放”扫描,因为扫描程序不需打开一个完全的TCP连接。扫描程序发送一个SYN数据包,好像准备打开一个实际的连接并等待反应一样。一个 SYN|ACK 的返回信息表示端口处于侦听状态;一个RST返回表示端口没有处于侦听状态。如果收到一个 SYN|ACK ,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。
优点:一般不会在目标计算机上留下记录。
缺点:必须本地有root权限才能建立自己的SYN数据包。
使用namp -sS
命令对目标主机进行TCP SYN 扫描。
(2)UDP端口扫描
使用namp -sU
命令对目标主机进行UDP端口扫描。
(3)FIN端口扫描
可以利用FIN端口扫描探测防火墙状态。FIN端口扫描用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态。
使用namp -sF
命令对目标主机进行FIN端口扫描。
(4)ACK端口扫描
利用ACK端口扫描可以判断端口是否被过滤。针对ACK探测包,未被过滤的端口(无论打开、关闭)会回复RST包。
使用namp -sA
命令对目标主机进行ACK端口扫描。
3.系统类型探查
探查活跃主机的系统及开放网络服务的类型,即了解目标主机上运行着何种类型什么版本的操作系统,以及在各个开放端口上监听的是哪些网络服务。按照目标信息类型以及探查方式可以分为四类:操作系统主动探测、操作系统被动辨识、网络服务主动探测技术和网络服务被动辨识技术。
操作系统主动探测使用namp -O
命令主动与目标系统通信,探测目标系统的操作系统。网络服务主动探测技术使用namp -sV
命令主动与目标系统通信,探测目标网络中开放端口上绑定的网络应用服务类型和版本。
4.漏洞扫描:是网络扫描最关键的步骤
漏洞扫描器一般由如下五部分组成:
①安全漏洞数据库:包括安全漏洞的具体信息、漏洞扫描评估的脚本、安全漏洞危害评分等信息。
②扫描引擎模块:是漏洞扫描器的核心部件。它可以根据用户在配置控制台上所设定的扫描目标和方法配置,对用来扫描网络的请求数据包进行装配与发送,并将接收到的目标主机应答包与漏洞数据库中的漏洞特征进行比较,以判断目标主机上是否存在这些安全漏洞。
③用户配置控制台:用户在其上进行扫描设置。
④扫描进程控制模块:监控扫描进程任务的进展情况与结果,并将当前扫描的进度与结果信息通过用户配置控制台展示给用户,一般支持多线程的并行扫描,从而提升效率。
⑤结果存储与报告生成模块:利用漏洞扫描得到的结果自动生成扫描报告,系统性地告知用户在哪些目标系统上发现了哪些安全漏洞。
(三)网络查点(enumeration)
网络查点常用的技术手段有:旗标抓取和网络服务查点。
1.网络服务旗标抓取
是最基本的查点技术,是指利用客户端工具连接至远程网络服务并观察输出以收集关键信息的技术手段,一般仅限于采用明文传输协议的网络服务。大部分操作系统平台上都默认安装的telent
程序是进行旗杆抓取的一个常用工具。netcat
软件是更加强大高效的网络查点工具。
2.网络服务查点
(1)类UNIX平台网络服务查点:RPC(工具:rpcinfo、nmap)、NFS(工具:showmount)等。
(2)Windows平台网络服务查点:NetBIOS、SMB、AD与LDAP、MSRPC。
3.网络查点防范措施
(1)最佳措施是把不必要的网络服务全部关闭掉,并在网关位置防火墙上加强网络访问控制,严格限制对不必要网络服务的访问,特别是外部网络用户对局域网相关服务的访问。
(2)加强网络服务的安全配置;避免使用默认口令字或弱口令,并禁用一些很可能造成信息泄露的功能;提升一些默认安全配置的等级。
(3)放弃使用不安全的网络协议,并选择更具安全性的网络服务实现。
(4)可能的话,可以采用一些工具来改变网络服务的旗标,对攻击者收集信息进行欺骗与迷惑。
三、教材P115实践作业
(一)使用nmap扫描特定靶机,并给出靶机环境的配置情况。
以Linux靶机为例。
1.Linux靶机IP地址是否活跃?
通过nmap -sP
命令检测Linux靶机IP地址是否活跃。检测结果如下图所示。
可以看出,Linux靶机主机活跃。
2.Linux靶机开放了哪些TCP和UDP端口?
(1)通过nmap -sS
命令检测Linux靶机开放了哪些TCP端口。检测结果如下图所示。
(2)通过nmap -sU
命令检测Linux靶机开放了哪些UDP端口。检测结果如下图所示。
3.Linux靶机的操作系统版本是?
通过nmap -O
命令检测Linux靶机安装了什么操作系统及其版本。检测结果如下图所示。
4.Linux靶机上安装了什么网络服务?
通过nmap -sV
命令检测Linux靶机安装了什么网络服务。检测结果如下图所示。
(二)使用Nessus扫描特定靶机,并给出靶机环境上的网络服务及安全漏洞情况。
1.首先在https://www.tenable.com/downloads/nessus网站上下载对应操作系统版本的Nessus,并完成安装。
2.登录账号。
3.点击 Launch Scan 开始扫描。
使用Nessus扫描得到的结果如下图所示。