本文为《从实践中学习Kali Linux渗透测试》总结笔记,仅供学习使用,禁止用于非法用途,转载请附上原文链接!
1.1.1 扫描主机
② Netdiscover
ARP侦查工具,可以扫描IP地址,检查在线主机。
1.1.2监听发现主机
① ARP监听
ARP请求广播到网络上所有主机,发现活动主机。
Netdiscover被动模式实施监听。
② DHCP监听
Nmap的脚本实施DHCP监听来发现主机
域名详细信息、子域名、服务器地址等
1.2.1 域名基础信息
① whois
域名注册状态、注册商、所有者等
一体化信息收集工具,收集whois主机ip和域名信息等。
1.2.2 查找子域名
通过谷歌,需要使用vpn(通过proxychains)
1.2.3 发现服务器
确定域名对应的ip地址
① dnsenum工具
域名信息收集工具,通过谷歌或字典猜测可能存在的域名,并且反向查询网站的主机地址、域名服务器、邮件交换记录等。
② nslookup
dns服务器检测和排错的工具,查询域名解析是否正常。
③ ping
检查网络是否连通
扫描端口,发现目标主机中运行的程序。
针对性的对系统程序实施漏洞探测。
1.4.1 基于TTL识别
TTL,生存时间,IP被路由器丢弃之前允许通过的最大网段,不同操作系统不同TTL值。UNIX-255,Windows XP-128,Linux-64,不准确。
使用ping得到ttl值
1.4.2 使用NMAP识别
结果有时不准确。
服务版本信息,旧版本可能存在漏洞。
1.5.1 Nmap
1.5.2 Amap工作
识别网络服务的渗透测试工具集,包括和两个工具,amap尝试识别非常用端口上运行的程序,amapcrap发送触发数据包,在响应字符串列表中查找响应来识别非ASCII编码的应用程序。
特殊服务可以提供额外的信息,利用方法。
1.6.1 SMB服务
服务器共享
1.6.2 SNMP服务
简单网络管理协议,获取主机信息。
可获取系统信息(主机名、操作系统类型及架构)、用户账户信息、网络信息(TTL值、TCP段和数据元)、网络接口信息(接口状态、速率、IP地址和子网掩码)、网络IP信息、路由信息(目标地址、下一跳地址、子网掩码和路径长度值)、监听的TCP端口、UDP端口、网络服务信息(分布式组件对象模型、DHCP客户端、DNS客户端等)、进程信息、存储信息、文件系统信息、设备信息、软件组件信息等。
验证目标系统可能存在的危害。
2.1.1 人为的不当配置
① 弱密码
探测目标是否使用默认密码(新版本中已移除该工具)
② 权限设置错误
使用低权限进行高权限操作
2.1.2 软件漏洞
Intel软件漏洞、str2-045远程代码执行漏洞
2.1.3 硬件漏洞
常存在于硬件设备或芯片中,CPU漏洞等。
① 官网下载安装包(kexueshangwang)
② 安装
③启动
④激活Nessus服务
开放式漏洞评估系统。需要额外安装。
自行了解,不再赘述。
检查配置、三方查找等。
2.4.1 检查linux配置
远程桌面端口、弱密码、web服务SQL注入、FTP服务匿名用户权限…
unix-privesc-check是kali自带的提权漏洞检测工具。可检测各类文件的读写权限。
2.4.2 查找漏洞信息
官网漏洞信息、CVE和微软漏洞网站。
利用程序漏洞获取计算机控制权。
开源的安全漏洞检测软件,包括了智能开发、代码审计、web应用程序扫描和社会工程等各项功能。
3.1.1 概述
强大之处在于提供了大量的渗透测试模块和插件。7种类型,Exploits(渗透攻击模块)、Auxiliary(辅助模块)、Post(后渗透攻击模块)、Payloads(攻击载荷模块)、Encoders(编码器模块)、Nops(空指令模块)、Evasion(规避模块)。
① 渗透攻击模块
利用发现的漏洞或配置进行攻击,植入载荷,获取控制权。
主动渗透攻击(主动连接请求)、被动渗透攻击(构造恶意内容诱骗触发)
② 辅助模块
扫描检测、虚假服务收集密码和口令猜测、拒绝服务攻击等
③ 后渗透模块
取得远控权限后,获取敏感信息、进一步拓展、跳板攻击等
④ 攻击载荷模块
渗透成功后促使目标系统运行的植入代码,通常作用是打开目标系统的控制会话连接。
分为Single(独立)、Stager(传感器)、Stage(传输体)3种。
-Single:完全独立的payload,可能会被netcat等捕获;
-Stager:负责建立网络连接,下载额外的组件或应用程序,常见的有reverse_tcp,可建立tcp连接,让目标系统主动连接攻击者的端口。还有一种是bind_tcp,可以让目标系统开启一个TCP监听器,随时可通信。
-Stage:传感器下的一种组件,提供更高级的功能,没有大小限制。
⑤ 空指令模块
对程序运行状态不会造成实质影响的空操作或无关操作指令。如X86 CPU体系操作码是0x90。构造恶意数据缓冲区时,常在Shellcode之前加一段空指令区,触发攻击后跳转执行有一个较大的安全着陆区,避免受到内存地址随机化及返回地址计算偏差等原因造成执行失败,提供渗透可靠性。
⑥ 编码模块
攻击载荷和空指令模块组装完成为指令序列后,运行之前还需要进行编码。一是确保不会出现坏字符,二是免杀处理。
⑦ 规避模块
规避windows自带的防火墙,对系统实时监控。
⑧ 插件
扩展框架功能,可集成Nessus、OpenVAS等。
3.1.2 metasploit界面
提供图形界面和终端模式。
① metasploit的图形界面Armitage
② metasploit的终端Msfconsole
最为流行的用户接口,功能最丰富,支持最好的工具之一。
启动:
3.1.3 初始化metasploit
kali中metasploit主要使用postgreSQL存储,所以需启动PostgreSQL,并且初始化。
(注:已经初始化metasploit会提示数据库已经配置)
3.1.4 创建工作区
区分不同的扫描任务,保存不同的信息。
3.1.5 导入扫描报告
可以导入一些第三方的扫描报告,如openvas.xml
主要使用渗透测试模块,也可以导入第三方模块。
3.2.1 预分析扫描报告
导入扫描报告,分析,找出目标系统漏洞。
3.2.2 手动查找攻击载荷
-h 帮助 -o 文件 指定输出文件 -S string 指定搜索的字符串 -u 指定搜索模块
3.2.3 第三方查找
① CVE网站查找
② exploitDB漏洞网站查找
③ 手动导入第三方模块
3.3.1 使用攻击载荷
3.3.2 配置攻击载荷
加载攻击载荷后,需要进行配置。
3.3.3 设置架构
一些模块可支持多个系统架构,一般默认会自动的。
3.3.4 设置编码
避免出现坏字符或被防火墙拦截,可为载荷编码。
主要使用msfvenom工具,是MSF配套的攻击载荷生成器。
-p 指定payload;-e 指定编码格式;-a 指定系统架构,默认x86;-s指定payload最大值;-i 指定编码次数;-f 指定生成文件格式。
成功渗透后,获取到Meterpreter会话,可以利用命令获取主机更多信息或控制主机,如关闭杀软、键盘捕获、屏幕截图、提升权限及创建账户等。
3.4.1 关闭杀软
3.4.2 获取主机详细信息
3.4.3 检查是否运行在虚拟机
3.4.4 访问文件系统
和linux相同,支持pwd、ls、rm、cd、mkdir等命令
3.4.5 上传/下载文件
3.4.6 键盘捕获
3.4.7 屏幕截图
3.4.8 枚举用户
3.4.9 权限提升
3.4.10 获取用户密码
① hashdump
需要进一步破解才能得到真的密码。
② mimikatz
针对32位系统。
3.4.11 绑定进程
Meterppreter可以单独运行也可以与进程进行绑定,实现持久化。
3.4.12 运行程序
使用execute命令在目标系统中执行应用程序。
-H 创建一个隐藏进程;-a 传递给命令的参数;-i 跟进程进行交互;-m 从内存中执行;-t 使用当前伪造的线程令牌运行进程;-s 在给定的会话中执行进程。
3.4.13 启用远程桌面
使用hashdump命令和mimikatz模块等获取用户和密码。
在kali中远程桌面:
3.4.14 持久后门
Meterpreter是基于内存DLL建立的连接,所以目标断开则连接会断开,因此需要持久后门,开机时会主动连接。
-X 系统启动后自动启动代理;-i 设置每个连接尝试的时间间隔,单位为秒;-p 指定metasploit监听的端口;-r 指定反向连接运行metasploit的IP地址,即攻击机地址。
建立后门后,还需要本地建立监听:
3.4.15 清除踪迹
侵入后所有操作都会记录在系统日志文件中,所以需要清理。
3.4.16 搭建跳板
利用一台已经攻陷的主机作为跳板,渗透网络中其他主机,可用于一些不可访问的网络环境。
查看meterpreter会话,当前攻击IP与目标IP不在同一子网则需要添加路由;
以上为手动,自动化操作:
使用Veil Evasion工具生成绕过杀软的攻击载荷。
3.5.1 安装VE
kali中没有自带,需单独安装:
3.5.2 生成免杀payload
也可使用命令行模式:
生成载荷后,本地建立监听器。
没有漏洞可利用时,可对模板主机进行欺骗,获取网络中传输的数据进行分析,常见的是中间人攻击。
4.1.1 常见中间人攻击
多为ARP欺骗(冒充网关或其他主机转发流量获取信息)和DNS欺骗。
4.1.2 实施中间人攻击
① arpspoof工具
专业ARP欺骗工具,可直接欺骗网关。
-i 使用的接口;-t 目标 制定欺骗的目标,默认为所有主机;-r 双向欺骗,与-t一起使用;host 拦截包的主机,通常是本地网关。
攻击步骤:
查看目标系统的IP和ARP缓存表,确定攻击机和目标主机没有任何通信,此时这两台主机通信就可实施ARP攻击。
② Ettercap工具
选择Sniff|Unified sniffing #启动嗅探,选择接口
选择Hosts|Scan for hosts #启动扫描主机
选择Hosts|Hosts list #查看主机列表
选择两台主机Add to Target1和Target2,选择Start|Start sniffing
选择Mitm|ARP poisoning… #启动ARP注入攻击,选Sniff remote connections
攻击成功,可捕获到数据
选择Start|Stop sniffing #关闭嗅探
选择Mitm|Stop mitm attack(s) #关闭中间人攻击
也可使用命令行模式
-i 选择网口,默认为第一个;-M,–mitm METHOD:ARGS执行中间人攻击,remote表示双向,oneway表示单项;-T,–text 使用文本模式;-q,–quiet 不显示包内容;-P 插件名 加载的插件。
利用人性的好奇、信任、贪婪等,攻击人自身的弱点。
4.2.1 社工工具包SET
4.2.2 Web攻击向量
构造一些具有诱惑力的网页,诱导访问。
输入网站IP地址,输入本机kali地址
成功生成伪造站点,此时可结合DNS欺骗(Ettercap工具中的dns_spoof插件)来诱骗用户到伪站点。
4.2.3 PowerShell攻击向量
创建一个PowerShell文件发送给目标执行,可获取一个反向远程连接。
①工具菜单选择编号9) Powershell Attack Vectors
在/root/.set/reports/powershell/找到x86_powershell_injection.txt文本文件,该文件则可运行PowerShell。
③将文件内容复制到目标机DOS下运行,或者后缀改为.bat,双击运行;
④在攻击机查看会话
4.3.1 wireshark
中间人攻击成功后,开启wireshark捕获对应网口的流量。
4.3.2 捕获图片
实施中间人后,使用来捕获图片,与工具结合使用,可捕获目标主机浏览的所有图片。
4.3.3 监听HTTP数据
使用实施中间人攻击后,即可监听到访问HTTP网站的数据。
4.3.4 监听HTTPS数据
使用工具监听HTTPS数据。
4.3.5 网络数据快速分析
可快速找出用户请求的网页地址、图片和视频等内容。
kali默认未安装。
收集信息并分析,创建一个合理的密码字典用于攻击。
5.1.1 密码信息收集
相关邮箱、网站博客、文章、单位名称、人员名称、生日信息、名字缩写等。
5.1.2 密码策略分析
系统对密码设置的限制,不能仅数字、连续英文或数字等策略。
① 软件/系统固有策略
创建密码时,提醒的密码长度和复杂度最低要求。
② 加固策略
查看windows组策略等。
③ 分析已有密码字典策略
根据已有密码分析字符出现概率、位置分布和前后关系,结合生成密码字典。
可使用工具(需自行安装)以供分析:
5.1.3 生成字典
① Crunch
按照制定的规则生成密码字典。
② rsmangler
基于单词列表关键字生成字典。
③ rtgen
生成彩虹表(针对各种可能字母组合和预先计算好哈希值的集合)。
5.2.1 识别哈希加密方式
5.2.2 破解LM Hashes密码
LM Hash是windows最早使用的密码哈希算法之一。
使用工具破解:
5.2.3 直接使用哈希密码值
特定漏洞可直接使用哈希密码值,使用渗透测试模块。
是windows辅助工具管理,没有用户登录也可调用Utilman进程。
控制路由器很容易对连接该路由器主机实施各种数据嗅探和欺骗攻击。
5.4.1 路由器初始密码
使用初始密码破解。
5.4.2 使用Medusa工具
开源暴力密码破解工具,可破解FTP、HTTP、IMAP和MYSQL等密码。
linux中很多操作都需要root,普通用户的会话无法提权基本没用。
密码散列保存在/etc/shadow中,需要破解得到原始密码。
破解之前还需要/etc/passwd文件,保存了用户基本信息,如用户名称、宿主登录和登录shell等。
破解流程: