渗透测试的意义:渗透测试是在第三者的角度思考系统的安全性,可以发觉潜在却未纰漏的安全性问题。可以根据测试结果对内部系统中的不足以及安全脆弱点进行加固以及改善,从而使系统更加安全,降低安全风险。
对于相关内容学习扩展:可以关注相关安全网站以及公众号,学习补充知识储备。
主机攻防演练:
metasploit是应该开源的渗透测试框架软件,也是一个逐步发展成熟的漏洞研究与渗透代码开发平台,此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境。
metasploit中的专业术语:
exploit(渗透攻击):渗透攻击是指由攻击者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、web应用程序漏洞攻击(例如:sql注入、XSS等),以及利用配置错误等。
payload(攻击载荷):攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码,在metasploit框架中可以自由地选择、传送和植入。
shellcode:是渗透攻击时作为攻击载荷运行的一组机械命令。shellcode通常用汇编语言编写。
module(模块):指metasploit框架中所使用的一段软件代码组件。
listener(监听器):是用来等待接入网络连接主机的组件。
主机漏洞利用演示
MS17-010
软件:vmware workstation 17
攻击机:kali
靶机环境:win7
kali:是基于Debian的linux发行版,设计用于数字取证和渗透测试的操作系统。预装了许多渗透测试软件,包括nmap(端口扫描器)、wireshark(数据包分析器)、john the ripper(密码破解器)以及Aircrack-ng(应用于对无线局域网进行渗透测试的软件)。
Nmap(全称Network Mapper):nmap是目前最流行的网络扫描工具,不仅能准确探测单台主机的详细情况,而且能高效地对大范围的ip地址段扫描。能扫描目标网络上有哪些主机是存活的,哪些服务是开发的,甚至知道网络中使用了何种类型的防火墙设备等。(有GUI与命令行两个版本)
1. 概述
Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
上帝之眼 端口扫描非常牛
2. 基本功能
1)探测目标主机是否在线
2)扫描主机端口,嗅探所提供的网络服务
3)推断主机所用的操作系统
漏洞扫描
3. 工具安装
1)windows操作系统Nmap工具安装
在Nmap官网www.nmap.org直接下载安装Nmap工具最新版本,如nmap-7.80-setup.exe,双击进行安装,安装过程中会自动弹出安装npcap-0.9982.exe窗口,点击确认安装,并按照提示一步一步安装完成。
2)linux操作系统Nmap工具安装
我们的kali系统是自带的
在Nmap官网www.nmap.org直接下载安装Nmap工具最新版本,如nmap-7.80-1.x86_64.rpm,将工具安装包下载到本地,然后使用如下命令安装即可(切换到安装包目录)
安装命令:rpm -ivh nmap-7.80-1.x86_64.rpm
卸载命令:rpm -e nmap-7.80-1.x86_64.rpm
4. 扫描原理
4.1. TCP SYN扫描(-sS)
Nmap默认扫描方式,通常被称为半开放扫描。发送SYN包到目标端口,若收到SYN/ACK回复,则端口被认为开放状态;若收到RST回复,则端口被认为关闭状态;若没有收到回复,则认为该端口被屏蔽。因为仅发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
4.2. TCP connect扫描(-sT)
使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标主机上留下记录信息,不够隐蔽。
4.3. TCP ACK 扫描(-sA)
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
4.4. TCP FIN/Xmas/NULL扫描(-sN/sF/sX)
这三种扫描方式被称为秘密扫描,因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN 包括Xmas tree包或NULL包,如果收到对方的RST回复包,那么说明该端口是关闭的;没有收到RST包说明该端口可能是开放的或者被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有的flags都为0的TCP包。
4.5. UDP扫描(-sU)
UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。
4.6. 其他方式(-sY/-sZ)
除了以上几种常用的方式外,Nmap还支持多种其他的探测方式。例如使用SCTP INIT/Cookie-ECHO方式是来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(tcp/udp/icmp/sctp等等);使用idle scan方式借助僵尸主机来扫描目标主机,以达到隐蔽自己的目的;或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐蔽自己的目的
5. 工具使用
1)直接使用Nmap命令行方式
2)使用Zenmap图形界面方式(详见Zenmap工具使用)
3)常见参数解读
0x01 目标规格
nmap 192.168.1.1 扫描一个IP
nmap 192.168.1.1 192.168.2.1 扫描IP段
nmap 192.168.1.1-254 扫描一个范围
nmap nmap.org 扫描一个域名
nmap 192.168.1.0/24 使用CIDR表示法扫描
nmap -iL target.txt 扫描文件中的目标
nmap -iR 100 扫描100个随机主机
nmap --exclude 192.168.1.1 排除列出的主机
0x02 扫描手法
nmap 192.168.1.1 -sS TCP SYN端口扫描(有root权限默认)
nmap 192.168.1.1 -sT TCP连接端口扫描(没有root权限默认)
nmap 192.168.1.1 -sU UDP端口扫描
nmap 192.168.1.1 -sA TCP ACK端口扫描
nmap 192.168.1.1 -sW 滑动窗口扫描
nmap 192.168.1.1 -sM TCP Maimon扫描
0x03 扫描手法
nmap 192.168.1.1-3 -sL 不扫描,仅列出目标
nmap 192.168.1.1/24 -sn 只进行主机发现,禁用端口扫描
nmap 192.168.1.1-5 -Pn 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -PS22-25,80端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PA22-25,80 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PU53 端口X上的UDP发现,默认40125
nmap 192.168.1.1/24 -PR 本地网络上的ARP发现
nmap 192.168.1.1 -n 不做DNS解析
0x04 端口规格
nmap 192.168.1.1 -p 21 扫描特定端口
nmap 192.168.1.1 -p 21-100 扫描端口范围
nmap 192.168.1.1 -p U:53,T:21-25,80 扫描多个TCP和UDP端口
nmap 192.168.1.1 -p- 扫描所有端口
nmap 192.168.1.1 -p http,https 基于服务名称的端口扫描
nmap 192.168.1.1 -F 快速扫描(100个端口)
nmap 192.168.1.1 --top-ports 2000 扫描前2000个端口
nmap 192.168.1.1 -p-65535 从端口1开始扫描
0x05 时间和性能
nmap 192.168.1.1 -T0 妄想症,非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T1 猥琐的,相当慢,用于IDS逃逸
nmap 192.168.1.1 -T2 礼貌的,降低速度以消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T3 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T4野蛮的,在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T5疯狂的,很可能会淹没目标端口或是漏掉一些开放端口
0x06 NSE脚本
nmap 192.168.1.1 -sC 使用默认的NSE脚本进行扫描
nmap 192.168.1.1 --script=banner 使用单个脚本扫描,banner示例
nmap 192.168.1.1 --script=http,banner使用两个脚本扫描,示例http,banner
nmap 192.168.1.1 --script=http* 使用通配符扫描,http示例
nmap 192.168.1.1 --script "not intrusive" 扫描默认值,删除侵入性脚本
nmap 192.168.1.1 --script=smb-vuln* 扫描所有smb漏洞
nmap 192.168.1.1 --script=vuln 扫描常见漏洞
0x07 输出
nmap 192.168.1.1 -v 增加详细程度,-vv效果更好
nmap 192.168.1.1 -oN test.txt 标准输出写入到指定文件中
nmap 192.168.1.1 -oX test.xml 将输入写成xml的形式
nmap 192.168.1.1 -oG grep.txt 将输出写成特殊格式
nmap 192.168.1.1 -oA results 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap 192.168.1.1 --open 仅显示开放的端口
nmap 192.168.1.1 -T4 --packet-trace 显示所有发送和接收的数据包
nmap --resume test.txt 恢复扫描,配合-oG等命令使用
6. 扫描结果端口状态
1)open:端口是开放的
2)closed:端口是关闭的
3)filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态
4)unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
5)open|filtered:端口是开放的或被屏蔽
6)closed|filtered :端口是关闭的或被屏蔽Nmap使用
Nmap常用扫描命令
1.完整的全面扫描
命令为:nmap -T4 -A -v ip
-A 选项用于使用进攻性(aggressive)方式扫描;
-T4 指定扫描过程使用的时序(timing)总有6个基本(0-5),级别越高,速度越快,但也容易被防火墙发现;
-v 表示显示冗余(verbosity)信息,在扫描过程中显示扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
2.扫描多台主机
命令为:nmap ***.***.***.1 ***.***.***.2 ***.***.***.3
3.扫描整个子网
命令为:nmap 192.168.199.*