1.1 发现主机
代码语言:javascript复制traceroute
获取目标主机的路由条目确定网络拓扑。每一跳表示一个网关星号可能为防火墙导致。
1.1.1 扫描主机
① nmap
代码语言:javascript复制nmap -sP ip/ip段
对目标主机实施ping扫描探测主机是否在线 也可以通过其他语法扫描主机开放端口、使用的操作系统等
② Netdiscover
ARP侦查工具,可以扫描IP地址检查在线主机。
代码语言:javascript复制netdiscover -r CIDR格式
1.1.2监听发现主机
① ARP监听
ARP请求广播到网络上所有主机发现活动主机。 Netdiscover被动模式实施监听。
代码语言:javascript复制netdiscover -p
② DHCP监听
Nmap的broadcast-dhcp-discover脚本实施DHCP监听来发现主机
代码语言:javascript复制nmap --script broadcast-dhcp-discover
1.2 域名分析
域名详细信息、子域名、服务器地址等
1.2.1 域名基础信息
① whois
域名注册状态、注册商、所有者等
代码语言:javascript复制whois 域名
② dmitry
一体化信息收集工具收集whois主机ip和域名信息等。
代码语言:javascript复制dmitry -w 域名
1.2.2 查找子域名
代码语言:javascript复制dmitry 域名
通过谷歌需要使用vpn(通过proxychains)
1.2.3 发现服务器
确定域名对应的ip地址
① dnsenum工具
域名信息收集工具通过谷歌或字典猜测可能存在的域名并且反向查询网站的主机地址、域名服务器、邮件交换记录等。
代码语言:javascript复制dnsenum -w 域名
② nslookup
dns服务器检测和排错的工具查询域名解析是否正常。
代码语言:javascript复制nslookup 域名
③ ping
检查网络是否连通
代码语言:javascript复制ping 目标
1.3 扫描端口
扫描端口发现目标主机中运行的程序。
① nmap
代码语言:javascript复制nmap -p 端口范围 目标
② dmitry
代码语言:javascript复制dmitry -p 目标
1.4 识别操作系统
针对性的对系统程序实施漏洞探测。
1.4.1 基于TTL识别
TTL生存时间IP被路由器丢弃之前允许通过的最大网段不同操作系统不同TTL值。UNIX-255,Windows XP-128;Linux-64
1.4.2 使用NMAP识别
代码语言:javascript复制nmap -O 目标
结果有时不准确。
1.5 识别服务
服务版本信息旧版本可能存在漏洞。
1.5.1 Nmap
代码语言:javascript复制nmap -sV 目标
1.5.2 Amap工作
识别网络服务的渗透测试工具集包括amap和amapcrap两个工具amap尝试识别非常用端口上运行的程序amapcrap发送触发数据包在响应字符串列表中查找响应来识别非ASCII编码的应用程序。
1.6 收集服务信息
特殊服务可以提供额外的信息利用方法。
1.6.1 SMB服务
服务器共享
代码语言:javascript复制smbclient -L IP -U 用户名
1.6.2 SNMP服务
简单网络管理协议获取主机信息。
代码语言:javascript复制snmp-check 目标
可获取系统信息主机名、操作系统类型及架构、用户账户信息、网络信息;TTL值、TCP段和数据元9;、网络接口信息等。
1.7 信息分析整理
Maltego信息收集工具信息可视化。 需要到官网注册并且使用外网类似画拓扑图的软件。
2.扫描漏洞
验证目标系统可能存在的危害。
2.1 漏洞概述
2.1.1 人为的不当配置
① 弱密码
代码语言:javascript复制changeme -a 目标
探测目标是否使用默认密码新版本中已移除该工具
② 权限设置错误
使用低权限进行高权限操作
2.1.2 软件漏洞
Intel软件漏洞、str2-045远程代码执行漏洞
2.1.3 硬件漏洞
常存在于硬件设备或芯片中CPU漏洞等。
2.2 Nessus扫描漏洞
① 官网下载安装包(kexueshangwang)
代码语言:javascript复制https://www.tenable.com/downloads/nessus?loginAttempted=true
② 安装
代码语言:javascript复制dpkg -i Nessus-10.1.2-debian6_amd64.deb
③启动
代码语言:javascript复制/bin/systemctl start nessusd.service
④激活Nessus服务
代码语言:javascript复制https://www.tenable.com/products/nessus/activation-code Nessus Essentials 注册,在邮箱中接收激活码 kali中访问https://kali:8834/
跳过注册直接输入激活码注册一个账号等待下载。 下载失败可通过命令下载结合代理 find / -name nessuscli proxychains /opt/nessus/sbin/nessuscli update 然后重新启动nessus,刷新网页
2.3 使用OpenVAS扫描漏洞
开放式漏洞评估系统。需要额外安装。
代码语言:javascript复制apt-get install opevas -y
2.4 其他发现方式
检查配置、三方查找等。
2.4.1 检查linux配置
远程桌面端口、弱密码、web服务SQL注入、FTP服务匿名用户权限… unix-privesc-check是kali自带的提权漏洞检测工具。可检测各类文件的读写权限。
代码语言:javascript复制unix-privesc-check standard或detailed(详细模式)
2.4.2 查找漏洞信息
官网漏洞信息、CVE和微软漏洞网站。
3. 漏洞利用
利用程序漏洞获取计算机控制权。
3.1 Metasploit
开源的安全漏洞检测软件包括了智能开发、代码审计、web应用程序扫描和社会工程等各项功能。
3.1.2 Metasploit界面
提供图形界面和终端模式。
① Metasploit的图形界面Armitage
java编写的图形化攻击软件。 由于作者不再更新2021新版kali已移除该程序。
② Metasploit的终端Msfconsole
最为流行的用户接口功能最丰富支持最好的工具之一。 启动
代码语言:javascript复制msfconsole
3.1.3 初始化Metasploit
kali中metasploit主要使用postgreSQL存储所以需启动PostgreSQL并且初始化。
代码语言:javascript复制service postgresql start msfdb init
(注:已经初始化metasploit会提示数据库已经配置
3.1.4 创建工作区
区分不同的扫描任务保存不同的信息。
代码语言:javascript复制msf6>workspace -a 名称 msf6>workspace 名称 msf6>workspace -v
3.1.5 导入扫描报告
可以导入一些第三方的扫描报告如openvas.xml
代码语言:javascript复制db_import 文件名
3.2 查询渗透测试模块
主要使用渗透测试模块也可以导入第三方模块。
3.2.1 预分析扫描报告
导入扫描报告分析找出目标系统漏洞。
代码语言:javascript复制msf6>hosts msf6>vulns
3.2.2 手动查找攻击载荷
代码语言:javascript复制msf6>search 选项 关键字
-h 帮助 -o 文件 指定输出文件 -S string 指定搜索的字符串 -u 指定搜索模块
代码语言:javascript复制msf6>search cve:2019 msf6>search name:MS17-010 msf6>use exploit/windows/smb/ms17_010_eternalblue
3.2.3 第三方查找
① CVE网站查找
② exploitDB漏洞网站查找
③ 手动导入第三方模块
3.3 实施攻击
3.3.1 使用攻击载荷
代码语言:javascript复制msf6 >set payload payload名称 msf6 >show payload
3.3.2 配置攻击载荷
加载攻击载荷后需要进行配置。
代码语言:javascript复制msf6 > show options
3.3.3 设置架构
一些模块可支持多个系统架构一般默认会自动的。
代码语言:javascript复制msf6 > show targets msf6 > set target [id]
3.3.4 设置编码
避免出现坏字符或被防火墙拦截可为载荷编码。 主要使用msfvenom工具是MSF配套的攻击载荷生成器。 -p 指定payload;-e 指定编码格式-a